Skip to content

Commit e3f3d2a

Browse files
committed
[ELF][test] Improve expression test
1 parent 21bf6bb commit e3f3d2a

File tree

2 files changed

+53
-114
lines changed

2 files changed

+53
-114
lines changed

lld/test/ELF/linkerscript/operators.test

Lines changed: 53 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,32 @@
55

66
SECTIONS {
77
_start = .;
8-
plus = 1 + 2 + 3;
9-
minus = 5 - 1;
10-
div = 6 / 2;
11-
mod = 20 % 7;
12-
mul = 1 + 2 * 3;
13-
nospace = 1+2*6/3;
14-
braces = 1 + (2 + 3) * 4;
15-
and = 0xbb & 0xee;
16-
ternary1 = 1 ? 2 : 3 ? 4 : 5;
17-
ternary2 = 0 ? 1 : 2;
8+
unary =!0 + !0;
9+
negate =-1 - 1;
10+
not =~0xffff + 4;
11+
not_negate = -~5 + 1;
12+
multiplicative = 20 / 2 % 7;
13+
additive = 1 - 2 + -3 * -2;
14+
shift = 2 << 5 >> 1 << 2;
1815
less = 1 < 0 ? 1 : 2;
19-
lesseq = 1 <= 1 ? 1 : 2;
16+
lesseq = 1<<0 <= 1>>0 ? 1 : 2;
2017
greater = 0 > 1 ? 1 : 2;
2118
greatereq = 1 >= 1 ? 1 : 2;
2219
eq = 1 == 1 ? 1 : 2;
2320
neq = 1 != 1 <= 1 ? 1 : 2;
24-
plusassign = 1;
21+
and = 3 & 4 > 0;
22+
or = 0xbb & 0xee | 1;
23+
logicaland = (0 && 0) + (0&&1)*2 + (1&& 0)*4 + (1 &&1) *8;
24+
logicaland2 = 1 & 0 && 1 | 1;
25+
logicalor = (0 || 0) + (0||1)*2 + (1|| 0)*4 + (1 ||1) *8;
26+
logicalor2 = 0 && 0 || 1 && 1;
27+
ternary1 = 0 ? 1 : 2 & 6;
28+
ternary2 = 1 ? 2 ? 3 : 4 : 5 ? 6 : 7;
29+
30+
plusassign =1;
2531
plusassign += 2;
26-
unary = -1 + 3;
27-
lshift = 1 << 5;
28-
rshift = 0xff >> 3;
29-
precedence1 = 1 | 0xff & 1 << 1 + 1 * 2;
32+
braces = 1 + (2 + 3) * 4;
33+
precedence1 = 1|0xff&1/1<<1+1*2;
3034
precedence2 = (1 | (0xff & (1 << (1 + (1 * 2)))));
3135
maxpagesize = CONSTANT (MAXPAGESIZE);
3236
commonpagesize = CONSTANT (COMMONPAGESIZE);
@@ -46,46 +50,41 @@ SECTIONS {
4650
log2ceil100000000 = LOG2CEIL(0x100000000);
4751
log2ceil100000001 = LOG2CEIL(0x100000001);
4852
log2ceilmax = LOG2CEIL(0xffffffffffffffff);
49-
logicaland1 = 0 && 0;
50-
logicaland2 = 0 && 1;
51-
logicaland3 = 1 && 0;
52-
logicaland4 = 1 && 1;
53-
logicalor1 = 0 || 0;
54-
logicalor2 = 0 || 1;
55-
logicalor3 = 1 || 0;
56-
logicalor4 = 1 || 1;
5753
}
5854

59-
# CHECK: 00000000000006 A plus
60-
# CHECK-NEXT: 00000000000004 A minus
61-
# CHECK-NEXT: 00000000000003 A div
62-
# CHECK-NEXT: 00000000000006 A mod
63-
# CHECK-NEXT: 00000000000007 A mul
64-
# CHECK-NEXT: 00000000000005 A nospace
65-
# CHECK-NEXT: 00000000000015 A braces
66-
# CHECK-NEXT: 000000000000aa A and
67-
# CHECK-NEXT: 00000000000002 A ternary1
68-
# CHECK-NEXT: 00000000000002 A ternary2
69-
# CHECK-NEXT: 00000000000002 A less
70-
# CHECK-NEXT: 00000000000001 A lesseq
71-
# CHECK-NEXT: 00000000000002 A greater
72-
# CHECK-NEXT: 00000000000001 A greatereq
73-
# CHECK-NEXT: 00000000000001 A eq
74-
# CHECK-NEXT: 00000000000002 A neq
75-
# CHECK-NEXT: 00000000000003 A plusassign
76-
# CHECK-NEXT: 00000000000002 A unary
77-
# CHECK-NEXT: 00000000000020 A lshift
78-
# CHECK-NEXT: 0000000000001f A rshift
79-
# CHECK-NEXT: 00000000000009 A precedence1
80-
# CHECK-NEXT: 00000000000009 A precedence2
81-
# CHECK-NEXT: 00000000001000 A maxpagesize
82-
# CHECK-NEXT: 00000000001000 A commonpagesize
83-
# CHECK-NEXT: 0000000000ffff A datasegmentalign
84-
# CHECK-NEXT: 0000000000fff0 A datasegmentalign2
85-
# CHECK-NEXT: 0000000000ffe0 T minus_rel
86-
# CHECK-NEXT: 0000000000fff0 A minus_abs
87-
# CHECK-NEXT: 00000000000016 A max
88-
# CHECK-NEXT: 0000000000000b A min
55+
# CHECK: 0000000000000002 A unary
56+
# CHECK-NEXT: fffffffffffffffe A negate
57+
# CHECK-NEXT: ffffffffffff0004 A not
58+
# CHECK-NEXT: 0000000000000007 A not_negate
59+
# CHECK-NEXT: 0000000000000003 A multiplicative
60+
# CHECK-NEXT: 0000000000000005 A additive
61+
# CHECK-NEXT: 0000000000000080 A shift
62+
# CHECK-NEXT: 0000000000000002 A less
63+
# CHECK-NEXT: 0000000000000001 A lesseq
64+
# CHECK-NEXT: 0000000000000002 A greater
65+
# CHECK-NEXT: 0000000000000001 A greatereq
66+
# CHECK-NEXT: 0000000000000001 A eq
67+
# CHECK-NEXT: 0000000000000002 A neq
68+
# CHECK-NEXT: 0000000000000001 A and
69+
# CHECK-NEXT: 00000000000000ab A or
70+
# CHECK-NEXT: 0000000000000008 A logicaland
71+
# CHECK-NEXT: 0000000000000000 A logicaland2
72+
# CHECK-NEXT: 000000000000000e A logicalor
73+
# CHECK-NEXT: 0000000000000001 A logicalor2
74+
# CHECK-NEXT: 0000000000000002 A ternary1
75+
# CHECK-NEXT: 0000000000000003 A ternary2
76+
# CHECK-NEXT: 0000000000000003 A plusassign
77+
# CHECK-NEXT: 0000000000000015 A braces
78+
# CHECK-NEXT: 0000000000000009 A precedence1
79+
# CHECK-NEXT: 0000000000000009 A precedence2
80+
# CHECK-NEXT: 0000000000001000 A maxpagesize
81+
# CHECK-NEXT: 0000000000001000 A commonpagesize
82+
# CHECK-NEXT: 000000000000ffff A datasegmentalign
83+
# CHECK-NEXT: 000000000000fff0 A datasegmentalign2
84+
# CHECK-NEXT: 000000000000ffe0 T minus_rel
85+
# CHECK-NEXT: 000000000000fff0 A minus_abs
86+
# CHECK-NEXT: 0000000000000016 A max
87+
# CHECK-NEXT: 000000000000000b A min
8988
# CHECK-NEXT: 0000000000000000 A log2ceil0
9089
# CHECK-NEXT: 0000000000000000 A log2ceil1
9190
# CHECK-NEXT: 0000000000000001 A log2ceil2
@@ -94,14 +93,6 @@ SECTIONS {
9493
# CHECK-NEXT: 0000000000000020 A log2ceil100000000
9594
# CHECK-NEXT: 0000000000000021 A log2ceil100000001
9695
# CHECK-NEXT: 0000000000000040 A log2ceilmax
97-
# CHECK-NEXT: 00000000000000 A logicaland1
98-
# CHECK-NEXT: 00000000000000 A logicaland2
99-
# CHECK-NEXT: 00000000000000 A logicaland3
100-
# CHECK-NEXT: 00000000000001 A logicaland4
101-
# CHECK-NEXT: 00000000000000 A logicalor1
102-
# CHECK-NEXT: 00000000000001 A logicalor2
103-
# CHECK-NEXT: 00000000000001 A logicalor3
104-
# CHECK-NEXT: 00000000000001 A logicalor4
10596

10697
## Mailformed number error.
10798
# RUN: echo "SECTIONS { . = 0x12Q41; }" > %t.script
Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,6 @@
11
# REQUIRES: x86
22
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
33

4-
# RUN: echo "SECTIONS { \
5-
# RUN: symbol = CONSTANT(MAXPAGESIZE); \
6-
# RUN: symbol2 = symbol + 0x1234; \
7-
# RUN: symbol3 = symbol2; \
8-
# RUN: symbol4 = symbol + -4; \
9-
# RUN: symbol5 = symbol - ~0xfffb; \
10-
# RUN: symbol6 = symbol - ~(0xfff0 + 0xb); \
11-
# RUN: symbol7 =symbol - ~ 0xfffb + 4; \
12-
# RUN: symbol8 =~ 0xffff + 4; \
13-
# RUN: symbol9 =- 4; \
14-
# RUN: symbol10 = 0xfedcba9876543210; \
15-
# RUN: symbol11 = ((0x28000 + 0x1fff) & ~(0x1000 + -1)); \
16-
# RUN: symbol12 = 0x1234; \
17-
# RUN: symbol12 += 1; \
18-
# RUN: symbol13 = !1; \
19-
# RUN: symbol14 = !0; \
20-
# RUN: symbol15 = 0!=1; \
21-
# RUN: bar = 0x5678; \
22-
# RUN: baz = 0x9abc; \
23-
# RUN: }" > %t.script
24-
# RUN: ld.lld -o %t -T %t.script %t.o
25-
# RUN: llvm-nm -p %t | FileCheck %s
26-
27-
# CHECK: 0000000000000000 T _start
28-
# CHECK-NEXT: 0000000000000001 T foo
29-
# CHECK-NEXT: 0000000000005678 A bar
30-
# CHECK-NEXT: 0000000000009abc A baz
31-
# CHECK-NEXT: 0000000000001000 A symbol
32-
# CHECK-NEXT: 0000000000002234 A symbol2
33-
# CHECK-NEXT: 0000000000002234 A symbol3
34-
# CHECK-NEXT: 0000000000000ffc A symbol4
35-
# CHECK-NEXT: 0000000000010ffc A symbol5
36-
# CHECK-NEXT: 0000000000010ffc A symbol6
37-
# CHECK-NEXT: 0000000000011000 A symbol7
38-
# CHECK-NEXT: ffffffffffff0004 A symbol8
39-
# CHECK-NEXT: fffffffffffffffc A symbol9
40-
# CHECK-NEXT: fedcba9876543210 A symbol10
41-
# CHECK-NEXT: 0000000000029000 A symbol11
42-
# CHECK-NEXT: 0000000000001235 A symbol12
43-
# CHECK-NEXT: 0000000000000000 A symbol13
44-
# CHECK-NEXT: 0000000000000001 A symbol14
45-
# CHECK-NEXT: 0000000000000001 A symbol15
46-
474
# RUN: echo "SECTIONS { symbol2 = symbol; }" > %t2.script
485
# RUN: not ld.lld -o /dev/null -T %t2.script %t.o 2>&1 \
496
# RUN: | FileCheck -check-prefix=ERR %s
@@ -52,12 +9,3 @@
529
.global _start
5310
_start:
5411
nop
55-
56-
.global foo
57-
foo:
58-
nop
59-
60-
.global bar
61-
bar = 0x1234
62-
63-
.comm baz,8,8

0 commit comments

Comments
 (0)