Index: b/include/elf.h =================================================================== --- a/include/elf.h +++ b/include/elf.h @@ -1931,6 +1931,7 @@ typedef struct PLT is writable. For a non-writable PLT, this is omitted or has a zero value. */ #define DT_MIPS_RWPLT 0x70000034 +#define DT_MIPS_RLD_MAP_REL 0x70000035 #define DT_MIPS_NUM 0x35 /* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry. */ Index: b/ldso/ldso/mips/dl-sysdep.h =================================================================== --- a/ldso/ldso/mips/dl-sysdep.h +++ b/ldso/ldso/mips/dl-sysdep.h @@ -109,6 +109,9 @@ else if (dpnt->d_tag == DT_MIPS_PLTGOT) dynamic[DT_MIPS_PLTGOT_IDX] = dpnt->d_un.d_val; \ else if ((dpnt->d_tag == DT_MIPS_RLD_MAP) && (dpnt->d_un.d_ptr)) \ *(ElfW(Addr) *)(dpnt->d_un.d_ptr) = (ElfW(Addr)) debug_addr; \ +else if ((dpnt->d_tag == DT_MIPS_RLD_MAP_REL) && (dpnt->d_un.d_ptr)) { \ + *(ElfW(Addr) *)((char*)dpnt + dpnt->d_un.d_val) = (ElfW(Addr)) debug_addr; \ + } \ } while (0) #define ARCH_SKIP_RELOC(type_class, sym) \