<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 24, 2015 at 2:15 AM, George Rimar via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: grimar<br>
Date: Tue Nov 24 04:15:50 2015<br>
New Revision: 253971<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=253971&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=253971&view=rev</a><br>
Log:<br>
Reapply fixed r253967.<br></blockquote><div><br></div><div>It's helpful to include the original commit message and a note about why the patch was reverted/what was changed/fixed to recommit it - makes review easier (anyone who's looked at the old patch can then pay attention to the new/changed/interesting bits, etc).<br><br>- Dave</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Added:<br>
    lld/trunk/test/ELF/relro.s<br>
      - copied unchanged from r253969, lld/trunk/test/ELF/relro.s<br>
Modified:<br>
    lld/trunk/ELF/Config.h<br>
    lld/trunk/ELF/Driver.cpp<br>
    lld/trunk/ELF/Writer.cpp<br>
    lld/trunk/test/ELF/eh-frame-merge.s<br>
    lld/trunk/test/ELF/gnu-hash-table.s<br>
    lld/trunk/test/ELF/got-aarch64.s<br>
    lld/trunk/test/ELF/merge-shared.s<br>
    lld/trunk/test/ELF/merge-string.s<br>
    lld/trunk/test/ELF/merge-sym.s<br>
    lld/trunk/test/ELF/mips-dynamic.s<br>
    lld/trunk/test/ELF/mips-got-relocs.s<br>
    lld/trunk/test/ELF/relative-dynamic-reloc-ppc64.s<br>
    lld/trunk/test/ELF/relative-dynamic-reloc.s<br>
    lld/trunk/test/ELF/relocation.s<br>
    lld/trunk/test/ELF/section-name.s<br>
    lld/trunk/test/ELF/shared.s<br>
<br>
Modified: lld/trunk/ELF/Config.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/Config.h (original)<br>
+++ lld/trunk/ELF/Config.h Tue Nov 24 04:15:50 2015<br>
@@ -67,6 +67,7 @@ struct Configuration {<br>
   bool ZNodelete;<br>
   bool ZNow;<br>
   bool ZOrigin;<br>
+  bool ZRelro;<br>
   ELFKind EKind = ELFNoneKind;<br>
   uint16_t EMachine = llvm::ELF::EM_NONE;<br>
   uint64_t EntryAddr = -1;<br>
<br>
Modified: lld/trunk/ELF/Driver.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/Driver.cpp (original)<br>
+++ lld/trunk/ELF/Driver.cpp Tue Nov 24 04:15:50 2015<br>
@@ -176,6 +176,7 @@ void LinkerDriver::createFiles(opt::Inpu<br>
   Config->ZNodelete = hasZOption(Args, "nodelete");<br>
   Config->ZNow = hasZOption(Args, "now");<br>
   Config->ZOrigin = hasZOption(Args, "origin");<br>
+  Config->ZRelro = !hasZOption(Args, "norelro");<br>
<br>
   if (auto *Arg = Args.getLastArg(OPT_O)) {<br>
     StringRef Val = Arg->getValue();<br>
<br>
Modified: lld/trunk/ELF/Writer.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/ELF/Writer.cpp (original)<br>
+++ lld/trunk/ELF/Writer.cpp Tue Nov 24 04:15:50 2015<br>
@@ -47,6 +47,8 @@ private:<br>
                   iterator_range<const Elf_Rel_Impl<ELFT, isRela> *> Rels);<br>
   void scanRelocs(InputSection<ELFT> &C);<br>
   void scanRelocs(InputSectionBase<ELFT> &S, const Elf_Shdr &RelSec);<br>
+  void updateRelro(Elf_Phdr *Cur, Elf_Phdr *GnuRelroPhdr,<br>
+                   OutputSectionBase<ELFT> *Sec, uintX_t VA);<br>
   void assignAddresses();<br>
   void buildSectionMap();<br>
   void openFile(StringRef OutputPath);<br>
@@ -81,6 +83,7 @@ private:<br>
                uintX_t VA, uintX_t Size, uintX_t Align);<br>
   void copyPhdr(Elf_Phdr *PH, OutputSectionBase<ELFT> *From);<br>
<br>
+  bool HasRelro = false;<br>
   SymbolTable<ELFT> &Symtab;<br>
   std::vector<Elf_Phdr> Phdrs;<br>
<br>
@@ -353,6 +356,26 @@ static int getPPC64SectionRank(StringRef<br>
            .Default(1);<br>
 }<br>
<br>
+template <class ELFT> static bool isRelroSection(OutputSectionBase<ELFT> *Sec) {<br>
+  typename OutputSectionBase<ELFT>::uintX_t Flags = Sec->getFlags();<br>
+  if (!(Flags & SHF_ALLOC) || !(Flags & SHF_WRITE))<br>
+    return false;<br>
+  uint32_t Type = Sec->getType();<br>
+  if ((Flags & SHF_TLS) || (Type == SHT_INIT_ARRAY || Type == SHT_FINI_ARRAY ||<br>
+                            Type == SHT_PREINIT_ARRAY))<br>
+    return true;<br>
+  if (Sec == Out<ELFT>::GotPlt)<br>
+    return Config->ZNow;<br>
+  if (Sec == Out<ELFT>::Dynamic || Sec == Out<ELFT>::Got)<br>
+    return true;<br>
+<br>
+  StringRef Name = Sec->getName();<br>
+  StringRef WhiteList[] = {".<a href="http://data.rel.ro" rel="noreferrer" target="_blank">data.rel.ro</a>", ".ctors", ".dtors", ".jcr",<br>
+                           ".eh_frame"};<br>
+  return (std::find(std::begin(WhiteList), std::end(WhiteList), Name) !=<br>
+          std::end(WhiteList));<br>
+}<br>
+<br>
 // Output section ordering is determined by this function.<br>
 template <class ELFT><br>
 static bool compareOutputSections(OutputSectionBase<ELFT> *A,<br>
@@ -409,6 +432,12 @@ static bool compareOutputSections(Output<br>
   if (AIsNoBits != BIsNoBits)<br>
     return BIsNoBits;<br>
<br>
+  // We place RelRo section before plain r/w ones.<br>
+  bool AIsRelRo = isRelroSection(A);<br>
+  bool BIsRelRo = isRelroSection(B);<br>
+  if (AIsRelRo != BIsRelRo)<br>
+    return AIsRelRo;<br>
+<br>
   // Some architectures have additional ordering restrictions for sections<br>
   // within the same PT_LOAD.<br>
   if (Config->EMachine == EM_PPC64)<br>
@@ -724,8 +753,10 @@ template <class ELFT> void Writer<ELFT>:<br>
   std::stable_sort(OutputSections.begin(), OutputSections.end(),<br>
                    compareSections<ELFT>);<br>
<br>
-  for (unsigned I = 0, N = OutputSections.size(); I < N; ++I)<br>
+  for (unsigned I = 0, N = OutputSections.size(); I < N; ++I) {<br>
     OutputSections[I]->SectionIndex = I + 1;<br>
+    HasRelro |= (Config->ZRelro && isRelroSection(OutputSections[I]));<br>
+  }<br>
<br>
   for (OutputSectionBase<ELFT> *Sec : OutputSections)<br>
     Out<ELFT>::ShStrTab->add(Sec->getName());<br>
@@ -793,6 +824,18 @@ static uint32_t toPhdrFlags(uint64_t Fla<br>
   return Ret;<br>
 }<br>
<br>
+template <class ELFT><br>
+void Writer<ELFT>::updateRelro(Elf_Phdr *Cur, Elf_Phdr *GnuRelroPhdr,<br>
+                               OutputSectionBase<ELFT> *Sec, uintX_t VA) {<br>
+  if (!Config->ZRelro || !(Cur->p_flags & PF_W) || !isRelroSection(Sec))<br>
+    return;<br>
+  if (!GnuRelroPhdr->p_type)<br>
+    setPhdr(GnuRelroPhdr, PT_GNU_RELRO, PF_R, Cur->p_offset, Cur->p_vaddr,<br>
+            VA - Cur->p_vaddr, 1 /*p_align*/);<br>
+  GnuRelroPhdr->p_filesz = VA - Cur->p_vaddr;<br>
+  GnuRelroPhdr->p_memsz = VA - Cur->p_vaddr;<br>
+}<br>
+<br>
 // Visits all sections to create PHDRs and to assign incremental,<br>
 // non-overlapping addresses to output sections.<br>
 template <class ELFT> void Writer<ELFT>::assignAddresses() {<br>
@@ -819,6 +862,7 @@ template <class ELFT> void Writer<ELFT>:<br>
   setPhdr(&Phdrs[++PhdrIdx], PT_LOAD, PF_R, 0, Target->getVAStart(), FileOff,<br>
           Target->getPageSize());<br>
<br>
+  Elf_Phdr GnuRelroPhdr = {};<br>
   Elf_Phdr TlsPhdr{};<br>
   uintX_t ThreadBSSOffset = 0;<br>
   // Create phdrs as we assign VAs and file offsets to all output sections.<br>
@@ -852,6 +896,7 @@ template <class ELFT> void Writer<ELFT>:<br>
         VA = RoundUpToAlignment(VA, Sec->getAlign());<br>
         Sec->setVA(VA);<br>
         VA += Sec->getSize();<br>
+        updateRelro(&Phdrs[PhdrIdx], &GnuRelroPhdr, Sec, VA);<br>
       }<br>
     }<br>
<br>
@@ -881,6 +926,11 @@ template <class ELFT> void Writer<ELFT>:<br>
     copyPhdr(PH, Out<ELFT>::Dynamic);<br>
   }<br>
<br>
+  if (HasRelro) {<br>
+    Elf_Phdr *PH = &Phdrs[++PhdrIdx];<br>
+    *PH = GnuRelroPhdr;<br>
+  }<br>
+<br>
   // PT_GNU_STACK is a special section to tell the loader to make the<br>
   // pages for the stack non-executable.<br>
   if (!Config->ZExecStack) {<br>
@@ -932,6 +982,8 @@ template <class ELFT> int Writer<ELFT>::<br>
   }<br>
   if (Tls)<br>
     ++I;<br>
+  if (HasRelro)<br>
+    ++I;<br>
   return I;<br>
 }<br>
<br>
<br>
Modified: lld/trunk/test/ELF/eh-frame-merge.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/eh-frame-merge.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/eh-frame-merge.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/eh-frame-merge.s (original)<br>
+++ lld/trunk/test/ELF/eh-frame-merge.s Tue Nov 24 04:15:50 2015<br>
@@ -35,9 +35,9 @@<br>
 // CHECK-NEXT: SectionData (<br>
 // CHECK-NEXT:   0000: 14000000 00000000 017A5200 01781001  |<br>
 // CHECK-NEXT:   0010: 1B0C0708 90010000 10000000 1C000000  |<br>
-// CHECK-NEXT:   0020: 880E0000 01000000 00000000 10000000  |<br>
-// CHECK-NEXT:   0030: 30000000 760E0000 02000000 00000000  |<br>
-// CHECK-NEXT:   0040: 10000000 44000000 610E0000 01000000  |<br>
+// CHECK-NEXT:   0020: 500E0000 01000000 00000000 10000000  |<br>
+// CHECK-NEXT:   0030: 30000000 3E0E0000 02000000 00000000  |<br>
+// CHECK-NEXT:   0040: 10000000 44000000 290E0000 01000000  |<br>
 // CHECK-NEXT:   0050: 00000000                             |<br>
 // CHECK-NEXT: )<br>
<br>
<br>
Modified: lld/trunk/test/ELF/gnu-hash-table.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/gnu-hash-table.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/gnu-hash-table.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/gnu-hash-table.s (original)<br>
+++ lld/trunk/test/ELF/gnu-hash-table.s Tue Nov 24 04:15:50 2015<br>
@@ -149,8 +149,8 @@<br>
 # PPC64-NEXT:     Flags [<br>
 # PPC64-NEXT:       SHF_ALLOC<br>
 # PPC64-NEXT:     ]<br>
-# PPC64-NEXT:     Address: 0x1B8<br>
-# PPC64-NEXT:     Offset: 0x1B8<br>
+# PPC64-NEXT:     Address: 0x1F0<br>
+# PPC64-NEXT:     Offset: 0x1F0<br>
 # PPC64-NEXT:     Size: 36<br>
 # PPC64-NEXT:     Link: 1<br>
 # PPC64-NEXT:     Info: 0<br>
<br>
Modified: lld/trunk/test/ELF/got-aarch64.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/got-aarch64.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/got-aarch64.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/got-aarch64.s (original)<br>
+++ lld/trunk/test/ELF/got-aarch64.s Tue Nov 24 04:15:50 2015<br>
@@ -10,7 +10,7 @@<br>
 // CHECK-NEXT:   SHF_ALLOC<br>
 // CHECK-NEXT:   SHF_WRITE<br>
 // CHECK-NEXT: ]<br>
-// CHECK-NEXT: Address: 0x2098<br>
+// CHECK-NEXT: Address: 0x2090<br>
 // CHECK-NEXT: Offset:<br>
 // CHECK-NEXT: Size: 8<br>
 // CHECK-NEXT: Link: 0<br>
@@ -19,7 +19,7 @@<br>
<br>
 // CHECK:      Relocations [<br>
 // CHECK-NEXT:   Section ({{.*}}) .rela.dyn {<br>
-// CHECK-NEXT:     0x2098 R_AARCH64_GLOB_DAT dat 0x0<br>
+// CHECK-NEXT:     0x2090 R_AARCH64_GLOB_DAT dat 0x0<br>
 // CHECK-NEXT:   }<br>
 // CHECK-NEXT: ]<br>
<br>
@@ -28,7 +28,7 @@<br>
<br>
 // DISASM: main:<br>
 // DISASM-NEXT:     1000: {{.*}} adrp x0, #4096<br>
-// DISASM-NEXT:     1004: {{.*}} ldr x0, [x0, #152]<br>
+// DISASM-NEXT:     1004: {{.*}} ldr x0, [x0, #144]<br>
<br>
 .global main,foo,dat<br>
 .text<br>
<br>
Modified: lld/trunk/test/ELF/merge-shared.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/merge-shared.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/merge-shared.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/merge-shared.s (original)<br>
+++ lld/trunk/test/ELF/merge-shared.s Tue Nov 24 04:15:50 2015<br>
@@ -17,10 +17,10 @@<br>
 // CHECK-NEXT:   SHF_ALLOC<br>
 // CHECK-NEXT:   SHF_MERGE<br>
 // CHECK-NEXT: ]<br>
-// CHECK-NEXT: Address: 0x158<br>
+// CHECK-NEXT: Address: 0x190<br>
<br>
 // CHECK:      Relocations [<br>
 // CHECK-NEXT:   Section ({{.*}}) .rela.dyn {<br>
-// CHECK-NEXT:     0x{{.*}} R_X86_64_RELATIVE - 0x15A<br>
+// CHECK-NEXT:     0x{{.*}} R_X86_64_RELATIVE - 0x192<br>
 // CHECK-NEXT:   }<br>
 // CHECK-NEXT: ]<br>
<br>
Modified: lld/trunk/test/ELF/merge-string.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/merge-string.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/merge-string.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/merge-string.s (original)<br>
+++ lld/trunk/test/ELF/merge-string.s Tue Nov 24 04:15:50 2015<br>
@@ -26,8 +26,8 @@ zed:<br>
 // CHECK-NEXT:   SHF_MERGE<br>
 // CHECK-NEXT:   SHF_STRINGS<br>
 // CHECK-NEXT: ]<br>
-// CHECK-NEXT: Address:         0x158<br>
-// CHECK-NEXT: Offset:  0x158<br>
+// CHECK-NEXT: Address:         0x190<br>
+// CHECK-NEXT: Offset:  0x190<br>
 // CHECK-NEXT: Size:    4<br>
 // CHECK-NEXT: Link: 0<br>
 // CHECK-NEXT: Info: 0<br>
@@ -44,8 +44,8 @@ zed:<br>
 // NOTAIL-NEXT:   SHF_MERGE<br>
 // NOTAIL-NEXT:   SHF_STRINGS<br>
 // NOTAIL-NEXT: ]<br>
-// NOTAIL-NEXT: Address:         0x158<br>
-// NOTAIL-NEXT: Offset:  0x158<br>
+// NOTAIL-NEXT: Address:         0x190<br>
+// NOTAIL-NEXT: Offset:  0x190<br>
 // NOTAIL-NEXT: Size:    7<br>
 // NOTAIL-NEXT: Link: 0<br>
 // NOTAIL-NEXT: Info: 0<br>
@@ -62,8 +62,8 @@ zed:<br>
 // CHECK-NEXT:   SHF_MERGE<br>
 // CHECK-NEXT:   SHF_STRINGS<br>
 // CHECK-NEXT: ]<br>
-// CHECK-NEXT: Address: 0x15C<br>
-// CHECK-NEXT: Offset: 0x15C<br>
+// CHECK-NEXT: Address: 0x194<br>
+// CHECK-NEXT: Offset: 0x194<br>
 // CHECK-NEXT: Size: 4<br>
 // CHECK-NEXT: Link: 0<br>
 // CHECK-NEXT: Info: 0<br>
@@ -75,11 +75,11 @@ zed:<br>
<br>
<br>
 // CHECK:      Name:    bar<br>
-// CHECK-NEXT: Value:   0x159<br>
+// CHECK-NEXT: Value:   0x191<br>
<br>
 // CHECK:      Name:    foo<br>
-// CHECK-NEXT: Value:   0x158<br>
+// CHECK-NEXT: Value:   0x190<br>
<br>
 // CHECK:      Name: zed<br>
-// CHECK-NEXT: Value: 0x15C<br>
+// CHECK-NEXT: Value: 0x194<br>
 // CHECK-NEXT: Size: 0<br>
<br>
Modified: lld/trunk/test/ELF/merge-sym.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/merge-sym.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/merge-sym.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/merge-sym.s (original)<br>
+++ lld/trunk/test/ELF/merge-sym.s Tue Nov 24 04:15:50 2015<br>
@@ -15,7 +15,7 @@ foo:<br>
 // CHECK-NEXT:   SHF_ALLOC<br>
 // CHECK-NEXT:   SHF_MERGE<br>
 // CHECK-NEXT: ]<br>
-// CHECK-NEXT: Address: 0x158<br>
+// CHECK-NEXT: Address: 0x190<br>
<br>
 // CHECK:      Name: foo<br>
-// CHECK-NEXT: Value: 0x15A<br>
+// CHECK-NEXT: Value: 0x192<br>
<br>
Modified: lld/trunk/test/ELF/mips-dynamic.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-dynamic.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-dynamic.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/mips-dynamic.s (original)<br>
+++ lld/trunk/test/ELF/mips-dynamic.s Tue Nov 24 04:15:50 2015<br>
@@ -20,24 +20,24 @@<br>
 # EXE-NEXT:     Flags [<br>
 # EXE-NEXT:       SHF_ALLOC<br>
 # EXE-NEXT:     ]<br>
-# EXE:          Name: .rld_map<br>
+# EXE:          Name: .got<br>
 # EXE-NEXT:     Type: SHT_PROGBITS<br>
-# EXE-NEXT:     Flags [<br>
+# EXE-NEXT:     Flags [ (0x10000003)<br>
 # EXE-NEXT:       SHF_ALLOC<br>
 # EXE-NEXT:       SHF_WRITE<br>
 # EXE-NEXT:     ]<br>
-# EXE-NEXT:     Address: [[RLDMAPADDR:0x[0-9a-f]+]]<br>
+# EXE-NEXT:     Address: [[GOTADDR:0x[0-9a-f]+]]<br>
 # EXE-NEXT:     Offset:<br>
-# EXE-NEXT:     Size: 4<br>
-# EXE:          Name: .got<br>
+# EXE-NEXT:     Size: 8<br>
+# EXE:          Name: .rld_map<br>
 # EXE-NEXT:     Type: SHT_PROGBITS<br>
-# EXE-NEXT:     Flags [ (0x10000003)<br>
+# EXE-NEXT:     Flags [<br>
 # EXE-NEXT:       SHF_ALLOC<br>
 # EXE-NEXT:       SHF_WRITE<br>
 # EXE-NEXT:     ]<br>
-# EXE-NEXT:     Address: [[GOTADDR:0x[0-9a-f]+]]<br>
+# EXE-NEXT:     Address: [[RLDMAPADDR:0x[0-9a-f]+]]<br>
 # EXE-NEXT:     Offset:<br>
-# EXE-NEXT:     Size: 8<br>
+# EXE-NEXT:     Size: 4<br>
 # EXE:      ]<br>
 # EXE:      DynamicSection [<br>
 # EXE-NEXT:   Tag        Type                 Name/Value<br>
<br>
Modified: lld/trunk/test/ELF/mips-got-relocs.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-got-relocs.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-got-relocs.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/mips-got-relocs.s (original)<br>
+++ lld/trunk/test/ELF/mips-got-relocs.s Tue Nov 24 04:15:50 2015<br>
@@ -45,21 +45,21 @@ v1:<br>
   .word 0<br>
<br>
 # EXE_SYM: Sections:<br>
-# EXE_SYM: .got 0000000c 0000000000030004 DATA<br>
+# EXE_SYM: .got 0000000c 0000000000030000 DATA<br>
 # EXE_SYM: SYMBOL TABLE:<br>
-# EXE_SYM: 00037ff4         *ABS*               00000000 _gp<br>
+# EXE_SYM: 00037ff0         *ABS*               00000000 _gp<br>
 #          ^-- .got + GP offset (0x7ff0)<br>
-# EXE_SYM: 00030000 g       .data               00000004 v1<br>
+# EXE_SYM: 00030010 g       .data               00000004 v1<br>
<br>
 # EXE_GOT_BE: Contents of section .got:<br>
-# EXE_GOT_BE:  30004 00000000 80000000 00030000<br>
-#                    ^        ^        ^-- v1 (0x30000)<br>
+# EXE_GOT_BE:  30000 00000000 80000000 00030010<br>
+#                    ^        ^        ^-- v1 (0x30010)<br>
 #                    |        +-- Module pointer (0x80000000)<br>
 #                    +-- Lazy resolver (0x0)<br>
<br>
 # EXE_GOT_EL: Contents of section .got:<br>
-# EXE_GOT_EL:  30004 00000000 00000080 00000300<br>
-#                    ^        ^        ^-- v1 (0x30000)<br>
+# EXE_GOT_EL:  30000 00000000 00000080 10000300<br>
+#                    ^        ^        ^-- v1 (0x30010)<br>
 #                    |        +-- Module pointer (0x80000000)<br>
 #                    +-- Lazy resolver (0x0)<br>
<br>
@@ -68,21 +68,21 @@ v1:<br>
 # EXE_DIS_EL:  20000:  18 80 02 3c  lui $2, 32792<br>
<br>
 # DSO_SYM: Sections:<br>
-# DSO_SYM: .got 0000000c 0000000000020004 DATA<br>
+# DSO_SYM: .got 0000000c 0000000000020000 DATA<br>
 # DSO_SYM: SYMBOL TABLE:<br>
-# DSO_SYM: 00027ff4         *ABS*               00000000 _gp<br>
+# DSO_SYM: 00027ff0         *ABS*               00000000 _gp<br>
 #          ^-- .got + GP offset (0x7ff0)<br>
-# DSO_SYM: 00020000 g       .data               00000004 v1<br>
+# DSO_SYM: 00020010 g       .data               00000004 v1<br>
<br>
 # DSO_GOT_BE: Contents of section .got:<br>
-# DSO_GOT_BE:  20004 00000000 80000000 00020000<br>
-#                    ^        ^        ^-- v1 (0x20000)<br>
+# DSO_GOT_BE:  20000 00000000 80000000 00020010<br>
+#                    ^        ^        ^-- v1 (0x20010)<br>
 #                    |        +-- Module pointer (0x80000000)<br>
 #                    +-- Lazy resolver (0x0)<br>
<br>
 # DSO_GOT_EL: Contents of section .got:<br>
-# DSO_GOT_EL:  20004 00000000 00000080 00000200<br>
-#                    ^        ^        ^-- v1 (0x20000)<br>
+# DSO_GOT_EL:  20000 00000000 00000080 10000200<br>
+#                    ^        ^        ^-- v1 (0x20010)<br>
 #                    |        +-- Module pointer (0x80000000)<br>
 #                    +-- Lazy resolver (0x0)<br>
<br>
<br>
Modified: lld/trunk/test/ELF/relative-dynamic-reloc-ppc64.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relative-dynamic-reloc-ppc64.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relative-dynamic-reloc-ppc64.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/relative-dynamic-reloc-ppc64.s (original)<br>
+++ lld/trunk/test/ELF/relative-dynamic-reloc-ppc64.s Tue Nov 24 04:15:50 2015<br>
@@ -13,7 +13,7 @@<br>
 // CHECK-NEXT:     0x10010 R_PPC64_RELATIVE - 0x10009<br>
 // CHECK-NEXT:     0x{{.*}} R_PPC64_RELATIVE - 0x[[ZED_ADDR:.*]]<br>
 // CHECK-NEXT:     0x{{.*}} R_PPC64_RELATIVE - 0x[[FOO_ADDR]]<br>
-// CHECK-NEXT:     0x160 R_PPC64_ADDR64 external 0x0<br>
+// CHECK-NEXT:     0x198 R_PPC64_ADDR64 external 0x0<br>
 // CHECK-NEXT:   }<br>
 // CHECK-NEXT: ]<br>
<br>
<br>
Modified: lld/trunk/test/ELF/relative-dynamic-reloc.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relative-dynamic-reloc.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relative-dynamic-reloc.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/relative-dynamic-reloc.s (original)<br>
+++ lld/trunk/test/ELF/relative-dynamic-reloc.s Tue Nov 24 04:15:50 2015<br>
@@ -12,7 +12,7 @@<br>
 // CHECK-NEXT:     0x1010 R_X86_64_RELATIVE - 0x1009<br>
 // CHECK-NEXT:     0x{{.*}} R_X86_64_RELATIVE - 0x[[ZED_ADDR:.*]]<br>
 // CHECK-NEXT:     0x{{.*}} R_X86_64_RELATIVE - 0x[[FOO_ADDR]]<br>
-// CHECK-NEXT:     0x160 R_X86_64_64 external 0x0<br>
+// CHECK-NEXT:     0x198 R_X86_64_64 external 0x0<br>
 // CHECK-NEXT:   }<br>
 // CHECK-NEXT: ]<br>
<br>
<br>
Modified: lld/trunk/test/ELF/relocation.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relocation.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relocation.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/relocation.s (original)<br>
+++ lld/trunk/test/ELF/relocation.s Tue Nov 24 04:15:50 2015<br>
@@ -104,7 +104,7 @@ R_X86_64_64:<br>
  .quad R_X86_64_64<br>
<br>
 // CHECK:      Contents of section .R_X86_64_64:<br>
-// CHECK-NEXT:   10158 58010100 00000000<br>
+// CHECK-NEXT:   10190 90010100 00000000<br>
<br>
 .section .R_X86_64_GOTPCREL,"a",@progbits<br>
 .global R_X86_64_GOTPCREL<br>
@@ -114,4 +114,4 @@ R_X86_64_GOTPCREL:<br>
 // 0x120A8 - 0x10160 = 8008<br>
 // 8008 = 0x481f0000   in little endian<br>
 // CHECK:      Contents of section .R_X86_64_GOTPCREL<br>
-// CHECK-NEXT:   10160 801f0000<br>
+// CHECK-NEXT:   10198 481f0000<br>
<br>
Modified: lld/trunk/test/ELF/section-name.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/section-name.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/section-name.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/section-name.s (original)<br>
+++ lld/trunk/test/ELF/section-name.s Tue Nov 24 04:15:50 2015<br>
@@ -26,12 +26,12 @@ _start:<br>
 // CHECK:     Name: .rodata<br>
 // CHECK-NOT: Name: .text.a<br>
 // CHECK:     Name: .text<br>
+// CHECK-NOT: Name: .data.rel.ro.a<br>
+// CHECK-NOT: Name: .data.rel.ro.local.a<br>
+// CHECK:     Name: .<a href="http://data.rel.ro" rel="noreferrer" target="_blank">data.rel.ro</a><br>
 // CHECK-NOT: Name: .data.a<br>
 // CHECK:     Name: .data<br>
 // CHECK:     Name: .foo.a<br>
 // CHECK:     Name: .foo<br>
-// CHECK-NOT: Name: .data.rel.ro.a<br>
-// CHECK-NOT: Name: .data.rel.ro.local.a<br>
-// CHECK:     Name: .<a href="http://data.rel.ro" rel="noreferrer" target="_blank">data.rel.ro</a><br>
 // CHECK-NOT: Name: .bss.a<br>
 // CHECK:     Name: .bss<br>
<br>
Modified: lld/trunk/test/ELF/shared.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/shared.s?rev=253971&r1=253970&r2=253971&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/shared.s?rev=253971&r1=253970&r2=253971&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/test/ELF/shared.s (original)<br>
+++ lld/trunk/test/ELF/shared.s Tue Nov 24 04:15:50 2015<br>
@@ -46,7 +46,7 @@<br>
 // CHECK-NEXT:     SHF_ALLOC<br>
 // CHECK-NEXT:   ]<br>
 // CHECK-NEXT:   Address: [[DYNSYMADDR:.*]]<br>
-// CHECK-NEXT:   Offset: 0x110<br>
+// CHECK-NEXT:   Offset: 0x130<br>
 // CHECK-NEXT:   Size:<br>
 // CHECK-NEXT:   Link: [[DYNSTR:.*]]<br>
 // CHECK-NEXT:   Info: 1<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>