|  | # This test has a subtle purpose. Because of the specifics of the layout | 
|  | # algorithm if we're not careful cycles can occur when we resolve the order | 
|  | # that we should layout segments in. In this test we're making sure that the | 
|  | # PT_LOAD segment won't set the PT_NOTE segment as the first to be laid out | 
|  | # while the PT_NOTE segment sets the PT_LOAD load to be the first to be laid | 
|  | # out. This problem becomes visible if the layout of the file changes due to | 
|  | # the removal of a section. We use -O binary here because removing a section | 
|  | # in this way won't cause the location of the PT_LOAD segment to change if we | 
|  | # don't. | 
|  |  | 
|  | # RUN: yaml2obj %s -o %t | 
|  | # RUN: llvm-objcopy -R .note -O binary %t %t2 | 
|  | # RUN: od -Ax -t x1 %t2 | FileCheck %s | 
|  |  | 
|  | !ELF | 
|  | FileHeader: | 
|  | Class:           ELFCLASS64 | 
|  | Data:            ELFDATA2LSB | 
|  | Type:            ET_EXEC | 
|  | Machine:         EM_X86_64 | 
|  | Sections: | 
|  | - Name:            .note | 
|  | Type:            SHT_PROGBITS | 
|  | Flags:           [ SHF_ALLOC ] | 
|  | Address:         0x1000 | 
|  | AddressAlign:    0x1000 | 
|  | Content:         "32323232" | 
|  | Size:            32 | 
|  | - Name:            .rodata | 
|  | Flags:           [ SHF_ALLOC ] | 
|  | Type:            SHT_PROGBITS | 
|  | Address:         0x1020 | 
|  | Size:            4064 | 
|  | Content:         "DEADBEEF" | 
|  | ProgramHeaders: | 
|  | - Type: PT_LOAD | 
|  | Flags: [ PF_R ] | 
|  | VAddr: 0x1000 | 
|  | PAddr: 0x1000 | 
|  | Sections: | 
|  | - Section: .note | 
|  | - Section: .rodata | 
|  | - Type: PT_NOTE | 
|  | Flags: [ PF_R ] | 
|  | VAddr: 0x1000 | 
|  | PAddr: 0x1000 | 
|  | Sections: | 
|  | - Section: .note | 
|  |  | 
|  | # CHECK: 000000 de ad be ef |