This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: about Reloc Type: BFD_RELOC_8/16/32


2009/10/29 Nick Clifton <nickc@redhat.com>:
> Hi Daniel,
>
>> Is there any reference (like howto manual) tells me how to deal with
>> those kind of symbol?
>
> Not really. :-( ?There are manuals that you can buy which cover how linkers
> work, but if you have already implemented relocations for function calls
> then you probably know most of that stuff already. ?I can recommend Ian
> Lance Taylor's blogs on how linkers work, especially these two:
>
> ?http://www.airs.com/blog/archives/39
> ?http://www.airs.com/blog/archives/43
>

Yeah. I finished the JMP/CALL relocation.  Because there is really a
small Instruction Mem and Data Mem in my chip. So 16bit relocation is
enough. and I didn't resolve the 32bit relocation, and even don't let
generate this kind of relocation symbol.
Here is a integeral  assemble:

	.file	"test_lib.c"
	.section .mdebug.abi32
	.section	.debug_abbrev,"",@progbits
.Ldebug_abbrev0:
	.section	.debug_info,"",@progbits
.Ldebug_info0:
	.section	.debug_line,"",@progbits
.Ldebug_line0:
	.text
.Ltext0:
	.globl	__extendsfdf2
	.globl	__truncdfsf2
	.align	4
	.globl	main
	.type	main, @function
main:
.LFB2:
.LM1:
	STOREW 	R14 	(R15)	 #4  -PRD
	MOV	R0	LINK
	STOREW 	R0 	(R14)	 #8  -PRD
	ADD 	R15 	R15 	#-32
	MOV	R14	R15
.LM2:
	MOVI 	#0 -L
	MOVI 	#16320 -U
	STOREW 	R0 	(R14)	 #20  -PRI
.LM3:
	LOADW 	R4  	(R14)	 #20  -PRI
	CALL @__extendsfdf2 -D0
	MOV	R4	R2
	MOV	R5	R3
	STOREW 	R4 	(R15)  #0  -PRI
	STOREW 	R5 	(R15)	 #4  -PRI
	CALL @asin -D0
	MOV	R4	R2
	MOV	R5	R3
	STOREW 	R4 	(R15)	 #8  -PRI
	STOREW 	R5 	(R15)	 #12  -PRI
	CALL @__truncdfsf2 -D0
	MOV	R4	R2
	STOREW 	R4 	(R14)	 #16  -PRI
.LM4:
	MOV 	R4 #0
	MOV	R2	R4
.LM5:
	ADD 	R15 	R14 	#32
	LOADW 	R14  	(R15)	 #4  -PRD
	LOADW 	R0  	(R15)	 #8  -PRD
	MOV	LINK	R0
	RETURN	-D0
.LFE2:
	.size	main, .-main
	.section	.debug_frame,"",@progbits
.Lframe0:
	.4byte	.LECIE0-.LSCIE0
.LSCIE0:
	.4byte	0xffffffff
	.byte	0x1
	.string	""
	.uleb128 0x1
	.sleb128 -4
	.byte	0x1f
	.byte	0xc
	.uleb128 0xf
	.uleb128 0x0
	.align	4
.LECIE0:
.LSFDE0:
	.4byte	.LEFDE0-.LASFDE0
.LASFDE0:
	.4byte	.Lframe0
	.4byte	.LFB2
	.4byte	.LFE2-.LFB2
	.align	4
.LEFDE0:
	.text
.Letext0:
	.section	.debug_info
	.4byte	0xb7
	.2byte	0x2
	.4byte	.Ldebug_abbrev0
	.byte	0x4
	.uleb128 0x1
	.4byte	.LASF13
	.byte	0x1
	.4byte	.LASF14
	.4byte	.LASF15
	.4byte	.Ltext0
	.4byte	.Letext0
	.4byte	.Ldebug_line0
	.uleb128 0x2
	.byte	0x1
	.byte	0x6
	.4byte	.LASF0
	.uleb128 0x2
	.byte	0x1
	.byte	0x8
	.4byte	.LASF1
	.uleb128 0x2
	.byte	0x2
	.byte	0x5
	.4byte	.LASF2
	.uleb128 0x2
	.byte	0x2
	.byte	0x7
	.4byte	.LASF3
	.uleb128 0x3
	.byte	0x4
	.byte	0x5
	.string	"int"
	.uleb128 0x2
	.byte	0x4
	.byte	0x7
	.4byte	.LASF4
	.uleb128 0x2
	.byte	0x8
	.byte	0x5
	.4byte	.LASF5
	.uleb128 0x2
	.byte	0x8
	.byte	0x7
	.4byte	.LASF6
	.uleb128 0x2
	.byte	0x4
	.byte	0x5
	.4byte	.LASF7
	.uleb128 0x4
	.byte	0x4
	.byte	0x7
	.uleb128 0x2
	.byte	0x4
	.byte	0x7
	.4byte	.LASF8
	.uleb128 0x2
	.byte	0x1
	.byte	0x6
	.4byte	.LASF9
	.uleb128 0x2
	.byte	0x8
	.byte	0x4
	.4byte	.LASF10
	.uleb128 0x2
	.byte	0x4
	.byte	0x4
	.4byte	.LASF11
	.uleb128 0x2
	.byte	0x8
	.byte	0x4
	.4byte	.LASF12
	.uleb128 0x5
	.byte	0x1
	.4byte	.LASF16
	.byte	0x1
	.byte	0x3
	.byte	0x1
	.4byte	0x41
	.4byte	.LFB2
	.4byte	.LFE2
	.byte	0x1
	.byte	0x5f
	.uleb128 0x6
	.string	"x"
	.byte	0x1
	.byte	0x4
	.4byte	0x7c
	.byte	0x2
	.byte	0x7e
	.sleb128 20
	.uleb128 0x6
	.string	"y"
	.byte	0x1
	.byte	0x4
	.4byte	0x7c
	.byte	0x2
	.byte	0x7e
	.sleb128 16
	.byte	0x0
	.byte	0x0
	.section	.debug_abbrev
	.uleb128 0x1
	.uleb128 0x11
	.byte	0x1
	.uleb128 0x25
	.uleb128 0xe
	.uleb128 0x13
	.uleb128 0xb
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x1b
	.uleb128 0xe
	.uleb128 0x11
	.uleb128 0x1
	.uleb128 0x12
	.uleb128 0x1
	.uleb128 0x10
	.uleb128 0x6
	.byte	0x0
	.byte	0x0
	.uleb128 0x2
	.uleb128 0x24
	.byte	0x0
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3e
	.uleb128 0xb
	.uleb128 0x3
	.uleb128 0xe
	.byte	0x0
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x24
	.byte	0x0
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3e
	.uleb128 0xb
	.uleb128 0x3
	.uleb128 0x8
	.byte	0x0
	.byte	0x0
	.uleb128 0x4
	.uleb128 0x24
	.byte	0x0
	.uleb128 0xb
	.uleb128 0xb
	.uleb128 0x3e
	.uleb128 0xb
	.byte	0x0
	.byte	0x0
	.uleb128 0x5
	.uleb128 0x2e
	.byte	0x1
	.uleb128 0x3f
	.uleb128 0xc
	.uleb128 0x3
	.uleb128 0xe
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x27
	.uleb128 0xc
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x11
	.uleb128 0x1
	.uleb128 0x12
	.uleb128 0x1
	.uleb128 0x40
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.uleb128 0x6
	.uleb128 0x34
	.byte	0x0
	.uleb128 0x3
	.uleb128 0x8
	.uleb128 0x3a
	.uleb128 0xb
	.uleb128 0x3b
	.uleb128 0xb
	.uleb128 0x49
	.uleb128 0x13
	.uleb128 0x2
	.uleb128 0xa
	.byte	0x0
	.byte	0x0
	.byte	0x0
	.section	.debug_pubnames,"",@progbits
	.4byte	0x17
	.2byte	0x2
	.4byte	.Ldebug_info0
	.4byte	0xbb
	.4byte	0x8a
	.string	"main"
	.4byte	0x0
	.section	.debug_aranges,"",@progbits
	.4byte	0x1c
	.2byte	0x2
	.4byte	.Ldebug_info0
	.byte	0x4
	.byte	0x0
	.2byte	0x0
	.2byte	0x0
	.4byte	.Ltext0
	.4byte	.Letext0-.Ltext0
	.4byte	0x0
	.4byte	0x0
	.section	.debug_line
	.4byte	.LELT0-.LSLT0
.LSLT0:
	.2byte	0x2
	.4byte	.LELTP0-.LASLTP0
.LASLTP0:
	.byte	0x1
	.byte	0x1
	.byte	0xf6
	.byte	0xf5
	.byte	0xa
	.byte	0x0
	.byte	0x1
	.byte	0x1
	.byte	0x1
	.byte	0x1
	.byte	0x0
	.byte	0x0
	.byte	0x0
	.byte	0x1
	.byte	0x0
	.string	"test_lib.c"
	.uleb128 0x0
	.uleb128 0x0
	.uleb128 0x0
	.byte	0x0
.LELTP0:
	.byte	0x0
	.uleb128 0x5
	.byte	0x2
	.4byte	.LM1
	.byte	0x16
	.byte	0x0
	.uleb128 0x5
	.byte	0x2
	.4byte	.LM2
	.byte	0x16
	.byte	0x0
	.uleb128 0x5
	.byte	0x2
	.4byte	.LM3
	.byte	0x15
	.byte	0x0
	.uleb128 0x5
	.byte	0x2
	.4byte	.LM4
	.byte	0x15
	.byte	0x0
	.uleb128 0x5
	.byte	0x2
	.4byte	.LM5
	.byte	0x15
	.byte	0x0
	.uleb128 0x5
	.byte	0x2
	.4byte	.Letext0
	.byte	0x0
	.uleb128 0x1
	.byte	0x1
.LELT0:
	.section	.debug_str,"MS",@progbits,1
.LASF5:
	.string	"long long int"
.LASF4:
	.string	"unsigned int"
.LASF15:
	.string	"/home/daniel.tian/gcc_rice_dev/rice-binutils/rice-gcc-test"
.LASF8:
	.string	"long unsigned int"
.LASF6:
	.string	"long long unsigned int"
.LASF11:
	.string	"float"
.LASF9:
	.string	"char"
.LASF1:
	.string	"unsigned char"
.LASF16:
	.string	"main"
.LASF7:
	.string	"long int"
.LASF10:
	.string	"double"
.LASF3:
	.string	"short unsigned int"
.LASF0:
	.string	"signed char"
.LASF12:
	.string	"long double"
.LASF13:
	.string	"GNU C 4.3.0"
.LASF2:
	.string	"short int"
.LASF14:
	.string	"test_lib.c"
	.ident	"GCC: (GNU) 4.3.0"



> Can you provide a full example of the problem that you are trying to resolve
> ? ?Ie please include details of the target you are working with, the command
> lines that you use to assemble and disassemble the test case, and the output
> showing the relocs.
>
> It sounds to me like you have a bug in your backend code for gas somewhere
> that is making it generate relocations when there is no need. ?Perhaps you
> can compare your backend code with the code for another (similar) target to
> see where they differ.
>
Yes, you are right. Now I am cracking the CRX BFD.

Here is the detail of what I target did.
gas only generates the relocation type:
1.BFD_RELOC_RICE_REL_14_JMP:
   Most of this relocation type is local resolved. like for/while
statement in c language will generate JMP instruction.
2.BFD_RELOC_RICE_REL_14_CALL:
  This relocation type is global, and only will be resolved in link
time(in BFD backend, function "elf_backend_relocate_section" will take
care of this part at link time).
3.BFD_RELOC_RICE_REL_16:
  This relocation type I defined is also global. Like: move the
function address (Or data symbol_ref) into a register, then CALL
instruction will call the function with the register (or access the
data memory with this register). So this type also will be resolved at
link time in function "elf_backend_relocate_section"

But when I debug the as and ld with insight, there were some
relocation types which I have mentioned in former email
(BFD_RELOC_8/16/32, mostly BFD_RELOC_32), I didn't take care in
function "elf_backend_relocate_section". Yeah. I check the gas(the
code I wrote) missed those relocation type, they just generated
without any of my processing(I don't know how to handle it due to this
part of relocation confusing me.).

there are mainly two functions I used to deal with relocation
type:md_apply_fix, and tc_gen_reloc.
No relaxation did right now.

I run the as simply: rice-elf-as test-lib.s -o test-lib.o

Here is the data dump with command rice-elf-readelf -a:

ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              REL (Relocatable file)
  Machine:                           MavrixTech.Inc RICE microprocessor
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          0 (bytes into file)
  Start of section headers:          1112 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           0 (bytes)
  Number of program headers:         0
  Size of section headers:           40 (bytes)
  Number of section headers:         22
  Section header string table index: 19

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .text             PROGBITS        00000000 000034 000074 00  AX  0   0  4
  [ 2] .rela.text        RELA            00000000 00091c 000024 0c     20   1  4
  [ 3] .data             PROGBITS        00000000 0000a8 000000 00  WA  0   0  1
  [ 4] .bss              NOBITS          00000000 0000a8 000000 00  WA  0   0  1
  [ 5] .mdebug.abi32     PROGBITS        00000000 0000a8 000000 00      0   0  1
  [ 6] .debug_abbrev     PROGBITS        00000000 0000a8 000059 00      0   0  1
  [ 7] .debug_info       PROGBITS        00000000 000101 0000bb 00      0   0  1
  [ 8] .rela.debug_info  RELA            00000000 000940 000114 0c     20   7  4
  [ 9] .debug_line       PROGBITS        00000000 0001bc 000077 00      0   0  1
  [10] .rela.debug_line  RELA            00000000 000a54 000048 0c     20   9  4
  [11] .debug_frame      PROGBITS        00000000 000234 000020 00      0   0  4
  [12] .rela.debug_frame RELA            00000000 000a9c 000018 0c     20  11  4
  [13] .debug_pubnames   PROGBITS        00000000 000254 00001b 00      0   0  1
  [14] .rela.debug_pubna RELA            00000000 000ab4 00000c 0c     20  13  4
  [15] .debug_aranges    PROGBITS        00000000 00026f 000020 00      0   0  1
  [16] .rela.debug_arang RELA            00000000 000ac0 000018 0c     20  15  4
  [17] .debug_str        PROGBITS        00000000 00028f 0000f9 01  MS  0   0  1
  [18] .comment          PROGBITS        00000000 000388 000012 00      0   0  1
  [19] .shstrtab         STRTAB          00000000 00039a 0000be 00      0   0  1
  [20] .symtab           SYMTAB          00000000 0007c8 000120 10     21  14  4
  [21] .strtab           STRTAB          00000000 0008e8 000031 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings)
  I (info), L (link order), G (group), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)

There are no section groups in this file.

There are no program headers in this file.

Relocation section '.rela.text' at offset 0x91c contains 3 entries:
 Offset     Info    Type            Sym.Value  Sym. Name + Addend
00000024  00000e07 R_RICE_REL14_CALL 00000000   __extendsfdf2 + 0
00000038  00001107 R_RICE_REL14_CALL 00000000   asin + 0
0000004c  00000f07 R_RICE_REL14_CALL 00000000   __truncdfsf2 + 0

Relocation section '.rela.debug_info' at offset 0x940 contains 23 entries:
 Offset     Info    Type            Sym.Value  Sym. Name + Addend
00000006  00000603 R_RICE_32         00000000   .debug_abbrev + 0
0000000c  00000c03 R_RICE_32         00000000   .debug_str + d8
00000011  00000c03 R_RICE_32         00000000   .debug_str + ee
00000015  00000c03 R_RICE_32         00000000   .debug_str + 1b
00000019  00000203 R_RICE_32         00000000   .text + 0
0000001d  00000203 R_RICE_32         00000000   .text + 74
00000021  00000803 R_RICE_32         00000000   .debug_line + 0
00000028  00000c03 R_RICE_32         00000000   .debug_str + c0
0000002f  00000c03 R_RICE_32         00000000   .debug_str + 8a
00000036  00000c03 R_RICE_32         00000000   .debug_str + e4
0000003d  00000c03 R_RICE_32         00000000   .debug_str + ad
0000004b  00000c03 R_RICE_32         00000000   .debug_str + e
00000052  00000c03 R_RICE_32         00000000   .debug_str + 0
00000059  00000c03 R_RICE_32         00000000   .debug_str + 68
00000060  00000c03 R_RICE_32         00000000   .debug_str + 9d
0000006a  00000c03 R_RICE_32         00000000   .debug_str + 56
00000071  00000c03 R_RICE_32         00000000   .debug_str + 85
00000078  00000c03 R_RICE_32         00000000   .debug_str + a6
0000007f  00000c03 R_RICE_32         00000000   .debug_str + 7f
00000086  00000c03 R_RICE_32         00000000   .debug_str + cc
0000008c  00000c03 R_RICE_32         00000000   .debug_str + 98
00000097  00000203 R_RICE_32         00000000   .text + 0
0000009b  00000203 R_RICE_32         00000000   .text + 74

Relocation section '.rela.debug_line' at offset 0xa54 contains 6 entries:
 Offset     Info    Type            Sym.Value  Sym. Name + Addend
0000002b  00000203 R_RICE_32         00000000   .text + 0
00000033  00000203 R_RICE_32         00000000   .text + 14
0000003b  00000203 R_RICE_32         00000000   .text + 20
00000043  00000203 R_RICE_32         00000000   .text + 58
0000004b  00000203 R_RICE_32         00000000   .text + 60
00000053  00000203 R_RICE_32         00000000   .text + 74

Relocation section '.rela.debug_frame' at offset 0xa9c contains 2 entries:
 Offset     Info    Type            Sym.Value  Sym. Name + Addend
00000014  00000903 R_RICE_32         00000000   .debug_frame + 0
00000018  00000203 R_RICE_32         00000000   .text + 0

Relocation section '.rela.debug_pubnames' at offset 0xab4 contains 1 entries:
 Offset     Info    Type            Sym.Value  Sym. Name + Addend
00000006  00000703 R_RICE_32         00000000   .debug_info + 0

Relocation section '.rela.debug_aranges' at offset 0xac0 contains 2 entries:
 Offset     Info    Type            Sym.Value  Sym. Name + Addend
00000006  00000703 R_RICE_32         00000000   .debug_info + 0
00000010  00000203 R_RICE_32         00000000   .text + 0

There are no unwind sections in this file.

Symbol table '.symtab' contains 18 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 00000000     0 FILE    LOCAL  DEFAULT  ABS test_lib.c
     2: 00000000     0 SECTION LOCAL  DEFAULT    1
     3: 00000000     0 SECTION LOCAL  DEFAULT    3
     4: 00000000     0 SECTION LOCAL  DEFAULT    4
     5: 00000000     0 SECTION LOCAL  DEFAULT    5
     6: 00000000     0 SECTION LOCAL  DEFAULT    6
     7: 00000000     0 SECTION LOCAL  DEFAULT    7
     8: 00000000     0 SECTION LOCAL  DEFAULT    9
     9: 00000000     0 SECTION LOCAL  DEFAULT   11
    10: 00000000     0 SECTION LOCAL  DEFAULT   13
    11: 00000000     0 SECTION LOCAL  DEFAULT   15
    12: 00000000     0 SECTION LOCAL  DEFAULT   17
    13: 00000000     0 SECTION LOCAL  DEFAULT   18
    14: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND __extendsfdf2
    15: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND __truncdfsf2
    16: 00000000   116 FUNC    GLOBAL DEFAULT    1 main
    17: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND asin

No version information found in this file.

I wonder the relocation entries (BFD_RELOC_32 mapped to R_RICE_32) in
those section '.rela.debugXXX'  only works in debug tools(e.g: gdb).

The BFD_RELOC_8/16/32 is mapped to R_RICE_8/16/32 in BFD backend.  In
my BFD backend, I also did not process those
relocation types. Like this:
              if ((r_type == R_RICE_REL14_CALL) || (r_type == R_RICE_REL14_JMP))
       	{
	   		Rvalue = Rvalue >> 2;
	   		Rvalue = (Rvalue & 0x3FF) | ((Rvalue & 0x3C00) << 2);
	   		Rvalue |=  (bfd_get_32 (input_bfd, hit_data));
			bfd_put_32 (input_bfd, Rvalue, hit_data);
	 		//Rvalue |= (((bfd_get_32 (input_bfd, hit_data)) |
		    //  bfd_get_16 (input_bfd, hit_data + 2)) & ~howto->dst_mask);
       	}

       else if (r_type == R_RICE_REL16)
       	{
       		//if contents is code, address will be align 32bit.
       		//pc register will ignore the 2bit in lsb.
       		if((sec->flags & SEC_CODE))
				Rvalue = Rvalue >> 2;
			
       		Rvalue = (Rvalue & 0x3FF) | ((Rvalue & 0x1FC00) << 2);
			Rvalue |=  (bfd_get_32 (input_bfd, hit_data));
	 		bfd_put_32 (input_bfd, Rvalue, hit_data);
       	}
     	break;

if never return bfd_reloc_notsupported.

This object file doesn't invoke ld. I just wanna show the relocation
types which I can't understand and how to fix them.
 I built the it with command: rice-elf-gcc test-lib.c -o test-lib -lm
and the following is the readelf dump:
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           MavrixTech.Inc RICE microprocessor
  Version:                           0x1
  Entry point address:               0x0
  Start of program headers:          52 (bytes into file)
  Start of section headers:          61788 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         4
  Size of section headers:           40 (bytes)
  Number of section headers:         20
  Section header string table index: 17

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .text             PROGBITS        00000000 0000b4 002e40 00  AX  0   0  4
  [ 2] .rodata           PROGBITS        80000000 0032fc 000024 00   A  0   0  4
  [ 3] .data             PROGBITS        80000024 002ef4 000408 00  WA  0   0  4
  [ 4] .heap             NOBITS          8000042c 003320 002000 00  WA  0   0  1
  [ 5] .stack            NOBITS          8000242c 003320 006000 00  WA  0   0  1
  [ 6] .istack           NOBITS          8000842c 003320 000100 00  WA  0   0  1
  [ 7] .comment          PROGBITS        00000000 003320 0001e6 00      0   0  1
  [ 8] .debug_aranges    PROGBITS        00000000 003506 0002f0 00      0   0  1
  [ 9] .debug_pubnames   PROGBITS        00000000 0037f6 00036a 00      0   0  1
  [10] .debug_info       PROGBITS        00000000 003b60 004448 00      0   0  1
  [11] .debug_abbrev     PROGBITS        00000000 007fa8 001d17 00      0   0  1
  [12] .debug_line       PROGBITS        00000000 009cbf 002eab 00      0   0  1
  [13] .debug_frame      PROGBITS        00000000 00cb6c 000300 00      0   0  4
  [14] .debug_str        PROGBITS        00000000 00ce6c 000c23 01  MS  0   0  1
  [15] .debug_loc        PROGBITS        00000000 00da8f 001178 00      0   0  1
  [16] .debug_ranges     PROGBITS        00000000 00ec07 000490 00      0   0  1
  [17] .shstrtab         STRTAB          00000000 00f097 0000c3 00      0   0  1
  [18] .symtab           SYMTAB          00000000 00f47c 000610 10     19  46  4
  [19] .strtab           STRTAB          00000000 00fa8c 0002db 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings)
  I (info), L (link order), G (group), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)

There are no section groups in this file.

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  LOAD           0x0000b4 0x00000000 0x00000000 0x02e40 0x02e40 R E 0x4
  LOAD           0x002ef4 0x80000024 0x00002e40 0x00408 0x00408 RW  0x4
  LOAD           0x0032fc 0x80000000 0x80000000 0x00024 0x00024 R   0x4
  LOAD           0x003320 0x8000042c 0x8000042c 0x00000 0x08100 RW  0x1

 Section to Segment mapping:
  Segment Sections...
   00     .text
   01     .data
   02     .rodata
   03     .heap .stack .istack

There is no dynamic section in this file.

There are no relocations in this file.

There are no unwind sections in this file.

Symbol table '.symtab' contains 97 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 00000000     0 SECTION LOCAL  DEFAULT    1
     2: 80000000     0 SECTION LOCAL  DEFAULT    2
     3: 80000024     0 SECTION LOCAL  DEFAULT    3
     4: 8000042c     0 SECTION LOCAL  DEFAULT    4
     5: 8000242c     0 SECTION LOCAL  DEFAULT    5
     6: 8000842c     0 SECTION LOCAL  DEFAULT    6
     7: 00000000     0 SECTION LOCAL  DEFAULT    7
     8: 00000000     0 SECTION LOCAL  DEFAULT    8
     9: 00000000     0 SECTION LOCAL  DEFAULT    9
    10: 00000000     0 SECTION LOCAL  DEFAULT   10
    11: 00000000     0 SECTION LOCAL  DEFAULT   11
    12: 00000000     0 SECTION LOCAL  DEFAULT   12
    13: 00000000     0 SECTION LOCAL  DEFAULT   13
    14: 00000000     0 SECTION LOCAL  DEFAULT   14
    15: 00000000     0 SECTION LOCAL  DEFAULT   15
    16: 00000000     0 SECTION LOCAL  DEFAULT   16
    17: 00000000     0 FILE    LOCAL  DEFAULT  ABS test_lib.c
    18: 00000000     0 FILE    LOCAL  DEFAULT  ABS w_asin.c
    19: 00000000     0 FILE    LOCAL  DEFAULT  ABS e_asin.c
    20: 00000000     0 FILE    LOCAL  DEFAULT  ABS e_sqrt.c
    21: 00000000     0 FILE    LOCAL  DEFAULT  ABS s_fabs.c
    22: 00000000     0 FILE    LOCAL  DEFAULT  ABS s_isnand.c
    23: 00000000     0 FILE    LOCAL  DEFAULT  ABS s_lib_ver.c
    24: 00000000     0 FILE    LOCAL  DEFAULT  ABS s_matherr.c
    25: 00000000     0 FILE    LOCAL  DEFAULT  ABS s_nan.c
    26: 00000000     0 FILE    LOCAL  DEFAULT  ABS fp-bit.c
    27: 00000000     0 FILE    LOCAL  DEFAULT  ABS dp-bit.c
    28: 000014bc  1448 FUNC    LOCAL  DEFAULT    1 _fpadd_parts
    29: 00000000     0 FILE    LOCAL  DEFAULT  ABS dp-bit.c
    30: 00000000     0 FILE    LOCAL  DEFAULT  ABS dp-bit.c
    31: 00000000     0 FILE    LOCAL  DEFAULT  ABS dp-bit.c
    32: 00000000     0 FILE    LOCAL  DEFAULT  ABS dp-bit.c
    33: 00000000     0 FILE    LOCAL  DEFAULT  ABS dp-bit.c
    34: 00000000     0 FILE    LOCAL  DEFAULT  ABS dp-bit.c
    35: 00000000     0 FILE    LOCAL  DEFAULT  ABS libgcc2.c
    36: 00000000     0 FILE    LOCAL  DEFAULT  ABS libgcc2.c
    37: 00000000     0 FILE    LOCAL  DEFAULT  ABS fp-bit.c
    38: 00000000     0 FILE    LOCAL  DEFAULT  ABS fp-bit.c
    39: 00000000     0 FILE    LOCAL  DEFAULT  ABS dp-bit.c
    40: 00000000     0 FILE    LOCAL  DEFAULT  ABS dp-bit.c
    41: 00000000     0 FILE    LOCAL  DEFAULT  ABS dp-bit.c
    42: 00000000     0 FILE    LOCAL  DEFAULT  ABS fp-bit.c
    43: 00000000     0 FILE    LOCAL  DEFAULT  ABS errno.c
    44: 00000000     0 FILE    LOCAL  DEFAULT  ABS impure.c
    45: 8000002c  1024 OBJECT  LOCAL  DEFAULT    3 impure_data
    46: 000013ac    44 FUNC    GLOBAL DEFAULT    1 fabs
    47: 00002e40     0 NOTYPE  GLOBAL DEFAULT  ABS __DATA_IMAGE_START
    48: 00002278   168 FUNC    GLOBAL DEFAULT    1 __gtdf2
    49: 00002e34    12 FUNC    GLOBAL DEFAULT    1 __errno
    50: 00002320    84 FUNC    GLOBAL DEFAULT    1 __make_dp
    51: 80000024     0 NOTYPE  GLOBAL DEFAULT    3 __DATA_START
    52: 0000260c    76 FUNC    GLOBAL DEFAULT    1 __make_fp
    53: 00002e40     0 NOTYPE  GLOBAL DEFAULT    2 __DTOR_END
    54: 00002e40     0 NOTYPE  GLOBAL DEFAULT    2 __DTOR_START
    55: 80000024     0 NOTYPE  GLOBAL DEFAULT    2 __RDATA_END
    56: 00000000     0 NOTYPE  GLOBAL DEFAULT    1 __INIT_END
    57: 00000000     0 NOTYPE  GLOBAL DEFAULT    1 __TEXT_START
    58: 000029e4   344 FUNC    GLOBAL DEFAULT    1 __unpack_d
    59: 00000000     0 NOTYPE  GLOBAL DEFAULT    1 __FINI_START
    60: 00001454   104 FUNC    GLOBAL DEFAULT    1 __extendsfdf2
    61: 00001af8   136 FUNC    GLOBAL DEFAULT    1 __adddf3
    62: 80000024     4 OBJECT  GLOBAL DEFAULT    3 __fdlib_version
    63: 80000014     4 OBJECT  GLOBAL DEFAULT    2 _global_impure_ptr
    64: 8000042c     0 NOTYPE  GLOBAL DEFAULT    4 __BSS_START
    65: 8000042c     0 NOTYPE  GLOBAL DEFAULT    4 __BSS_END
    66: 00002514   248 FUNC    GLOBAL DEFAULT    1 __unpack_f
    67: 00002c60   468 FUNC    GLOBAL DEFAULT    1 __pack_f
    68: 0000021c  3556 FUNC    GLOBAL DEFAULT    1 __ieee754_asin
    69: 00000000    20 NOTYPE  GLOBAL DEFAULT    1 _start
    70: 000024a8   108 FUNC    GLOBAL DEFAULT    1 __ucmpdi2
    71: 00002b3c   292 FUNC    GLOBAL DEFAULT    1 __fpcmp_parts_d
    72: 00000000     0 NOTYPE  GLOBAL DEFAULT    1 __FINI_END
    73: 00001f90   744 FUNC    GLOBAL DEFAULT    1 __divdf3
    74: 00001b80  1040 FUNC    GLOBAL DEFAULT    1 __muldf3
    75: 00000014   116 FUNC    GLOBAL DEFAULT    1 main
    76: 8000842c     0 NOTYPE  GLOBAL DEFAULT    5 __STACK_START
    77: 00001424     8 FUNC    GLOBAL DEFAULT    1 matherr
    78: 00002374   144 FUNC    GLOBAL DEFAULT    1 __truncdfsf2
    79: 00000000     0 NOTYPE  GLOBAL DEFAULT    1 __INIT_START
    80: 00002e40     0 NOTYPE  GLOBAL DEFAULT    2 __CTOR_END
    81: 8000242c     0 NOTYPE  GLOBAL DEFAULT    4 __HEAP_MAX
    82: 80000000    20 OBJECT  GLOBAL DEFAULT    2 __thenan_df
    83: 00000088   404 FUNC    GLOBAL DEFAULT    1 asin
    84: 80000028     4 OBJECT  GLOBAL DEFAULT    3 _impure_ptr
    85: 8000042c     0 NOTYPE  GLOBAL DEFAULT    3 __DATA_END
    86: 0000142c    40 FUNC    GLOBAL DEFAULT    1 nan
    87: 00001000   940 FUNC    GLOBAL DEFAULT    1 __ieee754_sqrt
    88: 00002e40     0 NOTYPE  GLOBAL DEFAULT    1 __TEXT_END
    89: 8000042c     0 NOTYPE  GLOBAL DEFAULT    4 __HEAP_START
    90: 000013d8    76 FUNC    GLOBAL DEFAULT    1 __isnand
    91: 00002404   164 FUNC    GLOBAL DEFAULT    1 __muldi3
    92: 8000852c     0 NOTYPE  GLOBAL DEFAULT    6 __ISTACK_START
    93: 00001a64   148 FUNC    GLOBAL DEFAULT    1 __subdf3
    94: 00002658   908 FUNC    GLOBAL DEFAULT    1 __pack_d
    95: 80000000     0 NOTYPE  GLOBAL DEFAULT    2 __RDATA_START
    96: 00002e40     0 NOTYPE  GLOBAL DEFAULT    2 __CTOR_START

No version information found in this file.

I checked the disassembler, it 's ok.

So I wonder how to deal with the BFD_RELOC_32.

Any suggestion is appreciated.
Thanks very much.

                            daniel.tian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]