fpc/utils/wasmbin
nickysn cd6eed38c1 [PATCH 186/188] removed debug lines
From a2ba033b28c82808f5c0074d6b4d3c62f965417a Mon Sep 17 00:00:00 2001
From: Dmitry Boyarintsev <skalogryz.lists@gmail.com>
Date: Mon, 13 Apr 2020 09:32:51 -0400

git-svn-id: branches/wasm@46182 -
2020-08-03 13:02:17 +00:00
..
testscan [PATCH 120/188] adding test call_indirect using index reference 2020-08-03 13:01:13 +00:00
lebutils.pas [PATCH 170/188] using FPC built int function to do arithmetical 2020-08-03 13:02:00 +00:00
parseutils.pas [PATCH 169/188] removing debugging message 2020-08-03 13:02:00 +00:00
README.md [PATCH 029/188] Update README.md 2020-08-03 12:59:14 +00:00
wasa.lpi [PATCH 180/188] starting wasa project to be the assembler 2020-08-03 13:02:11 +00:00
wasa.pas [PATCH 183/188] wasa relocation to be off by default 2020-08-03 13:02:14 +00:00
wasmbin.pas [PATCH 048/188] update writing binaries 2020-08-03 12:59:36 +00:00
wasmbincode.pas [PATCH 173/188] changed from using textual format of operand to 2020-08-03 13:02:04 +00:00
wasmbindebug.pas [PATCH 003/188] starting on linking utils 2020-08-03 12:58:44 +00:00
wasmbinwriter.pas [PATCH 186/188] removed debug lines 2020-08-03 13:02:17 +00:00
wasmld.lpi [PATCH 048/188] update writing binaries 2020-08-03 12:59:36 +00:00
wasmld.lpr [PATCH 021/188] trying to predict the symbol flag based on the symbol 2020-08-03 12:59:06 +00:00
wasmlink.pas [PATCH 102/188] using R_WASM_TABLE_INDEX_SLEB for i32.const as a 2020-08-03 13:00:50 +00:00
wasmlinkchange.pas [PATCH 018/188] allow flags to be set as a string rather than 2020-08-03 12:59:03 +00:00
wasmmodule.pas [PATCH 185/188] changing relocation to use actual wasmmodule objects, 2020-08-03 13:02:16 +00:00
wasmnormalize.pas [PATCH 185/188] changing relocation to use actual wasmmodule objects, 2020-08-03 13:02:16 +00:00
wasmtext.pas [PATCH 134/188] adding legacy memory.size instruction 2020-08-03 13:01:28 +00:00
wasmtool.lpi [PATCH 013/188] update command line processing 2020-08-03 12:58:57 +00:00
wasmtool.lpr [PATCH 057/188] adding an option to mark global variable as weak 2020-08-03 12:59:46 +00:00
wasmtoolutils.pas [PATCH 057/188] adding an option to mark global variable as weak 2020-08-03 12:59:46 +00:00
watparser.pas [PATCH 177/188] update parsing of module level elements 2020-08-03 13:02:08 +00:00
watscanner.pas [PATCH 173/188] changed from using textual format of operand to 2020-08-03 13:02:04 +00:00
wattest.lpi [PATCH 069/188] downshift the version of the project for 2.0.6 2020-08-03 12:59:56 +00:00
wattest.lpr [PATCH 153/188] update normalizing elements 2020-08-03 13:01:45 +00:00

wasmbin

Collection of WebAssembly binary utils

wasmtool

wasmtool is an utility that allows to modify wasm binary linking information. wat2wasm util is capable of generating binaries with relocation information. However the symbol flags are setup in the manner that final binaries cannot be linked by wasm-ld utility. (i.e. non setting weak symbols).

command

Only one command should be specified per call

exportrename

--exportrename inputfile

The option allow to change the export name. The reasoning for that is wasm-ld behavior of renaming the export from the declared name to the symbol name.

The input file can be either a text file, containing a list of oldname new name values:

OldExportName=NewExportName

or the input file can point to an object file. The object file's export section is parsed for the desired export names.

symbolflag

--symbolflag inputfile

The action allows to modify flags for the specified symbols. The input file specified must contain the pairs of symbolname + desired flags.

$TESTUNIT_$$_ADD$LONGINT$LONGINT$$LONGINT=WH

The desired flag is a string (or a character) that should consists of the following characters. Each character corresponds to a certain symbol linking flag:

  • W - WASM_SYM_BINDING_WEAK

  • H - WASM_SYM_VISIBILITY_HIDDEN

  • L - WASM_SYM_BINDING_LOCAL

  • D - removes flag WASM_SYM_BINDING_LOCAL

Multiple characters can be specified per flag.

symbolauto

 --symbolauto

The flags for each symbol updated and is determined based of the symbol use: if a function is a stub function (the only code is "unreachable"), the status given "weak" (it's a reference function elsewhere)

if a function is located in the function table, then the status given is
"hidden" (do not add to the final linked executable)

if a function is not located in the function table, the status given is:
"hidden"+"local" (local means the function can be used only in this object file)

Imported and exported functions are left unmodified.