Browse Source

* wasm internal linker: fixed the relocation of imported function symbol aliases

Nikolay Nikolov 1 year ago
parent
commit
6a9376cb9e
1 changed files with 14 additions and 0 deletions
  1. 14 0
      compiler/ogwasm.pas

+ 14 - 0
compiler/ogwasm.pas

@@ -4898,6 +4898,8 @@ implementation
         ImportSymbol: TImportSymbol;
         exesym: TExeSymbol;
         newdll: Boolean;
+        fsym: TWasmObjSymbol;
+        objdata: TObjData;
       begin
         for i:=0 to FImports.Count-1 do
           begin
@@ -4921,6 +4923,18 @@ implementation
                   end;
               end;
           end;
+
+        { set ExeFunctionIndex to the alias symbols as well }
+        for i:=0 to ObjDataList.Count-1 do
+          begin
+            objdata:=TObjData(ObjDataList[i]);
+            for j:=0 to objdata.ObjSymbolList.Count-1 do
+              begin
+                fsym:=TWasmObjSymbol(objdata.ObjSymbolList[j]);
+                if (fsym.LinkingData.ExeFunctionIndex=-1) and assigned(fsym.exesymbol) and (TWasmObjSymbol(fsym.exesymbol.ObjSymbol).LinkingData.ExeFunctionIndex<>-1) then
+                  fsym.LinkingData.ExeFunctionIndex:=TWasmObjSymbol(fsym.exesymbol.ObjSymbol).LinkingData.ExeFunctionIndex;
+              end;
+          end;
       end;
 
     procedure TWasmExeOutput.PrepareFunctions;