Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / tools / llvm-objcopy / ELF / parent-loop-check.test
blob2fa126904727b4de9862d23aa5d5cbea675d0fff
1 # This test has a subtle purpose. Because of the specifics of the layout
2 # algorithm if we're not careful cycles can occur when we resolve the order
3 # that we should layout segments in. In this test we're making sure that the
4 # PT_LOAD segment won't set the PT_NOTE segment as the first to be laid out
5 # while the PT_NOTE segment sets the PT_LOAD load to be the first to be laid
6 # out. This problem becomes visible if the layout of the file changes due to
7 # the removal of a section. We use -O binary here because removing a section
8 # in this way won't cause the location of the PT_LOAD segment to change if we
9 # don't.
11 # RUN: yaml2obj %s -o %t
12 # RUN: llvm-objcopy -R .note -O binary %t %t2
13 # RUN: od -Ax -t x1 %t2 | FileCheck %s
15 !ELF
16 FileHeader:
17   Class:           ELFCLASS64
18   Data:            ELFDATA2LSB
19   Type:            ET_EXEC
20   Machine:         EM_X86_64
21 Sections:
22   - Name:            .note
23     Type:            SHT_PROGBITS
24     Flags:           [ SHF_ALLOC ]
25     Address:         0x1000
26     AddressAlign:    0x1000
27     Content:         "32323232"
28     Size:            32
29   - Name:            .rodata
30     Flags:           [ SHF_ALLOC ]
31     Type:            SHT_PROGBITS
32     Address:         0x1020
33     Size:            4064
34     Content:         "DEADBEEF"
35 ProgramHeaders:
36   - Type:     PT_LOAD
37     Flags:    [ PF_R ]
38     VAddr:    0x1000
39     FirstSec: .note
40     LastSec:  .rodata
41   - Type:     PT_NOTE
42     Flags:    [ PF_R ]
43     VAddr:    0x1000
44     FirstSec: .note
45     LastSec:  .note
47 # CHECK: 000000 de ad be ef