Tidy ld use of bfd_section userdata.
authorAlan Modra <amodra@gmail.com>
Thu, 16 Jan 2014 01:17:25 +0000 (11:47 +1030)
committerAlan Modra <amodra@gmail.com>
Thu, 16 Jan 2014 01:26:51 +0000 (11:56 +1030)
commit6fcc66ab70d67efb1a8b96532b5eb96883caa727
tree814bac8e40cf8b8621a2c85d2d8bbd99d90f77c6
parentb75d42bce5609effad86fb8b5d902f4c337e0cf9
Tidy ld use of bfd_section userdata.

A long time ago ld made use of userdata to tie an output section to
its lang_input_statement_struct object file.  Some time later Joern
made map file printing of symbols at lot faster, using userdata on
input sections.  That complicated allocation of userdata, and when the
output section use disappeared a year later, the code wasn't properly
cleaned up.  This patch does that cleanup, and also tidies the symbol
printing code to not allocate userdata where it won't be needed.  We
don't print symbols defined in the absolute section or in output
sections.

* ld.h (fat_section_userdata_type, get_userdata): Move to..
* ldlang.h (input_section_userdata_type, get_userdata): ..here.
* ldlang.c (init_map_userdata): Delete.  Fold into..
(sort_def_symbol): ..here.  Don't attach input section userdata
to output sections or global bfd sections.
(lang_map): Don't pre-allocate input section userdata.
(init_os): Don't allocate userdata for output sections.
(print_all_symbols): Update.
ld/ChangeLog
ld/ld.h
ld/ldlang.c
ld/ldlang.h