Messed up symbol tables for IRX files...
Posted: Mon Sep 06, 2004 2:03 am
Venerable Toolchain Gods:
Environment: gcc-3.2.2 + binutils 2.14
Simple program on the IOP. After linking, the addresses in the symbol table for everything in the .data section are wrong (they appear to be off by a factor of two-- double relocations?).
Needless to say, this makes debugging hard[er] and gdb gets way lost (imagine innocently using "p *some_ptr" when its address is wrong).
I've attached the program, output of nm and objdump.
Any ideas?
regards-
tjd
[code][broadq@mcv-1-1-1 netdisk]$ ps2-objdump -h -r -s -x foo
foo: file format elf32-littlemips
foo
architecture: mips:3000, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x00000000
Program Header:
0x70000080 off 0x00000074 vaddr 0x00000000 paddr 0x00000000 align 2**2
filesz 0x0000001b memsz 0x0000001b flags r--
LOAD off 0x00000090 vaddr 0x00000000 paddr 0x00000000 align 2**2
filesz 0x00000028 memsz 0x00000028 flags rwx
private flags = 0: [no abi set] [mips1] [not 32bitmode]
Sections:
Idx Name Size VMA LMA File off Algn
0 .iopmod 0000001b 00000000 00000000 00000074 2**2
CONTENTS, READONLY
1 .text 00000024 00000000 00000000 00000090 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .data 00000004 00000024 00000024 000000b4 2**2
CONTENTS, ALLOC, LOAD, DATA
3 .bss 00000000 00000028 00000028 000000b8 2**0
ALLOC
4 .pdr 00000020 00000030 00000030 000000b8 2**2
CONTENTS, RELOC, READONLY
5 .mdebug.eabi32 00000000 00000050 00000050 000000d8 2**0
CONTENTS, READONLY
6 .debug_info 00000059 00000050 00000050 000000d8 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
7 .debug_line 00000032 000000a9 000000a9 00000131 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
8 .debug_frame 00000038 000000dc 000000dc 00000164 2**2
CONTENTS, RELOC, READONLY, DEBUGGING
9 .debug_pubnames 00000025 00000114 00000114 0000019c 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
10 .debug_aranges 00000020 00000139 00000139 000001c1 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
11 .debug_str 0000004d 00000159 00000159 000001e1 2**0
CONTENTS, READONLY, DEBUGGING
12 .comment 00000012 000001a6 000001a6 0000022e 2**0
CONTENTS, READONLY
SYMBOL TABLE:
00000000 l d .iopmod 00000000
00000000 l d .text 00000000
00000048 l d .data 00000000
00000050 l d .bss 00000000
00000060 l d .pdr 00000000
00000000 l d *ABS* 00000000
000000a0 l d .mdebug.eabi32 00000000
000000a0 l d .debug_info 00000000
00000000 l d *ABS* 00000000
00000152 l d .debug_line 00000000
00000000 l d *ABS* 00000000
000001b8 l d .debug_frame 00000000
00000000 l d *ABS* 00000000
00000228 l d .debug_pubnames 00000000
00000000 l d *ABS* 00000000
00000272 l d .debug_aranges 00000000
00000000 l d *ABS* 00000000
000002b2 l d .debug_str 00000000
0000034c l d .comment 00000000
00000000 l d *ABS* 00000000
00000000 l d *ABS* 00000000
00000000 l d *ABS* 00000000
00000000 l df *ABS* 00000000 foo.c
00000048 g O .data 00000004 tjd
00000028 g *ABS* 00000000 _fdata
00000028 g *ABS* 00000000 _etext
00008030 g *ABS* 00000000 _gp
00000030 g *ABS* 00000000 _bss_start
00000000 g *ABS* 00000000 _ftext
00000000 g F .text 00000024 _start
00000008 g *ABS* 00000000 _data_size
00000000 g *ABS* 00000000 _bss_size
00000030 g *ABS* 00000000 _edata
00000030 g *ABS* 00000000 _end
00000028 g *ABS* 00000000 _text_size
00000030 g *ABS* 00000000 _fbss
RELOCATION RECORDS FOR [.pdr]:
OFFSET TYPE VALUE
00000030 R_MIPS_32 _start
RELOCATION RECORDS FOR [.debug_info]:
OFFSET TYPE VALUE
00000056 R_MIPS_32 *ABS*
0000005c R_MIPS_32 .debug_line
00000060 R_MIPS_32 .text
00000064 R_MIPS_32 .text
00000068 R_MIPS_32 .debug_str
0000006c R_MIPS_32 .debug_str
00000070 R_MIPS_32 .debug_str
00000077 R_MIPS_32 .debug_str
00000081 R_MIPS_32 .text
00000085 R_MIPS_32 .text
00000089 R_MIPS_32 .debug_frame
000000a4 R_MIPS_32 tjd
RELOCATION RECORDS FOR [.debug_line]:
OFFSET TYPE VALUE
000000cf R_MIPS_32 .text
RELOCATION RECORDS FOR [.debug_frame]:
OFFSET TYPE VALUE
000000f0 R_MIPS_32 .debug_frame
000000f4 R_MIPS_32 .text
RELOCATION RECORDS FOR [.debug_pubnames]:
OFFSET TYPE VALUE
0000011a R_MIPS_32 .debug_info
RELOCATION RECORDS FOR [.debug_aranges]:
OFFSET TYPE VALUE
0000013f R_MIPS_32 .debug_info
00000149 R_MIPS_32 .text
Contents of section .iopmod:
0000 ffffffff 00000000 30800000 28000000 ........0...(...
0010 08000000 00000000 000000 ...........
Contents of section .text:
0000 f0ffbd27 0000beaf 21f0a003 21100000 ...'....!...!...
0010 21e8c003 0000be8f 1000bd27 0800e003 !..........'....
0020 00000000 ....
Contents of section .data:
0024 ea000000 ....
Contents of section .pdr:
0030 00000000 00000040 f0ffffff 00000000 .......@........
0040 00000000 10000000 1e000000 1f000000 ................
Contents of section .mdebug.eabi32:
Contents of section .debug_info:
0050 55000000 02000000 00000401 a9000000 U...............
0060 24000000 00000000 59010000 5f010000 $.......Y..._...
0070 90010000 0102019f 01000001 073f0000 .............?..
0080 00000000 00240000 00ec0000 00016e03 .....$........n.
0090 696e7400 04050474 6a640001 033f0000 int....tjd...?..
00a0 00010503 24000000 00 ....$....
Contents of section .debug_line:
00a9 2e000000 02001900 00000101 fb0e0a00 ................
00b9 01010101 00000001 00666f6f 2e630000 .........foo.c..
00c9 00000000 05020000 000015b8 48021400 ............H...
00d9 0101 ..
Contents of section .debug_frame:
00dc 0c000000 ffffffff 01000104 400c1d00 ............@...
00ec 24000000 dc000000 00000000 24000000 $...........$...
00fc 04040000 000e1004 04000000 111e7c04 ..............|.
010c 04000000 0c1e1000 ........
Contents of section .debug_pubnames:
0114 21000000 02005000 00005900 00002500 !.....P...Y...%.
0124 00005f73 74617274 00460000 00746a64 .._start.F...tjd
0134 00000000 00 .....
Contents of section .debug_aranges:
0139 1c000000 02005000 00000400 00000000 ......P.........
0149 00000000 24000000 00000000 00000000 ....$...........
Contents of section .debug_str:
0159 666f6f2e 63002f68 6f6d652f 62726f61 foo.c./home/broa
0169 64712f62 75696c64 732f3038 2d32362d dq/builds/08-26-
0179 32303034 2f707332 2d627569 6c642f6e 2004/ps2-build/n
0189 65746469 736b0047 4e552043 20332e32 etdisk.GNU C 3.2
0199 2e32202d 67005f73 74617274 00 .2 -g._start.
Contents of section .comment:
01a6 00474343 3a202847 4e552920 332e322e .GCC: (GNU) 3.2.
01b6 3200 2.
[broadq@mcv-1-1-1 netdisk]$ ps2-nm foo
00000000 A _bss_size
00000030 A _bss_start
00000008 A _data_size
00000030 A _edata
00000030 A _end
00000028 A _etext
00000030 A _fbss
00000028 A _fdata
00000000 A _ftext
00008030 A _gp
00000000 T _start
00000028 A _text_size
00000048 D tjd
[broadq@mcv-1-1-1 netdisk]$ cat foo.c
int tjd = 234;
int
_start()
{
return 0;
}
[broadq@mcv-1-1-1 netdisk]$[/code]
Environment: gcc-3.2.2 + binutils 2.14
Simple program on the IOP. After linking, the addresses in the symbol table for everything in the .data section are wrong (they appear to be off by a factor of two-- double relocations?).
Needless to say, this makes debugging hard[er] and gdb gets way lost (imagine innocently using "p *some_ptr" when its address is wrong).
I've attached the program, output of nm and objdump.
Any ideas?
regards-
tjd
[code][broadq@mcv-1-1-1 netdisk]$ ps2-objdump -h -r -s -x foo
foo: file format elf32-littlemips
foo
architecture: mips:3000, flags 0x00000011:
HAS_RELOC, HAS_SYMS
start address 0x00000000
Program Header:
0x70000080 off 0x00000074 vaddr 0x00000000 paddr 0x00000000 align 2**2
filesz 0x0000001b memsz 0x0000001b flags r--
LOAD off 0x00000090 vaddr 0x00000000 paddr 0x00000000 align 2**2
filesz 0x00000028 memsz 0x00000028 flags rwx
private flags = 0: [no abi set] [mips1] [not 32bitmode]
Sections:
Idx Name Size VMA LMA File off Algn
0 .iopmod 0000001b 00000000 00000000 00000074 2**2
CONTENTS, READONLY
1 .text 00000024 00000000 00000000 00000090 2**2
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .data 00000004 00000024 00000024 000000b4 2**2
CONTENTS, ALLOC, LOAD, DATA
3 .bss 00000000 00000028 00000028 000000b8 2**0
ALLOC
4 .pdr 00000020 00000030 00000030 000000b8 2**2
CONTENTS, RELOC, READONLY
5 .mdebug.eabi32 00000000 00000050 00000050 000000d8 2**0
CONTENTS, READONLY
6 .debug_info 00000059 00000050 00000050 000000d8 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
7 .debug_line 00000032 000000a9 000000a9 00000131 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
8 .debug_frame 00000038 000000dc 000000dc 00000164 2**2
CONTENTS, RELOC, READONLY, DEBUGGING
9 .debug_pubnames 00000025 00000114 00000114 0000019c 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
10 .debug_aranges 00000020 00000139 00000139 000001c1 2**0
CONTENTS, RELOC, READONLY, DEBUGGING
11 .debug_str 0000004d 00000159 00000159 000001e1 2**0
CONTENTS, READONLY, DEBUGGING
12 .comment 00000012 000001a6 000001a6 0000022e 2**0
CONTENTS, READONLY
SYMBOL TABLE:
00000000 l d .iopmod 00000000
00000000 l d .text 00000000
00000048 l d .data 00000000
00000050 l d .bss 00000000
00000060 l d .pdr 00000000
00000000 l d *ABS* 00000000
000000a0 l d .mdebug.eabi32 00000000
000000a0 l d .debug_info 00000000
00000000 l d *ABS* 00000000
00000152 l d .debug_line 00000000
00000000 l d *ABS* 00000000
000001b8 l d .debug_frame 00000000
00000000 l d *ABS* 00000000
00000228 l d .debug_pubnames 00000000
00000000 l d *ABS* 00000000
00000272 l d .debug_aranges 00000000
00000000 l d *ABS* 00000000
000002b2 l d .debug_str 00000000
0000034c l d .comment 00000000
00000000 l d *ABS* 00000000
00000000 l d *ABS* 00000000
00000000 l d *ABS* 00000000
00000000 l df *ABS* 00000000 foo.c
00000048 g O .data 00000004 tjd
00000028 g *ABS* 00000000 _fdata
00000028 g *ABS* 00000000 _etext
00008030 g *ABS* 00000000 _gp
00000030 g *ABS* 00000000 _bss_start
00000000 g *ABS* 00000000 _ftext
00000000 g F .text 00000024 _start
00000008 g *ABS* 00000000 _data_size
00000000 g *ABS* 00000000 _bss_size
00000030 g *ABS* 00000000 _edata
00000030 g *ABS* 00000000 _end
00000028 g *ABS* 00000000 _text_size
00000030 g *ABS* 00000000 _fbss
RELOCATION RECORDS FOR [.pdr]:
OFFSET TYPE VALUE
00000030 R_MIPS_32 _start
RELOCATION RECORDS FOR [.debug_info]:
OFFSET TYPE VALUE
00000056 R_MIPS_32 *ABS*
0000005c R_MIPS_32 .debug_line
00000060 R_MIPS_32 .text
00000064 R_MIPS_32 .text
00000068 R_MIPS_32 .debug_str
0000006c R_MIPS_32 .debug_str
00000070 R_MIPS_32 .debug_str
00000077 R_MIPS_32 .debug_str
00000081 R_MIPS_32 .text
00000085 R_MIPS_32 .text
00000089 R_MIPS_32 .debug_frame
000000a4 R_MIPS_32 tjd
RELOCATION RECORDS FOR [.debug_line]:
OFFSET TYPE VALUE
000000cf R_MIPS_32 .text
RELOCATION RECORDS FOR [.debug_frame]:
OFFSET TYPE VALUE
000000f0 R_MIPS_32 .debug_frame
000000f4 R_MIPS_32 .text
RELOCATION RECORDS FOR [.debug_pubnames]:
OFFSET TYPE VALUE
0000011a R_MIPS_32 .debug_info
RELOCATION RECORDS FOR [.debug_aranges]:
OFFSET TYPE VALUE
0000013f R_MIPS_32 .debug_info
00000149 R_MIPS_32 .text
Contents of section .iopmod:
0000 ffffffff 00000000 30800000 28000000 ........0...(...
0010 08000000 00000000 000000 ...........
Contents of section .text:
0000 f0ffbd27 0000beaf 21f0a003 21100000 ...'....!...!...
0010 21e8c003 0000be8f 1000bd27 0800e003 !..........'....
0020 00000000 ....
Contents of section .data:
0024 ea000000 ....
Contents of section .pdr:
0030 00000000 00000040 f0ffffff 00000000 .......@........
0040 00000000 10000000 1e000000 1f000000 ................
Contents of section .mdebug.eabi32:
Contents of section .debug_info:
0050 55000000 02000000 00000401 a9000000 U...............
0060 24000000 00000000 59010000 5f010000 $.......Y..._...
0070 90010000 0102019f 01000001 073f0000 .............?..
0080 00000000 00240000 00ec0000 00016e03 .....$........n.
0090 696e7400 04050474 6a640001 033f0000 int....tjd...?..
00a0 00010503 24000000 00 ....$....
Contents of section .debug_line:
00a9 2e000000 02001900 00000101 fb0e0a00 ................
00b9 01010101 00000001 00666f6f 2e630000 .........foo.c..
00c9 00000000 05020000 000015b8 48021400 ............H...
00d9 0101 ..
Contents of section .debug_frame:
00dc 0c000000 ffffffff 01000104 400c1d00 ............@...
00ec 24000000 dc000000 00000000 24000000 $...........$...
00fc 04040000 000e1004 04000000 111e7c04 ..............|.
010c 04000000 0c1e1000 ........
Contents of section .debug_pubnames:
0114 21000000 02005000 00005900 00002500 !.....P...Y...%.
0124 00005f73 74617274 00460000 00746a64 .._start.F...tjd
0134 00000000 00 .....
Contents of section .debug_aranges:
0139 1c000000 02005000 00000400 00000000 ......P.........
0149 00000000 24000000 00000000 00000000 ....$...........
Contents of section .debug_str:
0159 666f6f2e 63002f68 6f6d652f 62726f61 foo.c./home/broa
0169 64712f62 75696c64 732f3038 2d32362d dq/builds/08-26-
0179 32303034 2f707332 2d627569 6c642f6e 2004/ps2-build/n
0189 65746469 736b0047 4e552043 20332e32 etdisk.GNU C 3.2
0199 2e32202d 67005f73 74617274 00 .2 -g._start.
Contents of section .comment:
01a6 00474343 3a202847 4e552920 332e322e .GCC: (GNU) 3.2.
01b6 3200 2.
[broadq@mcv-1-1-1 netdisk]$ ps2-nm foo
00000000 A _bss_size
00000030 A _bss_start
00000008 A _data_size
00000030 A _edata
00000030 A _end
00000028 A _etext
00000030 A _fbss
00000028 A _fdata
00000000 A _ftext
00008030 A _gp
00000000 T _start
00000028 A _text_size
00000048 D tjd
[broadq@mcv-1-1-1 netdisk]$ cat foo.c
int tjd = 234;
int
_start()
{
return 0;
}
[broadq@mcv-1-1-1 netdisk]$[/code]