* Makefile.in (symfile-mem.o): Update dependencies.
* i386-linux-tdep.c (i386_linux_dwarf_signal_frame_p): New. (i386_linux_init_abi): Call dwarf2_frame_set_signal_frame_p. * inf-ptrace.c (inf_ptrace_attach): Call observer_notify_inferior_created. * inftarg.c (child_attach): Likewise. * symfile-mem.c: Include "observer.h", "auxv.h", and "elf/common.h". (symbol_file_add_from_memory): Take NAME argument. Use it for the new BFD's filename. (add_symbol_file_from_memory_command): Update call to symbol_file_add_from_memory. (struct symbol_file_add_from_memory_args, add_vsyscall_page) (symbol_file_add_from_memory_wrapper): New. (_initialize_symfile_mem): Register add_vsyscall_page as an inferior_created observer.
This commit is contained in:
parent
abbc694557
commit
12b8a2cb8d
6 changed files with 135 additions and 5 deletions
|
@ -244,6 +244,27 @@ i386_linux_sigtramp_p (struct frame_info *next_frame)
|
|||
|| strcmp ("__restore_rt", name) == 0);
|
||||
}
|
||||
|
||||
/* Return one if the unwound PC from NEXT_FRAME is in a signal trampoline
|
||||
which may have DWARF-2 CFI. */
|
||||
|
||||
static int
|
||||
i386_linux_dwarf_signal_frame_p (struct gdbarch *gdbarch,
|
||||
struct frame_info *next_frame)
|
||||
{
|
||||
CORE_ADDR pc = frame_pc_unwind (next_frame);
|
||||
char *name;
|
||||
|
||||
find_pc_partial_function (pc, &name, NULL, NULL);
|
||||
|
||||
/* If a vsyscall DSO is in use, the signal trampolines may have these
|
||||
names. */
|
||||
if (name && (strcmp (name, "__kernel_sigreturn") == 0
|
||||
|| strcmp (name, "__kernel_rt_sigreturn") == 0))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Offset to struct sigcontext in ucontext, from <asm/ucontext.h>. */
|
||||
#define I386_LINUX_UCONTEXT_SIGCONTEXT_OFFSET 20
|
||||
|
||||
|
@ -414,6 +435,8 @@ i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|||
|
||||
/* GNU/Linux uses the dynamic linker included in the GNU C Library. */
|
||||
set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver);
|
||||
|
||||
dwarf2_frame_set_signal_frame_p (gdbarch, i386_linux_dwarf_signal_frame_p);
|
||||
}
|
||||
|
||||
/* Provide a prototype to silence -Wmissing-prototypes. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue