<div dir="ltr">So... why is it more preferred?</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 12, 2015 at 12:48 PM, Shankar Easwaran <span dir="ltr"><<a href="mailto:shankare@codeaurora.org" target="_blank">shankare@codeaurora.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">It is more preferred that each architecture/target was passed its specific linking context.<div class="HOEnZb"><div class="h5"><br>
<br>
On 2/12/2015 2:43 PM, Rui Ueyama wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'm sorry, but what I was asking is a reason.<br>
<br>
On Thu, Feb 12, 2015 at 12:34 PM, Shankar Easwaran <<a href="mailto:shankare@codeaurora.org" target="_blank">shankare@codeaurora.org</a>><br>
wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Yes, its needed as all the create functions have a architecture specific<br>
LinkingContext.<br>
<br>
<br>
On 2/12/2015 2:31 PM, Rui Ueyama wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
One question is if we really had to pass <arch>ELFLinkingContext instead<br>
of<br>
plain ELFLinkingContext to the ELFObjectReader? You parameterized that<br>
type<br>
as ContextT, but seems like it doesn't have to be an architecture-specific<br>
subclass of ELFLinkingContext.<br>
<br>
On Thu, Feb 12, 2015 at 12:06 PM, Rui Ueyama <<a href="mailto:ruiu@google.com" target="_blank">ruiu@google.com</a>> wrote:<br>
<br>
This is a large patch that possibly many places in ELF. Since many people<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
are interested in LLD ELF support and code health of LLD in general,<br>
please<br>
send this kind of patch to review before submitting in the future.<br>
Thanks.<br>
<br>
On Wed, Feb 11, 2015 at 9:02 PM, Shankar Easwaran <<br>
<a href="mailto:shankare@codeaurora.org" target="_blank">shankare@codeaurora.org</a><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
wrote:<br>
Author: shankare<br>
Date: Wed Feb 11 23:02:41 2015<br>
New Revision: 228905<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=228905&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=228905&view=rev</a><br>
Log:<br>
[ELF] Add LinkingContext to the ELFReader.<br>
<br>
This adds the LinkingContext parameter to the ELFReader. Previously the<br>
flags in<br>
that were needed in the Context was passed to the ELFReader, this made<br>
it<br>
very<br>
hard to access data structures in the LinkingContext when reading an ELF<br>
file.<br>
<br>
This change makes the ELFReader more flexible so that required<br>
parameters<br>
can be<br>
grabbed directly from the LinkingContext.<br>
<br>
Future patches make use of the changes.<br>
<br>
There is no change in functionality though.<br>
<br>
Modified:<br>
lld/trunk/include/lld/Core/<u></u>Reader.h<br>
lld/trunk/include/lld/<u></u>ReaderWriter/<u></u>ELFLinkingContext.h<br>
lld/trunk/lib/Driver/<u></u>GnuLdDriver.cpp<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/AArch64ELFFile.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/AArch64ELFReader.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64TargetHandler.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMELFFile.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMELFReader.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMTargetHandler.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/DefaultTargetHandler.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/DynamicFile.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/DynamicLibraryWriter.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/ELFFile.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/ELFReader.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/ExecutableWriter.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/HexagonELFFile.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/HexagonELFReader.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonExecutableAtoms.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonTargetHandler.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsELFFile.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsELFReader.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsTargetHandler.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/Reader.cpp<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/TargetHandler.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86ELFFile.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86ELFReader.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86TargetHandler.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_64ELFFile.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_64ELFReader.h<br>
lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64TargetHandler.h<br>
<br>
Modified: lld/trunk/include/lld/Core/<u></u>Reader.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/include/lld/</a><br>
Core/Reader.h?rev=228905&r1=<u></u>228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/include/lld/Core/<u></u>Reader.h (original)<br>
+++ lld/trunk/include/lld/Core/<u></u>Reader.h Wed Feb 11 23:02:41 2015<br>
@@ -122,9 +122,8 @@ public:<br>
void addSupportCOFFObjects(<u></u>PECOFFLinkingContext &);<br>
void addSupportCOFFImportLibraries(<u></u>PECOFFLinkingContext &);<br>
void addSupportMachOObjects(<u></u>MachOLinkingContext &);<br>
- void addSupportELFObjects(bool atomizeStrings, TargetHandlerBase<br>
*handler);<br>
- void addSupportELFDynamicSharedObje<u></u>cts(bool useShlibUndefines,<br>
- TargetHandlerBase *handler);<br>
+ void addSupportELFObjects(<u></u>ELFLinkingContext &);<br>
+ void addSupportELFDynamicSharedObje<u></u>cts(ELFLinkingContext &);<br>
<br>
/// To convert between kind values and names, the registry walks the<br>
list<br>
/// of registered kind tables. Each table is a zero terminated<br>
array of<br>
<br>
Modified: lld/trunk/include/lld/<u></u>ReaderWriter/<u></u>ELFLinkingContext.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/ReaderWriter/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/include/lld/<u></u>ReaderWriter/</a><br>
ELFLinkingContext.h?rev=<u></u>228905&r1=228904&r2=228905&<u></u>view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/include/lld/<u></u>ReaderWriter/<u></u>ELFLinkingContext.h (original)<br>
+++ lld/trunk/include/lld/<u></u>ReaderWriter/<u></u>ELFLinkingContext.h Wed Feb 11<br>
23:02:41 2015<br>
@@ -38,9 +38,9 @@ public:<br>
virtual ~TargetHandlerBase() {}<br>
virtual void registerRelocationNames(<u></u>Registry &) = 0;<br>
<br>
- virtual std::unique_ptr<Reader> getObjReader(bool) = 0;<br>
+ virtual std::unique_ptr<Reader> getObjReader() = 0;<br>
<br>
- virtual std::unique_ptr<Reader> getDSOReader(bool) = 0;<br>
+ virtual std::unique_ptr<Reader> getDSOReader() = 0;<br>
<br>
virtual std::unique_ptr<Writer> getWriter() = 0;<br>
};<br>
<br>
Modified: lld/trunk/lib/Driver/<u></u>GnuLdDriver.cpp<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/Driver/</a><br>
GnuLdDriver.cpp?rev=228905&r1=<u></u>228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/Driver/<u></u>GnuLdDriver.cpp (original)<br>
+++ lld/trunk/lib/Driver/<u></u>GnuLdDriver.cpp Wed Feb 11 23:02:41 2015<br>
@@ -587,15 +587,12 @@ bool GnuLdDriver::parse(int argc, const<br>
}<br>
<br>
// Register possible input file parsers.<br>
- ctx->registry().<u></u>addSupportELFObjects(<br>
- ctx->mergeCommonStrings(),<br>
- ctx->targetHandler());<br>
+ ctx->registry().<u></u>addSupportELFObjects(*ctx);<br>
ctx->registry().<u></u>addSupportArchives(ctx-><u></u>logInputFiles());<br>
ctx->registry().<u></u>addSupportYamlFiles();<br>
ctx->registry().<u></u>addSupportNativeObjects();<br>
if (ctx-><u></u>allowLinkWithDynamicLibraries(<u></u>))<br>
- ctx->registry().<u></u>addSupportELFDynamicSharedObje<u></u>cts(<br>
- ctx->useShlibUndefines(), ctx->targetHandler());<br>
+ ctx->registry().<u></u>addSupportELFDynamicSharedObje<u></u>cts(*ctx);<br>
<br>
std::stack<int> groupStack;<br>
int numfiles = 0;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/AArch64ELFFile.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/AArch64/<u></u>AArch64ELFFile.h?rev=228905&<br>
r1=228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/AArch64ELFFile.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/AArch64ELFFile.h Wed Feb 11<br>
23:02:41 2015<br>
@@ -19,13 +19,13 @@ class AArch64LinkingContext;<br>
<br>
template <class ELFT> class AArch64ELFFile : public ELFFile<ELFT> {<br>
public:<br>
- AArch64ELFFile(std::unique_<u></u>ptr<MemoryBuffer> mb, bool<br>
atomizeStrings)<br>
- : ELFFile<ELFT>(std::move(mb), atomizeStrings) {}<br>
+ AArch64ELFFile(std::unique_<u></u>ptr<MemoryBuffer> mb,<br>
AArch64LinkingContext<br>
&ctx)<br>
+ : ELFFile<ELFT>(std::move(mb), ctx) {}<br>
<br>
static ErrorOr<std::unique_ptr<<u></u>AArch64ELFFile>><br>
- create(std::unique_ptr<<u></u>MemoryBuffer> mb, bool atomizeStrings) {<br>
+ create(std::unique_ptr<<u></u>MemoryBuffer> mb, AArch64LinkingContext<br>
&ctx) {<br>
return std::unique_ptr<<u></u>AArch64ELFFile<ELFT>>(<br>
- new AArch64ELFFile<ELFT>(std::<u></u>move(mb), atomizeStrings));<br>
+ new AArch64ELFFile<ELFT>(std::<u></u>move(mb), ctx));<br>
}<br>
};<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/AArch64ELFReader.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/AArch64/<u></u>AArch64ELFReader.h?rev=228905&<br>
r1=228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/AArch64ELFReader.h<br>
(original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/AArch64ELFReader.h Wed Feb<br>
11<br>
23:02:41 2015<br>
@@ -23,9 +23,8 @@ struct AArch64DynamicFileCreateELFTra<u></u>its<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool useUndefines) {<br>
- return lld::elf::AArch64DynamicFile<<u></u>ELFT>::create(std::move(mb),<br>
- useUndefines);<br>
+ AArch64LinkingContext &ctx) {<br>
+ return lld::elf::AArch64DynamicFile<<u></u>ELFT>::create(std::move(mb),<br>
ctx);<br>
}<br>
};<br>
<br>
@@ -34,26 +33,27 @@ struct AArch64ELFFileCreateELFTraits {<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool atomizeStrings) {<br>
- return lld::elf::AArch64ELFFile<ELFT><u></u>::create(std::move(mb),<br>
- atomizeStrings);<br>
+ AArch64LinkingContext &ctx) {<br>
+ return lld::elf::AArch64ELFFile<ELFT><u></u>::create(std::move(mb), ctx);<br>
}<br>
};<br>
<br>
class AArch64ELFObjectReader<br>
- : public ELFObjectReader<<u></u>AArch64ELFType,<br>
AArch64ELFFileCreateELFTraits> {<br>
+ : public ELFObjectReader<<u></u>AArch64ELFType,<br>
AArch64ELFFileCreateELFTraits,<br>
+ AArch64LinkingContext> {<br>
public:<br>
- AArch64ELFObjectReader(bool atomizeStrings)<br>
- : ELFObjectReader<<u></u>AArch64ELFType, AArch64ELFFileCreateELFTraits><br>
(<br>
- atomizeStrings, llvm::ELF::EM_AARCH64) {}<br>
+ AArch64ELFObjectReader(<u></u>AArch64LinkingContext &ctx)<br>
+ : ELFObjectReader<<u></u>AArch64ELFType, AArch64ELFFileCreateELFTraits,<br>
+ AArch64LinkingContext>(ctx,<br>
llvm::ELF::EM_AARCH64) {}<br>
};<br>
<br>
class AArch64ELFDSOReader<br>
- : public ELFDSOReader<AArch64ELFType,<br>
AArch64DynamicFileCreateELFTra<u></u>its> {<br>
+ : public ELFDSOReader<AArch64ELFType,<br>
AArch64DynamicFileCreateELFTra<u></u>its,<br>
+ AArch64LinkingContext> {<br>
public:<br>
- AArch64ELFDSOReader(bool useUndefines)<br>
- : ELFDSOReader<AArch64ELFType, AArch64DynamicFileCreateELFTra<br>
its>(<br>
- useUndefines, llvm::ELF::EM_AARCH64) {}<br>
+ AArch64ELFDSOReader(<u></u>AArch64LinkingContext &ctx)<br>
+ : ELFDSOReader<AArch64ELFType, AArch64DynamicFileCreateELFTra<br>
its,<br>
+ AArch64LinkingContext>(ctx, llvm::ELF::EM_AARCH64)<br>
{}<br>
};<br>
<br>
} // namespace elf<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64TargetHandler.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/AArch64/<u></u>AArch64TargetHandler.h?rev=<br>
228905&r1=228904&r2=228905&<u></u>view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64TargetHandler.h<br>
(original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/AArch64/<u></u>AArch64TargetHandler.h Wed<br>
Feb<br>
11 23:02:41 2015<br>
@@ -41,12 +41,12 @@ public:<br>
return *(_AArch64RelocationHandler.<u></u>get());<br>
}<br>
<br>
- std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {<br>
- return std::unique_ptr<Reader>(new<br>
AArch64ELFObjectReader(<u></u>atomizeStrings));<br>
+ std::unique_ptr<Reader> getObjReader() override {<br>
+ return std::unique_ptr<Reader>(new AArch64ELFObjectReader(_<br>
context));<br>
}<br>
<br>
- std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines)<br>
override {<br>
- return std::unique_ptr<Reader>(new<br>
AArch64ELFDSOReader(<u></u>useShlibUndefines));<br>
+ std::unique_ptr<Reader> getDSOReader() override {<br>
+ return std::unique_ptr<Reader>(new AArch64ELFDSOReader(_context))<u></u>;<br>
}<br>
<br>
std::unique_ptr<Writer> getWriter() override;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMELFFile.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/ARM/</a><br>
ARMELFFile.h?rev=228905&r1=<u></u>228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMELFFile.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMELFFile.h Wed Feb 11 23:02:41<br>
2015<br>
@@ -52,13 +52,13 @@ public:<br>
<br>
template <class ELFT> class ARMELFFile : public ELFFile<ELFT> {<br>
public:<br>
- ARMELFFile(std::unique_ptr<<u></u>MemoryBuffer> mb, bool atomizeStrings)<br>
- : ELFFile<ELFT>(std::move(mb), atomizeStrings) {}<br>
+ ARMELFFile(std::unique_ptr<<u></u>MemoryBuffer> mb, ARMLinkingContext &ctx)<br>
+ : ELFFile<ELFT>(std::move(mb), ctx) {}<br>
<br>
static ErrorOr<std::unique_ptr<<u></u>ARMELFFile>><br>
- create(std::unique_ptr<<u></u>MemoryBuffer> mb, bool atomizeStrings) {<br>
+ create(std::unique_ptr<<u></u>MemoryBuffer> mb, ARMLinkingContext &ctx) {<br>
return std::unique_ptr<ARMELFFile<<u></u>ELFT>>(<br>
- new ARMELFFile<ELFT>(std::move(mb)<u></u>, atomizeStrings));<br>
+ new ARMELFFile<ELFT>(std::move(mb)<u></u>, ctx));<br>
}<br>
<br>
private:<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMELFReader.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/ARM/</a><br>
ARMELFReader.h?rev=228905&r1=<u></u>228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMELFReader.h Wed Feb 11<br>
23:02:41<br>
2015<br>
@@ -23,8 +23,8 @@ struct ARMDynamicFileCreateELFTraits {<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool useUndefines) {<br>
- return lld::elf::ARMDynamicFile<ELFT><u></u>::create(std::move(mb),<br>
useUndefines);<br>
+ ARMLinkingContext &ctx) {<br>
+ return lld::elf::ARMDynamicFile<ELFT><u></u>::create(std::move(mb), ctx);<br>
}<br>
};<br>
<br>
@@ -33,25 +33,27 @@ struct ARMELFFileCreateELFTraits {<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool atomizeStrings) {<br>
- return lld::elf::ARMELFFile<ELFT>::<u></u>create(std::move(mb),<br>
atomizeStrings);<br>
+ ARMLinkingContext &ctx) {<br>
+ return lld::elf::ARMELFFile<ELFT>::<u></u>create(std::move(mb), ctx);<br>
}<br>
};<br>
<br>
class ARMELFObjectReader<br>
- : public ELFObjectReader<ARMELFType, ARMELFFileCreateELFTraits> {<br>
+ : public ELFObjectReader<ARMELFType, ARMELFFileCreateELFTraits,<br>
+ ARMLinkingContext> {<br>
public:<br>
- ARMELFObjectReader(bool atomizeStrings)<br>
- : ELFObjectReader<ARMELFType, ARMELFFileCreateELFTraits>(<br>
- atomizeStrings, llvm::ELF::EM_ARM) {}<br>
+ ARMELFObjectReader(<u></u>ARMLinkingContext &ctx)<br>
+ : ELFObjectReader<ARMELFType, ARMELFFileCreateELFTraits,<br>
+ ARMLinkingContext>(ctx, llvm::ELF::EM_ARM) {}<br>
};<br>
<br>
class ARMELFDSOReader<br>
- : public ELFDSOReader<ARMELFType, ARMDynamicFileCreateELFTraits> {<br>
+ : public ELFDSOReader<ARMELFType, ARMDynamicFileCreateELFTraits,<br>
+ ARMLinkingContext> {<br>
public:<br>
- ARMELFDSOReader(bool useUndefines)<br>
- : ELFDSOReader<ARMELFType, ARMDynamicFileCreateELFTraits><u></u>(<br>
- useUndefines, llvm::ELF::EM_ARM) {}<br>
+ ARMELFDSOReader(<u></u>ARMLinkingContext &ctx)<br>
+ : ELFDSOReader<ARMELFType, ARMDynamicFileCreateELFTraits,<br>
+ ARMLinkingContext>(ctx, llvm::ELF::EM_ARM) {}<br>
};<br>
<br>
} // namespace elf<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMTargetHandler.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/ARM/</a><br>
ARMTargetHandler.h?rev=228905&<u></u>r1=228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMTargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/ARM/ARMTargetHandler.h Wed Feb 11<br>
23:02:41 2015<br>
@@ -45,12 +45,12 @@ public:<br>
return *(_armRelocationHandler.get())<u></u>;<br>
}<br>
<br>
- std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {<br>
- return std::unique_ptr<Reader>(new<br>
ARMELFObjectReader(<u></u>atomizeStrings));<br>
+ std::unique_ptr<Reader> getObjReader() override {<br>
+ return std::unique_ptr<Reader>(new ARMELFObjectReader(_context));<br>
}<br>
<br>
- std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines)<br>
override {<br>
- return std::unique_ptr<Reader>(new<br>
ARMELFDSOReader(<u></u>useShlibUndefines));<br>
+ std::unique_ptr<Reader> getDSOReader() override {<br>
+ return std::unique_ptr<Reader>(new ARMELFDSOReader(_context));<br>
}<br>
<br>
std::unique_ptr<Writer> getWriter() override;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/DefaultTargetHandler.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/</a><br>
DefaultTargetHandler.h?rev=<u></u>228905&r1=228904&r2=228905&<u></u>view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/DefaultTargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/DefaultTargetHandler.h Wed Feb 11<br>
23:02:41 2015<br>
@@ -26,9 +26,9 @@ class DefaultTargetHandler : public Targ<br>
public:<br>
const TargetRelocationHandler &getRelocationHandler() const = 0;<br>
<br>
- virtual std::unique_ptr<Reader> getObjReader(bool atomizeStrings) =<br>
0;<br>
+ virtual std::unique_ptr<Reader> getObjReader() = 0;<br>
<br>
- virtual std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines)<br>
=<br>
0;<br>
+ virtual std::unique_ptr<Reader> getDSOReader() = 0;<br>
<br>
virtual std::unique_ptr<Writer> getWriter() = 0;<br>
};<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/DynamicFile.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/DynamicFile.<u></u>h?rev=228905&r1=228904&r2=<u></u>228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/DynamicFile.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/DynamicFile.h Wed Feb 11 23:02:41<br>
2015<br>
@@ -22,7 +22,7 @@ namespace elf {<br>
template <class ELFT> class DynamicFile : public SharedLibraryFile {<br>
public:<br>
static ErrorOr<std::unique_ptr<<u></u>DynamicFile>><br>
- create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb, bool<br>
useShlibUndefines);<br>
+ create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb, ELFLinkingContext<br>
&ctx);<br>
<br>
const SharedLibraryAtom *exports(StringRef name,<br>
bool dataSymbolOnly) const<br>
override {<br>
@@ -84,9 +84,9 @@ protected:<br>
}<br>
<br>
private:<br>
- DynamicFile(std::unique_ptr<<u></u>MemoryBuffer> mb, bool<br>
useShlibUndefines)<br>
- : SharedLibraryFile(mb-><u></u>getBufferIdentifier()),<br>
- _mb(std::move(mb)), _useShlibUndefines(<u></u>useShlibUndefines) {}<br>
+ DynamicFile(std::unique_ptr<<u></u>MemoryBuffer> mb, ELFLinkingContext<br>
&ctx)<br>
+ : SharedLibraryFile(mb-><u></u>getBufferIdentifier()),<br>
_mb(std::move(mb)),<br>
+ _ctx(ctx), _useShlibUndefines(ctx.<u></u>useShlibUndefines()) {}<br>
<br>
mutable llvm::BumpPtrAllocator _alloc;<br>
std::unique_ptr<llvm::object::<u></u>ELFFile<ELFT>> _objFile;<br>
@@ -100,6 +100,7 @@ private:<br>
};<br>
<br>
std::unique_ptr<MemoryBuffer> _mb;<br>
+ ELFLinkingContext &_ctx;<br>
bool _useShlibUndefines;<br>
mutable std::unordered_map<StringRef, SymAtomPair> _nameToSym;<br>
};<br>
@@ -107,9 +108,8 @@ private:<br>
template <class ELFT><br>
ErrorOr<std::unique_ptr<<u></u>DynamicFile<ELFT>>><br>
DynamicFile<ELFT>::create(std:<u></u>:unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool useShlibUndefines) {<br>
- return std::unique_ptr<DynamicFile>(<br>
- new DynamicFile(std::move(mb), useShlibUndefines));<br>
+ ELFLinkingContext &ctx) {<br>
+ return std::unique_ptr<DynamicFile>(<u></u>new DynamicFile(std::move(mb),<br>
ctx));<br>
}<br>
<br>
} // end namespace elf<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/DynamicLibraryWriter.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/</a><br>
DynamicLibraryWriter.h?rev=<u></u>228905&r1=228904&r2=228905&<u></u>view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/DynamicLibraryWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/DynamicLibraryWriter.h Wed Feb 11<br>
23:02:41 2015<br>
@@ -25,8 +25,7 @@ class DynamicLibraryWriter;<br>
template<class ELFT><br>
class DynamicLibraryWriter : public OutputELFWriter<ELFT> {<br>
public:<br>
- DynamicLibraryWriter(const ELFLinkingContext &context,<br>
- TargetLayout<ELFT> &layout)<br>
+ DynamicLibraryWriter(<u></u>ELFLinkingContext &context, TargetLayout<ELFT><br>
&layout)<br>
: OutputELFWriter<ELFT>(context, layout),<br>
_runtimeFile(new CRuntimeFile<ELFT>(context)) {}<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/ELFFile.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/ELFFile.h?<u></u>rev=228905&r1=228904&r2=<u></u>228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/ELFFile.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/ELFFile.h Wed Feb 11 23:02:41 2015<br>
@@ -115,17 +115,18 @@ template <class ELFT> class ELFFile : pu<br>
typedef typename MergedSectionMapT::iterator MergedSectionMapIterT;<br>
<br>
public:<br>
- ELFFile(StringRef name)<br>
- : File(name, kindObject), _ordinal(0), _doStringsMerge(false) {<br>
+ ELFFile(StringRef name, ELFLinkingContext &ctx)<br>
+ : File(name, kindObject), _ordinal(0),<br>
+ _doStringsMerge(ctx.<u></u>mergeCommonStrings()), _ctx(ctx) {<br>
setLastError(std::error_code()<u></u>);<br>
}<br>
<br>
- ELFFile(std::unique_ptr<<u></u>MemoryBuffer> mb, bool atomizeStrings =<br>
false)<br>
+ ELFFile(std::unique_ptr<<u></u>MemoryBuffer> mb, ELFLinkingContext &ctx)<br>
: File(mb->getBufferIdentifier()<u></u>, kindObject),<br>
_mb(std::move(mb)),<br>
- _ordinal(0), _doStringsMerge(<u></u>atomizeStrings) {}<br>
+ _ordinal(0), _doStringsMerge(ctx.<u></u>mergeCommonStrings()),<br>
_ctx(ctx) {}<br>
<br>
static ErrorOr<std::unique_ptr<<u></u>ELFFile>><br>
- create(std::unique_ptr<<u></u>MemoryBuffer> mb, bool atomizeStrings);<br>
+ create(std::unique_ptr<<u></u>MemoryBuffer> mb, ELFLinkingContext &ctx);<br>
<br>
virtual Reference::KindArch kindArch();<br>
<br>
@@ -360,6 +361,9 @@ protected:<br>
<br>
/// \brief the cached options relevant while reading the ELF File<br>
bool _doStringsMerge;<br>
+<br>
+ /// \brief The LinkingContext.<br>
+ ELFLinkingContext &_ctx;<br>
};<br>
<br>
/// \brief All atoms are owned by a File. To add linker specific atoms<br>
@@ -370,8 +374,8 @@ protected:<br>
template <class ELFT> class CRuntimeFile : public ELFFile<ELFT> {<br>
public:<br>
typedef llvm::object::Elf_Sym_Impl<<u></u>ELFT> Elf_Sym;<br>
- CRuntimeFile(const ELFLinkingContext &context, StringRef name = "C<br>
runtime")<br>
- : ELFFile<ELFT>(name) {}<br>
+ CRuntimeFile(ELFLinkingContext &context, StringRef name = "C<br>
runtime")<br>
+ : ELFFile<ELFT>(name, context) {}<br>
<br>
/// \brief add a global absolute atom<br>
virtual Atom *addAbsoluteAtom(StringRef symbolName) {<br>
@@ -411,9 +415,9 @@ public:<br>
<br>
template <class ELFT><br>
ErrorOr<std::unique_ptr<<u></u>ELFFile<ELFT>>><br>
-ELFFile<ELFT>::create(std::<u></u>unique_ptr<MemoryBuffer> mb, bool<br>
atomizeStrings) {<br>
- std::unique_ptr<ELFFile<ELFT>> file(<br>
- new ELFFile<ELFT>(std::move(mb), atomizeStrings));<br>
+ELFFile<ELFT>::create(std::<u></u>unique_ptr<MemoryBuffer> mb,<br>
+ ELFLinkingContext &ctx) {<br>
+ std::unique_ptr<ELFFile<ELFT>> file(new ELFFile<ELFT>(std::move(mb),<br>
ctx));<br>
return std::move(file);<br>
}<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/ELFReader.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/ELFReader.h?<u></u>rev=228905&r1=228904&r2=<u></u>228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/ELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/ELFReader.h Wed Feb 11 23:02:41 2015<br>
@@ -18,13 +18,13 @@<br>
namespace lld {<br>
namespace elf {<br>
<br>
-template <typename ELFT, typename ELFTraitsT><br>
+template <typename ELFT, typename ELFTraitsT, typename ContextT><br>
class ELFObjectReader : public Reader {<br>
public:<br>
typedef llvm::object::Elf_Ehdr_Impl<<u></u>ELFT> Elf_Ehdr;<br>
<br>
- ELFObjectReader(bool atomizeStrings, uint64_t machine)<br>
- : _atomizeStrings(<u></u>atomizeStrings), _machine(machine) {}<br>
+ ELFObjectReader(ContextT &ctx, uint64_t machine)<br>
+ : _ctx(ctx), _machine(machine) {}<br>
<br>
bool canParse(file_magic magic, StringRef,<br>
const MemoryBuffer &buf) const override {<br>
@@ -39,7 +39,7 @@ public:<br>
1ULL <<<br>
llvm::countTrailingZeros(<u></u>uintptr_t(mb->getBufferStart()<u></u>));<br>
auto f =<br>
<br>
createELF<ELFTraitsT>(llvm::<u></u>object::getElfArchType(mb-><u></u>getBuffer()),<br>
- maxAlignment, std::move(mb),<br>
_atomizeStrings);<br>
+ maxAlignment, std::move(mb), _ctx);<br>
if (std::error_code ec = f.getError())<br>
return ec;<br>
result.push_back(std::move(*f)<u></u>);<br>
@@ -53,17 +53,17 @@ public:<br>
}<br>
<br>
protected:<br>
- bool _atomizeStrings;<br>
+ ContextT &_ctx;<br>
uint64_t _machine;<br>
};<br>
<br>
-template <typename ELFT, typename ELFTraitsT><br>
+template <typename ELFT, typename ELFTraitsT, typename ContextT><br>
class ELFDSOReader : public Reader {<br>
public:<br>
typedef llvm::object::Elf_Ehdr_Impl<<u></u>ELFT> Elf_Ehdr;<br>
<br>
- ELFDSOReader(bool useUndefines, uint64_t machine)<br>
- : _useUndefines(useUndefines), _machine(machine) {}<br>
+ ELFDSOReader(ContextT &ctx, uint64_t machine)<br>
+ : _ctx(ctx), _machine(machine) {}<br>
<br>
bool canParse(file_magic magic, StringRef,<br>
const MemoryBuffer &buf) const override {<br>
@@ -78,7 +78,7 @@ public:<br>
1ULL <<<br>
llvm::countTrailingZeros(<u></u>uintptr_t(mb->getBufferStart()<u></u>));<br>
auto f =<br>
<br>
createELF<ELFTraitsT>(llvm::<u></u>object::getElfArchType(mb-><u></u>getBuffer()),<br>
- maxAlignment, std::move(mb),<br>
_useUndefines);<br>
+ maxAlignment, std::move(mb), _ctx);<br>
if (std::error_code ec = f.getError())<br>
return ec;<br>
result.push_back(std::move(*f)<u></u>);<br>
@@ -92,7 +92,7 @@ public:<br>
}<br>
<br>
protected:<br>
- bool _useUndefines;<br>
+ ContextT &_ctx;<br>
uint64_t _machine;<br>
};<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/ExecutableWriter.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/</a><br>
ExecutableWriter.h?rev=228905&<u></u>r1=228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/ExecutableWriter.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/ExecutableWriter.h Wed Feb 11<br>
23:02:41<br>
2015<br>
@@ -25,7 +25,7 @@ class ExecutableWriter;<br>
template<class ELFT><br>
class ExecutableWriter : public OutputELFWriter<ELFT> {<br>
public:<br>
- ExecutableWriter(const ELFLinkingContext &context, TargetLayout<ELFT><br>
&layout)<br>
+ ExecutableWriter(<u></u>ELFLinkingContext &context, TargetLayout<ELFT><br>
&layout)<br>
: OutputELFWriter<ELFT>(context, layout),<br>
_runtimeFile(new CRuntimeFile<ELFT>(context)) {}<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/HexagonELFFile.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/Hexagon/<u></u>HexagonELFFile.h?rev=228905&<br>
r1=228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/HexagonELFFile.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/HexagonELFFile.h Wed Feb 11<br>
23:02:41 2015<br>
@@ -114,13 +114,13 @@ template <class ELFT> class HexagonELFFi<br>
typedef llvm::object::Elf_Shdr_Impl<<u></u>ELFT> Elf_Shdr;<br>
<br>
public:<br>
- HexagonELFFile(std::unique_<u></u>ptr<MemoryBuffer> mb, bool<br>
atomizeStrings)<br>
- : ELFFile<ELFT>(std::move(mb), atomizeStrings) {}<br>
+ HexagonELFFile(std::unique_<u></u>ptr<MemoryBuffer> mb,<br>
HexagonLinkingContext<br>
&ctx)<br>
+ : ELFFile<ELFT>(std::move(mb), ctx) {}<br>
<br>
static ErrorOr<std::unique_ptr<<u></u>HexagonELFFile>><br>
- create(std::unique_ptr<<u></u>MemoryBuffer> mb, bool atomizeStrings) {<br>
+ create(std::unique_ptr<<u></u>MemoryBuffer> mb, HexagonLinkingContext<br>
&ctx) {<br>
return std::unique_ptr<<u></u>HexagonELFFile<ELFT>>(<br>
- new HexagonELFFile<ELFT>(std::<u></u>move(mb), atomizeStrings));<br>
+ new HexagonELFFile<ELFT>(std::<u></u>move(mb), ctx));<br>
}<br>
<br>
bool isCommonSymbol(const Elf_Sym *symbol) const override {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/HexagonELFReader.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/Hexagon/<u></u>HexagonELFReader.h?rev=228905&<br>
r1=228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/HexagonELFReader.h<br>
(original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/HexagonELFReader.h Wed Feb<br>
11<br>
23:02:41 2015<br>
@@ -23,9 +23,8 @@ struct HexagonDynamicFileCreateELFTra<u></u>its<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool useUndefines) {<br>
- return lld::elf::HexagonDynamicFile<<u></u>ELFT>::create(std::move(mb),<br>
- useUndefines);<br>
+ HexagonLinkingContext &ctx) {<br>
+ return lld::elf::HexagonDynamicFile<<u></u>ELFT>::create(std::move(mb),<br>
ctx);<br>
}<br>
};<br>
<br>
@@ -34,26 +33,27 @@ struct HexagonELFFileCreateELFTraits {<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool atomizeStrings) {<br>
- return lld::elf::HexagonELFFile<ELFT><u></u>::create(std::move(mb),<br>
- atomizeStrings);<br>
+ HexagonLinkingContext &ctx) {<br>
+ return lld::elf::HexagonELFFile<ELFT><u></u>::create(std::move(mb), ctx);<br>
}<br>
};<br>
<br>
class HexagonELFObjectReader<br>
- : public ELFObjectReader<<u></u>HexagonELFType,<br>
HexagonELFFileCreateELFTraits> {<br>
+ : public ELFObjectReader<<u></u>HexagonELFType,<br>
HexagonELFFileCreateELFTraits,<br>
+ HexagonLinkingContext> {<br>
public:<br>
- HexagonELFObjectReader(bool atomizeStrings)<br>
- : ELFObjectReader<<u></u>HexagonELFType, HexagonELFFileCreateELFTraits><br>
(<br>
- atomizeStrings, llvm::ELF::EM_HEXAGON) {}<br>
+ HexagonELFObjectReader(<u></u>HexagonLinkingContext &ctx)<br>
+ : ELFObjectReader<<u></u>HexagonELFType, HexagonELFFileCreateELFTraits,<br>
+ HexagonLinkingContext>(ctx,<br>
llvm::ELF::EM_HEXAGON) {}<br>
};<br>
<br>
class HexagonELFDSOReader<br>
- : public ELFDSOReader<HexagonELFType,<br>
HexagonDynamicFileCreateELFTra<u></u>its> {<br>
+ : public ELFDSOReader<HexagonELFType,<br>
HexagonDynamicFileCreateELFTra<u></u>its,<br>
+ HexagonLinkingContext> {<br>
public:<br>
- HexagonELFDSOReader(bool useUndefines)<br>
- : ELFDSOReader<HexagonELFType, HexagonDynamicFileCreateELFTra<br>
its>(<br>
- useUndefines, llvm::ELF::EM_HEXAGON) {}<br>
+ HexagonELFDSOReader(<u></u>HexagonLinkingContext &ctx)<br>
+ : ELFDSOReader<HexagonELFType, HexagonDynamicFileCreateELFTra<br>
its,<br>
+ HexagonLinkingContext>(ctx, llvm::ELF::EM_HEXAGON)<br>
{}<br>
};<br>
<br>
} // namespace elf<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<br>
HexagonExecutableAtoms.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/Hexagon/<u></u>HexagonExecutableAtoms.h?rev=<br>
228905&r1=228904&r2=228905&<u></u>view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonExecutableAtoms.h<br>
(original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonExecutableAtoms.h Wed<br>
Feb 11 23:02:41 2015<br>
@@ -20,7 +20,7 @@ class HexagonLinkingContext;<br>
template <class HexagonELFType> class HexagonRuntimeFile<br>
: public CRuntimeFile<HexagonELFType> {<br>
public:<br>
- HexagonRuntimeFile(const HexagonLinkingContext &context)<br>
+ HexagonRuntimeFile(<u></u>HexagonLinkingContext &context)<br>
: CRuntimeFile<HexagonELFType>(<u></u>context, "Hexagon runtime<br>
file") {}<br>
};<br>
} // elf<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonTargetHandler.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/Hexagon/<u></u>HexagonTargetHandler.h?rev=<br>
228905&r1=228904&r2=228905&<u></u>view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonTargetHandler.h<br>
(original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Hexagon/<u></u>HexagonTargetHandler.h Wed<br>
Feb<br>
11 23:02:41 2015<br>
@@ -117,12 +117,14 @@ public:<br>
return *(_hexagonTargetLayout.get());<br>
}<br>
<br>
- std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {<br>
- return std::unique_ptr<Reader>(new<br>
HexagonELFObjectReader(<u></u>atomizeStrings));<br>
+ std::unique_ptr<Reader> getObjReader() override {<br>
+ return std::unique_ptr<Reader>(<br>
+ new HexagonELFObjectReader(_<u></u>hexagonLinkingContext));<br>
}<br>
<br>
- std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines)<br>
override {<br>
- return std::unique_ptr<Reader>(new<br>
HexagonELFDSOReader(<u></u>useShlibUndefines));<br>
+ std::unique_ptr<Reader> getDSOReader() override {<br>
+ return std::unique_ptr<Reader>(<br>
+ new HexagonELFDSOReader(_<u></u>hexagonLinkingContext));<br>
}<br>
<br>
std::unique_ptr<Writer> getWriter() override;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsELFFile.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/Mips/<u></u>MipsELFFile.h?rev=228905&r1=<br>
228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsELFFile.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsELFFile.h Wed Feb 11<br>
23:02:41<br>
2015<br>
@@ -80,13 +80,13 @@ public:<br>
<br>
template <class ELFT> class MipsELFFile : public ELFFile<ELFT> {<br>
public:<br>
- MipsELFFile(std::unique_ptr<<u></u>MemoryBuffer> mb, bool atomizeStrings)<br>
- : ELFFile<ELFT>(std::move(mb), atomizeStrings) {}<br>
+ MipsELFFile(std::unique_ptr<<u></u>MemoryBuffer> mb, MipsLinkingContext<br>
&ctx)<br>
+ : ELFFile<ELFT>(std::move(mb), ctx) {}<br>
<br>
static ErrorOr<std::unique_ptr<<u></u>MipsELFFile>><br>
- create(std::unique_ptr<<u></u>MemoryBuffer> mb, bool atomizeStrings) {<br>
+ create(std::unique_ptr<<u></u>MemoryBuffer> mb, MipsLinkingContext &ctx) {<br>
return std::unique_ptr<MipsELFFile<<u></u>ELFT>>(<br>
- new MipsELFFile<ELFT>(std::move(<u></u>mb), atomizeStrings));<br>
+ new MipsELFFile<ELFT>(std::move(<u></u>mb), ctx));<br>
}<br>
<br>
bool isPIC() const {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsELFReader.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/Mips/<u></u>MipsELFReader.h?rev=228905&r1=<br>
228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsELFReader.h Wed Feb 11<br>
23:02:41 2015<br>
@@ -22,8 +22,8 @@ struct MipsELFFileCreateTraits {<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool atomizeStrings) {<br>
- return lld::elf::MipsELFFile<ELFT>::<u></u>create(std::move(mb),<br>
atomizeStrings);<br>
+ MipsLinkingContext &ctx) {<br>
+ return lld::elf::MipsELFFile<ELFT>::<u></u>create(std::move(mb), ctx);<br>
}<br>
};<br>
<br>
@@ -32,19 +32,21 @@ struct MipsDynamicFileCreateELFTraits {<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool useUndefines) {<br>
- return lld::elf::MipsDynamicFile<<u></u>ELFT>::create(std::move(mb),<br>
useUndefines);<br>
+ MipsLinkingContext &ctx) {<br>
+ return lld::elf::MipsDynamicFile<<u></u>ELFT>::create(std::move(mb),<br>
ctx);<br>
}<br>
};<br>
<br>
template <class ELFT><br>
class MipsELFObjectReader<br>
- : public ELFObjectReader<ELFT, MipsELFFileCreateTraits> {<br>
- typedef ELFObjectReader<ELFT, MipsELFFileCreateTraits><br>
BaseReaderType;<br>
+ : public ELFObjectReader<ELFT, MipsELFFileCreateTraits,<br>
+ MipsLinkingContext> {<br>
+ typedef ELFObjectReader<ELFT, MipsELFFileCreateTraits,<br>
MipsLinkingContext><br>
+ BaseReaderType;<br>
<br>
public:<br>
- MipsELFObjectReader(<u></u>MipsLinkingContext &ctx, bool atomizeStrings)<br>
- : BaseReaderType(atomizeStrings, llvm::ELF::EM_MIPS),<br>
+ MipsELFObjectReader(<u></u>MipsLinkingContext &ctx)<br>
+ : BaseReaderType(ctx, llvm::ELF::EM_MIPS),<br>
_flagMerger(ctx.<u></u>getELFFlagsMerger()) {}<br>
<br>
std::error_code<br>
@@ -62,12 +64,14 @@ private:<br>
<br>
template <class ELFT><br>
class MipsELFDSOReader<br>
- : public ELFDSOReader<ELFT, MipsDynamicFileCreateELFTraits<u></u>> {<br>
- typedef ELFDSOReader<ELFT, MipsDynamicFileCreateELFTraits<u></u>><br>
BaseReaderType;<br>
+ : public ELFDSOReader<ELFT, MipsDynamicFileCreateELFTraits<u></u>,<br>
+ MipsLinkingContext> {<br>
+ typedef ELFDSOReader<ELFT, MipsDynamicFileCreateELFTraits<u></u>,<br>
MipsLinkingContext><br>
+ BaseReaderType;<br>
<br>
public:<br>
- MipsELFDSOReader(<u></u>MipsLinkingContext &ctx, bool useUndefines)<br>
- : BaseReaderType(useUndefines, llvm::ELF::EM_MIPS),<br>
+ MipsELFDSOReader(<u></u>MipsLinkingContext &ctx)<br>
+ : BaseReaderType(ctx, llvm::ELF::EM_MIPS),<br>
_flagMerger(ctx.<u></u>getELFFlagsMerger()) {}<br>
<br>
std::error_code<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsTargetHandler.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/Mips/<u></u>MipsTargetHandler.h?rev=<br>
228905&r1=228904&r2=228905&<u></u>view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsTargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Mips/MipsTargetHandler.h Wed Feb 11<br>
23:02:41 2015<br>
@@ -79,7 +79,7 @@ private:<br>
template <class ELFType><br>
class MipsRuntimeFile final : public CRuntimeFile<ELFType> {<br>
public:<br>
- MipsRuntimeFile(const MipsLinkingContext &ctx)<br>
+ MipsRuntimeFile(<u></u>MipsLinkingContext &ctx)<br>
: CRuntimeFile<ELFType>(ctx, "Mips runtime file") {}<br>
};<br>
<br>
@@ -102,14 +102,12 @@ public:<br>
<br>
MipsTargetLayout<ELFT> &getTargetLayout() override { return<br>
*_targetLayout; }<br>
<br>
- std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {<br>
- return std::unique_ptr<Reader>(<br>
- new MipsELFObjectReader<ELFT>(_<u></u>ctx, atomizeStrings));<br>
+ std::unique_ptr<Reader> getObjReader() override {<br>
+ return std::unique_ptr<Reader>(new MipsELFObjectReader<ELFT>(_<br>
ctx));<br>
}<br>
<br>
- std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines)<br>
override {<br>
- return std::unique_ptr<Reader>(<br>
- new MipsELFDSOReader<ELFT>(_ctx, useShlibUndefines));<br>
+ std::unique_ptr<Reader> getDSOReader() override {<br>
+ return std::unique_ptr<Reader>(new MipsELFDSOReader<ELFT>(_ctx));<br>
}<br>
<br>
const TargetRelocationHandler &getRelocationHandler() const<br>
override {<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/Reader.cpp<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/Reader.cpp?<u></u>rev=228905&r1=228904&r2=<u></u>228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/Reader.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/Reader.cpp Wed Feb 11 23:02:41 2015<br>
@@ -26,20 +26,18 @@ namespace lld {<br>
// architectures to be pulled into the linker. If we want to support<br>
making a<br>
// linker that only supports one ELF architecture, we'd need to change<br>
this<br>
// to have a different registration method for each architecture.<br>
-void Registry::<u></u>addSupportELFObjects(bool atomizeStrings,<br>
- TargetHandlerBase *handler) {<br>
+void Registry::<u></u>addSupportELFObjects(<u></u>ELFLinkingContext &ctx) {<br>
<br>
// Tell registry about the ELF object file parser.<br>
- add(std::move(handler-><u></u>getObjReader(atomizeStrings)))<u></u>;<br>
+ add(std::move(ctx.<u></u>targetHandler()->getObjReader(<u></u>)));<br>
<br>
// Tell registry about the relocation name to number mapping for<br>
this<br>
arch.<br>
- handler-><u></u>registerRelocationNames(*this)<u></u>;<br>
+ ctx.targetHandler()-><u></u>registerRelocationNames(*this)<u></u>;<br>
}<br>
<br>
-void Registry::<u></u>addSupportELFDynamicSharedObje<u></u>cts(bool<br>
useShlibUndefines,<br>
- TargetHandlerBase<br>
*handler) {<br>
+void Registry::<u></u>addSupportELFDynamicSharedObje<u></u>cts(ELFLinkingContext<br>
&ctx)<br>
{<br>
// Tell registry about the ELF dynamic shared library file parser.<br>
- add(handler->getDSOReader(<u></u>useShlibUndefines));<br>
+ add(ctx.targetHandler()-><u></u>getDSOReader());<br>
}<br>
<br>
} // end namespace lld<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/TargetHandler.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/</a><br>
TargetHandler.h?rev=228905&r1=<u></u>228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/TargetHandler.h Wed Feb 11 23:02:41<br>
2015<br>
@@ -63,10 +63,10 @@ public:<br>
virtual const TargetRelocationHandler &getRelocationHandler() const<br>
=<br>
0;<br>
<br>
/// How does the target deal with reading input files.<br>
- virtual std::unique_ptr<Reader> getObjReader(bool) = 0;<br>
+ virtual std::unique_ptr<Reader> getObjReader() = 0;<br>
<br>
/// How does the target deal with reading dynamic libraries.<br>
- virtual std::unique_ptr<Reader> getDSOReader(bool) = 0;<br>
+ virtual std::unique_ptr<Reader> getDSOReader() = 0;<br>
<br>
/// How does the target deal with writing ELF output.<br>
virtual std::unique_ptr<Writer> getWriter() = 0;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86ELFFile.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/X86/</a><br>
X86ELFFile.h?rev=228905&r1=<u></u>228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86ELFFile.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86ELFFile.h Wed Feb 11 23:02:41<br>
2015<br>
@@ -19,13 +19,13 @@ class X86LinkingContext;<br>
<br>
template <class ELFT> class X86ELFFile : public ELFFile<ELFT> {<br>
public:<br>
- X86ELFFile(std::unique_ptr<<u></u>MemoryBuffer> mb, bool atomizeStrings)<br>
- : ELFFile<ELFT>(std::move(mb), atomizeStrings) {}<br>
+ X86ELFFile(std::unique_ptr<<u></u>MemoryBuffer> mb, X86LinkingContext &ctx)<br>
+ : ELFFile<ELFT>(std::move(mb), ctx) {}<br>
<br>
static ErrorOr<std::unique_ptr<<u></u>X86ELFFile>><br>
- create(std::unique_ptr<<u></u>MemoryBuffer> mb, bool atomizeStrings) {<br>
+ create(std::unique_ptr<<u></u>MemoryBuffer> mb, X86LinkingContext &ctx) {<br>
return std::unique_ptr<X86ELFFile<<u></u>ELFT>>(<br>
- new X86ELFFile<ELFT>(std::move(mb)<u></u>, atomizeStrings));<br>
+ new X86ELFFile<ELFT>(std::move(mb)<u></u>, ctx));<br>
}<br>
};<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86ELFReader.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/X86/</a><br>
X86ELFReader.h?rev=228905&r1=<u></u>228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86ELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86ELFReader.h Wed Feb 11<br>
23:02:41<br>
2015<br>
@@ -23,8 +23,8 @@ struct X86DynamicFileCreateELFTraits {<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool useUndefines) {<br>
- return lld::elf::X86DynamicFile<ELFT><u></u>::create(std::move(mb),<br>
useUndefines);<br>
+ X86LinkingContext &ctx) {<br>
+ return lld::elf::X86DynamicFile<ELFT><u></u>::create(std::move(mb), ctx);<br>
}<br>
};<br>
<br>
@@ -33,25 +33,27 @@ struct X86ELFFileCreateELFTraits {<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool atomizeStrings) {<br>
- return lld::elf::X86ELFFile<ELFT>::<u></u>create(std::move(mb),<br>
atomizeStrings);<br>
+ X86LinkingContext &ctx) {<br>
+ return lld::elf::X86ELFFile<ELFT>::<u></u>create(std::move(mb), ctx);<br>
}<br>
};<br>
<br>
class X86ELFObjectReader<br>
- : public ELFObjectReader<X86ELFType, X86ELFFileCreateELFTraits> {<br>
+ : public ELFObjectReader<X86ELFType, X86ELFFileCreateELFTraits,<br>
+ X86LinkingContext> {<br>
public:<br>
- X86ELFObjectReader(bool atomizeStrings)<br>
- : ELFObjectReader<X86ELFType, X86ELFFileCreateELFTraits>(<br>
- atomizeStrings, llvm::ELF::EM_386) {}<br>
+ X86ELFObjectReader(<u></u>X86LinkingContext &ctx)<br>
+ : ELFObjectReader<X86ELFType, X86ELFFileCreateELFTraits,<br>
+ X86LinkingContext>(ctx, llvm::ELF::EM_386) {}<br>
};<br>
<br>
class X86ELFDSOReader<br>
- : public ELFDSOReader<X86ELFType, X86DynamicFileCreateELFTraits> {<br>
+ : public ELFDSOReader<X86ELFType, X86DynamicFileCreateELFTraits,<br>
+ X86LinkingContext> {<br>
public:<br>
- X86ELFDSOReader(bool useUndefines)<br>
- : ELFDSOReader<X86ELFType, X86DynamicFileCreateELFTraits><u></u>(<br>
- useUndefines, llvm::ELF::EM_386) {}<br>
+ X86ELFDSOReader(<u></u>X86LinkingContext &ctx)<br>
+ : ELFDSOReader<X86ELFType, X86DynamicFileCreateELFTraits,<br>
+ X86LinkingContext>(ctx, llvm::ELF::EM_386) {}<br>
};<br>
<br>
} // namespace elf<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86TargetHandler.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/X86/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/<u></u>ReaderWriter/ELF/X86/</a><br>
X86TargetHandler.h?rev=228905&<u></u>r1=228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86TargetHandler.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86/X86TargetHandler.h Wed Feb 11<br>
23:02:41 2015<br>
@@ -41,12 +41,12 @@ public:<br>
return *(_x86RelocationHandler.get())<u></u>;<br>
}<br>
<br>
- std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {<br>
- return std::unique_ptr<Reader>(new<br>
X86ELFObjectReader(<u></u>atomizeStrings));<br>
+ std::unique_ptr<Reader> getObjReader() override {<br>
+ return std::unique_ptr<Reader>(new<br>
X86ELFObjectReader(_<u></u>x86LinkingContext));<br>
}<br>
<br>
- std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines)<br>
override {<br>
- return std::unique_ptr<Reader>(new<br>
X86ELFDSOReader(<u></u>useShlibUndefines));<br>
+ std::unique_ptr<Reader> getDSOReader() override {<br>
+ return std::unique_ptr<Reader>(new<br>
X86ELFDSOReader(_<u></u>x86LinkingContext));<br>
}<br>
<br>
std::unique_ptr<Writer> getWriter() override;<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_64ELFFile.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/X86_64/X86_<u></u>64ELFFile.h?rev=228905&r1=<br>
228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_64ELFFile.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_64ELFFile.h Wed Feb 11<br>
23:02:41 2015<br>
@@ -19,13 +19,13 @@ class X86_64LinkingContext;<br>
<br>
template <class ELFT> class X86_64ELFFile : public ELFFile<ELFT> {<br>
public:<br>
- X86_64ELFFile(std::unique_ptr<<u></u>MemoryBuffer> mb, bool atomizeStrings)<br>
- : ELFFile<ELFT>(std::move(mb), atomizeStrings) {}<br>
+ X86_64ELFFile(std::unique_ptr<<u></u>MemoryBuffer> mb, X86_64LinkingContext<br>
&ctx)<br>
+ : ELFFile<ELFT>(std::move(mb), ctx) {}<br>
<br>
static ErrorOr<std::unique_ptr<X86_<u></u>64ELFFile>><br>
- create(std::unique_ptr<<u></u>MemoryBuffer> mb, bool atomizeStrings) {<br>
+ create(std::unique_ptr<<u></u>MemoryBuffer> mb, X86_64LinkingContext &ctx)<br>
{<br>
return std::unique_ptr<X86_64ELFFile<<u></u>ELFT>>(<br>
- new X86_64ELFFile<ELFT>(std::move(<u></u>mb), atomizeStrings));<br>
+ new X86_64ELFFile<ELFT>(std::move(<u></u>mb), ctx));<br>
}<br>
};<br>
<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_64ELFReader.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/X86_64/X86_<u></u>64ELFReader.h?rev=228905&r1=<br>
228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_64ELFReader.h (original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_64ELFReader.h Wed Feb 11<br>
23:02:41 2015<br>
@@ -23,9 +23,8 @@ struct X86_<u></u>64DynamicFileCreateELFTraits<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool useUndefines) {<br>
- return lld::elf::X86_64DynamicFile<<u></u>ELFT>::create(std::move(mb),<br>
- useUndefines);<br>
+ X86_64LinkingContext &ctx) {<br>
+ return lld::elf::X86_64DynamicFile<<u></u>ELFT>::create(std::move(mb),<br>
ctx);<br>
}<br>
};<br>
<br>
@@ -34,25 +33,27 @@ struct X86_64ELFFileCreateELFTraits {<br>
<br>
template <class ELFT><br>
static result_type create(std::unique_ptr<llvm::<u></u>MemoryBuffer> mb,<br>
- bool atomizeStrings) {<br>
- return lld::elf::X86_64ELFFile<ELFT>:<u></u>:create(std::move(mb),<br>
atomizeStrings);<br>
+ X86_64LinkingContext &ctx) {<br>
+ return lld::elf::X86_64ELFFile<ELFT>:<u></u>:create(std::move(mb), ctx);<br>
}<br>
};<br>
<br>
class X86_64ELFObjectReader<br>
- : public ELFObjectReader<X86_64ELFType,<br>
X86_64ELFFileCreateELFTraits> {<br>
+ : public ELFObjectReader<X86_64ELFType,<br>
X86_64ELFFileCreateELFTraits,<br>
+ X86_64LinkingContext> {<br>
public:<br>
- X86_64ELFObjectReader(bool atomizeStrings)<br>
- : ELFObjectReader<X86_64ELFType, X86_64ELFFileCreateELFTraits>(<br>
- atomizeStrings, llvm::ELF::EM_X86_64) {}<br>
+ X86_64ELFObjectReader(X86_<u></u>64LinkingContext &ctx)<br>
+ : ELFObjectReader<X86_64ELFType, X86_64ELFFileCreateELFTraits,<br>
+ X86_64LinkingContext>(ctx,<br>
llvm::ELF::EM_X86_64)<br>
{}<br>
};<br>
<br>
class X86_64ELFDSOReader<br>
- : public ELFDSOReader<X86_64ELFType,<br>
X86_<u></u>64DynamicFileCreateELFTraits> {<br>
+ : public ELFDSOReader<X86_64ELFType,<br>
X86_<u></u>64DynamicFileCreateELFTraits,<br>
+ X86_64LinkingContext> {<br>
public:<br>
- X86_64ELFDSOReader(bool useUndefines)<br>
- : ELFDSOReader<X86_64ELFType, X86_<u></u>64DynamicFileCreateELFTraits>(<br>
- useUndefines, llvm::ELF::EM_X86_64) {}<br>
+ X86_64ELFDSOReader(X86_<u></u>64LinkingContext &ctx)<br>
+ : ELFDSOReader<X86_64ELFType, X86_<u></u>64DynamicFileCreateELFTraits,<br>
+ X86_64LinkingContext>(ctx, llvm::ELF::EM_X86_64)<br>
{}<br>
};<br>
<br>
} // namespace elf<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64TargetHandler.h<br>
URL:<br>
<a href="http://llvm.org/viewvc/llvm-project/lld/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/lld/trunk/lib/</a><br>
ReaderWriter/ELF/X86_64/X86_<u></u>64TargetHandler.h?rev=228905&<br>
r1=228904&r2=228905&view=diff<br>
<br>
==============================<u></u>==============================<br>
==================<br>
--- lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64TargetHandler.h<br>
(original)<br>
+++ lld/trunk/lib/ReaderWriter/<u></u>ELF/X86_64/X86_<u></u>64TargetHandler.h Wed Feb<br>
11 23:02:41 2015<br>
@@ -42,12 +42,12 @@ public:<br>
return *(_x86_64RelocationHandler.<u></u>get());<br>
}<br>
<br>
- std::unique_ptr<Reader> getObjReader(bool atomizeStrings) override {<br>
- return std::unique_ptr<Reader>(new<br>
X86_64ELFObjectReader(<u></u>atomizeStrings));<br>
+ std::unique_ptr<Reader> getObjReader() override {<br>
+ return std::unique_ptr<Reader>(new X86_64ELFObjectReader(_<br>
context));<br>
}<br>
<br>
- std::unique_ptr<Reader> getDSOReader(bool useShlibUndefines)<br>
override {<br>
- return std::unique_ptr<Reader>(new<br>
X86_64ELFDSOReader(<u></u>useShlibUndefines));<br>
+ std::unique_ptr<Reader> getDSOReader() override {<br>
+ return std::unique_ptr<Reader>(new X86_64ELFDSOReader(_context));<br>
}<br>
<br>
std::unique_ptr<Writer> getWriter() override;<br>
<br>
<br>
______________________________<u></u>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">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/<u></u>mailman/listinfo/llvm-commits</a><br>
<br>
<br>
</blockquote></blockquote></blockquote>
--<br>
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted<br>
by the Linux Foundation<br>
<br>
<br>
</blockquote></blockquote>
<br>
<br>
-- <br>
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation<br>
<br>
</div></div></blockquote></div><br></div>