Index: lld/trunk/include/lld/Core/Alias.h =================================================================== --- lld/trunk/include/lld/Core/Alias.h +++ lld/trunk/include/lld/Core/Alias.h @@ -0,0 +1,103 @@ +//===- lld/Core/Alias.h - Alias atoms -------------------------------------===// +// +// The LLVM Linker +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// \brief Provide alias atoms. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLD_CORE_ALIAS_H +#define LLD_CORE_ALIAS_H + +#include "lld/Core/LLVM.h" +#include "lld/Core/Simple.h" +#include "llvm/ADT/Optional.h" + +#include + +namespace lld { + +// An AliasAtom is a zero-size atom representing an alias for other atom. It has +// a LayoutAfter reference to the target atom, so that this atom and the target +// atom will be laid out at the same location in the final result. Initially +// the target atom is an undefined atom. Resolver will replace it with a defined +// one. +// +// It does not have attributes itself. Most member function calls are forwarded +// to the target atom. +class AliasAtom : public SimpleDefinedAtom { +public: + AliasAtom(const File &file, StringRef name) + : SimpleDefinedAtom(file), _target(nullptr), _name(name), + _merge(DefinedAtom::mergeNo), _deadStrip(DefinedAtom::deadStripNormal) { + } + + StringRef name() const override { return _name; } + uint64_t size() const override { return 0; } + ArrayRef rawContent() const override { return ArrayRef(); } + + Scope scope() const override { + getTarget(); + return _target ? _target->scope() : scopeLinkageUnit; + } + + Merge merge() const override { + if (_merge.hasValue()) + return _merge.getValue(); + getTarget(); + return _target ? _target->merge() : mergeNo; + } + + void setMerge(Merge val) { _merge = val; } + + ContentType contentType() const override { + getTarget(); + return _target ? _target->contentType() : typeUnknown; + } + + Interposable interposable() const override { + getTarget(); + return _target ? _target->interposable() : interposeNo; + } + + SectionChoice sectionChoice() const override { + getTarget(); + return _target ? _target->sectionChoice() : sectionBasedOnContent; + } + + StringRef customSectionName() const override { + getTarget(); + return _target ? _target->customSectionName() : StringRef(""); + } + + DeadStripKind deadStrip() const override { return _deadStrip; } + void setDeadStrip(DeadStripKind val) { _deadStrip = val; } + +private: + void getTarget() const { + if (_target) + return; + for (const Reference *r : *this) { + if (r->kindNamespace() == lld::Reference::KindNamespace::all && + r->kindValue() == lld::Reference::kindLayoutAfter) { + _target = dyn_cast(r->target()); + return; + } + } + } + + mutable const DefinedAtom *_target; + std::string _name; + llvm::Optional _merge; + DeadStripKind _deadStrip; +}; + +} // end namespace lld + +#endif Index: lld/trunk/include/lld/Core/Simple.h =================================================================== --- lld/trunk/include/lld/Core/Simple.h +++ lld/trunk/include/lld/Core/Simple.h @@ -0,0 +1,204 @@ +//===- lld/Core/Simple.h - Simple implementations of Atom and File --------===// +// +// The LLVM Linker +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// \brief Provide simple implementations for Atoms and File. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLD_CORE_SIMPLE_H +#define LLD_CORE_SIMPLE_H + +#include "lld/Core/DefinedAtom.h" +#include "lld/Core/File.h" +#include "lld/Core/Reference.h" +#include "lld/Core/UndefinedAtom.h" + +namespace lld { + +class SimpleFile : public MutableFile { +public: + SimpleFile(StringRef path) : MutableFile(path) {} + + void addAtom(const Atom &atom) override { + if (auto *defAtom = dyn_cast(&atom)) { + _definedAtoms._atoms.push_back(defAtom); + } else if (auto *undefAtom = dyn_cast(&atom)) { + _undefinedAtoms._atoms.push_back(undefAtom); + } else if (auto *shlibAtom = dyn_cast(&atom)) { + _sharedLibraryAtoms._atoms.push_back(shlibAtom); + } else if (auto *absAtom = dyn_cast(&atom)) { + _absoluteAtoms._atoms.push_back(absAtom); + } else { + llvm_unreachable("atom has unknown definition kind"); + } + } + + const atom_collection &defined() const override { + return _definedAtoms; + } + + const atom_collection &undefined() const override { + return _undefinedAtoms; + } + + const atom_collection &sharedLibrary() const override { + return _sharedLibraryAtoms; + } + + const atom_collection &absolute() const override { + return _absoluteAtoms; + } + + DefinedAtomRange definedAtoms() override { + return make_range(_definedAtoms._atoms); + } + +protected: + atom_collection_vector _definedAtoms; + atom_collection_vector _undefinedAtoms; + atom_collection_vector _sharedLibraryAtoms; + atom_collection_vector _absoluteAtoms; +}; + +class SimpleFileWrapper : public SimpleFile { +public: + SimpleFileWrapper(const LinkingContext &context, const File &file) + : SimpleFile(file.path()) { + for (auto definedAtom : file.defined()) + _definedAtoms._atoms.push_back(std::move(definedAtom)); + for (auto undefAtom : file.undefined()) + _undefinedAtoms._atoms.push_back(std::move(undefAtom)); + for (auto shlibAtom : file.sharedLibrary()) + _sharedLibraryAtoms._atoms.push_back(std::move(shlibAtom)); + for (auto absAtom : file.absolute()) + _absoluteAtoms._atoms.push_back(std::move(absAtom)); + } +}; + +class SimpleReference : public Reference { +public: + SimpleReference(Reference::KindNamespace ns, Reference::KindArch arch, + Reference::KindValue value, uint64_t off, const Atom *t, + Reference::Addend a) + : Reference(ns, arch, value), _target(t), _offsetInAtom(off), _addend(a) { + } + + uint64_t offsetInAtom() const override { return _offsetInAtom; } + + const Atom *target() const override { + assert(_target); + return _target; + } + + Addend addend() const override { return _addend; } + void setAddend(Addend a) override { _addend = a; } + void setTarget(const Atom *newAtom) override { _target = newAtom; } + +private: + const Atom *_target; + uint64_t _offsetInAtom; + Addend _addend; +}; + +class SimpleDefinedAtom : public DefinedAtom { +public: + explicit SimpleDefinedAtom(const File &f) : _file(f) { + static uint32_t lastOrdinal = 0; + _ordinal = lastOrdinal++; + } + + const File &file() const override { return _file; } + + StringRef name() const override { return StringRef(); } + + uint64_t ordinal() const override { return _ordinal; } + + Scope scope() const override { return DefinedAtom::scopeLinkageUnit; } + + Interposable interposable() const override { return DefinedAtom::interposeNo; } + + Merge merge() const override { return DefinedAtom::mergeNo; } + + Alignment alignment() const override { return Alignment(0, 0); } + + SectionChoice sectionChoice() const override { + return DefinedAtom::sectionBasedOnContent; + } + + SectionPosition sectionPosition() const override { + return DefinedAtom::sectionPositionAny; + } + + StringRef customSectionName() const override { return StringRef(); } + DeadStripKind deadStrip() const override { + return DefinedAtom::deadStripNormal; + } + + DefinedAtom::reference_iterator begin() const override { + uintptr_t index = 0; + const void *it = reinterpret_cast(index); + return reference_iterator(*this, it); + } + + DefinedAtom::reference_iterator end() const override { + uintptr_t index = _references.size(); + const void *it = reinterpret_cast(index); + return reference_iterator(*this, it); + } + + const Reference *derefIterator(const void *it) const override { + uintptr_t index = reinterpret_cast(it); + assert(index < _references.size()); + return &_references[index]; + } + + void incrementIterator(const void *&it) const override { + uintptr_t index = reinterpret_cast(it); + ++index; + it = reinterpret_cast(index); + } + + void addReference(Reference::KindNamespace ns, Reference::KindArch arch, + Reference::KindValue kindValue, uint64_t off, + const Atom *target, Reference::Addend a) { + _references.push_back(SimpleReference(ns, arch, kindValue, off, target, a)); + } + + void setOrdinal(uint64_t ord) { _ordinal = ord; } + +private: + const File &_file; + uint64_t _ordinal; + std::vector _references; +}; + +class SimpleUndefinedAtom : public UndefinedAtom { +public: + SimpleUndefinedAtom(const File &f, StringRef name) : _file(f), _name(name) { + assert(!name.empty() && "UndefinedAtoms must have a name"); + } + + /// file - returns the File that produced/owns this Atom + const File &file() const override { return _file; } + + /// name - The name of the atom. For a function atom, it is the (mangled) + /// name of the function. + StringRef name() const override { return _name; } + + CanBeNull canBeNull() const override { return UndefinedAtom::canBeNullNever; } + +private: + const File &_file; + StringRef _name; +}; + +} // end namespace lld + +#endif Index: lld/trunk/include/lld/ReaderWriter/Alias.h =================================================================== --- lld/trunk/include/lld/ReaderWriter/Alias.h +++ lld/trunk/include/lld/ReaderWriter/Alias.h @@ -1,103 +0,0 @@ -//===- lld/ReaderWriter/Alias.h - Alias atoms -----------------------------===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -/// -/// \file -/// \brief Provide alias atoms. -/// -//===----------------------------------------------------------------------===// - -#ifndef LLD_READER_WRITER_ALIAS_H -#define LLD_READER_WRITER_ALIAS_H - -#include "lld/Core/LLVM.h" -#include "lld/ReaderWriter/Simple.h" -#include "llvm/ADT/Optional.h" - -#include - -namespace lld { - -// An AliasAtom is a zero-size atom representing an alias for other atom. It has -// a LayoutAfter reference to the target atom, so that this atom and the target -// atom will be laid out at the same location in the final result. Initially -// the target atom is an undefined atom. Resolver will replace it with a defined -// one. -// -// It does not have attributes itself. Most member function calls are forwarded -// to the target atom. -class AliasAtom : public SimpleDefinedAtom { -public: - AliasAtom(const File &file, StringRef name) - : SimpleDefinedAtom(file), _target(nullptr), _name(name), - _merge(DefinedAtom::mergeNo), _deadStrip(DefinedAtom::deadStripNormal) { - } - - StringRef name() const override { return _name; } - uint64_t size() const override { return 0; } - ArrayRef rawContent() const override { return ArrayRef(); } - - Scope scope() const override { - getTarget(); - return _target ? _target->scope() : scopeLinkageUnit; - } - - Merge merge() const override { - if (_merge.hasValue()) - return _merge.getValue(); - getTarget(); - return _target ? _target->merge() : mergeNo; - } - - void setMerge(Merge val) { _merge = val; } - - ContentType contentType() const override { - getTarget(); - return _target ? _target->contentType() : typeUnknown; - } - - Interposable interposable() const override { - getTarget(); - return _target ? _target->interposable() : interposeNo; - } - - SectionChoice sectionChoice() const override { - getTarget(); - return _target ? _target->sectionChoice() : sectionBasedOnContent; - } - - StringRef customSectionName() const override { - getTarget(); - return _target ? _target->customSectionName() : StringRef(""); - } - - DeadStripKind deadStrip() const override { return _deadStrip; } - void setDeadStrip(DeadStripKind val) { _deadStrip = val; } - -private: - void getTarget() const { - if (_target) - return; - for (const Reference *r : *this) { - if (r->kindNamespace() == lld::Reference::KindNamespace::all && - r->kindValue() == lld::Reference::kindLayoutAfter) { - _target = dyn_cast(r->target()); - return; - } - } - } - - mutable const DefinedAtom *_target; - std::string _name; - llvm::Optional _merge; - DeadStripKind _deadStrip; -}; - -} // end namespace lld - -#endif Index: lld/trunk/include/lld/ReaderWriter/Simple.h =================================================================== --- lld/trunk/include/lld/ReaderWriter/Simple.h +++ lld/trunk/include/lld/ReaderWriter/Simple.h @@ -1,202 +0,0 @@ -//===- lld/ReaderWriter/Simple.h - Simple implementations of Atom and File ===// -// -// The LLVM Linker -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -/// -/// \file -/// \brief Provide simple implementations for Atoms and File. -/// -//===----------------------------------------------------------------------===// - -#ifndef LLD_READER_WRITER_SIMPLE_H -#define LLD_READER_WRITER_SIMPLE_H - -#include "lld/Core/DefinedAtom.h" -#include "lld/Core/File.h" -#include "lld/Core/Reference.h" -#include "lld/Core/UndefinedAtom.h" - -namespace lld { -class SimpleFile : public MutableFile { -public: - SimpleFile(StringRef path) : MutableFile(path) {} - - void addAtom(const Atom &atom) override { - if (auto *defAtom = dyn_cast(&atom)) { - _definedAtoms._atoms.push_back(defAtom); - } else if (auto *undefAtom = dyn_cast(&atom)) { - _undefinedAtoms._atoms.push_back(undefAtom); - } else if (auto *shlibAtom = dyn_cast(&atom)) { - _sharedLibraryAtoms._atoms.push_back(shlibAtom); - } else if (auto *absAtom = dyn_cast(&atom)) { - _absoluteAtoms._atoms.push_back(absAtom); - } else { - llvm_unreachable("atom has unknown definition kind"); - } - } - - const atom_collection &defined() const override { - return _definedAtoms; - } - - const atom_collection &undefined() const override { - return _undefinedAtoms; - } - - const atom_collection &sharedLibrary() const override { - return _sharedLibraryAtoms; - } - - const atom_collection &absolute() const override { - return _absoluteAtoms; - } - - DefinedAtomRange definedAtoms() override { - return make_range(_definedAtoms._atoms); - } - -protected: - atom_collection_vector _definedAtoms; - atom_collection_vector _undefinedAtoms; - atom_collection_vector _sharedLibraryAtoms; - atom_collection_vector _absoluteAtoms; -}; - -class SimpleFileWrapper : public SimpleFile { -public: - SimpleFileWrapper(const LinkingContext &context, const File &file) - : SimpleFile(file.path()) { - for (auto definedAtom : file.defined()) - _definedAtoms._atoms.push_back(std::move(definedAtom)); - for (auto undefAtom : file.undefined()) - _undefinedAtoms._atoms.push_back(std::move(undefAtom)); - for (auto shlibAtom : file.sharedLibrary()) - _sharedLibraryAtoms._atoms.push_back(std::move(shlibAtom)); - for (auto absAtom : file.absolute()) - _absoluteAtoms._atoms.push_back(std::move(absAtom)); - } -}; - -class SimpleReference : public Reference { -public: - SimpleReference(Reference::KindNamespace ns, Reference::KindArch arch, - Reference::KindValue value, uint64_t off, const Atom *t, - Reference::Addend a) - : Reference(ns, arch, value), _target(t), _offsetInAtom(off), _addend(a) { - } - - uint64_t offsetInAtom() const override { return _offsetInAtom; } - - const Atom *target() const override { - assert(_target); - return _target; - } - - Addend addend() const override { return _addend; } - void setAddend(Addend a) override { _addend = a; } - void setTarget(const Atom *newAtom) override { _target = newAtom; } - -private: - const Atom *_target; - uint64_t _offsetInAtom; - Addend _addend; -}; - -class SimpleDefinedAtom : public DefinedAtom { -public: - explicit SimpleDefinedAtom(const File &f) : _file(f) { - static uint32_t lastOrdinal = 0; - _ordinal = lastOrdinal++; - } - - const File &file() const override { return _file; } - - StringRef name() const override { return StringRef(); } - - uint64_t ordinal() const override { return _ordinal; } - - Scope scope() const override { return DefinedAtom::scopeLinkageUnit; } - - Interposable interposable() const override { return DefinedAtom::interposeNo; } - - Merge merge() const override { return DefinedAtom::mergeNo; } - - Alignment alignment() const override { return Alignment(0, 0); } - - SectionChoice sectionChoice() const override { - return DefinedAtom::sectionBasedOnContent; - } - - SectionPosition sectionPosition() const override { - return DefinedAtom::sectionPositionAny; - } - - StringRef customSectionName() const override { return StringRef(); } - DeadStripKind deadStrip() const override { - return DefinedAtom::deadStripNormal; - } - - DefinedAtom::reference_iterator begin() const override { - uintptr_t index = 0; - const void *it = reinterpret_cast(index); - return reference_iterator(*this, it); - } - - DefinedAtom::reference_iterator end() const override { - uintptr_t index = _references.size(); - const void *it = reinterpret_cast(index); - return reference_iterator(*this, it); - } - - const Reference *derefIterator(const void *it) const override { - uintptr_t index = reinterpret_cast(it); - assert(index < _references.size()); - return &_references[index]; - } - - void incrementIterator(const void *&it) const override { - uintptr_t index = reinterpret_cast(it); - ++index; - it = reinterpret_cast(index); - } - - void addReference(Reference::KindNamespace ns, Reference::KindArch arch, - Reference::KindValue kindValue, uint64_t off, - const Atom *target, Reference::Addend a) { - _references.push_back(SimpleReference(ns, arch, kindValue, off, target, a)); - } - - void setOrdinal(uint64_t ord) { _ordinal = ord; } - -private: - const File &_file; - uint64_t _ordinal; - std::vector _references; -}; - -class SimpleUndefinedAtom : public UndefinedAtom { -public: - SimpleUndefinedAtom(const File &f, StringRef name) : _file(f), _name(name) { - assert(!name.empty() && "UndefinedAtoms must have a name"); - } - - /// file - returns the File that produced/owns this Atom - const File &file() const override { return _file; } - - /// name - The name of the atom. For a function atom, it is the (mangled) - /// name of the function. - StringRef name() const override { return _name; } - - CanBeNull canBeNull() const override { return UndefinedAtom::canBeNullNever; } - -private: - const File &_file; - StringRef _name; -}; -} // end namespace lld - -#endif Index: lld/trunk/lib/Core/LinkingContext.cpp =================================================================== --- lld/trunk/lib/Core/LinkingContext.cpp +++ lld/trunk/lib/Core/LinkingContext.cpp @@ -7,10 +7,10 @@ // //===----------------------------------------------------------------------===// +#include "lld/Core/Alias.h" #include "lld/Core/LinkingContext.h" #include "lld/Core/Resolver.h" -#include "lld/ReaderWriter/Alias.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" #include "lld/ReaderWriter/Writer.h" #include "llvm/ADT/Triple.h" Index: lld/trunk/lib/Passes/RoundTripNativePass.cpp =================================================================== --- lld/trunk/lib/Passes/RoundTripNativePass.cpp +++ lld/trunk/lib/Passes/RoundTripNativePass.cpp @@ -8,8 +8,8 @@ //===----------------------------------------------------------------------===// #include "lld/Core/Instrumentation.h" +#include "lld/Core/Simple.h" #include "lld/Passes/RoundTripNativePass.h" -#include "lld/ReaderWriter/Simple.h" #include "lld/ReaderWriter/Writer.h" #include "llvm/Support/Debug.h" Index: lld/trunk/lib/Passes/RoundTripYAMLPass.cpp =================================================================== --- lld/trunk/lib/Passes/RoundTripYAMLPass.cpp +++ lld/trunk/lib/Passes/RoundTripYAMLPass.cpp @@ -6,9 +6,10 @@ // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// + #include "lld/Core/Instrumentation.h" +#include "lld/Core/Simple.h" #include "lld/Passes/RoundTripYAMLPass.h" -#include "lld/ReaderWriter/Simple.h" #include "lld/ReaderWriter/Writer.h" #include "llvm/Support/Debug.h" Index: lld/trunk/lib/ReaderWriter/CoreLinkingContext.cpp =================================================================== --- lld/trunk/lib/ReaderWriter/CoreLinkingContext.cpp +++ lld/trunk/lib/ReaderWriter/CoreLinkingContext.cpp @@ -11,9 +11,9 @@ #include "lld/Core/Pass.h" #include "lld/Core/PassManager.h" +#include "lld/Core/Simple.h" #include "lld/Passes/LayoutPass.h" #include "lld/Passes/RoundTripYAMLPass.h" -#include "lld/ReaderWriter/Simple.h" #include "llvm/ADT/ArrayRef.h" Index: lld/trunk/lib/ReaderWriter/ELF/Atoms.h =================================================================== --- lld/trunk/lib/ReaderWriter/ELF/Atoms.h +++ lld/trunk/lib/ReaderWriter/ELF/Atoms.h @@ -13,7 +13,7 @@ #include "TargetHandler.h" #include "lld/Core/LLVM.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringSwitch.h" Index: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp =================================================================== --- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp +++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp @@ -14,7 +14,7 @@ #include "lld/Core/File.h" #include "lld/Core/Pass.h" #include "lld/Core/PassManager.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" Index: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp =================================================================== --- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp +++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp @@ -21,7 +21,7 @@ #include "X86_64RelocationPass.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" #include "llvm/ADT/DenseMap.h" Index: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h =================================================================== --- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h +++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h @@ -15,7 +15,7 @@ #include "X86_64RelocationHandler.h" #include "TargetLayout.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" namespace lld { namespace elf { Index: lld/trunk/lib/ReaderWriter/MachO/Atoms.h =================================================================== --- lld/trunk/lib/ReaderWriter/MachO/Atoms.h +++ lld/trunk/lib/ReaderWriter/MachO/Atoms.h @@ -10,7 +10,7 @@ #ifndef LLD_READER_WRITER_MACHO_ATOMS_H #define LLD_READER_WRITER_MACHO_ATOMS_H -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" namespace lld { namespace mach_o { Index: lld/trunk/lib/ReaderWriter/MachO/ExecutableAtoms.hpp =================================================================== --- lld/trunk/lib/ReaderWriter/MachO/ExecutableAtoms.hpp +++ lld/trunk/lib/ReaderWriter/MachO/ExecutableAtoms.hpp @@ -13,11 +13,11 @@ #include "llvm/Support/MachO.h" #include "lld/Core/DefinedAtom.h" -#include "lld/Core/UndefinedAtom.h" #include "lld/Core/File.h" -#include "lld/Core/Reference.h" #include "lld/Core/LinkingContext.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Reference.h" +#include "lld/Core/Simple.h" +#include "lld/Core/UndefinedAtom.h" namespace lld { namespace mach_o { Index: lld/trunk/lib/ReaderWriter/MachO/File.h =================================================================== --- lld/trunk/lib/ReaderWriter/MachO/File.h +++ lld/trunk/lib/ReaderWriter/MachO/File.h @@ -12,7 +12,7 @@ #include "Atoms.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" namespace lld { namespace mach_o { Index: lld/trunk/lib/ReaderWriter/MachO/StubAtoms.hpp =================================================================== --- lld/trunk/lib/ReaderWriter/MachO/StubAtoms.hpp +++ lld/trunk/lib/ReaderWriter/MachO/StubAtoms.hpp @@ -13,10 +13,10 @@ #include "llvm/ADT/ArrayRef.h" #include "lld/Core/DefinedAtom.h" -#include "lld/Core/SharedLibraryAtom.h" #include "lld/Core/File.h" #include "lld/Core/Reference.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/SharedLibraryAtom.h" +#include "lld/Core/Simple.h" #include "ReferenceKinds.h" #include "StubAtoms_x86_64.hpp" Index: lld/trunk/lib/ReaderWriter/MachO/StubsPass.hpp =================================================================== --- lld/trunk/lib/ReaderWriter/MachO/StubsPass.hpp +++ lld/trunk/lib/ReaderWriter/MachO/StubsPass.hpp @@ -13,11 +13,11 @@ #include "llvm/ADT/DenseMap.h" #include "lld/Core/DefinedAtom.h" -#include "lld/Core/SharedLibraryAtom.h" #include "lld/Core/File.h" -#include "lld/Core/Reference.h" #include "lld/Core/Pass.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Reference.h" +#include "lld/Core/SharedLibraryAtom.h" +#include "lld/Core/Simple.h" #include "ReferenceKinds.h" #include "StubAtoms.hpp" Index: lld/trunk/lib/ReaderWriter/Native/ReaderNative.cpp =================================================================== --- lld/trunk/lib/ReaderWriter/Native/ReaderNative.cpp +++ lld/trunk/lib/ReaderWriter/Native/ReaderNative.cpp @@ -9,12 +9,11 @@ #include "NativeFileFormat.h" -#include "lld/ReaderWriter/Reader.h" -#include "lld/ReaderWriter/Simple.h" - #include "lld/Core/Atom.h" #include "lld/Core/Error.h" #include "lld/Core/File.h" +#include "lld/Core/Simple.h" +#include "lld/ReaderWriter/Reader.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" Index: lld/trunk/lib/ReaderWriter/PECOFF/Atoms.h =================================================================== --- lld/trunk/lib/ReaderWriter/PECOFF/Atoms.h +++ lld/trunk/lib/ReaderWriter/PECOFF/Atoms.h @@ -11,7 +11,7 @@ #define LLD_READER_WRITER_PE_COFF_ATOMS_H #include "lld/Core/File.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/Object/COFF.h" Index: lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.h =================================================================== --- lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.h +++ lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.h @@ -23,8 +23,8 @@ #include "lld/Core/File.h" #include "lld/Core/Pass.h" +#include "lld/Core/Simple.h" #include "lld/ReaderWriter/PECOFFLinkingContext.h" -#include "lld/ReaderWriter/Simple.h" #include "llvm/Support/COFF.h" #include Index: lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp =================================================================== --- lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp +++ lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp @@ -12,7 +12,7 @@ #include "lld/Core/File.h" #include "lld/Core/Pass.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" #include "llvm/Support/Debug.h" #include "llvm/Support/Path.h" Index: lld/trunk/lib/ReaderWriter/PECOFF/IdataPass.h =================================================================== --- lld/trunk/lib/ReaderWriter/PECOFF/IdataPass.h +++ lld/trunk/lib/ReaderWriter/PECOFF/IdataPass.h @@ -23,7 +23,7 @@ #include "lld/Core/File.h" #include "lld/Core/Pass.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" #include "llvm/Support/COFF.h" #include Index: lld/trunk/lib/ReaderWriter/PECOFF/IdataPass.cpp =================================================================== --- lld/trunk/lib/ReaderWriter/PECOFF/IdataPass.cpp +++ lld/trunk/lib/ReaderWriter/PECOFF/IdataPass.cpp @@ -12,7 +12,7 @@ #include "lld/Core/File.h" #include "lld/Core/Pass.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" #include "llvm/Support/COFF.h" #include "llvm/Support/Debug.h" #include "llvm/Support/Endian.h" Index: lld/trunk/lib/ReaderWriter/PECOFF/LinkerGeneratedSymbolFile.h =================================================================== --- lld/trunk/lib/ReaderWriter/PECOFF/LinkerGeneratedSymbolFile.h +++ lld/trunk/lib/ReaderWriter/PECOFF/LinkerGeneratedSymbolFile.h @@ -10,8 +10,8 @@ #include "Atoms.h" #include "lld/Core/ArchiveLibraryFile.h" +#include "lld/Core/Simple.h" #include "lld/ReaderWriter/PECOFFLinkingContext.h" -#include "lld/ReaderWriter/Simple.h" #include "llvm/Support/Allocator.h" #include Index: lld/trunk/lib/ReaderWriter/PECOFF/LoadConfigPass.h =================================================================== --- lld/trunk/lib/ReaderWriter/PECOFF/LoadConfigPass.h +++ lld/trunk/lib/ReaderWriter/PECOFF/LoadConfigPass.h @@ -22,8 +22,8 @@ #include "lld/Core/File.h" #include "lld/Core/Pass.h" +#include "lld/Core/Simple.h" #include "lld/ReaderWriter/PECOFFLinkingContext.h" -#include "lld/ReaderWriter/Simple.h" #include Index: lld/trunk/lib/ReaderWriter/PECOFF/LoadConfigPass.cpp =================================================================== --- lld/trunk/lib/ReaderWriter/PECOFF/LoadConfigPass.cpp +++ lld/trunk/lib/ReaderWriter/PECOFF/LoadConfigPass.cpp @@ -22,7 +22,7 @@ #include "lld/Core/File.h" #include "lld/Core/Pass.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" #include "llvm/Object/COFF.h" #include "llvm/Support/Debug.h" #include "llvm/Support/Path.h" Index: lld/trunk/lib/ReaderWriter/PECOFF/PECOFFLinkingContext.cpp =================================================================== --- lld/trunk/lib/ReaderWriter/PECOFF/PECOFFLinkingContext.cpp +++ lld/trunk/lib/ReaderWriter/PECOFF/PECOFFLinkingContext.cpp @@ -16,12 +16,12 @@ #include "SetSubsystemPass.h" #include "lld/Core/PassManager.h" +#include "lld/Core/Simple.h" #include "lld/Passes/LayoutPass.h" #include "lld/Passes/RoundTripNativePass.h" #include "lld/Passes/RoundTripYAMLPass.h" #include "lld/ReaderWriter/PECOFFLinkingContext.h" #include "lld/ReaderWriter/Reader.h" -#include "lld/ReaderWriter/Simple.h" #include "lld/ReaderWriter/Writer.h" #include "llvm/ADT/SmallString.h" #include "llvm/Support/Allocator.h" Index: lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp =================================================================== --- lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp +++ lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp @@ -10,10 +10,10 @@ #include "Atoms.h" #include "ReaderImportHeader.h" +#include "lld/Core/Alias.h" #include "lld/Core/File.h" #include "lld/Driver/Driver.h" #include "lld/ReaderWriter/PECOFFLinkingContext.h" -#include "lld/ReaderWriter/Alias.h" #include "lld/ReaderWriter/Reader.h" #include "llvm/ADT/ArrayRef.h" Index: lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp =================================================================== --- lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp +++ lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp @@ -7,17 +7,16 @@ // //===----------------------------------------------------------------------===// -#include "lld/ReaderWriter/Reader.h" -#include "lld/ReaderWriter/Simple.h" -#include "lld/ReaderWriter/Writer.h" -#include "lld/ReaderWriter/YamlContext.h" - #include "lld/Core/ArchiveLibraryFile.h" #include "lld/Core/DefinedAtom.h" #include "lld/Core/Error.h" #include "lld/Core/File.h" #include "lld/Core/LLVM.h" #include "lld/Core/Reference.h" +#include "lld/Core/Simple.h" +#include "lld/ReaderWriter/Reader.h" +#include "lld/ReaderWriter/Writer.h" +#include "lld/ReaderWriter/YamlContext.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringMap.h" Index: lld/trunk/unittests/DriverTests/InputGraphTest.cpp =================================================================== --- lld/trunk/unittests/DriverTests/InputGraphTest.cpp +++ lld/trunk/unittests/DriverTests/InputGraphTest.cpp @@ -16,7 +16,7 @@ #include "lld/Core/InputGraph.h" #include "lld/Core/Resolver.h" -#include "lld/ReaderWriter/Simple.h" +#include "lld/Core/Simple.h" using namespace lld;