mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-24 18:44:20 +08:00
Also mark ELF solib trampoline minimal symbols special
In installing minimal symbols for ELF shared library trampolines we "forget" to make individual symbols special where required. This leads to problems on the MIPS target using microMIPS SVR4 lazy stubs. Lacking the special annotation these stubs are treated as standard MIPS code and this makes GDB insert the wrong software breakpoint instruction, breaking e.g. single-stepping through these stubs. This is not a very frequent scenario as microMIPS SVR4 lazy stubs are typically only used in shared libraries with the main executable using PLT, handled elsewhere. Still it triggers e.g. when a software watchpoint has been installed. The symptom is SIGILL or the program going astray, depending on the endianness. Disassembly of these stubs is also wrong. * elfread.c (elf_symtab_read): Also mark solib trampoline minimal symbols special.
This commit is contained in:
parent
0d5ed15352
commit
9b807e7bbb
@ -1,3 +1,8 @@
|
||||
2014-10-03 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
* elfread.c (elf_symtab_read): Also mark solib trampoline minimal
|
||||
symbols special.
|
||||
|
||||
2014-10-03 Maciej W. Rozycki <macro@codesourcery.com>
|
||||
|
||||
* breakpoint.h (bp_target_info): Add `reqstd_address' member,
|
||||
|
@ -328,7 +328,10 @@ elf_symtab_read (struct objfile *objfile, int type,
|
||||
(sym->name, strlen (sym->name), copy_names,
|
||||
symaddr, mst_solib_trampoline, sect, objfile);
|
||||
if (msym != NULL)
|
||||
msym->filename = filesymname;
|
||||
{
|
||||
msym->filename = filesymname;
|
||||
gdbarch_elf_make_msymbol_special (gdbarch, sym, msym);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user