Re: Hurry! compile question about switch case statement in GCC2.96

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ranmana:

> The linker does not know 6 words are relocated. The linker only knows
> that there are 6 relocations to be performed. 

there has only one relocation about this,
other R_MIPS_HI16 and R_MIPS_LO16 relocation is for procedure call.

Following is whole disasemble code.

   0:	2484ffff 	addiu	$a0,$a0,-1
   4:	27bdffd8 	addiu	$sp,$sp,-40
   8:	2c820006 	sltiu	$v0,$a0,6
   c:	1040002c 	beqz	$v0,c0 <testFunc+0xc0>
  10:	ffbf0020 	sd	$ra,32($sp)
  14:	00041080 	sll	$v0,$a0,0x2
  18:	3c030000 	lui	$v1,0x0
			18: R_MIPS_HI16	.rodata+0x78
  1c:	0062182d 	daddu	$v1,$v1,$v0
  20:	8c630078 	lw	$v1,120($v1)
			20: R_MIPS_LO16	.rodata+0x78
  24:	00600008 	jr	$v1
	...
  30:	3c040000 	lui	$a0,0x0
			30: R_MIPS_HI16	.rodata
  34:	0c000000 	jal	0 <testFunc>
			34: R_MIPS_26	vos_printf
  38:	64840000 	daddiu	$a0,$a0,0
			38: R_MIPS_LO16	.rodata
  3c:	08000034 	j	d0 <testFunc+0xd0>
			3c: R_MIPS_26	.text+0xd0
  40:	dfbf0020 	ld	$ra,32($sp)
  44:	00000000 	nop
  48:	3c040000 	lui	$a0,0x0
			48: R_MIPS_HI16	.rodata+0x10
  4c:	0c000000 	jal	0 <testFunc>
			4c: R_MIPS_26	vos_printf
  50:	64840010 	daddiu	$a0,$a0,16
			50: R_MIPS_LO16	.rodata+0x10
  54:	08000034 	j	d0 <testFunc+0xd0>
			54: R_MIPS_26	.text+0xd0
  58:	dfbf0020 	ld	$ra,32($sp)
  5c:	00000000 	nop
  60:	3c040000 	lui	$a0,0x0
			60: R_MIPS_HI16	.rodata+0x20
  64:	0c000000 	jal	0 <testFunc>
			64: R_MIPS_26	vos_printf
  68:	64840020 	daddiu	$a0,$a0,32
			68: R_MIPS_LO16	.rodata+0x20
  6c:	08000034 	j	d0 <testFunc+0xd0>
			6c: R_MIPS_26	.text+0xd0
  70:	dfbf0020 	ld	$ra,32($sp)
  74:	00000000 	nop
  78:	3c040000 	lui	$a0,0x0
			78: R_MIPS_HI16	.rodata+0x30
  7c:	0c000000 	jal	0 <testFunc>
			7c: R_MIPS_26	vos_printf
  80:	64840030 	daddiu	$a0,$a0,48
			80: R_MIPS_LO16	.rodata+0x30
  84:	08000034 	j	d0 <testFunc+0xd0>
			84: R_MIPS_26	.text+0xd0
  88:	dfbf0020 	ld	$ra,32($sp)
  8c:	00000000 	nop
  90:	3c040000 	lui	$a0,0x0
			90: R_MIPS_HI16	.rodata+0x40
  94:	0c000000 	jal	0 <testFunc>
			94: R_MIPS_26	vos_printf
  98:	64840040 	daddiu	$a0,$a0,64
			98: R_MIPS_LO16	.rodata+0x40
  9c:	08000034 	j	d0 <testFunc+0xd0>
			9c: R_MIPS_26	.text+0xd0
  a0:	dfbf0020 	ld	$ra,32($sp)
  a4:	00000000 	nop
  a8:	3c040000 	lui	$a0,0x0
			a8: R_MIPS_HI16	.rodata+0x50
  ac:	0c000000 	jal	0 <testFunc>
			ac: R_MIPS_26	vos_printf
  b0:	64840050 	daddiu	$a0,$a0,80
			b0: R_MIPS_LO16	.rodata+0x50
  b4:	08000034 	j	d0 <testFunc+0xd0>
			b4: R_MIPS_26	.text+0xd0
  b8:	dfbf0020 	ld	$ra,32($sp)
  bc:	00000000 	nop
  c0:	3c040000 	lui	$a0,0x0
			c0: R_MIPS_HI16	.rodata+0x60
  c4:	0c000000 	jal	0 <testFunc>
			c4: R_MIPS_26	vos_printf
  c8:	64840060 	daddiu	$a0,$a0,96
			c8: R_MIPS_LO16	.rodata+0x60
  cc:	dfbf0020 	ld	$ra,32($sp)
  d0:	0000102d 	move	$v0,$zero
  d4:	03e00008 	jr	$ra
  d8:	27bd0028 	addiu	$sp,$sp,40
  dc:	00000000 	nop

can you explain it?


thanks,
-Abel






[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux