109 lines
3.3 KiB
ArmAsm
109 lines
3.3 KiB
ArmAsm
# REQUIRES: ppc
|
|
# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t1.o
|
|
# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-sort-small-cm-relocs-input2.s -o %t2.o
|
|
# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-sort-small-cm-relocs-input3.s -o %t3.o
|
|
# RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %p/Inputs/ppc64-sort-small-cm-relocs-input4.s -o %t4.o
|
|
|
|
# RUN: ld.lld %t1.o %t2.o %t3.o %t4.o -o %t -Map=%t.map
|
|
# RUN: FileCheck %s < %t.map
|
|
|
|
# Test an alternate link order.
|
|
# RUN: ld.lld %t2.o %t3.o %t4.o %t1.o -o %t -Map=%t.map
|
|
# RUN: FileCheck %s -check-prefix=ALTERNATE < %t.map
|
|
|
|
# If a linker script has a sections command then allow that to override the
|
|
# default sorting behavior.
|
|
# RUN: echo "SECTIONS { \
|
|
# RUN: .toc : { \
|
|
# RUN: *ppc64-sort-small-cm-relocs.s.tmp4.o(.toc*) \
|
|
# RUN: *ppc64-sort-small-cm-relocs.s.tmp1.o(.toc*) \
|
|
# RUN: *(.toc*) \
|
|
# RUN: } \
|
|
# RUN: } " > %t.script
|
|
# RUN: ld.lld %t1.o %t2.o %t3.o %t4.o -o %t -script %t.script -Map=%t.map
|
|
# RUN: FileCheck %s -check-prefix=SEC-CMD < %t.map
|
|
|
|
# RUN: echo "SECTIONS { .text : {*(.text*)} } " > %t.script
|
|
# RUN: ld.lld %t1.o %t2.o %t3.o %t4.o -o %t -script %t.script -Map=%t.map
|
|
# RUN: FileCheck %s -check-prefix=SEC-CMD2 < %t.map
|
|
|
|
# Default sort if the linker script does not have a sections command.
|
|
# RUN: echo "" > %t.script
|
|
# RUN: ld.lld %t1.o %t2.o %t3.o %t4.o -o %t -script %t.script -Map=%t.map
|
|
# RUN: FileCheck %s -check-prefix=NOSEC < %t.map
|
|
.text
|
|
|
|
.global _start
|
|
.type _start,@function
|
|
_start:
|
|
li 3, 55
|
|
blr
|
|
|
|
.type a,@object
|
|
.data
|
|
.global a
|
|
a:
|
|
.long 10
|
|
.size a, 4
|
|
|
|
.type c,@object
|
|
.data
|
|
.global c
|
|
c:
|
|
.long 55
|
|
.size c, 4
|
|
|
|
.type d,@object
|
|
.global d
|
|
d:
|
|
.long 33
|
|
.size d, 4
|
|
|
|
# .toc section contains only some constants.
|
|
.section .toc,"aw",@progbits
|
|
.quad 0xa1a1a1a1a1a1a1a1
|
|
.quad 0xb2b2b2b2b2b2b2b2
|
|
|
|
# Input files tmp3.o and tmp4.o contain small code model relocs.
|
|
|
|
# CHECK: .got
|
|
# CHECK-NEXT: <internal>:(.got)
|
|
# CHECK-NEXT: .toc
|
|
# CHECK-NEXT: {{.*}}3.o:(.toc)
|
|
# CHECK-NEXT: {{.*}}4.o:(.toc)
|
|
# CHECK-NEXT: {{.*}}1.o:(.toc)
|
|
# CHECK-NEXT: {{.*}}2.o:(.toc)
|
|
|
|
# ALTERNATE: .got
|
|
# ALTERNATE-NEXT: <internal>:(.got)
|
|
# ALTERNATE-NEXT: .toc
|
|
# ALTERNATE-NEXT: {{.*}}3.o:(.toc)
|
|
# ALTERNATE-NEXT: {{.*}}4.o:(.toc)
|
|
# ALTERNATE-NEXT: {{.*}}2.o:(.toc)
|
|
# ALTERNATE-NEXT: {{.*}}1.o:(.toc)
|
|
|
|
# SEC-CMD: .got
|
|
# SEC-CMD-NEXT: <internal>:(.got)
|
|
# SEC-CMD-NEXT: .toc
|
|
# SEC-CMD-NEXT: {{.*}}4.o:(.toc)
|
|
# SEC-CMD-NEXT: {{.*}}1.o:(.toc)
|
|
# SEC-CMD-NEXT: {{.*}}2.o:(.toc)
|
|
# SEC-CMD-NEXT: {{.*}}3.o:(.toc)
|
|
|
|
# SEC-CMD2: .got
|
|
# SEC-CMD2-NEXT: <internal>:(.got)
|
|
# SEC-CMD2-NEXT: .toc
|
|
# SEC-CMD2-NEXT: {{.*}}1.o:(.toc)
|
|
# SEC-CMD2-NEXT: {{.*}}2.o:(.toc)
|
|
# SEC-CMD2-NEXT: {{.*}}3.o:(.toc)
|
|
# SEC-CMD2-NEXT: {{.*}}4.o:(.toc)
|
|
|
|
# NOSEC: .got
|
|
# NOSEC-NEXT: <internal>:(.got)
|
|
# NOSEC-NEXT: .toc
|
|
# NOSEC-NEXT: {{.*}}3.o:(.toc)
|
|
# NOSEC-NEXT: {{.*}}4.o:(.toc)
|
|
# NOSEC-NEXT: {{.*}}1.o:(.toc)
|
|
# NOSEC-NEXT: {{.*}}2.o:(.toc)
|
|
|