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

This commit is contained in:
Nikolay Nikolov 2024-01-01 14:56:33 +02:00
parent dc4689ba1b
commit b361b41a86
2 changed files with 6 additions and 2 deletions

View File

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

View File

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