[WebAssebmly] Add Module name to WasmSymbol
authorSam Clegg <sbc@chromium.org>
Wed, 25 Apr 2018 18:24:08 +0000 (18:24 +0000)
committerSam Clegg <sbc@chromium.org>
Wed, 25 Apr 2018 18:24:08 +0000 (18:24 +0000)
Imports in a wasm module can have custom module name.  This change
adds the module name to the WasmSymbol structure so that the linker
can preserve this module name.

This is needed to fix: https://bugs.llvm.org/show_bug.cgi?id=37168

Differential Revision: https://reviews.llvm.org/D45797

llvm-svn: 330854

llvm/include/llvm/BinaryFormat/Wasm.h
llvm/lib/Object/WasmObjectFile.cpp

index 700bcd8..dc28a3c 100644 (file)
@@ -145,6 +145,7 @@ struct WasmSymbolInfo {
   StringRef Name;
   uint8_t Kind;
   uint32_t Flags;
+  StringRef Module; // For undefined symbols the module name of the import
   union {
     // For function or global symbols, the index in function or global index
     // space.
index 6eb0d05..3e8f73d 100644 (file)
@@ -412,6 +412,7 @@ Error WasmObjectFile::parseLinkingSectionSymtab(const uint8_t *&Ptr,
         wasm::WasmImport &Import = *ImportedFunctions[Info.ElementIndex];
         FunctionType = &Signatures[Import.SigIndex];
         Info.Name = Import.Field;
+        Info.Module = Import.Module;
       }
       break;