blob: e5d936fe517ee8c53860efbbee614ddf603d49da [file] [log] [blame]
Michael J. Spencerd68d6192013-01-22 02:15:30 +00001//===- lib/Core/TargetInfo.cpp - Linker Target Info Interface -------------===//
2//
3// The LLVM Linker
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "lld/Core/TargetInfo.h"
Nick Kledzikc314b462013-04-04 18:59:24 +000011#include "lld/ReaderWriter/Writer.h"
Michael J. Spencerd68d6192013-01-22 02:15:30 +000012
13#include "llvm/ADT/Triple.h"
14
15namespace lld {
Nick Kledzikc314b462013-04-04 18:59:24 +000016
17TargetInfo::TargetInfo()
Shankar Easwaraneeee23e2013-04-11 02:56:30 +000018 : Reader(*this), _deadStrip(false), _globalsAreDeadStripRoots(false),
19 _searchArchivesToOverrideTentativeDefinitions(false),
20 _searchSharedLibrariesToOverrideTentativeDefinitions(false),
21 _warnIfCoalesableAtomsHaveDifferentCanBeNull(false),
22 _warnIfCoalesableAtomsHaveDifferentLoadName(false),
23 _forceLoadAllArchives(false), _printRemainingUndefines(true),
24 _allowRemainingUndefines(false), _logInputFiles(false),
25 _allowShlibUndefines(false) {}
Nick Kledzikc314b462013-04-04 18:59:24 +000026
Michael J. Spencerd68d6192013-01-22 02:15:30 +000027TargetInfo::~TargetInfo() {}
28
Nick Kledzikc314b462013-04-04 18:59:24 +000029error_code TargetInfo::readFile(StringRef path,
30 std::vector<std::unique_ptr<File>> &result) const {
31 OwningPtr<llvm::MemoryBuffer> opmb;
32 if (error_code ec = llvm::MemoryBuffer::getFileOrSTDIN(path, opmb))
33 return ec;
Michael J. Spencerce1e53e2013-04-05 21:08:30 +000034
Michael J. Spencere6d56092013-04-05 22:04:44 +000035 std::unique_ptr<MemoryBuffer> mb(opmb.take());
36 return this->parseFile(mb, result);
Michael J. Spencerd68d6192013-01-22 02:15:30 +000037}
38
Nick Kledzikc314b462013-04-04 18:59:24 +000039error_code TargetInfo::writeFile(const File &linkedFile) const {
40 return this->writer().writeFile(linkedFile, _outputPath);
Michael J. Spencerd68d6192013-01-22 02:15:30 +000041}
42
Nick Kledzikc314b462013-04-04 18:59:24 +000043void TargetInfo::addImplicitFiles(InputFiles& inputs) const {
44 this->writer().addFiles(inputs);
Michael J. Spencerd68d6192013-01-22 02:15:30 +000045}
46
Nick Kledzikc314b462013-04-04 18:59:24 +000047void TargetInfo::addPasses(PassManager &pm) const {
Michael J. Spencerd68d6192013-01-22 02:15:30 +000048}
Nick Kledzikc314b462013-04-04 18:59:24 +000049
50
Michael J. Spencerd68d6192013-01-22 02:15:30 +000051} // end namespace lld