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