This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: [PATCH/RFA] sh-elf: Unnecessary relocations
On Fri, Sep 27, 2002 at 07:29:53AM +0900, kaz Kojima wrote:
> Daniel Jacobowitz <drow@mvista.com> wrote:
> > On Fri, Sep 27, 2002 at 06:26:52AM +0900, kaz Kojima wrote:
> >> Hi,
> >>
> >> Current gas for sh-elf generates some unnecessary PC relative
> >> relocations when the symbol is global. For example, I've got
> >> two relocations:
> >>
> >> RELOCATION RECORDS FOR [.text]:
> >> OFFSET TYPE VALUE
> >> 00000000 R_SH_DIR8WPL foo
> >> 00000006 R_SH_IND12W foo
> >>
> >> for the following small source
> >>
> >> .text
> >> mova foo,r0
> >> rts
> >> nop
> >> .global foo
> >> foo:
> >> bra foo
> >> nop
> >>
> >> and slightly old gas doesn't make such relocations for the same
> >> source. With the following patch, gas shows the same behavior
> >> as the old one. Regression tested on sh-unknown-linux-gnu.
> >
> > Isn't that incorrect ELF, though? Can't the definition of foo end up
> > coming from another shared object?
>
> Yes, it's a correct ELF. My point is that these relocations are
> unnecessary in this case.
After your patch gas would not generate any relocations for that
object, right? Why can't these be overridden in another shared object?
On i386, for the corresponding testcase, foo can be overridden
elsewhere.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer