xref: /aosp_15_r20/external/elfutils/tests/run-getphdrnum.sh (revision 7304104da70ce23c86437a01be71edd1a2d7f37e)
1*7304104dSAndroid Build Coastguard Worker#! /bin/sh
2*7304104dSAndroid Build Coastguard Worker
3*7304104dSAndroid Build Coastguard Worker# testfile-phdrs.elf generated with python3 script
4*7304104dSAndroid Build Coastguard Worker# import struct
5*7304104dSAndroid Build Coastguard Worker# import sys
6*7304104dSAndroid Build Coastguard Worker#
7*7304104dSAndroid Build Coastguard Worker# phnum = 66000
8*7304104dSAndroid Build Coastguard Worker#
9*7304104dSAndroid Build Coastguard Worker# sys.stdout.buffer.write(
10*7304104dSAndroid Build Coastguard Worker#     struct.pack(
11*7304104dSAndroid Build Coastguard Worker#         "<16BHHIQQQIHHHHHH",
12*7304104dSAndroid Build Coastguard Worker#         # EI_MAG
13*7304104dSAndroid Build Coastguard Worker#         *b"\x7fELF",
14*7304104dSAndroid Build Coastguard Worker#         # EI_CLASS = ELFCLASS64
15*7304104dSAndroid Build Coastguard Worker#         2,
16*7304104dSAndroid Build Coastguard Worker#         # EI_DATA = ELFDATA2LSB
17*7304104dSAndroid Build Coastguard Worker#         1,
18*7304104dSAndroid Build Coastguard Worker#         # EI_VERSION
19*7304104dSAndroid Build Coastguard Worker#         1,
20*7304104dSAndroid Build Coastguard Worker#         # EI_OSABI = ELFOSABI_SYSV
21*7304104dSAndroid Build Coastguard Worker#         0,
22*7304104dSAndroid Build Coastguard Worker#         # EI_ABIVERSION
23*7304104dSAndroid Build Coastguard Worker#         0,
24*7304104dSAndroid Build Coastguard Worker#         # EI_PAD
25*7304104dSAndroid Build Coastguard Worker#         *bytes(7),
26*7304104dSAndroid Build Coastguard Worker#         # e_type = ET_CORE
27*7304104dSAndroid Build Coastguard Worker#         4,
28*7304104dSAndroid Build Coastguard Worker#         # e_machine = EM_X86_64
29*7304104dSAndroid Build Coastguard Worker#         62,
30*7304104dSAndroid Build Coastguard Worker#         # e_version
31*7304104dSAndroid Build Coastguard Worker#         1,
32*7304104dSAndroid Build Coastguard Worker#         # e_entry
33*7304104dSAndroid Build Coastguard Worker#         0,
34*7304104dSAndroid Build Coastguard Worker#         # e_phoff = sizeof(Elf64_Ehdr) + sizeof(Elf64_Shdr)
35*7304104dSAndroid Build Coastguard Worker#         128,
36*7304104dSAndroid Build Coastguard Worker#         # e_shoff = sizeof(Elf64_Ehdr)
37*7304104dSAndroid Build Coastguard Worker#         64,
38*7304104dSAndroid Build Coastguard Worker#         # e_flags
39*7304104dSAndroid Build Coastguard Worker#         0,
40*7304104dSAndroid Build Coastguard Worker#         # e_ehsize
41*7304104dSAndroid Build Coastguard Worker#         64,
42*7304104dSAndroid Build Coastguard Worker#         # e_phentsize
43*7304104dSAndroid Build Coastguard Worker#         56,
44*7304104dSAndroid Build Coastguard Worker#         # e_phnum = PN_XNUM
45*7304104dSAndroid Build Coastguard Worker#         0xFFFF,
46*7304104dSAndroid Build Coastguard Worker#         # e_shentsize
47*7304104dSAndroid Build Coastguard Worker#         64,
48*7304104dSAndroid Build Coastguard Worker#         # e_shnum
49*7304104dSAndroid Build Coastguard Worker#         1,
50*7304104dSAndroid Build Coastguard Worker#         # e_shstrndx
51*7304104dSAndroid Build Coastguard Worker#         0,
52*7304104dSAndroid Build Coastguard Worker#     )
53*7304104dSAndroid Build Coastguard Worker# )
54*7304104dSAndroid Build Coastguard Worker#
55*7304104dSAndroid Build Coastguard Worker# sys.stdout.buffer.write(
56*7304104dSAndroid Build Coastguard Worker#     struct.pack(
57*7304104dSAndroid Build Coastguard Worker#         "<IIQQQQIIQQ",
58*7304104dSAndroid Build Coastguard Worker#         # sh_name
59*7304104dSAndroid Build Coastguard Worker#         0,
60*7304104dSAndroid Build Coastguard Worker#         # sh_type = SHT_NULL
61*7304104dSAndroid Build Coastguard Worker#         0,
62*7304104dSAndroid Build Coastguard Worker#         # sh_flags
63*7304104dSAndroid Build Coastguard Worker#         0,
64*7304104dSAndroid Build Coastguard Worker#         # sh_addr
65*7304104dSAndroid Build Coastguard Worker#         0,
66*7304104dSAndroid Build Coastguard Worker#         # sh_offset
67*7304104dSAndroid Build Coastguard Worker#         0,
68*7304104dSAndroid Build Coastguard Worker#         # sh_size
69*7304104dSAndroid Build Coastguard Worker#         0,
70*7304104dSAndroid Build Coastguard Worker#         # sh_link
71*7304104dSAndroid Build Coastguard Worker#         0,
72*7304104dSAndroid Build Coastguard Worker#         # sh_info
73*7304104dSAndroid Build Coastguard Worker#         phnum,
74*7304104dSAndroid Build Coastguard Worker#         # sh_addralign
75*7304104dSAndroid Build Coastguard Worker#         0,
76*7304104dSAndroid Build Coastguard Worker#         # sh_entsize
77*7304104dSAndroid Build Coastguard Worker#         0,
78*7304104dSAndroid Build Coastguard Worker#     )
79*7304104dSAndroid Build Coastguard Worker# )
80*7304104dSAndroid Build Coastguard Worker#
81*7304104dSAndroid Build Coastguard Worker# for i in range(phnum):
82*7304104dSAndroid Build Coastguard Worker#     sys.stdout.buffer.write(
83*7304104dSAndroid Build Coastguard Worker#         struct.pack(
84*7304104dSAndroid Build Coastguard Worker#             "<IIQQQQQQ",
85*7304104dSAndroid Build Coastguard Worker#             # p_type = PT_LOAD
86*7304104dSAndroid Build Coastguard Worker#             1,
87*7304104dSAndroid Build Coastguard Worker#             # p_flags = PF_X|PF_W|PF_R
88*7304104dSAndroid Build Coastguard Worker#             0x7,
89*7304104dSAndroid Build Coastguard Worker#             # p_offset
90*7304104dSAndroid Build Coastguard Worker#             0,
91*7304104dSAndroid Build Coastguard Worker#             # p_vaddr
92*7304104dSAndroid Build Coastguard Worker#             # i * 4096,
93*7304104dSAndroid Build Coastguard Worker#             4096,
94*7304104dSAndroid Build Coastguard Worker#             # p_paddr
95*7304104dSAndroid Build Coastguard Worker#             0,
96*7304104dSAndroid Build Coastguard Worker#             # p_filesz
97*7304104dSAndroid Build Coastguard Worker#             0,
98*7304104dSAndroid Build Coastguard Worker#             # p_memsz
99*7304104dSAndroid Build Coastguard Worker#             4096,
100*7304104dSAndroid Build Coastguard Worker#             # p_align
101*7304104dSAndroid Build Coastguard Worker#             0,
102*7304104dSAndroid Build Coastguard Worker#         )
103*7304104dSAndroid Build Coastguard Worker#     )
104*7304104dSAndroid Build Coastguard Worker
105*7304104dSAndroid Build Coastguard Worker. $srcdir/test-subr.sh
106*7304104dSAndroid Build Coastguard Worker
107*7304104dSAndroid Build Coastguard Workertestfiles testfile-phdrs.elf
108*7304104dSAndroid Build Coastguard Worker
109*7304104dSAndroid Build Coastguard Workertestrun_compare ${abs_top_builddir}/src/readelf -h testfile-phdrs.elf<<\EOF
110*7304104dSAndroid Build Coastguard WorkerELF Header:
111*7304104dSAndroid Build Coastguard Worker  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
112*7304104dSAndroid Build Coastguard Worker  Class:                             ELF64
113*7304104dSAndroid Build Coastguard Worker  Data:                              2's complement, little endian
114*7304104dSAndroid Build Coastguard Worker  Ident Version:                     1 (current)
115*7304104dSAndroid Build Coastguard Worker  OS/ABI:                            UNIX - System V
116*7304104dSAndroid Build Coastguard Worker  ABI Version:                       0
117*7304104dSAndroid Build Coastguard Worker  Type:                              CORE (Core file)
118*7304104dSAndroid Build Coastguard Worker  Machine:                           AMD x86-64
119*7304104dSAndroid Build Coastguard Worker  Version:                           1 (current)
120*7304104dSAndroid Build Coastguard Worker  Entry point address:               0
121*7304104dSAndroid Build Coastguard Worker  Start of program headers:          128 (bytes into file)
122*7304104dSAndroid Build Coastguard Worker  Start of section headers:          64 (bytes into file)
123*7304104dSAndroid Build Coastguard Worker  Flags:
124*7304104dSAndroid Build Coastguard Worker  Size of this header:               64 (bytes)
125*7304104dSAndroid Build Coastguard Worker  Size of program header entries:    56 (bytes)
126*7304104dSAndroid Build Coastguard Worker  Number of program headers entries: 65535 (66000 in [0].sh_info)
127*7304104dSAndroid Build Coastguard Worker  Size of section header entries:    64 (bytes)
128*7304104dSAndroid Build Coastguard Worker  Number of section headers entries: 1
129*7304104dSAndroid Build Coastguard Worker  Section header string table index: 0
130*7304104dSAndroid Build Coastguard Worker
131*7304104dSAndroid Build Coastguard WorkerEOF
132*7304104dSAndroid Build Coastguard Worker
133*7304104dSAndroid Build Coastguard Workertestrun_compare ${abs_builddir}/getphdrnum testfile-phdrs.elf<<\EOF
134*7304104dSAndroid Build Coastguard Worker66000
135*7304104dSAndroid Build Coastguard WorkerEOF
136*7304104dSAndroid Build Coastguard Worker
137*7304104dSAndroid Build Coastguard Workerexit 0
138