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

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

 



> Because lw $v1,120($v1) will load .rodata+0x78 to v1 register,
>         jr v1, make PC(program counter)<--v1,
> so content of .rodata+0x78 is address of instruction, is it right?
> and switch have six case statements, so .rodata store six address of instruction.
> like as:
> 0000 0030 0000 0048 0000 0060 0000 0078 0000 0090 0000 00a8

Ah, now thats a better question .Sorry about the earlier answer, you are
not looking in the right place. 

What is in the rodata address that you refer to. ?Is it not that the
jump tables for the switch that you refer to.  Those are addresses into
the text sections. This particular part of the rodata would have its own
reloc entries. Do a objdump -Dr and look at the reloc values in rodata.
You can see the reloc values into the text around that place. 


Look at the relocation entries in the rodata section. The relocations
for the jump addresses would be in the rodata section and those will be
modified to the right address. Are these not addresses into the text
section ? 

Now is this clear ?

cheers
Ramana



[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