fix breakage in x32 dynamic linker due to mismatching register size

the jmp instruction requires a 64-bit register, so cast the desired PC
address up to uint64_t, going through uintptr_t to ensure that it's
zero-extended rather than possibly sign-extended.
This commit is contained in:
Rich Felker 2015-04-20 18:17:48 -04:00
parent 60ed988fd6
commit 4bf10ebf66

View File

@ -23,4 +23,4 @@
#define REL_TPOFF R_X86_64_TPOFF64
#define CRTJMP(pc,sp) __asm__ __volatile__( \
"mov %1,%%esp ; jmp *%0" : : "r"(pc), "r"(sp) : "memory" )
"mov %1,%%esp ; jmp *%0" : : "r"((uint64_t)(uintptr_t)pc), "r"(sp) : "memory" )