forked from OSchip/llvm-project
[lld][WebAssembly] Give better warnings on bad relocation sites
Differential Revision: https://reviews.llvm.org/D90443
This commit is contained in:
parent
2e31727a88
commit
9d1409df87
|
@ -0,0 +1,75 @@
|
|||
# RUN: yaml2obj %s -o %t.o
|
||||
# RUN: not wasm-ld --fatal-warnings -o out.wasm %t.o 2>&1 | FileCheck %s
|
||||
#
|
||||
# CHECK: bad-reloc.yaml.tmp.o:(_start): unexpected existing value for R_WASM_MEMORY_ADDR_LEB: existing=1 expected=0
|
||||
#
|
||||
# The code section bellow has been modified such that the target of the
|
||||
# relocation is 8180808000 (LEB of 1) rather than 8080808000 (LEB = 0)
|
||||
|
||||
--- !WASM
|
||||
FileHeader:
|
||||
Version: 0x00000001
|
||||
Sections:
|
||||
- Type: TYPE
|
||||
Signatures:
|
||||
- Index: 0
|
||||
ParamTypes: []
|
||||
ReturnTypes:
|
||||
- I32
|
||||
- Type: IMPORT
|
||||
Imports:
|
||||
- Module: env
|
||||
Field: __linear_memory
|
||||
Kind: MEMORY
|
||||
Memory:
|
||||
Initial: 0x00000001
|
||||
- Module: env
|
||||
Field: __indirect_function_table
|
||||
Kind: TABLE
|
||||
Table:
|
||||
Index: 0
|
||||
ElemType: FUNCREF
|
||||
Limits:
|
||||
Initial: 0x00000000
|
||||
- Type: FUNCTION
|
||||
FunctionTypes: [ 0 ]
|
||||
- Type: DATACOUNT
|
||||
Count: 1
|
||||
- Type: CODE
|
||||
Relocations:
|
||||
- Type: R_WASM_MEMORY_ADDR_LEB
|
||||
Index: 1
|
||||
Offset: 0x00000007
|
||||
Functions:
|
||||
- Index: 0
|
||||
Locals: []
|
||||
Body: 4100280281808080002802000B
|
||||
- Type: DATA
|
||||
Segments:
|
||||
- SectionOffset: 6
|
||||
InitFlags: 0
|
||||
Offset:
|
||||
Opcode: I32_CONST
|
||||
Value: 0
|
||||
Content: '00000000'
|
||||
- Type: CUSTOM
|
||||
Name: linking
|
||||
Version: 2
|
||||
SymbolTable:
|
||||
- Index: 0
|
||||
Kind: FUNCTION
|
||||
Name: _start
|
||||
Flags: [ VISIBILITY_HIDDEN ]
|
||||
Function: 0
|
||||
- Index: 1
|
||||
Kind: DATA
|
||||
Name: bar
|
||||
Flags: [ VISIBILITY_HIDDEN ]
|
||||
Segment: 0
|
||||
Size: 4
|
||||
SegmentInfo:
|
||||
- Index: 0
|
||||
Name: .bss.bar
|
||||
Alignment: 2
|
||||
Flags: [ ]
|
||||
|
|
@ -109,9 +109,9 @@ void InputChunk::verifyRelocTargets() const {
|
|||
rel.Type != R_WASM_GLOBAL_INDEX_I32) {
|
||||
auto expectedValue = file->calcExpectedValue(rel);
|
||||
if (expectedValue != existingValue)
|
||||
warn("unexpected existing value for " + relocTypeToString(rel.Type) +
|
||||
": existing=" + Twine(existingValue) +
|
||||
" expected=" + Twine(expectedValue));
|
||||
warn(toString(this) + ": unexpected existing value for " +
|
||||
relocTypeToString(rel.Type) + ": existing=" +
|
||||
Twine(existingValue) + " expected=" + Twine(expectedValue));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue