From ee4d77b119cefa866eba5786f34fda261f37bac7 Mon Sep 17 00:00:00 2001 From: Nikolay Nikolov Date: Wed, 27 Dec 2023 13:14:27 +0200 Subject: [PATCH] + create data symbols in the wasm object reader --- compiler/ogwasm.pas | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/compiler/ogwasm.pas b/compiler/ogwasm.pas index 899b5db2ae..459eaf50ad 100644 --- a/compiler/ogwasm.pas +++ b/compiler/ogwasm.pas @@ -3145,6 +3145,7 @@ implementation ModuleVersion: array [0..3] of Byte; i: Integer; CurrSec: TObjSection; + objsym: TObjSymbol; begin FReader:=AReader; InputFileName:=AReader.FileName; @@ -3177,6 +3178,38 @@ implementation end; ReadSectionContent(ObjData); + for i:=low(SymbolTable) to high(SymbolTable) do + with SymbolTable[i] do + case SymKind of + byte(SYMTAB_DATA): + if (SymFlags and WASM_SYM_UNDEFINED)<>0 then + begin + objsym:=ObjData.CreateSymbol(SymName); + objsym.bind:=AB_EXTERNAL; + objsym.typ:=AT_DATA; + objsym.objsection:=nil; + objsym.offset:=0; + objsym.size:=0; + end + else + begin + objsym:=ObjData.CreateSymbol(SymName); + objsym.bind:=AB_GLOBAL; + objsym.typ:=AT_DATA; + objsym.objsection:=TObjSection(ObjData.ObjSectionList[SymIndex]); + objsym.offset:=SymOffset; + objsym.size:=SymSize; + end; + byte(SYMTAB_FUNCTION), + byte(SYMTAB_GLOBAL), + byte(SYMTAB_SECTION), + byte(SYMTAB_EVENT), + byte(SYMTAB_TABLE): + {TODO}; + else + internalerror(2023122701); + end; + Result:=True; end;