diff options
Diffstat (limited to 'llvm/lib/Object/WasmObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/WasmObjectFile.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/llvm/lib/Object/WasmObjectFile.cpp b/llvm/lib/Object/WasmObjectFile.cpp index d2d3aba..3b62ccf 100644 --- a/llvm/lib/Object/WasmObjectFile.cpp +++ b/llvm/lib/Object/WasmObjectFile.cpp @@ -767,15 +767,17 @@ uint32_t WasmObjectFile::getSymbolFlags(DataRefImpl Symb) const { const WasmSymbol &Sym = getWasmSymbol(Symb); DEBUG(dbgs() << "getSymbolFlags: ptr=" << &Sym << " " << Sym << "\n"); - if (Sym.Flags & wasm::WASM_SYMBOL_FLAG_WEAK) + if (Sym.isWeak()) Result |= SymbolRef::SF_Weak; + else if (Sym.isGlobal()) + Result |= SymbolRef::SF_Global; switch (Sym.Type) { case WasmSymbol::SymbolType::FUNCTION_IMPORT: Result |= SymbolRef::SF_Undefined | SymbolRef::SF_Executable; break; case WasmSymbol::SymbolType::FUNCTION_EXPORT: - Result |= SymbolRef::SF_Global | SymbolRef::SF_Executable; + Result |= SymbolRef::SF_Executable; break; case WasmSymbol::SymbolType::DEBUG_FUNCTION_NAME: Result |= SymbolRef::SF_Executable; @@ -785,7 +787,6 @@ uint32_t WasmObjectFile::getSymbolFlags(DataRefImpl Symb) const { Result |= SymbolRef::SF_Undefined; break; case WasmSymbol::SymbolType::GLOBAL_EXPORT: - Result |= SymbolRef::SF_Global; break; } @@ -820,8 +821,7 @@ Expected<uint64_t> WasmObjectFile::getSymbolAddress(DataRefImpl Symb) const { return getSymbolValue(Symb); } -uint64_t WasmObjectFile::getSymbolValueImpl(DataRefImpl Symb) const { - const WasmSymbol& Sym = getWasmSymbol(Symb); +uint64_t WasmObjectFile::getWasmSymbolValue(const WasmSymbol& Sym) const { switch (Sym.Type) { case WasmSymbol::SymbolType::FUNCTION_IMPORT: case WasmSymbol::SymbolType::GLOBAL_IMPORT: @@ -842,6 +842,10 @@ uint64_t WasmObjectFile::getSymbolValueImpl(DataRefImpl Symb) const { llvm_unreachable("invalid symbol type"); } +uint64_t WasmObjectFile::getSymbolValueImpl(DataRefImpl Symb) const { + return getWasmSymbolValue(getWasmSymbol(Symb)); +} + uint32_t WasmObjectFile::getSymbolAlignment(DataRefImpl Symb) const { llvm_unreachable("not yet implemented"); return 0; |