Explorar o código

new dlstart stage-2 chaining for x86_64 and x32

Rich Felker %!s(int64=9) %!d(string=hai) anos
pai
achega
12b0b7d8ea
Modificáronse 2 ficheiros con 10 adicións e 0 borrados
  1. 5 0
      arch/x32/reloc.h
  2. 5 0
      arch/x86_64/reloc.h

+ 5 - 0
arch/x32/reloc.h

@@ -24,3 +24,8 @@
 
 #define CRTJMP(pc,sp) __asm__ __volatile__( \
 	"mov %1,%%esp ; jmp *%0" : : "r"((uint64_t)(uintptr_t)pc), "r"(sp) : "memory" )
+
+#define GETFUNCSYM(fp, sym, got) __asm__ ( \
+	".hidden " #sym "\n" \
+	"	lea " #sym "(%%rip),%0\n" \
+	: "=r"(*fp) : : "memory" )

+ 5 - 0
arch/x86_64/reloc.h

@@ -13,3 +13,8 @@
 
 #define CRTJMP(pc,sp) __asm__ __volatile__( \
 	"mov %1,%%rsp ; jmp *%0" : : "r"(pc), "r"(sp) : "memory" )
+
+#define GETFUNCSYM(fp, sym, got) __asm__ ( \
+	".hidden " #sym "\n" \
+	"	lea " #sym "(%%rip),%0\n" \
+	: "=r"(*fp) : : "memory" )