mirror of
git://git.musl-libc.org/musl
synced 2025-03-06 20:48:29 +01:00
ldso: convert TLSDESC_BACKWARDS from "#ifdef" to "if" logic
this style is preferred because it allows the code to be compile-checked even on archs where it is not used.
This commit is contained in:
parent
7b6a6516e1
commit
039d3c34f2
3 changed files with 10 additions and 6 deletions
|
@ -26,7 +26,7 @@
|
|||
#define REL_TPOFF R_ARM_TLS_TPOFF32
|
||||
#define REL_TLSDESC R_ARM_TLS_DESC
|
||||
|
||||
#define TLSDESC_BACKWARDS
|
||||
#define TLSDESC_BACKWARDS 1
|
||||
|
||||
#define CRTJMP(pc,sp) __asm__ __volatile__( \
|
||||
"mov sp,%1 ; bx %0" : : "r"(pc), "r"(sp) : "memory" )
|
||||
|
|
|
@ -542,13 +542,13 @@ static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stri
|
|||
+ addend;
|
||||
#endif
|
||||
}
|
||||
#ifdef TLSDESC_BACKWARDS
|
||||
/* Some archs (32-bit ARM at least) invert the order of
|
||||
* the descriptor members. Fix them up here. */
|
||||
size_t tmp = reloc_addr[0];
|
||||
reloc_addr[0] = reloc_addr[1];
|
||||
reloc_addr[1] = tmp;
|
||||
#endif
|
||||
if (TLSDESC_BACKWARDS) {
|
||||
size_t tmp = reloc_addr[0];
|
||||
reloc_addr[0] = reloc_addr[1];
|
||||
reloc_addr[1] = tmp;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
error("Error relocating %s: unsupported relocation type %d",
|
||||
|
|
|
@ -73,6 +73,10 @@ struct fdpic_dummy_loadmap {
|
|||
#define DL_NOMMU_SUPPORT 0
|
||||
#endif
|
||||
|
||||
#ifndef TLSDESC_BACKWARDS
|
||||
#define TLSDESC_BACKWARDS 0
|
||||
#endif
|
||||
|
||||
#if !DL_FDPIC
|
||||
#define IS_RELATIVE(x,s) ( \
|
||||
(R_TYPE(x) == REL_RELATIVE) || \
|
||||
|
|
Loading…
Add table
Reference in a new issue