This is the mail archive of the binutils@sources.redhat.com 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]

Re: sh-elf: the substraction of two symbols


> From: Toshi Morita <tm2@best.com>
> Date: Fri, 12 Jan 2001 18:43:00 -0800 (PST)
> Cc: binutils@sources.redhat.com
> 
> > Toshi Morita <tm2@best.com> writes:
> > 
> > > As a major user of the sh-elf toolchain, we'd (Sega) actually prefer it 
> > > to use the REL relocation type instead of RELA. 
> > > 
> > > I have received numerous complaints that the relocation info is too
> > > large due to the usage of the RELA relocation type.
> > 
> > I couldn't do that and also do the fancy relaxation.  There just isn't
> > enough room to store the required information.
> > 
> > Well, I suppose I could have introduced some extra sections or
> > something, but relocations are a reasonable place to store this sort
> > of information.
> 
> Might have been better if the info was in a separate section.
> 
> > Why do people care about the size of the relocation info, anyhow?  It
> > should only matter if they are doing some sort of dynamic loading of
> > relocatable files.  In that case, they should do something different,
> > like the MIPS ECOFF embedded-relocs hack.
> 
> We care about the size of the relocation info because:
> 
> 1) GCC spits out a huge amount of debug info for a project.
>    When generating an ELF file with 2 megabytes of machine code,
>    it's fairly typical to emit over 40 megabytes of DWARF debug
>    information.
> 
> 2) As you can guess from the previous statistic, over 99% of the
>    relocation info emitted is for the .debug section.
> 
>    For one of our projects, 99.7% of the relocations emitted
>    were for the .debug section.
> 
> These two factors contribute to extremely slow link times for us,
> on the order of 2+ minutes for some projects.

I believe Richard Henderson found the same problem on the Alpha port,
and fixed it by having the assembler and the compiler cooperate 
to produce better DWARF debugging information.  I believe he managed
to reduce the size of the debugging info by about 95%.  Perhaps
similar techniques could work for the SH port?


Generally, RELA relocs are better than REL relocs.  For instance, MIPS
used REL relocs, and they limited the amount of optimisation that GCC
could reliably do because of the limited space available for the
operand of the reloc.

-- 
- Geoffrey Keating <geoffk@geoffk.org>

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