[ELF] Make SyntheticSection parameter order match InputSection
[llvm-project.git] / lld / test / ELF / ppc64-sort-small-cm-relocs.s
blobfbbecc77a37fb2dcf3d4a79e9aef73372313593b
1 # REQUIRES: ppc
2 # RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t1.o
3 # RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-sort-small-cm-relocs-input2.s -o %t2.o
4 # RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-sort-small-cm-relocs-input3.s -o %t3.o
5 # RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-sort-small-cm-relocs-input4.s -o %t4.o
7 # RUN: ld.lld %t1.o %t2.o %t3.o %t4.o -o %t -Map=%t.map
8 # RUN: FileCheck %s < %t.map
10 # Test an alternate link order.
11 # RUN: ld.lld %t2.o %t3.o %t4.o %t1.o -o %t -Map=%t.map
12 # RUN: FileCheck %s -check-prefix=ALTERNATE < %t.map
14 # If a linker script has a sections command then allow that to override the
15 # default sorting behavior.
16 # RUN: echo "SECTIONS { \
17 # RUN: .toc : { \
18 # RUN: *ppc64-sort-small-cm-relocs.s.tmp4.o(.toc*) \
19 # RUN: *ppc64-sort-small-cm-relocs.s.tmp1.o(.toc*) \
20 # RUN: *(.toc*) \
21 # RUN: } \
22 # RUN: } " > %t.script
23 # RUN: ld.lld %t1.o %t2.o %t3.o %t4.o -o %t -script %t.script -Map=%t.map
24 # RUN: FileCheck %s -check-prefix=SEC-CMD < %t.map
26 # RUN: echo "SECTIONS { .text : {*(.text*)} } " > %t.script
27 # RUN: ld.lld %t1.o %t2.o %t3.o %t4.o -o %t -script %t.script -Map=%t.map
28 # RUN: FileCheck %s -check-prefix=SEC-CMD2 < %t.map
30 # Default sort if the linker script does not have a sections command.
31 # RUN: echo "" > %t.script
32 # RUN: ld.lld %t1.o %t2.o %t3.o %t4.o -o %t -script %t.script -Map=%t.map
33 # RUN: FileCheck %s -check-prefix=NOSEC < %t.map
34 .text
36 .global _start
37 .type _start,@function
38 _start:
39 li 3, 55
40 blr
42 .type a,@object
43 .data
44 .global a
46 .long 10
47 .size a, 4
49 .type c,@object
50 .data
51 .global c
53 .long 55
54 .size c, 4
56 .type d,@object
57 .global d
59 .long 33
60 .size d, 4
62 # .toc section contains only some constants.
63 .section .toc,"aw",@progbits
64 .quad 0xa1a1a1a1a1a1a1a1
65 .quad 0xb2b2b2b2b2b2b2b2
67 # Input files tmp3.o and tmp4.o contain small code model relocs.
69 # CHECK: .got
70 # CHECK-NEXT: <internal>:(.got)
71 # CHECK-NEXT: .toc
72 # CHECK-NEXT: {{.*}}3.o:(.toc)
73 # CHECK-NEXT: {{.*}}4.o:(.toc)
74 # CHECK-NEXT: {{.*}}1.o:(.toc)
75 # CHECK-NEXT: {{.*}}2.o:(.toc)
77 # ALTERNATE: .got
78 # ALTERNATE-NEXT: <internal>:(.got)
79 # ALTERNATE-NEXT: .toc
80 # ALTERNATE-NEXT: {{.*}}3.o:(.toc)
81 # ALTERNATE-NEXT: {{.*}}4.o:(.toc)
82 # ALTERNATE-NEXT: {{.*}}2.o:(.toc)
83 # ALTERNATE-NEXT: {{.*}}1.o:(.toc)
85 # SEC-CMD: .got
86 # SEC-CMD-NEXT: <internal>:(.got)
87 # SEC-CMD-NEXT: .toc
88 # SEC-CMD-NEXT: {{.*}}4.o:(.toc)
89 # SEC-CMD-NEXT: {{.*}}1.o:(.toc)
90 # SEC-CMD-NEXT: {{.*}}2.o:(.toc)
91 # SEC-CMD-NEXT: {{.*}}3.o:(.toc)
93 # SEC-CMD2: .got
94 # SEC-CMD2-NEXT: <internal>:(.got)
95 # SEC-CMD2-NEXT: .toc
96 # SEC-CMD2-NEXT: {{.*}}1.o:(.toc)
97 # SEC-CMD2-NEXT: {{.*}}2.o:(.toc)
98 # SEC-CMD2-NEXT: {{.*}}3.o:(.toc)
99 # SEC-CMD2-NEXT: {{.*}}4.o:(.toc)
101 # NOSEC: .got
102 # NOSEC-NEXT: <internal>:(.got)
103 # NOSEC-NEXT: .toc
104 # NOSEC-NEXT: {{.*}}3.o:(.toc)
105 # NOSEC-NEXT: {{.*}}4.o:(.toc)
106 # NOSEC-NEXT: {{.*}}1.o:(.toc)
107 # NOSEC-NEXT: {{.*}}2.o:(.toc)