2
0
Эх сурвалжийг харах

+ add relocation objects for the RELOC_FUNCTION_INDEX_LEB relocation to
the relocation list. They are not written to the object file, yet.

Nikolay Nikolov 3 жил өмнө
parent
commit
12496a638b
1 өөрчлөгдсөн 16 нэмэгдсэн , 0 устгасан
  1. 16 0
      compiler/ogwasm.pas

+ 16 - 0
compiler/ogwasm.pas

@@ -40,6 +40,11 @@ interface
 
     type
 
+      { TWasmObjRelocation }
+
+      TWasmObjRelocation = class(TObjRelocation)
+      end;
+
       { TWasmObjSymbolExtraData }
 
       TWasmObjSymbolExtraData = class(TFPHashObject)
@@ -330,7 +335,12 @@ implementation
         p: TObjSymbol; Reloctype: TObjRelocationType);
       const
         leb_zero: array[0..4] of byte=($80,$80,$80,$80,$00);
+      var
+        objreloc: TWasmObjRelocation;
       begin
+        if CurrObjSec=nil then
+          internalerror(200403072);
+        objreloc:=nil;
         case Reloctype of
           RELOC_FUNCTION_INDEX_LEB:
             begin
@@ -338,6 +348,12 @@ implementation
                 internalerror(2021092502);
               if len<>5 then
                 internalerror(2021092503);
+              if not assigned(p) then
+                internalerror(2021092504);
+              if p.bind<>AB_EXTERNAL then
+                internalerror(2021092505);
+              objreloc:=TWasmObjRelocation.CreateSymbol(CurrObjSec.Size,p,Reloctype);
+              CurrObjSec.ObjRelocations.Add(objreloc);
               writebytes(leb_zero,5);
             end;
           RELOC_ABSOLUTE: