summaryrefslogtreecommitdiff
path: root/lld/MachO/SymbolTable.h
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2020-07-26 19:36:28 +0000
committerDimitry Andric <dim@FreeBSD.org>2020-07-26 19:36:28 +0000
commitcfca06d7963fa0909f90483b42a6d7d194d01e08 (patch)
tree209fb2a2d68f8f277793fc8df46c753d31bc853b /lld/MachO/SymbolTable.h
parent706b4fc47bbc608932d3b491ae19a3b9cde9497b (diff)
Notes
Diffstat (limited to 'lld/MachO/SymbolTable.h')
-rw-r--r--lld/MachO/SymbolTable.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/lld/MachO/SymbolTable.h b/lld/MachO/SymbolTable.h
new file mode 100644
index 000000000000..2379008db56d
--- /dev/null
+++ b/lld/MachO/SymbolTable.h
@@ -0,0 +1,50 @@
+//===- SymbolTable.h --------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLD_MACHO_SYMBOL_TABLE_H
+#define LLD_MACHO_SYMBOL_TABLE_H
+
+#include "lld/Common/LLVM.h"
+#include "llvm/ADT/CachedHashString.h"
+#include "llvm/ADT/DenseMap.h"
+#include "llvm/Object/Archive.h"
+
+namespace lld {
+namespace macho {
+
+class ArchiveFile;
+class DylibFile;
+class InputSection;
+class Symbol;
+
+class SymbolTable {
+public:
+ Symbol *addDefined(StringRef name, InputSection *isec, uint32_t value);
+
+ Symbol *addUndefined(StringRef name);
+
+ Symbol *addDylib(StringRef name, DylibFile *file);
+
+ Symbol *addLazy(StringRef name, ArchiveFile *file,
+ const llvm::object::Archive::Symbol &sym);
+
+ ArrayRef<Symbol *> getSymbols() const { return symVector; }
+ Symbol *find(StringRef name);
+
+private:
+ std::pair<Symbol *, bool> insert(StringRef name);
+ llvm::DenseMap<llvm::CachedHashStringRef, int> symMap;
+ std::vector<Symbol *> symVector;
+};
+
+extern SymbolTable *symtab;
+
+} // namespace macho
+} // namespace lld
+
+#endif