[lld] r304008 - Order writable executable sections before writable ones.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Fri May 26 10:23:26 PDT 2017


Author: rafael
Date: Fri May 26 12:23:25 2017
New Revision: 304008

URL: http://llvm.org/viewvc/llvm-project?rev=304008&view=rev
Log:
Order writable executable sections before writable ones.

On SPARC, .plt is both writeable and executable. The current way
sections are sorted means that lld puts it after .data/.bss. but it
really needs to be close to .test to make sure branches into .plt
don't overflow. I'd argue that because .bss is supposed to come last
on all architectures, we should change the default sort order such
that writable and executable sections come before sections that are
just writeable. read-only executable sections should still come after
sections that are just read-only of course. This diff makes this
change.

Modified:
    lld/trunk/ELF/Writer.cpp
    lld/trunk/test/ELF/amdgpu-globals.s
    lld/trunk/test/ELF/gc-sections.s
    lld/trunk/test/ELF/i386-tls-ie-shared.s
    lld/trunk/test/ELF/linkerscript/sections-constraint.s
    lld/trunk/test/ELF/relocation-size-shared.s
    lld/trunk/test/ELF/relocation-size.s
    lld/trunk/test/ELF/section-layout.s
    lld/trunk/test/ELF/tls-i686.s

Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=304008&r1=304007&r2=304008&view=diff
==============================================================================
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Fri May 26 12:23:25 2017
@@ -647,10 +647,11 @@ bool elf::isRelroSection(const OutputSec
 // * It is easy to check if a give branch was taken.
 // * It is easy two see how similar two ranks are (see getRankProximity).
 enum RankFlags {
-  RF_NOT_ADDR_SET = 1 << 15,
-  RF_NOT_INTERP = 1 << 14,
-  RF_NOT_ALLOC = 1 << 13,
-  RF_WRITE = 1 << 12,
+  RF_NOT_ADDR_SET = 1 << 16,
+  RF_NOT_INTERP = 1 << 15,
+  RF_NOT_ALLOC = 1 << 14,
+  RF_WRITE = 1 << 13,
+  RF_EXEC_WRITE = 1 << 12,
   RF_EXEC = 1 << 11,
   RF_NON_TLS_BSS = 1 << 10,
   RF_NON_TLS_BSS_RO = 1 << 9,
@@ -685,19 +686,29 @@ static unsigned getSectionRank(const Out
   if (!(Sec->Flags & SHF_ALLOC))
     return Rank | RF_NOT_ALLOC;
 
-  // We want the read only sections first so that they go in the PT_LOAD
-  // covering the program headers at the start of the file.
-  if (Sec->Flags & SHF_WRITE)
-    Rank |= RF_WRITE;
-
-  if (Sec->Flags & SHF_EXECINSTR) {
-    // For a corresponding reason, put non exec sections first (the program
-    // header PT_LOAD is not executable).
-    // We only do that if we are not using linker scripts, since with linker
-    // scripts ro and rx sections are in the same PT_LOAD, so their relative
-    // order is not important. The same applies for -no-rosegment.
-    if ((Rank & RF_WRITE) || !Config->SingleRoRx)
+  // Sort sections based on their access permission in the following
+  // order: R, RX, RWX, RW.  This order is based on the following
+  // considerations:
+  // * Read-only sections come first such that they go in the
+  //   PT_LOAD covering the program headers at the start of the file.
+  // * Read-only, executable sections come next, unless the
+  //   -no-rosegment option is used.
+  // * Writable, executable sections follow such that .plt on
+  //   architectures where it needs to be writable will be placed
+  //   between .text and .data.
+  // * Writable sections come last, such that .bss lands at the very
+  //   end of the last PT_LOAD.
+  bool IsExec = Sec->Flags & SHF_EXECINSTR;
+  bool IsWrite = Sec->Flags & SHF_WRITE;
+
+  if (IsExec) {
+    if (IsWrite)
+      Rank |= RF_EXEC_WRITE;
+    else if (!Config->SingleRoRx)
       Rank |= RF_EXEC;
+  } else {
+    if (IsWrite)
+      Rank |= RF_WRITE;
   }
 
   // If we got here we know that both A and B are in the same PT_LOAD.

Modified: lld/trunk/test/ELF/amdgpu-globals.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/amdgpu-globals.s?rev=304008&r1=304007&r2=304008&view=diff
==============================================================================
--- lld/trunk/test/ELF/amdgpu-globals.s (original)
+++ lld/trunk/test/ELF/amdgpu-globals.s Fri May 26 12:23:25 2017
@@ -41,6 +41,19 @@ program_global_readonly:
 	.long	0                       ; 0x0
 
 # CHECK: Section {
+# CHECK: Name: .hsatext
+# CHECK: Type: SHT_PROGBITS
+# CHECK: Flags [ (0xC00007)
+# CHECK: SHF_ALLOC (0x2)
+# CHECK: SHF_AMDGPU_HSA_AGENT (0x800000)
+# CHECK: SHF_AMDGPU_HSA_CODE (0x400000)
+# CHECK: SHF_EXECINSTR (0x4)
+# CHECK: SHF_WRITE (0x1)
+# CHECK: ]
+# CHECK: Address: [[HSATEXT_ADDR:[0-9xa-f]+]]
+# CHECK: }
+
+# CHECK: Section {
 # CHECK: Name: .hsadata_global_program
 # CHECK: Type: SHT_PROGBITS (0x1)
 # CHECK: Flags [ (0x100003)
@@ -62,19 +75,6 @@ program_global_readonly:
 # CHECK: ]
 # CHECK: }
 
-# CHECK: Section {
-# CHECK: Name: .hsatext
-# CHECK: Type: SHT_PROGBITS
-# CHECK: Flags [ (0xC00007)
-# CHECK: SHF_ALLOC (0x2)
-# CHECK: SHF_AMDGPU_HSA_AGENT (0x800000)
-# CHECK: SHF_AMDGPU_HSA_CODE (0x400000)
-# CHECK: SHF_EXECINSTR (0x4)
-# CHECK: SHF_WRITE (0x1)
-# CHECK: ]
-# CHECK: Address: [[HSATEXT_ADDR:[0-9xa-f]+]]
-# CHECK: }
-
 # CHECK: Symbol {
 # CHECK: Name: module_global_agent
 # CHECK: Value:

Modified: lld/trunk/test/ELF/gc-sections.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/gc-sections.s?rev=304008&r1=304007&r2=304008&view=diff
==============================================================================
--- lld/trunk/test/ELF/gc-sections.s (original)
+++ lld/trunk/test/ELF/gc-sections.s Fri May 26 12:23:25 2017
@@ -10,10 +10,10 @@
 
 # NOGC: Name: .eh_frame
 # NOGC: Name: .text
-# NOGC: Name: .ctors
-# NOGC: Name: .dtors
 # NOGC: Name: .init
 # NOGC: Name: .fini
+# NOGC: Name: .ctors
+# NOGC: Name: .dtors
 # NOGC: Name: .debug_pubtypes
 # NOGC: Name: .comment
 # NOGC: Name: a
@@ -25,10 +25,10 @@
 
 # GC1:     Name: .eh_frame
 # GC1:     Name: .text
-# GC1:     Name: .ctors
-# GC1:     Name: .dtors
 # GC1:     Name: .init
 # GC1:     Name: .fini
+# GC1:     Name: .ctors
+# GC1:     Name: .dtors
 # GC1:     Name: .debug_pubtypes
 # GC1:     Name: .comment
 # GC1:     Name: a
@@ -40,10 +40,10 @@
 
 # GC2:     Name: .eh_frame
 # GC2:     Name: .text
-# GC2:     Name: .ctors
-# GC2:     Name: .dtors
 # GC2:     Name: .init
 # GC2:     Name: .fini
+# GC2:     Name: .ctors
+# GC2:     Name: .dtors
 # GC2:     Name: .debug_pubtypes
 # GC2:     Name: .comment
 # GC2:     Name: a

Modified: lld/trunk/test/ELF/i386-tls-ie-shared.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/i386-tls-ie-shared.s?rev=304008&r1=304007&r2=304008&view=diff
==============================================================================
--- lld/trunk/test/ELF/i386-tls-ie-shared.s (original)
+++ lld/trunk/test/ELF/i386-tls-ie-shared.s Fri May 26 12:23:25 2017
@@ -13,8 +13,8 @@
 // GOTRELSHARED-NEXT:     SHF_ALLOC
 // GOTRELSHARED-NEXT:     SHF_WRITE
 // GOTRELSHARED-NEXT:   ]
-// GOTRELSHARED-NEXT:   Address: 0x1058
-// GOTRELSHARED-NEXT:   Offset: 0x1058
+// GOTRELSHARED-NEXT:   Address: 0x2058
+// GOTRELSHARED-NEXT:   Offset: 0x2058
 // GOTRELSHARED-NEXT:   Size: 16
 // GOTRELSHARED-NEXT:   Link: 0
 // GOTRELSHARED-NEXT:   Info: 0
@@ -23,44 +23,44 @@
 // GOTRELSHARED-NEXT: }
 // GOTRELSHARED:      Relocations [
 // GOTRELSHARED-NEXT:   Section ({{.*}}) .rel.dyn {
-// GOTRELSHARED-NEXT:     0x2002 R_386_RELATIVE - 0x0
-// GOTRELSHARED-NEXT:     0x200A R_386_RELATIVE - 0x0
-// GOTRELSHARED-NEXT:     0x2013 R_386_RELATIVE - 0x0
-// GOTRELSHARED-NEXT:     0x201C R_386_RELATIVE - 0x0
-// GOTRELSHARED-NEXT:     0x2024 R_386_RELATIVE - 0x0
-// GOTRELSHARED-NEXT:     0x202D R_386_RELATIVE - 0x0
-// GOTRELSHARED-NEXT:     0x2036 R_386_RELATIVE - 0x0
-// GOTRELSHARED-NEXT:     0x203F R_386_RELATIVE - 0x0
-// GOTRELSHARED-NEXT:     0x1058 R_386_TLS_TPOFF tlslocal0 0x0
-// GOTRELSHARED-NEXT:     0x105C R_386_TLS_TPOFF tlslocal1 0x0
-// GOTRELSHARED-NEXT:     0x1060 R_386_TLS_TPOFF tlsshared0 0x0
-// GOTRELSHARED-NEXT:     0x1064 R_386_TLS_TPOFF tlsshared1 0x0
+// GOTRELSHARED-NEXT:     0x1002 R_386_RELATIVE - 0x0
+// GOTRELSHARED-NEXT:     0x100A R_386_RELATIVE - 0x0
+// GOTRELSHARED-NEXT:     0x1013 R_386_RELATIVE - 0x0
+// GOTRELSHARED-NEXT:     0x101C R_386_RELATIVE - 0x0
+// GOTRELSHARED-NEXT:     0x1024 R_386_RELATIVE - 0x0
+// GOTRELSHARED-NEXT:     0x102D R_386_RELATIVE - 0x0
+// GOTRELSHARED-NEXT:     0x1036 R_386_RELATIVE - 0x0
+// GOTRELSHARED-NEXT:     0x103F R_386_RELATIVE - 0x0
+// GOTRELSHARED-NEXT:     0x2058 R_386_TLS_TPOFF tlslocal0 0x0
+// GOTRELSHARED-NEXT:     0x205C R_386_TLS_TPOFF tlslocal1 0x0
+// GOTRELSHARED-NEXT:     0x2060 R_386_TLS_TPOFF tlsshared0 0x0
+// GOTRELSHARED-NEXT:     0x2064 R_386_TLS_TPOFF tlsshared1 0x0
 // GOTRELSHARED-NEXT:   }
 // GOTRELSHARED-NEXT: ]
 // GOTRELSHARED:      0x6FFFFFFA RELCOUNT             8
 
 // DISASMSHARED:       Disassembly of section test:
 // DISASMSHARED-NEXT:  _start:
-// (.got)[0] = 0x2050 = 8272
-// (.got)[1] = 0x2054 = 8276
-// (.got)[2] = 0x2058 = 8280
-// (.got)[3] = 0x205C = 8284
-// DISASMSHARED-NEXT:  2000: 8b 0d 58 10 00 00   movl  4184, %ecx
-// DISASMSHARED-NEXT:  2006: 65 8b 01  movl  %gs:(%ecx), %eax
-// DISASMSHARED-NEXT:  2009: a1 58 10 00 00  movl  4184, %eax
-// DISASMSHARED-NEXT:  200e: 65 8b 00  movl  %gs:(%eax), %eax
-// DISASMSHARED-NEXT:  2011: 03 0d 58 10 00 00   addl  4184, %ecx
-// DISASMSHARED-NEXT:  2017: 65 8b 01  movl  %gs:(%ecx), %eax
-// DISASMSHARED-NEXT:  201a: 8b 0d 5c 10 00 00   movl  4188, %ecx
-// DISASMSHARED-NEXT:  2020: 65 8b 01  movl  %gs:(%ecx), %eax
-// DISASMSHARED-NEXT:  2023: a1 5c 10 00 00  movl  4188, %eax
-// DISASMSHARED-NEXT:  2028: 65 8b 00  movl  %gs:(%eax), %eax
-// DISASMSHARED-NEXT:  202b: 03 0d 5c 10 00 00   addl  4188, %ecx
-// DISASMSHARED-NEXT:  2031: 65 8b 01  movl  %gs:(%ecx), %eax
-// DISASMSHARED-NEXT:  2034: 8b 0d 60 10 00 00   movl  4192, %ecx
-// DISASMSHARED-NEXT:  203a: 65 8b 01  movl  %gs:(%ecx), %eax
-// DISASMSHARED-NEXT:  203d: 03 0d 64 10 00 00   addl  4196, %ecx
-// DISASMSHARED-NEXT:  2043: 65 8b 01  movl  %gs:(%ecx), %eax
+// (.got)[0] = 0x2058 = 8280
+// (.got)[1] = 0x205C = 8284
+// (.got)[2] = 0x2060 = 8288
+// (.got)[3] = 0x2064 = 8292
+// DISASMSHARED-NEXT:  1000: 8b 0d 58 20 00 00   movl  8280, %ecx
+// DISASMSHARED-NEXT:  1006: 65 8b 01  movl  %gs:(%ecx), %eax
+// DISASMSHARED-NEXT:  1009: a1 58 20 00 00  movl  8280, %eax
+// DISASMSHARED-NEXT:  100e: 65 8b 00  movl  %gs:(%eax), %eax
+// DISASMSHARED-NEXT:  1011: 03 0d 58 20 00 00   addl  8280, %ecx
+// DISASMSHARED-NEXT:  1017: 65 8b 01  movl  %gs:(%ecx), %eax
+// DISASMSHARED-NEXT:  101a: 8b 0d 5c 20 00 00   movl  8284, %ecx
+// DISASMSHARED-NEXT:  1020: 65 8b 01  movl  %gs:(%ecx), %eax
+// DISASMSHARED-NEXT:  1023: a1 5c 20 00 00  movl  8284, %eax
+// DISASMSHARED-NEXT:  1028: 65 8b 00  movl  %gs:(%eax), %eax
+// DISASMSHARED-NEXT:  102b: 03 0d 5c 20 00 00   addl  8284, %ecx
+// DISASMSHARED-NEXT:  1031: 65 8b 01  movl  %gs:(%ecx), %eax
+// DISASMSHARED-NEXT:  1034: 8b 0d 60 20 00 00   movl  8288, %ecx
+// DISASMSHARED-NEXT:  103a: 65 8b 01  movl  %gs:(%ecx), %eax
+// DISASMSHARED-NEXT:  103d: 03 0d 64 20 00 00   addl  8292, %ecx
+// DISASMSHARED-NEXT:  1043: 65 8b 01  movl  %gs:(%ecx), %eax
 
 .type tlslocal0, at object
 .section .tbss,"awT", at nobits

Modified: lld/trunk/test/ELF/linkerscript/sections-constraint.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/sections-constraint.s?rev=304008&r1=304007&r2=304008&view=diff
==============================================================================
--- lld/trunk/test/ELF/linkerscript/sections-constraint.s (original)
+++ lld/trunk/test/ELF/linkerscript/sections-constraint.s Fri May 26 12:23:25 2017
@@ -24,8 +24,8 @@
 # NO1-NEXT: 0               00000000
 # NO1:  .writable     00000004
 # NO1:  .foo.2        00000004
-# NO1:  .foo.1        00000004
 # NO1:  .readable     00000004
+# NO1:  .foo.1        00000004
 
 .global _start
 _start:

Modified: lld/trunk/test/ELF/relocation-size-shared.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relocation-size-shared.s?rev=304008&r1=304007&r2=304008&view=diff
==============================================================================
--- lld/trunk/test/ELF/relocation-size-shared.s (original)
+++ lld/trunk/test/ELF/relocation-size-shared.s Fri May 26 12:23:25 2017
@@ -7,48 +7,48 @@
 
 // RELOCSHARED:       Relocations [
 // RELOCSHARED-NEXT:  Section ({{.*}}) .rela.dyn {
-// RELOCSHARED-NEXT:    0x203018 R_X86_64_SIZE64 fooshared 0xFFFFFFFFFFFFFFFF
-// RELOCSHARED-NEXT:    0x203020 R_X86_64_SIZE64 fooshared 0x0
-// RELOCSHARED-NEXT:    0x203028 R_X86_64_SIZE64 fooshared 0x1
-// RELOCSHARED-NEXT:    0x203048 R_X86_64_SIZE32 fooshared 0xFFFFFFFFFFFFFFFF
-// RELOCSHARED-NEXT:    0x20304F R_X86_64_SIZE32 fooshared 0x0
-// RELOCSHARED-NEXT:    0x203056 R_X86_64_SIZE32 fooshared 0x1
+// RELOCSHARED-NEXT:    0x201018 R_X86_64_SIZE64 fooshared 0xFFFFFFFFFFFFFFFF
+// RELOCSHARED-NEXT:    0x201020 R_X86_64_SIZE64 fooshared 0x0
+// RELOCSHARED-NEXT:    0x201028 R_X86_64_SIZE64 fooshared 0x1
+// RELOCSHARED-NEXT:    0x201048 R_X86_64_SIZE32 fooshared 0xFFFFFFFFFFFFFFFF
+// RELOCSHARED-NEXT:    0x20104F R_X86_64_SIZE32 fooshared 0x0
+// RELOCSHARED-NEXT:    0x201056 R_X86_64_SIZE32 fooshared 0x1
 // RELOCSHARED-NEXT:  }
 // RELOCSHARED-NEXT:]
 
 // DISASM:      Disassembly of section test
 // DISASM:      _data:
-// DISASM-NEXT: 203000: 19 00
-// DISASM-NEXT: 203002: 00 00
-// DISASM-NEXT: 203004: 00 00
-// DISASM-NEXT: 203006: 00 00
-// DISASM-NEXT: 203008: 1a 00
-// DISASM-NEXT: 20300a: 00 00
-// DISASM-NEXT: 20300c: 00 00
-// DISASM-NEXT: 20300e: 00 00
-// DISASM-NEXT: 203010: 1b 00
-// DISASM-NEXT: 203012: 00 00
-// DISASM-NEXT: 203014: 00 00
-// DISASM-NEXT: 203016: 00 00
-// DISASM-NEXT: 203018: 00 00
-// DISASM-NEXT: 20301a: 00 00
-// DISASM-NEXT: 20301c: 00 00
-// DISASM-NEXT: 20301e: 00 00
-// DISASM-NEXT: 203020: 00 00
-// DISASM-NEXT: 203022: 00 00
-// DISASM-NEXT: 203024: 00 00
-// DISASM-NEXT: 203026: 00 00
-// DISASM-NEXT: 203028: 00 00
-// DISASM-NEXT: 20302a: 00 00
-// DISASM-NEXT: 20302c: 00 00
-// DISASM-NEXT: 20302e: 00 00
+// DISASM-NEXT: 201000: 19 00
+// DISASM-NEXT: 201002: 00 00
+// DISASM-NEXT: 201004: 00 00
+// DISASM-NEXT: 201006: 00 00
+// DISASM-NEXT: 201008: 1a 00
+// DISASM-NEXT: 20100a: 00 00
+// DISASM-NEXT: 20100c: 00 00
+// DISASM-NEXT: 20100e: 00 00
+// DISASM-NEXT: 201010: 1b 00
+// DISASM-NEXT: 201012: 00 00
+// DISASM-NEXT: 201014: 00 00
+// DISASM-NEXT: 201016: 00 00
+// DISASM-NEXT: 201018: 00 00
+// DISASM-NEXT: 20101a: 00 00
+// DISASM-NEXT: 20101c: 00 00
+// DISASM-NEXT: 20101e: 00 00
+// DISASM-NEXT: 201020: 00 00
+// DISASM-NEXT: 201022: 00 00
+// DISASM-NEXT: 201024: 00 00
+// DISASM-NEXT: 201026: 00 00
+// DISASM-NEXT: 201028: 00 00
+// DISASM-NEXT: 20102a: 00 00
+// DISASM-NEXT: 20102c: 00 00
+// DISASM-NEXT: 20102e: 00 00
 // DISASM:      _start:
-// DISASM-NEXT: 203030: 8b 04 25 19 00 00 00 movl 25, %eax
-// DISASM-NEXT: 203037: 8b 04 25 1a 00 00 00 movl 26, %eax
-// DISASM-NEXT: 20303e: 8b 04 25 1b 00 00 00 movl 27, %eax
-// DISASM-NEXT: 203045: 8b 04 25 00 00 00 00 movl 0, %eax
-// DISASM-NEXT: 20304c: 8b 04 25 00 00 00 00 movl 0, %eax
-// DISASM-NEXT: 203053: 8b 04 25 00 00 00 00 movl 0, %eax
+// DISASM-NEXT: 201030: 8b 04 25 19 00 00 00 movl 25, %eax
+// DISASM-NEXT: 201037: 8b 04 25 1a 00 00 00 movl 26, %eax
+// DISASM-NEXT: 20103e: 8b 04 25 1b 00 00 00 movl 27, %eax
+// DISASM-NEXT: 201045: 8b 04 25 00 00 00 00 movl 0, %eax
+// DISASM-NEXT: 20104c: 8b 04 25 00 00 00 00 movl 0, %eax
+// DISASM-NEXT: 201053: 8b 04 25 00 00 00 00 movl 0, %eax
 
 .data
 .global foo

Modified: lld/trunk/test/ELF/relocation-size.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relocation-size.s?rev=304008&r1=304007&r2=304008&view=diff
==============================================================================
--- lld/trunk/test/ELF/relocation-size.s (original)
+++ lld/trunk/test/ELF/relocation-size.s Fri May 26 12:23:25 2017
@@ -11,82 +11,82 @@
 
 // DISASM:      Disassembly of section test:
 // DISASM-NEXT: _data:
-// DISASM-NEXT: 202000: 19 00
-// DISASM-NEXT: 202002: 00 00
-// DISASM-NEXT: 202004: 00 00
-// DISASM-NEXT: 202006: 00 00
-// DISASM-NEXT: 202008: 1a 00
-// DISASM-NEXT: 20200a: 00 00
-// DISASM-NEXT: 20200c: 00 00
-// DISASM-NEXT: 20200e: 00 00
-// DISASM-NEXT: 202010: 1b 00
-// DISASM-NEXT: 202012: 00 00
-// DISASM-NEXT: 202014: 00 00
-// DISASM-NEXT: 202016: 00 00
-// DISASM-NEXT: 202018: 19 00
-// DISASM-NEXT: 20201a: 00 00
-// DISASM-NEXT: 20201c: 00 00
-// DISASM-NEXT: 20201e: 00 00
-// DISASM-NEXT: 202020: 1a 00
-// DISASM-NEXT: 202022: 00 00
-// DISASM-NEXT: 202024: 00 00
-// DISASM-NEXT: 202026: 00 00
-// DISASM-NEXT: 202028: 1b 00
-// DISASM-NEXT: 20202a: 00 00
-// DISASM-NEXT: 20202c: 00 00
-// DISASM-NEXT: 20202e: 00 00
+// DISASM-NEXT: 201000: 19 00
+// DISASM-NEXT: 201002: 00 00
+// DISASM-NEXT: 201004: 00 00
+// DISASM-NEXT: 201006: 00 00
+// DISASM-NEXT: 201008: 1a 00
+// DISASM-NEXT: 20100a: 00 00
+// DISASM-NEXT: 20100c: 00 00
+// DISASM-NEXT: 20100e: 00 00
+// DISASM-NEXT: 201010: 1b 00
+// DISASM-NEXT: 201012: 00 00
+// DISASM-NEXT: 201014: 00 00
+// DISASM-NEXT: 201016: 00 00
+// DISASM-NEXT: 201018: 19 00
+// DISASM-NEXT: 20101a: 00 00
+// DISASM-NEXT: 20101c: 00 00
+// DISASM-NEXT: 20101e: 00 00
+// DISASM-NEXT: 201020: 1a 00
+// DISASM-NEXT: 201022: 00 00
+// DISASM-NEXT: 201024: 00 00
+// DISASM-NEXT: 201026: 00 00
+// DISASM-NEXT: 201028: 1b 00
+// DISASM-NEXT: 20102a: 00 00
+// DISASM-NEXT: 20102c: 00 00
+// DISASM-NEXT: 20102e: 00 00
 // DISASM:      _start:
-// DISASM-NEXT: 202030: 8b 04 25 19 00 00 00 movl 25, %eax
-// DISASM-NEXT: 202037: 8b 04 25 1a 00 00 00 movl 26, %eax
-// DISASM-NEXT: 20203e: 8b 04 25 1b 00 00 00 movl 27, %eax
-// DISASM-NEXT: 202045: 8b 04 25 19 00 00 00 movl 25, %eax
-// DISASM-NEXT: 20204c: 8b 04 25 1a 00 00 00 movl 26, %eax
-// DISASM-NEXT: 202053: 8b 04 25 1b 00 00 00 movl 27, %eax
+// DISASM-NEXT: 201030: 8b 04 25 19 00 00 00 movl 25, %eax
+// DISASM-NEXT: 201037: 8b 04 25 1a 00 00 00 movl 26, %eax
+// DISASM-NEXT: 20103e: 8b 04 25 1b 00 00 00 movl 27, %eax
+// DISASM-NEXT: 201045: 8b 04 25 19 00 00 00 movl 25, %eax
+// DISASM-NEXT: 20104c: 8b 04 25 1a 00 00 00 movl 26, %eax
+// DISASM-NEXT: 201053: 8b 04 25 1b 00 00 00 movl 27, %eax
 
 // RELOCSHARED:      Relocations [
 // RELOCSHARED-NEXT: Section ({{.*}}) .rela.dyn {
-// RELOCSHARED-NEXT:    0x3000 R_X86_64_SIZE64 foo 0xFFFFFFFFFFFFFFFF
-// RELOCSHARED-NEXT:    0x3008 R_X86_64_SIZE64 foo 0x0
-// RELOCSHARED-NEXT:    0x3010 R_X86_64_SIZE64 foo 0x1
-// RELOCSHARED-NEXT:    0x3033 R_X86_64_SIZE32 foo 0xFFFFFFFFFFFFFFFF
-// RELOCSHARED-NEXT:    0x303A R_X86_64_SIZE32 foo 0x0
-// RELOCSHARED-NEXT:    0x3041 R_X86_64_SIZE32 foo 0x1
+// RELOCSHARED-NEXT:    0x1000 R_X86_64_SIZE64 foo 0xFFFFFFFFFFFFFFFF
+// RELOCSHARED-NEXT:    0x1008 R_X86_64_SIZE64 foo 0x0
+// RELOCSHARED-NEXT:    0x1010 R_X86_64_SIZE64 foo 0x1
+// RELOCSHARED-NEXT:    0x1033 R_X86_64_SIZE32 foo 0xFFFFFFFFFFFFFFFF
+// RELOCSHARED-NEXT:    0x103A R_X86_64_SIZE32 foo 0x0
+// RELOCSHARED-NEXT:    0x1041 R_X86_64_SIZE32 foo 0x1
 // RELOCSHARED-NEXT:  }
 // RELOCSHARED-NEXT: ]
 
 // DISASMSHARED:      Disassembly of section test:
 // DISASMSHARED-NEXT: _data:
-// DISASMSHARED-NEXT: 3000: 00 00
-// DISASMSHARED-NEXT: 3002: 00 00
-// DISASMSHARED-NEXT: 3004: 00 00
-// DISASMSHARED-NEXT: 3006: 00 00
-// DISASMSHARED-NEXT: 3008: 00 00
-// DISASMSHARED-NEXT: 300a: 00 00
-// DISASMSHARED-NEXT: 300c: 00 00
-// DISASMSHARED-NEXT: 300e: 00 00
-// DISASMSHARED-NEXT: 3010: 00 00
-// DISASMSHARED-NEXT: 3012: 00 00
-// DISASMSHARED-NEXT: 3014: 00 00
-// DISASMSHARED-NEXT: 3016: 00 00
-// DISASMSHARED-NEXT: 3018: 19 00
-// DISASMSHARED-NEXT: 301a: 00 00
-// DISASMSHARED-NEXT: 301c: 00 00
-// DISASMSHARED-NEXT: 301e: 00 00
-// DISASMSHARED-NEXT: 3020: 1a 00
-// DISASMSHARED-NEXT: 3022: 00 00
-// DISASMSHARED-NEXT: 3024: 00 00
-// DISASMSHARED-NEXT: 3026: 00 00
-// DISASMSHARED-NEXT: 3028: 1b 00
-// DISASMSHARED-NEXT: 302a: 00 00
-// DISASMSHARED-NEXT: 302c: 00 00
-// DISASMSHARED-NEXT: 302e: 00 00
+// DISASMSHARED-NEXT: 1000: 00 00
+// DISASMSHARED-NEXT: 1002: 00 00
+// DISASMSHARED-NEXT: 1004: 00 00
+// DISASMSHARED-NEXT: 1006: 00 00
+// DISASMSHARED-NEXT: 1008: 00 00
+// DISASMSHARED-NEXT: 100a: 00 00
+// DISASMSHARED-NEXT: 100c: 00 00
+// DISASMSHARED-NEXT: 100e: 00 00
+// DISASMSHARED-NEXT: 1010: 00 00
+// DISASMSHARED-NEXT: 1012: 00 00
+// DISASMSHARED-NEXT: 1014: 00 00
+// DISASMSHARED-NEXT: 1016: 00 00
+// DISASMSHARED-NEXT: 1018: 19 00
+// DISASMSHARED-NEXT: 101a: 00 00
+// DISASMSHARED-NEXT: 101c: 00 00
+// DISASMSHARED-NEXT: 101e: 00 00
+// DISASMSHARED-NEXT: 1020: 1a 00
+// DISASMSHARED-NEXT: 1022: 00 00
+// DISASMSHARED-NEXT: 1024: 00 00
+// DISASMSHARED-NEXT: 1026: 00 00
+// DISASMSHARED-NEXT: 1028: 1b 00
+// DISASMSHARED-NEXT: 102a: 00 00
+// DISASMSHARED-NEXT: 102c: 00 00
+// DISASMSHARED-NEXT: 102e: 00 00
 // DISASMSHARED:      _start:
-// DISASMSHARED-NEXT: 3030: 8b 04 25 00 00 00 00 movl 0, %eax
-// DISASMSHARED-NEXT: 3037: 8b 04 25 00 00 00 00 movl 0, %eax
-// DISASMSHARED-NEXT: 303e: 8b 04 25 00 00 00 00 movl 0, %eax
-// DISASMSHARED-NEXT: 3045: 8b 04 25 19 00 00 00 movl 25, %eax
-// DISASMSHARED-NEXT: 304c: 8b 04 25 1a 00 00 00 movl 26, %eax
-// DISASMSHARED-NEXT: 3053: 8b 04 25 1b 00 00 00 movl 27, %eax
+// DISASMSHARED-NEXT: 1030: 8b 04 25 00 00 00 00 movl 0, %eax
+// DISASMSHARED-NEXT: 1037: 8b 04 25 00 00 00 00 movl 0, %eax
+// DISASMSHARED-NEXT: 103e: 8b 04 25 00 00 00 00 movl 0, %eax
+// DISASMSHARED-NEXT: 1045: 8b 04 25 19 00 00 00 movl 25, %eax
+// DISASMSHARED-NEXT: 104c: 8b 04 25 1a 00 00 00 movl 26, %eax
+// DISASMSHARED-NEXT: 1053: 8b 04 25 1b 00 00 00 movl 27, %eax
 
 .data
 .global foo

Modified: lld/trunk/test/ELF/section-layout.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/section-layout.s?rev=304008&r1=304007&r2=304008&view=diff
==============================================================================
--- lld/trunk/test/ELF/section-layout.s (original)
+++ lld/trunk/test/ELF/section-layout.s Fri May 26 12:23:25 2017
@@ -34,6 +34,11 @@ _start:
 // CHECK: Name: c
 // CHECK: Name: d
 
+// Sections that are both writable and executable appear before
+// sections that are only writable.
+// CHECK: Name: k
+// CHECK: Name: l
+
 // Writable sections appear before TLS and other relro sections.
 // CHECK: Name: i
 
@@ -42,8 +47,6 @@ _start:
 // CHECK: Name: g
 
 // CHECK: Name: j
-// CHECK: Name: k
-// CHECK: Name: l
 
 // Non allocated sections are in input order.
 // CHECK: Name: t

Modified: lld/trunk/test/ELF/tls-i686.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/tls-i686.s?rev=304008&r1=304007&r2=304008&view=diff
==============================================================================
--- lld/trunk/test/ELF/tls-i686.s (original)
+++ lld/trunk/test/ELF/tls-i686.s Fri May 26 12:23:25 2017
@@ -32,38 +32,38 @@ _start:
 
 // DIS:      Disassembly of section test:
 // DIS-NEXT: _start:
-// DIS-NEXT: 12000: ba 08 00 00 00       movl $8, %edx
-// DIS-NEXT: 12005: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx
-// DIS-NEXT: 1200c: 29 d0                subl %edx, %eax
-// DIS-NEXT: 1200e: ba 04 00 00 00       movl $4, %edx
-// DIS-NEXT: 12013: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx
-// DIS-NEXT: 1201a: 29 d0                subl %edx, %eax
-// DIS-NEXT: 1201c: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx
-// DIS-NEXT: 12023: 8d 81 f8 ff ff ff    leal -8(%ecx), %eax
-// DIS-NEXT: 12029: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx
-// DIS-NEXT: 12030: 8d 81 77 00 00 00    leal 119(%ecx), %eax
+// DIS-NEXT: 11000: ba 08 00 00 00       movl $8, %edx
+// DIS-NEXT: 11005: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx
+// DIS-NEXT: 1100c: 29 d0                subl %edx, %eax
+// DIS-NEXT: 1100e: ba 04 00 00 00       movl $4, %edx
+// DIS-NEXT: 11013: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx
+// DIS-NEXT: 1101a: 29 d0                subl %edx, %eax
+// DIS-NEXT: 1101c: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx
+// DIS-NEXT: 11023: 8d 81 f8 ff ff ff    leal -8(%ecx), %eax
+// DIS-NEXT: 11029: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx
+// DIS-NEXT: 11030: 8d 81 77 00 00 00    leal 119(%ecx), %eax
 
 // RELOC: Relocations [
 // RELOC-NEXT: ]
 
 // DISSHARED: Disassembly of section test:
 // DISSHARED-NEXT: _start:
-// DISSHARED-NEXT: 2000: ba 00 00 00 00 movl   $0, %edx
-// DISSHARED-NEXT: 2005: 65 8b 0d 00 00 00 00  movl %gs:0, %ecx
-// DISSHARED-NEXT: 200c: 29 d0 subl            %edx, %eax
-// DISSHARED-NEXT: 200e: ba 00 00 00 00        movl $0, %edx
-// DISSHARED-NEXT: 2013: 65 8b 0d 00 00 00 00  movl %gs:0, %ecx
-// DISSHARED-NEXT: 201a: 29 d0 subl            %edx, %eax
-// DISSHARED-NEXT: 201c: 65 8b 0d 00 00 00 00  movl %gs:0, %ecx
-// DISSHARED-NEXT: 2023: 8d 81 00 00 00 00     leal (%ecx), %eax
-// DISSHARED-NEXT: 2029: 65 8b 0d 00 00 00 00  movl %gs:0, %ecx
-// DISSHARED-NEXT: 2030: 8d 81 7b 00 00 00     leal 123(%ecx), %eax
+// DISSHARED-NEXT: 1000: ba 00 00 00 00 movl   $0, %edx
+// DISSHARED-NEXT: 1005: 65 8b 0d 00 00 00 00  movl %gs:0, %ecx
+// DISSHARED-NEXT: 100c: 29 d0 subl            %edx, %eax
+// DISSHARED-NEXT: 100e: ba 00 00 00 00        movl $0, %edx
+// DISSHARED-NEXT: 1013: 65 8b 0d 00 00 00 00  movl %gs:0, %ecx
+// DISSHARED-NEXT: 101a: 29 d0 subl            %edx, %eax
+// DISSHARED-NEXT: 101c: 65 8b 0d 00 00 00 00  movl %gs:0, %ecx
+// DISSHARED-NEXT: 1023: 8d 81 00 00 00 00     leal (%ecx), %eax
+// DISSHARED-NEXT: 1029: 65 8b 0d 00 00 00 00  movl %gs:0, %ecx
+// DISSHARED-NEXT: 1030: 8d 81 7b 00 00 00     leal 123(%ecx), %eax
 
 // RELOCSHARED:      Relocations [
 // RELOCSHARED-NEXT: Section (4) .rel.dyn {
-// RELOCSHARED-NEXT:   0x2001 R_386_TLS_TPOFF32 var 0x0
-// RELOCSHARED-NEXT:   0x2025 R_386_TLS_TPOFF var 0x0
-// RELOCSHARED-NEXT:   0x200F R_386_TLS_TPOFF32 var1 0x0
-// RELOCSHARED-NEXT:   0x2032 R_386_TLS_TPOFF var1 0x0
+// RELOCSHARED-NEXT:   0x1001 R_386_TLS_TPOFF32 var 0x0
+// RELOCSHARED-NEXT:   0x1025 R_386_TLS_TPOFF var 0x0
+// RELOCSHARED-NEXT:   0x100F R_386_TLS_TPOFF32 var1 0x0
+// RELOCSHARED-NEXT:   0x1032 R_386_TLS_TPOFF var1 0x0
 // RELOCSHARED-NEXT:  }
 // RELOCSHARED-NEXT: ]




More information about the llvm-commits mailing list