mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 14:29:14 +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
|
// the stream should be set at the beggining of the section
|
||||||
// after name and size values
|
// after name and size values
|
||||||
procedure ReadLinkingSection(st: TStream; size: integer; var sc: TLinkingSection);
|
procedure ReadLinkingSection(st: TStream; size: integer; var sc: TLinkingSection);
|
||||||
|
procedure WriteLinkingSection(st: TStream; const sc: TLinkingSection);
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
@ -165,7 +166,7 @@ end;
|
|||||||
function ReadLinkSubSect(st: TStream; out m: TLinkingSubSection): Boolean;
|
function ReadLinkSubSect(st: TStream; out m: TLinkingSubSection): Boolean;
|
||||||
begin
|
begin
|
||||||
FillChar(m, sizeof(m), 0);
|
FillChar(m, sizeof(m), 0);
|
||||||
m.sectype := ReadU(st);
|
m.sectype := st.ReadByte; //ReadU(st);
|
||||||
m.length := ReadU(st);
|
m.length := ReadU(st);
|
||||||
Result := true;
|
Result := true;
|
||||||
end;
|
end;
|
||||||
@ -304,4 +305,29 @@ begin
|
|||||||
end;
|
end;
|
||||||
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.
|
end.
|
||||||
|
Loading…
Reference in New Issue
Block a user