2004-05-01 Andrew Cagney <cagney@redhat.com>
* gdbarch.sh (DEPRECATED_PC_IN_SIGTRAMP): Delete. * gdbarch.h, gdbarch.c: Re-generate. * shnbsd-tdep.c (shnbsd_init_abi): Do not set pc_in_sigtramp. (shnbsd_pc_in_sigtramp): Delete. * i386-interix-tdep.c (i386_interix_init_abi): Do not set pc_in_sigtramp. * hppa-hpux-tdep.c (hppa_hpux_init_abi): Do not set pc_in_sigtramp. * frame.h: Update comments. * ppc-linux-tdep.c: Update comments. * breakpoint.c (bpstat_what): Update comments. Index: doc/ChangeLog 2004-05-01 Andrew Cagney <cagney@redhat.com> * gdbint.texinfo (Target Architecture Definition): Delete description of DEPRECATED_PC_IN_SIGTRAMP.
This commit is contained in:
parent
ac5eccb7a1
commit
fcf70625fc
@ -1,5 +1,17 @@
|
|||||||
2004-05-01 Andrew Cagney <cagney@redhat.com>
|
2004-05-01 Andrew Cagney <cagney@redhat.com>
|
||||||
|
|
||||||
|
* gdbarch.sh (DEPRECATED_PC_IN_SIGTRAMP): Delete.
|
||||||
|
* gdbarch.h, gdbarch.c: Re-generate.
|
||||||
|
* shnbsd-tdep.c (shnbsd_init_abi): Do not set pc_in_sigtramp.
|
||||||
|
(shnbsd_pc_in_sigtramp): Delete.
|
||||||
|
* i386-interix-tdep.c (i386_interix_init_abi): Do not set
|
||||||
|
pc_in_sigtramp.
|
||||||
|
* hppa-hpux-tdep.c (hppa_hpux_init_abi): Do not set
|
||||||
|
pc_in_sigtramp.
|
||||||
|
* frame.h: Update comments.
|
||||||
|
* ppc-linux-tdep.c: Update comments.
|
||||||
|
* breakpoint.c (bpstat_what): Update comments.
|
||||||
|
|
||||||
* Makefile.in (m68klinux-tdep.o, m68klinux-nat.o): Fix
|
* Makefile.in (m68klinux-tdep.o, m68klinux-nat.o): Fix
|
||||||
m68klinux-tdep.o's dependencies, were previously added to
|
m68klinux-tdep.o's dependencies, were previously added to
|
||||||
m68klinux-nat.o.
|
m68klinux-nat.o.
|
||||||
|
@ -3032,8 +3032,7 @@ bpstat_what (bpstat bs)
|
|||||||
|
|
||||||
/* step_resume entries: a step resume breakpoint overrides another
|
/* step_resume entries: a step resume breakpoint overrides another
|
||||||
breakpoint of signal handling (see comment in wait_for_inferior
|
breakpoint of signal handling (see comment in wait_for_inferior
|
||||||
at first DEPRECATED_PC_IN_SIGTRAMP where we set the step_resume
|
at where we set the step_resume breakpoint). */
|
||||||
breakpoint). */
|
|
||||||
/* We handle the through_sigtramp_breakpoint the same way; having both
|
/* We handle the through_sigtramp_breakpoint the same way; having both
|
||||||
one of those and a step_resume_breakpoint is probably very rare (?). */
|
one of those and a step_resume_breakpoint is probably very rare (?). */
|
||||||
|
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2004-05-01 Andrew Cagney <cagney@redhat.com>
|
||||||
|
|
||||||
|
* gdbint.texinfo (Target Architecture Definition): Delete
|
||||||
|
description of DEPRECATED_PC_IN_SIGTRAMP.
|
||||||
|
|
||||||
2004-04-30 Andrew Cagney <cagney@redhat.com>
|
2004-04-30 Andrew Cagney <cagney@redhat.com>
|
||||||
|
|
||||||
* gdbint.texinfo (Target Architecture Definition): Delete
|
* gdbint.texinfo (Target Architecture Definition): Delete
|
||||||
|
@ -3626,18 +3626,6 @@ them.
|
|||||||
@findex PCC_SOL_BROKEN
|
@findex PCC_SOL_BROKEN
|
||||||
(Used only in the Convex target.)
|
(Used only in the Convex target.)
|
||||||
|
|
||||||
@item DEPRECATED_PC_IN_SIGTRAMP (@var{pc}, @var{name})
|
|
||||||
@findex DEPRECATED_PC_IN_SIGTRAMP
|
|
||||||
@cindex sigtramp
|
|
||||||
The @dfn{sigtramp} is a routine that the kernel calls (which then calls
|
|
||||||
the signal handler). On most machines it is a library routine that is
|
|
||||||
linked into the executable.
|
|
||||||
|
|
||||||
This function, given a program counter value in @var{pc} and the
|
|
||||||
(possibly NULL) name of the function in which that @var{pc} resides,
|
|
||||||
returns nonzero if the @var{pc} and/or @var{name} show that we are in
|
|
||||||
sigtramp.
|
|
||||||
|
|
||||||
@item PC_LOAD_SEGMENT
|
@item PC_LOAD_SEGMENT
|
||||||
@findex PC_LOAD_SEGMENT
|
@findex PC_LOAD_SEGMENT
|
||||||
If defined, print information about the load segment for the program
|
If defined, print information about the load segment for the program
|
||||||
|
@ -361,7 +361,6 @@ extern enum frame_type get_frame_type (struct frame_info *);
|
|||||||
|
|
||||||
/* FIXME: cagney/2002-11-10: Some targets want to directly mark a
|
/* FIXME: cagney/2002-11-10: Some targets want to directly mark a
|
||||||
frame as being of a specific type. This shouldn't be necessary.
|
frame as being of a specific type. This shouldn't be necessary.
|
||||||
DEPRECATED_PC_IN_SIGTRAMP() indicates a SIGTRAMP_FRAME and
|
|
||||||
DEPRECATED_PC_IN_CALL_DUMMY() indicates a DUMMY_FRAME. I suspect
|
DEPRECATED_PC_IN_CALL_DUMMY() indicates a DUMMY_FRAME. I suspect
|
||||||
the real problem here is that get_prev_frame() only sets
|
the real problem here is that get_prev_frame() only sets
|
||||||
initialized after DEPRECATED_INIT_EXTRA_FRAME_INFO as been called.
|
initialized after DEPRECATED_INIT_EXTRA_FRAME_INFO as been called.
|
||||||
|
@ -242,7 +242,6 @@ struct gdbarch
|
|||||||
gdbarch_skip_solib_resolver_ftype *skip_solib_resolver;
|
gdbarch_skip_solib_resolver_ftype *skip_solib_resolver;
|
||||||
gdbarch_in_solib_call_trampoline_ftype *in_solib_call_trampoline;
|
gdbarch_in_solib_call_trampoline_ftype *in_solib_call_trampoline;
|
||||||
gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline;
|
gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline;
|
||||||
gdbarch_deprecated_pc_in_sigtramp_ftype *deprecated_pc_in_sigtramp;
|
|
||||||
gdbarch_in_function_epilogue_p_ftype *in_function_epilogue_p;
|
gdbarch_in_function_epilogue_p_ftype *in_function_epilogue_p;
|
||||||
gdbarch_construct_inferior_arguments_ftype *construct_inferior_arguments;
|
gdbarch_construct_inferior_arguments_ftype *construct_inferior_arguments;
|
||||||
gdbarch_elf_make_msymbol_special_ftype *elf_make_msymbol_special;
|
gdbarch_elf_make_msymbol_special_ftype *elf_make_msymbol_special;
|
||||||
@ -404,7 +403,6 @@ struct gdbarch startup_gdbarch =
|
|||||||
generic_skip_solib_resolver, /* 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, /* deprecated_pc_in_sigtramp */
|
|
||||||
generic_in_function_epilogue_p, /* in_function_epilogue_p */
|
generic_in_function_epilogue_p, /* in_function_epilogue_p */
|
||||||
construct_inferior_arguments, /* construct_inferior_arguments */
|
construct_inferior_arguments, /* construct_inferior_arguments */
|
||||||
0, /* elf_make_msymbol_special */
|
0, /* elf_make_msymbol_special */
|
||||||
@ -512,7 +510,6 @@ gdbarch_alloc (const struct gdbarch_info *info,
|
|||||||
current_gdbarch->skip_solib_resolver = generic_skip_solib_resolver;
|
current_gdbarch->skip_solib_resolver = generic_skip_solib_resolver;
|
||||||
current_gdbarch->in_solib_call_trampoline = generic_in_solib_call_trampoline;
|
current_gdbarch->in_solib_call_trampoline = generic_in_solib_call_trampoline;
|
||||||
current_gdbarch->in_solib_return_trampoline = generic_in_solib_return_trampoline;
|
current_gdbarch->in_solib_return_trampoline = generic_in_solib_return_trampoline;
|
||||||
current_gdbarch->deprecated_pc_in_sigtramp = legacy_pc_in_sigtramp;
|
|
||||||
current_gdbarch->in_function_epilogue_p = generic_in_function_epilogue_p;
|
current_gdbarch->in_function_epilogue_p = generic_in_function_epilogue_p;
|
||||||
current_gdbarch->construct_inferior_arguments = construct_inferior_arguments;
|
current_gdbarch->construct_inferior_arguments = construct_inferior_arguments;
|
||||||
current_gdbarch->elf_make_msymbol_special = default_elf_make_msymbol_special;
|
current_gdbarch->elf_make_msymbol_special = default_elf_make_msymbol_special;
|
||||||
@ -709,7 +706,6 @@ verify_gdbarch (struct gdbarch *current_gdbarch)
|
|||||||
/* Skip verify of skip_solib_resolver, invalid_p == 0 */
|
/* Skip verify of skip_solib_resolver, invalid_p == 0 */
|
||||||
/* Skip verify of in_solib_call_trampoline, invalid_p == 0 */
|
/* Skip verify of in_solib_call_trampoline, invalid_p == 0 */
|
||||||
/* Skip verify of in_solib_return_trampoline, invalid_p == 0 */
|
/* Skip verify of in_solib_return_trampoline, invalid_p == 0 */
|
||||||
/* Skip verify of deprecated_pc_in_sigtramp, has predicate */
|
|
||||||
/* Skip verify of in_function_epilogue_p, invalid_p == 0 */
|
/* Skip verify of in_function_epilogue_p, invalid_p == 0 */
|
||||||
/* Skip verify of construct_inferior_arguments, invalid_p == 0 */
|
/* Skip verify of construct_inferior_arguments, invalid_p == 0 */
|
||||||
/* Skip verify of elf_make_msymbol_special, invalid_p == 0 */
|
/* Skip verify of elf_make_msymbol_special, invalid_p == 0 */
|
||||||
@ -1292,25 +1288,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
|
|||||||
(long) current_gdbarch->deprecated_pc_in_call_dummy
|
(long) current_gdbarch->deprecated_pc_in_call_dummy
|
||||||
/*DEPRECATED_PC_IN_CALL_DUMMY ()*/);
|
/*DEPRECATED_PC_IN_CALL_DUMMY ()*/);
|
||||||
#endif
|
#endif
|
||||||
#ifdef DEPRECATED_PC_IN_SIGTRAMP_P
|
|
||||||
fprintf_unfiltered (file,
|
|
||||||
"gdbarch_dump: %s # %s\n",
|
|
||||||
"DEPRECATED_PC_IN_SIGTRAMP_P()",
|
|
||||||
XSTRING (DEPRECATED_PC_IN_SIGTRAMP_P ()));
|
|
||||||
fprintf_unfiltered (file,
|
|
||||||
"gdbarch_dump: DEPRECATED_PC_IN_SIGTRAMP_P() = %d\n",
|
|
||||||
DEPRECATED_PC_IN_SIGTRAMP_P ());
|
|
||||||
#endif
|
|
||||||
#ifdef DEPRECATED_PC_IN_SIGTRAMP
|
|
||||||
fprintf_unfiltered (file,
|
|
||||||
"gdbarch_dump: %s # %s\n",
|
|
||||||
"DEPRECATED_PC_IN_SIGTRAMP(pc, name)",
|
|
||||||
XSTRING (DEPRECATED_PC_IN_SIGTRAMP (pc, name)));
|
|
||||||
fprintf_unfiltered (file,
|
|
||||||
"gdbarch_dump: DEPRECATED_PC_IN_SIGTRAMP = <0x%08lx>\n",
|
|
||||||
(long) current_gdbarch->deprecated_pc_in_sigtramp
|
|
||||||
/*DEPRECATED_PC_IN_SIGTRAMP ()*/);
|
|
||||||
#endif
|
|
||||||
#ifdef DEPRECATED_POP_FRAME_P
|
#ifdef DEPRECATED_POP_FRAME_P
|
||||||
fprintf_unfiltered (file,
|
fprintf_unfiltered (file,
|
||||||
"gdbarch_dump: %s # %s\n",
|
"gdbarch_dump: %s # %s\n",
|
||||||
@ -4920,31 +4897,6 @@ set_gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch,
|
|||||||
gdbarch->in_solib_return_trampoline = in_solib_return_trampoline;
|
gdbarch->in_solib_return_trampoline = in_solib_return_trampoline;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
|
||||||
gdbarch_deprecated_pc_in_sigtramp_p (struct gdbarch *gdbarch)
|
|
||||||
{
|
|
||||||
gdb_assert (gdbarch != NULL);
|
|
||||||
return gdbarch->deprecated_pc_in_sigtramp != legacy_pc_in_sigtramp;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
gdbarch_deprecated_pc_in_sigtramp (struct gdbarch *gdbarch, CORE_ADDR pc, char *name)
|
|
||||||
{
|
|
||||||
gdb_assert (gdbarch != NULL);
|
|
||||||
gdb_assert (gdbarch->deprecated_pc_in_sigtramp != NULL);
|
|
||||||
/* Do not check predicate: gdbarch->deprecated_pc_in_sigtramp != legacy_pc_in_sigtramp, allow call. */
|
|
||||||
if (gdbarch_debug >= 2)
|
|
||||||
fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_pc_in_sigtramp called\n");
|
|
||||||
return gdbarch->deprecated_pc_in_sigtramp (pc, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
set_gdbarch_deprecated_pc_in_sigtramp (struct gdbarch *gdbarch,
|
|
||||||
gdbarch_deprecated_pc_in_sigtramp_ftype deprecated_pc_in_sigtramp)
|
|
||||||
{
|
|
||||||
gdbarch->deprecated_pc_in_sigtramp = deprecated_pc_in_sigtramp;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR addr)
|
gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR addr)
|
||||||
{
|
{
|
||||||
|
@ -2064,34 +2064,6 @@ extern void set_gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, gdb
|
|||||||
#define IN_SOLIB_RETURN_TRAMPOLINE(pc, name) (gdbarch_in_solib_return_trampoline (current_gdbarch, pc, name))
|
#define IN_SOLIB_RETURN_TRAMPOLINE(pc, name) (gdbarch_in_solib_return_trampoline (current_gdbarch, pc, name))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* NOTE: cagney/2004-03-23: DEPRECATED_PC_IN_SIGTRAMP have all been
|
|
||||||
superseeded by signal trampoline frame sniffers. */
|
|
||||||
|
|
||||||
#if defined (DEPRECATED_PC_IN_SIGTRAMP)
|
|
||||||
/* Legacy for systems yet to multi-arch DEPRECATED_PC_IN_SIGTRAMP */
|
|
||||||
#if !defined (DEPRECATED_PC_IN_SIGTRAMP_P)
|
|
||||||
#define DEPRECATED_PC_IN_SIGTRAMP_P() (1)
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern int gdbarch_deprecated_pc_in_sigtramp_p (struct gdbarch *gdbarch);
|
|
||||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PC_IN_SIGTRAMP_P)
|
|
||||||
#error "Non multi-arch definition of DEPRECATED_PC_IN_SIGTRAMP"
|
|
||||||
#endif
|
|
||||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_PC_IN_SIGTRAMP_P)
|
|
||||||
#define DEPRECATED_PC_IN_SIGTRAMP_P() (gdbarch_deprecated_pc_in_sigtramp_p (current_gdbarch))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef int (gdbarch_deprecated_pc_in_sigtramp_ftype) (CORE_ADDR pc, char *name);
|
|
||||||
extern int gdbarch_deprecated_pc_in_sigtramp (struct gdbarch *gdbarch, CORE_ADDR pc, char *name);
|
|
||||||
extern void set_gdbarch_deprecated_pc_in_sigtramp (struct gdbarch *gdbarch, gdbarch_deprecated_pc_in_sigtramp_ftype *deprecated_pc_in_sigtramp);
|
|
||||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PC_IN_SIGTRAMP)
|
|
||||||
#error "Non multi-arch definition of DEPRECATED_PC_IN_SIGTRAMP"
|
|
||||||
#endif
|
|
||||||
#if !defined (DEPRECATED_PC_IN_SIGTRAMP)
|
|
||||||
#define DEPRECATED_PC_IN_SIGTRAMP(pc, name) (gdbarch_deprecated_pc_in_sigtramp (current_gdbarch, pc, name))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* A target might have problems with watchpoints as soon as the stack
|
/* A target might have problems with watchpoints as soon as the stack
|
||||||
frame of the current function has been destroyed. This mostly happens
|
frame of the current function has been destroyed. This mostly happens
|
||||||
as the first action in a funtion's epilogue. in_function_epilogue_p()
|
as the first action in a funtion's epilogue. in_function_epilogue_p()
|
||||||
|
@ -719,10 +719,6 @@ f:2:IN_SOLIB_CALL_TRAMPOLINE:int:in_solib_call_trampoline:CORE_ADDR pc, char *na
|
|||||||
# Some systems also have trampoline code for returning from shared libs.
|
# Some systems also have trampoline code for returning from shared libs.
|
||||||
f:2:IN_SOLIB_RETURN_TRAMPOLINE:int:in_solib_return_trampoline:CORE_ADDR pc, char *name:pc, name:::generic_in_solib_return_trampoline::0
|
f:2:IN_SOLIB_RETURN_TRAMPOLINE:int:in_solib_return_trampoline:CORE_ADDR pc, char *name:pc, name:::generic_in_solib_return_trampoline::0
|
||||||
|
|
||||||
# NOTE: cagney/2004-03-23: DEPRECATED_PC_IN_SIGTRAMP have all been
|
|
||||||
# superseeded by signal trampoline frame sniffers.
|
|
||||||
F::DEPRECATED_PC_IN_SIGTRAMP:int:deprecated_pc_in_sigtramp:CORE_ADDR pc, char *name:pc, name:::legacy_pc_in_sigtramp
|
|
||||||
|
|
||||||
# A target might have problems with watchpoints as soon as the stack
|
# A target might have problems with watchpoints as soon as the stack
|
||||||
# frame of the current function has been destroyed. This mostly happens
|
# frame of the current function has been destroyed. This mostly happens
|
||||||
# as the first action in a funtion's epilogue. in_function_epilogue_p()
|
# as the first action in a funtion's epilogue. in_function_epilogue_p()
|
||||||
|
@ -1227,8 +1227,6 @@ hppa_hpux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|||||||
{
|
{
|
||||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||||
|
|
||||||
set_gdbarch_deprecated_pc_in_sigtramp (gdbarch, hppa_hpux_pc_in_sigtramp);
|
|
||||||
|
|
||||||
if (tdep->bytes_per_address == 4)
|
if (tdep->bytes_per_address == 4)
|
||||||
set_gdbarch_in_solib_call_trampoline (gdbarch,
|
set_gdbarch_in_solib_call_trampoline (gdbarch,
|
||||||
hppa32_hpux_in_solib_call_trampoline);
|
hppa32_hpux_in_solib_call_trampoline);
|
||||||
|
@ -322,7 +322,6 @@ i386_interix_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|||||||
tdep->struct_return = reg_struct_return;
|
tdep->struct_return = reg_struct_return;
|
||||||
tdep->jb_pc_offset = jump_buffer_Eip_offset;
|
tdep->jb_pc_offset = jump_buffer_Eip_offset;
|
||||||
|
|
||||||
set_gdbarch_deprecated_pc_in_sigtramp (gdbarch, i386_interix_pc_in_sigtramp);
|
|
||||||
set_gdbarch_in_solib_call_trampoline (gdbarch,
|
set_gdbarch_in_solib_call_trampoline (gdbarch,
|
||||||
i386_interix_in_solib_call_trampoline);
|
i386_interix_in_solib_call_trampoline);
|
||||||
set_gdbarch_skip_trampoline_code (gdbarch,
|
set_gdbarch_skip_trampoline_code (gdbarch,
|
||||||
|
@ -114,8 +114,8 @@ static int ppc_linux_at_sigtramp_return_path (CORE_ADDR pc);
|
|||||||
/* Determine if pc is in a signal trampoline...
|
/* Determine if pc is in a signal trampoline...
|
||||||
|
|
||||||
Ha! That's not what this does at all. wait_for_inferior in
|
Ha! That's not what this does at all. wait_for_inferior in
|
||||||
infrun.c calls DEPRECATED_PC_IN_SIGTRAMP in order to detect entry
|
infrun.c calls get_frame_type() in order to detect entry into a
|
||||||
into a signal trampoline just after delivery of a signal. But on
|
signal trampoline just after delivery of a signal. But on
|
||||||
GNU/Linux, signal trampolines are used for the return path only.
|
GNU/Linux, signal trampolines are used for the return path only.
|
||||||
The kernel sets things up so that the signal handler is called
|
The kernel sets things up so that the signal handler is called
|
||||||
directly.
|
directly.
|
||||||
@ -146,20 +146,9 @@ static int ppc_linux_at_sigtramp_return_path (CORE_ADDR pc);
|
|||||||
signal is delivered while stepping, the next instruction that
|
signal is delivered while stepping, the next instruction that
|
||||||
would've been stepped over isn't, instead a signal is delivered and
|
would've been stepped over isn't, instead a signal is delivered and
|
||||||
the first instruction of the handler is stepped over instead. That
|
the first instruction of the handler is stepped over instead. That
|
||||||
puts us on the second instruction. (I added the test for the
|
puts us on the second instruction. (I added the test for the first
|
||||||
first instruction long after the fact, just in case the observed
|
instruction long after the fact, just in case the observed behavior
|
||||||
behavior is ever fixed.)
|
is ever fixed.) */
|
||||||
|
|
||||||
DEPRECATED_PC_IN_SIGTRAMP is called from blockframe.c as well in
|
|
||||||
order to set the frame's type (if a SIGTRAMP_FRAME). Because of
|
|
||||||
our strange definition of in_sigtramp below, we can't rely on the
|
|
||||||
frame's type getting set correctly from within blockframe.c. This
|
|
||||||
is why we take pains to set it in init_extra_frame_info().
|
|
||||||
|
|
||||||
NOTE: cagney/2002-11-10: I suspect the real problem here is that
|
|
||||||
the get_prev_frame() only initializes the frame's type after the
|
|
||||||
call to INIT_FRAME_INFO. get_prev_frame() should be fixed, this
|
|
||||||
code shouldn't be working its way around a bug :-(. */
|
|
||||||
|
|
||||||
int
|
int
|
||||||
ppc_linux_in_sigtramp (CORE_ADDR pc, char *func_name)
|
ppc_linux_in_sigtramp (CORE_ADDR pc, char *func_name)
|
||||||
|
@ -166,19 +166,10 @@ static struct core_fns shnbsd_elfcore_fns =
|
|||||||
NULL /* next */
|
NULL /* next */
|
||||||
};
|
};
|
||||||
|
|
||||||
static int
|
|
||||||
shnbsd_pc_in_sigtramp (CORE_ADDR pc, char *func_name)
|
|
||||||
{
|
|
||||||
/* FIXME: Need to add support for kernel-provided signal trampolines. */
|
|
||||||
return (nbsd_pc_in_sigtramp (pc, func_name));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shnbsd_init_abi (struct gdbarch_info info,
|
shnbsd_init_abi (struct gdbarch_info info,
|
||||||
struct gdbarch *gdbarch)
|
struct gdbarch *gdbarch)
|
||||||
{
|
{
|
||||||
set_gdbarch_deprecated_pc_in_sigtramp (gdbarch, shnbsd_pc_in_sigtramp);
|
|
||||||
|
|
||||||
set_solib_svr4_fetch_link_map_offsets (gdbarch,
|
set_solib_svr4_fetch_link_map_offsets (gdbarch,
|
||||||
nbsd_ilp32_solib_svr4_fetch_link_map_offsets);
|
nbsd_ilp32_solib_svr4_fetch_link_map_offsets);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user