Wrong symbol index generated in object file

Nemanja Popov nemanja.popov@micronasnit.com
Wed Mar 15 14:31:00 GMT 2006


Problem was in gas/config/tc-dlx.c

bfd_boolean
md_dlx_fix_adjustable (fixP)
   fixS *fixP;
{
  /* We need the symbol name for the VTABLE entries.  */
  return (fixP->fx_r_type != BFD_RELOC_VTABLE_INHERIT
          && fixP->fx_r_type != BFD_RELOC_VTABLE_ENTRY
}

which is  

#define tc_fix_adjustable(FIX) md_dlx_fix_adjustable (FIX)

It was missing one line:

  return (fixP->fx_r_type != BFD_RELOC_VTABLE_INHERIT
          && fixP->fx_r_type != BFD_RELOC_VTABLE_ENTRY
          && fixP->fx_r_type != BFD_RELOC_DLX_JMP26); 


Regards,
Nemanja

----- Original Message ----- 
From: "Alan Modra" <amodra@bigpond.net.au>
To: "Nemanja Popov" <nemanja.popov@micronasnit.com>
Cc: <binutils@sourceware.org>
Sent: Wednesday, March 15, 2006 12:22 PM
Subject: Re: Wrong symbol index generated in object file


> On Sat, Mar 11, 2006 at 02:49:38PM +0100, Nemanja Popov wrote:
>> As you can see, symbol index which references to the necessary symbol
>> (_foo_func2) for this relocation is wrong. That causes wrong relocation
>> calculation at linking time.
> 
> You may have found a problem, but the fact that _foo_func2 is replaced
> by the section symbol .foo in the reloc isn't wrong in itself.
> Effectively, the assembler is generating code for "jal .foo+4" instead
> of "jal _foo_func_2".  Since _foo_func_2 is equal to .foo+4 this should
> be OK.
> 
> You might like to take a look at bfd/elf32-dlx.c.  I think much of this
> file is bogus.
> 
> -- 
> Alan Modra
> IBM OzLabs - Linux Technology Centre
> 
> 
> __________ NOD32 1.1443 (20060314) Information __________
> 
> This message was checked by NOD32 antivirus system.
> http://www.eset.com
> 
>



More information about the Binutils mailing list