~/src/elf-loader-1.0# ./reloc-test
elf_reloc_core `e-test-reloc.elf' to core 0,0 at 0x18000-0x1ffff
dump of section headers
Type name addr offset size entsz link info addralign flags
00: 0 SHT_NULL 00000000 00000000 00000000 0 0 0 0000000
01: 1 SHT_PROGBITS .init 00000000 00000034 00000024 0 0 0 0000002 SHF_ALLOC SHF_EXECINSTR
02: 4 SHT_RELA .rela.init 00000000 000047dc 00000030 12 36 1 0000004
03: 1 SHT_PROGBITS .text 00000000 00000060 00000398 0 0 0 0000016 SHF_ALLOC SHF_EXECINSTR
04: 4 SHT_RELA .rela.text 00000000 0000480c 00000324 12 36 3 0000004
05: 1 SHT_PROGBITS .fini 00000000 000003f8 0000001a 0 0 0 0000002 SHF_ALLOC SHF_EXECINSTR
06: 4 SHT_RELA .rela.fini 00000000 00004b30 00000018 12 36 5 0000004
07: 1 SHT_PROGBITS .jcr 00000000 00000414 00000004 0 0 0 0000004 SHF_WRITE SHF_ALLOC
08: 1 SHT_PROGBITS .data 00000000 00000418 00000458 0 0 0 0000008 SHF_WRITE SHF_ALLOC
09: 4 SHT_RELA .rela.data 00000000 00004b48 0000003c 12 36 8 0000004
10: 1 SHT_PROGBITS .ctors 00000000 00000870 00000008 0 0 0 0000004 SHF_WRITE SHF_ALLOC
11: 1 SHT_PROGBITS .dtors 00000000 00000878 00000008 0 0 0 0000004 SHF_WRITE SHF_ALLOC
12: 1 SHT_PROGBITS .tm_clone_table 00000000 00000880 00000000 0 0 0 0000004 SHF_WRITE SHF_ALLOC
13: 1 SHT_PROGBITS .rodata 00000000 00000880 00000004 0 0 0 0000004 SHF_ALLOC
... etc ...
actual loading of sections
1: load .init on-core @ 00058 host 0x18058 36
3: load .text on-core @ 00080 host 0x18080 920
5: load .fini on-core @ 00418 host 0x18418 26
7: load .jcr on-core @ 00434 host 0x18434 4
8: load .data on-core @ 00438 host 0x18438 1112
10: load .ctors on-core @ 00890 host 0x18890 8
11: load .dtors on-core @ 00898 host 0x18898 8
12: load .tm_clone_table on-core @ 008a0 host 0x188a0 0
13: load .rodata on-core @ 008a0 host 0x188a0 4
15: load IVT_RESET isr @ 00000
17: load RESERVED_CRT0 on-core @ 008a4 host 0x188a4 12
19: load .rodata.str1.8 on-core @ 008b0 host 0x188b0 8
20: load .bss on-core @ 008b8 host 0x188b8 8
core bss start = 008b8
21: load .bss.shared xshared @ 8e000000 host 0xb4e3e000 8
processing reloc hunks
offset symid addend type section symval symsize result name
1: 00000004 000002 0000015c R_EPIPHANY_LOW 3 00000000 0 [fffe805c / 0000005c <= 000001dc]
LOW p = 0x1805c <= low(000001dc) *p=0002000b <- 00121b8b
1: 00000008 000002 0000015c R_EPIPHANY_HIGH 3 00000000 0 [fffe8060 / 00000060 <= 000001dc]
HI p = 0x18060 <= hi(000001dc) *p=1002000b <- 1002000b
1: 0000000e 000002 0000035c R_EPIPHANY_LOW 3 00000000 0 [fffe8066 / 00000066 <= 000003dc]
LOW p = 0x18066 <= low(000003dc) *p=0002000b <- 00321b8b
1: 00000012 000002 0000035c R_EPIPHANY_HIGH 3 00000000 0 [fffe806a / 0000006a <= 000003dc]
HI p = 0x1806a <= hi(000003dc) *p=1002000b <- 1002000b
3: 00000090 000008 00000000 R_EPIPHANY_LOW 12 00000000 0 [fffe8110 / 00000110 <= 000008a0]
LOW p = 0x18110 <= low(000008a0) *p=0002000b <- 0082140b
3: 00000094 0001af 00000003 R_EPIPHANY_LOW 12 00000000 0 [fffe8114 / 00000114 <= 000008a3] ___TMC_END__
LOW p = 0x18114 <= low(000008a3) *p=0002200b <- 0082346b
... etc ...
15: 00000000 0001a4 00000000 R_EPIPHANY_SIMM24 17 00000000 10 [fffe8000 / 00000000 <= 000008a4] .normal_start
SIMM24 reloc 00000000 000000e8 <- 000452e8
17: 00000000 0001a5 00000000 R_EPIPHANY_LOW 3 00000000 132 [fffe88a4 / 000008a4 <= 00000080] _epiphany_start
LOW p = 0x188a4 <= low(00000080) *p=0002600b <- 0002700b
17: 00000004 0001a5 00000000 R_EPIPHANY_HIGH 3 00000000 132 [fffe88a8 / 000008a8 <= 00000080] _epiphany_start
HI p = 0x188a8 <= hi(00000080) *p=1002600b <- 1002600b
running test code
find symbol _shared
section base = 8e000000
shared address = 0xb4e3e000
before 0,0 after 0,0
before 0,1 after 1,1
before 1,2 after 2,2
before 2,3 after 3,3
before 3,4 after 4,4
Not much to look at it but it shows it's relocating and linking properly and communicating between the host and the epu.
So that's only for a single core, now I have to go away and think about multi-core programmes.
No comments:
Post a Comment