2 # RUN: rm -rf %t && split-file %s %t && cd %t
3 # RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a.o
4 # RUN: ld.lld a.o -T a.t -o a
6 ## Here we check that can handle OVERLAY which will produce sections
7 ## .out.big and .out.small with the same starting VAs, but different LMAs.
8 ## Section .big is larger than .small, we check that placing of section
9 ## .text does not cause overlapping error and that
10 ## .text's VA is 0x1000 + max(sizeof(.out.big), sizeof(.out.small)).
12 # RUN: llvm-readelf --sections -l a | FileCheck %s
14 # CHECK: Name Type Address Off Size
15 # CHECK: .big1 PROGBITS 0000000000001000 001000 000008
16 # CHECK-NEXT: .small1 PROGBITS 0000000000001000 002000 000004
17 # CHECK-NEXT: .small2 PROGBITS 0000000000001008 002008 000004
18 # CHECK-NEXT: .big2 PROGBITS 0000000000001008 003008 000008
19 # CHECK-NEXT: .empty3 PROGBITS 0000000000001010 003010 000000
20 # CHECK-NEXT: .small3 PROGBITS 0000000000001010 003010 000004
21 # CHECK-NEXT: .big3 PROGBITS 0000000000001010 004010 000008
22 # CHECK-NEXT: .text PROGBITS 0000000000001018 004018 000001
24 # CHECK: Program Headers:
25 # CHECK: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
26 # CHECK-NEXT: LOAD 0x001000 0x0000000000001000 0x0000000000001000 0x000008 0x000008 R 0x1000
27 # CHECK-NEXT: LOAD 0x002000 0x0000000000001000 0x0000000000001008 0x000004 0x000004 R 0x1000
28 # CHECK-NEXT: LOAD 0x002008 0x0000000000001008 0x0000000000002008 0x000004 0x000004 R 0x1000
29 # CHECK-NEXT: LOAD 0x003008 0x0000000000001008 0x000000000000200c 0x000008 0x000008 R 0x1000
30 # CHECK-NEXT: LOAD 0x003010 0x0000000000001010 0x0000000000002014 0x000004 0x000004 R 0x1000
31 # CHECK-NEXT: LOAD 0x004010 0x0000000000001010 0x0000000000002018 0x000008 0x000008 R 0x1000
32 # CHECK-NEXT: LOAD 0x004018 0x0000000000001018 0x0000000000002020 0x000001 0x000001 R E 0x1000
34 # RUN: not ld.lld a.o -T err1.t 2>&1 | FileCheck %s --check-prefix=ERR1 --match-full-lines --strict-whitespace
35 # ERR1:{{.*}}error: err1.t:3: { expected, but got 0x3000
36 # ERR1-NEXT:>>> .out.aaa 0x3000 : { *(.aaa) }
39 # RUN: not ld.lld a.o -T err2.t 2>&1 | FileCheck %s --check-prefix=ERR2 --match-full-lines --strict-whitespace
40 # ERR2:{{.*}}error: err2.t:{{.*}}: { expected, but got AX
41 # ERR2-NEXT:>>> .out.aaa { *(.aaa) } > AX AT>FLASH
49 .section .small1, "a"; .long 0
50 .section .big1, "a"; .quad 1
52 .section .small2, "a"; .long 0
53 .section .big2, "a"; .quad 1
55 .section .small3, "a"; .long 0
56 .section .big3, "a"; .quad 1
60 ## LMA defaults to VMA
62 ".big1" { *(".big1") }
63 .small1 { *(.small1) }
65 ## .big2 starts at ADDR(.small2)
66 OVERLAY : AT (0x2008) {
67 .small2 { *(.small2) }
70 ## .empty3 is not discarded. .small3 and .big3 share its address.
71 OVERLAY . : AT (0x2014) {
72 .empty3 { *(.empty3) }
73 .small3 { *(.small3) }
81 OVERLAY 0x1000 : AT ( 0x2000 ) {
82 .out.aaa 0x3000 : { *(.aaa) }
88 AX (ax) : ORIGIN = 0x3000, LENGTH = 0x4000
91 OVERLAY 0x1000 : AT ( 0x2000 ) {
92 .out.aaa { *(.aaa) } > AX AT>FLASH
98 OVERLAY 0x1000 : AT ( 0x2000 ) {
100 # RUN: not ld.lld a.o -T unclosed.lds 2>&1 | FileCheck %s --check-prefix=UNCLOSED
101 # UNCLOSED: error: unclosed.lds:2: unexpected EOF
102 # UNCLOSED-NOT: {{.}}