Browse Source

+ also write the data symbols to the symbol table

Nikolay Nikolov 3 years ago
parent
commit
5066a7eb24
1 changed files with 20 additions and 0 deletions
  1. 20 0
      compiler/ogwasm.pas

+ 20 - 0
compiler/ogwasm.pas

@@ -811,6 +811,26 @@ implementation
                 WriteUleb(FWasmSymbolTable,0);
                 WriteUleb(FWasmSymbolTable,objsym.FuncIndex);
                 WriteName(FWasmSymbolTable,objsym.Name);
+              end
+            else if objsym.typ=AT_DATA then
+              begin
+                Inc(FWasmSymbolTableEntriesCount);
+                WriteByte(FWasmSymbolTable,Ord(SYMTAB_DATA));
+                if objsym.bind=AB_GLOBAL then
+                  WriteUleb(FWasmSymbolTable,0)
+                else if objsym.bind=AB_LOCAL then
+                  WriteUleb(FWasmSymbolTable,WASM_SYM_BINDING_LOCAL)
+                else if objsym.bind=AB_EXTERNAL then
+                  WriteUleb(FWasmSymbolTable,WASM_SYM_UNDEFINED)
+                else
+                  internalerror(2021092506);
+                WriteName(FWasmSymbolTable,objsym.Name);
+                if objsym.bind<>AB_EXTERNAL then
+                  begin
+                    WriteUleb(FWasmSymbolTable,TWasmObjSection(objsym.objsection).SegIdx);
+                    WriteUleb(FWasmSymbolTable,objsym.offset);
+                    WriteUleb(FWasmSymbolTable,objsym.size);
+                  end;
               end;
           end;