[lld] r326415 - Convert more tests as linker scripts instead of assembly.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 28 20:21:43 PST 2018


Author: ruiu
Date: Wed Feb 28 20:21:42 2018
New Revision: 326415

URL: http://llvm.org/viewvc/llvm-project?rev=326415&view=rev
Log:
Convert more tests as linker scripts instead of assembly.

Added:
    lld/trunk/test/ELF/linkerscript/Inputs/data-commands.s
    lld/trunk/test/ELF/linkerscript/Inputs/data-segment-relro.s
    lld/trunk/test/ELF/linkerscript/Inputs/define.s
    lld/trunk/test/ELF/linkerscript/Inputs/eh-frame-reloc-out-of-range.s
    lld/trunk/test/ELF/linkerscript/Inputs/extend-pt-load.s
    lld/trunk/test/ELF/linkerscript/Inputs/fill.s
    lld/trunk/test/ELF/linkerscript/data-commands1.test
    lld/trunk/test/ELF/linkerscript/data-commands2.test
    lld/trunk/test/ELF/linkerscript/data-segment-relro.test
    lld/trunk/test/ELF/linkerscript/define.test
    lld/trunk/test/ELF/linkerscript/diag1.test
    lld/trunk/test/ELF/linkerscript/diag2.test
    lld/trunk/test/ELF/linkerscript/diag3.test
    lld/trunk/test/ELF/linkerscript/diag4.test
    lld/trunk/test/ELF/linkerscript/diag5.test
    lld/trunk/test/ELF/linkerscript/diag6.test
    lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.test
    lld/trunk/test/ELF/linkerscript/expr-sections.test
    lld/trunk/test/ELF/linkerscript/extend-pt-load1.test
    lld/trunk/test/ELF/linkerscript/extend-pt-load2.test
    lld/trunk/test/ELF/linkerscript/extend-pt-load3.test
    lld/trunk/test/ELF/linkerscript/fill.test
Removed:
    lld/trunk/test/ELF/linkerscript/data-commands.s
    lld/trunk/test/ELF/linkerscript/data-segment-relro.s
    lld/trunk/test/ELF/linkerscript/define.s
    lld/trunk/test/ELF/linkerscript/diagnostic.s
    lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.s
    lld/trunk/test/ELF/linkerscript/expr-sections.s
    lld/trunk/test/ELF/linkerscript/extend-pt-load.s
    lld/trunk/test/ELF/linkerscript/fill.s
Modified:
    lld/trunk/test/ELF/linkerscript/dot-is-not-abs.s
    lld/trunk/test/ELF/linkerscript/eh-frame-hdr.s
    lld/trunk/test/ELF/linkerscript/eh-frame.s
    lld/trunk/test/ELF/linkerscript/emit-reloc-section-names.s
    lld/trunk/test/ELF/linkerscript/empty-load.s
    lld/trunk/test/ELF/linkerscript/empty-tls.s
    lld/trunk/test/ELF/linkerscript/filename-spec.s

Added: lld/trunk/test/ELF/linkerscript/Inputs/data-commands.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/Inputs/data-commands.s?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/Inputs/data-commands.s (added)
+++ lld/trunk/test/ELF/linkerscript/Inputs/data-commands.s Wed Feb 28 20:21:42 2018
@@ -0,0 +1,35 @@
+.global a
+a = 0x11
+
+.global b
+b = 0x1122
+
+.global c
+c = 0x11223344
+
+.global d
+d = 0x1122334455667788
+
+.section .foo.1, "a"
+ .byte 0xFF
+
+.section .foo.2, "a"
+ .byte 0xFF
+
+.section .foo.3, "a"
+ .byte 0xFF
+
+.section .foo.4, "a"
+ .byte 0xFF
+
+.section .bar.1, "a"
+ .byte 0xFF
+
+.section .bar.2, "a"
+ .byte 0xFF
+
+.section .bar.3, "a"
+ .byte 0xFF
+
+.section .bar.4, "a"
+ .byte 0xFF

Added: lld/trunk/test/ELF/linkerscript/Inputs/data-segment-relro.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/Inputs/data-segment-relro.s?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/Inputs/data-segment-relro.s (added)
+++ lld/trunk/test/ELF/linkerscript/Inputs/data-segment-relro.s Wed Feb 28 20:21:42 2018
@@ -0,0 +1,11 @@
+.global _start
+_start:
+  .long bar
+  jmp *bar2 at GOTPCREL(%rip)
+
+.section .data,"aw"
+.quad 0
+
+.zero 4
+.section .foo,"aw"
+.section .bss,"", at nobits

Added: lld/trunk/test/ELF/linkerscript/Inputs/define.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/Inputs/define.s?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/Inputs/define.s (added)
+++ lld/trunk/test/ELF/linkerscript/Inputs/define.s Wed Feb 28 20:21:42 2018
@@ -0,0 +1,8 @@
+.global defined
+defined = 0
+
+.section .foo,"a"
+.quad 1
+
+.section .bar,"a"
+.quad 1

Added: lld/trunk/test/ELF/linkerscript/Inputs/eh-frame-reloc-out-of-range.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/Inputs/eh-frame-reloc-out-of-range.s?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/Inputs/eh-frame-reloc-out-of-range.s (added)
+++ lld/trunk/test/ELF/linkerscript/Inputs/eh-frame-reloc-out-of-range.s Wed Feb 28 20:21:42 2018
@@ -0,0 +1,11 @@
+.text
+.globl _start
+_start:
+  .cfi_startproc
+  .cfi_lsda 0, _ex
+  nop
+  .cfi_endproc
+
+.data
+_ex:
+  .word 0

Added: lld/trunk/test/ELF/linkerscript/Inputs/extend-pt-load.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/Inputs/extend-pt-load.s?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/Inputs/extend-pt-load.s (added)
+++ lld/trunk/test/ELF/linkerscript/Inputs/extend-pt-load.s Wed Feb 28 20:21:42 2018
@@ -0,0 +1,3 @@
+nop
+.section .data.rel.ro, "aw"
+.byte 0

Added: lld/trunk/test/ELF/linkerscript/Inputs/fill.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/Inputs/fill.s?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/Inputs/fill.s (added)
+++ lld/trunk/test/ELF/linkerscript/Inputs/fill.s Wed Feb 28 20:21:42 2018
@@ -0,0 +1,11 @@
+.text
+.globl _start
+_start:
+
+.section .aaa, "a"
+.align 1
+.byte 0xAA
+
+.section .bbb, "a"
+.align 1
+.byte 0xBB

Removed: lld/trunk/test/ELF/linkerscript/data-commands.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/data-commands.s?rev=326414&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/data-commands.s (original)
+++ lld/trunk/test/ELF/linkerscript/data-commands.s (removed)
@@ -1,117 +0,0 @@
-# REQUIRES: x86,mips
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
-# RUN: echo "SECTIONS                \
-# RUN:  {                            \
-# RUN:    .foo : {                   \
-# RUN:      *(.foo.1)                \
-# RUN:      BYTE(0x11)               \
-# RUN:      *(.foo.2)                \
-# RUN:      SHORT(0x1122)            \
-# RUN:      *(.foo.3)                \
-# RUN:      LONG(0x11223344)         \
-# RUN:      *(.foo.4)                \
-# RUN:      QUAD(0x1122334455667788) \
-# RUN:    }                          \
-# RUN:    .bar : {                   \
-# RUN:      *(.bar.1)                \
-# RUN:      BYTE(a + 1)              \
-# RUN:      *(.bar.2)                \
-# RUN:      SHORT(b)                 \
-# RUN:      *(.bar.3)                \
-# RUN:      LONG(c + 2)              \
-# RUN:      *(.bar.4)                \
-# RUN:      QUAD(d)                  \
-# RUN:    }                          \
-# RUN:  }" > %t.script
-# RUN: ld.lld -o %t %t.o --script %t.script
-# RUN: llvm-objdump -s %t | FileCheck %s
-
-# CHECK:      Contents of section .foo:
-# CHECK-NEXT:   ff11ff22 11ff4433 2211ff88 77665544
-# CHECK-NEXT:   332211
-
-# CHECK:      Contents of section .bar:
-# CHECK-NEXT:   ff12ff22 11ff4633 2211ff88 77665544
-# CHECK-NEXT:   332211
-
-# RUN: llvm-mc -filetype=obj -triple=mips64-unknown-linux %s -o %tmips64be
-# RUN: ld.lld --script %t.script %tmips64be -o %t2
-# RUN: llvm-objdump -s %t2 | FileCheck %s --check-prefix=BE
-# BE:      Contents of section .foo:
-# BE-NEXT:   ff11ff11 22ff1122 3344ff11 22334455
-# BE-NEXT:   667788
-# BE-NEXT: Contents of section .bar:
-# BE-NEXT:   ff12ff11 22ff1122 3346ff11 22334455
-# BE-NEXT:   667788
-
-# RUN: echo "MEMORY {                \
-# RUN:     rom (rwx) : ORIGIN = 0x00, LENGTH = 2K \
-# RUN:  }                            \
-# RUN:  SECTIONS {                   \
-# RUN:    .foo : {                   \
-# RUN:      *(.foo.1)                \
-# RUN:      BYTE(0x11)               \
-# RUN:      *(.foo.2)                \
-# RUN:      SHORT(0x1122)            \
-# RUN:      *(.foo.3)                \
-# RUN:      LONG(0x11223344)         \
-# RUN:      *(.foo.4)                \
-# RUN:      QUAD(0x1122334455667788) \
-# RUN:    } > rom                    \
-# RUN:    .bar : {                   \
-# RUN:      *(.bar.1)                \
-# RUN:      BYTE(a + 1)              \
-# RUN:      *(.bar.2)                \
-# RUN:      SHORT(b)                 \
-# RUN:      *(.bar.3)                \
-# RUN:      LONG(c + 2)              \
-# RUN:      *(.bar.4)                \
-# RUN:      QUAD(d)                  \
-# RUN:    } > rom                    \
-# RUN:  }" > %t-memory.script
-# RUN: ld.lld -o %t-memory %t.o --script %t-memory.script
-# RUN: llvm-objdump -s %t-memory | FileCheck %s --check-prefix=MEM
-
-# MEM:      Contents of section .foo:
-# MEM-NEXT:   0000 ff11ff22 11ff4433 2211ff88 77665544
-# MEM-NEXT:   0010 332211
-
-# MEM:      Contents of section .bar:
-# MEM-NEXT:   0013 ff12ff22 11ff4633 2211ff88 77665544
-# MEM-NEXT:   0023 332211
-
-.global a
-a = 0x11
-
-.global b
-b = 0x1122
-
-.global c
-c = 0x11223344
-
-.global d
-d = 0x1122334455667788
-
-.section .foo.1, "a"
- .byte 0xFF
-
-.section .foo.2, "a"
- .byte 0xFF
-
-.section .foo.3, "a"
- .byte 0xFF
-
-.section .foo.4, "a"
- .byte 0xFF
-
-.section .bar.1, "a"
- .byte 0xFF
-
-.section .bar.2, "a"
- .byte 0xFF
-
-.section .bar.3, "a"
- .byte 0xFF
-
-.section .bar.4, "a"
- .byte 0xFF

Added: lld/trunk/test/ELF/linkerscript/data-commands1.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/data-commands1.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/data-commands1.test (added)
+++ lld/trunk/test/ELF/linkerscript/data-commands1.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,45 @@
+# REQUIRES: x86,mips
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/data-commands.s -o %t.o
+# RUN: ld.lld -o %t %t.o --script %s
+# RUN: llvm-objdump -s %t | FileCheck %s
+
+SECTIONS {
+  .foo : {
+    *(.foo.1)
+    BYTE(0x11)
+    *(.foo.2)
+    SHORT(0x1122)
+    *(.foo.3)
+    LONG(0x11223344)
+    *(.foo.4)
+    QUAD(0x1122334455667788)
+  }
+  .bar : {
+    *(.bar.1)
+    BYTE(a + 1)
+    *(.bar.2)
+    SHORT(b)
+    *(.bar.3)
+    LONG(c + 2)
+    *(.bar.4)
+    QUAD(d)
+  }
+}
+
+# CHECK:      Contents of section .foo:
+# CHECK-NEXT:   ff11ff22 11ff4433 2211ff88 77665544
+# CHECK-NEXT:   332211
+
+# CHECK:      Contents of section .bar:
+# CHECK-NEXT:   ff12ff22 11ff4633 2211ff88 77665544
+# CHECK-NEXT:   332211
+
+# RUN: llvm-mc -filetype=obj -triple=mips64-unknown-linux %p/Inputs/data-commands.s -o %t2.o
+# RUN: ld.lld --script %s %t2.o -o %t2
+# RUN: llvm-objdump -s %t2 | FileCheck -check-prefix=BIGENDIAN %s
+# BIGENDIAN:      Contents of section .foo:
+# BIGENDIAN-NEXT:   ff11ff11 22ff1122 3344ff11 22334455
+# BIGENDIAN-NEXT:   667788
+# BIGENDIAN-NEXT: Contents of section .bar:
+# BIGENDIAN-NEXT:   ff12ff11 22ff1122 3346ff11 22334455
+# BIGENDIAN-NEXT:   667788

Added: lld/trunk/test/ELF/linkerscript/data-commands2.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/data-commands2.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/data-commands2.test (added)
+++ lld/trunk/test/ELF/linkerscript/data-commands2.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,40 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/data-commands.s -o %t.o
+# RUN: ld.lld -o %t %t.o --script %s
+# RUN: llvm-objdump -s %t | FileCheck %s
+
+MEMORY {
+  rom (rwx) : ORIGIN = 0x00, LENGTH = 2K
+}
+
+SECTIONS {
+  .foo : {
+    *(.foo.1)
+    BYTE(0x11)
+    *(.foo.2)
+    SHORT(0x1122)
+    *(.foo.3)
+    LONG(0x11223344)
+    *(.foo.4)
+    QUAD(0x1122334455667788)
+  } > rom
+
+  .bar : {
+    *(.bar.1)
+    BYTE(a + 1)
+    *(.bar.2)
+    SHORT(b)
+    *(.bar.3)
+    LONG(c + 2)
+    *(.bar.4)
+    QUAD(d)
+  } > rom
+}
+
+# CHECK:      Contents of section .foo:
+# CHECK-NEXT:   0000 ff11ff22 11ff4433 2211ff88 77665544
+# CHECK-NEXT:   0010 332211
+
+# CHECK:      Contents of section .bar:
+# CHECK-NEXT:   0013 ff12ff22 11ff4633 2211ff88 77665544
+# CHECK-NEXT:   0023 332211

Removed: lld/trunk/test/ELF/linkerscript/data-segment-relro.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/data-segment-relro.s?rev=326414&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/data-segment-relro.s (original)
+++ lld/trunk/test/ELF/linkerscript/data-segment-relro.s (removed)
@@ -1,70 +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/shared.s -o %t2.o
-# RUN: ld.lld -shared %t2.o -o %t2.so
-
-# RUN: echo "SECTIONS { \
-# RUN:  . = SIZEOF_HEADERS; \
-# RUN:  .plt  : { *(.plt) } \
-# RUN:  .text : { *(.text) } \
-# RUN:  . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); \
-# RUN:  .dynamic        : { *(.dynamic) } \
-# RUN:  .got            : { *(.got) } \
-# RUN:  . = DATA_SEGMENT_RELRO_END (1 ? 24 : 0, .); \
-# RUN:  .got.plt : { *(.got.plt) } \
-# RUN:  .data : { *(.data) } \
-# RUN:  .bss        : { *(.bss) } \
-# RUN:  . = DATA_SEGMENT_END (.); \
-# RUN:  }" > %t.script
-
-## With relro or without DATA_SEGMENT_RELRO_END just aligns to
-## page boundary.
-# RUN: ld.lld --hash-style=sysv -z norelro %t1.o %t2.so --script %t.script -o %t
-# RUN: llvm-readobj -s %t | FileCheck %s
-# RUN: ld.lld --hash-style=sysv -z relro %t1.o %t2.so --script %t.script -o %t2
-# RUN: llvm-readobj -s %t2 | FileCheck %s
-
-# CHECK:       Section {
-# CHECK:         Index:
-# CHECK:         Name: .got
-# CHECK-NEXT:    Type: SHT_PROGBITS
-# CHECK-NEXT:    Flags [
-# CHECK-NEXT:      SHF_ALLOC
-# CHECK-NEXT:      SHF_WRITE
-# CHECK-NEXT:    ]
-# CHECK-NEXT:    Address: 0x10F0
-# CHECK-NEXT:    Offset: 0x10F0
-# CHECK-NEXT:    Size:
-# CHECK-NEXT:    Link:
-# CHECK-NEXT:    Info:
-# CHECK-NEXT:    AddressAlignment:
-# CHECK-NEXT:    EntrySize:
-# CHECK-NEXT:  }
-# CHECK-NEXT:  Section {
-# CHECK-NEXT:    Index:
-# CHECK-NEXT:    Name: .got.plt
-# CHECK-NEXT:    Type: SHT_PROGBITS
-# CHECK-NEXT:    Flags [
-# CHECK-NEXT:      SHF_ALLOC
-# CHECK-NEXT:      SHF_WRITE
-# CHECK-NEXT:    ]
-# CHECK-NEXT:    Address: 0x2000
-# CHECK-NEXT:    Offset: 0x2000
-# CHECK-NEXT:    Size:
-# CHECK-NEXT:    Link:
-# CHECK-NEXT:    Info:
-# CHECK-NEXT:    AddressAlignment:
-# CHECK-NEXT:    EntrySize:
-# CHECK-NEXT:  }
-
-.global _start
-_start:
-  .long bar
-  jmp *bar2 at GOTPCREL(%rip)
-
-.section .data,"aw"
-.quad 0
-
-.zero 4
-.section .foo,"aw"
-.section .bss,"", at nobits

Added: lld/trunk/test/ELF/linkerscript/data-segment-relro.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/data-segment-relro.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/data-segment-relro.test (added)
+++ lld/trunk/test/ELF/linkerscript/data-segment-relro.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,66 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/data-segment-relro.s -o %t1.o
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/shared.s -o %t2.o
+# RUN: ld.lld -shared %t2.o -o %t2.so
+
+## With relro or without DATA_SEGMENT_RELRO_END just aligns to
+## page boundary.
+
+# RUN: ld.lld --hash-style=sysv -z norelro %t1.o %t2.so --script %s -o %t
+# RUN: llvm-readobj -s %t | FileCheck %s
+
+# RUN: ld.lld --hash-style=sysv -z relro %t1.o %t2.so --script %s -o %t2
+# RUN: llvm-readobj -s %t2 | FileCheck %s
+
+SECTIONS {
+  . = SIZEOF_HEADERS;
+
+  .plt  : { *(.plt) }
+  .text : { *(.text) }
+
+  . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
+
+  .dynamic : { *(.dynamic) }
+  .got : { *(.got) }
+
+  . = DATA_SEGMENT_RELRO_END (1 ? 24 : 0, .);
+
+  .got.plt : { *(.got.plt) }
+  .data : { *(.data) }
+  .bss : { *(.bss) }
+
+  . = DATA_SEGMENT_END (.);
+}
+
+# CHECK:       Section {
+# CHECK:         Index:
+# CHECK:         Name: .got
+# CHECK-NEXT:    Type: SHT_PROGBITS
+# CHECK-NEXT:    Flags [
+# CHECK-NEXT:      SHF_ALLOC
+# CHECK-NEXT:      SHF_WRITE
+# CHECK-NEXT:    ]
+# CHECK-NEXT:    Address: 0x10F0
+# CHECK-NEXT:    Offset: 0x10F0
+# CHECK-NEXT:    Size:
+# CHECK-NEXT:    Link:
+# CHECK-NEXT:    Info:
+# CHECK-NEXT:    AddressAlignment:
+# CHECK-NEXT:    EntrySize:
+# CHECK-NEXT:  }
+# CHECK-NEXT:  Section {
+# CHECK-NEXT:    Index:
+# CHECK-NEXT:    Name: .got.plt
+# CHECK-NEXT:    Type: SHT_PROGBITS
+# CHECK-NEXT:    Flags [
+# CHECK-NEXT:      SHF_ALLOC
+# CHECK-NEXT:      SHF_WRITE
+# CHECK-NEXT:    ]
+# CHECK-NEXT:    Address: 0x2000
+# CHECK-NEXT:    Offset: 0x2000
+# CHECK-NEXT:    Size:
+# CHECK-NEXT:    Link:
+# CHECK-NEXT:    Info:
+# CHECK-NEXT:    AddressAlignment:
+# CHECK-NEXT:    EntrySize:
+# CHECK-NEXT:  }

Removed: lld/trunk/test/ELF/linkerscript/define.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/define.s?rev=326414&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/define.s (original)
+++ lld/trunk/test/ELF/linkerscript/define.s (removed)
@@ -1,25 +0,0 @@
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
-
-# RUN: echo "SECTIONS                                \
-# RUN: {                                             \
-# RUN:  . = DEFINED(defined) ? 0x11000 : .;          \
-# RUN:  .foo : { *(.foo*) }                          \
-# RUN:  . = DEFINED(notdefined) ? 0x12000 : 0x13000; \
-# RUN:  .bar : { *(.bar*) }                          \
-# RUN: }" > %t.script
-# RUN: ld.lld -o %t1 --script %t.script %t
-# RUN: llvm-objdump -section-headers %t1 | FileCheck %s
-
-# CHECK: 1 .foo  00000008 0000000000011000 DATA
-# CHECK: 2 .bar  00000008 0000000000013000 DATA
-# CHECK: 3 .text 00000000 0000000000013008 TEXT DATA
-
-.global defined
-defined = 0
-
-.section .foo,"a"
-.quad 1
-
-.section .bar,"a"
-.quad 1

Added: lld/trunk/test/ELF/linkerscript/define.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/define.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/define.test (added)
+++ lld/trunk/test/ELF/linkerscript/define.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,15 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/define.s -o %t.o
+# RUN: ld.lld -o %t --script %s %t.o
+# RUN: llvm-objdump -section-headers %t | FileCheck %s
+
+SECTIONS {
+  . = DEFINED(defined) ? 0x11000 : .;
+  .foo : { *(.foo*) }
+  . = DEFINED(notdefined) ? 0x12000 : 0x13000;
+  .bar : { *(.bar*) }
+}
+
+# CHECK: 1 .foo  00000008 0000000000011000 DATA
+# CHECK: 2 .bar  00000008 0000000000013000 DATA
+# CHECK: 3 .text 00000000 0000000000013008 TEXT DATA

Added: lld/trunk/test/ELF/linkerscript/diag1.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/diag1.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/diag1.test (added)
+++ lld/trunk/test/ELF/linkerscript/diag1.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,15 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux /dev/null -o %t.o
+# RUN: not ld.lld -shared %t.o -o %t --script %s 2>&1 | FileCheck -strict-whitespace %s
+
+SECTIONS {
+  .text + { *(.text) }
+  .keep : { *(.keep) } /*
+  comment line 1
+  comment line 2 */
+  .temp : { *(.temp) }
+}
+
+CHECK:      6: malformed number: +
+CHECK-NEXT: >>>   .text + { *(.text) }
+CHECK-NEXT: >>>         ^

Added: lld/trunk/test/ELF/linkerscript/diag2.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/diag2.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/diag2.test (added)
+++ lld/trunk/test/ELF/linkerscript/diag2.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,13 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux /dev/null -o %t.o
+# RUN: not ld.lld -shared %t.o -o %t --script %s 2>&1 | FileCheck -strict-whitespace %s
+
+UNKNOWN_TAG {
+  .text : { *(.text) }
+  .keep : { *(.keep) }
+  .temp : { *(.temp) }
+}
+
+CHECK:      5: unknown directive: UNKNOWN_TAG
+CHECK-NEXT: >>> UNKNOWN_TAG {
+CHECK-NEXT: >>> ^

Added: lld/trunk/test/ELF/linkerscript/diag3.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/diag3.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/diag3.test (added)
+++ lld/trunk/test/ELF/linkerscript/diag3.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,13 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux /dev/null -o %t.o
+# RUN: not ld.lld -shared %t.o -o %t --script %s 2>&1 | FileCheck -strict-whitespace %s
+
+SECTIONS {
+  .text : { *(.text) }
+  .keep : { *(.keep) }
+  boom .temp : { *(.temp) }
+}
+
+# CHECK:      8: malformed number: .temp
+# CHECK-NEXT: >>>   boom .temp : { *(.temp) }
+# CHECK-NEXT: >>>        ^

Added: lld/trunk/test/ELF/linkerscript/diag4.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/diag4.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/diag4.test (added)
+++ lld/trunk/test/ELF/linkerscript/diag4.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,14 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux /dev/null -o %t.o
+# RUN: echo "INCLUDE \"%s\"" > %t.script
+# RUN: not ld.lld -shared %t.o -o %t --script %t.script 2>&1 | FileCheck -strict-whitespace %s
+
+SECTIONS {
+  .text : { *(.text) }
+  .keep : { *(.keep) }
+  boom .temp : { *(.temp) }
+}
+
+# CHECK:      9: malformed number: .temp
+# CHECK-NEXT: >>>   boom .temp : { *(.temp) }
+# CHECK-NEXT: >>>        ^
\ No newline at end of file

Added: lld/trunk/test/ELF/linkerscript/diag5.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/diag5.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/diag5.test (added)
+++ lld/trunk/test/ELF/linkerscript/diag5.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,14 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux /dev/null -o %t.o
+# RUN: echo "INCLUDE \"%s\"" > %t.script
+# RUN: not ld.lld -shared %t.o -o %t --script %t.script 2>&1 | FileCheck -strict-whitespace %s
+
+SECTIONS {
+  .text : { *(.text) }
+  .keep : { *(.keep) }
+  boom .temp : { *(.temp) }
+}
+
+# CHECK:      9: malformed number: .temp
+# CHECK-NEXT: >>>   boom .temp : { *(.temp) }
+# CHECK-NEXT: >>>        ^

Added: lld/trunk/test/ELF/linkerscript/diag6.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/diag6.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/diag6.test (added)
+++ lld/trunk/test/ELF/linkerscript/diag6.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,7 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux /dev/null -o %t.o
+# RUN: not ld.lld -shared %t.o -o %t --script %s 2>&1 | FileCheck %s
+
+SECTIONS /*
+
+CHECK: error: unclosed comment in a linker script

Removed: lld/trunk/test/ELF/linkerscript/diagnostic.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/diagnostic.s?rev=326414&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/diagnostic.s (original)
+++ lld/trunk/test/ELF/linkerscript/diagnostic.s (removed)
@@ -1,106 +0,0 @@
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
-
-## Take some valid script with multiline comments
-## and check it actually works:
-# RUN: echo "SECTIONS {" > %t.script
-# RUN: echo ".text : { *(.text) }" >> %t.script
-# RUN: echo ".keep : { *(.keep) } /*" >> %t.script
-# RUN: echo "comment line 1" >> %t.script
-# RUN: echo "comment line 2 */" >> %t.script
-# RUN: echo ".temp : { *(.temp) } }" >> %t.script
-# RUN: ld.lld -shared %t -o %t1 --script %t.script
-
-## Change ":" to "+" at line 2, check that error
-## message starts from correct line number:
-# RUN: echo "SECTIONS {" > %t.script
-# RUN: echo ".text + { *(.text) }" >> %t.script
-# RUN: echo ".keep : { *(.keep) } /*" >> %t.script
-# RUN: echo "comment line 1" >> %t.script
-# RUN: echo "comment line 2 */" >> %t.script
-# RUN: echo ".temp : { *(.temp) } }" >> %t.script
-# RUN: not ld.lld -shared %t -o %t1 --script %t.script 2>&1 | FileCheck -check-prefix=ERR1 %s
-# ERR1: {{.*}}.script:2:
-
-## Change ":" to "+" at line 3 now, check correct error line number:
-# RUN: echo "SECTIONS {" > %t.script
-# RUN: echo ".text : { *(.text) }" >> %t.script
-# RUN: echo ".keep + { *(.keep) } /*" >> %t.script
-# RUN: echo "comment line 1" >> %t.script
-# RUN: echo "comment line 2 */" >> %t.script
-# RUN: echo ".temp : { *(.temp) } }" >> %t.script
-# RUN: not ld.lld -shared %t -o %t1 --script %t.script 2>&1 | FileCheck -check-prefix=ERR2 %s
-# ERR2: {{.*}}.script:3:
-
-## Change ":" to "+" at line 6, after multiline comment,
-## check correct error line number:
-# RUN: echo "SECTIONS {" > %t.script
-# RUN: echo ".text : { *(.text) }" >> %t.script
-# RUN: echo ".keep : { *(.keep) } /*" >> %t.script
-# RUN: echo "comment line 1" >> %t.script
-# RUN: echo "comment line 2 */" >> %t.script
-# RUN: echo ".temp + { *(.temp) } }" >> %t.script
-# RUN: not ld.lld -shared %t -o %t1 --script %t.script 2>&1 | FileCheck -check-prefix=ERR5 %s
-# ERR5: {{.*}}.script:6:
-
-## Check that text of lines and pointer to 'bad' token are working ok.
-# RUN: echo "UNKNOWN_TAG {" > %t.script
-# RUN: echo ".text : { *(.text) }" >> %t.script
-# RUN: echo ".keep : { *(.keep) }" >> %t.script
-# RUN: echo ".temp : { *(.temp) } }" >> %t.script
-# RUN: not ld.lld -shared %t -o %t1 --script %t.script 2>&1 | \
-# RUN:   FileCheck -check-prefix=ERR6 -strict-whitespace %s
-# ERR6:      error: {{.*}}.script:1: unknown directive: UNKNOWN_TAG
-# ERR6-NEXT: >>> UNKNOWN_TAG {
-# ERR6-NEXT: >>> ^
-
-## One more check that text of lines and pointer to 'bad' token are working ok.
-# RUN: echo "SECTIONS {" > %t.script
-# RUN: echo ".text : { *(.text) }" >> %t.script
-# RUN: echo ".keep : { *(.keep) }" >> %t.script
-# RUN: echo "boom .temp : { *(.temp) } }" >> %t.script
-# RUN: not ld.lld -shared %t -o %t1 --script %t.script 2>&1 | \
-# RUN:   FileCheck -check-prefix=ERR7 -strict-whitespace %s
-# ERR7:      error: {{.*}}.script:4: malformed number: .temp
-# ERR7-NEXT: >>> boom .temp : { *(.temp) } }
-# ERR7-NEXT: >>>      ^
-
-## Check tokenize() error
-# RUN: echo "SECTIONS {}" > %t.script
-# RUN: echo "\"" >> %t.script
-# RUN: not ld.lld -shared %t -o %t1 --script %t.script 2>&1 | \
-# RUN:   FileCheck -check-prefix=ERR8 -strict-whitespace %s
-# ERR8: {{.*}}.script:2: unclosed quote
-
-## Check tokenize() error in included script file
-# RUN: echo "SECTIONS {}" > %t.script.inc
-# RUN: echo "\"" >> %t.script.inc
-# RUN: echo "INCLUDE \"%t.script.inc\"" > %t.script
-# RUN: not ld.lld -shared %t -o %t1 --script %t.script 2>&1 | \
-# RUN:   FileCheck -check-prefix=ERR9 -strict-whitespace %s
-# ERR9: {{.*}}.script.inc:2: unclosed quote
-
-## Check error reporting correctness for included files.
-# RUN: echo "SECTIONS {" > %t.script.inc
-# RUN: echo ".text : { *(.text) }" >> %t.script.inc
-# RUN: echo ".keep : { *(.keep) }" >> %t.script.inc
-# RUN: echo "boom .temp : { *(.temp) } }" >> %t.script.inc
-# RUN: echo "INCLUDE \"%t.script.inc\"" > %t.script
-# RUN: not ld.lld -shared %t -o %t1 --script %t.script 2>&1 | \
-# RUN:   FileCheck -check-prefix=ERR10 -strict-whitespace %s
-# ERR10:      error: {{.*}}.script.inc:4: malformed number: .temp
-# ERR10-NEXT: >>> boom .temp : { *(.temp) } }
-# ERR10-NEXT: >>>      ^
-
-## Check error reporting in script with INCLUDE directive.
-# RUN: echo "SECTIONS {" > %t.script.inc
-# RUN: echo ".text : { *(.text) }" >> %t.script.inc
-# RUN: echo ".keep : { *(.keep) }" >> %t.script.inc
-# RUN: echo ".temp : { *(.temp) } }" >> %t.script.inc
-# RUN: echo "/* One line before INCLUDE */" > %t.script
-# RUN: echo "INCLUDE \"%t.script.inc\"" >> %t.script
-# RUN: echo "/* One line ater INCLUDE */" >> %t.script
-# RUN: echo "Error" >> %t.script
-# RUN: not ld.lld -shared %t -o %t1 --script %t.script 2>&1 | \
-# RUN:   FileCheck -check-prefix=ERR11 -strict-whitespace %s
-# ERR11: error: {{.*}}.script:4: unexpected EOF

Modified: lld/trunk/test/ELF/linkerscript/dot-is-not-abs.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/dot-is-not-abs.s?rev=326415&r1=326414&r2=326415&view=diff
==============================================================================
--- lld/trunk/test/ELF/linkerscript/dot-is-not-abs.s (original)
+++ lld/trunk/test/ELF/linkerscript/dot-is-not-abs.s Wed Feb 28 20:21:42 2018
@@ -1,9 +1,7 @@
 # REQUIRES: x86
 # RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
 
-# RUN: echo "SECTIONS { .text : { *(.text) } \
-# RUN:                  foo = .; \
-# RUN:                  .bar : { *(.bar) } }" > %t1.script
+# RUN: echo "SECTIONS { .text : { *(.text) } foo = .; .bar : { *(.bar) } }" > %t1.script
 # RUN: ld.lld -o %t1 --script %t1.script %t.o -shared
 # RUN: llvm-readobj -t -s -section-data %t1 | FileCheck %s
 

Modified: lld/trunk/test/ELF/linkerscript/eh-frame-hdr.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/eh-frame-hdr.s?rev=326415&r1=326414&r2=326415&view=diff
==============================================================================
--- lld/trunk/test/ELF/linkerscript/eh-frame-hdr.s (original)
+++ lld/trunk/test/ELF/linkerscript/eh-frame-hdr.s Wed Feb 28 20:21:42 2018
@@ -1,9 +1,6 @@
 # REQUIRES: x86
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
-# RUN: echo "SECTIONS { \
-# RUN:          .eh_frame_hdr : {} \
-# RUN:          .eh_frame : {} \
-# RUN:       }" > %t.script
+# RUN: echo "SECTIONS { .eh_frame_hdr : {} .eh_frame : {} }" > %t.script
 # RUN: ld.lld -o %t1 --eh-frame-hdr --script %t.script %t
 # RUN: llvm-objdump -s -section=".eh_frame_hdr" %t1 | FileCheck %s
 

Removed: lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.s?rev=326414&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.s (original)
+++ lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.s (removed)
@@ -1,27 +0,0 @@
-## Check that error is correctly reported when .eh_frame reloc
-## is out of range
-
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
-# RUN: echo "PHDRS { eh PT_LOAD; text PT_LOAD; }  \
-# RUN:       SECTIONS { . = 0x10000; \
-# RUN:         .eh_frame_hdr : { *(.eh_frame_hdr*) } : eh \
-# RUN:         .eh_frame : { *(.eh_frame) } : eh \
-# RUN:         . = 0xF00000000; \
-# RUN:         .text : { *(.text*) } : text \
-# RUN:       }" > %t.script
-# RUN: not ld.lld %t.o -T %t.script -o %t 2>&1 | FileCheck %s
-
-# CHECK: error: {{.*}}:(.eh_frame+0x20): relocation R_X86_64_PC32 out of range: 64424443872 is not in [-2147483648, 2147483647]
-
-	.text
-  .globl _start
-_start:
-	.cfi_startproc
-  .cfi_lsda 0, _ex
-  nop
-	.cfi_endproc
-
-  .data
-_ex:
-  .word 0

Added: lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.test (added)
+++ lld/trunk/test/ELF/linkerscript/eh-frame-reloc-out-of-range.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,13 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/eh-frame-reloc-out-of-range.s -o %t.o
+# RUN: not ld.lld %t.o -T %t.script -o %t 2>&1 | FileCheck %s
+
+PHDRS { eh PT_LOAD; text PT_LOAD; }
+SECTIONS { . = 0x10000;
+  .eh_frame_hdr : { *(.eh_frame_hdr*) } : eh
+  .eh_frame : { *(.eh_frame) } : eh
+  . = 0xF00000000;
+  .text : { *(.text*) } : text
+}
+
+# CHECK: error: {{.*}}:(.eh_frame+0x20): relocation R_X86_64_PC32 out of range: 64424443872 is not in [-2147483648, 2147483647]

Modified: lld/trunk/test/ELF/linkerscript/eh-frame.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/eh-frame.s?rev=326415&r1=326414&r2=326415&view=diff
==============================================================================
--- lld/trunk/test/ELF/linkerscript/eh-frame.s (original)
+++ lld/trunk/test/ELF/linkerscript/eh-frame.s Wed Feb 28 20:21:42 2018
@@ -1,8 +1,6 @@
 # REQUIRES: x86
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
-# RUN: echo "SECTIONS { \
-# RUN:          .eh_frame : { *(.eh_frame) } \
-# RUN:       }" > %t.script
+# RUN: echo "SECTIONS { .eh_frame : { *(.eh_frame) } }" > %t.script
 # RUN: ld.lld -o %t1 --script %t.script %t
 # RUN: llvm-objdump -s -section=".eh_frame" %t1 | FileCheck %s
 

Modified: lld/trunk/test/ELF/linkerscript/emit-reloc-section-names.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/emit-reloc-section-names.s?rev=326415&r1=326414&r2=326415&view=diff
==============================================================================
--- lld/trunk/test/ELF/linkerscript/emit-reloc-section-names.s (original)
+++ lld/trunk/test/ELF/linkerscript/emit-reloc-section-names.s Wed Feb 28 20:21:42 2018
@@ -1,7 +1,6 @@
 # REQUIRES: x86
 # RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
-# RUN: echo "SECTIONS { .text.zed : { *(.text.foo) } \
-# RUN:                  .text.qux : { *(.text.bar) } }" > %t.script
+# RUN: echo "SECTIONS { .text.zed : { *(.text.foo) } .text.qux : { *(.text.bar) } }" > %t.script
 # RUN: ld.lld -T %t.script --emit-relocs %t.o -o %t
 # RUN: llvm-objdump -section-headers %t | FileCheck %s
 

Modified: lld/trunk/test/ELF/linkerscript/empty-load.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/empty-load.s?rev=326415&r1=326414&r2=326415&view=diff
==============================================================================
--- lld/trunk/test/ELF/linkerscript/empty-load.s (original)
+++ lld/trunk/test/ELF/linkerscript/empty-load.s Wed Feb 28 20:21:42 2018
@@ -1,6 +1,6 @@
 # REQUIRES: x86
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
-# RUN: echo "SECTIONS { .rw : { *(.rw) } .text : { *(.text) }  }" > %t.script
+# RUN: echo "SECTIONS { .rw : { *(.rw) } .text : { *(.text) } }" > %t.script
 # RUN: ld.lld -o %t1 --script %t.script %t
 # RUN: llvm-objdump -private-headers %t1 | FileCheck %s
 

Modified: lld/trunk/test/ELF/linkerscript/empty-tls.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/empty-tls.s?rev=326415&r1=326414&r2=326415&view=diff
==============================================================================
--- lld/trunk/test/ELF/linkerscript/empty-tls.s (original)
+++ lld/trunk/test/ELF/linkerscript/empty-tls.s Wed Feb 28 20:21:42 2018
@@ -1,14 +1,14 @@
-// REQUIRES: x86
-// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
-// RUN: echo  "PHDRS { ph_tls PT_TLS; }" > %t.script
-// RUN: ld.lld -o %t.so -T %t.script %t.o -shared
-// RUN: llvm-readobj -l %t.so | FileCheck %s
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
+# RUN: echo  "PHDRS { ph_tls PT_TLS; }" > %t.script
+# RUN: ld.lld -o %t.so -T %t.script %t.o -shared
+# RUN: llvm-readobj -l %t.so | FileCheck %s
 
-// test that we don't crash with an empty PT_TLS
+# test that we don't crash with an empty PT_TLS
 
-// CHECK:      Type: PT_TLS
-// CHECK-NEXT: Offset: 0x0
-// CHECK-NEXT: VirtualAddress: 0x0
-// CHECK-NEXT: PhysicalAddress: 0x0
-// CHECK-NEXT: FileSize: 0
-// CHECK-NEXT: MemSize: 0
+# CHECK:      Type: PT_TLS
+# CHECK-NEXT: Offset: 0x0
+# CHECK-NEXT: VirtualAddress: 0x0
+# CHECK-NEXT: PhysicalAddress: 0x0
+# CHECK-NEXT: FileSize: 0
+# CHECK-NEXT: MemSize: 0

Removed: lld/trunk/test/ELF/linkerscript/expr-sections.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/expr-sections.s?rev=326414&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/expr-sections.s (original)
+++ lld/trunk/test/ELF/linkerscript/expr-sections.s (removed)
@@ -1,22 +0,0 @@
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
-# RUN: echo "SECTIONS { \
-# RUN:        . = . + 4; \
-# RUN:        .text : { \
-# RUN:          *(.text) \
-# RUN:          foo1 = ADDR(.text) + 1; bar1 = 1 + ADDR(.text); \
-# RUN:          foo2 = ADDR(.text) & 1; bar2 = 1 & ADDR(.text); \
-# RUN:          foo3 = ADDR(.text) | 1; bar3 = 1 | ADDR(.text); \
-# RUN:        } \
-# RUN: };" > %t.script
-# RUN: ld.lld -o %t.so --script %t.script %t.o -shared
-# RUN: llvm-objdump -t -h %t.so | FileCheck %s
-
-# CHECK:  1 .text         00000000 0000000000000004 TEXT DATA
-
-# CHECK: 0000000000000005         .text		 00000000 foo1
-# CHECK: 0000000000000005         .text		 00000000 bar1
-# CHECK: 0000000000000000         .text		 00000000 foo2
-# CHECK: 0000000000000000         .text		 00000000 bar2
-# CHECK: 0000000000000005         .text		 00000000 foo3
-# CHECK: 0000000000000005         .text		 00000000 bar3

Added: lld/trunk/test/ELF/linkerscript/expr-sections.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/expr-sections.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/expr-sections.test (added)
+++ lld/trunk/test/ELF/linkerscript/expr-sections.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,23 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux /dev/null -o %t.o
+# RUN: ld.lld -o %t.so --script %s %t.o -shared
+# RUN: llvm-objdump -t -h %t.so | FileCheck %s
+
+SECTIONS {
+  . = . + 4;
+  .text : {
+    *(.text)
+    foo1 = ADDR(.text) + 1; bar1 = 1 + ADDR(.text);
+    foo2 = ADDR(.text) & 1; bar2 = 1 & ADDR(.text);
+    foo3 = ADDR(.text) | 1; bar3 = 1 | ADDR(.text);
+  }
+};
+
+# CHECK:  1 .text         00000000 0000000000000004 TEXT DATA
+
+# CHECK: 0000000000000005         .text		 00000000 foo1
+# CHECK: 0000000000000005         .text		 00000000 bar1
+# CHECK: 0000000000000000         .text		 00000000 foo2
+# CHECK: 0000000000000000         .text		 00000000 bar2
+# CHECK: 0000000000000005         .text		 00000000 foo3
+# CHECK: 0000000000000005         .text		 00000000 bar3

Removed: lld/trunk/test/ELF/linkerscript/extend-pt-load.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/extend-pt-load.s?rev=326414&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/extend-pt-load.s (original)
+++ lld/trunk/test/ELF/linkerscript/extend-pt-load.s (removed)
@@ -1,68 +0,0 @@
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
-
-# This test demonstrates an odd consequence of the way we handle sections with just symbol
-# assignments.
-
-# First, run a test with no such section.
-
-# RUN: echo "SECTIONS { \
-# RUN:  . = SIZEOF_HEADERS; \
-# RUN:	.dynsym : {  } \
-# RUN:	.hash : {  } \
-# RUN:	.dynstr : {  } \
-# RUN:  .text : { *(.text) } \
-# RUN:  . = ALIGN(0x1000); \
-# RUN:  .data.rel.ro : { *(.data.rel.ro) } \
-# RUN: }" > %t.script
-# RUN: ld.lld --hash-style=sysv -o %t1 --script %t.script %t.o -shared
-# RUN: llvm-readobj --elf-output-style=GNU -l -s %t1 | FileCheck --check-prefix=CHECK1 %s
-
-# CHECK1:      .text        PROGBITS 00000000000001bc 0001bc 000001 00 AX
-# CHECK1-NEXT: .data.rel.ro PROGBITS 0000000000001000 001000 000001 00 WA
-
-# CHECK1:      LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x0001bd 0x0001bd R E
-# CHECK1-NEXT: LOAD 0x001000 0x0000000000001000 0x0000000000001000 0x000068 0x000068 RW
-
-# Then add the section bar. Note how bar is given AX flags, which causes the PT_LOAD to now
-# cover the padding bits created by ALIGN.
-
-# RUN: echo "SECTIONS { \
-# RUN:  . = SIZEOF_HEADERS; \
-# RUN:	.dynsym : {  } \
-# RUN:	.hash : {  } \
-# RUN:	.dynstr : {  } \
-# RUN:  .text : { *(.text) } \
-# RUN:  bar : { . = ALIGN(0x1000); } \
-# RUN:  .data.rel.ro : { *(.data.rel.ro) } \
-# RUN: }" > %t.script
-# RUN: ld.lld --hash-style=sysv -o %t2 --script %t.script %t.o -shared
-# RUN: llvm-readobj --elf-output-style=GNU -l -s %t2 | FileCheck --check-prefix=CHECK2 %s
-
-# CHECK2:      .text        PROGBITS 00000000000001bc 0001bc 000001 00 AX
-# CHECK2-NEXT: bar          NOBITS   00000000000001bd 0001bd 000e43 00 AX
-# CHECK2-NEXT: .data.rel.ro PROGBITS 0000000000001000 001000 000001 00 WA
-
-# CHECK2:      LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x0001bd 0x001000 R E
-# CHECK2-NEXT: LOAD 0x001000 0x0000000000001000 0x0000000000001000 0x000068 0x000068 RW
-
-# If the current behavior becomes a problem we should consider just moving the commands out
-# of the section. That is, handle the above like the following test.
-
-# RUN: echo "SECTIONS { \
-# RUN:  . = SIZEOF_HEADERS; \
-# RUN:	.dynsym : {  } \
-# RUN:	.hash : {  } \
-# RUN:	.dynstr : {  } \
-# RUN:  .text : { *(.text) } \
-# RUN:  . = ALIGN(0x1000); \
-# RUN:  HIDDEN(bar_sym = .); \
-# RUN:  .data.rel.ro : { *(.data.rel.ro) } \
-# RUN: }" > %t.script
-# RUN: ld.lld --hash-style=sysv -o %t3 --script %t.script %t.o -shared
-# RUN: llvm-readobj --elf-output-style=GNU -l -s %t3 | FileCheck --check-prefix=CHECK1 %s
-
-nop
-
-.section .data.rel.ro, "aw"
-.byte 0

Added: lld/trunk/test/ELF/linkerscript/extend-pt-load1.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/extend-pt-load1.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/extend-pt-load1.test (added)
+++ lld/trunk/test/ELF/linkerscript/extend-pt-load1.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,23 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/extend-pt-load.s -o %t.o
+# RUN: ld.lld --hash-style=sysv -o %t1 --script %s %t.o -shared
+# RUN: llvm-readobj --elf-output-style=GNU -l -s %t1 | FileCheck %s
+
+# This test demonstrates an odd consequence of the way we handle sections with just symbol
+# assignments.
+
+SECTIONS {
+  . = SIZEOF_HEADERS;
+  .dynsym : {}
+  .hash : {}
+  .dynstr : {}
+  .text : { *(.text) }
+  . = ALIGN(0x1000);
+  .data.rel.ro : { *(.data.rel.ro) }
+}
+
+# CHECK:      .text        PROGBITS 00000000000001bc 0001bc 000001 00 AX
+# CHECK-NEXT: .data.rel.ro PROGBITS 0000000000001000 001000 000001 00 WA
+
+# CHECK:      LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x0001bd 0x0001bd R E
+# CHECK-NEXT: LOAD 0x001000 0x0000000000001000 0x0000000000001000 0x000068 0x000068 RW

Added: lld/trunk/test/ELF/linkerscript/extend-pt-load2.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/extend-pt-load2.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/extend-pt-load2.test (added)
+++ lld/trunk/test/ELF/linkerscript/extend-pt-load2.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,24 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/extend-pt-load.s -o %t.o
+# RUN: ld.lld --hash-style=sysv -o %t2 --script %s %t.o -shared
+# RUN: llvm-readobj --elf-output-style=GNU -l -s %t2 | FileCheck %s
+
+# Then add the section bar. Note how bar is given AX flags, which causes the PT_LOAD to now
+# cover the padding bits created by ALIGN.
+
+SECTIONS {
+  . = SIZEOF_HEADERS;
+  .dynsym : {}
+  .hash : {}
+  .dynstr : {}
+  .text : { *(.text) }
+  bar : { . = ALIGN(0x1000); }
+  .data.rel.ro : { *(.data.rel.ro) }
+}
+
+# CHECK:      .text        PROGBITS 00000000000001bc 0001bc 000001 00 AX
+# CHECK-NEXT: bar          NOBITS   00000000000001bd 0001bd 000e43 00 AX
+# CHECK-NEXT: .data.rel.ro PROGBITS 0000000000001000 001000 000001 00 WA
+
+# CHECK:      LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x0001bd 0x001000 R E
+# CHECK-NEXT: LOAD 0x001000 0x0000000000001000 0x0000000000001000 0x000068 0x000068 RW

Added: lld/trunk/test/ELF/linkerscript/extend-pt-load3.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/extend-pt-load3.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/extend-pt-load3.test (added)
+++ lld/trunk/test/ELF/linkerscript/extend-pt-load3.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,24 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/extend-pt-load.s -o %t.o
+# RUN: ld.lld --hash-style=sysv -o %t3 --script %s %t.o -shared
+# RUN: llvm-readobj --elf-output-style=GNU -l -s %t3 | FileCheck --check-prefix=CHECK %s
+
+# If the current behavior becomes a problem we should consider just moving the commands out
+# of the section. That is, handle the above like the following test.
+
+SECTIONS {
+  . = SIZEOF_HEADERS;
+  .dynsym : {}
+  .hash : {}
+  .dynstr : {}
+  .text : { *(.text) }
+  . = ALIGN(0x1000);
+  HIDDEN(bar_sym = .);
+  .data.rel.ro : { *(.data.rel.ro) }
+}
+
+# CHECK:      .text        PROGBITS 00000000000001bc 0001bc 000001 00 AX
+# CHECK-NEXT: .data.rel.ro PROGBITS 0000000000001000 001000 000001 00 WA
+
+# CHECK:      LOAD 0x000000 0x0000000000000000 0x0000000000000000 0x0001bd 0x0001bd R E
+# CHECK-NEXT: LOAD 0x001000 0x0000000000001000 0x0000000000001000 0x000068 0x000068 RW
\ No newline at end of file

Modified: lld/trunk/test/ELF/linkerscript/filename-spec.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/filename-spec.s?rev=326415&r1=326414&r2=326415&view=diff
==============================================================================
--- lld/trunk/test/ELF/linkerscript/filename-spec.s (original)
+++ lld/trunk/test/ELF/linkerscript/filename-spec.s Wed Feb 28 20:21:42 2018
@@ -1,55 +1,43 @@
 # REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %tfirst.o
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %tx.o
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux \
-# RUN:   %p/Inputs/filename-spec.s -o %tsecond.o
+# RUN:   %p/Inputs/filename-spec.s -o %ty.o
 
-# RUN: echo "SECTIONS { .foo : { \
-# RUN:   KEEP(*first.o(.foo)) \
-# RUN:   KEEP(*second.o(.foo)) } }" > %t1.script
-# RUN: ld.lld -o %t1 --script %t1.script %tfirst.o %tsecond.o
-# RUN: llvm-objdump -s %t1 | FileCheck --check-prefix=FIRSTSECOND %s
-# FIRSTSECOND:      Contents of section .foo:
-# FIRSTSECOND-NEXT:   01000000 00000000 11000000 00000000
-
-# RUN: echo "SECTIONS { .foo : { \
-# RUN:   KEEP(*second.o(.foo)) \
-# RUN:   KEEP(*first.o(.foo)) } }" > %t2.script
-# RUN: ld.lld -o %t2 --script %t2.script %tfirst.o %tsecond.o
+# RUN: echo "SECTIONS{.foo :{ KEEP(*x.o(.foo)) KEEP(*y.o(.foo)) }}" > %t1.script
+# RUN: ld.lld -o %t1 --script %t1.script %tx.o %ty.o
+# RUN: llvm-objdump -s %t1 | FileCheck --check-prefix=FIRSTY %s
+# FIRSTY:      Contents of section .foo:
+# FIRSTY-NEXT:   01000000 00000000 11000000 00000000
+
+# RUN: echo "SECTIONS{.foo :{ KEEP(*y.o(.foo)) KEEP(*x.o(.foo)) }}" > %t2.script
+# RUN: ld.lld -o %t2 --script %t2.script %tx.o %ty.o
 # RUN: llvm-objdump -s %t2 | FileCheck --check-prefix=SECONDFIRST %s
 # SECONDFIRST:      Contents of section .foo:
 # SECONDFIRST-NEXT:   11000000 00000000 01000000 00000000
 
 ## Now the same tests but without KEEP. Checking that file name inside
 ## KEEP is parsed fine.
-# RUN: echo "SECTIONS { .foo : { \
-# RUN:   *first.o(.foo) \
-# RUN:   *second.o(.foo) } }" > %t3.script
-# RUN: ld.lld -o %t3 --script %t3.script %tfirst.o %tsecond.o
-# RUN: llvm-objdump -s %t3 | FileCheck --check-prefix=FIRSTSECOND %s
-
-# RUN: echo "SECTIONS { .foo : { \
-# RUN:   *second.o(.foo) \
-# RUN:   *first.o(.foo) } }" > %t4.script
-# RUN: ld.lld -o %t4 --script %t4.script %tfirst.o %tsecond.o
+# RUN: echo "SECTIONS{.foo :{ *x.o(.foo) *y.o(.foo) }}" > %t3.script
+# RUN: ld.lld -o %t3 --script %t3.script %tx.o %ty.o
+# RUN: llvm-objdump -s %t3 | FileCheck --check-prefix=FIRSTY %s
+
+# RUN: echo "SECTIONS{.foo :{ *y.o(.foo) *x.o(.foo) }}" > %t4.script
+# RUN: ld.lld -o %t4 --script %t4.script %tx.o %ty.o
 # RUN: llvm-objdump -s %t4 | FileCheck --check-prefix=SECONDFIRST %s
 
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %T/filename-spec1.o
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux \
 # RUN:   %p/Inputs/filename-spec.s -o %T/filename-spec2.o
 
-# RUN: echo "SECTIONS { .foo : { \
-# RUN:   %T/filename-spec2.o(.foo) \
-# RUN:   %T/filename-spec1.o(.foo) } }" > %t5.script
+# RUN: echo "SECTIONS{.foo :{ %T/filename-spec2.o(.foo) %T/filename-spec1.o(.foo) }}" > %t5.script
 # RUN: ld.lld -o %t5 --script %t5.script \
 # RUN:   %T/filename-spec1.o %T/filename-spec2.o
 # RUN: llvm-objdump -s %t5 | FileCheck --check-prefix=SECONDFIRST %s
 
-# RUN: echo "SECTIONS { .foo : { \
-# RUN:   %T/filename-spec1.o(.foo) \
-# RUN:   %T/filename-spec2.o(.foo) } }" > %t6.script
+# RUN: echo "SECTIONS{.foo :{ %T/filename-spec1.o(.foo) %T/filename-spec2.o(.foo) }}" > %t6.script
 # RUN: ld.lld -o %t6 --script %t6.script \
 # RUN:   %T/filename-spec1.o %T/filename-spec2.o
-# RUN: llvm-objdump -s %t6 | FileCheck --check-prefix=FIRSTSECOND %s
+# RUN: llvm-objdump -s %t6 | FileCheck --check-prefix=FIRSTY %s
 
 # RUN: mkdir -p %t.testdir1 %t.testdir2
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.testdir1/filename-spec1.o
@@ -59,33 +47,25 @@
 # RUN: llvm-ar rsc %t.testdir2/lib2.a %t.testdir2/filename-spec2.o
 
 # Verify matching of archive library names.
-# RUN: echo "SECTIONS { .foo : { \
-# RUN:   *lib2*(.foo) \
-# RUN:   *lib1*(.foo) } }" > %t7.script
+# RUN: echo "SECTIONS{.foo :{ *lib2*(.foo) *lib1*(.foo) }}" > %t7.script
 # RUN: ld.lld -o %t7 --script %t7.script --whole-archive \
 # RUN:   %t.testdir1/lib1.a %t.testdir2/lib2.a
 # RUN: llvm-objdump -s %t7 | FileCheck --check-prefix=SECONDFIRST %s
 
 # Verify matching directories.
-# RUN: echo "SECTIONS { .foo : { \
-# RUN:   *testdir2*(.foo) \
-# RUN:   *testdir1*(.foo) } }" > %t8.script
+# RUN: echo "SECTIONS{.foo :{  *testdir2*(.foo) *testdir1*(.foo) }}" > %t8.script
 # RUN: ld.lld -o %t8 --script %t8.script --whole-archive \
 # RUN:   %t.testdir1/lib1.a %t.testdir2/lib2.a
 # RUN: llvm-objdump -s %t8 | FileCheck --check-prefix=SECONDFIRST %s
 
 # Verify matching of archive library names in KEEP.
-# RUN: echo "SECTIONS { .foo : { \
-# RUN:   KEEP(*lib2*(.foo)) \
-# RUN:   KEEP(*lib1*(.foo)) } }" > %t9.script
+# RUN: echo "SECTIONS{.foo :{ KEEP(*lib2*(.foo)) KEEP(*lib1*(.foo)) }}" > %t9.script
 # RUN: ld.lld -o %t9 --script %t9.script --whole-archive \
 # RUN:   %t.testdir1/lib1.a %t.testdir2/lib2.a
 # RUN: llvm-objdump -s %t9 | FileCheck --check-prefix=SECONDFIRST %s
 
 # Verify matching directories in KEEP.
-# RUN: echo "SECTIONS { .foo : { \
-# RUN:   KEEP(*testdir2*(.foo)) \
-# RUN:   KEEP(*testdir1*(.foo)) } }" > %t10.script
+# RUN: echo "SECTIONS{.foo :{ KEEP(*testdir2*(.foo)) KEEP(*testdir1*(.foo)) }}" > %t10.script
 # RUN: ld.lld -o %t10 --script %t10.script --whole-archive \
 # RUN:   %t.testdir1/lib1.a %t.testdir2/lib2.a
 # RUN: llvm-objdump -s %t10 | FileCheck --check-prefix=SECONDFIRST %s

Removed: lld/trunk/test/ELF/linkerscript/fill.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/fill.s?rev=326414&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/fill.s (original)
+++ lld/trunk/test/ELF/linkerscript/fill.s (removed)
@@ -1,31 +0,0 @@
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
-# RUN: echo "SECTIONS {     \
-# RUN:  .out : {            \
-# RUN:   FILL(0x11111111)   \
-# RUN:   . += 2;            \
-# RUN:   *(.aaa)            \
-# RUN:   . += 4;            \
-# RUN:   *(.bbb)            \
-# RUN:   . += 4;            \
-# RUN:   FILL(0x22222222);  \
-# RUN:   . += 4;            \
-# RUN:  }                   \
-# RUN: }; " > %t.script
-# RUN: ld.lld -o %t --script %t.script %t.o
-# RUN: llvm-objdump -s %t | FileCheck %s
-
-# CHECK:      Contents of section .out:
-# CHECK-NEXT: 2222aa22 222222bb 22222222 22222222
-
-.text
-.globl _start
-_start:
-
-.section .aaa, "a"
-.align 1
-.byte 0xAA
-
-.section .bbb, "a"
-.align 1
-.byte 0xBB

Added: lld/trunk/test/ELF/linkerscript/fill.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/fill.test?rev=326415&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/fill.test (added)
+++ lld/trunk/test/ELF/linkerscript/fill.test Wed Feb 28 20:21:42 2018
@@ -0,0 +1,20 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/fill.s -o %t.o
+# RUN: ld.lld -o %t --script %s %t.o
+# RUN: llvm-objdump -s %t | FileCheck %s
+
+SECTIONS {
+  .out : {
+   FILL(0x11111111)
+   . += 2;
+   *(.aaa)
+   . += 4;
+   *(.bbb)
+   . += 4;
+   FILL(0x22222222);
+   . += 4;
+  }
+}
+
+# CHECK:      Contents of section .out:
+# CHECK-NEXT: 2222aa22 222222bb 22222222 22222222




More information about the llvm-commits mailing list