# REQUIRES: x86

# RUN: split-file %s %t
# RUN: llvm-mc -filetype=obj -triple=x86_64 %t/a.s -o %t/a.o

## Check if the linker can generate the final file, containing all non-empty sections,
## without warnings for .intvec0_out, .intvec1_out1, .intvec2_out, because their
## input sections are empty. Althoung, the linker must generate a warning for the
## first ".nonalloc" section and the second .dat, as expected.

# RUN: ld.lld %t/a.o -T %t/a.lds -o %t/a.elf 2>&1 | FileCheck %s --check-prefix=WARN --implicit-check-not=warning:

# WARN: warning: ignoring memory region assignment for non-allocatable section '.nonalloc'
# WARN: warning: ignoring memory region assignment for non-allocatable section '.dat'

## The output file must include all sections.
# RUN: llvm-readelf -S %t/a.elf | FileCheck %s

# CHECK:      There are 12 section headers, starting at offset 0x2138:
# CHECK:      [Nr] Name         Type      Address          Off    Size   ES Flg Lk Inf Al
# CHECK-NEXT: [ 0]              NULL      0000000000000000 000000 000000 00     0  0   0
# CHECK-NEXT: [ 1] .nonalloc    PROGBITS  0000000000000000 001064 001000 00 W   0  0   1
# CHECK-NEXT: [ 2] .dat         PROGBITS  0000000000000000 002064 000004 00 W   0  0   1
# CHECK-NEXT: [ 3] .intvec0_out PROGBITS  0000000000000000 002068 000000 00 W   0  0   1
# CHECK-NEXT: [ 4] .intvec1_out PROGBITS  0000000000000000 002068 000000 00 W   0  0   1
# CHECK-NEXT: [ 5] .intvec2_out PROGBITS  0000000000000000 002068 000000 00 W   0  0   1
# CHECK-NEXT: [ 6] .intvec3_out PROGBITS  00000000803fe060 001060 000004 00 AX  0  0   1
# CHECK-NEXT: [ 7] .text        PROGBITS  00000000803fe064 001064 000000 00 AX  0  0   4
# CHECK-NEXT: [ 8] .comment     PROGBITS  0000000000000000 {{.*}} {{.*}} 01 MS  0  0   1
# CHECK-NEXT: [ 9] .symtab      SYMTAB    0000000000000000 {{.*}} {{.*}} 18     11 1   8
# CHECK-NEXT: [10] .shstrtab    STRTAB    0000000000000000 {{.*}} {{.*}} 00     0  0   1
# CHECK-NEXT: [11] .strtab      STRTAB    0000000000000000 {{.*}} {{.*}} 00     0  0   1


#--- a.s
.global _start
.text
_start:
.section .nonalloc,"w"
.zero 0x1000
.section .intvec3,"ax",@progbits
.long 1

#--- a.lds
MEMORY {
  MEM1 : ORIGIN = 0x10000000, LENGTH = 1M
  MEM2 (rx) : ORIGIN = 0x80000000, LENGTH = 4M
}

VEC_START = 0x803FE000;

SECTIONS {
 .nonalloc : { *(.nonalloc) } > MEM
 .dat : { LONG(0); } > MEM1
 .intvec0_out (VEC_START + 0x0000) : {KEEP (*(.intvec1)) } > MEM2
 .intvec1_out (VEC_START + 0x0020) : {KEEP (*(.intvec1)) } > MEM2
 .intvec2_out (VEC_START + 0x0040) : {KEEP (*(.intvec2)) } > MEM2
 .intvec3_out (VEC_START + 0x0060) : {KEEP (*(.intvec3)) } > MEM2
}
