[lld] r371213 - [ELF][test] Simplify and reorganize tests

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 6 08:10:32 PDT 2019


Author: maskray
Date: Fri Sep  6 08:10:31 2019
New Revision: 371213

URL: http://llvm.org/viewvc/llvm-project?rev=371213&view=rev
Log:
[ELF][test] Simplify and reorganize tests

Add file-level comments
Delete insignificant addresses to make them more tolerant to layout changes
Simplify test output
Delete simple Inputs/*.s files

Delete version-script-copy-rel.s - covered by verdef-defaultver.s
Delete version-wildcard.test - covered by version-script-glob.s

Added:
    lld/trunk/test/ELF/apply-dynamic-relocs.s
    lld/trunk/test/ELF/gc-sections-string.s
      - copied, changed from r371189, lld/trunk/test/ELF/string-gc.s
    lld/trunk/test/ELF/x86-64-reloc-size-shared.s
      - copied, changed from r371189, lld/trunk/test/ELF/relocation-size-shared.s
    lld/trunk/test/ELF/x86-64-reloc-size.s
    lld/trunk/test/ELF/x86-64-tls-ie.s
      - copied, changed from r371189, lld/trunk/test/ELF/tls-got.s
Removed:
    lld/trunk/test/ELF/Inputs/abs-hidden.s
    lld/trunk/test/ELF/Inputs/ehframe-relocation.s
    lld/trunk/test/ELF/dynamic-got-rela.s
    lld/trunk/test/ELF/relocation-size-shared.s
    lld/trunk/test/ELF/relocation-size.s
    lld/trunk/test/ELF/string-gc.s
    lld/trunk/test/ELF/tls-got.s
    lld/trunk/test/ELF/version-script-copy-rel.s
    lld/trunk/test/ELF/version-wildcard.test
Modified:
    lld/trunk/test/ELF/abs-hidden.s
    lld/trunk/test/ELF/allow-multiple-definition.s
    lld/trunk/test/ELF/bss-start-common.s
    lld/trunk/test/ELF/copy-rel-abs.s
    lld/trunk/test/ELF/copy-rel-large.s
    lld/trunk/test/ELF/copy-rel-pie.s
    lld/trunk/test/ELF/ctors_dtors_priority.s
    lld/trunk/test/ELF/discard-merge-locals.s
    lld/trunk/test/ELF/dynamic-list-wildcard.s
    lld/trunk/test/ELF/dynamic-list.s
    lld/trunk/test/ELF/dynamic-reloc-index.s
    lld/trunk/test/ELF/dynamic-reloc.s
    lld/trunk/test/ELF/dynamic.s
    lld/trunk/test/ELF/edata-no-bss.s
    lld/trunk/test/ELF/ehframe-relocation.s
    lld/trunk/test/ELF/emit-relocs-merge.s
    lld/trunk/test/ELF/relocation-copy-flags.s
    lld/trunk/test/ELF/relocation-copy-relro.s
    lld/trunk/test/ELF/relocation-relative-weak.s
    lld/trunk/test/ELF/relocation-undefined-weak.s
    lld/trunk/test/ELF/relro-non-contiguous.s
    lld/trunk/test/ELF/relro-tls.s
    lld/trunk/test/ELF/stdout.s
    lld/trunk/test/ELF/symbol-override.s
    lld/trunk/test/ELF/tls-offset.s
    lld/trunk/test/ELF/version-script-glob.s
    lld/trunk/test/ELF/version-script-weak.s
    lld/trunk/test/ELF/version-script.s
    lld/trunk/test/ELF/visibility.s
    lld/trunk/test/ELF/x86-64-tls-ie-opt-local.s

Removed: lld/trunk/test/ELF/Inputs/abs-hidden.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/Inputs/abs-hidden.s?rev=371212&view=auto
==============================================================================
--- lld/trunk/test/ELF/Inputs/abs-hidden.s (original)
+++ lld/trunk/test/ELF/Inputs/abs-hidden.s (removed)
@@ -1,3 +0,0 @@
-.global foo
-.hidden foo
-foo = 0x42

Removed: lld/trunk/test/ELF/Inputs/ehframe-relocation.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/Inputs/ehframe-relocation.s?rev=371212&view=auto
==============================================================================
--- lld/trunk/test/ELF/Inputs/ehframe-relocation.s (original)
+++ lld/trunk/test/ELF/Inputs/ehframe-relocation.s (removed)
@@ -1,2 +0,0 @@
-        .cfi_startproc
-        .cfi_endproc

Modified: lld/trunk/test/ELF/abs-hidden.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/abs-hidden.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/abs-hidden.s (original)
+++ lld/trunk/test/ELF/abs-hidden.s Fri Sep  6 08:10:31 2019
@@ -1,46 +1,19 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/abs-hidden.s -o %t2.o
-// RUN: ld.lld --hash-style=sysv %t.o %t2.o -o %t.so -shared
-// RUN: llvm-readobj -r -S --section-data %t.so | FileCheck %s
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
+# RUN: echo '.globl foo; .hidden foo; foo = 42' | llvm-mc -filetype=obj -triple=x86_64 - -o %t2.o
+# RUN: ld.lld %t.o %t2.o -o %t.so -shared
+# RUN: llvm-readelf -r -S -x .got -x .data %t.so | FileCheck %s
 
-        .quad foo
-        .long foo at gotpcrel
+## Test we don't create relocations for non-preemptable absolute symbols.
 
-// CHECK:      Name: .text
-// CHECK-NEXT: Type: SHT_PROGBITS
-// CHECK-NEXT: Flags [
-// CHECK-NEXT:   SHF_ALLOC
-// CHECK-NEXT:   SHF_EXECINSTR
-// CHECK-NEXT: ]
-// CHECK-NEXT: Address: 0x1000
-// CHECK-NEXT: Offset:
-// CHECK-NEXT: Size: 12
-// CHECK-NEXT: Link: 0
-// CHECK-NEXT: Info: 0
-// CHECK-NEXT: AddressAlignment: 4
-// CHECK-NEXT: EntrySize: 0
-// CHECK-NEXT: SectionData (
-// CHECK-NEXT:   0000: 42000000 00000000 58100000
-//                                       0x2060 - (0x1000 + 8) = 1058
-// CHECK-NEXT: )
+# CHECK: There are no relocations in this file.
+# CHECK: section '.got':
+# CHECK: 0x00001070 2a000000 00000000
 
-// CHECK:      Name: .got
-// CHECK-NEXT: Type: SHT_PROGBITS
-// CHECK-NEXT: Flags [
-// CHECK-NEXT:   SHF_ALLOC
-// CHECK-NEXT:   SHF_WRITE
-// CHECK-NEXT: ]
-// CHECK-NEXT: Address: 0x2060
-// CHECK-NEXT: Offset:
-// CHECK-NEXT: Size: 8
-// CHECK-NEXT: Link: 0
-// CHECK-NEXT: Info: 0
-// CHECK-NEXT: AddressAlignment: 8
-// CHECK-NEXT: EntrySize: 0
-// CHECK-NEXT: SectionData (
-// CHECK-NEXT:   0000: 42000000 00000000
-// CHECK-NEXT: )
+## .got - (.data+8) = 0xfffff068
+# CHECK: section '.data':
+# CHECK: 0x00002000 2a000000 00000000 68f0ffff
 
-// CHECK:      Relocations [
-// CHECK-NEXT: ]
+.data
+.quad foo
+.long foo at gotpcrel

Modified: lld/trunk/test/ELF/allow-multiple-definition.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/allow-multiple-definition.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/allow-multiple-definition.s (original)
+++ lld/trunk/test/ELF/allow-multiple-definition.s Fri Sep  6 08:10:31 2019
@@ -21,10 +21,10 @@
 # meet symbol should be used.
 
 # CHECK: _bar:
-# CHECK-NEXT: 201000:   b8 01 00 00 00   movl   $1, %eax
+# CHECK-NEXT:  movl   $1, %eax
 
 # REVERT: _bar:
-# REVERT-NEXT: 201000:   b8 02 00 00 00   movl   $2, %eax
+# REVERT-NEXT: movl   $2, %eax
 
 .globl _bar
 .type _bar, @function

Added: lld/trunk/test/ELF/apply-dynamic-relocs.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/apply-dynamic-relocs.s?rev=371213&view=auto
==============================================================================
--- lld/trunk/test/ELF/apply-dynamic-relocs.s (added)
+++ lld/trunk/test/ELF/apply-dynamic-relocs.s Fri Sep  6 08:10:31 2019
@@ -0,0 +1,32 @@
+# REQUIRES: x86
+
+## On RELA targets, --apply-dynamic-relocs writes addends to the relocated positions.
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
+# RUN: ld.lld %t.o -o %t.so -shared --apply-dynamic-relocs
+# RUN: llvm-readobj -r -S -l --section-data %t.so | FileCheck -check-prefixes=CHECK,APPLY %s
+
+# RUN: ld.lld %t.o -o %t2.so -shared
+# RUN: llvm-readobj -r -S -l --section-data %t2.so | FileCheck -check-prefixes=CHECK,NOAPPLY %s
+# RUN: ld.lld %t.o -o %t3.so -shared --no-apply-dynamic-relocs
+# RUN: cmp %t2.so %t3.so
+
+# CHECK:        Name: .got
+# CHECK:        Address: 0x[[GOT:.*]]
+# CHECK:        SectionData (
+# APPLY-NEXT:     0000: 00200000 00000000                |
+# NOAPPLY-NEXT:   0000: 00000000 00000000                |
+# CHECK-NEXT:   )
+
+# CHECK:      Relocations [
+# CHECK-NEXT:   Section ({{.*}}) .rela.dyn {
+# CHECK-NEXT:     0x[[GOT]] R_X86_64_RELATIVE - 0x[[ADDEND:.*]]
+# CHECK-NEXT:   }
+# CHECK-NEXT: ]
+
+# CHECK:      Type: PT_DYNAMIC
+# CHECK-NEXT: Offset: 0x[[ADDEND]]
+# CHECK-NEXT: VirtualAddress: 0x[[ADDEND]]
+# CHECK-NEXT: PhysicalAddress: 0x[[ADDEND]]
+
+cmpq    $0, _DYNAMIC at GOTPCREL(%rip)

Modified: lld/trunk/test/ELF/bss-start-common.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/bss-start-common.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/bss-start-common.s (original)
+++ lld/trunk/test/ELF/bss-start-common.s Fri Sep  6 08:10:31 2019
@@ -3,11 +3,13 @@
 # RUN: ld.lld %t -o %t2
 # RUN: llvm-objdump -t -section-headers %t2 | FileCheck %s
 
+## Test __bss_start is defined at the start of .bss
+
 # CHECK: Sections:
-# CHECK: Idx Name          Size     VMA          Type
-# CHECK:   2 .bss          00000004 0000000000201000 BSS
+# CHECK: Idx Name          Size     VMA                 Type
+# CHECK:   2 .bss          00000004 [[ADDR:[0-za-f]+]]  BSS
 # CHECK: SYMBOL TABLE:
-# CHECK: 0000000000201000  .bss 00000000 __bss_start
+# CHECK: [[ADDR]]          .bss 00000000 __bss_start
 
 .global __bss_start
 .text

Modified: lld/trunk/test/ELF/copy-rel-abs.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/copy-rel-abs.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/copy-rel-abs.s (original)
+++ lld/trunk/test/ELF/copy-rel-abs.s Fri Sep  6 08:10:31 2019
@@ -1,46 +1,22 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/copy-rel-abs.s -o %t1.o
-// RUN: ld.lld --hash-style=gnu -shared %t1.o -o %t1.so
-// RUN: llvm-readelf --dyn-symbols %t1.so | FileCheck --check-prefix=SYMS %s
-
-// The symbols have the same st_value, but one is ABS.
-// SYMS: 0000000000001000 {{.*}}   4 bar
-// SYMS: 0000000000001000 {{.*}}   4 foo
-// SYMS: 0000000000001000 {{.*}} ABS zed
-
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t2.o
-// RUN: ld.lld %t2.o %t1.so -o %t2
-// RUN: llvm-readobj --dyn-symbols %t2 | FileCheck %s
-
-// CHECK:      DynamicSymbols [
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name:
-// CHECK-NEXT:     Value:
-// CHECK-NEXT:     Size:
-// CHECK-NEXT:     Binding:
-// CHECK-NEXT:     Type:
-// CHECK-NEXT:     Other:
-// CHECK-NEXT:     Section:
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: foo
-// CHECK-NEXT:     Value:
-// CHECK-NEXT:     Size:
-// CHECK-NEXT:     Binding:
-// CHECK-NEXT:     Type:
-// CHECK-NEXT:     Other:
-// CHECK-NEXT:     Section: .bss.rel.ro
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: bar
-// CHECK-NEXT:     Value:
-// CHECK-NEXT:     Size:
-// CHECK-NEXT:     Binding:
-// CHECK-NEXT:     Type:
-// CHECK-NEXT:     Other:
-// CHECK-NEXT:     Section: .bss.rel.ro
-// CHECK-NEXT:   }
-// CHECK-NEXT: ]
+# REQUIRES: x86
+
+## Test SHN_ABS symbols are not copy relocated.
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %p/Inputs/copy-rel-abs.s -o %t1.o
+# RUN: ld.lld -shared %t1.o -o %t1.so
+# RUN: llvm-readelf --dyn-syms %t1.so | FileCheck --check-prefix=SYMS %s
+
+# SYMS: [[ADDR:[0-9a-f]+]] {{.*}}   5 bar
+# SYMS: [[ADDR]]           {{.*}}   5 foo
+# SYMS: [[ADDR]]           {{.*}} ABS zed
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t2.o
+# RUN: ld.lld %t2.o %t1.so -o %t2
+# RUN: llvm-objdump -t %t2 | FileCheck %s --implicit-check-not=zed
+
+# CHECK: SYMBOL TABLE:
+# CHECK: .bss.rel.ro {{.*}} foo
+# CHECK: .bss.rel.ro {{.*}} bar
 
 .global _start
 _start:

Modified: lld/trunk/test/ELF/copy-rel-large.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/copy-rel-large.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/copy-rel-large.s (original)
+++ lld/trunk/test/ELF/copy-rel-large.s Fri Sep  6 08:10:31 2019
@@ -1,20 +1,17 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/copy-rel-large.s -o %t1.o
-// RUN: ld.lld -shared %t1.o -o %t1.so
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t2.o
-// RUN: ld.lld %t2.o %t1.so -o %t2
-// RUN: llvm-readobj --dyn-symbols %t2 | FileCheck %s
+# REQUIRES: x86
+
+## Test symbols larger than 2**32 can be copy relocated.
+
+# RUN: echo '.globl foo; .type foo, at object; foo: .size foo, 0x100000001' | \
+# RUN:   llvm-mc -filetype=obj -triple=x86_64 - -o %t1.o
+# RUN: ld.lld -shared %t1.o -o %t1.so
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
+# RUN: ld.lld %t.o %t1.so -o %t
+# RUN: llvm-readelf -S --dyn-syms %t | FileCheck %s
+
+# CHECK: [ 8] .bss.rel.ro
+# CHECK: 4294967297 OBJECT GLOBAL DEFAULT  8 foo
 
         .global _start
 _start:
         .quad foo
-
-// CHECK:      Symbol {
-// CHECK:        Name: foo
-// CHECK-NEXT:   Value:
-// CHECK-NEXT:   Size: 4294967297
-// CHECK-NEXT:   Binding:
-// CHECK-NEXT:   Type:
-// CHECK-NEXT:   Other:
-// CHECK-NEXT:   Section:         .bss.rel.ro
-// CHECK-NEXT: }

Modified: lld/trunk/test/ELF/copy-rel-pie.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/copy-rel-pie.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/copy-rel-pie.s (original)
+++ lld/trunk/test/ELF/copy-rel-pie.s Fri Sep  6 08:10:31 2019
@@ -1,10 +1,13 @@
-// REQUIRES: x86
-// RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-pc-linux
-// RUN: llvm-mc %p/Inputs/copy-rel-pie.s -o %t2.o -filetype=obj -triple=x86_64-pc-linux
-// RUN: ld.lld %t2.o -o %t2.so -shared
-// RUN: ld.lld --hash-style=sysv %t.o %t2.so -o %t.exe -pie
-// RUN: llvm-readobj -S -r %t.exe | FileCheck %s
-// RUN: llvm-objdump -d %t.exe | FileCheck --check-prefix=DISASM %s
+# REQUIRES: x86
+
+## Test copy relocations can be created for -pie.
+
+# RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-pc-linux
+# RUN: llvm-mc %p/Inputs/copy-rel-pie.s -o %t2.o -filetype=obj -triple=x86_64-pc-linux
+# RUN: ld.lld %t2.o -o %t2.so -shared
+# RUN: ld.lld %t.o %t2.so -o %t -pie
+# RUN: llvm-readobj -r %t | FileCheck %s
+# RUN: llvm-objdump -d %t | FileCheck --check-prefix=DISASM %s
 
 .global _start
 _start:
@@ -13,36 +16,15 @@ _start:
         .byte 0xe8
         .long foo - . -4
 
-// CHECK:      Name: .plt
-// CHECK-NEXT: Type: SHT_PROGBITS
-// CHECK-NEXT: Flags [
-// CHECK-NEXT:   SHF_ALLOC
-// CHECK-NEXT:   SHF_EXECINSTR
-// CHECK-NEXT: ]
-// CHECK-NEXT: Address: 0x1010
-
-// CHECK:      Name: .bss
-// CHECK-NEXT: Type: SHT_NOBITS
-// CHECK-NEXT: Flags [
-// CHECK-NEXT:   SHF_ALLOC
-// CHECK-NEXT:   SHF_WRITE
-// CHECK-NEXT: ]
-// CHECK-NEXT: Address: 0x3020
-
 // CHECK:      Relocations [
-// CHECK-NEXT:   Section (4) .rela.dyn {
-// CHECK-NEXT:     0x3020 R_X86_64_COPY foo 0x0
+// CHECK-NEXT:   .rela.dyn {
+// CHECK-NEXT:     R_X86_64_COPY foo 0x0
 // CHECK-NEXT:   }
-// CHECK-NEXT:   Section (5) .rela.plt {
-// CHECK-NEXT:     0x3018 R_X86_64_JUMP_SLOT bar 0x0
+// CHECK-NEXT:   .rela.plt {
+// CHECK-NEXT:     R_X86_64_JUMP_SLOT bar 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT: ]
 
-// (0x1010 + 0x10) - 0x1005 = 27
-// 0x3020          - 0x100a = 8214
-
-// DISASM:      Disassembly of section .text:
-// DISASM-EMPTY:
-// DISASM-NEXT: _start:
-// DISASM-NEXT:     1000:       e8 1b 00 00 00  callq   27
-// DISASM-NEXT:     1005:       e8 16 20 00 00  callq   8214 <foo>
+// DISASM:      _start:
+// DISASM-NEXT:   callq   {{.*}} <bar at plt>
+// DISASM-NEXT:   callq   {{.*}} <foo>

Modified: lld/trunk/test/ELF/ctors_dtors_priority.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/ctors_dtors_priority.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/ctors_dtors_priority.s (original)
+++ lld/trunk/test/ELF/ctors_dtors_priority.s Fri Sep  6 08:10:31 2019
@@ -1,4 +1,7 @@
 // REQUIRES: x86
+
+// Test .ctors* and .dtors* are sorted by priority.
+
 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t1
 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux \
 // RUN:   %p/Inputs/ctors_dtors_priority1.s -o %t-crtbegin.o
@@ -36,13 +39,13 @@ _start:
   .quad 0x15
 
 // CHECK:      Contents of section .ctors:
-// CHECK-NEXT: 202000 a1000000 00000000 01000000 00000000
-// CHECK-NEXT: 202010 04000000 00000000 05000000 00000000
-// CHECK-NEXT: 202020 b1000000 00000000 03000000 00000000
-// CHECK-NEXT: 202030 02000000 00000000 c1000000 00000000
+// CHECK-NEXT:        a1000000 00000000 01000000 00000000
+// CHECK-NEXT:        04000000 00000000 05000000 00000000
+// CHECK-NEXT:        b1000000 00000000 03000000 00000000
+// CHECK-NEXT:        02000000 00000000 c1000000 00000000
 
 // CHECK:      Contents of section .dtors:
-// CHECK-NEXT: 202040 a2000000 00000000 11000000 00000000
-// CHECK-NEXT: 202050 14000000 00000000 15000000 00000000
-// CHECK-NEXT: 202060 b2000000 00000000 13000000 00000000
-// CHECK-NEXT: 202070 12000000 00000000 c2000000 00000000
+// CHECK-NEXT:        a2000000 00000000 11000000 00000000
+// CHECK-NEXT:        14000000 00000000 15000000 00000000
+// CHECK-NEXT:        b2000000 00000000 13000000 00000000
+// CHECK-NEXT:        12000000 00000000 c2000000 00000000

Modified: lld/trunk/test/ELF/discard-merge-locals.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/discard-merge-locals.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/discard-merge-locals.s (original)
+++ lld/trunk/test/ELF/discard-merge-locals.s Fri Sep  6 08:10:31 2019
@@ -1,35 +1,14 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t
-// RUN: ld.lld %t -o %t2 -shared
-// RUN: llvm-readobj --symbols %t2 | FileCheck %s
+# REQUIRES: x86
 
-	leaq	.L.str(%rip), %rdi
+## Test that the .L symbol in a SHF_MERGE section is omitted.
 
-	.section	.rodata.str1.1,"aMS", at progbits,1
-.L.str:
-	.asciz	"foobar"
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
+# RUN: ld.lld %t.o -o %t
+# RUN: llvm-readelf -s %t | FileCheck /dev/null --implicit-check-not=.L.str
 
-// Test that the .L symbol is omitted
+lea .L.str(%rip), %rdi
+lea local(%rip), %rdi
 
-// CHECK:      Symbols [
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name:  (0)
-// CHECK-NEXT:     Value: 0x0
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: Undefined
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: _DYNAMIC
-// CHECK-NEXT:     Value: 0x2000
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other [ (0x2)
-// CHECK-NEXT:       STV_HIDDEN
-// CHECK-NEXT:     ]
-// CHECK-NEXT:     Section: .dynamic
-// CHECK-NEXT:   }
-// CHECK-NEXT: ]
+.section .rodata.str1.1,"aMS", at progbits,1
+.L.str:
+local:

Removed: lld/trunk/test/ELF/dynamic-got-rela.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/dynamic-got-rela.s?rev=371212&view=auto
==============================================================================
--- lld/trunk/test/ELF/dynamic-got-rela.s (original)
+++ lld/trunk/test/ELF/dynamic-got-rela.s (removed)
@@ -1,55 +0,0 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
-// RUN: ld.lld %t.o -o %t.so -shared --apply-dynamic-relocs
-// RUN: llvm-readobj -r -S -l --section-data %t.so | FileCheck -check-prefix CHECK -check-prefix APPLYDYNREL %s
-// RUN: ld.lld %t.o -o %t2.so -shared
-// RUN: llvm-readobj -r -S -l --section-data %t2.so | FileCheck -check-prefix CHECK -check-prefix NOAPPLYDYNREL %s
-// RUN: ld.lld %t.o -o %t2.so -shared --no-apply-dynamic-relocs
-// RUN: llvm-readobj -r -S -l --section-data %t2.so | FileCheck -check-prefix CHECK -check-prefix NOAPPLYDYNREL %s
-
-// APPLYDYNREL:      Name: .got
-// APPLYDYNREL-NEXT: Type: SHT_PROGBITS
-// APPLYDYNREL-NEXT: Flags [
-// APPLYDYNREL-NEXT:   SHF_ALLOC
-// APPLYDYNREL-NEXT:   SHF_WRITE
-// APPLYDYNREL-NEXT: ]
-// APPLYDYNREL-NEXT: Address: 0x[[GOT:.*]]
-// APPLYDYNREL-NEXT: Offset:
-// APPLYDYNREL-NEXT: Size:
-// APPLYDYNREL-NEXT: Link:
-// APPLYDYNREL-NEXT: Info:
-// APPLYDYNREL-NEXT: AddressAlignment:
-// APPLYDYNREL-NEXT: EntrySize:
-// APPLYDYNREL-NEXT: SectionData (
-// APPLYDYNREL-NEXT:   0000: 00200000 00000000                |
-// APPLYDYNREL-NEXT: )
-
-// NOAPPLYDYNREL:      Name: .got
-// NOAPPLYDYNREL-NEXT: Type: SHT_PROGBITS
-// NOAPPLYDYNREL-NEXT: Flags [
-// NOAPPLYDYNREL-NEXT:   SHF_ALLOC
-// NOAPPLYDYNREL-NEXT:   SHF_WRITE
-// NOAPPLYDYNREL-NEXT: ]
-// NOAPPLYDYNREL-NEXT: Address: 0x[[GOT:.*]]
-// NOAPPLYDYNREL-NEXT: Offset:
-// NOAPPLYDYNREL-NEXT: Size:
-// NOAPPLYDYNREL-NEXT: Link:
-// NOAPPLYDYNREL-NEXT: Info:
-// NOAPPLYDYNREL-NEXT: AddressAlignment:
-// NOAPPLYDYNREL-NEXT: EntrySize:
-// NOAPPLYDYNREL-NEXT: SectionData (
-// NOAPPLYDYNREL-NEXT:   0000: 00000000 00000000                |
-// NOAPPLYDYNREL-NEXT: )
-
-// CHECK:      Relocations [
-// CHECK-NEXT:   Section ({{.*}}) .rela.dyn {
-// CHECK-NEXT:     0x[[GOT]] R_X86_64_RELATIVE - 0x[[ADDEND:.*]]
-// CHECK-NEXT:   }
-// CHECK-NEXT: ]
-
-// CHECK:      Type: PT_DYNAMIC
-// CHECK-NEXT: Offset: 0x[[ADDEND]]
-// CHECK-NEXT: VirtualAddress: 0x[[ADDEND]]
-// CHECK-NEXT: PhysicalAddress: 0x[[ADDEND]]
-
-cmpq    $0, _DYNAMIC at GOTPCREL(%rip)

Modified: lld/trunk/test/ELF/dynamic-list-wildcard.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/dynamic-list-wildcard.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/dynamic-list-wildcard.s (original)
+++ lld/trunk/test/ELF/dynamic-list-wildcard.s Fri Sep  6 08:10:31 2019
@@ -3,51 +3,15 @@
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
 
 # RUN: echo "{ foo1*; };" > %t.list
-# RUN: ld.lld --hash-style=sysv -pie --dynamic-list %t.list %t -o %t.exe
-# RUN: llvm-readobj --dyn-syms %t.exe | FileCheck %s
+# RUN: ld.lld -pie --dynamic-list %t.list %t -o %t
+# RUN: llvm-nm -D %t | FileCheck %s
 
-# CHECK:      DynamicSymbols [
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name:
-# CHECK-NEXT:     Value:	 0x0
-# CHECK-NEXT:     Size:	 0
-# CHECK-NEXT:     Binding:	 Local (0x0)
-# CHECK-NEXT:     Type:	 None (0x0)
-# CHECK-NEXT:     Other:	 0
-# CHECK-NEXT:     Section:	 Undefined (0x0)
-# CHECK-NEXT:   }
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name:	 foo1
-# CHECK-NEXT:     Value:	 0x1000
-# CHECK-NEXT:     Size:	 0
-# CHECK-NEXT:     Binding:	 Global (0x1)
-# CHECK-NEXT:     Type:	 None (0x0)
-# CHECK-NEXT:     Other:	 0
-# CHECK-NEXT:     Section:	 .text (0x4)
-# CHECK-NEXT:   }
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name:	 foo11
-# CHECK-NEXT:     Value:	 0x1001
-# CHECK-NEXT:     Size:	 0
-# CHECK-NEXT:     Binding:	 Global (0x1)
-# CHECK-NEXT:     Type:	 None (0x0)
-# CHECK-NEXT:     Other:	 0
-# CHECK-NEXT:     Section:	 .text (0x4)
-# CHECK-NEXT:   }
-# CHECK-NEXT: ]
+# CHECK:      foo1
+# CHECK-NEXT: foo11
+# CHECK-NOT:  {{.}}
 
-.globl foo1
+.globl _start, foo1, foo11, foo2
 foo1:
-  ret
-
-.globl foo11
 foo11:
-  ret
-
-.globl foo2
 foo2:
-  ret
-
-.globl _start
 _start:
-  retq

Modified: lld/trunk/test/ELF/dynamic-list.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/dynamic-list.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/dynamic-list.s (original)
+++ lld/trunk/test/ELF/dynamic-list.s Fri Sep  6 08:10:31 2019
@@ -1,167 +1,57 @@
 # REQUIRES: x86
 
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/shared.s -o %t2.o
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %p/Inputs/shared.s -o %t2.o
 # RUN: ld.lld --hash-style=sysv -shared %t2.o -soname shared -o %t2.so
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
 
 ## Check exporting only one symbol.
-# RUN: echo "{ foo1; };" > %t.list
-# RUN: ld.lld --hash-style=sysv --dynamic-list %t.list %t %t2.so -o %t.exe
-# RUN: llvm-readobj --dyn-syms %t.exe | FileCheck %s
+# RUN: echo '{ foo1; };' > %t.list
+# RUN: ld.lld --dynamic-list %t.list %t.o %t2.so -o %t
+# RUN: nm -D %t | FileCheck %s --implicit-check-not=foo
 
-## And now using quoted strings (the output is the same since it does
+## And now using quoted strings (the output is the same since it does not
 ## use any wildcard character).
-# RUN: echo "{ \"foo1\"; };" > %t.list
-# RUN: ld.lld --hash-style=sysv --dynamic-list %t.list %t %t2.so -o %t.exe
-# RUN: llvm-readobj --dyn-syms %t.exe | FileCheck %s
+# RUN: echo '{ "foo1"; };' > %t.list
+# RUN: ld.lld --dynamic-list %t.list %t.o %t2.so -o %t2
+# RUN: cmp %t %t2
 
 ## And now using --export-dynamic-symbol.
-# RUN: ld.lld --hash-style=sysv --export-dynamic-symbol foo1 %t %t2.so -o %t.exe
-# RUN: llvm-readobj --dyn-syms %t.exe | FileCheck %s
-# RUN: ld.lld --hash-style=sysv --export-dynamic-symbol=foo1 %t %t2.so -o %t.exe
-# RUN: llvm-readobj --dyn-syms %t.exe | FileCheck %s
-
-# CHECK:      DynamicSymbols [
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name:
-# CHECK-NEXT:     Value: 0x0
-# CHECK-NEXT:     Size: 0
-# CHECK-NEXT:     Binding: Local
-# CHECK-NEXT:     Type: None
-# CHECK-NEXT:     Other: 0
-# CHECK-NEXT:     Section: Undefined
-# CHECK-NEXT:   }
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name: foo1
-# CHECK-NEXT:     Value: 0x201000
-# CHECK-NEXT:     Size: 0
-# CHECK-NEXT:     Binding: Global (0x1)
-# CHECK-NEXT:     Type: None (0x0)
-# CHECK-NEXT:     Other: 0
-# CHECK-NEXT:     Section: .text (0x4)
-# CHECK-NEXT:   }
-# CHECK-NEXT: ]
+# RUN: ld.lld --export-dynamic-symbol foo1 %t.o %t2.so -o %t2
+# RUN: cmp %t %t2
+# RUN: ld.lld --export-dynamic-symbol=foo1 %t.o %t2.so -o %t2
+# RUN: cmp %t %t2
 
+# CHECK: foo1
 
 ## Now export all the foo1, foo2, and foo31 symbols
 # RUN: echo "{ foo1; foo2; foo31; };" > %t.list
-# RUN: ld.lld --hash-style=sysv --dynamic-list %t.list %t %t2.so -o %t.exe
-# RUN: llvm-readobj --dyn-syms %t.exe | FileCheck -check-prefix=CHECK2 %s
+# RUN: ld.lld --dynamic-list %t.list %t.o %t2.so -o %t
+# RUN: nm -D %t | FileCheck --check-prefix=CHECK2 %s --implicit-check-not=foo
 # RUN: echo "{ foo1; foo2; };" > %t1.list
 # RUN: echo "{ foo31; };" > %t2.list
-# RUN: ld.lld --hash-style=sysv --dynamic-list %t1.list --dynamic-list %t2.list %t %t2.so -o %t.exe
-# RUN: llvm-readobj --dyn-syms %t.exe | FileCheck -check-prefix=CHECK2 %s
+# RUN: ld.lld --dynamic-list %t1.list --dynamic-list %t2.list %t.o %t2.so -o %t2
+# RUN: cmp %t %t2
 
-# CHECK2:      DynamicSymbols [
-# CHECK2-NEXT:   Symbol {
-# CHECK2-NEXT:     Name:
-# CHECK2-NEXT:     Value: 0x0
-# CHECK2-NEXT:     Size: 0
-# CHECK2-NEXT:     Binding: Local
-# CHECK2-NEXT:     Type: None
-# CHECK2-NEXT:     Other: 0
-# CHECK2-NEXT:     Section: Undefined
-# CHECK2-NEXT:   }
-# CHECK2-NEXT:   Symbol {
-# CHECK2-NEXT:     Name: foo1
-# CHECK2-NEXT:     Value: 0x201000
-# CHECK2-NEXT:     Size: 0
-# CHECK2-NEXT:     Binding: Global (0x1)
-# CHECK2-NEXT:     Type: None (0x0)
-# CHECK2-NEXT:     Other: 0
-# CHECK2-NEXT:     Section: .text (0x4)
-# CHECK2-NEXT:   }
-# CHECK2-NEXT:   Symbol {
-# CHECK2-NEXT:     Name: foo2
-# CHECK2-NEXT:     Value: 0x201001
-# CHECK2-NEXT:     Size: 0
-# CHECK2-NEXT:     Binding: Global (0x1)
-# CHECK2-NEXT:     Type: None (0x0)
-# CHECK2-NEXT:     Other: 0
-# CHECK2-NEXT:     Section: .text (0x4)
-# CHECK2-NEXT:   }
-# CHECK2-NEXT:   Symbol {
-# CHECK2-NEXT:     Name: foo31
-# CHECK2-NEXT:     Value: 0x201002
-# CHECK2-NEXT:     Size: 0
-# CHECK2-NEXT:     Binding: Global (0x1)
-# CHECK2-NEXT:     Type: None (0x0)
-# CHECK2-NEXT:     Other: 0
-# CHECK2-NEXT:     Section: .text (0x4)
-# CHECK2-NEXT:   }
-# CHECK2-NEXT: ]
+# CHECK2:      foo1
+# CHECK2-NEXT: foo2
+# CHECK2-NEXT: foo31
 
-
-## --export-dynamic overrides --dynamic-list, i.e. --export-dynamic with an
-## incomplete dynamic-list still exports everything.
+## --export-dynamic is similar to --dynamic-list with '{ * }'
 # RUN: echo "{ foo2; };" > %t.list
-# RUN: ld.lld --hash-style=sysv --dynamic-list %t.list --export-dynamic %t %t2.so -o %t.exe
-# RUN: llvm-readobj --dyn-syms %t.exe | FileCheck -check-prefix=CHECK3 %s
+# RUN: ld.lld --dynamic-list %t.list --export-dynamic %t.o %t2.so -o %t
+# RUN: nm -D %t | FileCheck --check-prefix=CHECK3 %s --implicit-check-not=foo
 
 ## The same with --export-dynamic-symbol.
-# RUN: ld.lld --hash-style=sysv --export-dynamic-symbol=foo2 --export-dynamic %t %t2.so -o %t.exe
-# RUN: llvm-readobj --dyn-syms %t.exe | FileCheck -check-prefix=CHECK3 %s
+# RUN: ld.lld --export-dynamic-symbol=foo2 --export-dynamic %t.o %t2.so -o %t2
+# RUN: cmp %t %t2
 
-# CHECK3:      DynamicSymbols [
-# CHECK3-NEXT:   Symbol {
-# CHECK3-NEXT:     Name:
-# CHECK3-NEXT:     Value: 0x0
-# CHECK3-NEXT:     Size: 0
-# CHECK3-NEXT:     Binding: Local
-# CHECK3-NEXT:     Type: None
-# CHECK3-NEXT:     Other: 0
-# CHECK3-NEXT:     Section: Undefined
-# CHECK3-NEXT:   }
-# CHECK3-NEXT:   Symbol {
-# CHECK3-NEXT:     Name: _start
-# CHECK3-NEXT:     Value: 0x201003
-# CHECK3-NEXT:     Size: 0
-# CHECK3-NEXT:     Binding: Global (0x1)
-# CHECK3-NEXT:     Type: None (0x0)
-# CHECK3-NEXT:     Other: 0
-# CHECK3-NEXT:     Section: .text (0x4)
-# CHECK3-NEXT:   }
-# CHECK3-NEXT:   Symbol {
-# CHECK3-NEXT:     Name: foo1
-# CHECK3-NEXT:     Value: 0x201000
-# CHECK3-NEXT:     Size: 0
-# CHECK3-NEXT:     Binding: Global (0x1)
-# CHECK3-NEXT:     Type: None (0x0)
-# CHECK3-NEXT:     Other: 0
-# CHECK3-NEXT:     Section: .text (0x4)
-# CHECK3-NEXT:   }
-# CHECK3-NEXT:   Symbol {
-# CHECK3-NEXT:     Name: foo2
-# CHECK3-NEXT:     Value: 0x201001
-# CHECK3-NEXT:     Size: 0
-# CHECK3-NEXT:     Binding: Global (0x1)
-# CHECK3-NEXT:     Type: None (0x0)
-# CHECK3-NEXT:     Other: 0
-# CHECK3-NEXT:     Section: .text (0x4)
-# CHECK3-NEXT:   }
-# CHECK3-NEXT:   Symbol {
-# CHECK3-NEXT:     Name: foo31
-# CHECK3-NEXT:     Value: 0x201002
-# CHECK3-NEXT:     Size: 0
-# CHECK3-NEXT:     Binding: Global (0x1)
-# CHECK3-NEXT:     Type: None (0x0)
-# CHECK3-NEXT:     Other: 0
-# CHECK3-NEXT:     Section: .text (0x4)
-# CHECK3-NEXT:   }
-# CHECK3-NEXT: ]
+# CHECK3:      _start
+# CHECK3-NEXT: foo1
+# CHECK3-NEXT: foo2
+# CHECK3-NEXT: foo31
 
-.globl foo1
+.globl _start, foo1, foo2, foo31
 foo1:
-  ret
-
-.globl foo2
 foo2:
-  ret
-
-.globl foo31
 foo31:
-  ret
-
-.globl _start
 _start:
-  retq

Modified: lld/trunk/test/ELF/dynamic-reloc-index.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/dynamic-reloc-index.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/dynamic-reloc-index.s (original)
+++ lld/trunk/test/ELF/dynamic-reloc-index.s Fri Sep  6 08:10:31 2019
@@ -9,7 +9,7 @@
 
 // CHECK:      Relocations [
 // CHECK-NEXT:   Section ({{.*}}) .rela.plt {
-// CHECK-NEXT:     0x203018 R_X86_64_JUMP_SLOT bar 0x0
+// CHECK-NEXT:     {{.*}} R_X86_64_JUMP_SLOT bar 0x0
 // CHECK-NEXT:   }
 // CHECK-NEXT: ]
 

Modified: lld/trunk/test/ELF/dynamic-reloc.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/dynamic-reloc.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/dynamic-reloc.s (original)
+++ lld/trunk/test/ELF/dynamic-reloc.s Fri Sep  6 08:10:31 2019
@@ -2,8 +2,8 @@
 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/shared.s -o %t2.o
 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/dynamic-reloc.s -o %t3.o
-// RUN: ld.lld -shared %t2.o -o %t2.so
-// RUN: ld.lld --hash-style=sysv %t.o %t3.o %t2.so -o %t
+// RUN: ld.lld -shared %t2.o -soname=so -o %t2.so
+// RUN: ld.lld %t.o %t3.o %t2.so -o %t
 // RUN: llvm-readobj --dynamic-table -r --expand-relocs -S %t | FileCheck %s
 
 // CHECK:      Index: 1
@@ -18,7 +18,7 @@
 // CHECK-NEXT: Offset:
 // CHECK-NEXT: Size: [[RELASIZE:.*]]
 // CHECK-NEXT: Link: 1
-// CHECK-NEXT: Info: 8
+// CHECK-NEXT: Info: 9
 // CHECK-NEXT: AddressAlignment: 8
 // CHECK-NEXT: EntrySize: 24
 
@@ -28,12 +28,11 @@
 // CHECK-NEXT:   SHF_ALLOC
 // CHECK-NEXT:   SHF_EXECINSTR
 // CHECK-NEXT: ]
-// CHECK-NEXT: Address: 0x201000
 
 // CHECK:      Relocations [
 // CHECK-NEXT:   Section ({{.*}}) .rela.plt {
 // CHECK-NEXT:     Relocation {
-// CHECK-NEXT:       Offset: 0x203018
+// CHECK-NEXT:       Offset:
 // CHECK-NEXT:       Type: R_X86_64_JUMP_SLOT
 // CHECK-NEXT:       Symbol: bar
 // CHECK-NEXT:       Addend: 0x0
@@ -43,7 +42,7 @@
 
 // CHECK: DynamicSection [
 // CHECK-NEXT:  Tag                Type                 Name/Value
-// CHECK-NEXT:  0x0000000000000001 NEEDED               Shared library: [{{.*}}2.so]
+// CHECK-NEXT:  0x0000000000000001 NEEDED               Shared library: [so]
 // CHECK-NEXT:  0x0000000000000015 DEBUG                0x0
 // CHECK-NEXT:  0x0000000000000017 JMPREL
 // CHECK-NEXT:  0x0000000000000002 PLTRELSZ             24 (bytes)
@@ -53,6 +52,7 @@
 // CHECK-NEXT:  0x000000000000000B SYMENT               24 (bytes)
 // CHECK-NEXT:  0x0000000000000005 STRTAB
 // CHECK-NEXT:  0x000000000000000A STRSZ
+// CHECK-NEXT:  0x000000006FFFFEF5 GNU_HASH
 // CHECK-NEXT:  0x0000000000000004 HASH
 // CHECK-NEXT:  0x0000000000000000 NULL                 0x0
 // CHECK-NEXT: ]

Modified: lld/trunk/test/ELF/dynamic.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/dynamic.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/dynamic.s (original)
+++ lld/trunk/test/ELF/dynamic.s Fri Sep  6 08:10:31 2019
@@ -1,10 +1,13 @@
 # REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-freebsd %s -o %t.o
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
 
 ## Check that _DYNAMIC symbol is created when creating dynamic output,
 ## and has hidden visibility and address equal to .dynamic section.
 # RUN: ld.lld -shared %t.o -o %t.so
 # RUN: llvm-readobj --sections --symbols %t.so | FileCheck %s
+# RUN: ld.lld -pie %t.o -o %t
+# RUN: llvm-readobj --sections --symbols %t | FileCheck %s
+
 # CHECK:      Section {
 # CHECK:        Index: 5
 # CHECK:        Name: .dynamic
@@ -14,13 +17,6 @@
 # CHECK-NEXT:     SHF_WRITE
 # CHECK-NEXT:   ]
 # CHECK-NEXT:   Address: 0x[[ADDR:.*]]
-# CHECK-NEXT:   Offset: 0x1000
-# CHECK-NEXT:   Size:
-# CHECK-NEXT:   Link:
-# CHECK-NEXT:   Info:
-# CHECK-NEXT:   AddressAlignment:
-# CHECK-NEXT:   EntrySize:
-# CHECK-NEXT: }
 # CHECK:      Symbols [
 # CHECK:        Symbol {
 # CHECK:          Name: _DYNAMIC
@@ -35,10 +31,7 @@
 # CHECK-NEXT:   }
 
 # RUN: ld.lld %t.o -o %t2
-# RUN: llvm-readobj --sections --symbols %t2 | FileCheck -check-prefix=NODYN %s
-# NODYN:    Symbols [
-# NODYN-NOT: Name: _DYNAMIC
-# NODYN:    ]
+# RUN: llvm-readobj --sections --symbols %t2 | FileCheck /dev/null --implicit-check-not=_DYNAMIC
 
 .globl _start
 _start:

Modified: lld/trunk/test/ELF/edata-no-bss.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/edata-no-bss.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/edata-no-bss.s (original)
+++ lld/trunk/test/ELF/edata-no-bss.s Fri Sep  6 08:10:31 2019
@@ -1,4 +1,7 @@
 # REQUIRES: x86
+
+## _edata points to the end of the last mapped initialized section.
+
 # RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
 # RUN: ld.lld %t.o -o %t --gc-sections
 # RUN: llvm-objdump -t -section-headers %t | FileCheck %s

Modified: lld/trunk/test/ELF/ehframe-relocation.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/ehframe-relocation.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/ehframe-relocation.s (original)
+++ lld/trunk/test/ELF/ehframe-relocation.s Fri Sep  6 08:10:31 2019
@@ -1,6 +1,6 @@
 // REQUIRES: x86
 // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/ehframe-relocation.s  -o %t2.o
+// RUN: echo '.cfi_startproc; .cfi_endproc' | llvm-mc -filetype=obj -triple=x86_64 - -o %t2.o
 // RUN: ld.lld %t.o %t2.o -o %t
 // RUN: llvm-readobj -S %t | FileCheck %s
 // RUN: llvm-objdump -d %t | FileCheck --check-prefix=DISASM %s

Modified: lld/trunk/test/ELF/emit-relocs-merge.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/emit-relocs-merge.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/emit-relocs-merge.s (original)
+++ lld/trunk/test/ELF/emit-relocs-merge.s Fri Sep  6 08:10:31 2019
@@ -1,16 +1,20 @@
 # REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
+
+## .data.foo and .data.bar are combined into .data,
+## so their relocation sections should also be combined.
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
 # RUN: ld.lld --emit-relocs %t.o -o %t.so -shared
 # RUN: llvm-readobj -r %t.so | FileCheck %s
 
 # CHECK:       Relocations [
 # CHECK-NEXT:    Section ({{.*}}) .rela.dyn {
-# CHECK-NEXT:     0x2000 R_X86_64_64 zed 0x0
-# CHECK-NEXT:     0x2008 R_X86_64_64 zed 0x0
+# CHECK-NEXT:     [[ADDR1:[0-9a-f]+]] R_X86_64_64 zed 0x0
+# CHECK-NEXT:     [[ADDR2:[0-9a-f]+]] R_X86_64_64 zed 0x0
 # CHECK-NEXT:   }
 # CHECK-NEXT:   Section ({{.*}}) .rela.data {
-# CHECK-NEXT:     0x2000 R_X86_64_64 zed 0x0
-# CHECK-NEXT:     0x2008 R_X86_64_64 zed 0x0
+# CHECK-NEXT:     [[ADDR1]] R_X86_64_64 zed 0x0
+# CHECK-NEXT:     [[ADDR2]] R_X86_64_64 zed 0x0
 # CHECK-NEXT:   }
 # CHECK-NEXT: ]
 

Copied: lld/trunk/test/ELF/gc-sections-string.s (from r371189, lld/trunk/test/ELF/string-gc.s)
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/gc-sections-string.s?p2=lld/trunk/test/ELF/gc-sections-string.s&p1=lld/trunk/test/ELF/string-gc.s&r1=371189&r2=371213&rev=371213&view=diff
==============================================================================
    (empty)

Modified: lld/trunk/test/ELF/relocation-copy-flags.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relocation-copy-flags.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/relocation-copy-flags.s (original)
+++ lld/trunk/test/ELF/relocation-copy-flags.s Fri Sep  6 08:10:31 2019
@@ -6,30 +6,21 @@
 // RUN: ld.lld --hash-style=sysv %t.o %t2.so -o %t.exe
 // RUN: llvm-readobj -S --section-data -r %t.exe | FileCheck %s
 
+// Copy relocate x in a non-writable position.
         .global _start
 _start:
         .quad x
 
+// Resolved to 0 in a non-alloc section.
         .section foo
         .quad y
 
+// Produce a dynamic relocation in a writable position.
         .section bar, "aw"
         .quad z
 
 // CHECK:      Name: .text
-// CHECK-NEXT: Type: SHT_PROGBITS
-// CHECK-NEXT: Flags [
-// CHECK-NEXT:   SHF_ALLOC
-// CHECK-NEXT:   SHF_EXECINSTR
-// CHECK-NEXT: ]
-// CHECK-NEXT: Address: 0x201000
-// CHECK-NEXT: Offset: 0x1000
-// CHECK-NEXT: Size: 8
-// CHECK-NEXT: Link: 0
-// CHECK-NEXT: Info: 0
-// CHECK-NEXT: AddressAlignment: 4
-// CHECK-NEXT: EntrySize: 0
-// CHECK-NEXT: SectionData (
+// CHECK:      SectionData (
 // CHECK-NEXT:   0000: 10302000
 // CHECK-NEXT: )
 

Modified: lld/trunk/test/ELF/relocation-copy-relro.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relocation-copy-relro.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/relocation-copy-relro.s (original)
+++ lld/trunk/test/ELF/relocation-copy-relro.s Fri Sep  6 08:10:31 2019
@@ -1,4 +1,7 @@
 // REQUIRES: x86
+
+// Reserve space for copy relocations of read-only symbols in .bss.rel.ro
+
 // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
 // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/relocation-copy-relro.s -o %t2.o
 // RUN: ld.lld -shared %t2.o -o %t.so

Modified: lld/trunk/test/ELF/relocation-relative-weak.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relocation-relative-weak.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/relocation-relative-weak.s (original)
+++ lld/trunk/test/ELF/relocation-relative-weak.s Fri Sep  6 08:10:31 2019
@@ -1,12 +1,12 @@
 # REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/dummy-shared.s -o %t1.o
+# RUN: llvm-mc -filetype=obj -triple=x86_64 /dev/null -o %t1.o
 # RUN: ld.lld %t1.o -shared -o %t1.so
-# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
 # RUN: ld.lld %t.o %t1.so -o %t -pie
 # RUN: llvm-readobj --dyn-relocations %t | FileCheck %s
 
 # CHECK:      Dynamic Relocations {
-# CHECK-NEXT:   0x3018 R_X86_64_JUMP_SLOT w 0x0
+# CHECK-NEXT:   R_X86_64_JUMP_SLOT w 0x0
 # CHECK-NEXT: }
 
 .globl _start

Removed: lld/trunk/test/ELF/relocation-size-shared.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relocation-size-shared.s?rev=371212&view=auto
==============================================================================
--- lld/trunk/test/ELF/relocation-size-shared.s (original)
+++ lld/trunk/test/ELF/relocation-size-shared.s (removed)
@@ -1,67 +0,0 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
-// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/relocation-size-shared.s -o %tso.o
-// RUN: ld.lld -shared %tso.o -o %tso
-// RUN: ld.lld %t.o %tso -o %t1
-// RUN: llvm-readobj -r %t1 | FileCheck --check-prefix=RELOCSHARED %s
-// RUN: llvm-objdump -d %t1 | FileCheck --check-prefix=DISASM %s
-
-// RELOCSHARED:       Relocations [
-// RELOCSHARED-NEXT:  Section ({{.*}}) .rela.dyn {
-// 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-EMPTY:
-// DISASM:      _data:
-// 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: ...
-// DISASM-NEXT: 20102e: 00 00
-// DISASM:      _start:
-// 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
-.type foo,%object
-.size foo,26
-foo:
-.zero 26
-
-.section test, "awx"
-_data:
-  // R_X86_64_SIZE64:
-  .quad foo at SIZE-1
-  .quad foo at SIZE
-  .quad foo at SIZE+1
-  .quad fooshared at SIZE-1
-  .quad fooshared at SIZE
-  .quad fooshared at SIZE+1
-
-.globl _start
-_start:
-  // R_X86_64_SIZE32:
-  movl foo at SIZE-1,%eax
-  movl foo at SIZE,%eax
-  movl foo at SIZE+1,%eax
-  movl fooshared at SIZE-1,%eax
-  movl fooshared at SIZE,%eax
-  movl fooshared at SIZE+1,%eax

Removed: lld/trunk/test/ELF/relocation-size.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relocation-size.s?rev=371212&view=auto
==============================================================================
--- lld/trunk/test/ELF/relocation-size.s (original)
+++ lld/trunk/test/ELF/relocation-size.s (removed)
@@ -1,115 +0,0 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
-// RUN: ld.lld %t.o -o %t1
-// RUN: llvm-readobj -r %t1 | FileCheck --check-prefix=NORELOC %s
-// RUN: llvm-objdump -d %t1 | FileCheck --check-prefix=DISASM %s
-// RUN: ld.lld -shared %t.o -o %t1
-// RUN: llvm-readobj -r %t1 | FileCheck --check-prefix=RELOCSHARED %s
-// RUN: llvm-objdump -d %t1 | FileCheck --check-prefix=DISASMSHARED %s
-
-// NORELOC:      Relocations [
-// NORELOC-NEXT: ]
-
-// DISASM:      Disassembly of section test:
-// DISASM-EMPTY:
-// DISASM-NEXT: _data:
-// 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: 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:    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-EMPTY:
-// DISASMSHARED-NEXT: _data:
-// DISASMSHARED-NEXT: ...
-// 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: 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
-.type foo,%object
-.size foo,26
-foo:
-.zero 26
-
-.data
-.global foohidden
-.hidden foohidden
-.type foohidden,%object
-.size foohidden,26
-foohidden:
-.zero 26
-
-.section test,"axw"
-_data:
-  // R_X86_64_SIZE64:
-  .quad foo at SIZE-1
-  .quad foo at SIZE
-  .quad foo at SIZE+1
-  .quad foohidden at SIZE-1
-  .quad foohidden at SIZE
-  .quad foohidden at SIZE+1
-.globl _start
-_start:
-  // R_X86_64_SIZE32:
-  movl foo at SIZE-1,%eax
-  movl foo at SIZE,%eax
-  movl foo at SIZE+1,%eax
-  movl foohidden at SIZE-1,%eax
-  movl foohidden at SIZE,%eax
-  movl foohidden at SIZE+1,%eax

Modified: lld/trunk/test/ELF/relocation-undefined-weak.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relocation-undefined-weak.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/relocation-undefined-weak.s (original)
+++ lld/trunk/test/ELF/relocation-undefined-weak.s Fri Sep  6 08:10:31 2019
@@ -1,10 +1,12 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t
-// RUN: ld.lld %t -o %tout
-// RUN: llvm-readobj --sections %tout | FileCheck %s
-// RUN: llvm-objdump -d %tout | FileCheck %s --check-prefix DISASM
+# REQUIRES: x86
 
-// Check that undefined weak symbols are treated as having a VA of 0.
+## On some targets (e.g. ARM, AArch64, and PPC), PC relative relocations to
+## weak undefined symbols resolve to special positions. On many others
+## the target symbols as treated as VA 0.
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
+# RUN: ld.lld %t.o -o %t
+# RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t | FileCheck %s
 
 .global _start
 _start:
@@ -12,16 +14,4 @@ _start:
 
 .weak sym1
 
-// CHECK:      Name: .text
-// CHECK-NEXT: Type: SHT_PROGBITS
-// CHECK-NEXT: Flags [
-// CHECK-NEXT:   SHF_ALLOC
-// CHECK-NEXT:   SHF_EXECINSTR
-// CHECK-NEXT: ]
-// CHECK-NEXT: Address: 0x201000
-
-// Unfortunately FileCheck can't do math, so we have to check for explicit
-// values:
-// R_86_64_PC32 = 0 + (-8 - (0x201000 + 2)) = -2101258
-
-// DISASM: movl    $1, -2101258(%rip)
+# CHECK: 201000: movl $0x1, -0x20100a(%rip)

Modified: lld/trunk/test/ELF/relro-non-contiguous.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relro-non-contiguous.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/relro-non-contiguous.s (original)
+++ lld/trunk/test/ELF/relro-non-contiguous.s Fri Sep  6 08:10:31 2019
@@ -13,7 +13,7 @@
 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t3.o
 
 // Expect error for non-contiguous relro
-// RUN: not ld.lld %t3.o %t.so -z relro -o %t --script=%t.script 2>&1 | FileCheck %s
+// RUN: not ld.lld %t3.o %t.so -z relro -o /dev/null --script=%t.script 2>&1 | FileCheck %s
 // No error when we do not request relro.
 // RUN: ld.lld %t3.o %t.so -z norelro -o %t --script=%t.script
 

Modified: lld/trunk/test/ELF/relro-tls.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/relro-tls.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/relro-tls.s (original)
+++ lld/trunk/test/ELF/relro-tls.s Fri Sep  6 08:10:31 2019
@@ -1,23 +1,20 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
-// RUN: ld.lld %t -o %tout
-// RUN: llvm-readobj -l %tout | FileCheck %s
-
-// CHECK:      Type: PT_GNU_RELRO
-// CHECK-NEXT: Offset:
-// CHECK-NEXT: VirtualAddress:
-// CHECK-NEXT: PhysicalAddress:
-// CHECK-NEXT: FileSize: 4
-// CHECK-NEXT: MemSize: 4
-// CHECK-NEXT: Flags [
-// CHECK-NEXT:   PF_R
-// CHECK-NEXT: ]
-// CHECK-NEXT: Alignment: 1
+# REQUIRES: x86
 
-.global _start
-_start:
+## PT_GNU_RELRO includes TLS sections.
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
+# RUN: ld.lld %t.o -o %t
+# RUN: llvm-readobj -l %t | FileCheck %s
+
+## Currently p_memsz of PT_GNU_RELRO is rounded up to protect the last page.
+
+# CHECK:      Type: PT_GNU_RELRO
+# CHECK:      FileSize: 4
+# CHECK-NEXT: MemSize: 4096
+# CHECK:      Alignment: 1
 
-.global d
 .section .foo,"awT", at progbits
-d:
-.long 2
+.long 1
+
+.section .bar,"awT", at nobits
+.space 2

Modified: lld/trunk/test/ELF/stdout.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/stdout.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/stdout.s (original)
+++ lld/trunk/test/ELF/stdout.s Fri Sep  6 08:10:31 2019
@@ -4,8 +4,7 @@
 # RUN: ld.lld %t.o -o - > %t1
 # RUN: llvm-objdump -d %t1 | FileCheck %s
 
-# CHECK: 0000000000201000 _start:
-# CHECK: 201000: 90 nop
+# CHECK: nop
 
 # RUN: ld.lld %t.o -o %t2
 # RUN: diff %t1 %t2

Removed: lld/trunk/test/ELF/string-gc.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/string-gc.s?rev=371212&view=auto
==============================================================================
--- lld/trunk/test/ELF/string-gc.s (original)
+++ lld/trunk/test/ELF/string-gc.s (removed)
@@ -1,74 +0,0 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
-// RUN: ld.lld %t.o -o %t --gc-sections
-// RUN: llvm-readobj --symbols %t | FileCheck %s
-
-// CHECK:      Symbols [
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name:  (0)
-// CHECK-NEXT:     Value: 0x0
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local (0x0)
-// CHECK-NEXT:     Type: None (0x0)
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: Undefined (0x0)
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: s3
-// CHECK-NEXT:     Value: 0x200120
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local (0x0)
-// CHECK-NEXT:     Type: Object (0x1)
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: .rodata (0x1)
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: s1
-// CHECK-NEXT:     Value: 0x200125
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local (0x0)
-// CHECK-NEXT:     Type: Object (0x1)
-// CHECK-NEXT:     Other [ (0x2)
-// CHECK-NEXT:       STV_HIDDEN (0x2)
-// CHECK-NEXT:     ]
-// CHECK-NEXT:     Section: .rodata (0x1)
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: _start
-// CHECK-NEXT:     Value: 0x201000
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Global (0x1)
-// CHECK-NEXT:     Type: Function (0x2)
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: .text (0x2)
-// CHECK-NEXT:   }
-// CHECK-NEXT: ]
-
-.text
-.globl _start
-.type _start, at function
-_start:
-movl $s1, %eax
-movl $s3, %eax
-
-.hidden s1
-.type s1, at object
-.section .rodata.str1.1,"aMS", at progbits,1
-.globl s1
-s1:
-.asciz "abcd"
-
-.hidden s2
-.type s2, at object
-.globl s2
-s2:
-.asciz "efgh"
-
-.type s3, at object
-s3:
-.asciz "ijkl"
-
-.type s4, at object
-.globl s4
-s4:
-.asciz "mnop"

Modified: lld/trunk/test/ELF/symbol-override.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/symbol-override.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/symbol-override.s (original)
+++ lld/trunk/test/ELF/symbol-override.s Fri Sep  6 08:10:31 2019
@@ -3,37 +3,11 @@
 // RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/symbol-override.s -o %t2.o
 // RUN: ld.lld -shared %t2.o -o %t2.so
 // RUN: ld.lld %t1.o %t2.so -o %t
-// RUN: llvm-readobj --dyn-syms %t | FileCheck %s
+// RUN: nm -D %t | FileCheck %s
 
-// CHECK:      DynamicSymbols [
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name:
-// CHECK-NEXT:     Value: 0x0
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: Undefined
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: do
-// CHECK-NEXT:     Value: 0x0
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Global
-// CHECK-NEXT:     Type: Function
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: Undefined
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: foo
-// CHECK-NEXT:     Value: 0x201000
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Global
-// CHECK-NEXT:     Type: Function
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: .text
-// CHECK-NEXT:   }
-// CHECK-NEXT: ]
+// CHECK:      do
+// CHECK-NEXT: foo
+// CHECK-NOT:  {{.}}
 
 .text
 .globl foo

Removed: lld/trunk/test/ELF/tls-got.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/tls-got.s?rev=371212&view=auto
==============================================================================
--- lld/trunk/test/ELF/tls-got.s (original)
+++ lld/trunk/test/ELF/tls-got.s (removed)
@@ -1,60 +0,0 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t1.o
-// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/tls-got.s -o %t2.o
-// RUN: ld.lld -shared %t2.o -o %t2.so
-// RUN: ld.lld --hash-style=sysv -e main %t1.o %t2.so -o %t3
-// RUN: llvm-readobj -S -r %t3 | FileCheck %s
-// RUN: llvm-objdump -d %t3 | FileCheck --check-prefix=DISASM %s
-
-// CHECK:      Section {
-// CHECK:      Index: 8
-// CHECK-NEXT: Name: .got
-// CHECK-NEXT: Type: SHT_PROGBITS
-// CHECK-NEXT: Flags [
-// CHECK-NEXT:   SHF_ALLOC
-// CHECK-NEXT:   SHF_WRITE
-// CHECK-NEXT: ]
-// CHECK-NEXT: Address: [[ADDR:.*]]
-// CHECK-NEXT: Offset: 0x20C0
-// CHECK-NEXT: Size: 16
-// CHECK-NEXT: Link: 0
-// CHECK-NEXT: Info: 0
-// CHECK-NEXT: AddressAlignment: 8
-// CHECK-NEXT: EntrySize: 0
-// CHECK-NEXT: }
-
-// CHECK:      Relocations [
-// CHECK-NEXT:   Section (4) .rela.dyn {
-// CHECK-NEXT:     0x2020C8 R_X86_64_TPOFF64 tls0 0x0
-// CHECK-NEXT:     [[ADDR]] R_X86_64_TPOFF64 tls1 0x0
-// CHECK-NEXT:   }
-// CHECK-NEXT: ]
-
-// 0x201000 + 4281 + 7 = 0x2020C0
-// 0x20100A + 4279 + 7 = 0x2020C8
-// 0x201014 + 4269 + 7 = 0x2020C8
-// DISASM:      Disassembly of section .text:
-// DISASM-EMPTY:
-// DISASM-NEXT: main:
-// DISASM-NEXT: 201000: {{.*}} movq 4281(%rip), %rax
-// DISASM-NEXT: 201007: {{.*}} movl %fs:(%rax), %eax
-// DISASM-NEXT: 20100a: {{.*}} movq 4279(%rip), %rax
-// DISASM-NEXT: 201011: {{.*}} movl %fs:(%rax), %eax
-// DISASM-NEXT: 201014: {{.*}} movq 4269(%rip), %rax
-// DISASM-NEXT: 20101b: {{.*}} movl %fs:(%rax), %eax
-// DISASM-NEXT: 20101e: {{.*}} retq
-
-.section .tdata,"awT", at progbits
-
-.text
- .globl main
- .align 16, 0x90
- .type main, at function
-main:
- movq tls1 at GOTTPOFF(%rip), %rax
- movl %fs:0(%rax), %eax
- movq tls0 at GOTTPOFF(%rip), %rax
- movl %fs:0(%rax), %eax
- movq tls0 at GOTTPOFF(%rip), %rax
- movl %fs:0(%rax), %eax
- ret

Modified: lld/trunk/test/ELF/tls-offset.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/tls-offset.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/tls-offset.s (original)
+++ lld/trunk/test/ELF/tls-offset.s Fri Sep  6 08:10:31 2019
@@ -11,7 +11,6 @@
 // RUN:   .data.rel.ro : { *(.data.rel.ro) } \
 // RUN: }" > %t.script
 // RUN: ld.lld -T %t.script %t -o %tout2
-// RUN: echo SCRIPT
 // RUN: llvm-readobj -S %tout2 | FileCheck %s
         .global _start
 _start:

Removed: lld/trunk/test/ELF/version-script-copy-rel.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/version-script-copy-rel.s?rev=371212&view=auto
==============================================================================
--- lld/trunk/test/ELF/version-script-copy-rel.s (original)
+++ lld/trunk/test/ELF/version-script-copy-rel.s (removed)
@@ -1,24 +0,0 @@
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/copy-in-shared.s -o %t1.o
-# RUN: echo "FOOVER { global: *; };" > %t.script
-# RUN: ld.lld --version-script %t.script -shared %t1.o -o %t.so
-# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t2.o
-# RUN: ld.lld %t2.o %t.so -o %tout
-# RUN: llvm-readobj --dyn-syms %tout | FileCheck %s
-
-# CHECK:      DynamicSymbols [
-# CHECK:        Symbol {
-# CHECK:          Name: foo at FOOVER
-# CHECK-NEXT:     Value:
-# CHECK-NEXT:     Size:
-# CHECK-NEXT:     Binding: Global
-# CHECK-NEXT:     Type: Object
-# CHECK-NEXT:     Other:
-# CHECK-NEXT:     Section: .bss.rel.ro
-# CHECK-NEXT:   }
-# CHECK-NEXT: ]
-
-.text
-.global _start
-_start:
-movl $0, foo

Modified: lld/trunk/test/ELF/version-script-glob.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/version-script-glob.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/version-script-glob.s (original)
+++ lld/trunk/test/ELF/version-script-glob.s Fri Sep  6 08:10:31 2019
@@ -3,70 +3,21 @@
 # RUN: echo "{ global: foo*; bar*; local: *; };" > %t.script
 # RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
 # RUN: ld.lld -shared --version-script %t.script %t.o -o %t.so
-# RUN: llvm-readobj --dyn-syms %t.so | FileCheck %s
+# RUN: llvm-readelf --dyn-syms %t.so | FileCheck %s
 
-        .globl foo1
+.globl foo1, bar1, zed1, local
 foo1:
-
-        .globl bar1
 bar1:
-
-        .globl zed1
 zed1:
-
-        .globl local
 local:
 
-# CHECK:      DynamicSymbols [
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name:
-# CHECK-NEXT:     Value: 0x0
-# CHECK-NEXT:     Size: 0
-# CHECK-NEXT:     Binding: Local
-# CHECK-NEXT:     Type: None
-# CHECK-NEXT:     Other: 0
-# CHECK-NEXT:     Section: Undefined
-# CHECK-NEXT:   }
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name: bar1
-# CHECK-NEXT:     Value: 0x1000
-# CHECK-NEXT:     Size: 0
-# CHECK-NEXT:     Binding: Global
-# CHECK-NEXT:     Type: None
-# CHECK-NEXT:     Other: 0
-# CHECK-NEXT:     Section: .text
-# CHECK-NEXT:   }
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name: foo1
-# CHECK-NEXT:     Value: 0x1000
-# CHECK-NEXT:     Size: 0
-# CHECK-NEXT:     Binding: Global
-# CHECK-NEXT:     Type: None
-# CHECK-NEXT:     Other: 0
-# CHECK-NEXT:     Section: .text
-# CHECK-NEXT:   }
-# CHECK-NEXT: ]
+# CHECK:      bar1{{$}}
+# CHECK-NEXT: foo1{{$}}
+# CHECK-NOT:  {{.}}
 
 # RUN: echo "{ global : local; local: *; };" > %t1.script
-# RUN: ld.lld -shared --version-script %t1.script %t.o -o /dev/null
+# RUN: ld.lld -shared --version-script %t1.script %t.o -o %t.so
+# RUN: llvm-readelf --dyn-syms %t.so | FileCheck --check-prefix=LOCAL %s
 
-# LOCAL:      DynamicSymbols [
-# LOCAL-NEXT:   Symbol {
-# LOCAL-NEXT:     Name:
-# LOCAL-NEXT:     Value: 0x0
-# LOCAL-NEXT:     Size: 0
-# LOCAL-NEXT:     Binding: Local
-# LOCAL-NEXT:     Type: None
-# LOCAL-NEXT:     Other: 0
-# LOCAL-NEXT:     Section: Undefined
-# LOCAL-NEXT:   }
-# LOCAL-NEXT:   Symbol {
-# LOCAL-NEXT:     Name: local
-# LOCAL-NEXT:     Value: 0x1000
-# LOCAL-NEXT:     Size: 0
-# LOCAL-NEXT:     Binding: Global
-# LOCAL-NEXT:     Type: None
-# LOCAL-NEXT:     Other: 0
-# LOCAL-NEXT:     Section: .text
-# LOCAL-NEXT:   }
-# LOCAL-NEXT: ]
+# LOCAL:     local{{$}}
+# LOCAL-NOT: {{.}}

Modified: lld/trunk/test/ELF/version-script-weak.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/version-script-weak.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/version-script-weak.s (original)
+++ lld/trunk/test/ELF/version-script-weak.s Fri Sep  6 08:10:31 2019
@@ -1,16 +1,17 @@
 # REQUIRES: x86
 
-# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
-# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %S/Inputs/version-script-weak.s -o %tmp.o
-# RUN: rm -f %t.a
-# RUN: llvm-ar rcs %t.a %tmp.o
+## An weak undefined symbol does not fetch the lazy definition.
+## Version scripts do not affect undefined symbols.
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
+# RUN: echo '.globl foo; foo:' | llvm-mc -filetype=obj -triple=x86_64 - -o %t1.o
 # RUN: echo "{ local: *; };" > %t.script
-# RUN: ld.lld -shared --version-script %t.script %t.o %t.a -o %t.so
+# RUN: ld.lld -shared --version-script %t.script %t.o --start-lib %t1.o --end-lib -o %t.so
 # RUN: llvm-readobj --dyn-syms -r %t.so | FileCheck %s
 
 # CHECK:      Relocations [
 # CHECK-NEXT:   Section ({{.*}}) .rela.plt {
-# CHECK-NEXT:     0x3018 R_X86_64_JUMP_SLOT foo
+# CHECK-NEXT:     R_X86_64_JUMP_SLOT foo
 # CHECK-NEXT:   }
 # CHECK-NEXT: ]
 # CHECK:      Symbol {

Modified: lld/trunk/test/ELF/version-script.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/version-script.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/version-script.s (original)
+++ lld/trunk/test/ELF/version-script.s Fri Sep  6 08:10:31 2019
@@ -6,19 +6,19 @@
 # RUN: echo "{ global: foo1; foo3; local: *; };" > %t.script
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
 # RUN: ld.lld --version-script %t.script -shared %t.o %t2.so -o %t.so --fatal-warnings
-# RUN: llvm-readobj --dyn-syms %t.so | FileCheck --check-prefix=DSO %s
+# RUN: llvm-readelf --dyn-syms %t.so | FileCheck --check-prefix=DSO %s
 
 # RUN: echo "# comment" > %t3.script
 # RUN: echo "{ local: *; # comment" >> %t3.script
 # RUN: echo -n "}; # comment" >> %t3.script
 # RUN: ld.lld --version-script %t3.script -shared %t.o %t2.so -o %t3.so
-# RUN: llvm-readobj --dyn-syms %t3.so | FileCheck --check-prefix=DSO2 %s
+# RUN: llvm-readelf --dyn-syms %t3.so | FileCheck --check-prefix=DSO2 %s
 
 ## Also check that both "global:" and "global :" forms are accepted
 # RUN: echo "VERSION_1.0 { global : foo1; local : *; };" > %t4.script
 # RUN: echo "VERSION_2.0 { global: foo3; local: *; };" >> %t4.script
 # RUN: ld.lld --version-script %t4.script -shared %t.o %t2.so -o %t4.so --fatal-warnings
-# RUN: llvm-readobj --dyn-syms %t4.so | FileCheck --check-prefix=VERDSO %s
+# RUN: llvm-readelf --dyn-syms %t4.so | FileCheck --check-prefix=VERDSO %s
 
 # RUN: echo "VERSION_1.0 { global: foo1; local: *; };" > %t5.script
 # RUN: echo "{ global: foo3; local: *; };" >> %t5.script
@@ -40,172 +40,36 @@
 # RUN: echo "VERSION_1.0 { global : foo1; local : *; };" > %t7a.script
 # RUN: echo "VERSION_2.0 { global: foo3; local: *; };" > %t7b.script
 # RUN: ld.lld --version-script %t7a.script --version-script %t7b.script -shared %t.o %t2.so -o %t7.so
-# RUN: llvm-readobj --dyn-syms %t7.so | FileCheck --check-prefix=VERDSO %s
+# RUN: llvm-readelf --dyn-syms %t7.so | FileCheck --check-prefix=VERDSO %s
 
-# DSO:      DynamicSymbols [
-# DSO-NEXT:   Symbol {
-# DSO-NEXT:     Name:
-# DSO-NEXT:     Value: 0x0
-# DSO-NEXT:     Size: 0
-# DSO-NEXT:     Binding: Local (0x0)
-# DSO-NEXT:     Type: None (0x0)
-# DSO-NEXT:     Other: 0
-# DSO-NEXT:     Section: Undefined (0x0)
-# DSO-NEXT:   }
-# DSO-NEXT:   Symbol {
-# DSO-NEXT:     Name: bar
-# DSO-NEXT:     Value: 0x0
-# DSO-NEXT:     Size: 0
-# DSO-NEXT:     Binding: Global (0x1)
-# DSO-NEXT:     Type: Function (0x2)
-# DSO-NEXT:     Other: 0
-# DSO-NEXT:     Section: Undefined (0x0)
-# DSO-NEXT:   }
-# DSO-NEXT:   Symbol {
-# DSO-NEXT:     Name: foo1
-# DSO-NEXT:     Value: 0x1000
-# DSO-NEXT:     Size: 0
-# DSO-NEXT:     Binding: Global (0x1)
-# DSO-NEXT:     Type: None (0x0)
-# DSO-NEXT:     Other: 0
-# DSO-NEXT:     Section: .text
-# DSO-NEXT:   }
-# DSO-NEXT:   Symbol {
-# DSO-NEXT:     Name: foo3
-# DSO-NEXT:     Value: 0x1007
-# DSO-NEXT:     Size: 0
-# DSO-NEXT:     Binding: Global (0x1)
-# DSO-NEXT:     Type: None (0x0)
-# DSO-NEXT:     Other: 0
-# DSO-NEXT:     Section: .text
-# DSO-NEXT:   }
-# DSO-NEXT: ]
-
-# DSO2:      DynamicSymbols [
-# DSO2-NEXT:   Symbol {
-# DSO2-NEXT:     Name:
-# DSO2-NEXT:     Value: 0x0
-# DSO2-NEXT:     Size: 0
-# DSO2-NEXT:     Binding: Local (0x0)
-# DSO2-NEXT:     Type: None (0x0)
-# DSO2-NEXT:     Other: 0
-# DSO2-NEXT:     Section: Undefined (0x0)
-# DSO2-NEXT:   }
-# DSO2-NEXT:   Symbol {
-# DSO2-NEXT:     Name: bar
-# DSO2-NEXT:     Value: 0x0
-# DSO2-NEXT:     Size: 0
-# DSO2-NEXT:     Binding: Global (0x1)
-# DSO2-NEXT:     Type: Function (0x2)
-# DSO2-NEXT:     Other: 0
-# DSO2-NEXT:     Section: Undefined (0x0)
-# DSO2-NEXT:   }
-# DSO2-NEXT: ]
-
-# VERDSO:      DynamicSymbols [
-# VERDSO-NEXT:   Symbol {
-# VERDSO-NEXT:     Name:
-# VERDSO-NEXT:     Value: 0x0
-# VERDSO-NEXT:     Size: 0
-# VERDSO-NEXT:     Binding: Local
-# VERDSO-NEXT:     Type: None
-# VERDSO-NEXT:     Other: 0
-# VERDSO-NEXT:     Section: Undefined
-# VERDSO-NEXT:   }
-# VERDSO-NEXT:   Symbol {
-# VERDSO-NEXT:     Name: bar
-# VERDSO-NEXT:     Value: 0x0
-# VERDSO-NEXT:     Size: 0
-# VERDSO-NEXT:     Binding: Global
-# VERDSO-NEXT:     Type: Function
-# VERDSO-NEXT:     Other: 0
-# VERDSO-NEXT:     Section: Undefined
-# VERDSO-NEXT:   }
-# VERDSO-NEXT:   Symbol {
-# VERDSO-NEXT:     Name: foo1@@VERSION_1.0
-# VERDSO-NEXT:     Value: 0x1000
-# VERDSO-NEXT:     Size: 0
-# VERDSO-NEXT:     Binding: Global
-# VERDSO-NEXT:     Type: None
-# VERDSO-NEXT:     Other: 0
-# VERDSO-NEXT:     Section: .text
-# VERDSO-NEXT:   }
-# VERDSO-NEXT:   Symbol {
-# VERDSO-NEXT:     Name: foo3@@VERSION_2.0
-# VERDSO-NEXT:     Value: 0x1007
-# VERDSO-NEXT:     Size: 0
-# VERDSO-NEXT:     Binding: Global
-# VERDSO-NEXT:     Type: None
-# VERDSO-NEXT:     Other: 0
-# VERDSO-NEXT:     Section: .text
-# VERDSO-NEXT:   }
-# VERDSO-NEXT: ]
+# DSO:      bar{{$}}
+# DSO-NEXT: foo1{{$}}
+# DSO-NEXT: foo3{{$}}
+# DSO-NOT:  {{.}}
+
+# DSO2:      bar{{$}}
+# DSO2-NOT:  {{.}}
+
+# VERDSO:      bar{{$}}
+# VERDSO-NEXT: foo1@@VERSION_1.0
+# VERDSO-NEXT: foo3@@VERSION_2.0
+# VERDSO-NOT:  {{.}}
 
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
 # RUN: ld.lld --hash-style=sysv -shared %t.o %t2.so -o %t.so
-# RUN: llvm-readobj --dyn-syms %t.so | FileCheck --check-prefix=ALL %s
+# RUN: llvm-readelf --dyn-syms %t.so | FileCheck --check-prefix=ALL %s
 
 # RUN: echo "{ global: foo1; foo3; };" > %t2.script
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
 # RUN: ld.lld --hash-style=sysv --version-script %t2.script -shared %t.o %t2.so -o %t.so
-# RUN: llvm-readobj --dyn-syms %t.so | FileCheck --check-prefix=ALL %s
+# RUN: llvm-readelf --dyn-syms %t.so | FileCheck --check-prefix=ALL %s
 
-# ALL:      DynamicSymbols [
-# ALL-NEXT:   Symbol {
-# ALL-NEXT:     Name:
-# ALL-NEXT:     Value: 0x0
-# ALL-NEXT:     Size: 0
-# ALL-NEXT:     Binding: Local
-# ALL-NEXT:     Type: None
-# ALL-NEXT:     Other: 0
-# ALL-NEXT:     Section: Undefined
-# ALL-NEXT:   }
-# ALL-NEXT:  Symbol {
-# ALL-NEXT:    Name: _start
-# ALL-NEXT:    Value:
-# ALL-NEXT:    Size: 0
-# ALL-NEXT:    Binding: Global
-# ALL-NEXT:    Type: None
-# ALL-NEXT:    Other: 0
-# ALL-NEXT:    Section: .text
-# ALL-NEXT:  }
-# ALL-NEXT:  Symbol {
-# ALL-NEXT:    Name: bar
-# ALL-NEXT:    Value:
-# ALL-NEXT:    Size: 0
-# ALL-NEXT:    Binding: Global
-# ALL-NEXT:    Type: Function
-# ALL-NEXT:    Other: 0
-# ALL-NEXT:    Section: Undefined
-# ALL-NEXT:  }
-# ALL-NEXT:  Symbol {
-# ALL-NEXT:    Name: foo1
-# ALL-NEXT:    Value:
-# ALL-NEXT:    Size: 0
-# ALL-NEXT:    Binding: Global
-# ALL-NEXT:    Type: None
-# ALL-NEXT:    Other: 0
-# ALL-NEXT:    Section: .text
-# ALL-NEXT:  }
-# ALL-NEXT:  Symbol {
-# ALL-NEXT:    Name: foo2
-# ALL-NEXT:    Value:
-# ALL-NEXT:    Size: 0
-# ALL-NEXT:    Binding: Global
-# ALL-NEXT:    Type: None
-# ALL-NEXT:    Other: 0
-# ALL-NEXT:    Section: .text
-# ALL-NEXT:  }
-# ALL-NEXT:  Symbol {
-# ALL-NEXT:    Name: foo3
-# ALL-NEXT:    Value:
-# ALL-NEXT:    Size: 0
-# ALL-NEXT:    Binding: Global
-# ALL-NEXT:    Type: None
-# ALL-NEXT:    Other: 0
-# ALL-NEXT:    Section: .text
-# ALL-NEXT:  }
-# ALL-NEXT: ]
+# ALL:      _start{{$}}
+# ALL-NEXT: bar{{$}}
+# ALL-NEXT: foo1{{$}}
+# ALL-NEXT: foo2{{$}}
+# ALL-NEXT: foo3{{$}}
+# ALL-NOT:  {{.}}
 
 # RUN: echo "VERSION_1.0 { global: foo1; foo1; local: *; };" > %t8.script
 # RUN: ld.lld --version-script %t8.script -shared %t.o -o /dev/null --fatal-warnings

Removed: lld/trunk/test/ELF/version-wildcard.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/version-wildcard.test?rev=371212&view=auto
==============================================================================
--- lld/trunk/test/ELF/version-wildcard.test (original)
+++ lld/trunk/test/ELF/version-wildcard.test (removed)
@@ -1,108 +0,0 @@
-# REQUIRES: x86
-
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
-# RUN: echo "VERSION_1.0 { global: foo*; local: *; };" > %t.script
-# RUN: ld.lld --version-script %t.script -shared %t.o -o %t.so
-# RUN: llvm-readobj --dyn-syms %t.so | FileCheck %s
-
-# CHECK: DynamicSymbols [
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name:
-# CHECK-NEXT:     Value: 0x0
-# CHECK-NEXT:     Size: 0
-# CHECK-NEXT:     Binding: Local
-# CHECK-NEXT:     Type: None
-# CHECK-NEXT:     Other: 0
-# CHECK-NEXT:     Section: Undefined
-# CHECK-NEXT:   }
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name: foo1@@VERSION_1.0
-# CHECK-NEXT:     Value: 0x1000
-# CHECK-NEXT:     Size: 0
-# CHECK-NEXT:     Binding: Global
-# CHECK-NEXT:     Type: None
-# CHECK-NEXT:     Other: 0
-# CHECK-NEXT:     Section: .text
-# CHECK-NEXT:   }
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name: foo2@@VERSION_1.0
-# CHECK-NEXT:     Value: 0x1001
-# CHECK-NEXT:     Size: 0
-# CHECK-NEXT:     Binding: Global
-# CHECK-NEXT:     Type: None
-# CHECK-NEXT:     Other: 0
-# CHECK-NEXT:     Section: .text
-# CHECK-NEXT:   }
-# CHECK-NEXT:   Symbol {
-# CHECK-NEXT:     Name: foo3@@VERSION_1.0
-# CHECK-NEXT:     Value: 0x1007
-# CHECK-NEXT:     Size: 0
-# CHECK-NEXT:     Binding: Global
-# CHECK-NEXT:     Type: None
-# CHECK-NEXT:     Other: 0
-# CHECK-NEXT:     Section: .text
-# CHECK-NEXT:   }
-# CHECK-NEXT: ]
-
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
-# RUN: echo "VERSION_1.0 { global: foo2; local: *; };" > %t2.script
-# RUN: echo "VERSION_2.0 { global: foo*; };" >> %t2.script
-# RUN: ld.lld --version-script %t2.script -shared %t.o -o %t2.so
-# RUN: llvm-readobj --dyn-syms %t2.so | FileCheck --check-prefix=MIX %s
-
-# MIX:      DynamicSymbols [
-# MIX-NEXT:   Symbol {
-# MIX-NEXT:     Name:
-# MIX-NEXT:     Value: 0x0
-# MIX-NEXT:     Size: 0
-# MIX-NEXT:     Binding: Local
-# MIX-NEXT:     Type: None
-# MIX-NEXT:     Other: 0
-# MIX-NEXT:     Section: Undefined
-# MIX-NEXT:   }
-# MIX-NEXT:   Symbol {
-# MIX-NEXT:     Name: foo1@@VERSION_2.0
-# MIX-NEXT:     Value: 0x1000
-# MIX-NEXT:     Size: 0
-# MIX-NEXT:     Binding: Global
-# MIX-NEXT:     Type: None
-# MIX-NEXT:     Other: 0
-# MIX-NEXT:     Section: .text
-# MIX-NEXT:   }
-# MIX-NEXT:   Symbol {
-# MIX-NEXT:     Name: foo2@@VERSION_1.0
-# MIX-NEXT:     Value: 0x1001
-# MIX-NEXT:     Size: 0
-# MIX-NEXT:     Binding: Global
-# MIX-NEXT:     Type: None
-# MIX-NEXT:     Other: 0
-# MIX-NEXT:     Section: .text
-# MIX-NEXT:   }
-# MIX-NEXT:   Symbol {
-# MIX-NEXT:     Name: foo3@@VERSION_2.0
-# MIX-NEXT:     Value: 0x1007
-# MIX-NEXT:     Size: 0
-# MIX-NEXT:     Binding: Global
-# MIX-NEXT:     Type: None
-# MIX-NEXT:     Other: 0
-# MIX-NEXT:     Section: .text
-# MIX-NEXT:   }
-# MIX-NEXT: ]
-
-.globl foo1
-foo1:
-  ret
-
-.globl foo2
-foo2:
-  call foo1 at PLT
-  ret
-
-.globl foo3
-foo3:
-  call foo2 at PLT
-  ret
-
-.globl _start
-_start:
-  ret

Modified: lld/trunk/test/ELF/visibility.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/visibility.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/visibility.s (original)
+++ lld/trunk/test/ELF/visibility.s Fri Sep  6 08:10:31 2019
@@ -1,116 +1,21 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/visibility.s -o %t2
-// RUN: ld.lld -shared %t %t2 -o %t3
-// RUN: llvm-readobj --symbols --dyn-syms %t3 | FileCheck %s
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %p/Inputs/visibility.s -o %t2.o
+# RUN: ld.lld -shared %t.o %t2.o -o %t.so
+# RUN: llvm-readelf -s %t.so | FileCheck %s
 
-// CHECK:      Symbols [
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name:
-// CHECK-NEXT:     Value: 0x0
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: Undefined
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: hidden
-// CHECK-NEXT:     Value:
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other [ (0x2)
-// CHECK-NEXT:       STV_HIDDEN
-// CHECK-NEXT:     ]
-// CHECK-NEXT:     Section: .text
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: internal
-// CHECK-NEXT:     Value:
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other [ (0x1)
-// CHECK-NEXT:       STV_INTERNAL
-// CHECK-NEXT:     ]
-// CHECK-NEXT:     Section: .text
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: protected_with_hidden
-// CHECK-NEXT:     Value:
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other [ (0x2)
-// CHECK-NEXT:       STV_HIDDEN
-// CHECK-NEXT:     ]
-// CHECK-NEXT:     Section: .text
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: _DYNAMIC
-// CHECK-NEXT:     Value:
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other [ (0x2)
-// CHECK-NEXT:       STV_HIDDEN
-// CHECK-NEXT:     ]
-// CHECK-NEXT:     Section: .dynamic
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: default
-// CHECK-NEXT:     Value:
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Global
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: .text
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: protected
-// CHECK-NEXT:     Value:
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Global
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other [ (0x3)
-// CHECK-NEXT:       STV_PROTECTED
-// CHECK-NEXT:     ]
-// CHECK-NEXT:     Section: .text
-// CHECK-NEXT:   }
-// CHECK-NEXT: ]
+## Check the most constraining visibility attribute is propagated to the symbol tables.
 
-// CHECK:      DynamicSymbols [
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name:
-// CHECK-NEXT:     Value: 0x0
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Local
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: Undefined
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: default
-// CHECK-NEXT:     Value:
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Global
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other: 0
-// CHECK-NEXT:     Section: .text
-// CHECK-NEXT:   }
-// CHECK-NEXT:   Symbol {
-// CHECK-NEXT:     Name: protected
-// CHECK-NEXT:     Value:
-// CHECK-NEXT:     Size: 0
-// CHECK-NEXT:     Binding: Global
-// CHECK-NEXT:     Type: None
-// CHECK-NEXT:     Other [ (0x3)
-// CHECK-NEXT:       STV_PROTECTED
-// CHECK-NEXT:     ]
-// CHECK-NEXT:     Section: .text
-// CHECK-NEXT:   }
-// CHECK-NEXT: ]
+# CHECK:      Symbol table '.dynsym' contains 3 entries:
+# CHECK:      GLOBAL DEFAULT   6 default
+# CHECK-NEXT: GLOBAL PROTECTED 6 protected
+
+# CHECK:      Symbol table '.symtab' contains 7 entries:
+# CHECK:      LOCAL  HIDDEN    6 hidden
+# CHECK-NEXT: LOCAL  INTERNAL  6 internal
+# CHECK-NEXT: LOCAL  HIDDEN    6 protected_with_hidden
+# CHECK:      GLOBAL DEFAULT   6 default
+# CHECK-NEXT: GLOBAL PROTECTED 6 protected
 
 .global default
 default:

Copied: lld/trunk/test/ELF/x86-64-reloc-size-shared.s (from r371189, lld/trunk/test/ELF/relocation-size-shared.s)
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/x86-64-reloc-size-shared.s?p2=lld/trunk/test/ELF/x86-64-reloc-size-shared.s&p1=lld/trunk/test/ELF/relocation-size-shared.s&r1=371189&r2=371213&rev=371213&view=diff
==============================================================================
    (empty)

Added: lld/trunk/test/ELF/x86-64-reloc-size.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/x86-64-reloc-size.s?rev=371213&view=auto
==============================================================================
--- lld/trunk/test/ELF/x86-64-reloc-size.s (added)
+++ lld/trunk/test/ELF/x86-64-reloc-size.s Fri Sep  6 08:10:31 2019
@@ -0,0 +1,73 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
+# RUN: ld.lld %t.o -o %t
+# RUN: llvm-readobj -r %t | FileCheck --check-prefix=NORELOC %s
+# RUN: llvm-readelf -x .data %t | FileCheck --check-prefix=DATA %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=DISASM %s
+
+# RUN: ld.lld -shared %t.o -o %t.so
+# RUN: llvm-readobj -r %t.so | FileCheck --check-prefix=RELOC2 %s
+# RUN: llvm-readelf -x .data %t.so | FileCheck --check-prefix=DATA2 %s
+# RUN: llvm-objdump -d --no-show-raw-insn %t.so | FileCheck --check-prefix=DISASM2 %s
+
+# NORELOC:      Relocations [
+# NORELOC-NEXT: ]
+
+# DATA:      section '.data':
+# DATA-NEXT: 0x00202000 00000000 00000000 00000000 00000000
+# DATA-NEXT: 0x00202010 00000000 00000000 00001900 00000000
+# DATA-NEXT: 0x00202020 00001b00 00000000 00001900 00000000
+# DATA-NEXT: 0x00202030 00001b00 00000000 0000
+
+# DISASM:      _start:
+# DISASM-NEXT:   201000: movl 25, %eax
+# DISASM-NEXT:   201007: movl 27, %eax
+# DISASM-NEXT:   20100e: movl 25, %eax
+# DISASM-NEXT:   201015: movl 27, %eax
+
+# RELOC2:      Relocations [
+# RELOC2-NEXT: Section ({{.*}}) .rela.dyn {
+# RELOC2-NEXT:    0x1003 R_X86_64_SIZE32 foo 0xFFFFFFFFFFFFFFFF
+# RELOC2-NEXT:    0x100A R_X86_64_SIZE32 foo 0x1
+# RELOC2-NEXT:    0x301A R_X86_64_SIZE64 foo 0xFFFFFFFFFFFFFFFF
+# RELOC2-NEXT:    0x3022 R_X86_64_SIZE64 foo 0x1
+# RELOC2-NEXT:  }
+# RELOC2-NEXT: ]
+
+# DATA2:      section '.data':
+# DATA2-NEXT: 00000000 00000000 00000000 00000000
+# DATA2-NEXT: 00000000 00000000 00000000 00000000
+# DATA2-NEXT: 00000000 00000000 00001900 00000000
+# DATA2-NEXT: 00001b00 00000000 0000
+
+# DISASM2:      _start:
+# DISASM2-NEXT:   1000: movl 0, %eax
+# DISASM2-NEXT:   1007: movl 0, %eax
+# DISASM2-NEXT:   100e: movl 25, %eax
+# DISASM2-NEXT:   1015: movl 27, %eax
+
+.data
+.global foo, foohidden
+.hidden foohidden
+.type foo,%object
+.size foo,26
+.type foohidden,%object
+.size foohidden,26
+foo:
+foohidden:
+.zero 26
+
+  // R_X86_64_SIZE64:
+  .quad foo at SIZE-1
+  .quad foo at SIZE+1
+  .quad foohidden at SIZE-1
+  .quad foohidden at SIZE+1
+
+.section test,"axw"
+.globl _start
+_start:
+  // R_X86_64_SIZE32:
+  movl foo at SIZE-1,%eax
+  movl foo at SIZE+1,%eax
+  movl foohidden at SIZE-1,%eax
+  movl foohidden at SIZE+1,%eax

Modified: lld/trunk/test/ELF/x86-64-tls-ie-opt-local.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/x86-64-tls-ie-opt-local.s?rev=371213&r1=371212&r2=371213&view=diff
==============================================================================
--- lld/trunk/test/ELF/x86-64-tls-ie-opt-local.s (original)
+++ lld/trunk/test/ELF/x86-64-tls-ie-opt-local.s Fri Sep  6 08:10:31 2019
@@ -10,18 +10,18 @@
 // DISASM:      Disassembly of section .text:
 // DISASM-EMPTY:
 // DISASM-NEXT: _start:
-// DISASM-NEXT: 201000: 48 c7 c0 f8 ff ff ff movq $-8, %rax
-// DISASM-NEXT: 201007: 49 c7 c7 f8 ff ff ff movq $-8, %r15
-// DISASM-NEXT: 20100e: 48 8d 80 f8 ff ff ff leaq -8(%rax), %rax
-// DISASM-NEXT: 201015: 4d 8d bf f8 ff ff ff leaq -8(%r15), %r15
-// DISASM-NEXT: 20101c: 48 81 c4 f8 ff ff ff addq $-8, %rsp
-// DISASM-NEXT: 201023: 49 81 c4 f8 ff ff ff addq $-8, %r12
-// DISASM-NEXT: 20102a: 48 c7 c0 fc ff ff ff movq $-4, %rax
-// DISASM-NEXT: 201031: 49 c7 c7 fc ff ff ff movq $-4, %r15
-// DISASM-NEXT: 201038: 48 8d 80 fc ff ff ff leaq -4(%rax), %rax
-// DISASM-NEXT: 20103f: 4d 8d bf fc ff ff ff leaq -4(%r15), %r15
-// DISASM-NEXT: 201046: 48 81 c4 fc ff ff ff addq $-4, %rsp
-// DISASM-NEXT: 20104d: 49 81 c4 fc ff ff ff addq $-4, %r12
+// DISASM-NEXT:   movq $-8, %rax
+// DISASM-NEXT:   movq $-8, %r15
+// DISASM-NEXT:   leaq -8(%rax), %rax
+// DISASM-NEXT:   leaq -8(%r15), %r15
+// DISASM-NEXT:   addq $-8, %rsp
+// DISASM-NEXT:   addq $-8, %r12
+// DISASM-NEXT:   movq $-4, %rax
+// DISASM-NEXT:   movq $-4, %r15
+// DISASM-NEXT:   leaq -4(%rax), %rax
+// DISASM-NEXT:   leaq -4(%r15), %r15
+// DISASM-NEXT:   addq $-4, %rsp
+// DISASM-NEXT:   addq $-4, %r12
 
 .section .tbss,"awT", at nobits
 

Copied: lld/trunk/test/ELF/x86-64-tls-ie.s (from r371189, lld/trunk/test/ELF/tls-got.s)
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/x86-64-tls-ie.s?p2=lld/trunk/test/ELF/x86-64-tls-ie.s&p1=lld/trunk/test/ELF/tls-got.s&r1=371189&r2=371213&rev=371213&view=diff
==============================================================================
    (empty)




More information about the llvm-commits mailing list