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: .reloc improvement


On Sun, 21 Aug 2011, Alan Modra wrote:

> > > This patch makes some improvements to relocations emitted by the
> > > .reloc directive:
> > > 1) A symbol on these relocs is converted to section symbol plus offset
> > >    if the symbol satisifes S_IS_LOCAL and some section related
> > >    conditions.  For example, forward/backward labels like "1f", and
> > >    ELF locals like .L123 will be converted.  This helps keep the
> > >    symbol table tidy.
> > 
> > Thanks for doing this.  The relaxation might need to be conditional
> > for some REL targets though.
> 
> Yes, it was this sort of consideration that led me to choose to only
> substitute the section symbol for symbols that satisfy S_IS_LOCAL,
> rather than the larger set handled by adjust_reloc_symbols.  I know it
> potentially breaks existing code, but hopefully I won't be hit by too
> many brickbats..
> 
> [snip]
> > Maybe one way would be to create a fake, temporary fixup and pass
> > that to tc_fix_adjustable.
> 
> This might not be such a bad idea.  If resolve_reloc_expr_symbols
> found the frags and inserted a fake fixup in the section fixup chain,
> then the rest of the fixup handling machinery might even work for
> .reloc.

 Please note that on REL MIPS targets local symbols have to be retained in 
several cases where crucial information is lost if a relocation against 
such a symbol is converted to one against the containing section's symbol.  
This applies to all the PC-relative relocations, where the relocatable 
field is too narrow to hold arbitrary addends, and also, more recently, to 
microMIPS targets, where linker relaxation has to know local symbol 
(label) addresses to perform branch displacement recalculations and to 
make the LUI/ADDIU->ADDIUPC relaxation.  The latter is a linker's internal 
limitation and may possibly be lifted (possibly by using the RELA 
representation internally even on REL targets), but the former is an 
inherent problem of the object file format used.

 Just making sure these issues are not missed -- I can't have a look at 
your change at the moment and see what exact implications it has, sorry.

  Maciej


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