llvm-project/lld/test/wasm
Sam Clegg cd01430ff1 [lld][WebAssembly] Allow data symbols to extend past end of segment
This fixes a bug with string merging with string symbols that contain
NULLs, as is the case in the `merge-string.s` test.

The bug only showed when we run with `--relocatable` and then try read
the resulting object back in.  In this case we would end up with string
symbols that extend past the end of the segment in which they live.

The problem comes from the fact that sections which are flagged as
string mergable assume that all strings are NULL terminated.  The
merging algorithm will drop trailing chars that follow a NULL since they
are essentially unreachable.  However, the "size" attribute (in the
symbol table) of such a truncated symbol is not updated resulting a
symbol size that can overlap the end of the segment.

I verified that this can happen in ELF too given the right conditions
and the its harmless enough.  In practice Strings that contain embedded
null should not be part of a mergable section.

Differential Revision: https://reviews.llvm.org/D102281
2021-05-12 13:43:37 -07:00
..
Inputs [lld][WebAssembly] Do not merge comdat data segments 2021-05-03 16:43:29 -07:00
lto [NewPM] Hide pass manager debug logging behind -debug-pass-manager-verbose 2021-05-07 21:51:47 -07:00
alias.s [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
archive-export.ll [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
archive-no-index.s [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
archive-weak-undefined.ll [lld][WebAssembly] Implement --unresolved-symbols 2020-11-17 16:27:06 -08:00
archive.ll [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
bss-only.s [lld][WebAssembly] Don't emit names for data segments that we omit 2020-12-09 20:59:26 -08:00
bsymbolic.s [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
call-indirect.ll [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
check-arch-32-in-64.test [WebAssembly] Improved LLD error messages in case of mixed wasm32/wasm64 object files 2020-10-29 17:15:59 -07:00
check-arch-64-in-32.test [WebAssembly] Improved LLD error messages in case of mixed wasm32/wasm64 object files 2020-10-29 17:15:59 -07:00
comdat-sections.s [WebAssembly][lld] Exclude COMDAT sections 2020-12-10 17:47:41 -08:00
comdats.ll [lld][WebAssembly] Fix handling of comdat functions in init array. 2019-07-17 18:43:36 +00:00
command-exports-no-tors.s [WebAssembly] New-style command support 2020-09-30 19:02:40 -07:00
command-exports.s [WebAssembly] New-style command support 2020-09-30 19:02:40 -07:00
compress-relocs.ll [WebAssembly] call_indirect issues table number relocs 2021-03-01 16:49:00 +01:00
conflict.test [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
corrupted.wasm.test [Object][WebAssembly] Update format of error messages 2021-01-25 21:12:53 -08:00
ctor-gc-setup.test [WebAssembly] GC constructor functions in otherwise unused archive objects 2020-10-12 18:54:57 -07:00
ctor-gc.test [lld][WebAssembly] Don't GC library objects under `--whole-archive` 2020-10-12 21:19:19 -07:00
ctor-no-gc.test [WebAssembly] GC constructor functions in otherwise unused archive objects 2020-10-12 18:54:57 -07:00
ctor_return_value.s [WebAssembly] Add support for named globals in the object format. 2020-11-19 00:17:22 -08:00
custom-section-name.ll [WebAssembly] Elide data segments for .bss sections 2019-10-15 19:05:11 +00:00
custom-sections.ll
cxx-mangling.ll [WebAssembly] Add support for named globals in the object format. 2020-11-19 00:17:22 -08:00
data-layout.s [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
data-segment-merging.ll [lld][WebAssembly] Delay creation of internal __wasm_memory_init function 2020-12-10 10:47:18 -08:00
data-segments.ll [lld][WebAssembly] Delay the merging of data section when dynamic linking 2021-02-11 10:54:15 -08:00
debug-removed-fn.ll [FastISel] Flush local value map on every instruction 2021-01-11 08:32:36 -08:00
debuginfo-relocs.s [WebAssembly][lld] Fix crash when applying relocations to debug sections 2019-08-20 18:39:24 +00:00
debuginfo-undefined-global.s [lld][WebAssembly] Allow relocations against non-live global symbols 2021-04-28 10:29:41 -07:00
debuginfo.test [WebAssembly] Fixed byval args missing DWARF DW_AT_LOCATION 2021-01-07 10:31:38 -08:00
demangle.s [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
driver.ll [lld][WebAssembly] Do not require --shared-memory with --relocatable 2020-04-14 13:49:28 -07:00
early-exit-for-bad-paths.s [lld][WebAssembly] Add initial support for -Map/--print-map 2020-09-12 16:10:51 -07:00
emit-relocs-fpic.s [lld][WebAssembly] Error on import/export of mutable global without `mutable-globals` feature 2020-09-12 14:28:14 -07:00
emit-relocs.ll Reland "[lib/Support/YAMLTraits] - Don't print leading zeroes when dumping Hex8/Hex16/Hex32 types." (https://reviews.llvm.org/D90930). 2020-11-18 13:08:46 +03:00
entry-signature.s [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
entry.ll [WebAssembly] Don't export __data_end and __heap_base by default. 2019-05-31 22:51:59 +00:00
event-section.ll [WebAssembly] Handle event exports 2020-04-06 11:28:38 -07:00
export-all.ll
export-all.s [lld][WebAssembly] Fix --export-all when __stack_pointer is present 2020-09-15 06:17:01 -07:00
export-empty.test [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
export-if-defined.s [lld][WebAssembly] Add `--export-if-defined` 2021-04-29 10:58:45 -07:00
export-name.ll [WebAssembly] Support wasm exports with zero-length names. 2020-03-26 16:20:43 -07:00
export-optional-lazy.test [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
export-optional.s [lld][WebAssembly] Allow --export of optional start/stop symbols 2021-02-09 13:14:52 -08:00
export-table-explicit.test [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
export-table.test [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
export.s [lld][WebAssembly] Rewrite exports test in assembly. NFC 2021-04-05 11:14:12 -07:00
externref.s [WebAssembly] Add support for externalref to MC and wasm-ld 2020-06-22 15:57:24 -07:00
fatal-warnings.ll [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
function-imports-first.ll [WebAssembly] Add support for named globals in the object format. 2020-11-19 00:17:22 -08:00
function-imports.ll [WebAssembly] Add support for named globals in the object format. 2020-11-19 00:17:22 -08:00
function-index.test [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
gc-imports.s [WebAssembly] Add support for named globals in the object format. 2020-11-19 00:17:22 -08:00
gc-sections.ll [WebAssembly] Add support for named data sections in wasm binaries 2020-12-09 12:57:07 -08:00
global-base.test [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
globals.s Fix typo from https://reviews.llvm.org/D101399 2021-04-28 11:31:16 -07:00
growable-table.test [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
import-attribute-mismatch.s [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
import-memory.test [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
import-module.ll
import-name.ll [lld][WebAssembly] Allow symbols with explict import names to be undefined at link time. 2020-02-19 18:02:49 -08:00
import-table.test [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
init-fini-no-gc.ll [WebAssembly] New-style command support 2020-09-30 19:02:40 -07:00
init-fini.ll [WebAssembly] Add support for table linking to wasm-ld 2021-01-18 16:57:18 +01:00
invalid-mvp-table-use.s [WebAssembly][lld] Preassign table number 0 to indirect function table for MVP inputs 2021-02-12 20:20:19 +01:00
invalid-stack-size.test [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
large-memory.test [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
lit.local.cfg [WebAssembly] Fix list of relocations with addends in lld 2019-06-26 00:52:42 +00:00
load-undefined.test [WebAssembly] Add support for named globals in the object format. 2020-11-19 00:17:22 -08:00
local-symbols.ll [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
locals-duplicate.test [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
many-functions.ll Reland "[lib/Support/YAMLTraits] - Don't print leading zeroes when dumping Hex8/Hex16/Hex32 types." (https://reviews.llvm.org/D90930). 2020-11-18 13:08:46 +03:00
map-file.s [lld][WebAssembly] Fix segfault in map file support 2021-02-09 14:42:43 -08:00
merge-string.s [lld][WebAssembly] Allow data symbols to extend past end of segment 2021-05-12 13:43:37 -07:00
multi-table.s [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
multivalue-return-func-types.s [lld][WebAssembly] Emit all return types of multivalue functions 2020-08-12 13:14:15 -07:00
mutable-global-exports.s [lld][WebAssembly] Allow exporting of mutable globals 2020-09-30 17:53:27 -07:00
mutable-globals.s [lld][WebAssembly] Allow exporting of mutable globals 2020-09-30 17:53:27 -07:00
no-tls.s [lld][WebAssembly] Delay creation of internal __wasm_memory_init function 2020-12-10 10:47:18 -08:00
optional-symbol.s [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
pic-static.ll [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
pie.ll [lld][WebAssembly] Fix crash with `-pie` without `--allow-undefined` 2021-05-03 18:04:55 -07:00
reloc-addend.s [lld][WebAssembly] Remove relocation target verification 2021-05-11 12:05:14 -07:00
reloc-relative.s [WebAssembly] Add new relocation for location relative data 2021-03-08 11:34:10 -08:00
relocatable-comdat.s [lld][WebAssembly] Do not merge comdat data segments 2021-05-03 16:43:29 -07:00
relocatable-options.test [lld][WebAssembly] Fix resolveIndirectFunctionTable for relocatable output 2021-02-18 09:33:54 +01:00
relocatable.ll [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
relocation-bad-tls.s [lld] Use %t file in test 2020-11-16 10:49:38 +01:00
reproduce.ll Fix test to put its outputs into the temp directory. 2019-05-21 19:41:19 +00:00
responsefile.test [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
section-symbol-relocs.yaml [WebAssembly] Add support for table linking to wasm-ld 2021-01-18 16:57:18 +01:00
shared-export-dynamic.s [lld][WebAssembly] Convert more tests to asm format. NFC 2021-05-03 17:16:31 -07:00
shared-memory-no-atomics.yaml [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
shared-memory.yaml [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
shared-needed.s [lld][WebAssembly] Convert more tests to asm format. NFC 2021-05-03 17:16:31 -07:00
shared.s [lld][WebAssembly] Convert more tests to asm format. NFC 2021-05-03 17:16:31 -07:00
signature-mismatch-export.ll [WebAssembly] Add support for named globals in the object format. 2020-11-19 00:17:22 -08:00
signature-mismatch-relocatable.s [lld][WebAssembly] Fix for --relocatable and signature mismatches 2020-05-13 10:27:09 -07:00
signature-mismatch-unknown.ll [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
signature-mismatch-weak.ll [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
signature-mismatch.ll [lld][WebAssembly] Don't defined indirect function table in relocatable output 2021-01-19 12:59:20 -08:00
stack-first.test [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
stack-pointer.ll [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
startstop.ll [lld][WebAssembly] Fix __start/__stop symbols when combining input segments 2019-07-08 10:35:08 +00:00
strip-all.test [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
strip-debug.test [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
symbol-type-mismatch.s [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
target-feature-disallowed.yaml [WebAssembly] Add support for named globals in the object format. 2020-11-19 00:17:22 -08:00
target-feature-none.yaml [WebAssembly] Add support for named globals in the object format. 2020-11-19 00:17:22 -08:00
target-feature-required.yaml [WebAssembly] Add support for named globals in the object format. 2020-11-19 00:17:22 -08:00
target-feature-used.yaml [WebAssembly] Add support for named globals in the object format. 2020-11-19 00:17:22 -08:00
threads.s [lld][COFF][ELF][WebAssembly] Replace --[no-]threads /threads[:no] with --threads={1,2,...} /threads:{1,2,...} 2020-03-31 08:46:12 -07:00
tls-align.s [lld][WebAssembly] Convert TLS tests to asm format 2020-11-10 11:38:53 -08:00
tls-export.s [lld][WebAssembly] Disallow exporting of TLS symbols 2021-05-10 09:58:44 -07:00
tls-no-shared.s [lld][WebAssembly] Delay the merging of data section when dynamic linking 2021-02-11 10:54:15 -08:00
tls.s [WebAssembly] Add TLS data segment flag: WASM_SEG_FLAG_TLS 2021-05-12 13:31:02 -07:00
trace-symbol.ll [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
trace.test [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
undefined-data.s [lld][WebAssembly] Convert more tests to asm format. NFC. 2020-11-19 16:57:00 -08:00
undefined-entry.test [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
undefined-weak-call.s [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
undefined.ll [lld][WebAssembly] Report undefined symbols during scanRelocations 2019-07-09 20:45:20 +00:00
unresolved-symbols.s [lld][WebAssembly] Implement --unresolved-symbols 2020-11-17 16:27:06 -08:00
version.s [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
visibility-hidden.ll [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
weak-alias-overide.ll [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
weak-alias.ll [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
weak-and-strong-undef.s [lld][WebAssembly] Handle mixed strong and weak undefined symbols 2020-02-28 10:16:10 -08:00
weak-symbols.s [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
weak-undefined-pic.s Revert "[lld][WebAssembly] Fix for weak undefined functions in -pie mode" 2021-02-12 09:04:18 -08:00
weak-undefined.s [WebAssembly] Rename WasmLimits::Initial to ::Minimum. NFC. 2021-03-24 09:10:11 +01:00
whole-archive.test [lld][WebAssembly] Convert some lld tests to assembly 2020-05-28 16:52:01 -07:00
wrap.ll Reland "[lib/Support/YAMLTraits] - Don't print leading zeroes when dumping Hex8/Hex16/Hex32 types." (https://reviews.llvm.org/D90930). 2020-11-18 13:08:46 +03:00