ldso: fix GDB dynamic linker info on MIPS

GDB is looking for a pointer to the ldso debug info in the data of the
..rld_map section.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
Felix Fietkau 2016-01-30 21:14:05 +01:00 committed by Rich Felker
parent 831e9d9efa
commit c18d05f0e8
3 changed files with 12 additions and 5 deletions

View File

@ -24,7 +24,7 @@
#define REL_TPOFF R_MIPS_TLS_TPREL32
#define NEED_MIPS_GOT_RELOCS 1
#define DYNAMIC_IS_RO 1
#define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP
#define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT))
#define CRTJMP(pc,sp) __asm__ __volatile__( \

View File

@ -1582,11 +1582,14 @@ _Noreturn void __dls3(size_t *sp)
load_deps(&app);
make_global(&app);
#ifndef DYNAMIC_IS_RO
for (i=0; app.dynv[i]; i+=2)
if (app.dynv[i]==DT_DEBUG)
for (i=0; app.dynv[i]; i+=2) {
if (!DT_DEBUG_INDIRECT && app.dynv[i]==DT_DEBUG)
app.dynv[i+1] = (size_t)&debug;
#endif
if (DT_DEBUG_INDIRECT && app.dynv[i]==DT_DEBUG_INDIRECT) {
size_t *ptr = (size_t *) app.dynv[i+1];
*ptr = (size_t)&debug;
}
}
/* The main program must be relocated LAST since it may contin
* copy relocations which depend on libraries' relocations. */

View File

@ -83,6 +83,10 @@ struct fdpic_dummy_loadmap {
#define NEED_MIPS_GOT_RELOCS 0
#endif
#ifndef DT_DEBUG_INDIRECT
#define DT_DEBUG_INDIRECT 0
#endif
#define AUX_CNT 32
#define DYN_CNT 32