diff --git a/lld/test/ELF/aarch64-cortex-a53-843419-large.s b/lld/test/ELF/aarch64-cortex-a53-843419-large.s --- a/lld/test/ELF/aarch64-cortex-a53-843419-large.s +++ b/lld/test/ELF/aarch64-cortex-a53-843419-large.s @@ -8,6 +8,7 @@ // RUN: llvm-objdump --triple=aarch64-linux-gnu -d %t2 --start-address=102842376 --stop-address=102842392 | FileCheck --check-prefix=CHECK5 %s // RUN: llvm-objdump --triple=aarch64-linux-gnu -d %t2 --start-address=136384524 --stop-address=136384528 | FileCheck --check-prefix=CHECK6 %s // RUN: llvm-objdump --triple=aarch64-linux-gnu -d %t2 --start-address=136388604 --stop-address=136388628 | FileCheck --check-prefix=CHECK7 %s +// RUN: rm %t.o %t2 // Test case for Cortex-A53 Erratum 843419 in an OutputSection exceeding // the maximum branch range. Both range extension thunks and patches are // required. diff --git a/lld/test/ELF/aarch64-cortex-a53-843419-large2.s b/lld/test/ELF/aarch64-cortex-a53-843419-large2.s --- a/lld/test/ELF/aarch64-cortex-a53-843419-large2.s +++ b/lld/test/ELF/aarch64-cortex-a53-843419-large2.s @@ -2,6 +2,8 @@ // RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux %s -o %t.o // RUN: ld.lld --fix-cortex-a53-843419 -Ttext=0x8000000 %t.o -o %t2 // RUN: llvm-objdump -d --start-address=0x8001000 --stop-address=0x8001004 %t2 | FileCheck %s +/// The temporary files are more than 128MiB. Delete them early. +// RUN: rm %t.o %t2 .section .text.01, "ax", %progbits .balign 4096 diff --git a/lld/test/ELF/aarch64-cortex-a53-843419-thunk-range.s b/lld/test/ELF/aarch64-cortex-a53-843419-thunk-range.s --- a/lld/test/ELF/aarch64-cortex-a53-843419-thunk-range.s +++ b/lld/test/ELF/aarch64-cortex-a53-843419-thunk-range.s @@ -1,10 +1,11 @@ // REQUIRES: aarch64 -// RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux --asm-macro-max-nesting-depth=40000 %s -o %t.o -// RUN: echo "SECTIONS { \ -// RUN: .text1 0x10000 : { *(.text.*) } \ -// RUN: .text2 0xf010000 : { *(.target) } } " > %t.script -// RUN: ld.lld --script %t.script -fix-cortex-a53-843419 %t.o -o %t2 --print-map 2>&1 | FileCheck %s +// RUN: split-file %s %t +// RUN: llvm-mc -filetype=obj -triple=aarch64 --asm-macro-max-nesting-depth=40000 %t/asm -o %t.o +// RUN: ld.lld -T %t/lds -fix-cortex-a53-843419 %t.o -o %t2 --print-map 2>&1 | FileCheck %s +/// %t2 is more than 128MiB. Delete it early. +// RUN: rm %t.o %t2 +//--- asm /// We use %(\parameter) to evaluate expression, which requires .altmacro. .altmacro @@ -85,3 +86,13 @@ .global dat1 dat1: .xword 0 + +//--- lds +PHDRS { + low PT_LOAD FLAGS(0x1 | 0x4); + high PT_LOAD FLAGS(0x1 | 0x4); +} +SECTIONS { + .text1 0x10000 : { *(.text.*) } :low + .text2 0xf010000 : { *(.target) } :high +} diff --git a/lld/test/ELF/aarch64-thunk-pi.s b/lld/test/ELF/aarch64-thunk-pi.s --- a/lld/test/ELF/aarch64-thunk-pi.s +++ b/lld/test/ELF/aarch64-thunk-pi.s @@ -1,13 +1,12 @@ // REQUIRES: aarch64 -// RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t.o -// RUN: echo "SECTIONS { \ -// RUN: .text_low : { *(.text_low) } \ -// RUN: .text_high 0x10000000 : { *(.text_high) } \ -// RUN: } " > %t.script -// RUN: ld.lld --script %t.script --shared %t.o -o %t.so 2>&1 +// RUN: split-file %s %t +// RUN: llvm-mc -filetype=obj -triple=aarch64 %t/asm -o %t.o +// RUN: ld.lld --script %t/lds --shared %t.o -o %t.so 2>&1 // RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.so | FileCheck %s // Check that Position Independent thunks are generated for shared libraries. + +//--- asm .section .text_low, "ax", %progbits .globl low_target .type low_target, %function @@ -102,3 +101,13 @@ // CHECK-NEXT: ldr x17, [x16, #0x130] // CHECK-NEXT: add x16, x16, #0x130 // CHECK-NEXT: br x17 + +//--- lds +PHDRS { + low PT_LOAD FLAGS(0x1 | 0x4); + high PT_LOAD FLAGS(0x1 | 0x4); +} +SECTIONS { + .text_low : { *(.text_low) } :low + .text_high 0x10000000 : { *(.text_high) } :high +} diff --git a/lld/test/ELF/aarch64-thunk-script.s b/lld/test/ELF/aarch64-thunk-script.s --- a/lld/test/ELF/aarch64-thunk-script.s +++ b/lld/test/ELF/aarch64-thunk-script.s @@ -1,13 +1,11 @@ // REQUIRES: aarch64 -// RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t.o -// RUN: echo "SECTIONS { \ -// RUN: .text_low 0x2000: { *(.text_low) } \ -// RUN: .text_high 0x8002000 : { *(.text_high) } \ -// RUN: } " > %t.script -// RUN: ld.lld --script %t.script %t.o -o %t -// RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t | FileCheck %s -// RUN: llvm-nm --no-sort --special-syms %t | FileCheck --check-prefix=NM %s +// RUN: split-file %s %t +// RUN: llvm-mc -filetype=obj -triple=aarch64 %t/asm -o %t.o +// RUN: ld.lld --script %t/lds %t.o -o %t/out +// RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t/out | FileCheck %s +// RUN: llvm-nm --no-sort --special-syms %t/out | FileCheck --check-prefix=NM %s +//--- asm // Check that we have the out of branch range calculation right. The immediate // field is signed so we have a slightly higher negative displacement. .section .text_low, "ax", %progbits @@ -65,3 +63,13 @@ /// Global symbols. // NM-NEXT: T _start // NM-NEXT: T high_target + +//--- lds +PHDRS { + low PT_LOAD FLAGS(0x1 | 0x4); + high PT_LOAD FLAGS(0x1 | 0x4); +} +SECTIONS { + .text_low 0x2000: { *(.text_low) } :low + .text_high 0x8002000 : { *(.text_high) } :high +} diff --git a/lld/test/ELF/aarch64-thunk-section-location.s b/lld/test/ELF/aarch64-thunk-section-location.s --- a/lld/test/ELF/aarch64-thunk-section-location.s +++ b/lld/test/ELF/aarch64-thunk-section-location.s @@ -2,6 +2,7 @@ // RUN: llvm-mc -filetype=obj -triple=aarch64-linux-gnu %s -o %t.o // RUN: ld.lld %t.o -o %t // RUN: llvm-objdump -d --start-address=0x81d1008 --stop-address=0x81d1014 --no-show-raw-insn %t | FileCheck %s +// RUN: rm %t.o %t // Check that the range extension thunks are dumped close to the aarch64 branch // range of 128 MiB .section .text.1, "ax", %progbits diff --git a/lld/test/ELF/arm-thumb-plt-range-thunk-os.s b/lld/test/ELF/arm-thumb-plt-range-thunk-os.s --- a/lld/test/ELF/arm-thumb-plt-range-thunk-os.s +++ b/lld/test/ELF/arm-thumb-plt-range-thunk-os.s @@ -7,6 +7,7 @@ // RUN: llvm-objdump -d %t.so --start-address=0x2800004 --stop-address=0x2800034 --triple=thumbv7a-linux-gnueabihf | FileCheck --check-prefix=CHECK2 %s // RUN: llvm-objdump -d %t.so --start-address=0x4000000 --stop-address=0x4000010 --triple=thumbv7a-linux-gnueabihf | FileCheck --check-prefix=CHECK3 %s // RUN: llvm-objdump -d %t.so --start-address=0x4000010 --stop-address=0x4000100 --triple=armv7a-linux-gnueabihf | FileCheck --check-prefix=CHECK4 %s +// RUN: rm %t.so .syntax unified .thumb