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