diff options
author | Yuta Saito <kateinoigakukun@gmail.com> | 2022-06-04 02:28:31 +0000 |
---|---|---|
committer | Yuta Saito <kateinoigakukun@gmail.com> | 2022-06-04 02:28:31 +0000 |
commit | dcf3368e33c3a01bd21b692d3be5dc1ecee587f4 (patch) | |
tree | af894f75b038e5f3a7906a9e6813adf4ab7b5636 /llvm/unittests/Support | |
parent | e0adee8481623613933551e00adcd9ddea18d889 (diff) | |
download | llvm-dcf3368e33c3a01bd21b692d3be5dc1ecee587f4.zip llvm-dcf3368e33c3a01bd21b692d3be5dc1ecee587f4.tar.gz llvm-dcf3368e33c3a01bd21b692d3be5dc1ecee587f4.tar.bz2 |
[lld][WebAssembly] Retain data segments referenced via __start/__stop
As well as ELF linker does, retain all data segments named X referenced
through `__start_X` or `__stop_X`.
For example, `FOO_MD` should not be stripped in the below case, but it's currently mis-stripped
```llvm
@FOO_MD = global [4 x i8] c"bar\00", section "foo_md", align 1
@__start_foo_md = external constant i8*
@__stop_foo_md = external constant i8*
@llvm.used = appending global [1 x i8*] [i8* bitcast (i32 ()* @foo_md_size to i8*)], section "llvm.metadata"
define i32 @foo_md_size() {
entry:
ret i32 sub (
i32 ptrtoint (i8** @__stop_foo_md to i32),
i32 ptrtoint (i8** @__start_foo_md to i32)
)
}
```
This fixes https://github.com/llvm/llvm-project/issues/55839
Reviewed By: sbc100
Differential Revision: https://reviews.llvm.org/D126950
Diffstat (limited to 'llvm/unittests/Support')
0 files changed, 0 insertions, 0 deletions