Files
clang-p2996/lld/test/ELF/linkerscript/noload.s
Konstantin Schwarz 5d621ed85d [ELF] Consider that NOLOAD sections should be placed in a PT_LOAD segment
During PHDR creation, the case where an output section does not require a
PT_LOAD header but still occupies memory in the current VMA region was not handled.

If such an output section interleaves two output sections that have the same
VMA and LMA regions set, we would previously re-use the existing PT_LOAD header
for the second output section.
However, since the memory region is not contiguous, we need to start a new PT_LOAD
segment.

This fixes https://bugs.llvm.org/show_bug.cgi?id=50558

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D103815
2021-06-16 12:36:45 +02:00

36 lines
1.2 KiB
ArmAsm

# REQUIRES: x86
# RUN: split-file %s %t
# RUN: llvm-mc -filetype=obj -triple=x86_64 %t/asm -o %t.o
# RUN: ld.lld --script %t/lds %t.o -o %t/out
# RUN: llvm-readelf -S -l %t/out | FileCheck %s
# CHECK: Name Type Address Off Size
# CHECK: .data_noload_a NOBITS 0000000000000000 [[OFF:[0-9a-f]+]] 001000
# CHECK-NEXT: .data_noload_b NOBITS 0000000000010000 [[OFF]] 001000
# CHECK-NEXT: .no_input_sec_noload NOBITS 0000000000011000 [[OFF]] 000001
# CHECK: Type Offset VirtAddr PhysAddr
# CHECK-NEXT: LOAD 0x001000 0x0000000000000000 0x0000000000000000
# CHECK-NEXT: LOAD 0x001000 0x0000000000020000 0x0000000000020000
# CHECK: 00 .data_noload_a .data_noload_b .no_input_sec_noload {{$}}
# CHECK: 01 .text {{$}}
#--- asm
.section .text,"ax",@progbits
nop
.section .data_noload_a,"aw",@progbits
.zero 4096
.section .data_noload_b,"aw",@progbits
.zero 4096
#--- lds
SECTIONS {
.data_noload_a (NOLOAD) : { *(.data_noload_a) }
.data_noload_b (0x10000) (NOLOAD) : { *(.data_noload_b) }
.no_input_sec_noload (NOLOAD) : { . += 1; }
.text (0x20000) : { *(.text) }
}