[PATCH 023/188] update writing linking section

From 61a89468b36d53f92702d86d88aef58f1a9fbef5 Mon Sep 17 00:00:00 2001
From: Dmitry Boyarintsev <skalogryz.lists@gmail.com>
Date: Fri, 27 Sep 2019 16:44:09 -0400

git-svn-id: branches/wasm@46019 -
This commit is contained in:
nickysn 2020-08-03 12:59:08 +00:00
parent 7657055c0c
commit 1a80e89ccf

View File

@ -152,6 +152,7 @@ type
// the stream should be set at the beggining of the section
// after name and size values
procedure ReadLinkingSection(st: TStream; size: integer; var sc: TLinkingSection);
procedure WriteLinkingSection(st: TStream; const sc: TLinkingSection);
implementation
@ -165,7 +166,7 @@ end;
function ReadLinkSubSect(st: TStream; out m: TLinkingSubSection): Boolean;
begin
FillChar(m, sizeof(m), 0);
m.sectype := ReadU(st);
m.sectype := st.ReadByte; //ReadU(st);
m.length := ReadU(st);
Result := true;
end;
@ -304,4 +305,29 @@ begin
end;
end;
procedure WriteLinkingSection(st: TStream; const sc: TLinkingSection);
var
mem : TMemoryStream;
i : integer;
begin
st.WriteByte(sc.metadata.version);
mem:=TMemoryStream.Create;
try
WriteU32(mem, length(sc.symbols));
for i:=0 to length(sc.symbols)-1 do
WriteSymInfo(mem, sc.symbols[i]);
st.WriteByte(WASM_SYMBOL_TABLE);
WriteU32(st, mem.Size);
mem.Position:=0;
st.CopyFrom(mem, mem.Size);
finally
mem.Free;
end;
// todo: other sub setions are possible
end;
end.