From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28327 invoked by alias); 4 Dec 2008 20:44:03 -0000 Received: (qmail 28317 invoked by uid 22791); 4 Dec 2008 20:44:02 -0000 X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.45.13) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 04 Dec 2008 20:43:27 +0000 Received: from zps37.corp.google.com (zps37.corp.google.com [172.25.146.37]) by smtp-out.google.com with ESMTP id mB4KhPbT008080 for ; Thu, 4 Dec 2008 12:43:25 -0800 Received: from localhost (ruffy.corp.google.com [172.18.118.116]) by zps37.corp.google.com with ESMTP id mB4KhOYn021666 for ; Thu, 4 Dec 2008 12:43:24 -0800 Received: by localhost (Postfix, from userid 67641) id 6D9CD1C7A10; Thu, 4 Dec 2008 12:43:24 -0800 (PST) To: gdb-patches@sourceware.org Subject: [RFA] call_function_by_hand dummy_addr cleanup Message-Id: <20081204204324.6D9CD1C7A10@localhost> Date: Thu, 04 Dec 2008 20:44:00 -0000 From: dje@google.com (Doug Evans) 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: 2008-12/txt/msg00074.txt.bz2 Hi. Some minor cleanup. Effort is made, especially in the ON_STACK case, to compute dummy_addr, but the value is never used. Ok to check in? The patch itself is actually rather trivial, most of the size is due to some re-indentation. Appended at the end is the same patch produced with cvs diff -b to improve the S/N ratio. 2008-12-04 Doug Evans * infcall.c (call_function_by_hand): Clean up use of local dummy_addr. Index: infcall.c =================================================================== RCS file: /cvs/src/src/gdb/infcall.c,v retrieving revision 1.106 diff -u -p -r1.106 infcall.c --- infcall.c 18 Nov 2008 00:13:02 -0000 1.106 +++ infcall.c 4 Dec 2008 20:38:11 -0000 @@ -310,7 +310,6 @@ struct value * call_function_by_hand (struct value *function, int nargs, struct value **args) { CORE_ADDR sp; - CORE_ADDR dummy_addr; struct type *values_type, *target_values_type; unsigned char struct_return = 0, lang_struct_return = 0; CORE_ADDR struct_addr = 0; @@ -471,35 +470,26 @@ call_function_by_hand (struct value *fun switch (gdbarch_call_dummy_location (gdbarch)) { case ON_STACK: - /* "dummy_addr" is here just to keep old targets happy. New - targets return that same information via "sp" and "bp_addr". */ - if (gdbarch_inner_than (gdbarch, 1, 2)) - { - sp = push_dummy_code (gdbarch, sp, funaddr, + sp = push_dummy_code (gdbarch, sp, funaddr, args, nargs, target_values_type, &real_pc, &bp_addr, get_current_regcache ()); - dummy_addr = sp; - } - else - { - dummy_addr = sp; - sp = push_dummy_code (gdbarch, sp, funaddr, - args, nargs, target_values_type, - &real_pc, &bp_addr, get_current_regcache ()); - } break; case AT_ENTRY_POINT: - real_pc = funaddr; - dummy_addr = entry_point_address (); - /* Make certain that the address points at real code, and not a - function descriptor. */ - dummy_addr = gdbarch_convert_from_func_ptr_addr (gdbarch, - dummy_addr, - ¤t_target); - /* A call dummy always consists of just a single breakpoint, so - it's address is the same as the address of the dummy. */ - bp_addr = dummy_addr; - break; + { + CORE_ADDR dummy_addr; + + real_pc = funaddr; + dummy_addr = entry_point_address (); + /* Make certain that the address points at real code, and not a + function descriptor. */ + dummy_addr = gdbarch_convert_from_func_ptr_addr (gdbarch, + dummy_addr, + ¤t_target); + /* A call dummy always consists of just a single breakpoint, so + its address is the same as the address of the dummy. */ + bp_addr = dummy_addr; + break; + } case AT_SYMBOL: /* Some executables define a symbol __CALL_DUMMY_ADDRESS whose address is the location where the breakpoint should be @@ -507,6 +497,7 @@ call_function_by_hand (struct value *fun this can be deleted - ON_STACK is a better option. */ { struct minimal_symbol *sym; + CORE_ADDR dummy_addr; sym = lookup_minimal_symbol ("__CALL_DUMMY_ADDRESS", NULL, NULL); real_pc = funaddr; --- Same patch with -b: Index: infcall.c =================================================================== RCS file: /cvs/src/src/gdb/infcall.c,v retrieving revision 1.106 diff -u -p -b -r1.106 infcall.c --- infcall.c 18 Nov 2008 00:13:02 -0000 1.106 +++ infcall.c 4 Dec 2008 20:38:29 -0000 @@ -310,7 +310,6 @@ struct value * call_function_by_hand (struct value *function, int nargs, struct value **args) { CORE_ADDR sp; - CORE_ADDR dummy_addr; struct type *values_type, *target_values_type; unsigned char struct_return = 0, lang_struct_return = 0; CORE_ADDR struct_addr = 0; @@ -471,24 +470,14 @@ call_function_by_hand (struct value *fun switch (gdbarch_call_dummy_location (gdbarch)) { case ON_STACK: - /* "dummy_addr" is here just to keep old targets happy. New - targets return that same information via "sp" and "bp_addr". */ - if (gdbarch_inner_than (gdbarch, 1, 2)) - { sp = push_dummy_code (gdbarch, sp, funaddr, args, nargs, target_values_type, &real_pc, &bp_addr, get_current_regcache ()); - dummy_addr = sp; - } - else - { - dummy_addr = sp; - sp = push_dummy_code (gdbarch, sp, funaddr, - args, nargs, target_values_type, - &real_pc, &bp_addr, get_current_regcache ()); - } break; case AT_ENTRY_POINT: + { + CORE_ADDR dummy_addr; + real_pc = funaddr; dummy_addr = entry_point_address (); /* Make certain that the address points at real code, and not a @@ -497,9 +486,10 @@ call_function_by_hand (struct value *fun dummy_addr, ¤t_target); /* A call dummy always consists of just a single breakpoint, so - it's address is the same as the address of the dummy. */ + its address is the same as the address of the dummy. */ bp_addr = dummy_addr; break; + } case AT_SYMBOL: /* Some executables define a symbol __CALL_DUMMY_ADDRESS whose address is the location where the breakpoint should be @@ -507,6 +497,7 @@ call_function_by_hand (struct value *fun this can be deleted - ON_STACK is a better option. */ { struct minimal_symbol *sym; + CORE_ADDR dummy_addr; sym = lookup_minimal_symbol ("__CALL_DUMMY_ADDRESS", NULL, NULL); real_pc = funaddr;