diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:48:50 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:48:50 +0000 |
commit | 1c98619801a5705c688e683be3ef9d70169a0686 (patch) | |
tree | 8422105cd1a94c368315f2db16b9ac746cf7c000 /lib/Core/LinkingContext.cpp | |
parent | f4f3ce4613680903220815690ad79fc7ba0a2e26 (diff) |
Notes
Diffstat (limited to 'lib/Core/LinkingContext.cpp')
-rw-r--r-- | lib/Core/LinkingContext.cpp | 47 |
1 files changed, 6 insertions, 41 deletions
diff --git a/lib/Core/LinkingContext.cpp b/lib/Core/LinkingContext.cpp index cbcf25c17df2..2732543d306e 100644 --- a/lib/Core/LinkingContext.cpp +++ b/lib/Core/LinkingContext.cpp @@ -7,7 +7,6 @@ // //===----------------------------------------------------------------------===// -#include "lld/Core/Alias.h" #include "lld/Core/LinkingContext.h" #include "lld/Core/Resolver.h" #include "lld/Core/Simple.h" @@ -16,16 +15,7 @@ namespace lld { -LinkingContext::LinkingContext() - : _deadStrip(false), _allowDuplicates(false), - _globalsAreDeadStripRoots(false), - _searchArchivesToOverrideTentativeDefinitions(false), - _searchSharedLibrariesToOverrideTentativeDefinitions(false), - _warnIfCoalesableAtomsHaveDifferentCanBeNull(false), - _warnIfCoalesableAtomsHaveDifferentLoadName(false), - _printRemainingUndefines(true), _allowRemainingUndefines(false), - _logInputFiles(false), _allowShlibUndefines(true), - _outputFileType(OutputFileType::Default), _nextOrdinal(0) {} +LinkingContext::LinkingContext() {} LinkingContext::~LinkingContext() {} @@ -33,15 +23,10 @@ bool LinkingContext::validate(raw_ostream &diagnostics) { return validateImpl(diagnostics); } -std::error_code LinkingContext::writeFile(const File &linkedFile) const { +llvm::Error LinkingContext::writeFile(const File &linkedFile) const { return this->writer().writeFile(linkedFile, _outputPath); } -void LinkingContext::createImplicitFiles( - std::vector<std::unique_ptr<File>> &result) { - this->writer().createImplicitFiles(result); -} - std::unique_ptr<File> LinkingContext::createEntrySymbolFile() const { return createEntrySymbolFile("<command line option -e>"); } @@ -50,7 +35,8 @@ std::unique_ptr<File> LinkingContext::createEntrySymbolFile(StringRef filename) const { if (entrySymbolName().empty()) return nullptr; - std::unique_ptr<SimpleFile> entryFile(new SimpleFile(filename)); + std::unique_ptr<SimpleFile> entryFile(new SimpleFile(filename, + File::kindEntryObject)); entryFile->addAtom( *(new (_allocator) SimpleUndefinedAtom(*entryFile, entrySymbolName()))); return std::move(entryFile); @@ -64,41 +50,20 @@ std::unique_ptr<File> LinkingContext::createUndefinedSymbolFile(StringRef filename) const { if (_initialUndefinedSymbols.empty()) return nullptr; - std::unique_ptr<SimpleFile> undefinedSymFile(new SimpleFile(filename)); + std::unique_ptr<SimpleFile> undefinedSymFile( + new SimpleFile(filename, File::kindUndefinedSymsObject)); for (StringRef undefSym : _initialUndefinedSymbols) undefinedSymFile->addAtom(*(new (_allocator) SimpleUndefinedAtom( *undefinedSymFile, undefSym))); return std::move(undefinedSymFile); } -std::unique_ptr<File> LinkingContext::createAliasSymbolFile() const { - if (getAliases().empty()) - return nullptr; - std::unique_ptr<SimpleFile> file(new SimpleFile("<alias>")); - for (const auto &i : getAliases()) { - StringRef from = i.first; - StringRef to = i.second; - SimpleDefinedAtom *fromAtom = new (_allocator) AliasAtom(*file, from); - UndefinedAtom *toAtom = new (_allocator) SimpleUndefinedAtom(*file, to); - fromAtom->addReference(Reference::KindNamespace::all, - Reference::KindArch::all, Reference::kindLayoutAfter, - 0, toAtom, 0); - file->addAtom(*fromAtom); - file->addAtom(*toAtom); - } - return std::move(file); -} - void LinkingContext::createInternalFiles( std::vector<std::unique_ptr<File> > &result) const { if (std::unique_ptr<File> file = createEntrySymbolFile()) result.push_back(std::move(file)); if (std::unique_ptr<File> file = createUndefinedSymbolFile()) result.push_back(std::move(file)); - if (std::unique_ptr<File> file = createAliasSymbolFile()) - result.push_back(std::move(file)); } -void LinkingContext::addPasses(PassManager &pm) {} - } // end namespace lld |