[ELF][test] Delete large temporary files and make some temporary files smaller with two text segments

Large files are cumbersome on some filesystems and can more easily trigger ENOSPC.

Some tests use two text sections with output section addresses to test branch ranges.
Use two text segments to prevent LLD from filling the gap and unnecessarily increasing the output size.

With this change, there is no test/ELF temporary file larger than 100MiB.

Reviewed By: psmith

Differential Revision: https://reviews.llvm.org/D88037
This commit is contained in:
Fangrui Song 2020-09-21 12:08:41 -07:00
parent e8951474b1
commit 6d637fa560
7 changed files with 52 additions and 19 deletions

View File

@ -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=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=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: 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 // Test case for Cortex-A53 Erratum 843419 in an OutputSection exceeding
// the maximum branch range. Both range extension thunks and patches are // the maximum branch range. Both range extension thunks and patches are
// required. // required.

View File

@ -2,6 +2,8 @@
// RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux %s -o %t.o // 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: 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 // 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 .section .text.01, "ax", %progbits
.balign 4096 .balign 4096

View File

@ -1,10 +1,11 @@
// REQUIRES: aarch64 // REQUIRES: aarch64
// RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux --asm-macro-max-nesting-depth=40000 %s -o %t.o // RUN: split-file %s %t
// RUN: echo "SECTIONS { \ // RUN: llvm-mc -filetype=obj -triple=aarch64 --asm-macro-max-nesting-depth=40000 %t/asm -o %t.o
// RUN: .text1 0x10000 : { *(.text.*) } \ // RUN: ld.lld -T %t/lds -fix-cortex-a53-843419 %t.o -o %t2 --print-map 2>&1 | FileCheck %s
// RUN: .text2 0xf010000 : { *(.target) } } " > %t.script /// %t2 is more than 128MiB. Delete it early.
// RUN: ld.lld --script %t.script -fix-cortex-a53-843419 %t.o -o %t2 --print-map 2>&1 | FileCheck %s // RUN: rm %t.o %t2
//--- asm
/// We use %(\parameter) to evaluate expression, which requires .altmacro. /// We use %(\parameter) to evaluate expression, which requires .altmacro.
.altmacro .altmacro
@ -85,3 +86,13 @@ far\from:
.global dat1 .global dat1
dat1: dat1:
.xword 0 .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
}

View File

@ -1,13 +1,12 @@
// REQUIRES: aarch64 // REQUIRES: aarch64
// RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t.o // RUN: split-file %s %t
// RUN: echo "SECTIONS { \ // RUN: llvm-mc -filetype=obj -triple=aarch64 %t/asm -o %t.o
// RUN: .text_low : { *(.text_low) } \ // RUN: ld.lld --script %t/lds --shared %t.o -o %t.so 2>&1
// RUN: .text_high 0x10000000 : { *(.text_high) } \
// RUN: } " > %t.script
// RUN: ld.lld --script %t.script --shared %t.o -o %t.so 2>&1
// RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.so | FileCheck %s // 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. // Check that Position Independent thunks are generated for shared libraries.
//--- asm
.section .text_low, "ax", %progbits .section .text_low, "ax", %progbits
.globl low_target .globl low_target
.type low_target, %function .type low_target, %function
@ -102,3 +101,13 @@ high_target2:
// CHECK-NEXT: ldr x17, [x16, #0x130] // CHECK-NEXT: ldr x17, [x16, #0x130]
// CHECK-NEXT: add x16, x16, #0x130 // CHECK-NEXT: add x16, x16, #0x130
// CHECK-NEXT: br x17 // 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
}

View File

@ -1,13 +1,11 @@
// REQUIRES: aarch64 // REQUIRES: aarch64
// RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t.o // RUN: split-file %s %t
// RUN: echo "SECTIONS { \ // RUN: llvm-mc -filetype=obj -triple=aarch64 %t/asm -o %t.o
// RUN: .text_low 0x2000: { *(.text_low) } \ // RUN: ld.lld --script %t/lds %t.o -o %t/out
// RUN: .text_high 0x8002000 : { *(.text_high) } \ // RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t/out | FileCheck %s
// RUN: } " > %t.script // RUN: llvm-nm --no-sort --special-syms %t/out | FileCheck --check-prefix=NM %s
// 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
//--- asm
// Check that we have the out of branch range calculation right. The immediate // Check that we have the out of branch range calculation right. The immediate
// field is signed so we have a slightly higher negative displacement. // field is signed so we have a slightly higher negative displacement.
.section .text_low, "ax", %progbits .section .text_low, "ax", %progbits
@ -65,3 +63,13 @@ high_target:
/// Global symbols. /// Global symbols.
// NM-NEXT: T _start // NM-NEXT: T _start
// NM-NEXT: T high_target // 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
}

View File

@ -2,6 +2,7 @@
// RUN: llvm-mc -filetype=obj -triple=aarch64-linux-gnu %s -o %t.o // RUN: llvm-mc -filetype=obj -triple=aarch64-linux-gnu %s -o %t.o
// RUN: ld.lld %t.o -o %t // 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: 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 // Check that the range extension thunks are dumped close to the aarch64 branch
// range of 128 MiB // range of 128 MiB
.section .text.1, "ax", %progbits .section .text.1, "ax", %progbits

View File

@ -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=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=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: 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 .syntax unified
.thumb .thumb