[lld] r326363 - Write some tests as linker scripts instead of assembly files.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 28 12:22:42 PST 2018


Author: ruiu
Date: Wed Feb 28 12:22:42 2018
New Revision: 326363

URL: http://llvm.org/viewvc/llvm-project?rev=326363&view=rev
Log:
Write some tests as linker scripts instead of assembly files.

Some linker script test cases contain only a few lines of assembly
and a long linker script. Such tests are easier to maintain if we
write the main test file as a linkier script instead of assembly.

Differential Revision: https://reviews.llvm.org/D43887

Added:
    lld/trunk/test/ELF/linkerscript/absolute-expr.test
    lld/trunk/test/ELF/linkerscript/align-empty.test
    lld/trunk/test/ELF/linkerscript/discard-interp.test
    lld/trunk/test/ELF/linkerscript/operators.test
Removed:
    lld/trunk/test/ELF/linkerscript/absolute-expr.s
    lld/trunk/test/ELF/linkerscript/align-empty.s
    lld/trunk/test/ELF/linkerscript/discard-interp.s
    lld/trunk/test/ELF/linkerscript/operators.s

Removed: lld/trunk/test/ELF/linkerscript/absolute-expr.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/absolute-expr.s?rev=326362&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/absolute-expr.s (original)
+++ lld/trunk/test/ELF/linkerscript/absolute-expr.s (removed)
@@ -1,82 +0,0 @@
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
-# RUN: echo "SECTIONS { \
-# RUN:                  .text : { \
-# RUN:                    bar1 = ALIGNOF(.text); \
-# RUN:                    bar2 = CONSTANT (MAXPAGESIZE); \
-# RUN:                    bar3 = SIZEOF (.text); \
-# RUN:                    bar4 = SIZEOF_HEADERS; \
-# RUN:                    bar5 = 0x42; \
-# RUN:                    bar6 = foo + 1; \
-# RUN:                    *(.text) \
-# RUN:                  } \
-# RUN:                };" > %t.script
-# RUN: ld.lld -o %t.so --script %t.script %t.o -shared
-# RUN: llvm-readobj -t %t.so | FileCheck %s
-
-.global foo
-foo = 0x123
-
-# CHECK:      Symbol {
-# CHECK:        Name: foo
-# CHECK-NEXT:   Value: 0x123
-# CHECK-NEXT:   Size: 0
-# CHECK-NEXT:   Binding: Global
-# CHECK-NEXT:   Type: None
-# CHECK-NEXT:   Other: 0
-# CHECK-NEXT:   Section: Absolute (0xFFF1)
-# CHECK-NEXT: }
-# CHECK-NEXT: Symbol {
-# CHECK-NEXT:   Name: bar1
-# CHECK-NEXT:   Value: 0x4
-# CHECK-NEXT:   Size: 0
-# CHECK-NEXT:   Binding: Global
-# CHECK-NEXT:   Type: None
-# CHECK-NEXT:   Other: 0
-# CHECK-NEXT:   Section: Absolute
-# CHECK-NEXT: }
-# CHECK-NEXT: Symbol {
-# CHECK-NEXT:   Name: bar2
-# CHECK-NEXT:   Value: 0x1000
-# CHECK-NEXT:   Size: 0
-# CHECK-NEXT:   Binding: Global
-# CHECK-NEXT:   Type: None
-# CHECK-NEXT:   Other: 0
-# CHECK-NEXT:   Section: Absolute
-# CHECK-NEXT: }
-# CHECK-NEXT: Symbol {
-# CHECK-NEXT:   Name: bar3
-# CHECK-NEXT:   Value: 0x0
-# CHECK-NEXT:   Size: 0
-# CHECK-NEXT:   Binding: Global
-# CHECK-NEXT:   Type: None
-# CHECK-NEXT:   Other: 0
-# CHECK-NEXT:   Section: Absolute
-# CHECK-NEXT: }
-# CHECK-NEXT: Symbol {
-# CHECK-NEXT:   Name: bar4
-# CHECK-NEXT:   Value: 0x190
-# CHECK-NEXT:   Size: 0
-# CHECK-NEXT:   Binding: Global
-# CHECK-NEXT:   Type: None
-# CHECK-NEXT:   Other: 0
-# CHECK-NEXT:   Section: Absolute
-# CHECK-NEXT: }
-# CHECK-NEXT: Symbol {
-# CHECK-NEXT:   Name: bar5
-# CHECK-NEXT:   Value: 0x42
-# CHECK-NEXT:   Size: 0
-# CHECK-NEXT:   Binding: Global
-# CHECK-NEXT:   Type: None
-# CHECK-NEXT:   Other: 0
-# CHECK-NEXT:   Section: Absolute
-# CHECK-NEXT: }
-# CHECK-NEXT: Symbol {
-# CHECK-NEXT:   Name: bar6
-# CHECK-NEXT:   Value: 0x124
-# CHECK-NEXT:   Size: 0
-# CHECK-NEXT:   Binding: Global (0x1)
-# CHECK-NEXT:   Type: None (0x0)
-# CHECK-NEXT:   Other: 0
-# CHECK-NEXT:   Section: Absolute (0xFFF1)
-# CHECK-NEXT: }

Added: lld/trunk/test/ELF/linkerscript/absolute-expr.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/absolute-expr.test?rev=326363&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/absolute-expr.test (added)
+++ lld/trunk/test/ELF/linkerscript/absolute-expr.test Wed Feb 28 12:22:42 2018
@@ -0,0 +1,80 @@
+# REQUIRES: x86
+# RUN: echo ".global foo; foo = 0x123" | llvm-mc -filetype=obj -triple=x86_64-pc-linux - -o %t.o
+# RUN: ld.lld -o %t.so --script %s %t.o -shared
+# RUN: llvm-readobj -t %t.so | FileCheck %s
+
+SECTIONS {
+  .text : {
+    bar1 = ALIGNOF(.text);
+    bar2 = CONSTANT (MAXPAGESIZE);
+    bar3 = SIZEOF (.text);
+    bar4 = SIZEOF_HEADERS;
+    bar5 = 0x42;
+    bar6 = foo + 1;
+    *(.text)
+  }
+}
+
+# CHECK:      Symbol {
+# CHECK:        Name: foo
+# CHECK-NEXT:   Value: 0x123
+# CHECK-NEXT:   Size: 0
+# CHECK-NEXT:   Binding: Global
+# CHECK-NEXT:   Type: None
+# CHECK-NEXT:   Other: 0
+# CHECK-NEXT:   Section: Absolute (0xFFF1)
+# CHECK-NEXT: }
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT:   Name: bar1
+# CHECK-NEXT:   Value: 0x4
+# CHECK-NEXT:   Size: 0
+# CHECK-NEXT:   Binding: Global
+# CHECK-NEXT:   Type: None
+# CHECK-NEXT:   Other: 0
+# CHECK-NEXT:   Section: Absolute
+# CHECK-NEXT: }
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT:   Name: bar2
+# CHECK-NEXT:   Value: 0x1000
+# CHECK-NEXT:   Size: 0
+# CHECK-NEXT:   Binding: Global
+# CHECK-NEXT:   Type: None
+# CHECK-NEXT:   Other: 0
+# CHECK-NEXT:   Section: Absolute
+# CHECK-NEXT: }
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT:   Name: bar3
+# CHECK-NEXT:   Value: 0x0
+# CHECK-NEXT:   Size: 0
+# CHECK-NEXT:   Binding: Global
+# CHECK-NEXT:   Type: None
+# CHECK-NEXT:   Other: 0
+# CHECK-NEXT:   Section: Absolute
+# CHECK-NEXT: }
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT:   Name: bar4
+# CHECK-NEXT:   Value: 0x190
+# CHECK-NEXT:   Size: 0
+# CHECK-NEXT:   Binding: Global
+# CHECK-NEXT:   Type: None
+# CHECK-NEXT:   Other: 0
+# CHECK-NEXT:   Section: Absolute
+# CHECK-NEXT: }
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT:   Name: bar5
+# CHECK-NEXT:   Value: 0x42
+# CHECK-NEXT:   Size: 0
+# CHECK-NEXT:   Binding: Global
+# CHECK-NEXT:   Type: None
+# CHECK-NEXT:   Other: 0
+# CHECK-NEXT:   Section: Absolute
+# CHECK-NEXT: }
+# CHECK-NEXT: Symbol {
+# CHECK-NEXT:   Name: bar6
+# CHECK-NEXT:   Value: 0x124
+# CHECK-NEXT:   Size: 0
+# CHECK-NEXT:   Binding: Global (0x1)
+# CHECK-NEXT:   Type: None (0x0)
+# CHECK-NEXT:   Other: 0
+# CHECK-NEXT:   Section: Absolute (0xFFF1)
+# CHECK-NEXT: }

Removed: lld/trunk/test/ELF/linkerscript/align-empty.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/align-empty.s?rev=326362&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/align-empty.s (original)
+++ lld/trunk/test/ELF/linkerscript/align-empty.s (removed)
@@ -1,18 +0,0 @@
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
-
-# RUN: echo "SECTIONS { \
-# RUN:  . = SIZEOF_HEADERS; \
-# RUN:  abc : { } \
-# RUN:  . = ALIGN(0x1000); \
-# RUN:  foo : { *(foo) } \
-# RUN: }" > %t.script
-# RUN: ld.lld -o %t1 --script %t.script %t -shared
-# RUN: llvm-objdump -section-headers %t1 | FileCheck %s
-# CHECK:      Sections:
-# CHECK-NEXT: Idx Name          Size      Address
-# CHECK-NEXT:   0               00000000 0000000000000000
-# CHECK-NEXT:   1 foo           00000001 0000000000001000
-
-        .section foo, "a"
-        .byte 0

Added: lld/trunk/test/ELF/linkerscript/align-empty.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/align-empty.test?rev=326363&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/align-empty.test (added)
+++ lld/trunk/test/ELF/linkerscript/align-empty.test Wed Feb 28 12:22:42 2018
@@ -0,0 +1,18 @@
+# REQUIRES: x86
+# RUN: echo '.section foo, "a"; .byte 0' \
+# RUN:   | llvm-mc -filetype=obj -triple=x86_64-unknown-linux - -o %t.o
+
+# RUN: ld.lld -o %t1 --script %s %t.o -shared
+# RUN: llvm-objdump -section-headers %t1 | FileCheck %s
+
+SECTIONS {
+  . = SIZEOF_HEADERS;
+  abc : {}
+  . = ALIGN(0x1000);
+  foo : { *(foo) }
+}
+
+# CHECK:      Sections:
+# CHECK-NEXT: Idx Name          Size      Address
+# CHECK-NEXT:   0               00000000 0000000000000000
+# CHECK-NEXT:   1 foo           00000001 0000000000001000

Removed: lld/trunk/test/ELF/linkerscript/discard-interp.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/discard-interp.s?rev=326362&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/discard-interp.s (original)
+++ lld/trunk/test/ELF/linkerscript/discard-interp.s (removed)
@@ -1,12 +0,0 @@
-// RUN: llvm-mc -filetype=obj -triple=i686-unknown-linux %s -o %t.o
-// RUN: llvm-mc -filetype=obj -triple=i686-unknown-linux %p/../Inputs/shared.s -o %t2.o
-// RUN: ld.lld -shared %t2.o -o %t2.so
-// RUN: echo "PHDRS { text PT_LOAD FILEHDR PHDRS; } \
-// RUN:       SECTIONS { . = SIZEOF_HEADERS; .text : { *(.text) } : text }" > %t.script
-// RUN: ld.lld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -rpath foo -rpath bar --script %t.script --export-dynamic %t.o %t2.so -o %t
-// RUN: llvm-readobj -s %t | FileCheck %s
-
-// CHECK-NOT:        Name: .interp
-
-.global _start
-_start:

Added: lld/trunk/test/ELF/linkerscript/discard-interp.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/discard-interp.test?rev=326363&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/discard-interp.test (added)
+++ lld/trunk/test/ELF/linkerscript/discard-interp.test Wed Feb 28 12:22:42 2018
@@ -0,0 +1,13 @@
+# RUN: llvm-mc -filetype=obj -triple=i686-unknown-linux /dev/null -o %t.o
+# RUN: llvm-mc -filetype=obj -triple=i686-unknown-linux %p/../Inputs/shared.s -o %t2.o
+# RUN: ld.lld -shared %t2.o -o %t2.so
+# RUN: ld.lld -dynamic-linker foo -rpath bar -rpath baz --script %s --export-dynamic %t.o %t2.so -o %t
+# RUN: llvm-readobj -s %t | FileCheck %s
+
+# CHECK-NOT:        Name: .interp
+
+PHDRS { text PT_LOAD FILEHDR PHDRS; }
+SECTIONS {
+  . = SIZEOF_HEADERS;
+  .text : { *(.text) } : text
+}

Removed: lld/trunk/test/ELF/linkerscript/operators.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/operators.s?rev=326362&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/operators.s (original)
+++ lld/trunk/test/ELF/linkerscript/operators.s (removed)
@@ -1,103 +0,0 @@
-# REQUIRES: x86
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
-# RUN: echo "SECTIONS { \
-# RUN:  _start = .; \
-# RUN:  plus = 1 + 2 + 3; \
-# RUN:  minus = 5 - 1; \
-# RUN:  div = 6 / 2; \
-# RUN:  mod = 20 % 7; \
-# RUN:  mul = 1 + 2 * 3; \
-# RUN:  nospace = 1+2*6/3; \
-# RUN:  braces = 1 + (2 + 3) * 4; \
-# RUN:  and = 0xbb & 0xee; \
-# RUN:  ternary1 = 1 ? 1 : 2; \
-# RUN:  ternary2 = 0 ? 1 : 2; \
-# RUN:  less = 1 < 0 ? 1 : 2; \
-# RUN:  lesseq = 1 <= 1 ? 1 : 2; \
-# RUN:  greater = 0 > 1 ? 1 : 2; \
-# RUN:  greatereq = 1 >= 1 ? 1 : 2; \
-# RUN:  eq = 1 == 1 ? 1 : 2; \
-# RUN:  neq = 1 != 1 ? 1 : 2; \
-# RUN:  plusassign = 1; \
-# RUN:  plusassign += 2; \
-# RUN:  unary = -1 + 3; \
-# RUN:  lshift = 1 << 5; \
-# RUN:  rshift = 0xff >> 3; \
-# RUN:  maxpagesize = CONSTANT (MAXPAGESIZE); \
-# RUN:  commonpagesize = CONSTANT (COMMONPAGESIZE); \
-# RUN:  . = 0xfff0; \
-# RUN:  datasegmentalign = DATA_SEGMENT_ALIGN (0xffff, 0); \
-# RUN:  datasegmentalign2 = DATA_SEGMENT_ALIGN (0, 0); \
-# RUN:  _end = .; \
-# RUN:  minus_rel = _end - 0x10; \
-# RUN:  minus_abs = _end - _start; \
-# RUN: }" > %t.script
-# RUN: ld.lld %t --script %t.script -o %t2
-# RUN: llvm-objdump -t %t2 | FileCheck %s
-
-# CHECK: 00000000000006 *ABS* 00000000 plus
-# CHECK: 00000000000004 *ABS* 00000000 minus
-# CHECK: 00000000000003 *ABS* 00000000 div
-# CHECK: 00000000000006 *ABS* 00000000 mod
-# CHECK: 00000000000007 *ABS* 00000000 mul
-# CHECK: 00000000000005 *ABS* 00000000 nospace
-# CHECK: 00000000000015 *ABS* 00000000 braces
-# CHECK: 000000000000aa *ABS* 00000000 and
-# CHECK: 00000000000001 *ABS* 00000000 ternary1
-# CHECK: 00000000000002 *ABS* 00000000 ternary2
-# CHECK: 00000000000002 *ABS* 00000000 less
-# CHECK: 00000000000001 *ABS* 00000000 lesseq
-# CHECK: 00000000000002 *ABS* 00000000 greater
-# CHECK: 00000000000001 *ABS* 00000000 greatereq
-# CHECK: 00000000000001 *ABS* 00000000 eq
-# CHECK: 00000000000002 *ABS* 00000000 neq
-# CHECK: 00000000000003 *ABS* 00000000 plusassign
-# CHECK: 00000000000002 *ABS* 00000000 unary
-# CHECK: 00000000000020 *ABS* 00000000 lshift
-# CHECK: 0000000000001f *ABS* 00000000 rshift
-# CHECK: 00000000001000 *ABS* 00000000 maxpagesize
-# CHECK: 00000000001000 *ABS* 00000000 commonpagesize
-# CHECK: 0000000000ffff *ABS* 00000000 datasegmentalign
-# CHECK: 0000000000fff0 *ABS* 00000000 datasegmentalign2
-# CHECK: 0000000000ffe0 .text 00000000 minus_rel
-# CHECK: 0000000000fff0 *ABS* 00000000 minus_abs
-
-## Mailformed number error.
-# RUN: echo "SECTIONS { . = 0x12Q41; }" > %t.script
-# RUN: not ld.lld %t --script %t.script -o %t2 2>&1 | \
-# RUN:  FileCheck --check-prefix=NUMERR %s
-# NUMERR: malformed number: 0x12Q41
-
-## Missing closing bracket.
-# RUN: echo "SECTIONS { . = (1; }" > %t.script
-# RUN: not ld.lld %t --script %t.script -o %t2 2>&1 | \
-# RUN:  FileCheck --check-prefix=BRACKETERR %s
-# BRACKETERR: ) expected, but got ;
-
-## Missing opening bracket.
-# RUN: echo "SECTIONS { . = 1); }" > %t.script
-# RUN: not ld.lld %t --script %t.script -o %t2 2>&1 | \
-# RUN:  FileCheck --check-prefix=BRACKETERR2 %s
-# BRACKETERR2: ; expected, but got )
-
-## Empty expression.
-# RUN: echo "SECTIONS { . = ; }" > %t.script
-# RUN: not ld.lld %t --script %t.script -o %t2 2>&1 | \
-# RUN:  FileCheck --check-prefix=ERREXPR %s
-# ERREXPR: malformed number: ;
-
-## Div by zero error.
-# RUN: echo "SECTIONS { . = 1 / 0; }" > %t.script
-# RUN: not ld.lld %t --script %t.script -o %t2 2>&1 | \
-# RUN:  FileCheck --check-prefix=DIVZERO %s
-# DIVZERO: division by zero
-
-## Broken ternary operator expression.
-# RUN: echo "SECTIONS { . = 1 ? 2; }" > %t.script
-# RUN: not ld.lld %t --script %t.script -o %t2 2>&1 | \
-# RUN:  FileCheck --check-prefix=TERNERR %s
-# TERNERR: : expected, but got ;
-
-.globl _start
-_start:
-nop

Added: lld/trunk/test/ELF/linkerscript/operators.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/linkerscript/operators.test?rev=326363&view=auto
==============================================================================
--- lld/trunk/test/ELF/linkerscript/operators.test (added)
+++ lld/trunk/test/ELF/linkerscript/operators.test Wed Feb 28 12:22:42 2018
@@ -0,0 +1,100 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux /dev/null -o %t
+# RUN: ld.lld %t --script %s -o %t2
+# RUN: llvm-objdump -t %t2 | FileCheck %s
+
+SECTIONS {
+  _start = .;
+  plus = 1 + 2 + 3;
+  minus = 5 - 1;
+  div = 6 / 2;
+  mod = 20 % 7;
+  mul = 1 + 2 * 3;
+  nospace = 1+2*6/3;
+  braces = 1 + (2 + 3) * 4;
+  and = 0xbb & 0xee;
+  ternary1 = 1 ? 1 : 2;
+  ternary2 = 0 ? 1 : 2;
+  less = 1 < 0 ? 1 : 2;
+  lesseq = 1 <= 1 ? 1 : 2;
+  greater = 0 > 1 ? 1 : 2;
+  greatereq = 1 >= 1 ? 1 : 2;
+  eq = 1 == 1 ? 1 : 2;
+  neq = 1 != 1 ? 1 : 2;
+  plusassign = 1;
+  plusassign += 2;
+  unary = -1 + 3;
+  lshift = 1 << 5;
+  rshift = 0xff >> 3;
+  maxpagesize = CONSTANT (MAXPAGESIZE);
+  commonpagesize = CONSTANT (COMMONPAGESIZE);
+  . = 0xfff0;
+  datasegmentalign = DATA_SEGMENT_ALIGN (0xffff, 0);
+  datasegmentalign2 = DATA_SEGMENT_ALIGN (0, 0);
+  _end = .;
+  minus_rel = _end - 0x10;
+  minus_abs = _end - _start;
+}
+
+# CHECK: 00000000000006 *ABS* 00000000 plus
+# CHECK: 00000000000004 *ABS* 00000000 minus
+# CHECK: 00000000000003 *ABS* 00000000 div
+# CHECK: 00000000000006 *ABS* 00000000 mod
+# CHECK: 00000000000007 *ABS* 00000000 mul
+# CHECK: 00000000000005 *ABS* 00000000 nospace
+# CHECK: 00000000000015 *ABS* 00000000 braces
+# CHECK: 000000000000aa *ABS* 00000000 and
+# CHECK: 00000000000001 *ABS* 00000000 ternary1
+# CHECK: 00000000000002 *ABS* 00000000 ternary2
+# CHECK: 00000000000002 *ABS* 00000000 less
+# CHECK: 00000000000001 *ABS* 00000000 lesseq
+# CHECK: 00000000000002 *ABS* 00000000 greater
+# CHECK: 00000000000001 *ABS* 00000000 greatereq
+# CHECK: 00000000000001 *ABS* 00000000 eq
+# CHECK: 00000000000002 *ABS* 00000000 neq
+# CHECK: 00000000000003 *ABS* 00000000 plusassign
+# CHECK: 00000000000002 *ABS* 00000000 unary
+# CHECK: 00000000000020 *ABS* 00000000 lshift
+# CHECK: 0000000000001f *ABS* 00000000 rshift
+# CHECK: 00000000001000 *ABS* 00000000 maxpagesize
+# CHECK: 00000000001000 *ABS* 00000000 commonpagesize
+# CHECK: 0000000000ffff *ABS* 00000000 datasegmentalign
+# CHECK: 0000000000fff0 *ABS* 00000000 datasegmentalign2
+# CHECK: 0000000000ffe0 .text 00000000 minus_rel
+# CHECK: 0000000000fff0 *ABS* 00000000 minus_abs
+
+## Mailformed number error.
+# RUN: echo "SECTIONS { . = 0x12Q41; }" > %t.script
+# RUN: not ld.lld %t --script %t.script -o %t2 2>&1 | \
+# RUN:  FileCheck --check-prefix=NUMERR %s
+# NUMERR: malformed number: 0x12Q41
+
+## Missing closing bracket.
+# RUN: echo "SECTIONS { . = (1; }" > %t.script
+# RUN: not ld.lld %t --script %t.script -o %t2 2>&1 | \
+# RUN:  FileCheck --check-prefix=BRACKETERR %s
+# BRACKETERR: ) expected, but got ;
+
+## Missing opening bracket.
+# RUN: echo "SECTIONS { . = 1); }" > %t.script
+# RUN: not ld.lld %t --script %t.script -o %t2 2>&1 | \
+# RUN:  FileCheck --check-prefix=BRACKETERR2 %s
+# BRACKETERR2: ; expected, but got )
+
+## Empty expression.
+# RUN: echo "SECTIONS { . = ; }" > %t.script
+# RUN: not ld.lld %t --script %t.script -o %t2 2>&1 | \
+# RUN:  FileCheck --check-prefix=ERREXPR %s
+# ERREXPR: malformed number: ;
+
+## Div by zero error.
+# RUN: echo "SECTIONS { . = 1 / 0; }" > %t.script
+# RUN: not ld.lld %t --script %t.script -o %t2 2>&1 | \
+# RUN:  FileCheck --check-prefix=DIVZERO %s
+# DIVZERO: division by zero
+
+## Broken ternary operator expression.
+# RUN: echo "SECTIONS { . = 1 ? 2; }" > %t.script
+# RUN: not ld.lld %t --script %t.script -o %t2 2>&1 | \
+# RUN:  FileCheck --check-prefix=TERNERR %s
+# TERNERR: : expected, but got ;




More information about the llvm-commits mailing list