Skip to content
  • Alan Modra's avatar
    Hide dynamic symbols in discarded sections · ae0e76dc
    Alan Modra authored
    This is a followup to git commit 97196564 "Strip global symbol
    defined in discarded section".  If a symbol defined in a discarded
    section was dynamic, that patch left .dynsym with holes (ie. all zero
    entries).  For example, the following from libstdc++.so:
    
    Symbol table '.dynsym' contains 6090 entries:
       Num:    Value          Size Type    Bind   Vis      Ndx Name
         0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
         1: 00000000000a74e0     0 SECTION LOCAL  DEFAULT   10
         2: 0000000000264180     0 SECTION LOCAL  DEFAULT   17
         3: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_addUserCommitAction
         4: 0000000000000000     0 NOTYPE  WEAK   DEFAULT  UND _ITM_memcpyRtWn
         5: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
    readelf: Warning: local symbol 5 found at index >= .dynsym's sh_info value of 3
         6: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
    readelf: Warning: local symbol 6 found at index >= .dynsym's sh_info value of 3
    [snip]
    
    This patch removes the symbols from .dynsym too.
    
    	PR 17550
    	* elflink.c (_bfd_elf_fix_symbol_flags): Hide dynamic symbols
    	in discarded sections.
    
    (cherry picked from commit af0bfb9c)
    ae0e76dc
To find the state of this project's repository at the time of any of these versions, check out the tags.