* gdbarch.sh (skip_solib_resolver): Change into a multi-arch

function.
* gdbarch.c, gdbarch.h: Regenerate.
* infrun.c (handle_inferior_event): Call
gdbarch_skip_solib_resolver instead of SKIP_SOLIB_RESOLVER.
* arch-utils.c (generic_in_solib_call_trampoline): Adjust function
definition.
* arch-utils.h (generic_in_solib_call_trampoline): Adjust function
prototype.
This commit is contained in:
Mark Kettenis 2003-11-14 21:22:42 +00:00
parent 0e5d83e3b6
commit 4c8c40e6cb
7 changed files with 23 additions and 22 deletions

View file

@ -1,3 +1,15 @@
2003-11-14 Mark Kettenis <kettenis@gnu.org>
* gdbarch.sh (skip_solib_resolver): Change into a multi-arch
function.
* gdbarch.c, gdbarch.h: Regenerate.
* infrun.c (handle_inferior_event): Call
gdbarch_skip_solib_resolver instead of SKIP_SOLIB_RESOLVER.
* arch-utils.c (generic_in_solib_call_trampoline): Adjust function
definition.
* arch-utils.h (generic_in_solib_call_trampoline): Adjust function
prototype.
2003-11-14 Jeff Johnston <jjohnstn@redhat.com> 2003-11-14 Jeff Johnston <jjohnstn@redhat.com>
* libunwind-frame.c: New file. * libunwind-frame.c: New file.

View file

@ -103,7 +103,7 @@ generic_skip_trampoline_code (CORE_ADDR pc)
} }
CORE_ADDR CORE_ADDR
generic_skip_solib_resolver (CORE_ADDR pc) generic_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
{ {
return 0; return 0;
} }

View file

@ -110,7 +110,8 @@ extern gdbarch_virtual_frame_pointer_ftype legacy_virtual_frame_pointer;
extern CORE_ADDR generic_skip_trampoline_code (CORE_ADDR pc); extern CORE_ADDR generic_skip_trampoline_code (CORE_ADDR pc);
extern CORE_ADDR generic_skip_solib_resolver (CORE_ADDR pc); extern CORE_ADDR generic_skip_solib_resolver (struct gdbarch *gdbarch,
CORE_ADDR pc);
extern int generic_in_solib_call_trampoline (CORE_ADDR pc, char *name); extern int generic_in_solib_call_trampoline (CORE_ADDR pc, char *name);

View file

@ -420,7 +420,7 @@ struct gdbarch startup_gdbarch =
0, /* software_single_step */ 0, /* software_single_step */
0, /* print_insn */ 0, /* print_insn */
0, /* skip_trampoline_code */ 0, /* skip_trampoline_code */
0, /* skip_solib_resolver */ generic_skip_solib_resolver, /* skip_solib_resolver */
0, /* in_solib_call_trampoline */ 0, /* in_solib_call_trampoline */
0, /* in_solib_return_trampoline */ 0, /* in_solib_return_trampoline */
0, /* pc_in_sigtramp */ 0, /* pc_in_sigtramp */
@ -2217,16 +2217,9 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
(long) current_gdbarch->skip_prologue (long) current_gdbarch->skip_prologue
/*SKIP_PROLOGUE ()*/); /*SKIP_PROLOGUE ()*/);
#endif #endif
#ifdef SKIP_SOLIB_RESOLVER
fprintf_unfiltered (file, fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n", "gdbarch_dump: skip_solib_resolver = 0x%08lx\n",
"SKIP_SOLIB_RESOLVER(pc)", (long) current_gdbarch->skip_solib_resolver);
XSTRING (SKIP_SOLIB_RESOLVER (pc)));
fprintf_unfiltered (file,
"gdbarch_dump: SKIP_SOLIB_RESOLVER = <0x%08lx>\n",
(long) current_gdbarch->skip_solib_resolver
/*SKIP_SOLIB_RESOLVER ()*/);
#endif
#ifdef SKIP_TRAMPOLINE_CODE #ifdef SKIP_TRAMPOLINE_CODE
fprintf_unfiltered (file, fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n", "gdbarch_dump: %s # %s\n",
@ -5220,7 +5213,7 @@ gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
gdb_assert (gdbarch->skip_solib_resolver != NULL); gdb_assert (gdbarch->skip_solib_resolver != NULL);
if (gdbarch_debug >= 2) if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_skip_solib_resolver called\n"); fprintf_unfiltered (gdb_stdlog, "gdbarch_skip_solib_resolver called\n");
return gdbarch->skip_solib_resolver (pc); return gdbarch->skip_solib_resolver (gdbarch, pc);
} }
void void

View file

@ -2138,15 +2138,9 @@ extern void set_gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, gdbarch_s
evaluates non-zero, this is the address where the debugger will place evaluates non-zero, this is the address where the debugger will place
a step-resume breakpoint to get us past the dynamic linker. */ a step-resume breakpoint to get us past the dynamic linker. */
typedef CORE_ADDR (gdbarch_skip_solib_resolver_ftype) (CORE_ADDR pc); typedef CORE_ADDR (gdbarch_skip_solib_resolver_ftype) (struct gdbarch *gdbarch, CORE_ADDR pc);
extern CORE_ADDR gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc); extern CORE_ADDR gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc);
extern void set_gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, gdbarch_skip_solib_resolver_ftype *skip_solib_resolver); extern void set_gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, gdbarch_skip_solib_resolver_ftype *skip_solib_resolver);
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SKIP_SOLIB_RESOLVER)
#error "Non multi-arch definition of SKIP_SOLIB_RESOLVER"
#endif
#if !defined (SKIP_SOLIB_RESOLVER)
#define SKIP_SOLIB_RESOLVER(pc) (gdbarch_skip_solib_resolver (current_gdbarch, pc))
#endif
/* For SVR4 shared libraries, each call goes through a small piece of /* For SVR4 shared libraries, each call goes through a small piece of
trampoline code in the ".plt" section. IN_SOLIB_CALL_TRAMPOLINE evaluates trampoline code in the ".plt" section. IN_SOLIB_CALL_TRAMPOLINE evaluates

View file

@ -704,7 +704,7 @@ f:2:SKIP_TRAMPOLINE_CODE:CORE_ADDR:skip_trampoline_code:CORE_ADDR pc:pc:::generi
# If IN_SOLIB_DYNSYM_RESOLVE_CODE returns true, and SKIP_SOLIB_RESOLVER # If IN_SOLIB_DYNSYM_RESOLVE_CODE returns true, and SKIP_SOLIB_RESOLVER
# evaluates non-zero, this is the address where the debugger will place # evaluates non-zero, this is the address where the debugger will place
# a step-resume breakpoint to get us past the dynamic linker. # a step-resume breakpoint to get us past the dynamic linker.
f:2:SKIP_SOLIB_RESOLVER:CORE_ADDR:skip_solib_resolver:CORE_ADDR pc:pc:::generic_skip_solib_resolver::0 m:2:SKIP_SOLIB_RESOLVER:CORE_ADDR:skip_solib_resolver:CORE_ADDR pc:pc:::generic_skip_solib_resolver::0
# For SVR4 shared libraries, each call goes through a small piece of # For SVR4 shared libraries, each call goes through a small piece of
# trampoline code in the ".plt" section. IN_SOLIB_CALL_TRAMPOLINE evaluates # trampoline code in the ".plt" section. IN_SOLIB_CALL_TRAMPOLINE evaluates
# to nonzero if we are currently stopped in one of these. # to nonzero if we are currently stopped in one of these.

View file

@ -2331,7 +2331,8 @@ process_event_stop_test:
if (step_over_calls == STEP_OVER_UNDEBUGGABLE if (step_over_calls == STEP_OVER_UNDEBUGGABLE
&& IN_SOLIB_DYNSYM_RESOLVE_CODE (stop_pc)) && IN_SOLIB_DYNSYM_RESOLVE_CODE (stop_pc))
{ {
CORE_ADDR pc_after_resolver = SKIP_SOLIB_RESOLVER (stop_pc); CORE_ADDR pc_after_resolver =
gdbarch_skip_solib_resolver (current_gdbarch, stop_pc);
if (pc_after_resolver) if (pc_after_resolver)
{ {