From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24213 invoked by alias); 23 Feb 2011 20:42:36 -0000 Received: (qmail 24171 invoked by uid 22791); 23 Feb 2011 20:42:35 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from e24smtp01.br.ibm.com (HELO e24smtp01.br.ibm.com) (32.104.18.85) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 23 Feb 2011 20:42:29 +0000 Received: from /spool/local by e24smtp01.br.ibm.com with XMail ESMTP for from ; Wed, 23 Feb 2011 17:42:25 -0300 Received: from d24relay01.br.ibm.com ([9.8.31.16]) by e24smtp01.br.ibm.com ([10.172.0.143]) with XMail ESMTP; Wed, 23 Feb 2011 17:42:23 -0300 Received: from d24av01.br.ibm.com (d24av01.br.ibm.com [9.8.31.91]) by d24relay01.br.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p1NKeB134112546 for ; Wed, 23 Feb 2011 17:40:11 -0300 Received: from d24av01.br.ibm.com (loopback [127.0.0.1]) by d24av01.br.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id p1NIgLeA009157 for ; Wed, 23 Feb 2011 15:42:21 -0300 Received: from [9.8.4.220] ([9.8.4.220]) by d24av01.br.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id p1NIgL7g009146 for ; Wed, 23 Feb 2011 15:42:21 -0300 Subject: [RFA] Fix decode_indirect to use parse_to_comma_and_eval From: Thiago Jung Bauermann To: gdb-patches ml Content-Type: text/plain; charset="UTF-8" Date: Wed, 23 Feb 2011 20:47:00 -0000 Message-ID: <1298493740.3172.28.camel@hactar> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit x-cbid: 11022320-6842-0000-0000-0000006E6A61 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: 2011-02/txt/msg00656.txt.bz2 Hi, This came up in the discussion about the ranged breakpoints patch. I needed the break-range command to accept locations of the form *PC in a string of the form "*PC_START, *PC_END" but couldn't call parse_breakpoint_sals because decode_indirect (called by decode_line_1) tried to read past the comma and got confused. Ulrich mentioned that it should stop at the comma. This patch implements that. I removed parse_and_eval_address_1 because it is not called by anybody after the change in this patch (I checked Insight too). No regressions on ppc-linux and ppc64-linux. Ok? -- []'s Thiago Jung Bauermann IBM Linux Technology Center 2011-02-23 Thiago Jung Bauermann * eval.c (parse_and_eval_address_1): Remove function. * linespec.c (decode_indirect): Call parse_to_comma_and_eval instead of parse_and_eval_address_1. * value.h (parse_and_eval_address_1): Remove prototype. diff --git a/gdb/eval.c b/gdb/eval.c index de25b39..c737058 100644 --- a/gdb/eval.c +++ b/gdb/eval.c @@ -93,22 +93,6 @@ parse_and_eval_address (char *exp) return addr; } -/* Like parse_and_eval_address but takes a pointer to a char * variable - and advanced that variable across the characters parsed. */ - -CORE_ADDR -parse_and_eval_address_1 (char **expptr) -{ - struct expression *expr = parse_exp_1 (expptr, (struct block *) 0, 0); - CORE_ADDR addr; - struct cleanup *old_chain = - make_cleanup (free_current_contents, &expr); - - addr = value_as_address (evaluate_expression (expr)); - do_cleanups (old_chain); - return addr; -} - /* Like parse_and_eval_address, but treats the value of the expression as an integer, not an address, returns a LONGEST, not a CORE_ADDR. */ LONGEST diff --git a/gdb/linespec.c b/gdb/linespec.c index e801381..a539c9a 100644 --- a/gdb/linespec.c +++ b/gdb/linespec.c @@ -980,7 +980,7 @@ decode_indirect (char **argptr) CORE_ADDR pc; (*argptr)++; - pc = parse_and_eval_address_1 (argptr); + pc = value_as_address (parse_to_comma_and_eval (argptr)); values.sals = (struct symtab_and_line *) xmalloc (sizeof (struct symtab_and_line)); diff --git a/gdb/value.h b/gdb/value.h index e019e56..1a9df49 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -661,8 +661,6 @@ extern struct type *parse_and_eval_type (char *p, int length); extern CORE_ADDR parse_and_eval_address (char *exp); -extern CORE_ADDR parse_and_eval_address_1 (char **expptr); - extern LONGEST parse_and_eval_long (char *exp); extern void unop_promote (const struct language_defn *language,