Browse Source

* WebAssembly threads internal linker: introduced TWasmObjSymbol.TlsDataSym

Nikolay Nikolov 1 year ago
parent
commit
a441d8ff28
1 changed files with 3 additions and 0 deletions
  1. 3 0
      compiler/ogwasm.pas

+ 3 - 0
compiler/ogwasm.pas

@@ -85,6 +85,7 @@ interface
         ExtraData: TWasmObjSymbolExtraData;
         ExtraData: TWasmObjSymbolExtraData;
         LinkingData: TWasmObjSymbolLinkingData;
         LinkingData: TWasmObjSymbolLinkingData;
         TlsGlobalSym: TWasmObjSymbol;
         TlsGlobalSym: TWasmObjSymbol;
+        TlsDataSym: TWasmObjSymbol;
         constructor create(AList:TFPHashObjectList;const AName:string);override;
         constructor create(AList:TFPHashObjectList;const AName:string);override;
         destructor Destroy;override;
         destructor Destroy;override;
         function IsAlias: Boolean;
         function IsAlias: Boolean;
@@ -4245,6 +4246,7 @@ implementation
                       begin
                       begin
                         objsym.typ:=AT_TLS;
                         objsym.typ:=AT_TLS;
                         objsym.TlsGlobalSym:=TWasmObjSymbol(ObjData.CreateSymbol('GOT.mem.'+SymName));
                         objsym.TlsGlobalSym:=TWasmObjSymbol(ObjData.CreateSymbol('GOT.mem.'+SymName));
+                        objsym.TlsGlobalSym.TlsDataSym:=objsym;
                         objsym.TlsGlobalSym.bind:=AB_EXTERNAL;
                         objsym.TlsGlobalSym.bind:=AB_EXTERNAL;
                         objsym.TlsGlobalSym.typ:=AT_WASM_GLOBAL;
                         objsym.TlsGlobalSym.typ:=AT_WASM_GLOBAL;
                         objsym.TlsGlobalSym.objsection:=nil;
                         objsym.TlsGlobalSym.objsection:=nil;
@@ -4269,6 +4271,7 @@ implementation
                       begin
                       begin
                         objsym.typ:=AT_TLS;
                         objsym.typ:=AT_TLS;
                         objsym.TlsGlobalSym:=TWasmObjSymbol(ObjData.CreateSymbol('GOT.mem.'+SymName));
                         objsym.TlsGlobalSym:=TWasmObjSymbol(ObjData.CreateSymbol('GOT.mem.'+SymName));
+                        objsym.TlsGlobalSym.TlsDataSym:=objsym;
                         objsym.TlsGlobalSym.bind:=objsym.bind;
                         objsym.TlsGlobalSym.bind:=objsym.bind;
                         objsym.TlsGlobalSym.typ:=AT_WASM_GLOBAL;
                         objsym.TlsGlobalSym.typ:=AT_WASM_GLOBAL;
                         objsym.TlsGlobalSym.objsection:=ObjData.createsection('.wasm_globals.n_'+objsym.TlsGlobalSym.Name,1,[oso_Data,oso_load],true);
                         objsym.TlsGlobalSym.objsection:=ObjData.createsection('.wasm_globals.n_'+objsym.TlsGlobalSym.Name,1,[oso_Data,oso_load],true);