Browse Source

+ write the actual function code in the code section

Nikolay Nikolov 3 years ago
parent
commit
cbf444bbbe
1 changed files with 8 additions and 1 deletions
  1. 8 1
      compiler/ogwasm.pas

+ 8 - 1
compiler/ogwasm.pas

@@ -555,14 +555,21 @@ implementation
         encoded_locals: tdynamicarray;
         encoded_locals: tdynamicarray;
         ObjSymExtraData: TWasmObjSymbolExtraData;
         ObjSymExtraData: TWasmObjSymbolExtraData;
         codelen: LongWord;
         codelen: LongWord;
+        ObjSection: TObjSection;
+        codeexprlen: QWord;
       begin
       begin
         ObjSymExtraData:=TWasmObjSymbolExtraData(FData.FObjSymbolsExtraDataList.Find(objsym.Name));
         ObjSymExtraData:=TWasmObjSymbolExtraData(FData.FObjSymbolsExtraDataList.Find(objsym.Name));
+        ObjSection:=objsym.objsection;
+        ObjSection.Data.seek(objsym.address);
+        codeexprlen:=ObjSection.Size-objsym.address;
+
         encoded_locals:=tdynamicarray.Create(64);
         encoded_locals:=tdynamicarray.Create(64);
         WriteFunctionLocals(encoded_locals,ObjSymExtraData);
         WriteFunctionLocals(encoded_locals,ObjSymExtraData);
-        codelen:=encoded_locals.size+1;
+        codelen:=encoded_locals.size+codeexprlen+1;
         WriteUleb(dest,codelen);
         WriteUleb(dest,codelen);
         encoded_locals.seek(0);
         encoded_locals.seek(0);
         CopyDynamicArray(encoded_locals,dest,encoded_locals.size);
         CopyDynamicArray(encoded_locals,dest,encoded_locals.size);
+        CopyDynamicArray(ObjSection.Data,dest,codeexprlen);
         WriteByte(dest,$0B);
         WriteByte(dest,$0B);
         encoded_locals.Free;
         encoded_locals.Free;
       end;
       end;