* 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:
parent
0e5d83e3b6
commit
4c8c40e6cb
|
@ -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>
|
||||
|
||||
* libunwind-frame.c: New file.
|
||||
|
|
|
@ -103,7 +103,7 @@ generic_skip_trampoline_code (CORE_ADDR pc)
|
|||
}
|
||||
|
||||
CORE_ADDR
|
||||
generic_skip_solib_resolver (CORE_ADDR pc)
|
||||
generic_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -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_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);
|
||||
|
||||
|
|
|
@ -420,7 +420,7 @@ struct gdbarch startup_gdbarch =
|
|||
0, /* software_single_step */
|
||||
0, /* print_insn */
|
||||
0, /* skip_trampoline_code */
|
||||
0, /* skip_solib_resolver */
|
||||
generic_skip_solib_resolver, /* skip_solib_resolver */
|
||||
0, /* in_solib_call_trampoline */
|
||||
0, /* in_solib_return_trampoline */
|
||||
0, /* pc_in_sigtramp */
|
||||
|
@ -2217,16 +2217,9 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
|
|||
(long) current_gdbarch->skip_prologue
|
||||
/*SKIP_PROLOGUE ()*/);
|
||||
#endif
|
||||
#ifdef SKIP_SOLIB_RESOLVER
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: %s # %s\n",
|
||||
"SKIP_SOLIB_RESOLVER(pc)",
|
||||
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
|
||||
"gdbarch_dump: skip_solib_resolver = 0x%08lx\n",
|
||||
(long) current_gdbarch->skip_solib_resolver);
|
||||
#ifdef SKIP_TRAMPOLINE_CODE
|
||||
fprintf_unfiltered (file,
|
||||
"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);
|
||||
if (gdbarch_debug >= 2)
|
||||
fprintf_unfiltered (gdb_stdlog, "gdbarch_skip_solib_resolver called\n");
|
||||
return gdbarch->skip_solib_resolver (pc);
|
||||
return gdbarch->skip_solib_resolver (gdbarch, pc);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -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
|
||||
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 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
|
||||
trampoline code in the ".plt" section. IN_SOLIB_CALL_TRAMPOLINE evaluates
|
||||
|
|
|
@ -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
|
||||
# evaluates non-zero, this is the address where the debugger will place
|
||||
# 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
|
||||
# trampoline code in the ".plt" section. IN_SOLIB_CALL_TRAMPOLINE evaluates
|
||||
# to nonzero if we are currently stopped in one of these.
|
||||
|
|
|
@ -2331,7 +2331,8 @@ process_event_stop_test:
|
|||
if (step_over_calls == STEP_OVER_UNDEBUGGABLE
|
||||
&& 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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue