Explorar o código

+ webassembly internal linker: create separate exe sections for .rodata and .bss

Nikolay Nikolov hai 1 ano
pai
achega
b361b41a86
Modificáronse 2 ficheiros con 6 adicións e 2 borrados
  1. 1 1
      compiler/ogwasm.pas
  2. 5 1
      compiler/systems/t_wasi.pas

+ 1 - 1
compiler/ogwasm.pas

@@ -4257,7 +4257,7 @@ implementation
       begin
         { WebAssembly is a Harvard architecture.
           Data lives in a separate address space, so start addressing back from 0. }
-        if aname='.data' then
+        if aname='.rodata' then
           CurrMemPos:=0;
         inherited MemPos_ExeSection(aname);
       end;

+ 5 - 1
compiler/systems/t_wasi.pas

@@ -303,9 +303,13 @@ begin
   LinkScript.Concat('  OBJSECTION .text.*');
   LinkScript.Concat('ENDEXESECTION');
 
-  LinkScript.Concat('EXESECTION .data');
+  LinkScript.Concat('EXESECTION .rodata');
   LinkScript.Concat('  OBJSECTION .rodata.*');
+  LinkScript.Concat('ENDEXESECTION');
+  LinkScript.Concat('EXESECTION .data');
   LinkScript.Concat('  OBJSECTION .data.*');
+  LinkScript.Concat('ENDEXESECTION');
+  LinkScript.Concat('EXESECTION .bss');
   LinkScript.Concat('  OBJSECTION .bss');
   LinkScript.Concat('ENDEXESECTION');