|  | # RUN: yaml2obj %s -o %t | 
|  | # RUN: llvm-objcopy %t %t2 | 
|  | # RUN: llvm-readobj -program-headers %t2 | FileCheck %s | 
|  |  | 
|  | !ELF | 
|  | FileHeader: | 
|  | Class:           ELFCLASS32 | 
|  | Data:            ELFDATA2LSB | 
|  | Type:            ET_EXEC | 
|  | Machine:         EM_ARM | 
|  | Sections: | 
|  | - Name:            .text | 
|  | Type:            SHT_PROGBITS | 
|  | Flags:           [ SHF_ALLOC, SHF_EXECINSTR ] | 
|  | Address:         0x1000 | 
|  | AddressAlign:    0x0000000000001000 | 
|  | Content:         "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | 
|  | - Name:            .data | 
|  | Type:            SHT_PROGBITS | 
|  | Flags:           [ SHF_ALLOC ] | 
|  | Address:         0x2000 | 
|  | AddressAlign:    0x0000000000001000 | 
|  | Content:         "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" | 
|  | - Name:            .xdata | 
|  | Type:            SHT_PROGBITS | 
|  | Flags:           [ SHF_ALLOC ] | 
|  | - Name:            .after | 
|  | Type:            SHT_NOBITS | 
|  | Flags:           [ SHF_ALLOC ] | 
|  | Size:            64 | 
|  | ProgramHeaders: | 
|  | - Type: PT_LOAD | 
|  | Flags: [ PF_X, PF_R ] | 
|  | VAddr: 0x1000 | 
|  | PAddr: 0x1000 | 
|  | Align: 0x1000 | 
|  | Sections: | 
|  | - Section: .text | 
|  | - Type: PT_LOAD | 
|  | Flags: [ PF_R, PF_W ] | 
|  | VAddr: 0x2000 | 
|  | PAddr: 0x2000 | 
|  | Align: 0x1000 | 
|  | Sections: | 
|  | - Section: .data | 
|  | - Type: 0x6474e551 # GNU_STACK | 
|  | Flags: [ PF_R, PF_W ] | 
|  | VAddr: 0x0000 | 
|  | PAddr: 0x0000 | 
|  | Align: 0x0000 | 
|  | - Type: PT_LOAD | 
|  | Flags: [ PF_R ] | 
|  | VAddr: 0x2010 | 
|  | PAddr: 0x2010 | 
|  | Sections: | 
|  | - Section: .xdata | 
|  | - Section: .after | 
|  |  | 
|  | #CHECK:     ProgramHeaders [ | 
|  | #CHECK-NEXT:   ProgramHeader { | 
|  | #CHECK-NEXT:    Type: PT_LOAD | 
|  | #CHECK-NEXT:    Offset: 0x1000 | 
|  | #CHECK-NEXT:    VirtualAddress: 0x1000 | 
|  | #CHECK-NEXT:    PhysicalAddress: 0x1000 | 
|  | #CHECK-NEXT:    FileSize: 16 | 
|  | #CHECK-NEXT:    MemSize: 16 | 
|  | #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: 0x2000 | 
|  | #CHECK-NEXT:    PhysicalAddress: 0x2000 | 
|  | #CHECK-NEXT:    FileSize: 16 | 
|  | #CHECK-NEXT:    MemSize: 16 | 
|  | #CHECK-NEXT:    Flags [ | 
|  | #CHECK-NEXT:      PF_R | 
|  | #CHECK-NEXT:      PF_W | 
|  | #CHECK-NEXT:    ] | 
|  | #CHECK-NEXT:    Alignment: 4096 | 
|  | #CHECK-NEXT:  } | 
|  | #CHECK-NEXT:  ProgramHeader { | 
|  | #CHECK-NEXT:    Type: PT_GNU_STACK | 
|  | #CHECK-NEXT:    Offset: 0x0 | 
|  | #CHECK-NEXT:    VirtualAddress: 0x0 | 
|  | #CHECK-NEXT:    PhysicalAddress: 0x0 | 
|  | #CHECK-NEXT:    FileSize: 0 | 
|  | #CHECK-NEXT:    MemSize: 0 | 
|  | #CHECK-NEXT:    Flags [ | 
|  | #CHECK-NEXT:      PF_R | 
|  | #CHECK-NEXT:      PF_W | 
|  | #CHECK-NEXT:    ] | 
|  | #CHECK-NEXT:    Alignment: 0 | 
|  | #CHECK-NEXT:  } | 
|  | #CHECK-NEXT:  ProgramHeader { | 
|  | #CHECK-NEXT:    Type: PT_LOAD | 
|  | #CHECK-NEXT:    Offset: 0x2010 | 
|  | #CHECK-NEXT:    VirtualAddress: 0x2010 | 
|  | #CHECK-NEXT:    PhysicalAddress: 0x2010 | 
|  | #CHECK-NEXT:    FileSize: 0 | 
|  | #CHECK-NEXT:    MemSize: 64 | 
|  | #CHECK-NEXT:    Flags [ | 
|  | #CHECK-NEXT:      PF_R | 
|  | #CHECK-NEXT:    ] | 
|  | #CHECK-NEXT:    Alignment: 1 | 
|  | #CHECK-NEXT:  } | 
|  | #CHECK-NEXT:] |