This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[rfa/rfc:ppc] svr4 and not just ELFOSABI_LINUX for function parsinget.al.
- From: Andrew Cagney <ac131313 at cygnus dot com>
- To: gdb-patches at sources dot redhat dot com
- Date: Mon, 22 Apr 2002 00:29:27 -0400
- Subject: [rfa/rfc:ppc] svr4 and not just ELFOSABI_LINUX for function parsinget.al.
Hello,
I was finding that for a non-GNU/Linux SVR4 PPC platform malloc() was
failing because RS6000 TOC func-ptr code was being selected:
/* Handle RS/6000 function pointers. */
set_gdbarch_convert_from_func_ptr_addr (gdbarch,
rs6000_convert_from_func_ptr_addr);
the attached patch changes things to select all of:
set_gdbarch_frameless_function_invocation (gdbarch,
ppc_linux_frameless_function_invocation);
set_gdbarch_frame_chain (gdbarch, ppc_linux_frame_chain);
set_gdbarch_frame_saved_pc (gdbarch, ppc_linux_frame_saved_pc);
set_gdbarch_frame_init_saved_regs (gdbarch,
ppc_linux_frame_init_saved_regs);
set_gdbarch_init_extra_frame_info (gdbarch,
ppc_linux_init_extra_frame_info);
set_gdbarch_memory_remove_breakpoint (gdbarch,
ppc_linux_memory_remove_breakpoint);
set_solib_svr4_fetch_link_map_offsets
(gdbarch, ppc_linux_svr4_fetch_link_map_offsets);
when svr4_abi. It certainly improves things (fails went from 136 -> 80)
but I'm not 100% certain if this is correct for all the above - I
suspect it is overkill :-/
Andrew
2002-04-21 Andrew Cagney <ac131313@redhat.com>
* rs6000-tdep.c (rs6000_gdbarch_init): Set
frameless_function_invocation et.al. when sysv_abi and not just
ELFOSABI_LINUX.
Index: rs6000-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/rs6000-tdep.c,v
retrieving revision 1.59
diff -u -r1.59 rs6000-tdep.c
--- rs6000-tdep.c 20 Apr 2002 03:09:28 -0000 1.59
+++ rs6000-tdep.c 22 Apr 2002 04:17:40 -0000
@@ -2720,7 +2720,7 @@
set_gdbarch_frame_chain_valid (gdbarch, file_frame_chain_valid);
/* Note: kevinb/2002-04-12: See note above regarding *_push_arguments().
The same remarks hold for the methods below. */
- if (osabi == ELFOSABI_LINUX && wordsize == 4)
+ if (sysv_abi && wordsize == 4)
{
set_gdbarch_frameless_function_invocation (gdbarch,
ppc_linux_frameless_function_invocation);