| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 
							- Fix DT_DEBUG handling on MIPS in musl libc.
 
- With this change gdb will load the symbol files for shared libraries on MIPS too.
 
- This patch was taken from this thread: https://www.openwall.com/lists/musl/2022/01/09/4
 
- --- a/arch/mips/reloc.h
 
- +++ b/arch/mips/reloc.h
 
- @@ -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__( \
 
- --- a/arch/mips64/reloc.h
 
- +++ b/arch/mips64/reloc.h
 
- @@ -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__( \
 
- --- a/arch/mipsn32/reloc.h
 
- +++ b/arch/mipsn32/reloc.h
 
- @@ -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__( \
 
- --- a/ldso/dynlink.c
 
- +++ b/ldso/dynlink.c
 
- @@ -1923,6 +1923,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
 
- --- a/src/internal/dynlink.h
 
- +++ b/src/internal/dynlink.h
 
- @@ -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 32
 
-  
 
 
  |