Browse Source

new dlstart stage-2 chaining for x86_64 and x32

Rich Felker 9 năm trước cách đây
mục cha
commit
12b0b7d8ea
2 tập tin đã thay đổi với 10 bổ sung0 xóa
  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" )