musl/arch/s390x/reloc.h
Stefan Liebler 5be920e910 s390x: don't allow br r0 in CRTJMP asm
The instruction encoding that would be "br %r0" is not actually a
branch to r0, but instead a nop/memory-barrier. gcc 14 has been found
to choose r0 for the "r"(pc) constraint, breaking CRTJMP.

This patch adjusts the inline assembly constraints and marks "pc" as
address ("a"), which disallows usage of r0.
2024-10-11 12:21:35 -04:00

14 lines
438 B
C

#define LDSO_ARCH "s390x"
#define REL_SYMBOLIC R_390_64
#define REL_GOT R_390_GLOB_DAT
#define REL_PLT R_390_JMP_SLOT
#define REL_RELATIVE R_390_RELATIVE
#define REL_COPY R_390_COPY
#define REL_DTPMOD R_390_TLS_DTPMOD
#define REL_DTPOFF R_390_TLS_DTPOFF
#define REL_TPOFF R_390_TLS_TPOFF
#define CRTJMP(pc,sp) __asm__ __volatile__( \
"lgr %%r15,%1; br %0" : : "a"(pc), "r"(sp) : "memory" )