summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/include/lld/Core/Simple.h17
-rw-r--r--lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp19
-rw-r--r--lld/lib/ReaderWriter/PECOFF/Atoms.h17
-rw-r--r--lld/lib/ReaderWriter/PECOFF/LinkerGeneratedSymbolFile.h2
-rw-r--r--lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp5
5 files changed, 22 insertions, 38 deletions
diff --git a/lld/include/lld/Core/Simple.h b/lld/include/lld/Core/Simple.h
index e193f70218c..73b70d64084 100644
--- a/lld/include/lld/Core/Simple.h
+++ b/lld/include/lld/Core/Simple.h
@@ -276,6 +276,23 @@ private:
StringRef _name;
};
+class SimpleAbsoluteAtom : public AbsoluteAtom {
+public:
+ SimpleAbsoluteAtom(const File &f, StringRef name, Scope s, uint64_t value)
+ : _file(f), _name(name), _scope(s), _value(value) {}
+
+ const File &file() const override { return _file; }
+ StringRef name() const override { return _name; }
+ uint64_t value() const override { return _value; }
+ Scope scope() const override { return _scope; }
+
+private:
+ const File &_file;
+ StringRef _name;
+ Scope _scope;
+ uint64_t _value;
+};
+
} // end namespace lld
#endif
diff --git a/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp b/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp
index a2059e4e5b0..ae995c97017 100644
--- a/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp
+++ b/lld/lib/ReaderWriter/ELF/ELFLinkingContext.cpp
@@ -27,22 +27,6 @@
namespace lld {
-class CommandLineAbsoluteAtom : public AbsoluteAtom {
-public:
- CommandLineAbsoluteAtom(const File &file, StringRef name, uint64_t value)
- : _file(file), _name(name), _value(value) {}
-
- const File &file() const override { return _file; }
- StringRef name() const override { return _name; }
- uint64_t value() const override { return _value; }
- Scope scope() const override { return scopeGlobal; }
-
-private:
- const File &_file;
- StringRef _name;
- uint64_t _value;
-};
-
class CommandLineUndefinedAtom : public SimpleUndefinedAtom {
public:
CommandLineUndefinedAtom(const File &f, StringRef name)
@@ -197,7 +181,8 @@ void ELFLinkingContext::createInternalFiles(
for (auto &i : getAbsoluteSymbols()) {
StringRef sym = i.first;
uint64_t val = i.second;
- file->addAtom(*(new (_allocator) CommandLineAbsoluteAtom(*file, sym, val)));
+ file->addAtom(*(new (_allocator) SimpleAbsoluteAtom(
+ *file, sym, Atom::scopeGlobal, val)));
}
files.push_back(std::move(file));
LinkingContext::createInternalFiles(files);
diff --git a/lld/lib/ReaderWriter/PECOFF/Atoms.h b/lld/lib/ReaderWriter/PECOFF/Atoms.h
index 6fd265313ad..257edc17884 100644
--- a/lld/lib/ReaderWriter/PECOFF/Atoms.h
+++ b/lld/lib/ReaderWriter/PECOFF/Atoms.h
@@ -20,23 +20,6 @@ namespace lld {
namespace pecoff {
class COFFDefinedAtom;
-class COFFAbsoluteAtom : public AbsoluteAtom {
-public:
- COFFAbsoluteAtom(const File &f, StringRef name, Scope scope, uint64_t value)
- : _owningFile(f), _name(name), _scope(scope), _value(value) {}
-
- const File &file() const override { return _owningFile; }
- Scope scope() const override { return _scope; }
- StringRef name() const override { return _name; }
- uint64_t value() const override { return _value; }
-
-private:
- const File &_owningFile;
- StringRef _name;
- Scope _scope;
- uint64_t _value;
-};
-
class COFFUndefinedAtom : public UndefinedAtom {
public:
COFFUndefinedAtom(const File &file, StringRef name,
diff --git a/lld/lib/ReaderWriter/PECOFF/LinkerGeneratedSymbolFile.h b/lld/lib/ReaderWriter/PECOFF/LinkerGeneratedSymbolFile.h
index 5a9c829ecea..4342abc1df3 100644
--- a/lld/lib/ReaderWriter/PECOFF/LinkerGeneratedSymbolFile.h
+++ b/lld/lib/ReaderWriter/PECOFF/LinkerGeneratedSymbolFile.h
@@ -137,7 +137,7 @@ public:
};
private:
- COFFAbsoluteAtom _imageBaseAtom;
+ SimpleAbsoluteAtom _imageBaseAtom;
};
// A LocallyImporteSymbolFile is an archive file containing __imp_
diff --git a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
index 40b4cbdac91..595b0cc7fac 100644
--- a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
+++ b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
@@ -39,7 +39,6 @@
#define DEBUG_TYPE "ReaderCOFF"
-using lld::pecoff::COFFAbsoluteAtom;
using lld::pecoff::COFFBSSAtom;
using lld::pecoff::COFFDefinedAtom;
using lld::pecoff::COFFDefinedFileAtom;
@@ -440,8 +439,8 @@ void FileCOFF::createAbsoluteAtoms(const SymbolVectorT &symbols,
for (llvm::object::COFFSymbolRef sym : symbols) {
if (sym.getSectionNumber() != llvm::COFF::IMAGE_SYM_ABSOLUTE)
continue;
- auto *atom = new (_alloc) COFFAbsoluteAtom(*this, _symbolName[sym],
- getScope(sym), sym.getValue());
+ auto *atom = new (_alloc) SimpleAbsoluteAtom(*this, _symbolName[sym],
+ getScope(sym), sym.getValue());
result.push_back(atom);
_symbolAtom[sym] = atom;
OpenPOWER on IntegriCloud