Browse Source

* fixed interface wrappers in pic

git-svn-id: trunk@1728 -
florian 20 years ago
parent
commit
fdc1419832
1 changed files with 12 additions and 1 deletions
  1. 12 1
      compiler/x86_64/cgcpu.pas

+ 12 - 1
compiler/x86_64/cgcpu.pas

@@ -89,6 +89,8 @@ unit cgcpu;
       var
         make_global : boolean;
         href : treference;
+        sym : tasmsymbol;
+        r : treference;
       begin
         if not(procdef.proctypeoption in [potype_function,potype_procedure]) then
           Internalerror(200006137);
@@ -125,7 +127,16 @@ unit cgcpu;
             list.concat(taicpu.op_reg(A_JMP,S_Q,NR_RAX));
           end
         else
-          list.concat(taicpu.op_sym(A_JMP,S_NO,objectlibrary.newasmsymbol(procdef.mangledname,AB_EXTERNAL,AT_FUNCTION)));
+          begin
+            sym:=objectlibrary.newasmsymbol(procdef.mangledname,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_JMP,S_NO,r));
+          end;
 
         List.concat(Tai_symbol_end.Createname(labelname));
       end;