blob: da97a10553a55cb542df8b169cf5bdf979c0a0a8 [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()
18 : Reader(*this)
19 , _deadStrip(false)
20 , _globalsAreDeadStripRoots(false)
21 , _searchArchivesToOverrideTentativeDefinitions(false)
22 , _searchSharedLibrariesToOverrideTentativeDefinitions(false)
23 , _warnIfCoalesableAtomsHaveDifferentCanBeNull(false)
24 , _warnIfCoalesableAtomsHaveDifferentLoadName(false)
25 , _forceLoadAllArchives(false)
26 , _printRemainingUndefines(true)
27 , _allowRemainingUndefines(false)
Michael J. Spencer096ea032013-04-05 21:07:44 +000028 , _logInputFiles(false)
Nick Kledzikc314b462013-04-04 18:59:24 +000029{
30}
31
Michael J. Spencerd68d6192013-01-22 02:15:30 +000032TargetInfo::~TargetInfo() {}
33
Nick Kledzikc314b462013-04-04 18:59:24 +000034
35error_code TargetInfo::readFile(StringRef path,
36 std::vector<std::unique_ptr<File>> &result) const {
37 OwningPtr<llvm::MemoryBuffer> opmb;
38 if (error_code ec = llvm::MemoryBuffer::getFileOrSTDIN(path, opmb))
39 return ec;
40
41 std::unique_ptr<MemoryBuffer> mb(opmb.take());
42 return this->parseFile(mb, result);
Michael J. Spencerd68d6192013-01-22 02:15:30 +000043}
44
Nick Kledzikc314b462013-04-04 18:59:24 +000045error_code TargetInfo::writeFile(const File &linkedFile) const {
46 return this->writer().writeFile(linkedFile, _outputPath);
Michael J. Spencerd68d6192013-01-22 02:15:30 +000047}
48
Nick Kledzikc314b462013-04-04 18:59:24 +000049void TargetInfo::addImplicitFiles(InputFiles& inputs) const {
50 this->writer().addFiles(inputs);
Michael J. Spencerd68d6192013-01-22 02:15:30 +000051}
52
Nick Kledzikc314b462013-04-04 18:59:24 +000053void TargetInfo::addPasses(PassManager &pm) const {
Michael J. Spencerd68d6192013-01-22 02:15:30 +000054}
Nick Kledzikc314b462013-04-04 18:59:24 +000055
56
Michael J. Spencerd68d6192013-01-22 02:15:30 +000057} // end namespace lld