summaryrefslogtreecommitdiff
path: root/gdb/objfiles.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2009-07-28 16:38:46 +0000
committerDaniel Jacobowitz <dan@debian.org>2009-07-28 16:38:46 +0000
commit804c1b6ace85b89078e7e909b8a34ac2dbee584f (patch)
tree2dfc63abf3391c5987488b36512e0ddaa56dae55 /gdb/objfiles.c
parentf8e1eb719fd04d19f43c351886ca34784673a57a (diff)
downloadgdb-804c1b6ace85b89078e7e909b8a34ac2dbee584f.tar.gz
* arch-utils.c (displaced_step_at_entry_point): Do not call
gdbarch_convert_from_func_ptr_addr. * cris-tdep.c: Remove outdated comment. * infcall.c (call_function_by_hand): Do not call gdbarch_convert_from_func_ptr_addr after entry_point_address. * objfiles.c (entry_point_address): Call both gdbarch_convert_from_func_ptr_addr and gdbarch_addr_bits_remove.
Diffstat (limited to 'gdb/objfiles.c')
-rw-r--r--gdb/objfiles.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 4662e1b1212..c983b116135 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -279,7 +279,26 @@ init_entry_point_info (struct objfile *objfile)
CORE_ADDR
entry_point_address (void)
{
- return symfile_objfile ? symfile_objfile->ei.entry_point : 0;
+ struct gdbarch *gdbarch;
+ CORE_ADDR entry_point;
+
+ if (symfile_objfile == NULL)
+ 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,
+ &current_target);
+
+ /* Remove any ISA markers, so that this matches entries in the
+ symbol table. */
+ entry_point = gdbarch_addr_bits_remove (gdbarch, entry_point);
+
+ return entry_point;
}
/* Create the terminating entry of OBJFILE's minimal symbol table.