[help]Creating PLT entries

Ramana Radhakrishnan ramana.radhakrishnan@codito.com
Fri Sep 24 19:09:00 GMT 2004


C Jaiprakash, Noida wrote:
> Hi,
>    I am trying to implement creation of PLT entries using existing implementation. Currently the target supports 32 bit displacement so existing plt entries use pc+32 bit addr mode. I want to modify it such that displacement is loaded into a register first and pc,reg addr mode is used. I want to modify this in elf32-m68k.c file. 
> Following is part of plt entries table 
> static const bfd_byte elf_m68k_plt0_entry[PLT_ENTRY_SIZE] =
> {
>   0x2f, 0x3b, 0x01, 0x70, /* move.l (%pc,addr),-(%sp) */
>   0, 0, 0, 0,             /* replaced with offset to .got + 4.  */
>   0x4e, 0xfb, 0x01, 0x71, /* jmp ([%pc,addr]) */
>   0, 0, 0, 0,             /* replaced with offset to .got + 8.  */
>   0, 0, 0, 0              /* pad out to 20 bytes.  */
> };
> 
> How can i modify this so that instead of jmp ([%pc,addr]) jmp ([%pc,reg]) is used. Where should i look for modifications?
> I have very little idea of binutils, so any kind of help is appreciated. 


The table you see above is the encoding for the PLT entries . You would 
have to replace that with the corresponding entry in little endian or 
big endian form for whatever be the case you want to handle

In any case I dont see why you might want to do the jmp [%pc, reg] since 
you would not know the register used for calculating the offset :-)

cheers
ramana

> 
> regards,
> c jaiprakash



More information about the Binutils mailing list