diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2003-08-26 17:33:22 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2003-08-26 17:33:22 +0000 |
commit | af8b88dd22728115a948af995888e982bb3942b6 (patch) | |
tree | ac3aa460cc14b4ecf4217e47e4d97b7f3dec208e /gdb/ia64-tdep.c | |
parent | 093872ec2ef8a704a6ae6cfafde30fa43295bcbf (diff) | |
download | gdb-af8b88dd22728115a948af995888e982bb3942b6.zip gdb-af8b88dd22728115a948af995888e982bb3942b6.tar.gz gdb-af8b88dd22728115a948af995888e982bb3942b6.tar.bz2 |
2003-08-26 Jeff Johnston <jjohnstn@redhat.com>
* ia64-tdep.c (ia64_convert_from_func_addr): New function.
(ia64_gdbarch_init): Call set_gdbarch_convert_from_func_addr().
Diffstat (limited to 'gdb/ia64-tdep.c')
-rw-r--r-- | gdb/ia64-tdep.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c index e5e5ae8..1f1eb0e 100644 --- a/gdb/ia64-tdep.c +++ b/gdb/ia64-tdep.c @@ -2281,6 +2281,23 @@ find_func_descr (CORE_ADDR faddr, CORE_ADDR *fdaptr) return fdesc; } +/* Use the following routine when printing out function pointers + so the user can see the function address rather than just the + function descriptor. */ +static CORE_ADDR +ia64_convert_from_func_ptr_addr (CORE_ADDR addr) +{ + struct obj_section *s; + + s = find_pc_section (addr); + + /* check if ADDR points to a function descriptor. */ + if (s && strcmp (s->the_bfd_section->name, ".opd") == 0) + return read_memory_unsigned_integer (addr, 8); + + return addr; +} + static CORE_ADDR ia64_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp) { @@ -2684,6 +2701,7 @@ ia64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) gdbarch, ia64_remote_translate_xfer_address); set_gdbarch_print_insn (gdbarch, ia64_print_insn); + set_gdbarch_convert_from_func_ptr_addr (gdbarch, ia64_convert_from_func_ptr_addr); return gdbarch; } |