Browse Source

+ ELF linker: handle R_386_GOTOFF and R_X86_64_GOTOFF64 relocations

git-svn-id: trunk@22830 -
sergei 12 years ago
parent
commit
90d564e6a5
2 changed files with 9 additions and 1 deletions
  1. 4 1
      compiler/i386/cpuelf.pas
  2. 5 0
      compiler/x86_64/cpuelf.pas

+ 4 - 1
compiler/i386/cpuelf.pas

@@ -408,7 +408,10 @@ implementation
                   address:=address+relocval;
                   address:=address+relocval;
                 end;
                 end;
 
 
-              //R_386_GOTOFF:  !!TODO
+              R_386_GOTOFF:
+                begin
+                  address:=address+relocval-gotsymbol.address;
+                end;
 
 
               else
               else
                 begin
                 begin

+ 5 - 0
compiler/x86_64/cpuelf.pas

@@ -484,6 +484,11 @@ implementation
                   address:=address+relocval;
                   address:=address+relocval;
                 end;
                 end;
 
 
+              R_X86_64_GOTOFF64:
+                begin
+                  address:=address+relocval-gotsymbol.address;
+                end;
+
               else
               else
                 begin
                 begin
                   writeln(objreloc.typ);
                   writeln(objreloc.typ);