mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 21:51:42 +02:00
[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:
parent
7657055c0c
commit
1a80e89ccf
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user