<div dir="ltr">Please do not mix code cleanup (in this case sorting include files) with actual feature addition next time. Thanks!</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 17, 2014 at 10:23 PM, Shankar Easwaran <span dir="ltr"><<a href="mailto:shankarke@gmail.com" target="_blank">shankarke@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: shankare<br>
Date: Sat Oct 18 00:23:17 2014<br>
New Revision: 220129<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=220129&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=220129&view=rev</a><br>
Log:<br>
[ELF] Add Readers for all the ELF subtargets.<br>
<br>
This would permit the ELF reader to check the architecture that is being<br>
selected by the linking process.<br>
<br>
This patch also sorts the include files according to LLVM conventions.<br>
<br>
Added:<br>
lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h<br>
lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h<br>
- copied, changed from r220117, lld/trunk/lib/ReaderWriter/ELF/ELFReader.h<br>
lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h<br>
- copied, changed from r220117, lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h<br>
lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFFile.h<br>
lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h<br>
- copied, changed from r220117, lld/trunk/lib/ReaderWriter/ELF/ELFReader.h<br>
lld/trunk/lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h<br>
lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.h<br>
lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h<br>
lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h<br>
- copied, changed from r220117, lld/trunk/lib/ReaderWriter/ELF/ELFReader.h<br>
Modified:<br>
lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h<br>
lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ExecutableWriter.h<br>
lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h<br>
lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64RelocationPass.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h<br>
lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/Atoms.h<br>
lld/trunk/lib/ReaderWriter/ELF/Chunk.h<br>
lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h<br>
lld/trunk/lib/ReaderWriter/ELF/DefaultTargetHandler.h<br>
lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h<br>
lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/ELFReader.h<br>
lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h<br>
lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicLibraryWriter.h<br>
lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h<br>
lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h<br>
lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h<br>
lld/trunk/lib/ReaderWriter/ELF/Layout.h<br>
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsCtorsOrderPass.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h<br>
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h<br>
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h<br>
lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h<br>
lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h<br>
lld/trunk/lib/ReaderWriter/ELF/Reader.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h<br>
lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h<br>
lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h<br>
lld/trunk/lib/ReaderWriter/ELF/TargetLayout.h<br>
lld/trunk/lib/ReaderWriter/ELF/Targets.h<br>
lld/trunk/lib/ReaderWriter/ELF/Writer.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt<br>
lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h<br>
lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h<br>
lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h<br>
lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h<br>
lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp<br>
lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h<br>
lld/trunk/test/elf/symbols.test<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -9,8 +9,8 @@<br>
#ifndef AARCH64_DYNAMIC_LIBRARY_WRITER_H<br>
#define AARCH64_DYNAMIC_LIBRARY_WRITER_H<br>
<br>
-#include "DynamicLibraryWriter.h"<br>
#include "AArch64LinkingContext.h"<br>
+#include "DynamicLibraryWriter.h"<br>
<br>
namespace lld {<br>
namespace elf {<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h?rev=220129&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h?rev=220129&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h Sat Oct 18 00:23:17 2014<br>
@@ -0,0 +1,73 @@<br>
+//===- lib/ReaderWriter/ELF/AArch64/AArch64ELFFile.h ----------------------===//<br>
+//<br>
+// The LLVM Linker<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef LLD_READER_WRITER_ELF_AARCH64_AARCH64_ELF_FILE_H<br>
+#define LLD_READER_WRITER_ELF_AARCH64_AARCH64_ELF_FILE_H<br>
+<br>
+#include "ELFReader.h"<br>
+<br>
+namespace lld {<br>
+namespace elf {<br>
+<br>
+class AArch64LinkingContext;<br>
+<br>
+template <class ELFT> class AArch64ELFFile : public ELFFile<ELFT> {<br>
+public:<br>
+ AArch64ELFFile(StringRef name, bool atomizeStrings)<br>
+ : ELFFile<ELFT>(name, atomizeStrings) {}<br>
+<br>
+ AArch64ELFFile(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings,<br>
+ std::error_code &ec)<br>
+ : ELFFile<ELFT>(std::move(mb), atomizeStrings, ec) {}<br>
+<br>
+ static ErrorOr<std::unique_ptr<AArch64ELFFile>><br>
+ create(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings) {<br>
+ std::error_code ec;<br>
+ std::unique_ptr<AArch64ELFFile<ELFT>> file(<br>
+ new AArch64ELFFile<ELFT>(mb->getBufferIdentifier(), atomizeStrings));<br>
+<br>
+ file->_objFile.reset(<br>
+ new llvm::object::ELFFile<ELFT>(mb.release()->getBuffer(), ec));<br>
+<br>
+ if (ec)<br>
+ return ec;<br>
+<br>
+ // Read input sections from the input file that need to be converted to<br>
+ // atoms<br>
+ if ((ec = file->createAtomizableSections()))<br>
+ return ec;<br>
+<br>
+ // For mergeable strings, we would need to split the section into various<br>
+ // atoms<br>
+ if ((ec = file->createMergeableAtoms()))<br>
+ return ec;<br>
+<br>
+ // Create the necessary symbols that are part of the section that we<br>
+ // created in createAtomizableSections function<br>
+ if ((ec = file->createSymbolsFromAtomizableSections()))<br>
+ return ec;<br>
+<br>
+ // Create the appropriate atoms from the file<br>
+ if ((ec = file->createAtoms()))<br>
+ return ec;<br>
+<br>
+ return std::move(file);<br>
+ }<br>
+};<br>
+<br>
+template <class ELFT> class AArch64DynamicFile : public DynamicFile<ELFT> {<br>
+public:<br>
+ AArch64DynamicFile(const AArch64LinkingContext &context, StringRef name)<br>
+ : DynamicFile<ELFT>(context, name) {}<br>
+};<br>
+<br>
+} // elf<br>
+} // lld<br>
+<br>
+#endif // LLD_READER_WRITER_ELF_AARCH64_AARCH64_ELF_FILE_H<br>
<br>
Copied: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h (from r220117, lld/trunk/lib/ReaderWriter/ELF/ELFReader.h)<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h?p2=lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h&p1=lld/trunk/lib/ReaderWriter/ELF/ELFReader.h&r1=220117&r2=220129&rev=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h?p2=lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h&p1=lld/trunk/lib/ReaderWriter/ELF/ELFReader.h&r1=220117&r2=220129&rev=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h Sat Oct 18 00:23:17 2014<br>
@@ -1,4 +1,4 @@<br>
-//===- lib/ReaderWriter/ELF/ELFReader.h -----------------------------------===//<br>
+//===- lib/ReaderWriter/ELF/AArch64/AArch64ELFReader.h --------------------===//<br>
//<br>
// The LLVM Linker<br>
//<br>
@@ -7,53 +7,48 @@<br>
//<br>
//===----------------------------------------------------------------------===//<br>
<br>
-#ifndef LLD_READER_WRITER_ELF_READER_H<br>
-#define LLD_READER_WRITER_ELF_READER_H<br>
+#ifndef LLD_READER_WRITER_AARCH64_AARCH64_ELF_READER_H<br>
+#define LLD_READER_WRITER_AARCH64_AARCH64_ELF_READER_H<br>
<br>
-#include "CreateELF.h"<br>
-#include "DynamicFile.h"<br>
-#include "ELFFile.h"<br>
-<br>
-#include "lld/ReaderWriter/Reader.h"<br>
+#include "AArch64ELFFile.h"<br>
+#include "ELFReader.h"<br>
<br>
namespace lld {<br>
namespace elf {<br>
<br>
-struct DynamicFileCreateELFTraits {<br>
+struct AArch64DynamicFileCreateELFTraits {<br>
typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type;<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,<br>
bool useUndefines) {<br>
- return lld::elf::DynamicFile<ELFT>::create(std::move(mb), useUndefines);<br>
+ return lld::elf::AArch64DynamicFile<ELFT>::create(std::move(mb),<br>
+ useUndefines);<br>
}<br>
};<br>
<br>
-struct ELFFileCreateELFTraits {<br>
+struct AArch64ELFFileCreateELFTraits {<br>
typedef llvm::ErrorOr<std::unique_ptr<lld::File>> result_type;<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,<br>
bool atomizeStrings) {<br>
- return lld::elf::ELFFile<ELFT>::create(std::move(mb), atomizeStrings);<br>
+ return lld::elf::AArch64ELFFile<ELFT>::create(std::move(mb),<br>
+ atomizeStrings);<br>
}<br>
};<br>
<br>
-class ELFObjectReader : public Reader {<br>
+class AArch64ELFObjectReader : public ELFObjectReader {<br>
public:<br>
- ELFObjectReader(bool atomizeStrings) : _atomizeStrings(atomizeStrings) {}<br>
-<br>
- bool canParse(file_magic magic, StringRef,<br>
- const MemoryBuffer &) const override {<br>
- return (magic == llvm::sys::fs::file_magic::elf_relocatable);<br>
- }<br>
+ AArch64ELFObjectReader(bool atomizeStrings)<br>
+ : ELFObjectReader(atomizeStrings) {}<br>
<br>
std::error_code<br>
parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,<br>
std::vector<std::unique_ptr<File>> &result) const override {<br>
std::size_t maxAlignment =<br>
1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));<br>
- auto f = createELF<ELFFileCreateELFTraits>(<br>
+ auto f = createELF<AArch64ELFFileCreateELFTraits>(<br>
llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,<br>
std::move(mb), _atomizeStrings);<br>
if (std::error_code ec = f.getError())<br>
@@ -61,26 +56,18 @@ public:<br>
result.push_back(std::move(*f));<br>
return std::error_code();<br>
}<br>
-<br>
-protected:<br>
- bool _atomizeStrings;<br>
};<br>
<br>
-class ELFDSOReader : public Reader {<br>
+class AArch64ELFDSOReader : public ELFDSOReader {<br>
public:<br>
- ELFDSOReader(bool useUndefines) : _useUndefines(useUndefines) {}<br>
-<br>
- bool canParse(file_magic magic, StringRef,<br>
- const MemoryBuffer &) const override {<br>
- return (magic == llvm::sys::fs::file_magic::elf_shared_object);<br>
- }<br>
+ AArch64ELFDSOReader(bool useUndefines) : ELFDSOReader(useUndefines) {}<br>
<br>
std::error_code<br>
parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,<br>
std::vector<std::unique_ptr<File>> &result) const override {<br>
std::size_t maxAlignment =<br>
1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));<br>
- auto f = createELF<DynamicFileCreateELFTraits>(<br>
+ auto f = createELF<AArch64DynamicFileCreateELFTraits>(<br>
llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,<br>
std::move(mb), _useUndefines);<br>
if (std::error_code ec = f.getError())<br>
@@ -88,12 +75,9 @@ public:<br>
result.push_back(std::move(*f));<br>
return std::error_code();<br>
}<br>
-<br>
-protected:<br>
- bool _useUndefines;<br>
};<br>
<br>
} // namespace elf<br>
} // namespace lld<br>
<br>
-#endif // LLD_READER_WRITER_ELF_READER_H<br>
+#endif // LLD_READER_WRITER_AARCH64_AARCH64_ELF_READER_H<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ExecutableWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ExecutableWriter.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ExecutableWriter.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ExecutableWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64ExecutableWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -9,8 +9,8 @@<br>
#ifndef AARCH64_EXECUTABLE_WRITER_H<br>
#define AARCH64_EXECUTABLE_WRITER_H<br>
<br>
-#include "ExecutableWriter.h"<br>
#include "AArch64LinkingContext.h"<br>
+#include "ExecutableWriter.h"<br>
<br>
namespace lld {<br>
namespace elf {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,16 +8,13 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "AArch64LinkingContext.h"<br>
-<br>
+#include "AArch64RelocationPass.h"<br>
+#include "Atoms.h"<br>
#include "lld/Core/File.h"<br>
#include "lld/Core/Instrumentation.h"<br>
-<br>
#include "llvm/ADT/ArrayRef.h"<br>
#include "llvm/ADT/StringSwitch.h"<br>
<br>
-#include "Atoms.h"<br>
-#include "AArch64RelocationPass.h"<br>
-<br>
using namespace lld;<br>
using namespace lld::elf;<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64LinkingContext.h Sat Oct 18 00:23:17 2014<br>
@@ -11,9 +11,7 @@<br>
#define LLD_READER_WRITER_ELF_AARCH64_AARCH64_LINKING_CONTEXT_H<br>
<br>
#include "AArch64TargetHandler.h"<br>
-<br>
#include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
#include "llvm/Object/ELF.h"<br>
#include "llvm/Support/ELF.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64RelocationPass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64RelocationPass.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64RelocationPass.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64RelocationPass.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64RelocationPass.cpp Sat Oct 18 00:23:17 2014<br>
@@ -17,13 +17,10 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "AArch64RelocationPass.h"<br>
-<br>
+#include "AArch64LinkingContext.h"<br>
+#include "Atoms.h"<br>
#include "lld/Core/Simple.h"<br>
-<br>
#include "llvm/ADT/DenseMap.h"<br>
-<br>
-#include "Atoms.h"<br>
-#include "AArch64LinkingContext.h"<br>
#include "llvm/Support/Debug.h"<br>
<br>
using namespace lld;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,10 +8,10 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "Atoms.h"<br>
-#include "AArch64ExecutableWriter.h"<br>
#include "AArch64DynamicLibraryWriter.h"<br>
-#include "AArch64TargetHandler.h"<br>
+#include "AArch64ExecutableWriter.h"<br>
#include "AArch64LinkingContext.h"<br>
+#include "AArch64TargetHandler.h"<br>
<br>
using namespace lld;<br>
using namespace elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64TargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -10,11 +10,11 @@<br>
#ifndef LLD_READER_WRITER_ELF_AARCH64_AARCH64_TARGET_HANDLER_H<br>
#define LLD_READER_WRITER_ELF_AARCH64_AARCH64_TARGET_HANDLER_H<br>
<br>
-#include "DefaultTargetHandler.h"<br>
-#include "ELFFile.h"<br>
+#include "AArch64ELFFile.h"<br>
+#include "AArch64ELFReader.h"<br>
#include "AArch64RelocationHandler.h"<br>
+#include "DefaultTargetHandler.h"<br>
#include "TargetLayout.h"<br>
-<br>
#include "lld/Core/Simple.h"<br>
<br>
namespace lld {<br>
@@ -42,6 +42,14 @@ public:<br>
return *(_AArch64RelocationHandler.get());<br>
}<br>
<br>
+ std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {<br>
+ return std::unique_ptr<Reader>(new AArch64ELFObjectReader(atomizeStrings));<br>
+ }<br>
+<br>
+ std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines) override {<br>
+ return std::unique_ptr<Reader>(new AArch64ELFDSOReader(useShlibUndefines));<br>
+ }<br>
+<br>
std::unique_ptr<Writer> getWriter() override;<br>
<br>
private:<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/ArrayOrderPass.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,7 +8,6 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "ArrayOrderPass.h"<br>
-<br>
#include <algorithm><br>
#include <limits><br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Atoms.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Atoms.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Atoms.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Atoms.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Atoms.h Sat Oct 18 00:23:17 2014<br>
@@ -11,13 +11,10 @@<br>
#define LLD_READER_WRITER_ELF_ATOMS_H<br>
<br>
#include "TargetHandler.h"<br>
-<br>
#include "lld/Core/LLVM.h"<br>
#include "lld/Core/Simple.h"<br>
-<br>
#include "llvm/ADT/ArrayRef.h"<br>
#include "llvm/ADT/StringSwitch.h"<br>
-<br>
#include <memory><br>
#include <vector><br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Chunk.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Chunk.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Chunk.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Chunk.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Chunk.h Sat Oct 18 00:23:17 2014<br>
@@ -11,7 +11,6 @@<br>
#define LLD_READER_WRITER_ELF_CHUNKS_H<br>
<br>
#include "lld/Core/LLVM.h"<br>
-<br>
#include "llvm/ADT/StringRef.h"<br>
#include "llvm/Object/ELF.h"<br>
#include "llvm/Support/Allocator.h"<br>
@@ -19,7 +18,6 @@<br>
#include "llvm/Support/ELF.h"<br>
#include "llvm/Support/ErrorHandling.h"<br>
#include "llvm/Support/FileOutputBuffer.h"<br>
-<br>
#include <memory><br>
<br>
namespace lld {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h Sat Oct 18 00:23:17 2014<br>
@@ -16,10 +16,8 @@<br>
#include "Layout.h"<br>
#include "SectionChunks.h"<br>
#include "SegmentChunks.h"<br>
-<br>
#include "lld/Core/Instrumentation.h"<br>
#include "lld/Core/STDExtras.h"<br>
-<br>
#include "llvm/ADT/ArrayRef.h"<br>
#include "llvm/ADT/DenseMap.h"<br>
#include "llvm/ADT/DenseSet.h"<br>
@@ -31,7 +29,6 @@<br>
#include "llvm/ADT/StringSwitch.h"<br>
#include "llvm/Support/Errc.h"<br>
#include "llvm/Support/Format.h"<br>
-<br>
#include <map><br>
#include <memory><br>
#include <tuple><br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/DefaultTargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultTargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultTargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/DefaultTargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/DefaultTargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -11,13 +11,11 @@<br>
#define LLD_READER_WRITER_ELF_DEFAULT_TARGET_HANDLER_H<br>
<br>
#include "DefaultLayout.h"<br>
-#include "TargetHandler.h"<br>
-#include "ELFReader.h"<br>
#include "DynamicLibraryWriter.h"<br>
+#include "ELFReader.h"<br>
#include "ExecutableWriter.h"<br>
-<br>
+#include "TargetHandler.h"<br>
#include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
#include "llvm/ADT/Triple.h"<br>
#include "llvm/Support/ELF.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/DynamicFile.h Sat Oct 18 00:23:17 2014<br>
@@ -11,13 +11,10 @@<br>
#define LLD_READER_WRITER_ELF_DYNAMIC_FILE_H<br>
<br>
#include "Atoms.h"<br>
-<br>
#include "lld/Core/SharedLibraryFile.h"<br>
#include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
#include "llvm/Object/ELF.h"<br>
#include "llvm/Support/Path.h"<br>
-<br>
#include <unordered_map><br>
<br>
namespace lld {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/ELFLinkingContext.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,19 +8,16 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
#include "ArrayOrderPass.h"<br>
#include "ELFFile.h"<br>
#include "TargetHandler.h"<br>
#include "Targets.h"<br>
-<br>
#include "lld/Core/Instrumentation.h"<br>
#include "lld/Passes/LayoutPass.h"<br>
#include "lld/Passes/RoundTripYAMLPass.h"<br>
-<br>
#include "llvm/ADT/Triple.h"<br>
-#include "llvm/Support/Errc.h"<br>
#include "llvm/Support/ELF.h"<br>
+#include "llvm/Support/Errc.h"<br>
#include "llvm/Support/FileSystem.h"<br>
#include "llvm/Support/Path.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/ELFReader.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFReader.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFReader.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/ELFReader.h Sat Oct 18 00:23:17 2014<br>
@@ -13,7 +13,6 @@<br>
#include "CreateELF.h"<br>
#include "DynamicFile.h"<br>
#include "ELFFile.h"<br>
-<br>
#include "lld/ReaderWriter/Reader.h"<br>
<br>
namespace lld {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/HeaderChunks.h Sat Oct 18 00:23:17 2014<br>
@@ -11,7 +11,6 @@<br>
#define LLD_READER_WRITER_ELF_HEADER_CHUNKS_H<br>
<br>
#include "SegmentChunks.h"<br>
-<br>
#include "llvm/Object/ELF.h"<br>
#include "llvm/Support/Allocator.h"<br>
#include "llvm/Support/Debug.h"<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicLibraryWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicLibraryWriter.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicLibraryWriter.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicLibraryWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonDynamicLibraryWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -9,9 +9,9 @@<br>
#ifndef HEXAGON_DYNAMIC_LIBRARY_WRITER_H<br>
#define HEXAGON_DYNAMIC_LIBRARY_WRITER_H<br>
<br>
+#include "DynamicLibraryWriter.h"<br>
#include "HexagonExecutableAtoms.h"<br>
#include "HexagonLinkingContext.h"<br>
-#include "DynamicLibraryWriter.h"<br>
<br>
namespace lld {<br>
namespace elf {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonExecutableWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -9,10 +9,10 @@<br>
#ifndef HEXAGON_EXECUTABLE_WRITER_H<br>
#define HEXAGON_EXECUTABLE_WRITER_H<br>
<br>
+#include "ExecutableWriter.h"<br>
+#include "HexagonELFWriters.h"<br>
#include "HexagonExecutableAtoms.h"<br>
#include "HexagonLinkingContext.h"<br>
-#include "HexagonELFWriters.h"<br>
-#include "ExecutableWriter.h"<br>
<br>
namespace lld {<br>
namespace elf {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.cpp Sat Oct 18 00:23:17 2014<br>
@@ -10,12 +10,10 @@<br>
#include "Atoms.h"<br>
#include "HexagonLinkingContext.h"<br>
#include "HexagonTargetHandler.h"<br>
-<br>
#include "lld/Core/File.h"<br>
#include "lld/Core/Pass.h"<br>
#include "lld/Core/PassManager.h"<br>
#include "lld/Core/Simple.h"<br>
-<br>
#include "llvm/ADT/ArrayRef.h"<br>
#include "llvm/ADT/DenseMap.h"<br>
#include "llvm/ADT/StringSwitch.h"<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonLinkingContext.h Sat Oct 18 00:23:17 2014<br>
@@ -11,7 +11,6 @@<br>
#define LLD_READER_WRITER_ELF_HEXAGON_HEXAGON_LINKING_CONTEXT_H<br>
<br>
#include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
#include "llvm/Object/ELF.h"<br>
#include "llvm/Support/ELF.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonRelocationHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -9,9 +9,8 @@<br>
<br>
#include "HexagonTargetHandler.h"<br>
#include "HexagonLinkingContext.h"<br>
-#include "HexagonRelocationHandler.h"<br>
#include "HexagonRelocationFunctions.h"<br>
-<br>
+#include "HexagonRelocationHandler.h"<br>
<br>
using namespace lld;<br>
using namespace elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -9,8 +9,8 @@<br>
<br>
#include "HexagonExecutableWriter.h"<br>
#include "HexagonDynamicLibraryWriter.h"<br>
-#include "HexagonTargetHandler.h"<br>
#include "HexagonLinkingContext.h"<br>
+#include "HexagonTargetHandler.h"<br>
<br>
using namespace lld;<br>
using namespace elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Hexagon/HexagonTargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -11,11 +11,11 @@<br>
#define HEXAGON_TARGET_HANDLER_H<br>
<br>
#include "DefaultTargetHandler.h"<br>
+#include "HexagonELFReader.h"<br>
#include "HexagonExecutableAtoms.h"<br>
#include "HexagonRelocationHandler.h"<br>
#include "HexagonSectionChunks.h"<br>
#include "TargetLayout.h"<br>
-#include "HexagonELFReader.h"<br>
<br>
namespace lld {<br>
namespace elf {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Layout.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Layout.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Layout.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Layout.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Layout.h Sat Oct 18 00:23:17 2014<br>
@@ -12,7 +12,6 @@<br>
<br>
#include "lld/Core/DefinedAtom.h"<br>
#include "lld/ReaderWriter/AtomLayout.h"<br>
-<br>
#include "llvm/ADT/StringRef.h"<br>
#include "llvm/Object/ELF.h"<br>
#include "llvm/Support/Allocator.h"<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsCtorsOrderPass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsCtorsOrderPass.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsCtorsOrderPass.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsCtorsOrderPass.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsCtorsOrderPass.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,7 +8,6 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "MipsCtorsOrderPass.h"<br>
-<br>
#include <algorithm><br>
#include <climits><br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsDynamicLibraryWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -17,6 +17,7 @@<br>
namespace lld {<br>
namespace elf {<br>
<br>
+template <typename ELFT> class MipsDynamicSymbolTable;<br>
template <typename ELFT> class MipsTargetLayout;<br>
<br>
template <class ELFT><br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFWriters.h Sat Oct 18 00:23:17 2014<br>
@@ -10,11 +10,14 @@<br>
#define LLD_READER_WRITER_ELF_MIPS_MIPS_ELF_WRITERS_H<br>
<br>
#include "MipsLinkingContext.h"<br>
+<br>
#include "OutputELFWriter.h"<br>
<br>
namespace lld {<br>
namespace elf {<br>
<br>
+template <class ELFT> class MipsRuntimeFile;<br>
+<br>
template <class ELFT> class MipsTargetLayout;<br>
<br>
template <typename ELFT> class MipsELFWriter {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -10,7 +10,6 @@<br>
#include "MipsTargetHandler.h"<br>
#include "MipsLinkingContext.h"<br>
#include "MipsRelocationHandler.h"<br>
-<br>
#include "lld/ReaderWriter/RelocationHelperFunctions.h"<br>
<br>
using namespace lld;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationPass.cpp Sat Oct 18 00:23:17 2014<br>
@@ -11,7 +11,6 @@<br>
#include "MipsLinkingContext.h"<br>
#include "MipsRelocationPass.h"<br>
#include "MipsTargetHandler.h"<br>
-<br>
#include "llvm/ADT/DenseSet.h"<br>
<br>
using namespace lld;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,10 +8,10 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "ELFFile.h"<br>
+#include "MipsDynamicLibraryWriter.h"<br>
+#include "MipsExecutableWriter.h"<br>
#include "MipsLinkingContext.h"<br>
#include "MipsTargetHandler.h"<br>
-#include "MipsExecutableWriter.h"<br>
-#include "MipsDynamicLibraryWriter.h"<br>
<br>
using namespace lld;<br>
using namespace elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsTargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -15,7 +15,6 @@<br>
#include "MipsRelocationHandler.h"<br>
#include "MipsSectionChunks.h"<br>
#include "TargetLayout.h"<br>
-<br>
#include "llvm/ADT/DenseSet.h"<br>
<br>
namespace lld {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/OutputELFWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -12,12 +12,10 @@<br>
#include "DefaultLayout.h"<br>
#include "ELFFile.h"<br>
#include "TargetLayout.h"<br>
-<br>
#include "lld/Core/Instrumentation.h"<br>
#include "lld/Core/Parallel.h"<br>
#include "lld/ReaderWriter/ELFLinkingContext.h"<br>
#include "lld/ReaderWriter/Writer.h"<br>
-<br>
#include "llvm/ADT/StringSet.h"<br>
#include "llvm/Support/Path.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,9 +8,7 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "PPCLinkingContext.h"<br>
-<br>
#include "lld/Core/LLVM.h"<br>
-<br>
#include "llvm/ADT/StringSwitch.h"<br>
#include "llvm/Support/ErrorOr.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/PPC/PPCLinkingContext.h Sat Oct 18 00:23:17 2014<br>
@@ -11,9 +11,7 @@<br>
#define LLD_READER_WRITER_ELF_PPC_PPC_LINKING_CONTEXT_H<br>
<br>
#include "PPCTargetHandler.h"<br>
-<br>
#include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
#include "llvm/Object/ELF.h"<br>
#include "llvm/Support/ELF.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Reader.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Reader.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Reader.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Reader.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Reader.cpp Sat Oct 18 00:23:17 2014<br>
@@ -14,7 +14,6 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "ELFReader.h"<br>
-<br>
#include <map><br>
#include <vector><br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h Sat Oct 18 00:23:17 2014<br>
@@ -14,11 +14,9 @@<br>
#include "Layout.h"<br>
#include "TargetHandler.h"<br>
#include "Writer.h"<br>
-<br>
#include "lld/Core/DefinedAtom.h"<br>
#include "lld/Core/Parallel.h"<br>
#include "lld/Core/range.h"<br>
-<br>
#include "llvm/ADT/ArrayRef.h"<br>
#include "llvm/ADT/DenseMap.h"<br>
#include "llvm/ADT/StringExtras.h"<br>
@@ -29,7 +27,6 @@<br>
#include "llvm/Support/ELF.h"<br>
#include "llvm/Support/ErrorHandling.h"<br>
#include "llvm/Support/FileOutputBuffer.h"<br>
-<br>
#include <memory><br>
<br>
namespace lld {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/SegmentChunks.h Sat Oct 18 00:23:17 2014<br>
@@ -14,10 +14,8 @@<br>
#include "Layout.h"<br>
#include "SectionChunks.h"<br>
#include "Writer.h"<br>
-<br>
#include "lld/Core/range.h"<br>
#include "lld/ReaderWriter/Writer.h"<br>
-<br>
#include "llvm/ADT/ArrayRef.h"<br>
#include "llvm/ADT/StringRef.h"<br>
#include "llvm/Object/ELF.h"<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/TargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -17,15 +17,12 @@<br>
#define LLD_READER_WRITER_ELF_TARGET_HANDLER_H<br>
<br>
#include "Layout.h"<br>
-<br>
#include "lld/Core/LLVM.h"<br>
#include "lld/Core/LinkingContext.h"<br>
#include "lld/Core/STDExtras.h"<br>
#include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
#include "llvm/ADT/Hashing.h"<br>
#include "llvm/Support/FileOutputBuffer.h"<br>
-<br>
#include <memory><br>
#include <vector><br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/TargetLayout.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/TargetLayout.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/TargetLayout.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/TargetLayout.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/TargetLayout.h Sat Oct 18 00:23:17 2014<br>
@@ -11,7 +11,6 @@<br>
#define LLD_READER_WRITER_ELF_TARGET_LAYOUT_H<br>
<br>
#include "DefaultLayout.h"<br>
-<br>
#include "lld/Core/LLVM.h"<br>
<br>
namespace lld {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Targets.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Targets.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Targets.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Targets.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Targets.h Sat Oct 18 00:23:17 2014<br>
@@ -10,11 +10,11 @@<br>
#ifndef LLD_READER_WRITER_ELF_TARGETS_H<br>
#define LLD_READER_WRITER_ELF_TARGETS_H<br>
<br>
+#include "AArch64/AArch64Target.h"<br>
#include "Hexagon/HexagonTarget.h"<br>
#include "Mips/MipsTarget.h"<br>
#include "PPC/PPCTarget.h"<br>
#include "X86/X86Target.h"<br>
#include "X86_64/X86_64Target.h"<br>
-#include "AArch64/AArch64Target.h"<br>
<br>
#endif<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/Writer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Writer.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Writer.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/Writer.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/Writer.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,7 +8,6 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "lld/ReaderWriter/Writer.h"<br>
-<br>
#include "DynamicLibraryWriter.h"<br>
#include "ExecutableWriter.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/CMakeLists.txt Sat Oct 18 00:23:17 2014<br>
@@ -1,6 +1,7 @@<br>
add_lld_library(lldX86ELFTarget<br>
X86LinkingContext.cpp<br>
X86TargetHandler.cpp<br>
+ X86RelocationHandler.cpp<br>
)<br>
<br>
target_link_libraries(lldX86ELFTarget ${cmake_2_8_12_INTERFACE}<br>
<br>
Copied: lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h (from r220117, lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h)<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h?p2=lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h&p1=lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h&r1=220117&r2=220129&rev=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h?p2=lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h&p1=lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h&r1=220117&r2=220129&rev=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -1,4 +1,4 @@<br>
-//===- lib/ReaderWriter/ELF/AArch64/AArch64DynamicLibraryWriter.h ---------===//<br>
+//===- lib/ReaderWriter/ELF/X86/X86DynamicLibraryWriter.h -----------------===//<br>
//<br>
// The LLVM Linker<br>
//<br>
@@ -6,20 +6,20 @@<br>
// License. See LICENSE.TXT for details.<br>
//<br>
//===----------------------------------------------------------------------===//<br>
-#ifndef AARCH64_DYNAMIC_LIBRARY_WRITER_H<br>
-#define AARCH64_DYNAMIC_LIBRARY_WRITER_H<br>
+#ifndef X86_X86_DYNAMIC_LIBRARY_WRITER_H<br>
+#define X86_X86_DYNAMIC_LIBRARY_WRITER_H<br>
<br>
#include "DynamicLibraryWriter.h"<br>
-#include "AArch64LinkingContext.h"<br>
+#include "X86LinkingContext.h"<br>
<br>
namespace lld {<br>
namespace elf {<br>
<br>
template <class ELFT><br>
-class AArch64DynamicLibraryWriter : public DynamicLibraryWriter<ELFT> {<br>
+class X86DynamicLibraryWriter : public DynamicLibraryWriter<ELFT> {<br>
public:<br>
- AArch64DynamicLibraryWriter(AArch64LinkingContext &context,<br>
- AArch64TargetLayout<ELFT> &layout);<br>
+ X86DynamicLibraryWriter(X86LinkingContext &context,<br>
+ X86TargetLayout<ELFT> &layout);<br>
<br>
protected:<br>
// Add any runtime files and their atoms to the output<br>
@@ -41,19 +41,18 @@ private:<br>
};<br>
<br>
std::unique_ptr<GOTFile> _gotFile;<br>
- AArch64LinkingContext &_context;<br>
- AArch64TargetLayout<ELFT> &_AArch64Layout;<br>
+ X86LinkingContext &_context;<br>
+ X86TargetLayout<ELFT> &_x86Layout;<br>
};<br>
<br>
template <class ELFT><br>
-AArch64DynamicLibraryWriter<ELFT>::AArch64DynamicLibraryWriter(<br>
- AArch64LinkingContext &context, AArch64TargetLayout<ELFT> &layout)<br>
+X86DynamicLibraryWriter<ELFT>::X86DynamicLibraryWriter(<br>
+ X86LinkingContext &context, X86TargetLayout<ELFT> &layout)<br>
: DynamicLibraryWriter<ELFT>(context, layout),<br>
- _gotFile(new GOTFile(context)), _context(context),<br>
- _AArch64Layout(layout) {}<br>
+ _gotFile(new GOTFile(context)), _context(context), _x86Layout(layout) {}<br>
<br>
template <class ELFT><br>
-bool AArch64DynamicLibraryWriter<ELFT>::createImplicitFiles(<br>
+bool X86DynamicLibraryWriter<ELFT>::createImplicitFiles(<br>
std::vector<std::unique_ptr<File>> &result) {<br>
DynamicLibraryWriter<ELFT>::createImplicitFiles(result);<br>
_gotFile->addAtom(*new (_gotFile->_alloc) GLOBAL_OFFSET_TABLEAtom(*_gotFile));<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFFile.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFFile.h?rev=220129&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFFile.h?rev=220129&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFFile.h (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFFile.h Sat Oct 18 00:23:17 2014<br>
@@ -0,0 +1,73 @@<br>
+//===- lib/ReaderWriter/ELF/X86/X86ELFFile.h ------------------------------===//<br>
+//<br>
+// The LLVM Linker<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef LLD_READER_WRITER_ELF_X86_X86_ELF_FILE_H<br>
+#define LLD_READER_WRITER_ELF_X86_X86_ELF_FILE_H<br>
+<br>
+#include "ELFReader.h"<br>
+<br>
+namespace lld {<br>
+namespace elf {<br>
+<br>
+class X86LinkingContext;<br>
+<br>
+template <class ELFT> class X86ELFFile : public ELFFile<ELFT> {<br>
+public:<br>
+ X86ELFFile(StringRef name, bool atomizeStrings)<br>
+ : ELFFile<ELFT>(name, atomizeStrings) {}<br>
+<br>
+ X86ELFFile(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings,<br>
+ std::error_code &ec)<br>
+ : ELFFile<ELFT>(std::move(mb), atomizeStrings, ec) {}<br>
+<br>
+ static ErrorOr<std::unique_ptr<X86ELFFile>><br>
+ create(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings) {<br>
+ std::error_code ec;<br>
+ std::unique_ptr<X86ELFFile<ELFT>> file(<br>
+ new X86ELFFile<ELFT>(mb->getBufferIdentifier(), atomizeStrings));<br>
+<br>
+ file->_objFile.reset(<br>
+ new llvm::object::ELFFile<ELFT>(mb.release()->getBuffer(), ec));<br>
+<br>
+ if (ec)<br>
+ return ec;<br>
+<br>
+ // Read input sections from the input file that need to be converted to<br>
+ // atoms<br>
+ if ((ec = file->createAtomizableSections()))<br>
+ return ec;<br>
+<br>
+ // For mergeable strings, we would need to split the section into various<br>
+ // atoms<br>
+ if ((ec = file->createMergeableAtoms()))<br>
+ return ec;<br>
+<br>
+ // Create the necessary symbols that are part of the section that we<br>
+ // created in createAtomizableSections function<br>
+ if ((ec = file->createSymbolsFromAtomizableSections()))<br>
+ return ec;<br>
+<br>
+ // Create the appropriate atoms from the file<br>
+ if ((ec = file->createAtoms()))<br>
+ return ec;<br>
+<br>
+ return std::move(file);<br>
+ }<br>
+};<br>
+<br>
+template <class ELFT> class X86DynamicFile : public DynamicFile<ELFT> {<br>
+public:<br>
+ X86DynamicFile(const X86LinkingContext &context, StringRef name)<br>
+ : DynamicFile<ELFT>(context, name) {}<br>
+};<br>
+<br>
+} // elf<br>
+} // lld<br>
+<br>
+#endif // LLD_READER_WRITER_ELF_X86_X86_ELF_FILE_H<br>
<br>
Copied: lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h (from r220117, lld/trunk/lib/ReaderWriter/ELF/ELFReader.h)<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h?p2=lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h&p1=lld/trunk/lib/ReaderWriter/ELF/ELFReader.h&r1=220117&r2=220129&rev=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h?p2=lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h&p1=lld/trunk/lib/ReaderWriter/ELF/ELFReader.h&r1=220117&r2=220129&rev=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86ELFReader.h Sat Oct 18 00:23:17 2014<br>
@@ -1,4 +1,4 @@<br>
-//===- lib/ReaderWriter/ELF/ELFReader.h -----------------------------------===//<br>
+//===- lib/ReaderWriter/ELF/X86/X86ELFReader.h ----------------------------===//<br>
//<br>
// The LLVM Linker<br>
//<br>
@@ -7,53 +7,45 @@<br>
//<br>
//===----------------------------------------------------------------------===//<br>
<br>
-#ifndef LLD_READER_WRITER_ELF_READER_H<br>
-#define LLD_READER_WRITER_ELF_READER_H<br>
+#ifndef LLD_READER_WRITER_X86_X86_ELF_READER_H<br>
+#define LLD_READER_WRITER_X86_X86_ELF_READER_H<br>
<br>
-#include "CreateELF.h"<br>
-#include "DynamicFile.h"<br>
-#include "ELFFile.h"<br>
-<br>
-#include "lld/ReaderWriter/Reader.h"<br>
+#include "ELFReader.h"<br>
+#include "X86ELFFile.h"<br>
<br>
namespace lld {<br>
namespace elf {<br>
<br>
-struct DynamicFileCreateELFTraits {<br>
+struct X86DynamicFileCreateELFTraits {<br>
typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type;<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,<br>
bool useUndefines) {<br>
- return lld::elf::DynamicFile<ELFT>::create(std::move(mb), useUndefines);<br>
+ return lld::elf::X86DynamicFile<ELFT>::create(std::move(mb), useUndefines);<br>
}<br>
};<br>
<br>
-struct ELFFileCreateELFTraits {<br>
+struct X86ELFFileCreateELFTraits {<br>
typedef llvm::ErrorOr<std::unique_ptr<lld::File>> result_type;<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,<br>
bool atomizeStrings) {<br>
- return lld::elf::ELFFile<ELFT>::create(std::move(mb), atomizeStrings);<br>
+ return lld::elf::X86ELFFile<ELFT>::create(std::move(mb), atomizeStrings);<br>
}<br>
};<br>
<br>
-class ELFObjectReader : public Reader {<br>
+class X86ELFObjectReader : public ELFObjectReader {<br>
public:<br>
- ELFObjectReader(bool atomizeStrings) : _atomizeStrings(atomizeStrings) {}<br>
-<br>
- bool canParse(file_magic magic, StringRef,<br>
- const MemoryBuffer &) const override {<br>
- return (magic == llvm::sys::fs::file_magic::elf_relocatable);<br>
- }<br>
+ X86ELFObjectReader(bool atomizeStrings) : ELFObjectReader(atomizeStrings) {}<br>
<br>
std::error_code<br>
parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,<br>
std::vector<std::unique_ptr<File>> &result) const override {<br>
std::size_t maxAlignment =<br>
1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));<br>
- auto f = createELF<ELFFileCreateELFTraits>(<br>
+ auto f = createELF<X86ELFFileCreateELFTraits>(<br>
llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,<br>
std::move(mb), _atomizeStrings);<br>
if (std::error_code ec = f.getError())<br>
@@ -61,26 +53,18 @@ public:<br>
result.push_back(std::move(*f));<br>
return std::error_code();<br>
}<br>
-<br>
-protected:<br>
- bool _atomizeStrings;<br>
};<br>
<br>
-class ELFDSOReader : public Reader {<br>
+class X86ELFDSOReader : public ELFDSOReader {<br>
public:<br>
- ELFDSOReader(bool useUndefines) : _useUndefines(useUndefines) {}<br>
-<br>
- bool canParse(file_magic magic, StringRef,<br>
- const MemoryBuffer &) const override {<br>
- return (magic == llvm::sys::fs::file_magic::elf_shared_object);<br>
- }<br>
+ X86ELFDSOReader(bool useUndefines) : ELFDSOReader(useUndefines) {}<br>
<br>
std::error_code<br>
parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,<br>
std::vector<std::unique_ptr<File>> &result) const override {<br>
std::size_t maxAlignment =<br>
1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));<br>
- auto f = createELF<DynamicFileCreateELFTraits>(<br>
+ auto f = createELF<X86DynamicFileCreateELFTraits>(<br>
llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,<br>
std::move(mb), _useUndefines);<br>
if (std::error_code ec = f.getError())<br>
@@ -88,12 +72,9 @@ public:<br>
result.push_back(std::move(*f));<br>
return std::error_code();<br>
}<br>
-<br>
-protected:<br>
- bool _useUndefines;<br>
};<br>
<br>
} // namespace elf<br>
} // namespace lld<br>
<br>
-#endif // LLD_READER_WRITER_ELF_READER_H<br>
+#endif // LLD_READER_WRITER_X86_X86_ELF_READER_H<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h?rev=220129&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h?rev=220129&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h Sat Oct 18 00:23:17 2014<br>
@@ -0,0 +1,57 @@<br>
+//===- lib/ReaderWriter/ELF/X86/X86ExecutableWriter.h ---------------------===//<br>
+//<br>
+// The LLVM Linker<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+#ifndef X86_X86_EXECUTABLE_WRITER_H<br>
+#define X86_X86_EXECUTABLE_WRITER_H<br>
+<br>
+#include "ExecutableWriter.h"<br>
+#include "X86LinkingContext.h"<br>
+<br>
+namespace lld {<br>
+namespace elf {<br>
+<br>
+template <class ELFT><br>
+class X86ExecutableWriter : public ExecutableWriter<ELFT> {<br>
+public:<br>
+ X86ExecutableWriter(X86LinkingContext &context,<br>
+ X86TargetLayout<ELFT> &layout);<br>
+<br>
+protected:<br>
+ // Add any runtime files and their atoms to the output<br>
+ virtual bool createImplicitFiles(std::vector<std::unique_ptr<File>> &);<br>
+<br>
+ virtual void finalizeDefaultAtomValues() {<br>
+ return ExecutableWriter<ELFT>::finalizeDefaultAtomValues();<br>
+ }<br>
+<br>
+ virtual void addDefaultAtoms() {<br>
+ return ExecutableWriter<ELFT>::addDefaultAtoms();<br>
+ }<br>
+<br>
+private:<br>
+ X86LinkingContext &_context;<br>
+ X86TargetLayout<ELFT> &_x86Layout;<br>
+};<br>
+<br>
+template <class ELFT><br>
+X86ExecutableWriter<ELFT>::X86ExecutableWriter(X86LinkingContext &context,<br>
+ X86TargetLayout<ELFT> &layout)<br>
+ : ExecutableWriter<ELFT>(context, layout), _context(context),<br>
+ _x86Layout(layout) {}<br>
+<br>
+template <class ELFT><br>
+bool X86ExecutableWriter<ELFT>::createImplicitFiles(<br>
+ std::vector<std::unique_ptr<File>> &result) {<br>
+ ExecutableWriter<ELFT>::createImplicitFiles(result);<br>
+ return true;<br>
+}<br>
+<br>
+} // namespace elf<br>
+} // namespace lld<br>
+<br>
+#endif<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,9 +8,7 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "X86LinkingContext.h"<br>
-<br>
#include "lld/Core/LLVM.h"<br>
-<br>
#include "llvm/ADT/StringSwitch.h"<br>
#include "llvm/Support/ErrorOr.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86LinkingContext.h Sat Oct 18 00:23:17 2014<br>
@@ -11,9 +11,7 @@<br>
#define LLD_READER_WRITER_ELF_X86_TARGETINFO_H<br>
<br>
#include "X86TargetHandler.h"<br>
-<br>
#include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
#include "llvm/Object/ELF.h"<br>
#include "llvm/Support/ELF.h"<br>
<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp?rev=220129&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp?rev=220129&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -0,0 +1,64 @@<br>
+//===- lib/ReaderWriter/ELF/X86/X86RelocationHandler.cpp ------------------===//<br>
+//<br>
+// The LLVM Linker<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#include "X86LinkingContext.h"<br>
+#include "X86TargetHandler.h"<br>
+<br>
+using namespace lld;<br>
+using namespace elf;<br>
+<br>
+namespace {<br>
+/// \brief R_386_32 - word32: S + A<br>
+static int reloc32(uint8_t *location, uint64_t P, uint64_t S, uint64_t A) {<br>
+ int32_t result = (uint32_t)(S + A);<br>
+ *reinterpret_cast<llvm::support::ulittle32_t *>(location) =<br>
+ result |<br>
+ (uint32_t) * reinterpret_cast<llvm::support::ulittle32_t *>(location);<br>
+ return 0;<br>
+}<br>
+<br>
+/// \brief R_386_PC32 - word32: S + A - P<br>
+static int relocPC32(uint8_t *location, uint64_t P, uint64_t S, uint64_t A) {<br>
+ uint32_t result = (uint32_t)((S + A) - P);<br>
+ *reinterpret_cast<llvm::support::ulittle32_t *>(location) =<br>
+ result +<br>
+ (uint32_t) * reinterpret_cast<llvm::support::ulittle32_t *>(location);<br>
+ return 0;<br>
+}<br>
+}<br>
+<br>
+std::error_code X86TargetRelocationHandler::applyRelocation(<br>
+ ELFWriter &writer, llvm::FileOutputBuffer &buf, const lld::AtomLayout &atom,<br>
+ const Reference &ref) const {<br>
+ uint8_t *atomContent = buf.getBufferStart() + atom._fileOffset;<br>
+ uint8_t *location = atomContent + ref.offsetInAtom();<br>
+ uint64_t targetVAddress = writer.addressOfAtom(ref.target());<br>
+ uint64_t relocVAddress = atom._virtualAddr + ref.offsetInAtom();<br>
+<br>
+ if (ref.kindNamespace() != Reference::KindNamespace::ELF)<br>
+ return std::error_code();<br>
+ assert(ref.kindArch() == Reference::KindArch::x86);<br>
+ switch (ref.kindValue()) {<br>
+ case R_386_32:<br>
+ reloc32(location, relocVAddress, targetVAddress, ref.addend());<br>
+ break;<br>
+ case R_386_PC32:<br>
+ relocPC32(location, relocVAddress, targetVAddress, ref.addend());<br>
+ break;<br>
+ default: {<br>
+ std::string str;<br>
+ llvm::raw_string_ostream s(str);<br>
+ s << "Unhandled I386 relocation # " << ref.kindValue();<br>
+ s.flush();<br>
+ llvm_unreachable(str.c_str());<br>
+ }<br>
+ }<br>
+<br>
+ return std::error_code();<br>
+}<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.h?rev=220129&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.h?rev=220129&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.h (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86RelocationHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -0,0 +1,33 @@<br>
+//===- lib/ReaderWriter/ELF/X86/X86RelocationHandler.h --------------------===//<br>
+//<br>
+// The LLVM Linker<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef X86_X86_RELOCATION_HANDLER_H<br>
+#define X86_X86_RELOCATION_HANDLER_H<br>
+<br>
+#include "X86TargetHandler.h"<br>
+<br>
+namespace lld {<br>
+namespace elf {<br>
+template <class ELFT> class X86TargetLayout;<br>
+typedef llvm::object::ELFType<llvm::support::little, 2, false> X86ELFType;<br>
+<br>
+class X86TargetRelocationHandler final<br>
+ : public TargetRelocationHandler<X86ELFType> {<br>
+public:<br>
+ X86TargetRelocationHandler(X86TargetLayout<X86ELFType> &) {}<br>
+<br>
+ std::error_code applyRelocation(ELFWriter &, llvm::FileOutputBuffer &,<br>
+ const lld::AtomLayout &,<br>
+ const Reference &) const override;<br>
+};<br>
+<br>
+} // end namespace elf<br>
+} // end namespace lld<br>
+<br>
+#endif // X86_X86_RELOCATION_HANDLER_H<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,36 +8,23 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "X86TargetHandler.h"<br>
+#include "X86DynamicLibraryWriter.h"<br>
+#include "X86ExecutableWriter.h"<br>
#include "X86LinkingContext.h"<br>
+#include "X86RelocationHandler.h"<br>
<br>
using namespace lld;<br>
using namespace elf;<br>
<br>
using namespace llvm::ELF;<br>
<br>
-/// \brief R_386_32 - word32: S + A<br>
-static int reloc32(uint8_t *location, uint64_t P, uint64_t S, uint64_t A) {<br>
- int32_t result = (uint32_t)(S + A);<br>
- *reinterpret_cast<llvm::support::ulittle32_t *>(location) = result |<br>
- (uint32_t)*reinterpret_cast<llvm::support::ulittle32_t *>(location);<br>
- return 0;<br>
-}<br>
-<br>
-/// \brief R_386_PC32 - word32: S + A - P<br>
-static int relocPC32(uint8_t *location, uint64_t P, uint64_t S, uint64_t A) {<br>
- uint32_t result = (uint32_t)((S + A) - P);<br>
- *reinterpret_cast<llvm::support::ulittle32_t *>(location) = result +<br>
- (uint32_t)*reinterpret_cast<llvm::support::ulittle32_t *>(location);<br>
- return 0;<br>
-}<br>
-<br>
std::unique_ptr<Writer> X86TargetHandler::getWriter() {<br>
switch (_x86LinkingContext.getOutputELFType()) {<br>
case llvm::ELF::ET_EXEC:<br>
- return std::unique_ptr<Writer>(new elf::ExecutableWriter<X86ELFType>(<br>
+ return std::unique_ptr<Writer>(new X86ExecutableWriter<X86ELFType>(<br>
_x86LinkingContext, *_x86TargetLayout.get()));<br>
case llvm::ELF::ET_DYN:<br>
- return std::unique_ptr<Writer>(new elf::DynamicLibraryWriter<X86ELFType>(<br>
+ return std::unique_ptr<Writer>(new X86DynamicLibraryWriter<X86ELFType>(<br>
_x86LinkingContext, *_x86TargetLayout.get()));<br>
case llvm::ELF::ET_REL:<br>
llvm_unreachable("TODO: support -r mode");<br>
@@ -96,38 +83,8 @@ void X86TargetHandler::registerRelocatio<br>
kindStrings);<br>
}<br>
<br>
-std::error_code X86TargetRelocationHandler::applyRelocation(<br>
- ELFWriter &writer, llvm::FileOutputBuffer &buf, const lld::AtomLayout &atom,<br>
- const Reference &ref) const {<br>
- uint8_t *atomContent = buf.getBufferStart() + atom._fileOffset;<br>
- uint8_t *location = atomContent + ref.offsetInAtom();<br>
- uint64_t targetVAddress = writer.addressOfAtom(ref.target());<br>
- uint64_t relocVAddress = atom._virtualAddr + ref.offsetInAtom();<br>
-<br>
- if (ref.kindNamespace() != Reference::KindNamespace::ELF)<br>
- return std::error_code();<br>
- assert(ref.kindArch() == Reference::KindArch::x86);<br>
- switch (ref.kindValue()) {<br>
- case R_386_32:<br>
- reloc32(location, relocVAddress, targetVAddress, ref.addend());<br>
- break;<br>
- case R_386_PC32:<br>
- relocPC32(location, relocVAddress, targetVAddress, ref.addend());<br>
- break;<br>
- default : {<br>
- std::string str;<br>
- llvm::raw_string_ostream s(str);<br>
- s << "Unhandled I386 relocation # " << ref.kindValue();<br>
- s.flush();<br>
- llvm_unreachable(str.c_str());<br>
- }<br>
- }<br>
-<br>
- return std::error_code();<br>
-}<br>
-<br>
X86TargetHandler::X86TargetHandler(X86LinkingContext &context)<br>
: DefaultTargetHandler(context), _x86LinkingContext(context),<br>
_x86TargetLayout(new X86TargetLayout<X86ELFType>(context)),<br>
_x86RelocationHandler(<br>
- new X86TargetRelocationHandler(context, *_x86TargetLayout.get())) {}<br>
+ new X86TargetRelocationHandler(*_x86TargetLayout.get())) {}<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86/X86TargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -12,8 +12,9 @@<br>
<br>
#include "DefaultTargetHandler.h"<br>
#include "TargetLayout.h"<br>
-<br>
-#include "lld/ReaderWriter/Reader.h"<br>
+#include "X86ELFFile.h"<br>
+#include "X86ELFReader.h"<br>
+#include "X86RelocationHandler.h"<br>
<br>
namespace lld {<br>
namespace elf {<br>
@@ -26,24 +27,6 @@ public:<br>
X86TargetLayout(X86LinkingContext &context) : TargetLayout<ELFT>(context) {}<br>
};<br>
<br>
-class X86TargetRelocationHandler final<br>
- : public TargetRelocationHandler<X86ELFType> {<br>
-public:<br>
- X86TargetRelocationHandler(X86LinkingContext &context,<br>
- X86TargetLayout<X86ELFType> &layout)<br>
- : _x86Context(context), _x86TargetLayout(layout) {}<br>
-<br>
- std::error_code applyRelocation(ELFWriter &, llvm::FileOutputBuffer &,<br>
- const lld::AtomLayout &,<br>
- const Reference &) const override;<br>
-<br>
- static const Registry::KindStrings kindStrings[];<br>
-<br>
-protected:<br>
- X86LinkingContext &_x86Context;<br>
- X86TargetLayout<X86ELFType> &_x86TargetLayout;<br>
-};<br>
-<br>
class X86TargetHandler final<br>
: public DefaultTargetHandler<X86ELFType> {<br>
public:<br>
@@ -59,6 +42,14 @@ public:<br>
return *(_x86RelocationHandler.get());<br>
}<br>
<br>
+ std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {<br>
+ return std::unique_ptr<Reader>(new X86ELFObjectReader(atomizeStrings));<br>
+ }<br>
+<br>
+ std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines) override {<br>
+ return std::unique_ptr<Reader>(new X86ELFDSOReader(useShlibUndefines));<br>
+ }<br>
+<br>
std::unique_ptr<Writer> getWriter() override;<br>
<br>
protected:<br>
<br>
Added: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h?rev=220129&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h?rev=220129&view=auto</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h (added)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h Sat Oct 18 00:23:17 2014<br>
@@ -0,0 +1,73 @@<br>
+//===- lib/ReaderWriter/ELF/X86_64/X86_64ELFFile.h ------------------------===//<br>
+//<br>
+// The LLVM Linker<br>
+//<br>
+// This file is distributed under the University of Illinois Open Source<br>
+// License. See LICENSE.TXT for details.<br>
+//<br>
+//===----------------------------------------------------------------------===//<br>
+<br>
+#ifndef LLD_READER_WRITER_ELF_X86_64_ELF_FILE_H<br>
+#define LLD_READER_WRITER_ELF_X86_64_ELF_FILE_H<br>
+<br>
+#include "ELFReader.h"<br>
+<br>
+namespace lld {<br>
+namespace elf {<br>
+<br>
+class X86_64LinkingContext;<br>
+<br>
+template <class ELFT> class X86_64ELFFile : public ELFFile<ELFT> {<br>
+public:<br>
+ X86_64ELFFile(StringRef name, bool atomizeStrings)<br>
+ : ELFFile<ELFT>(name, atomizeStrings) {}<br>
+<br>
+ X86_64ELFFile(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings,<br>
+ std::error_code &ec)<br>
+ : ELFFile<ELFT>(std::move(mb), atomizeStrings, ec) {}<br>
+<br>
+ static ErrorOr<std::unique_ptr<X86_64ELFFile>><br>
+ create(std::unique_ptr<MemoryBuffer> mb, bool atomizeStrings) {<br>
+ std::error_code ec;<br>
+ std::unique_ptr<X86_64ELFFile<ELFT>> file(<br>
+ new X86_64ELFFile<ELFT>(mb->getBufferIdentifier(), atomizeStrings));<br>
+<br>
+ file->_objFile.reset(<br>
+ new llvm::object::ELFFile<ELFT>(mb.release()->getBuffer(), ec));<br>
+<br>
+ if (ec)<br>
+ return ec;<br>
+<br>
+ // Read input sections from the input file that need to be converted to<br>
+ // atoms<br>
+ if ((ec = file->createAtomizableSections()))<br>
+ return ec;<br>
+<br>
+ // For mergeable strings, we would need to split the section into various<br>
+ // atoms<br>
+ if ((ec = file->createMergeableAtoms()))<br>
+ return ec;<br>
+<br>
+ // Create the necessary symbols that are part of the section that we<br>
+ // created in createAtomizableSections function<br>
+ if ((ec = file->createSymbolsFromAtomizableSections()))<br>
+ return ec;<br>
+<br>
+ // Create the appropriate atoms from the file<br>
+ if ((ec = file->createAtoms()))<br>
+ return ec;<br>
+<br>
+ return std::move(file);<br>
+ }<br>
+};<br>
+<br>
+template <class ELFT> class X86_64DynamicFile : public DynamicFile<ELFT> {<br>
+public:<br>
+ X86_64DynamicFile(const X86_64LinkingContext &context, StringRef name)<br>
+ : DynamicFile<ELFT>(context, name) {}<br>
+};<br>
+<br>
+} // elf<br>
+} // lld<br>
+<br>
+#endif // LLD_READER_WRITER_ELF_X86_64_ELF_FILE_H<br>
<br>
Copied: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h (from r220117, lld/trunk/lib/ReaderWriter/ELF/ELFReader.h)<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h?p2=lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h&p1=lld/trunk/lib/ReaderWriter/ELF/ELFReader.h&r1=220117&r2=220129&rev=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h?p2=lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h&p1=lld/trunk/lib/ReaderWriter/ELF/ELFReader.h&r1=220117&r2=220129&rev=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h Sat Oct 18 00:23:17 2014<br>
@@ -1,4 +1,4 @@<br>
-//===- lib/ReaderWriter/ELF/ELFReader.h -----------------------------------===//<br>
+//===- lib/ReaderWriter/ELF/X86_64/X86_64ELFReader.h ----------------------===//<br>
//<br>
// The LLVM Linker<br>
//<br>
@@ -7,53 +7,47 @@<br>
//<br>
//===----------------------------------------------------------------------===//<br>
<br>
-#ifndef LLD_READER_WRITER_ELF_READER_H<br>
-#define LLD_READER_WRITER_ELF_READER_H<br>
+#ifndef LLD_READER_WRITER_X86_64_X86_64_ELF_READER_H<br>
+#define LLD_READER_WRITER_X86_64_X86_64_ELF_READER_H<br>
<br>
-#include "CreateELF.h"<br>
-#include "DynamicFile.h"<br>
-#include "ELFFile.h"<br>
-<br>
-#include "lld/ReaderWriter/Reader.h"<br>
+#include "ELFReader.h"<br>
+#include "X86_64ELFFile.h"<br>
<br>
namespace lld {<br>
namespace elf {<br>
<br>
-struct DynamicFileCreateELFTraits {<br>
+struct X86_64DynamicFileCreateELFTraits {<br>
typedef llvm::ErrorOr<std::unique_ptr<lld::SharedLibraryFile>> result_type;<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,<br>
bool useUndefines) {<br>
- return lld::elf::DynamicFile<ELFT>::create(std::move(mb), useUndefines);<br>
+ return lld::elf::X86_64DynamicFile<ELFT>::create(std::move(mb),<br>
+ useUndefines);<br>
}<br>
};<br>
<br>
-struct ELFFileCreateELFTraits {<br>
+struct X86_64ELFFileCreateELFTraits {<br>
typedef llvm::ErrorOr<std::unique_ptr<lld::File>> result_type;<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::MemoryBuffer> mb,<br>
bool atomizeStrings) {<br>
- return lld::elf::ELFFile<ELFT>::create(std::move(mb), atomizeStrings);<br>
+ return lld::elf::X86_64ELFFile<ELFT>::create(std::move(mb), atomizeStrings);<br>
}<br>
};<br>
<br>
-class ELFObjectReader : public Reader {<br>
+class X86_64ELFObjectReader : public ELFObjectReader {<br>
public:<br>
- ELFObjectReader(bool atomizeStrings) : _atomizeStrings(atomizeStrings) {}<br>
-<br>
- bool canParse(file_magic magic, StringRef,<br>
- const MemoryBuffer &) const override {<br>
- return (magic == llvm::sys::fs::file_magic::elf_relocatable);<br>
- }<br>
+ X86_64ELFObjectReader(bool atomizeStrings)<br>
+ : ELFObjectReader(atomizeStrings) {}<br>
<br>
std::error_code<br>
parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,<br>
std::vector<std::unique_ptr<File>> &result) const override {<br>
std::size_t maxAlignment =<br>
1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));<br>
- auto f = createELF<ELFFileCreateELFTraits>(<br>
+ auto f = createELF<X86_64ELFFileCreateELFTraits>(<br>
llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,<br>
std::move(mb), _atomizeStrings);<br>
if (std::error_code ec = f.getError())<br>
@@ -61,26 +55,18 @@ public:<br>
result.push_back(std::move(*f));<br>
return std::error_code();<br>
}<br>
-<br>
-protected:<br>
- bool _atomizeStrings;<br>
};<br>
<br>
-class ELFDSOReader : public Reader {<br>
+class X86_64ELFDSOReader : public ELFDSOReader {<br>
public:<br>
- ELFDSOReader(bool useUndefines) : _useUndefines(useUndefines) {}<br>
-<br>
- bool canParse(file_magic magic, StringRef,<br>
- const MemoryBuffer &) const override {<br>
- return (magic == llvm::sys::fs::file_magic::elf_shared_object);<br>
- }<br>
+ X86_64ELFDSOReader(bool useUndefines) : ELFDSOReader(useUndefines) {}<br>
<br>
std::error_code<br>
parseFile(std::unique_ptr<MemoryBuffer> &mb, const class Registry &,<br>
std::vector<std::unique_ptr<File>> &result) const override {<br>
std::size_t maxAlignment =<br>
1ULL << llvm::countTrailingZeros(uintptr_t(mb->getBufferStart()));<br>
- auto f = createELF<DynamicFileCreateELFTraits>(<br>
+ auto f = createELF<X86_64DynamicFileCreateELFTraits>(<br>
llvm::object::getElfArchType(mb->getBuffer()), maxAlignment,<br>
std::move(mb), _useUndefines);<br>
if (std::error_code ec = f.getError())<br>
@@ -88,12 +74,9 @@ public:<br>
result.push_back(std::move(*f));<br>
return std::error_code();<br>
}<br>
-<br>
-protected:<br>
- bool _useUndefines;<br>
};<br>
<br>
} // namespace elf<br>
} // namespace lld<br>
<br>
-#endif // LLD_READER_WRITER_ELF_READER_H<br>
+#endif // LLD_READER_WRITER_ELF_X86_64_X86_64_READER_H<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,16 +8,13 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "X86_64LinkingContext.h"<br>
-<br>
+#include "Atoms.h"<br>
+#include "X86_64RelocationPass.h"<br>
#include "lld/Core/File.h"<br>
#include "lld/Core/Instrumentation.h"<br>
-<br>
#include "llvm/ADT/ArrayRef.h"<br>
#include "llvm/ADT/StringSwitch.h"<br>
<br>
-#include "Atoms.h"<br>
-#include "X86_64RelocationPass.h"<br>
-<br>
using namespace lld;<br>
using namespace lld::elf;<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64LinkingContext.h Sat Oct 18 00:23:17 2014<br>
@@ -11,9 +11,7 @@<br>
#define LLD_READER_WRITER_ELF_X86_64_X86_64_LINKING_CONTEXT_H<br>
<br>
#include "X86_64TargetHandler.h"<br>
-<br>
#include "lld/ReaderWriter/ELFLinkingContext.h"<br>
-<br>
#include "llvm/Object/ELF.h"<br>
#include "llvm/Support/ELF.h"<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -7,8 +7,8 @@<br>
//<br>
//===----------------------------------------------------------------------===//<br>
<br>
-#include "X86_64TargetHandler.h"<br>
#include "X86_64LinkingContext.h"<br>
+#include "X86_64TargetHandler.h"<br>
<br>
using namespace lld;<br>
using namespace elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -28,8 +28,6 @@ public:<br>
const lld::AtomLayout &,<br>
const Reference &) const override;<br>
<br>
- static const Registry::KindStrings kindStrings[];<br>
-<br>
private:<br>
// Cached size of the TLS segment.<br>
mutable uint64_t _tlsSize;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp Sat Oct 18 00:23:17 2014<br>
@@ -20,13 +20,10 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "X86_64RelocationPass.h"<br>
-<br>
-#include "lld/Core/Simple.h"<br>
-<br>
-#include "llvm/ADT/DenseMap.h"<br>
-<br>
#include "Atoms.h"<br>
#include "X86_64LinkingContext.h"<br>
+#include "lld/Core/Simple.h"<br>
+#include "llvm/ADT/DenseMap.h"<br>
<br>
using namespace lld;<br>
using namespace lld::elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.cpp Sat Oct 18 00:23:17 2014<br>
@@ -8,10 +8,10 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "Atoms.h"<br>
-#include "X86_64ExecutableWriter.h"<br>
#include "X86_64DynamicLibraryWriter.h"<br>
-#include "X86_64TargetHandler.h"<br>
+#include "X86_64ExecutableWriter.h"<br>
#include "X86_64LinkingContext.h"<br>
+#include "X86_64TargetHandler.h"<br>
<br>
using namespace lld;<br>
using namespace elf;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/X86_64/X86_64TargetHandler.h Sat Oct 18 00:23:17 2014<br>
@@ -11,10 +11,10 @@<br>
#define LLD_READER_WRITER_ELF_X86_64_X86_64_TARGET_HANDLER_H<br>
<br>
#include "DefaultTargetHandler.h"<br>
-#include "ELFFile.h"<br>
-#include "X86_64RelocationHandler.h"<br>
#include "TargetLayout.h"<br>
-<br>
+#include "X86_64ELFFile.h"<br>
+#include "X86_64ELFReader.h"<br>
+#include "X86_64RelocationHandler.h"<br>
#include "lld/Core/Simple.h"<br>
<br>
namespace lld {<br>
@@ -43,6 +43,14 @@ public:<br>
return *(_x86_64RelocationHandler.get());<br>
}<br>
<br>
+ std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {<br>
+ return std::unique_ptr<Reader>(new X86_64ELFObjectReader(atomizeStrings));<br>
+ }<br>
+<br>
+ std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines) override {<br>
+ return std::unique_ptr<Reader>(new X86_64ELFDSOReader(useShlibUndefines));<br>
+ }<br>
+<br>
std::unique_ptr<Writer> getWriter() override;<br>
<br>
private:<br>
<br>
Modified: lld/trunk/test/elf/symbols.test<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/symbols.test?rev=220129&r1=220128&r2=220129&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/symbols.test?rev=220129&r1=220128&r2=220129&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/elf/symbols.test (original)<br>
+++ lld/trunk/test/elf/symbols.test Sat Oct 18 00:23:17 2014<br>
@@ -19,15 +19,15 @@ RUN: llvm-nm -n %t1 | FileCheck -check-p<br>
RUN: lld -flavor gnu -shared -target i386 -e main %p/Inputs/writersyms.o -o %t1<br>
RUN: llvm-nm -n %t1 | FileCheck -check-prefix CHECKSHAREDSYMS %s<br>
<br>
-CHECKSYMS: 00000000 a 1.c<br>
-CHECKSYMS: 00000134 T main<br>
-CHECKSYMS: 00001000 A __bss_start<br>
-CHECKSYMS: 00001000 B a<br>
-CHECKSYMS: 00001004 A __bss_end<br>
-CHECKSYMS: 00001004 A _end<br>
-CHECKSYMS: 00001004 A end<br>
+CHECKSYMS: {{[0-9a-f]+}} a 1.c<br>
+CHECKSYMS: {{[0-9a-f]+}} T main<br>
+CHECKSYMS: {{[0-9a-f]+}} A __bss_start<br>
+CHECKSYMS: {{[0-9a-f]+}} B a<br>
+CHECKSYMS: {{[0-9a-f]+}} A __bss_end<br>
+CHECKSYMS: {{[0-9a-f]+}} A _end<br>
+CHECKSYMS: {{[0-9a-f]+}} A end<br>
<br>
-CHECKSHAREDSYMS: 00000000 a 1.c<br>
-CHECKSHAREDSYMS: 0000010c T main<br>
-CHECKSHAREDSYMS: 00001000 B a<br>
-CHECKSHAREDSYMS: 00001004 A _end<br>
+CHECKSHAREDSYMS: {{[0-9a-f]+}} a 1.c<br>
+CHECKSHAREDSYMS: {{[0-9a-f]+}} T main<br>
+CHECKSHAREDSYMS: {{[0-9a-f]+}} B a<br>
+CHECKSHAREDSYMS: {{[0-9a-f]+}} A _end<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>