|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3 |
|
| #
1095870e |
| 17-Oct-2022 |
Dan Gohman <[email protected]> |
[wasm-ld] Define a `__heap_end` symbol marking the end of allocated memory.
Define a `__heap_end` symbol that marks the end of the memory region that starts at `__heap_base`. This will allow malloc
[wasm-ld] Define a `__heap_end` symbol marking the end of allocated memory.
Define a `__heap_end` symbol that marks the end of the memory region that starts at `__heap_base`. This will allow malloc implementations to know how much memory they can use at `__heap_base` even if someone has done a `memory.grow` before they can initialize their state.
Differential Revision: https://reviews.llvm.org/D136110
show more ...
|
|
Revision tags: llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
| #
5cff5142 |
| 16-Jul-2022 |
Kazu Hirata <[email protected]> |
Use value instead of getValue (NFC)
|
| #
e5f568a4 |
| 13-Jul-2022 |
Kazu Hirata <[email protected]> |
Use has_value instead of hasValue (NFC)
|
| #
53217ecb |
| 24-Jun-2022 |
Sam Clegg <[email protected]> |
[lld][WebAssembly] Don't apply data relocations at static constructor time
Instead, export `__wasm_apply_data_relocs` and `__wasm_call_ctors` separately.
This is required since user code in a share
[lld][WebAssembly] Don't apply data relocations at static constructor time
Instead, export `__wasm_apply_data_relocs` and `__wasm_call_ctors` separately.
This is required since user code in a shared library (such as static constructors) should not be run until relocations have been applied to all loaded libraries.
See: https://github.com/emscripten-core/emscripten/issues/17295
Differential Revision: https://reviews.llvm.org/D128515
show more ...
|
| #
3b7c3a65 |
| 25-Jun-2022 |
Kazu Hirata <[email protected]> |
Revert "Don't use Optional::hasValue (NFC)"
This reverts commit aa8feeefd3ac6c78ee8f67bf033976fc7d68bc6d.
|
| #
aa8feeef |
| 25-Jun-2022 |
Kazu Hirata <[email protected]> |
Don't use Optional::hasValue (NFC)
|
|
Revision tags: llvmorg-14.0.6 |
|
| #
064a08cd |
| 21-Jun-2022 |
Kazu Hirata <[email protected]> |
Don't use Optional::hasValue (NFC)
|
| #
5413bf1b |
| 20-Jun-2022 |
Kazu Hirata <[email protected]> |
Don't use Optional::hasValue (NFC)
|
| #
8c589939 |
| 19-Jun-2022 |
Nico Weber <[email protected]> |
fix comment typos to cycle bots
|
| #
757d9d22 |
| 19-Jun-2022 |
Kazu Hirata <[email protected]> |
[lld] Use value_or instead of getValueOr (NFC)
|
|
Revision tags: llvmorg-14.0.5 |
|
| #
457f38a7 |
| 08-Jun-2022 |
Sam Clegg <[email protected]> |
[lld][WebAssembly] Revert moving of data relocations to start function
Back in https://reviews.llvm.org/D117412 we moved the application of data reloctions to the wasm start function.
However, beca
[lld][WebAssembly] Revert moving of data relocations to start function
Back in https://reviews.llvm.org/D117412 we moved the application of data reloctions to the wasm start function.
However, because the dynamic linker doesn't know the final addresses at module instantiation time, this proved to be too early and the relocations could be applied with the wrong values.
Fixes: https://github.com/emscripten-core/emscripten/issues/17150
Differential Revision: https://reviews.llvm.org/D127333
show more ...
|
| #
87099a04 |
| 03-Jun-2022 |
Sam Clegg <[email protected]> |
[lld][WebAssembly] Remove unnecessary accessor methods. NFC
This is less code, and matches more closely the ELF linker.
Differential Revision: https://reviews.llvm.org/D126979
|
| #
198815e1 |
| 26-May-2022 |
Sam Clegg <[email protected]> |
[lld][WebAssembly] Avoid importing/exporting hidden symbols in shared libraries
We have some special handling for weakly defined symbols where we both import and export them, but this is not needed
[lld][WebAssembly] Avoid importing/exporting hidden symbols in shared libraries
We have some special handling for weakly defined symbols where we both import and export them, but this is not needed for hidden symbols which should never be imported or exported.
See https://github.com/emscripten-core/emscripten/pull/16972
This should also help with: https://github.com/emscripten-core/emscripten/issues/15487
Differential Revision: https://reviews.llvm.org/D126491
show more ...
|
|
Revision tags: llvmorg-14.0.4 |
|
| #
74f98419 |
| 20-May-2022 |
Sam Clegg <[email protected]> |
[lld][WebAssembly] Allow use of statically allocated TLS region.
It turns out we were already allocating static address space for TLS data along with the non-TLS static data, but this space was goin
[lld][WebAssembly] Allow use of statically allocated TLS region.
It turns out we were already allocating static address space for TLS data along with the non-TLS static data, but this space was going unused/ignored.
With this change, we include the TLS segment in `__wasm_init_memory` (which does the work of loading the passive segments into memory when a module is first loaded). We also set the `__tls_base` global to point to the start of this segment.
This means that the runtime can use this static copy of the TLS data for the first/primary thread if it chooses, rather than doing a runtime allocation prior to calling `__wasm_init_tls`.
Practically speaking, this will allow emscripten to avoid dynamic allocation of TLS region on the main thread.
Differential Revision: https://reviews.llvm.org/D126107
show more ...
|
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1 |
|
| #
a04a5077 |
| 17-Mar-2022 |
Sam Clegg <[email protected]> |
[lld][WebAssembly] Fix crash accessing non-live __tls_base symbol
In programs that don't otherwise depend on `__tls_base` it won't be marked as live. However this symbol is used internally in a cou
[lld][WebAssembly] Fix crash accessing non-live __tls_base symbol
In programs that don't otherwise depend on `__tls_base` it won't be marked as live. However this symbol is used internally in a couple of places do we need to mark it as live explictily in those places.
Fixes: #54386
Differential Revision: https://reviews.llvm.org/D121931
show more ...
|
|
Revision tags: llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3 |
|
| #
4690bf2e |
| 07-Mar-2022 |
Sam Clegg <[email protected]> |
[lld][WebAssembly] Take advantage of extended const expressions when available
In particular we use these in two places:
1. When building PIC code we no longer need to combine output segments in
[lld][WebAssembly] Take advantage of extended const expressions when available
In particular we use these in two places:
1. When building PIC code we no longer need to combine output segments into a single segment that can be initialized at `__memory_base`. Instead each segment can encode its offset from `__memory_base` in its initializer. e.g.
``` (i32.add (global.get __memory_base) (i32.const offset) ```
2. When building PIC code we no longer need to relocation internalized global addresses. We can just initialize them with their correct offsets.
Differential Revision: https://reviews.llvm.org/D121420
show more ...
|
|
Revision tags: llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1 |
|
| #
86c90f9b |
| 16-Nov-2020 |
Sam Clegg <[email protected]> |
[lld][WebAssembly] Add --unresolved-symbols=import-dynamic
This is a new mode for handling unresolved symbols that allows all symbols to be imported in the same that they would be in the case of `-f
[lld][WebAssembly] Add --unresolved-symbols=import-dynamic
This is a new mode for handling unresolved symbols that allows all symbols to be imported in the same that they would be in the case of `-fpie` or `-shared`, but generting an otherwise fixed/non-relocatable binary.
Code linked in this way should still be compiled with `-fPIC` so that data symbols can be resolved via imports.
This essentially allows the building of static binaries that have dynamic imports. See: https://github.com/emscripten-core/emscripten/issues/12682
As with other uses of the experimental dynamic linking ABI, this behaviour will produce a warning unless run with `--experimental-pic`.
Differential Revision: https://reviews.llvm.org/D91577
show more ...
|
| #
dabbab68 |
| 13-Feb-2022 |
Sam Clegg <[email protected]> |
[lld][WebAssembly] Apply global relocs before data relocs
Since the code for apply data relocations can sometimes use the values stored in he globals, they need to be relocated before the data reloc
[lld][WebAssembly] Apply global relocs before data relocs
Since the code for apply data relocations can sometimes use the values stored in he globals, they need to be relocated before the data relocations can be run.
Fixes: https://github.com/emscripten-core/emscripten/issues/13398
Differential Revision: https://reviews.llvm.org/D119666
show more ...
|
| #
83d59e05 |
| 20-Jan-2022 |
Alexandre Ganea <[email protected]> |
Re-land [LLD] Remove global state in lldCommon
Move all variables at file-scope or function-static-scope into a hosting structure (lld::CommonLinkerContext) that lives at lldMain()-scope. Drivers wi
Re-land [LLD] Remove global state in lldCommon
Move all variables at file-scope or function-static-scope into a hosting structure (lld::CommonLinkerContext) that lives at lldMain()-scope. Drivers will inherit from this structure and add their own global state, in the same way as for the existing COFFLinkerContext.
See discussion in https://lists.llvm.org/pipermail/llvm-dev/2021-June/151184.html
The previous land f860fe362282ed69b9d4503a20e5d20b9a041189 caused issues in https://lab.llvm.org/buildbot/#/builders/123/builds/8383, fixed by 22ee510dac9440a74b2e5b3fe3ff13ccdbf55af3.
Differential Revision: https://reviews.llvm.org/D108850
show more ...
|
| #
ec47dba1 |
| 15-Jan-2022 |
Sam Clegg <[email protected]> |
[lld][WebAssembly] Perform data relocations during start function
We already perform memory initialization and apply global relocations during start. It makes sense to performs data relocations too
[lld][WebAssembly] Perform data relocations during start function
We already perform memory initialization and apply global relocations during start. It makes sense to performs data relocations too. I think the reason we were not doing this already is solely historical.
Differential Revision: https://reviews.llvm.org/D117412
show more ...
|
| #
e6b15394 |
| 16-Jan-2022 |
Alexandre Ganea <[email protected]> |
Revert [LLD] Remove global state in lldCommon
It seems to be causing issues on https://lab.llvm.org/buildbot/#/builders/123/builds/8383
|
| #
f860fe36 |
| 16-Jan-2022 |
Alexandre Ganea <[email protected]> |
[LLD] Remove global state in lldCommon
Move all variables at file-scope or function-static-scope into a hosting structure (lld::CommonLinkerContext) that lives at lldMain()-scope. Drivers will inher
[LLD] Remove global state in lldCommon
Move all variables at file-scope or function-static-scope into a hosting structure (lld::CommonLinkerContext) that lives at lldMain()-scope. Drivers will inherit from this structure and add their own global state, in the same way as for the existing COFFLinkerContext.
See discussion in https://lists.llvm.org/pipermail/llvm-dev/2021-June/151184.html
Differential Revision: https://reviews.llvm.org/D108850
show more ...
|
| #
5e117730 |
| 02-Jan-2022 |
Kazu Hirata <[email protected]> |
[wasm] Use nullptr instead of NULL (NFC)
Identified with modernize-use-nullptr.
|
| #
182b72aa |
| 29-Oct-2021 |
Sam Clegg <[email protected]> |
[lld][WebAssembly] Generate TLS relocation code also when linking statically
Previously relocations were only generated for PIC output, but relocations for TLS GOT entries are always needed when sha
[lld][WebAssembly] Generate TLS relocation code also when linking statically
Previously relocations were only generated for PIC output, but relocations for TLS GOT entries are always needed when shared memory is enabled, not just in PIC mode.
This means that the `__wasm_apply_global_tls_relocs` is now generated even for statically linked (non-PIC) output. Without this the globals that hold the addresses of TLS symbols are not set correctly.
Differential Revision: https://reviews.llvm.org/D112833
show more ...
|
| #
1eb79e73 |
| 27-Oct-2021 |
Sam Clegg <[email protected]> |
[lld][WebAssembly] Initialize bss segments using memory.fill
Previously we were relying on the dynamic loader to take care of this but it simple and correct for us to do it here instead.
Now we ini
[lld][WebAssembly] Initialize bss segments using memory.fill
Previously we were relying on the dynamic loader to take care of this but it simple and correct for us to do it here instead.
Now we initialize bss segments as part of `__wasm_init_memory` at the same time we initialize passive segments.
In addition we extent the us of `__wasm_init_memory` outside of shared memory situations. Specifically it is now used to initialize bss segments when the memory is imported.
Differential Revision: https://reviews.llvm.org/D112667
show more ...
|