From 8c2b9656fa3178519c007ed4c1a2a3da6b61bcaa Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Tue, 27 Nov 2012 08:11:59 +0000 Subject: gdb/ 2012-11-27 Daniel Jacobowitz Kazu Hirata Yao Qi * objfiles.c (init_entry_point_info): Call gdbarch_convert_from_func_ptr_addr and gdbarch_addr_bits_remove here ... (entry_point_address_query): ... instead of here. * solib-svr4.c (exec_entry_point): Call gdbarch_addr_bits_remove. * symfile.c (generic_load): Call gdbarch_addr_bits_remove on the entry address. --- gdb/objfiles.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) (limited to 'gdb/objfiles.c') diff --git a/gdb/objfiles.c b/gdb/objfiles.c index 4cc2fea..e5681fa 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -353,6 +353,23 @@ init_entry_point_info (struct objfile *objfile) /* Examination of non-executable.o files. Short-circuit this stuff. */ objfile->ei.entry_point_p = 0; } + + if (objfile->ei.entry_point_p) + { + CORE_ADDR entry_point = objfile->ei.entry_point; + + /* Make certain that the address points at real code, and not a + function descriptor. */ + entry_point + = gdbarch_convert_from_func_ptr_addr (objfile->gdbarch, + entry_point, + ¤t_target); + + /* Remove any ISA markers, so that this matches entries in the + symbol table. */ + objfile->ei.entry_point + = gdbarch_addr_bits_remove (objfile->gdbarch, entry_point); + } } /* If there is a valid and known entry point, function fills *ENTRY_P with it @@ -361,26 +378,11 @@ init_entry_point_info (struct objfile *objfile) int entry_point_address_query (CORE_ADDR *entry_p) { - struct gdbarch *gdbarch; - CORE_ADDR entry_point; - if (symfile_objfile == NULL || !symfile_objfile->ei.entry_point_p) return 0; - gdbarch = get_objfile_arch (symfile_objfile); - - entry_point = symfile_objfile->ei.entry_point; - - /* Make certain that the address points at real code, and not a - function descriptor. */ - entry_point = gdbarch_convert_from_func_ptr_addr (gdbarch, entry_point, - ¤t_target); - - /* Remove any ISA markers, so that this matches entries in the - symbol table. */ - entry_point = gdbarch_addr_bits_remove (gdbarch, entry_point); + *entry_p = symfile_objfile->ei.entry_point; - *entry_p = entry_point; return 1; } -- cgit v1.1