summaryrefslogtreecommitdiffstats
path: root/lld/wasm/SymbolTable.h
diff options
context:
space:
mode:
Diffstat (limited to 'lld/wasm/SymbolTable.h')
-rw-r--r--lld/wasm/SymbolTable.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/lld/wasm/SymbolTable.h b/lld/wasm/SymbolTable.h
index f03980d7066..3d0529af41d 100644
--- a/lld/wasm/SymbolTable.h
+++ b/lld/wasm/SymbolTable.h
@@ -49,6 +49,8 @@ public:
Symbol *find(StringRef Name);
+ void replace(StringRef Name, Symbol* Sym);
+
void trace(StringRef Name);
Symbol *addDefinedFunction(StringRef Name, uint32_t Flags, InputFile *File,
@@ -79,12 +81,15 @@ public:
DefinedFunction *addSyntheticFunction(StringRef Name, uint32_t Flags,
InputFunction *Function);
+ void handleSymbolVariants();
void handleWeakUndefines();
private:
std::pair<Symbol *, bool> insert(StringRef Name, const InputFile *File);
std::pair<Symbol *, bool> insertName(StringRef Name);
+ bool getFunctionVariant(Symbol* Sym, const WasmSignature *Sig,
+ const InputFile *File, Symbol **Out);
InputFunction *replaceWithUnreachable(Symbol *Sym, const WasmSignature &Sig,
StringRef DebugName);
@@ -94,6 +99,10 @@ private:
llvm::DenseMap<llvm::CachedHashStringRef, int> SymMap;
std::vector<Symbol *> SymVector;
+ // For certain symbols types, e.g. function symbols, we allow for muliple
+ // variants of the same symbol with different signatures.
+ llvm::DenseMap<llvm::CachedHashStringRef, std::vector<Symbol *>> SymVariants;
+
llvm::DenseSet<llvm::CachedHashStringRef> Comdats;
// For LTO.
OpenPOWER on IntegriCloud