Sfoglia il codice sorgente

+ plt support for x86_64

git-svn-id: trunk@1578 -
florian 20 anni fa
parent
commit
bc7fab1aeb
2 ha cambiato i file con 12 aggiunte e 1 eliminazioni
  1. 2 0
      compiler/x86/agx86att.pas
  2. 10 1
      compiler/x86/cgx86.pas

+ 2 - 0
compiler/x86/agx86att.pas

@@ -155,6 +155,8 @@ interface
               else
                 begin
                   AsmWrite(o.ref^.symbol.name);
+                  if o.ref^.refaddr=addr_pic then
+                    AsmWrite('@PLT');
                   if o.ref^.offset>0 then
                    AsmWrite('+'+tostr(o.ref^.offset))
                   else

+ 10 - 1
compiler/x86/cgx86.pas

@@ -536,8 +536,17 @@ unit cgx86;
 
 
     procedure tcgx86.a_call_name(list : taasmoutput;const s : string);
+      var
+        sym : tasmsymbol;
+        r : treference;
       begin
-        list.concat(taicpu.op_sym(A_CALL,S_NO,objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION)));
+        sym:=objectlibrary.newasmsymbol(s,AB_EXTERNAL,AT_FUNCTION);
+        reference_reset_symbol(r,sym,0);
+        if cs_create_pic in aktmoduleswitches then
+          r.refaddr:=addr_pic
+        else
+          r.refaddr:=addr_full;
+        list.concat(taicpu.op_ref(A_CALL,S_NO,r));
       end;