RFC: [PATCH] New attempt at fixing MIPS --gc-sections et al.

David Daney ddaney@avtrex.com
Wed Aug 17 01:12:00 GMT 2005


Alan Modra wrote:
> On Tue, Aug 16, 2005 at 03:55:31PM -0700, David Daney wrote:
> 
>>A new field (do_not_emit) is added to the elf_link_hash_entry structure. 
>> When it is set, the corresponding symbol will not be emitted into the 
>>linker output.
> 
> 
> No, please don't add unnecessary fields.  The right fix is to force the
> symbols local.
> 

I am assuming that the reason you say not to add more fields is to try 
to minimize runtime memory usage for ld.

Is that a correct assumption?

The problem I am having with marking symbols from GCed sections as 
forced_local is that the symbols still show up in the dynamic symbol 
table.  As expected they are marked as local, but they are still there 
taking up space.

The problem I have with this approach is that the whole reason that I am 
using --gc-sections is to reduce memory usage in the executables I am 
producing.  All of these bogus local symbols are taking up valuable 
memory and probably slowing down the runtime linker as well.  In some 
cases it is not a small amount of memory either.  For example I have one 
executable that is 7.5MB where there are 27KB worth of these bogus space 
wasters.

You probably can tell that I would rather use more resources during the 
build to achieve better runtime performance.  I suppose for some the 
opposite may be true, but I suspect that is a rarely held view.

OK.  Given all of that, is there some fundamental problem with my patch 
that I just don't *get*?

Or is it more just a general reluctance to add more fields to 
elf_link_hash_entry?

David Daney.



More information about the Binutils mailing list