[PATCH/RFA] sh-elf: Unnecessary relocations
Daniel Jacobowitz
drow@mvista.com
Thu Sep 26 17:41:00 GMT 2002
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
More information about the Binutils
mailing list