diff options
| author | Dan Gohman <dan433584@gmail.com> | 2019-02-07 22:03:32 +0000 |
|---|---|---|
| committer | Dan Gohman <dan433584@gmail.com> | 2019-02-07 22:03:32 +0000 |
| commit | 29874cea31cee5b1fc2c5b54544921f9eff8f366 (patch) | |
| tree | f7d4a1afb2dffcbc9b5154d2417dcf344d5c6f71 /llvm/tools | |
| parent | 9b84eeaa3ee8db9ab2640ec7305843ac800119dc (diff) | |
| download | bcm5719-llvm-29874cea31cee5b1fc2c5b54544921f9eff8f366.tar.gz bcm5719-llvm-29874cea31cee5b1fc2c5b54544921f9eff8f366.zip | |
[WebAssembly] Fix imported function symbol names that differ from their import names in the .o format
Add a flag to allow symbols to have a wasm import name which differs from the
linker symbol name, allowing the linker to link code using the import_module
attribute.
This is the MC/Object portion of the patch.
Differential Revision: https://reviews.llvm.org/D57632
llvm-svn: 353474
Diffstat (limited to 'llvm/tools')
| -rw-r--r-- | llvm/tools/llvm-readobj/WasmDumper.cpp | 6 | ||||
| -rw-r--r-- | llvm/tools/yaml2obj/yaml2wasm.cpp | 3 |
2 files changed, 6 insertions, 3 deletions
diff --git a/llvm/tools/llvm-readobj/WasmDumper.cpp b/llvm/tools/llvm-readobj/WasmDumper.cpp index 9ff222e9607..edcd0731553 100644 --- a/llvm/tools/llvm-readobj/WasmDumper.cpp +++ b/llvm/tools/llvm-readobj/WasmDumper.cpp @@ -224,8 +224,10 @@ void WasmDumper::printSymbol(const SymbolRef &Sym) { W.printEnum("Type", Symbol.Info.Kind, makeArrayRef(WasmSymbolTypes)); W.printFlags("Flags", Symbol.Info.Flags, makeArrayRef(WasmSymbolFlags)); - if (Symbol.Info.Flags & wasm::WASM_SYMBOL_UNDEFINED) - W.printString("Module", Symbol.Info.Module); + if (Symbol.Info.Flags & wasm::WASM_SYMBOL_UNDEFINED) { + W.printString("ImportName", Symbol.Info.ImportName); + W.printString("ImportModule", Symbol.Info.ImportModule); + } if (Symbol.Info.Kind != wasm::WASM_SYMBOL_TYPE_DATA) { W.printHex("ElementIndex", Symbol.Info.ElementIndex); } else if (!(Symbol.Info.Flags & wasm::WASM_SYMBOL_UNDEFINED)) { diff --git a/llvm/tools/yaml2obj/yaml2wasm.cpp b/llvm/tools/yaml2obj/yaml2wasm.cpp index a0600c68d91..3398ace3e1e 100644 --- a/llvm/tools/yaml2obj/yaml2wasm.cpp +++ b/llvm/tools/yaml2obj/yaml2wasm.cpp @@ -172,7 +172,8 @@ int WasmWriter::writeSectionContent(raw_ostream &OS, case wasm::WASM_SYMBOL_TYPE_GLOBAL: case wasm::WASM_SYMBOL_TYPE_EVENT: encodeULEB128(Info.ElementIndex, SubSection.getStream()); - if ((Info.Flags & wasm::WASM_SYMBOL_UNDEFINED) == 0) + if ((Info.Flags & wasm::WASM_SYMBOL_UNDEFINED) == 0 || + (Info.Flags & wasm::WASM_SYMBOL_EXPLICIT_NAME) != 0) writeStringRef(Info.Name, SubSection.getStream()); break; case wasm::WASM_SYMBOL_TYPE_DATA: |

