Revert "[WebAssembly] Improve invalid relocation error message"

This reverts commit 0805ec5f7b.

llvm-svn: 357225
This commit is contained in:
Derek Schuff 2019-03-29 00:05:00 +00:00
parent ac727e8647
commit 0c9ea10530
4 changed files with 14 additions and 21 deletions

View File

@ -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

View File

@ -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: \

View File

@ -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

View File

@ -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");
}
}
}
} }
} }