From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27491 invoked by alias); 19 Nov 2009 23:41:04 -0000 Received: (qmail 27481 invoked by uid 22791); 19 Nov 2009 23:41:03 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.33.17) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 19 Nov 2009 23:39:52 +0000 Received: from zps19.corp.google.com (zps19.corp.google.com [172.25.146.19]) by smtp-out.google.com with ESMTP id nAJNdkRL026970 for ; Thu, 19 Nov 2009 23:39:47 GMT Received: from pxi36 (pxi36.prod.google.com [10.243.27.36]) by zps19.corp.google.com with ESMTP id nAJNdHfH017324 for ; Thu, 19 Nov 2009 15:39:44 -0800 Received: by pxi36 with SMTP id 36so1881649pxi.26 for ; Thu, 19 Nov 2009 15:39:43 -0800 (PST) MIME-Version: 1.0 Received: by 10.114.237.24 with SMTP id k24mr763139wah.5.1258673983038; Thu, 19 Nov 2009 15:39:43 -0800 (PST) In-Reply-To: <8ac60eac0911161028of5f2352lf1857db7a46a94b2@mail.gmail.com> References: <20091114001022.A0A0776CDD@ppluzhnikov.mtv.corp.google.com> <8ac60eac0911150916k70ac0f62hf349b0bc21aa58b7@mail.gmail.com> <8ac60eac0911161028of5f2352lf1857db7a46a94b2@mail.gmail.com> Date: Thu, 19 Nov 2009 23:41:00 -0000 Message-ID: <8ac60eac0911191539w4245739ka6405ba072b79395@mail.gmail.com> Subject: Re: [patch] Allow "disassemble 'Foo::bar(char *)'" From: Paul Pluzhnikov To: tromey@redhat.com Cc: Andreas Schwab , gdb-patches@sourceware.org Content-Type: text/plain; charset=ISO-8859-1 X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-11/txt/msg00424.txt.bz2 On Mon, Nov 16, 2009 at 10:28 AM, Paul Pluzhnikov wrote: > Yes: I will look at parse_to_comma_and_eval() (Daniel's suggestion), > and see if this all can be handled in backward-compatible manner. It works, but I can't make it backward-compatible and not require a comma for two-argument invocation :-( This works: (gdb) disas 'Foo::bar(char const*, char const*)' Dump of assembler code for function _ZN3Foo3barEPKcS1_: 0x000000000040055a <+0>: push %rbp 0x000000000040055b <+1>: mov %rsp,%rbp 0x000000000040055e <+4>: mov %rdi,-0x8(%rbp) 0x0000000000400562 <+8>: mov %rsi,-0x10(%rbp) 0x0000000000400566 <+12>: mov %rdx,-0x18(%rbp) 0x000000000040056a <+16>: leaveq 0x000000000040056b <+17>: retq End of assembler dump. (gdb) disas 0x40055a + 1 Dump of assembler code for function _ZN3Foo3barEPKcS1_: 0x000000000040055a <+0>: push %rbp 0x000000000040055b <+1>: mov %rsp,%rbp 0x000000000040055e <+4>: mov %rdi,-0x8(%rbp) 0x0000000000400562 <+8>: mov %rsi,-0x10(%rbp) 0x0000000000400566 <+12>: mov %rdx,-0x18(%rbp) 0x000000000040056a <+16>: leaveq 0x000000000040056b <+17>: retq End of assembler dump. (gdb) disas 0x40055a + 1, 0x40055a + 5 Dump of assembler code from 0x40055b to 0x40055f: 0x000000000040055b <_ZN3Foo3barEPKcS1_+1>: mov %rsp,%rbp 0x000000000040055e <_ZN3Foo3barEPKcS1_+4>: mov %rdi,-0x8(%rbp) End of assembler dump. But this doesn't: (gdb) disas 0x400540 0x400553 A syntax error in expression, near `0x400553'. If it's acceptable to require comma for two-argument command (which IMO it is), I'll update documentation and testsuites, and produce a "real" patch. Attaching what I've got so far. Thanks, -- Paul Pluzhnikov Index: cli/cli-cmds.c =================================================================== RCS file: /cvs/src/src/gdb/cli/cli-cmds.c,v retrieving revision 1.93 diff -u -p -u -r1.93 cli-cmds.c --- cli/cli-cmds.c 23 Oct 2009 00:49:33 -0000 1.93 +++ cli/cli-cmds.c 19 Nov 2009 23:37:39 -0000 @@ -983,7 +983,6 @@ disassemble_command (char *arg, int from CORE_ADDR low, high; char *name; CORE_ADDR pc, pc_masked; - char *space_index; int flags; name = NULL; @@ -1022,13 +1021,12 @@ disassemble_command (char *arg, int from return; } - /* FIXME: 'twould be nice to allow spaces in the expression for the first - arg. Allow comma separater too? */ - - if (!(space_index = (char *) strchr (arg, ' '))) + pc = value_as_address (parse_to_comma_and_eval (&arg)); + if (arg[0] == ',') + ++arg; + if (arg[0] == '\0') { /* One argument. */ - pc = parse_and_eval_address (arg); if (find_pc_partial_function (pc, &name, &low, &high) == 0) error (_("No function contains specified address.")); #if defined(TUI) @@ -1044,9 +1042,8 @@ disassemble_command (char *arg, int from else { /* Two arguments. */ - *space_index = '\0'; - low = parse_and_eval_address (arg); - high = parse_and_eval_address (space_index + 1); + low = pc; + high = parse_and_eval_address (arg); } print_disassembly (gdbarch, name, low, high, flags);