diff options
author | Sam Clegg <sbc@chromium.org> | 2020-02-05 21:18:55 -0800 |
---|---|---|
committer | Sam Clegg <sbc@chromium.org> | 2020-02-19 17:25:33 -0800 |
commit | bd4812776bc73ca27bf6c68629a20f03268cdd6e (patch) | |
tree | e19e34c6a700d01e2830a49e1014cdaa265e3fc3 /llvm/lib/Object/WasmObjectFile.cpp | |
parent | 878159038b0cae2c9ca4180ea35f5e115e9570ce (diff) | |
download | llvm-bd4812776bc73ca27bf6c68629a20f03268cdd6e.zip llvm-bd4812776bc73ca27bf6c68629a20f03268cdd6e.tar.gz llvm-bd4812776bc73ca27bf6c68629a20f03268cdd6e.tar.bz2 |
[WebAssembly] Use llvm::Optional to store optional symbol attributes. NFC.
The changes the in-memory representation of wasm symbols such that their
optional ImportName and ImportModule use llvm::Optional.
ImportName is set whenever WASM_SYMBOL_EXPLICIT_NAME flag is set.
ImportModule (for imports) is currently always set since it defaults to
"env".
In the future we can possibly extent to binary format distingish
import which have explit module names.
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D74109
Diffstat (limited to 'llvm/lib/Object/WasmObjectFile.cpp')
-rw-r--r-- | llvm/lib/Object/WasmObjectFile.cpp | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/llvm/lib/Object/WasmObjectFile.cpp b/llvm/lib/Object/WasmObjectFile.cpp index 2e42324..ca11ec3 100644 --- a/llvm/lib/Object/WasmObjectFile.cpp +++ b/llvm/lib/Object/WasmObjectFile.cpp @@ -508,13 +508,16 @@ Error WasmObjectFile::parseLinkingSectionSymtab(ReadContext &Ctx) { Function.SymbolName = Info.Name; } else { wasm::WasmImport &Import = *ImportedFunctions[Info.ElementIndex]; - if ((Info.Flags & wasm::WASM_SYMBOL_EXPLICIT_NAME) != 0) + if ((Info.Flags & wasm::WASM_SYMBOL_EXPLICIT_NAME) != 0) { Info.Name = readString(Ctx); - else + Info.ImportName = Import.Field; + } else { Info.Name = Import.Field; + } Signature = &Signatures[Import.SigIndex]; - Info.ImportName = Import.Field; - Info.ImportModule = Import.Module; + if (!Import.Module.empty()) { + Info.ImportModule = Import.Module; + } } break; @@ -537,13 +540,17 @@ Error WasmObjectFile::parseLinkingSectionSymtab(ReadContext &Ctx) { Global.SymbolName = Info.Name; } else { wasm::WasmImport &Import = *ImportedGlobals[Info.ElementIndex]; - if ((Info.Flags & wasm::WASM_SYMBOL_EXPLICIT_NAME) != 0) + if ((Info.Flags & wasm::WASM_SYMBOL_EXPLICIT_NAME) != 0) { Info.Name = readString(Ctx); - else + Info.ImportName = Import.Field; + } else { Info.Name = Import.Field; + } GlobalType = &Import.Global; Info.ImportName = Import.Field; - Info.ImportModule = Import.Module; + if (!Import.Module.empty()) { + Info.ImportModule = Import.Module; + } } break; @@ -597,14 +604,17 @@ Error WasmObjectFile::parseLinkingSectionSymtab(ReadContext &Ctx) { } else { wasm::WasmImport &Import = *ImportedEvents[Info.ElementIndex]; - if ((Info.Flags & wasm::WASM_SYMBOL_EXPLICIT_NAME) != 0) + if ((Info.Flags & wasm::WASM_SYMBOL_EXPLICIT_NAME) != 0) { Info.Name = readString(Ctx); - else + Info.ImportName = Import.Field; + } else { Info.Name = Import.Field; + } EventType = &Import.Event; Signature = &Signatures[EventType->SigIndex]; - Info.ImportName = Import.Field; - Info.ImportModule = Import.Module; + if (!Import.Module.empty()) { + Info.ImportModule = Import.Module; + } } break; } |