forked from OSchip/llvm-project
Revert "[WebAssembly] Improve invalid relocation error message"
This reverts commit 0805ec5f7b
.
llvm-svn: 357225
This commit is contained in:
parent
ac727e8647
commit
0c9ea10530
|
@ -13,4 +13,4 @@ entry:
|
||||||
}
|
}
|
||||||
|
|
||||||
; UNDEF: undefined symbol: data_external
|
; UNDEF: undefined symbol: data_external
|
||||||
; BADRELOC: undefined-data.ll.tmp.o: relocation R_WASM_MEMORY_ADDR_LEB cannot be used againt symbol data_external; recompile with -fPIC
|
; BADRELOC: undefined-data.ll.tmp.o: relocation of type R_WASM_MEMORY_ADDR_* against undefined data symbol: data_external
|
||||||
|
|
|
@ -22,7 +22,7 @@ using namespace llvm::support::endian;
|
||||||
using namespace lld;
|
using namespace lld;
|
||||||
using namespace lld::wasm;
|
using namespace lld::wasm;
|
||||||
|
|
||||||
StringRef lld::reloctTypeToString(uint8_t RelocType) {
|
static StringRef reloctTypeToString(uint8_t RelocType) {
|
||||||
switch (RelocType) {
|
switch (RelocType) {
|
||||||
#define WASM_RELOC(NAME, REL) \
|
#define WASM_RELOC(NAME, REL) \
|
||||||
case REL: \
|
case REL: \
|
||||||
|
|
|
@ -218,8 +218,6 @@ protected:
|
||||||
} // namespace wasm
|
} // namespace wasm
|
||||||
|
|
||||||
std::string toString(const wasm::InputChunk *);
|
std::string toString(const wasm::InputChunk *);
|
||||||
StringRef reloctTypeToString(uint8_t RelocType);
|
|
||||||
|
|
||||||
} // namespace lld
|
} // namespace lld
|
||||||
|
|
||||||
#endif // LLD_WASM_INPUT_CHUNKS_H
|
#endif // LLD_WASM_INPUT_CHUNKS_H
|
||||||
|
|
|
@ -1141,6 +1141,18 @@ void Writer::processRelocations(InputChunk *Chunk) {
|
||||||
File->TypeMap[Reloc.Index] = registerType(Types[Reloc.Index]);
|
File->TypeMap[Reloc.Index] = registerType(Types[Reloc.Index]);
|
||||||
File->TypeIsUsed[Reloc.Index] = true;
|
File->TypeIsUsed[Reloc.Index] = true;
|
||||||
break;
|
break;
|
||||||
|
case R_WASM_MEMORY_ADDR_SLEB:
|
||||||
|
case R_WASM_MEMORY_ADDR_I32:
|
||||||
|
case R_WASM_MEMORY_ADDR_LEB: {
|
||||||
|
DataSymbol *DataSym = File->getDataSymbol(Reloc.Index);
|
||||||
|
if (!Config->Relocatable && !isa<DefinedData>(DataSym) &&
|
||||||
|
!DataSym->isWeak())
|
||||||
|
error(File->getName() +
|
||||||
|
": relocation of type R_WASM_MEMORY_ADDR_* "
|
||||||
|
"against undefined data symbol: " +
|
||||||
|
DataSym->getName());
|
||||||
|
break;
|
||||||
|
}
|
||||||
case R_WASM_GLOBAL_INDEX_LEB: {
|
case R_WASM_GLOBAL_INDEX_LEB: {
|
||||||
auto* Sym = File->getSymbols()[Reloc.Index];
|
auto* Sym = File->getSymbols()[Reloc.Index];
|
||||||
if (!isa<GlobalSymbol>(Sym) && !Sym->isInGOT()) {
|
if (!isa<GlobalSymbol>(Sym) && !Sym->isInGOT()) {
|
||||||
|
@ -1149,23 +1161,6 @@ void Writer::processRelocations(InputChunk *Chunk) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Config->Relocatable) {
|
|
||||||
switch (Reloc.Type) {
|
|
||||||
// These relocations types appear the code section.
|
|
||||||
// They should never appear in code compiled with -fPIC.
|
|
||||||
case R_WASM_TABLE_INDEX_SLEB:
|
|
||||||
case R_WASM_MEMORY_ADDR_I32:
|
|
||||||
case R_WASM_MEMORY_ADDR_LEB: {
|
|
||||||
auto *Sym = File->getSymbols()[Reloc.Index];
|
|
||||||
if (Sym->isUndefined() && !Sym->isWeak())
|
|
||||||
error(File->getName() + ": relocation " +
|
|
||||||
reloctTypeToString(Reloc.Type) +
|
|
||||||
" cannot be used againt symbol " + Sym->getName() +
|
|
||||||
"; recompile with -fPIC");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue