mirror of
git://git.musl-libc.org/musl
synced 2025-03-06 20:48:29 +01:00
fix debugger tracking of shared libraries on mips with PIE main program
mips has its own mechanisms for DT_DEBUG because it makes _DYNAMIC read-only, and the original mechanism, DT_MIPS_RLD_MAP, was PIE-incompatible. DT_MIPS_RLD_MAP_REL was added to remedy this, but we never implemented support for it. add it now using the same idioms for mips-specific ldso logic.
This commit is contained in:
parent
a4b0a665b8
commit
f897461d4f
5 changed files with 11 additions and 0 deletions
|
@ -29,6 +29,7 @@
|
|||
|
||||
#define NEED_MIPS_GOT_RELOCS 1
|
||||
#define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP
|
||||
#define DT_DEBUG_INDIRECT_REL DT_MIPS_RLD_MAP_REL
|
||||
#define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT))
|
||||
|
||||
#define CRTJMP(pc,sp) __asm__ __volatile__( \
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
|
||||
#define NEED_MIPS_GOT_RELOCS 1
|
||||
#define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP
|
||||
#define DT_DEBUG_INDIRECT_REL DT_MIPS_RLD_MAP_REL
|
||||
#define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT))
|
||||
|
||||
#define CRTJMP(pc,sp) __asm__ __volatile__( \
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
#define NEED_MIPS_GOT_RELOCS 1
|
||||
#define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP
|
||||
#define DT_DEBUG_INDIRECT_REL DT_MIPS_RLD_MAP_REL
|
||||
#define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT))
|
||||
|
||||
#define CRTJMP(pc,sp) __asm__ __volatile__( \
|
||||
|
|
|
@ -1992,6 +1992,10 @@ void __dls3(size_t *sp, size_t *auxv)
|
|||
size_t *ptr = (size_t *) app.dynv[i+1];
|
||||
*ptr = (size_t)&debug;
|
||||
}
|
||||
if (app.dynv[i]==DT_DEBUG_INDIRECT_REL) {
|
||||
size_t *ptr = (size_t *)((size_t)&app.dynv[i] + app.dynv[i+1]);
|
||||
*ptr = (size_t)&debug;
|
||||
}
|
||||
}
|
||||
|
||||
/* This must be done before final relocations, since it calls
|
||||
|
|
|
@ -92,6 +92,10 @@ struct fdpic_dummy_loadmap {
|
|||
#define DT_DEBUG_INDIRECT 0
|
||||
#endif
|
||||
|
||||
#ifndef DT_DEBUG_INDIRECT_REL
|
||||
#define DT_DEBUG_INDIRECT_REL 0
|
||||
#endif
|
||||
|
||||
#define AUX_CNT 32
|
||||
#define DYN_CNT 37
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue