<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>