소스 검색

* pic'fied startup code

florian 3 년 전
부모
커밋
baa28faa19
2개의 변경된 파일7개의 추가작업 그리고 7개의 파일을 삭제
  1. 3 3
      rtl/linux/x86_64/si_c.inc
  2. 4 4
      rtl/linux/x86_64/si_g.inc

+ 3 - 3
rtl/linux/x86_64/si_c.inc

@@ -155,10 +155,10 @@ procedure _FPC_libc_start; assembler; nostackframe; public name '_start';
     pushq %rsp
 
     { Pass address of our own entry points to .fini and .init.  }
-    movq $ini_dummy, %r8
-    movq $ini_dummy, %rcx
+    movq ini_dummy@GOTPCREL(%rip), %r8
+    movq ini_dummy@GOTPCREL(%rip), %rcx
 
-    movq $main_stub, %rdi
+    movq main_stub@GOTPCREL(%rip), %rdi
 
     { Call the user's main function, and exit with its value.
      But let the libc call main.    }

+ 4 - 4
rtl/linux/x86_64/si_g.inc

@@ -56,7 +56,7 @@ procedure gmon_mcleanup; external name '_mcleanup';
 procedure _FPC_libc_start; forward;
 procedure _FPC_libc_haltproc(e:longint); forward;
 
- 
+
 procedure main_stub; assembler; nostackframe;
   asm
     { save return address }
@@ -169,10 +169,10 @@ procedure ini_dummy;
     pushq %rsp
 
     { Pass address of our own entry points to .fini and .init.  }
-    movq $ini_dummy, %r8
-    movq $ini_dummy, %rcx
+    movq ini_dummy@GOTPCREL(%rip), %r8
+    movq ini_dummy@GOTPCREL(%rip), %rcx
 
-    movq $main_stub, %rdi
+    movq main_stub@GOTPCREL(%rip), %rdi
 
     { Call the user's main function, and exit with its value.
      But let the libc call main.    }