# RUN: yaml2obj --docnum=1 %s -o %t # RUN: llvm-readobj -l %t | FileCheck %s --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_EXEC Machine: EM_X86_64 Sections: - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] AddressAlign: 0x0000000000001000 Content: "00000000" - Name: .init Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] Content: "00000000" AddressAlign: 0x0000000000000010 - Name: .data Type: SHT_PROGBITS Flags: [ SHF_ALLOC ] Content: "00000000" AddressAlign: 0x0000000000001000 ProgramHeaders: - Type: PT_LOAD Flags: [ PF_X, PF_R ] VAddr: 0xAAAA1000 PAddr: 0xFFFF1000 Sections: - Section: .text - Section: .init - Type: PT_LOAD Flags: [ PF_R ] VAddr: 0xAAAA2000 PAddr: 0xFFFF2000 Sections: - Section: .data - Type: PT_GNU_EH_FRAME - Type: PT_GNU_STACK - Type: PT_GNU_RELRO - Type: PT_GNU_PROPERTY #CHECK: ProgramHeaders [ #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_LOAD #CHECK-NEXT: Offset: 0x1000 #CHECK-NEXT: VirtualAddress: 0xAAAA1000 #CHECK-NEXT: PhysicalAddress: 0xFFFF1000 #CHECK-NEXT: FileSize: 20 #CHECK-NEXT: MemSize: 20 #CHECK-NEXT: Flags [ #CHECK-NEXT: PF_R #CHECK-NEXT: PF_X #CHECK-NEXT: ] #CHECK-NEXT: Alignment: 4096 #CHECK-NEXT: } #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_LOAD #CHECK-NEXT: Offset: 0x2000 #CHECK-NEXT: VirtualAddress: 0xAAAA2000 #CHECK-NEXT: PhysicalAddress: 0xFFFF2000 #CHECK-NEXT: FileSize: 4 #CHECK-NEXT: MemSize: 4 #CHECK-NEXT: Flags [ #CHECK-NEXT: PF_R #CHECK-NEXT: ] #CHECK-NEXT: Alignment: 4096 #CHECK-NEXT: } #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_GNU_EH_FRAME (0x6474E550) #CHECK: } #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_GNU_STACK (0x6474E551) #CHECK: } #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_GNU_RELRO (0x6474E552) #CHECK: } #CHECK-NEXT: ProgramHeader { #CHECK-NEXT: Type: PT_GNU_PROPERTY (0x6474E553) #CHECK: } #CHECK-NEXT:] ## Check we do not allow referencing sections that do not exist. # RUN: not yaml2obj --docnum=2 %s -o %t 2>&1 | FileCheck %s --check-prefix=ERR # ERR: error: unknown section or fill referenced: '.foo' by program header # ERR: error: unknown section or fill referenced: '.bar' by program header --- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_EXEC Machine: EM_X86_64 ProgramHeaders: - Type: PT_LOAD Sections: - Section: .foo - Section: .bar