gold/ChangeLog:
[deliverable/binutils-gdb.git] / gold / testsuite / testfile.cc
CommitLineData
5a6f7e2d
ILT
1// testfile.cc -- Dummy ELF objects for testing purposes.
2
6d03d481 3// Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
6cb15b7f
ILT
4// Written by Ian Lance Taylor <iant@google.com>.
5
6// This file is part of gold.
7
8// This program is free software; you can redistribute it and/or modify
9// it under the terms of the GNU General Public License as published by
10// the Free Software Foundation; either version 3 of the License, or
11// (at your option) any later version.
12
13// This program is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU General Public License for more details.
17
18// You should have received a copy of the GNU General Public License
19// along with this program; if not, write to the Free Software
20// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
21// MA 02110-1301, USA.
22
5a6f7e2d
ILT
23#include "gold.h"
24
25#include "target.h"
26#include "target-select.h"
27
28#include "test.h"
29#include "testfile.h"
30
31namespace gold_testsuite
32{
33
34using namespace gold;
35
36// A Target used for testing purposes.
37
6340166c
ILT
38template<int size, bool big_endian>
39class Target_test : public Sized_target<size, big_endian>
5a6f7e2d
ILT
40{
41 public:
42 Target_test()
6340166c 43 : Sized_target<size, big_endian>(&test_target_info)
5a6f7e2d
ILT
44 { }
45
6d03d481 46 void
ad0f2072
ILT
47 gc_process_relocs(Symbol_table*, Layout*, Sized_relobj<size, big_endian>*,
48 unsigned int, unsigned int, const unsigned char*, size_t,
49 Output_section*, bool, size_t, const unsigned char*)
6d03d481
ST
50 { ERROR("call to Target_test::gc_process_relocs"); }
51
5a6f7e2d 52 void
ad0f2072
ILT
53 scan_relocs(Symbol_table*, Layout*, Sized_relobj<size, big_endian>*,
54 unsigned int, unsigned int, const unsigned char*, size_t,
55 Output_section*, bool, size_t, const unsigned char*)
5a6f7e2d
ILT
56 { ERROR("call to Target_test::scan_relocs"); }
57
58 void
6340166c 59 relocate_section(const Relocate_info<size, big_endian>*, unsigned int,
730cdc88
ILT
60 const unsigned char*, size_t, Output_section*, bool,
61 unsigned char*, typename elfcpp::Elf_types<size>::Elf_Addr,
364c7fa5 62 section_size_type, const Reloc_symbol_changes*)
5a6f7e2d
ILT
63 { ERROR("call to Target_test::relocate_section"); }
64
6a74a719 65 void
ad0f2072 66 scan_relocatable_relocs(Symbol_table*, Layout*,
6a74a719
ILT
67 Sized_relobj<size, big_endian>*, unsigned int,
68 unsigned int, const unsigned char*,
69 size_t, Output_section*, bool, size_t,
70 const unsigned char*, Relocatable_relocs*)
71 { ERROR("call to Target_test::scan_relocatable_relocs"); }
72
73 void
74 relocate_for_relocatable(const Relocate_info<size, big_endian>*,
75 unsigned int, const unsigned char*, size_t,
76 Output_section*, off_t, const Relocatable_relocs*,
77 unsigned char*,
78 typename elfcpp::Elf_types<size>::Elf_Addr,
79 section_size_type, unsigned char*,
80 section_size_type)
81 { ERROR("call to Target_test::relocate_for_relocatable"); }
82
5a6f7e2d
ILT
83 static const Target::Target_info test_target_info;
84};
85
6340166c
ILT
86template<int size, bool big_endian>
87const Target::Target_info Target_test<size, big_endian>::test_target_info =
5a6f7e2d 88{
6340166c
ILT
89 size, // size
90 big_endian, // is_big_endian
5a6f7e2d
ILT
91 static_cast<elfcpp::EM>(0xffff), // machine_code
92 false, // has_make_symbol
93 false, // has_resolve
be9d5a93 94 false, // has_code_fill
35cdfc9a 95 false, // is_default_stack_executable
0864d551 96 '\0', // wrap_char
5a6f7e2d 97 "/dummy", // dynamic_linker
0c5e9c22 98 0x08000000, // default_text_segment_address
5a6f7e2d 99 0x1000, // abi_pagesize
8a5e3e08
ILT
100 0x1000, // common_pagesize
101 elfcpp::SHN_UNDEF, // small_common_shndx
102 elfcpp::SHN_UNDEF, // large_common_shndx
103 0, // small_common_section_flags
05a352e6
DK
104 0, // large_common_section_flags
105 NULL, // attributes_section
106 NULL // attributes_vendor
5a6f7e2d
ILT
107};
108
6340166c 109// The test targets.
5a6f7e2d 110
6340166c
ILT
111#ifdef HAVE_TARGET_32_LITTLE
112Target_test<32, false> target_test_32_little;
113#endif
5a6f7e2d 114
6340166c
ILT
115#ifdef HAVE_TARGET_32_BIG
116Target_test<32, true> target_test_32_big;
117#endif
5a6f7e2d 118
6340166c
ILT
119#ifdef HAVE_TARGET_64_LITTLE
120Target_test<64, false> target_test_64_little;
121#endif
5a6f7e2d 122
6340166c
ILT
123#ifdef HAVE_TARGET_64_BIG
124Target_test<64, true> target_test_64_big;
125#endif
5a6f7e2d 126
6340166c
ILT
127// A pointer to the test targets. This is used in CHECKs.
128
129#ifdef HAVE_TARGET_32_LITTLE
130Target* target_test_pointer_32_little = &target_test_32_little;
131#endif
132
133#ifdef HAVE_TARGET_32_BIG
134Target* target_test_pointer_32_big = &target_test_32_big;
135#endif
136
137#ifdef HAVE_TARGET_64_LITTLE
138Target* target_test_pointer_64_little = &target_test_64_little;
139#endif
140
141#ifdef HAVE_TARGET_64_BIG
142Target* target_test_pointer_64_big = &target_test_64_big;
143#endif
144
145// Select the test targets.
146
147template<int size, bool big_endian>
5a6f7e2d
ILT
148class Target_selector_test : public Target_selector
149{
150 public:
151 Target_selector_test()
e96caa79 152 : Target_selector(0xffff, size, big_endian, NULL)
5a6f7e2d
ILT
153 { }
154
155 Target*
e96caa79
ILT
156 do_instantiate_target()
157 {
158 gold_unreachable();
159 return NULL;
160 }
161
162 Target*
163 do_recognize(int, int, int)
6340166c
ILT
164 {
165 if (size == 32)
166 {
167 if (!big_endian)
168 {
169#ifdef HAVE_TARGET_32_LITTLE
170 return &target_test_32_little;
171#endif
172 }
173 else
174 {
175#ifdef HAVE_TARGET_32_BIG
176 return &target_test_32_big;
177#endif
178 }
179 }
180 else
181 {
182 if (!big_endian)
183 {
184#ifdef HAVE_TARGET_64_LITTLE
185 return &target_test_64_little;
186#endif
187 }
188 else
189 {
190#ifdef HAVE_TARGET_64_BIG
191 return &target_test_64_big;
192#endif
193 }
194 }
195
196 return NULL;
197 }
0daa6f62
ILT
198
199 Target*
e96caa79 200 do_recognize_by_name(const char*)
0daa6f62 201 { return NULL; }
e96caa79
ILT
202
203 void
204 do_supported_names(std::vector<const char*>*)
205 { }
5a6f7e2d
ILT
206};
207
6340166c
ILT
208// Register the test target selectors. These don't need to be
209// conditionally compiled, as they will return NULL if there is no
210// support for them.
5a6f7e2d 211
6340166c
ILT
212Target_selector_test<32, false> target_selector_test_32_little;
213Target_selector_test<32, true> target_selector_test_32_big;
214Target_selector_test<64, false> target_selector_test_64_little;
215Target_selector_test<64, true> target_selector_test_64_big;
5a6f7e2d
ILT
216
217// A simple ELF object with one empty section, named ".test" and one
218// globally visible symbol named "test".
219
6340166c 220const unsigned char test_file_1_32_little[] =
5a6f7e2d
ILT
221{
222 // Ehdr
223 // EI_MAG[0-3]
224 0x7f, 'E', 'L', 'F',
225 // EI_CLASS: 32 bit.
226 1,
227 // EI_DATA: little endian
228 1,
229 // EI_VERSION
230 1,
231 // EI_OSABI
232 0,
233 // EI_ABIVERSION
234 0,
235 // EI_PAD
236 0, 0, 0, 0, 0, 0, 0,
237 // e_type: ET_REL
238 1, 0,
239 // e_machine: a magic value used for testing.
240 0xff, 0xff,
241 // e_version
242 1, 0, 0, 0,
243 // e_entry
244 0, 0, 0, 0,
245 // e_phoff
246 0, 0, 0, 0,
247 // e_shoff: starts right after file header
248 52, 0, 0, 0,
249 // e_flags
250 0, 0, 0, 0,
251 // e_ehsize
252 52, 0,
253 // e_phentsize
254 32, 0,
255 // e_phnum
256 0, 0,
257 // e_shentsize
258 40, 0,
259 // e_shnum: dummy, .test, .symtab, .strtab, .shstrtab
260 5, 0,
261 // e_shstrndx
262 4, 0,
263
264 // Offset 52
265 // Shdr 0: dummy entry
266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
268 0, 0, 0, 0, 0, 0, 0, 0,
269
270 // Offset 92
271 // Shdr 1: .test
272 // sh_name: after initial null
273 1, 0, 0, 0,
274 // sh_type: SHT_PROGBITS
275 1, 0, 0, 0,
276 // sh_flags: SHF_ALLOC
277 2, 0, 0, 0,
278 // sh_addr
279 0, 0, 0, 0,
280 // sh_offset: after file header + 5 section headers
281 252, 0, 0, 0,
282 // sh_size
283 0, 0, 0, 0,
284 // sh_link
285 0, 0, 0, 0,
286 // sh_info
287 0, 0, 0, 0,
288 // sh_addralign
289 1, 0, 0, 0,
290 // sh_entsize
291 0, 0, 0, 0,
292
293 // Offset 132
294 // Shdr 2: .symtab
295 // sh_name: 1 null byte + ".test\0"
296 7, 0, 0, 0,
297 // sh_type: SHT_SYMTAB
298 2, 0, 0, 0,
299 // sh_flags
300 0, 0, 0, 0,
301 // sh_addr
302 0, 0, 0, 0,
303 // sh_offset: after file header + 5 section headers + empty section
304 252, 0, 0, 0,
305 // sh_size: two symbols: dummy symbol + test symbol
306 32, 0, 0, 0,
307 // sh_link: to .strtab
308 3, 0, 0, 0,
309 // sh_info: one local symbol, the dummy symbol
310 1, 0, 0, 0,
311 // sh_addralign
312 4, 0, 0, 0,
313 // sh_entsize: size of symbol
314 16, 0, 0, 0,
315
316 // Offset 172
317 // Shdr 3: .strtab
318 // sh_name: 1 null byte + ".test\0" + ".symtab\0"
319 15, 0, 0, 0,
320 // sh_type: SHT_STRTAB
321 3, 0, 0, 0,
322 // sh_flags
323 0, 0, 0, 0,
324 // sh_addr
325 0, 0, 0, 0,
326 // sh_offset: after .symtab section. 284 == 0x11c
327 0x1c, 0x1, 0, 0,
328 // sh_size: 1 null byte + "test\0"
329 6, 0, 0, 0,
330 // sh_link
331 0, 0, 0, 0,
332 // sh_info
333 0, 0, 0, 0,
334 // sh_addralign
335 1, 0, 0, 0,
336 // sh_entsize
337 0, 0, 0, 0,
338
339 // Offset 212
340 // Shdr 4: .shstrtab
341 // sh_name: 1 null byte + ".test\0" + ".symtab\0" + ".strtab\0"
342 23, 0, 0, 0,
343 // sh_type: SHT_STRTAB
344 3, 0, 0, 0,
345 // sh_flags
346 0, 0, 0, 0,
347 // sh_addr
348 0, 0, 0, 0,
349 // sh_offset: after .strtab section. 290 == 0x122
350 0x22, 0x1, 0, 0,
351 // sh_size: all section names
352 33, 0, 0, 0,
353 // sh_link
354 0, 0, 0, 0,
355 // sh_info
356 0, 0, 0, 0,
357 // sh_addralign
358 1, 0, 0, 0,
359 // sh_entsize
360 0, 0, 0, 0,
361
362 // Offset 252
363 // Contents of .symtab section
364 // Symbol 0
365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
366
367 // Offset 268
368 // Symbol 1
369 // st_name
370 1, 0, 0, 0,
371 // st_value
372 0, 0, 0, 0,
373 // st_size
374 0, 0, 0, 0,
375 // st_info: STT_NOTYPE, STB_GLOBAL
376 0x10,
377 // st_other
378 0,
379 // st_shndx: In .test
380 1, 0,
381
382 // Offset 284
383 // Contents of .strtab section
384 '\0',
385 't', 'e', 's', 't', '\0',
386
387 // Offset 290
388 // Contents of .shstrtab section
389 '\0',
390 '.', 't', 'e', 's', 't', '\0',
391 '.', 's', 'y', 'm', 't', 'a', 'b', '\0',
392 '.', 's', 't', 'r', 't', 'a', 'b', '\0',
393 '.', 's', 'h', 's', 't', 'r', 't', 'a', 'b', '\0'
394};
395
6340166c
ILT
396const unsigned int test_file_1_size_32_little = sizeof test_file_1_32_little;
397
398// 32-bit big-endian version of test_file_1_32_little.
399
400const unsigned char test_file_1_32_big[] =
401{
402 // Ehdr
403 // EI_MAG[0-3]
404 0x7f, 'E', 'L', 'F',
405 // EI_CLASS: 32 bit.
406 1,
407 // EI_DATA: big endian
408 2,
409 // EI_VERSION
410 1,
411 // EI_OSABI
412 0,
413 // EI_ABIVERSION
414 0,
415 // EI_PAD
416 0, 0, 0, 0, 0, 0, 0,
417 // e_type: ET_REL
418 0, 1,
419 // e_machine: a magic value used for testing.
420 0xff, 0xff,
421 // e_version
422 0, 0, 0, 1,
423 // e_entry
424 0, 0, 0, 0,
425 // e_phoff
426 0, 0, 0, 0,
427 // e_shoff: starts right after file header
428 0, 0, 0, 52,
429 // e_flags
430 0, 0, 0, 0,
431 // e_ehsize
432 0, 52,
433 // e_phentsize
434 0, 32,
435 // e_phnum
436 0, 0,
437 // e_shentsize
438 0, 40,
439 // e_shnum: dummy, .test, .symtab, .strtab, .shstrtab
440 0, 5,
441 // e_shstrndx
442 0, 4,
443
444 // Offset 52
445 // Shdr 0: dummy entry
446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
448 0, 0, 0, 0, 0, 0, 0, 0,
449
450 // Offset 92
451 // Shdr 1: .test
452 // sh_name: after initial null
453 0, 0, 0, 1,
454 // sh_type: SHT_PROGBITS
455 0, 0, 0, 1,
456 // sh_flags: SHF_ALLOC
457 0, 0, 0, 2,
458 // sh_addr
459 0, 0, 0, 0,
460 // sh_offset: after file header + 5 section headers
461 0, 0, 0, 252,
462 // sh_size
463 0, 0, 0, 0,
464 // sh_link
465 0, 0, 0, 0,
466 // sh_info
467 0, 0, 0, 0,
468 // sh_addralign
469 0, 0, 0, 1,
470 // sh_entsize
471 0, 0, 0, 0,
472
473 // Offset 132
474 // Shdr 2: .symtab
475 // sh_name: 1 null byte + ".test\0"
476 0, 0, 0, 7,
477 // sh_type: SHT_SYMTAB
478 0, 0, 0, 2,
479 // sh_flags
480 0, 0, 0, 0,
481 // sh_addr
482 0, 0, 0, 0,
483 // sh_offset: after file header + 5 section headers + empty section
484 0, 0, 0, 252,
485 // sh_size: two symbols: dummy symbol + test symbol
486 0, 0, 0, 32,
487 // sh_link: to .strtab
488 0, 0, 0, 3,
489 // sh_info: one local symbol, the dummy symbol
490 0, 0, 0, 1,
491 // sh_addralign
492 0, 0, 0, 4,
493 // sh_entsize: size of symbol
494 0, 0, 0, 16,
495
496 // Offset 172
497 // Shdr 3: .strtab
498 // sh_name: 1 null byte + ".test\0" + ".symtab\0"
499 0, 0, 0, 15,
500 // sh_type: SHT_STRTAB
501 0, 0, 0, 3,
502 // sh_flags
503 0, 0, 0, 0,
504 // sh_addr
505 0, 0, 0, 0,
506 // sh_offset: after .symtab section. 284 == 0x11c
507 0, 0, 0x1, 0x1c,
508 // sh_size: 1 null byte + "test\0"
509 0, 0, 0, 6,
510 // sh_link
511 0, 0, 0, 0,
512 // sh_info
513 0, 0, 0, 0,
514 // sh_addralign
515 0, 0, 0, 1,
516 // sh_entsize
517 0, 0, 0, 0,
518
519 // Offset 212
520 // Shdr 4: .shstrtab
521 // sh_name: 1 null byte + ".test\0" + ".symtab\0" + ".strtab\0"
522 0, 0, 0, 23,
523 // sh_type: SHT_STRTAB
524 0, 0, 0, 3,
525 // sh_flags
526 0, 0, 0, 0,
527 // sh_addr
528 0, 0, 0, 0,
529 // sh_offset: after .strtab section. 290 == 0x122
530 0, 0, 0x1, 0x22,
531 // sh_size: all section names
532 0, 0, 0, 33,
533 // sh_link
534 0, 0, 0, 0,
535 // sh_info
536 0, 0, 0, 0,
537 // sh_addralign
538 0, 0, 0, 1,
539 // sh_entsize
540 0, 0, 0, 0,
541
542 // Offset 252
543 // Contents of .symtab section
544 // Symbol 0
545 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
546
547 // Offset 268
548 // Symbol 1
549 // st_name
550 0, 0, 0, 1,
551 // st_value
552 0, 0, 0, 0,
553 // st_size
554 0, 0, 0, 0,
555 // st_info: STT_NOTYPE, STB_GLOBAL
556 0x10,
557 // st_other
558 0,
559 // st_shndx: In .test
560 0, 1,
561
562 // Offset 284
563 // Contents of .strtab section
564 '\0',
565 't', 'e', 's', 't', '\0',
566
567 // Offset 290
568 // Contents of .shstrtab section
569 '\0',
570 '.', 't', 'e', 's', 't', '\0',
571 '.', 's', 'y', 'm', 't', 'a', 'b', '\0',
572 '.', 's', 't', 'r', 't', 'a', 'b', '\0',
573 '.', 's', 'h', 's', 't', 'r', 't', 'a', 'b', '\0'
574};
575
576const unsigned int test_file_1_size_32_big = sizeof test_file_1_32_big;
577
578// 64-bit little-endian version of test_file_1_32_little.
579
580const unsigned char test_file_1_64_little[] =
581{
582 // Ehdr
583 // EI_MAG[0-3]
584 0x7f, 'E', 'L', 'F',
585 // EI_CLASS: 64 bit.
586 2,
587 // EI_DATA: little endian
588 1,
589 // EI_VERSION
590 1,
591 // EI_OSABI
592 0,
593 // EI_ABIVERSION
594 0,
595 // EI_PAD
596 0, 0, 0, 0, 0, 0, 0,
597 // e_type: ET_REL
598 1, 0,
599 // e_machine: a magic value used for testing.
600 0xff, 0xff,
601 // e_version
602 1, 0, 0, 0,
603 // e_entry
604 0, 0, 0, 0, 0, 0, 0, 0,
605 // e_phoff
606 0, 0, 0, 0, 0, 0, 0, 0,
607 // e_shoff: starts right after file header
608 64, 0, 0, 0, 0, 0, 0, 0,
609 // e_flags
610 0, 0, 0, 0,
611 // e_ehsize
612 64, 0,
613 // e_phentsize
614 56, 0,
615 // e_phnum
616 0, 0,
617 // e_shentsize
618 64, 0,
619 // e_shnum: dummy, .test, .symtab, .strtab, .shstrtab
620 5, 0,
621 // e_shstrndx
622 4, 0,
623
624 // Offset 64
625 // Shdr 0: dummy entry
626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
628 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
630
631 // Offset 128
632 // Shdr 1: .test
633 // sh_name: after initial null
634 1, 0, 0, 0,
635 // sh_type: SHT_PROGBITS
636 1, 0, 0, 0,
637 // sh_flags: SHF_ALLOC
638 2, 0, 0, 0, 0, 0, 0, 0,
639 // sh_addr
640 0, 0, 0, 0, 0, 0, 0, 0,
641 // sh_offset: after file header + 5 section headers. 384 == 0x180.
642 0x80, 0x1, 0, 0, 0, 0, 0, 0,
643 // sh_size
644 0, 0, 0, 0, 0, 0, 0, 0,
645 // sh_link
646 0, 0, 0, 0,
647 // sh_info
648 0, 0, 0, 0,
649 // sh_addralign
650 1, 0, 0, 0, 0, 0, 0, 0,
651 // sh_entsize
652 0, 0, 0, 0, 0, 0, 0, 0,
653
654 // Offset 192
655 // Shdr 2: .symtab
656 // sh_name: 1 null byte + ".test\0"
657 7, 0, 0, 0,
658 // sh_type: SHT_SYMTAB
659 2, 0, 0, 0,
660 // sh_flags
661 0, 0, 0, 0, 0, 0, 0, 0,
662 // sh_addr
663 0, 0, 0, 0, 0, 0, 0, 0,
664 // sh_offset: after file header + 5 section headers + empty section
665 // 384 == 0x180.
666 0x80, 0x1, 0, 0, 0, 0, 0, 0,
667 // sh_size: two symbols: dummy symbol + test symbol
668 48, 0, 0, 0, 0, 0, 0, 0,
669 // sh_link: to .strtab
670 3, 0, 0, 0,
671 // sh_info: one local symbol, the dummy symbol
672 1, 0, 0, 0,
673 // sh_addralign
674 8, 0, 0, 0, 0, 0, 0, 0,
675 // sh_entsize: size of symbol
676 24, 0, 0, 0, 0, 0, 0, 0,
677
678 // Offset 256
679 // Shdr 3: .strtab
680 // sh_name: 1 null byte + ".test\0" + ".symtab\0"
681 15, 0, 0, 0,
682 // sh_type: SHT_STRTAB
683 3, 0, 0, 0,
684 // sh_flags
685 0, 0, 0, 0, 0, 0, 0, 0,
686 // sh_addr
687 0, 0, 0, 0, 0, 0, 0, 0,
688 // sh_offset: after .symtab section. 432 == 0x1b0
689 0xb0, 0x1, 0, 0, 0, 0, 0, 0,
690 // sh_size: 1 null byte + "test\0"
691 6, 0, 0, 0, 0, 0, 0, 0,
692 // sh_link
693 0, 0, 0, 0,
694 // sh_info
695 0, 0, 0, 0,
696 // sh_addralign
697 1, 0, 0, 0, 0, 0, 0, 0,
698 // sh_entsize
699 0, 0, 0, 0, 0, 0, 0, 0,
700
701 // Offset 320
702 // Shdr 4: .shstrtab
703 // sh_name: 1 null byte + ".test\0" + ".symtab\0" + ".strtab\0"
704 23, 0, 0, 0,
705 // sh_type: SHT_STRTAB
706 3, 0, 0, 0,
707 // sh_flags
708 0, 0, 0, 0, 0, 0, 0, 0,
709 // sh_addr
710 0, 0, 0, 0, 0, 0, 0, 0,
711 // sh_offset: after .strtab section. 438 == 0x1b6
712 0xb6, 0x1, 0, 0, 0, 0, 0, 0,
713 // sh_size: all section names
714 33, 0, 0, 0, 0, 0, 0, 0,
715 // sh_link
716 0, 0, 0, 0,
717 // sh_info
718 0, 0, 0, 0,
719 // sh_addralign
720 1, 0, 0, 0, 0, 0, 0, 0,
721 // sh_entsize
722 0, 0, 0, 0, 0, 0, 0, 0,
723
724 // Offset 384
725 // Contents of .symtab section
726 // Symbol 0
727 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
728 0, 0, 0, 0, 0, 0, 0, 0,
729
730 // Offset 408
731 // Symbol 1
732 // st_name
733 1, 0, 0, 0,
734 // st_info: STT_NOTYPE, STB_GLOBAL
735 0x10,
736 // st_other
737 0,
738 // st_shndx: In .test
739 1, 0,
740 // st_value
741 0, 0, 0, 0, 0, 0, 0, 0,
742 // st_size
743 0, 0, 0, 0, 0, 0, 0, 0,
744
745 // Offset 432
746 // Contents of .strtab section
747 '\0',
748 't', 'e', 's', 't', '\0',
749
750 // Offset 438
751 // Contents of .shstrtab section
752 '\0',
753 '.', 't', 'e', 's', 't', '\0',
754 '.', 's', 'y', 'm', 't', 'a', 'b', '\0',
755 '.', 's', 't', 'r', 't', 'a', 'b', '\0',
756 '.', 's', 'h', 's', 't', 'r', 't', 'a', 'b', '\0'
757};
758
759const unsigned int test_file_1_size_64_little = sizeof test_file_1_64_little;
760
761// 64-bit big-endian version of test_file_1_32_little.
762
763const unsigned char test_file_1_64_big[] =
764{
765 // Ehdr
766 // EI_MAG[0-3]
767 0x7f, 'E', 'L', 'F',
768 // EI_CLASS: 64 bit.
769 2,
770 // EI_DATA: big endian
771 2,
772 // EI_VERSION
773 1,
774 // EI_OSABI
775 0,
776 // EI_ABIVERSION
777 0,
778 // EI_PAD
779 0, 0, 0, 0, 0, 0, 0,
780 // e_type: ET_REL
781 0, 1,
782 // e_machine: a magic value used for testing.
783 0xff, 0xff,
784 // e_version
785 0, 0, 0, 1,
786 // e_entry
787 0, 0, 0, 0, 0, 0, 0, 0,
788 // e_phoff
789 0, 0, 0, 0, 0, 0, 0, 0,
790 // e_shoff: starts right after file header
791 0, 0, 0, 0, 0, 0, 0, 64,
792 // e_flags
793 0, 0, 0, 0,
794 // e_ehsize
795 0, 64,
796 // e_phentsize
797 0, 56,
798 // e_phnum
799 0, 0,
800 // e_shentsize
801 0, 64,
802 // e_shnum: dummy, .test, .symtab, .strtab, .shstrtab
803 0, 5,
804 // e_shstrndx
805 0, 4,
806
807 // Offset 64
808 // Shdr 0: dummy entry
809 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
810 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
811 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
813
814 // Offset 128
815 // Shdr 1: .test
816 // sh_name: after initial null
817 0, 0, 0, 1,
818 // sh_type: SHT_PROGBITS
819 0, 0, 0, 1,
820 // sh_flags: SHF_ALLOC
821 0, 0, 0, 0, 0, 0, 0, 2,
822 // sh_addr
823 0, 0, 0, 0, 0, 0, 0, 0,
824 // sh_offset: after file header + 5 section headers. 384 == 0x180.
825 0, 0, 0, 0, 0, 0, 0x1, 0x80,
826 // sh_size
827 0, 0, 0, 0, 0, 0, 0, 0,
828 // sh_link
829 0, 0, 0, 0,
830 // sh_info
831 0, 0, 0, 0,
832 // sh_addralign
833 0, 0, 0, 0, 0, 0, 0, 1,
834 // sh_entsize
835 0, 0, 0, 0, 0, 0, 0, 0,
836
837 // Offset 192
838 // Shdr 2: .symtab
839 // sh_name: 1 null byte + ".test\0"
840 0, 0, 0, 7,
841 // sh_type: SHT_SYMTAB
842 0, 0, 0, 2,
843 // sh_flags
844 0, 0, 0, 0, 0, 0, 0, 0,
845 // sh_addr
846 0, 0, 0, 0, 0, 0, 0, 0,
847 // sh_offset: after file header + 5 section headers + empty section
848 // 384 == 0x180.
849 0, 0, 0, 0, 0, 0, 0x1, 0x80,
850 // sh_size: two symbols: dummy symbol + test symbol
851 0, 0, 0, 0, 0, 0, 0, 48,
852 // sh_link: to .strtab
853 0, 0, 0, 3,
854 // sh_info: one local symbol, the dummy symbol
855 0, 0, 0, 1,
856 // sh_addralign
857 0, 0, 0, 0, 0, 0, 0, 8,
858 // sh_entsize: size of symbol
859 0, 0, 0, 0, 0, 0, 0, 24,
860
861 // Offset 256
862 // Shdr 3: .strtab
863 // sh_name: 1 null byte + ".test\0" + ".symtab\0"
864 0, 0, 0, 15,
865 // sh_type: SHT_STRTAB
866 0, 0, 0, 3,
867 // sh_flags
868 0, 0, 0, 0, 0, 0, 0, 0,
869 // sh_addr
870 0, 0, 0, 0, 0, 0, 0, 0,
871 // sh_offset: after .symtab section. 432 == 0x1b0
872 0, 0, 0, 0, 0, 0, 0x1, 0xb0,
873 // sh_size: 1 null byte + "test\0"
874 0, 0, 0, 0, 0, 0, 0, 6,
875 // sh_link
876 0, 0, 0, 0,
877 // sh_info
878 0, 0, 0, 0,
879 // sh_addralign
880 0, 0, 0, 0, 0, 0, 0, 1,
881 // sh_entsize
882 0, 0, 0, 0, 0, 0, 0, 0,
883
884 // Offset 320
885 // Shdr 4: .shstrtab
886 // sh_name: 1 null byte + ".test\0" + ".symtab\0" + ".strtab\0"
887 0, 0, 0, 23,
888 // sh_type: SHT_STRTAB
889 0, 0, 0, 3,
890 // sh_flags
891 0, 0, 0, 0, 0, 0, 0, 0,
892 // sh_addr
893 0, 0, 0, 0, 0, 0, 0, 0,
894 // sh_offset: after .strtab section. 438 == 0x1b6
895 0, 0, 0, 0, 0, 0, 0x1, 0xb6,
896 // sh_size: all section names
897 0, 0, 0, 0, 0, 0, 0, 33,
898 // sh_link
899 0, 0, 0, 0,
900 // sh_info
901 0, 0, 0, 0,
902 // sh_addralign
903 0, 0, 0, 0, 0, 0, 0, 1,
904 // sh_entsize
905 0, 0, 0, 0, 0, 0, 0, 0,
906
907 // Offset 384
908 // Contents of .symtab section
909 // Symbol 0
910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
911 0, 0, 0, 0, 0, 0, 0, 0,
912
913 // Offset 408
914 // Symbol 1
915 // st_name
916 0, 0, 0, 1,
917 // st_info: STT_NOTYPE, STB_GLOBAL
918 0x10,
919 // st_other
920 0,
921 // st_shndx: In .test
922 0, 1,
923 // st_value
924 0, 0, 0, 0, 0, 0, 0, 0,
925 // st_size
926 0, 0, 0, 0, 0, 0, 0, 0,
927
928 // Offset 432
929 // Contents of .strtab section
930 '\0',
931 't', 'e', 's', 't', '\0',
932
933 // Offset 438
934 // Contents of .shstrtab section
935 '\0',
936 '.', 't', 'e', 's', 't', '\0',
937 '.', 's', 'y', 'm', 't', 'a', 'b', '\0',
938 '.', 's', 't', 'r', 't', 'a', 'b', '\0',
939 '.', 's', 'h', 's', 't', 'r', 't', 'a', 'b', '\0'
940};
941
942const unsigned int test_file_1_size_64_big = sizeof test_file_1_64_big;
5a6f7e2d
ILT
943
944} // End namespace gold_testsuite.
This page took 0.203097 seconds and 4 git commands to generate.