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_TPOFF R_ARM_TLS_TPOFF32
|
||||||
#define REL_TLSDESC R_ARM_TLS_DESC
|
#define REL_TLSDESC R_ARM_TLS_DESC
|
||||||
|
|
||||||
#define TLSDESC_BACKWARDS
|
#define TLSDESC_BACKWARDS 1
|
||||||
|
|
||||||
#define CRTJMP(pc,sp) __asm__ __volatile__( \
|
#define CRTJMP(pc,sp) __asm__ __volatile__( \
|
||||||
"mov sp,%1 ; bx %0" : : "r"(pc), "r"(sp) : "memory" )
|
"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;
|
+ addend;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#ifdef TLSDESC_BACKWARDS
|
|
||||||
/* Some archs (32-bit ARM at least) invert the order of
|
/* Some archs (32-bit ARM at least) invert the order of
|
||||||
* the descriptor members. Fix them up here. */
|
* the descriptor members. Fix them up here. */
|
||||||
size_t tmp = reloc_addr[0];
|
if (TLSDESC_BACKWARDS) {
|
||||||
reloc_addr[0] = reloc_addr[1];
|
size_t tmp = reloc_addr[0];
|
||||||
reloc_addr[1] = tmp;
|
reloc_addr[0] = reloc_addr[1];
|
||||||
#endif
|
reloc_addr[1] = tmp;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error("Error relocating %s: unsupported relocation type %d",
|
error("Error relocating %s: unsupported relocation type %d",
|
||||||
|
|
|
@ -73,6 +73,10 @@ struct fdpic_dummy_loadmap {
|
||||||
#define DL_NOMMU_SUPPORT 0
|
#define DL_NOMMU_SUPPORT 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef TLSDESC_BACKWARDS
|
||||||
|
#define TLSDESC_BACKWARDS 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !DL_FDPIC
|
#if !DL_FDPIC
|
||||||
#define IS_RELATIVE(x,s) ( \
|
#define IS_RELATIVE(x,s) ( \
|
||||||
(R_TYPE(x) == REL_RELATIVE) || \
|
(R_TYPE(x) == REL_RELATIVE) || \
|
||||||
|
|
Loading…
Add table
Reference in a new issue