Nikolay Nikolov
dd13b46088
* use WasmCustomSectionName to obtain the debug section names in MaybeWriteDebugSection and MaybeAddDebugSectionToSymbolTable
2022-08-03 23:11:44 +03:00
Nikolay Nikolov
efd92fba01
+ introduced TWasmCustomDebugSectionType
2022-08-03 23:04:53 +03:00
Nikolay Nikolov
cc260eb7b2
* wasm32 obj writer: use Data.ObjSectionList.Find to find the debug section by name in MaybeWriteDebugSection
2022-08-03 22:02:19 +03:00
Nikolay Nikolov
e959422753
* wasm32 obj writer: do the relocations before writing the code, data and debug sections
2022-08-03 20:56:44 +03:00
Nikolay Nikolov
edf5fce7e3
* wasm32 obj writer: determine the section number for the datacount, code, data and debug sections ahead of time (before writing the sections)
2022-08-03 20:51:58 +03:00
Nikolay Nikolov
b5a71086e8
* wasm32 obj writer: moved the writing of the data sections ahead
2022-08-03 20:44:11 +03:00
Nikolay Nikolov
2a196899bc
* wasm32 obj writer: writing the debug section symbols to the symbol table moved before the writing of the debug sections themselves
2022-08-03 20:36:50 +03:00
Nikolay Nikolov
65b4425672
+ support declaring wasm globals in the WebAssembly internal object writer
2022-07-31 19:28:09 +03:00
Nikolay Nikolov
5604bd951e
* an attempt to fix WebAssembly debug info section relocations
2022-07-22 02:26:00 +03:00
Nikolay Nikolov
63c8e458bb
* workaround crash when generating WebAssembly DWARF debug info for threadvars, while multithreading is turned off
2022-07-16 19:31:14 +03:00
Nikolay Nikolov
fcadc80163
* don't write R_WASM_TABLE_INDEX_I32 relocations, always use R_WASM_FUNCTION_OFFSET_I32 in debug sections
2022-07-16 19:08:06 +03:00
Nikolay Nikolov
972a9df031
+ always (even when multithreading is off) create a "target features" section
...
in the WebAssembly object writer, since we still require some (very commonly
supported) extensions, even without multithreading
2022-07-16 07:42:53 +03:00
Nikolay Nikolov
bf17a84dd2
+ implemented the R_WASM_FUNCTION_OFFSET_I32 relocation in the WebAssembly object writer
2022-07-16 04:34:15 +03:00
Nikolay Nikolov
6a94d2683b
+ emit WASM DWARF debug info relocations
2022-07-16 04:19:50 +03:00
Nikolay Nikolov
90305b6032
+ write the actual DWARF debug sections in the WebAssembly object writer. The relocations aren't ready, yet, though.
2022-07-16 02:13:42 +03:00
Nikolay Nikolov
b82af25e63
* fixed crashes with the WebAssembly internal object writer, when debug info is enabled. The debug info itself is not yet written to the file, though.
2022-07-16 01:40:21 +03:00
Nikolay Nikolov
a9698b6f6e
+ introduced TWasmObjSection.IsDebug
2022-07-16 00:54:11 +03:00
Nikolay Nikolov
4db653998b
+ generate proper WebAssembly threadvar access when multithreading is turned on
2022-07-14 02:39:07 +03:00
Nikolay Nikolov
fa5575ea54
+ prefix the threadvar sections with '.tbss' when WASM multithreading is enabled
2022-07-13 23:27:30 +03:00
Nikolay Nikolov
2606cef21f
+ set the TLS flag for threadvar sections when WASM threads are enabled
2022-07-13 23:19:48 +03:00
Nikolay Nikolov
7cd082ba5f
+ produce a target_features section when compiling with -CTwasmthreads
2022-05-28 04:04:02 +03:00
Nikolay Nikolov
1dd80d596d
+ added a 'producers' custom section to WebAssembly object modules, containing the FPC version
2022-05-28 03:33:04 +03:00
Nikolay Nikolov
ee89b7c9ec
* fixed warning
2022-05-28 00:47:23 +03:00
Nikolay Nikolov
0c6287894b
* the WebAssembly internal assembler renamed WASM (previously it was OMF, which was the ID of the MS-DOS .obj writer, which I forgot to rename)
2022-05-26 14:12:10 +03:00
Pierre Muller
7c21b37105
Avoid some range check error and convert internalerror into error messages
2022-05-26 00:28:47 +02:00
Pierre Muller
c9e8bfd118
Add internalerror if ogwasm tries to write unset Func/Global or TagIndex of TWasmObjSymbol
2022-02-11 22:19:43 +00:00
Nikolay Nikolov
cdf1ceca76
* emit a weak symbol for the exception tag, since that's what the LLVM linker
...
wants to treat them as shared between .o files
2021-09-28 02:52:40 +03:00
Nikolay Nikolov
b463f2a141
+ added support for exception tags and for the 'throw' and 'catch' instructions
...
in the wasm internal assembler and object writer
2021-09-27 21:44:09 +03:00
Nikolay Nikolov
b46c010f82
+ also support immutable wasm globals in the wasm assembler writer (both internal and external)
2021-09-27 05:40:26 +03:00
Nikolay Nikolov
7b31549119
* the data section is now only written by the internal wasm object writer, when
...
there are data segments in the module
2021-09-27 05:17:20 +03:00
Nikolay Nikolov
e85aff2b96
* combined TWasmObjSymbol.ImportIndex and .FuncIndex into just .FuncIndex,
...
because there's no point in having them separate, and the name ImportIndex
is misleading, as there are multiple import indices (they are separate for
functions, globals, tables, memories, etc.)
2021-09-27 04:53:35 +03:00
Nikolay Nikolov
2bce4d36db
+ proper support for WASM globals in the internal object writer - emit
...
relocations, generate a Global section, if they are declared in the object
file, etc.
2021-09-27 04:24:49 +03:00
Nikolay Nikolov
5ad2d47e23
* track wasm global types in the internal object writer
2021-09-27 03:03:57 +03:00
Nikolay Nikolov
0bb781c928
* omit writing the export section if there are no exported functions from
...
the module. This reduces object file size slightly for modules without
exports.
2021-09-26 23:14:52 +03:00
Nikolay Nikolov
d37117c460
* use an incrementing counter variable to determine the numbers for the code
...
and data section, so they can be used in the relocation section, without
hardcoding them as constants. This will automatically adjust the numbers
when we add more sections, or when we make writing some of the sections
optional.
2021-09-26 23:10:55 +03:00
Nikolay Nikolov
77b898fe45
* use objsym.size to determine the code size of the function (instead of
...
writing until the end of the section) in the wasm internal object writer.
This removes the extra padding of 'unreachable' instructions at the end of
each function (which are zeroes, added for alignment - they are harmless,
but are unnecessary and cause a slight increase of the size of the
resulting binaries), after the final 'return' instruction of the function.
2021-09-26 22:21:34 +03:00
Nikolay Nikolov
2102fbdc97
- removed debug writelns from the wasm internal object writer
2021-09-26 20:13:35 +03:00
Nikolay Nikolov
99c84da071
+ generate the export section in the wasm internal obj writer
2021-09-26 20:02:48 +03:00
Nikolay Nikolov
abf831c430
+ fixed the addend in the relocations that point to data
2021-09-26 11:12:08 +03:00
Nikolay Nikolov
c881d05793
* fixed bug in the code, generated for the RELOC_FUNCTION_INDEX_LEB
...
relocation
2021-09-26 10:29:17 +03:00
Nikolay Nikolov
07461d0fc3
* made the constructor of TObjSymbol virtual, so it can be overriden
2021-09-26 10:17:19 +03:00
Nikolay Nikolov
efd5831742
* generate an internal error if an attempt is made to emit a
...
R_WASM_MEMORY_ADDR_LEB relocation, that points to code, instead of
data
2021-09-26 09:42:12 +03:00
Nikolay Nikolov
392ca81c20
+ add threadvar symbols to the symbol table
2021-09-26 09:40:28 +03:00
Nikolay Nikolov
d7b141d70e
+ implemented the if, loop and else instructions
2021-09-26 07:45:14 +03:00
Nikolay Nikolov
ea401ccc82
+ support writing R_WASM_MEMORY_ADDR_I32 relocations
2021-09-26 06:27:02 +03:00
Nikolay Nikolov
7f5250bf46
+ implemented support for R_WASM_TABLE_INDEX_SLEB relocations
2021-09-26 06:22:41 +03:00
Nikolay Nikolov
9fa2e2934b
+ support the call_indirect instruction and the R_WASM_TYPE_INDEX_LEB
...
relocation that it requires in the internal wasm object writer
2021-09-26 06:03:18 +03:00
Nikolay Nikolov
bd6bbb6cf4
+ support writing imports from a different module in the wasm binary object writer
2021-09-26 05:36:51 +03:00
Nikolay Nikolov
238d09d875
+ support writing RELOC_FUNCTION_INDEX_LEB relocations to non-external functions
2021-09-26 05:15:50 +03:00
Nikolay Nikolov
bf5048cb5e
+ support generating R_WASM_TABLE_INDEX_I32 relocations
2021-09-26 04:46:46 +03:00