@@ -447,6 +447,52 @@ var fileTests = []fileTest{
447
447
{"puts" , 16 , 0 , false , 0 , 0 , 0 , 0 , "" , "" },
448
448
},
449
449
},
450
+ {
451
+ "testdata/gcc-riscv64-linux-exec" ,
452
+ FileHeader {ELFCLASS64 , ELFDATA2LSB , EV_CURRENT , ELFOSABI_NONE , 0 , binary .LittleEndian , ET_EXEC , EM_RISCV , 0x10460 },
453
+ []SectionHeader {
454
+ {"" , SHT_NULL , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 },
455
+ {".interp" , SHT_PROGBITS , SHF_ALLOC , 0x10270 , 0x270 , 0x21 , 0x0 , 0x0 , 0x1 , 0x0 , 0x21 },
456
+ {".note.gnu.build-id" , SHT_NOTE , SHF_ALLOC , 0x10294 , 0x294 , 0x24 , 0x0 , 0x0 , 0x4 , 0x0 , 0x24 },
457
+ {".note.ABI-tag" , SHT_NOTE , SHF_ALLOC , 0x102b8 , 0x2b8 , 0x20 , 0x0 , 0x0 , 0x4 , 0x0 , 0x20 },
458
+ {".gnu.hash" , SHT_GNU_HASH , SHF_ALLOC , 0x102d8 , 0x2d8 , 0x30 , 0x5 , 0x0 , 0x8 , 0x0 , 0x30 },
459
+ {".dynsym" , SHT_DYNSYM , SHF_ALLOC , 0x10308 , 0x308 , 0x60 , 0x6 , 0x1 , 0x8 , 0x18 , 0x60 },
460
+ {".dynstr" , SHT_STRTAB , SHF_ALLOC , 0x10368 , 0x368 , 0x4a , 0x0 , 0x0 , 0x1 , 0x0 , 0x4a },
461
+ {".gnu.version" , SHT_GNU_VERSYM , SHF_ALLOC , 0x103b2 , 0x3b2 , 0x8 , 0x5 , 0x0 , 0x2 , 0x2 , 0x8 },
462
+ {".gnu.version_r" , SHT_GNU_VERNEED , SHF_ALLOC , 0x103c0 , 0x3c0 , 0x30 , 0x6 , 0x1 , 0x8 , 0x0 , 0x30 },
463
+ {".rela.plt" , SHT_RELA , SHF_ALLOC + SHF_INFO_LINK , 0x103f0 , 0x3f0 , 0x30 , 0x5 , 0x14 , 0x8 , 0x18 , 0x30 },
464
+ {".plt" , SHT_PROGBITS , SHF_ALLOC + SHF_EXECINSTR , 0x10420 , 0x420 , 0x40 , 0x0 , 0x0 , 0x10 , 0x10 , 0x40 },
465
+ {".text" , SHT_PROGBITS , SHF_ALLOC + SHF_EXECINSTR , 0x10460 , 0x460 , 0xd8 , 0x0 , 0x0 , 0x4 , 0x0 , 0xd8 },
466
+ {".rodata" , SHT_PROGBITS , SHF_ALLOC , 0x10538 , 0x538 , 0x15 , 0x0 , 0x0 , 0x8 , 0x0 , 0x15 },
467
+ {".eh_frame_hdr" , SHT_PROGBITS , SHF_ALLOC , 0x10550 , 0x550 , 0x24 , 0x0 , 0x0 , 0x4 , 0x0 , 0x24 },
468
+ {".eh_frame" , SHT_PROGBITS , SHF_ALLOC , 0x10578 , 0x578 , 0x6c , 0x0 , 0x0 , 0x8 , 0x0 , 0x6c },
469
+ {".preinit_array" , SHT_PREINIT_ARRAY , SHF_WRITE + SHF_ALLOC , 0x11e00 , 0xe00 , 0x8 , 0x0 , 0x0 , 0x1 , 0x8 , 0x8 },
470
+ {".init_array" , SHT_INIT_ARRAY , SHF_WRITE + SHF_ALLOC , 0x11e08 , 0xe08 , 0x8 , 0x0 , 0x0 , 0x8 , 0x8 , 0x8 },
471
+ {".fini_array" , SHT_FINI_ARRAY , SHF_WRITE + SHF_ALLOC , 0x11e10 , 0xe10 , 0x8 , 0x0 , 0x0 , 0x8 , 0x8 , 0x8 },
472
+ {".dynamic" , SHT_DYNAMIC , SHF_WRITE + SHF_ALLOC , 0x11e18 , 0xe18 , 0x1d0 , 0x6 , 0x0 , 0x8 , 0x10 , 0x1d0 },
473
+ {".got" , SHT_PROGBITS , SHF_WRITE + SHF_ALLOC , 0x11fe8 , 0xfe8 , 0x8 , 0x0 , 0x0 , 0x8 , 0x8 , 0x8 },
474
+ {".got.plt" , SHT_PROGBITS , SHF_WRITE + SHF_ALLOC , 0x11ff0 , 0xff0 , 0x20 , 0x0 , 0x0 , 0x8 , 0x8 , 0x20 },
475
+ {".sdata" , SHT_PROGBITS , SHF_WRITE + SHF_ALLOC , 0x12010 , 0x1010 , 0x8 , 0x0 , 0x0 , 0x8 , 0x0 , 0x8 },
476
+ {".bss" , SHT_NOBITS , SHF_WRITE + SHF_ALLOC , 0x12018 , 0x1018 , 0x8 , 0x0 , 0x0 , 0x1 , 0x0 , 0x8 },
477
+ {".comment" , SHT_PROGBITS , SHF_MERGE + SHF_STRINGS , 0x0 , 0x1018 , 0x26 , 0x0 , 0x0 , 0x1 , 0x1 , 0x26 },
478
+ {".riscv.attributes" , SHT_RISCV_ATTRIBUTES , 0x0 , 0x0 , 0x103e , 0x66 , 0x0 , 0x0 , 0x1 , 0x0 , 0x66 },
479
+ {".shstrtab" , SHT_STRTAB , 0x0 , 0x0 , 0x10a4 , 0xff , 0x0 , 0x0 , 0x1 , 0x0 , 0xff },
480
+ },
481
+ []ProgHeader {
482
+ {PT_PHDR , PF_R , 0x40 , 0x10040 , 0x10040 , 0x230 , 0x230 , 0x8 },
483
+ {PT_INTERP , PF_R , 0x270 , 0x10270 , 0x10270 , 0x21 , 0x21 , 0x1 },
484
+ {PT_RISCV_ATTRIBUTES , PF_R , 0x103e , 0x0 , 0x0 , 0x66 , 0x0 , 0x1 },
485
+ {PT_LOAD , PF_X + PF_R , 0x0 , 0x10000 , 0x10000 , 0x5e4 , 0x5e4 , 0x1000 },
486
+ {PT_LOAD , PF_W + PF_R , 0xe00 , 0x11e00 , 0x11e00 , 0x218 , 0x220 , 0x1000 },
487
+ {PT_DYNAMIC , PF_W + PF_R , 0xe18 , 0x11e18 , 0x11e18 , 0x1d0 , 0x1d0 , 0x8 },
488
+ {PT_NOTE , PF_R , 0x294 , 0x10294 , 0x10294 , 0x44 , 0x44 , 0x4 },
489
+ {PT_GNU_EH_FRAME , PF_R , 0x550 , 0x10550 , 0x10550 , 0x24 , 0x24 , 0x4 },
490
+ {PT_GNU_STACK , PF_W + PF_R , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x10 },
491
+ {PT_GNU_RELRO , PF_R , 0xe00 , 0x11e00 , 0x11e00 , 0x200 , 0x200 , 0x1 },
492
+ },
493
+ []string {"libc.so.6" },
494
+ nil ,
495
+ },
450
496
}
451
497
452
498
func TestOpen (t * testing.T ) {
0 commit comments