bfd: don't produce corrupt COFF symbol table due to long ELF file name symbols

The re-writing logic in _bfd_coff_final_link() overwrote the ".file"
part of the symbol table entry, due to not coping with the auxiliary
entry generated in all cases.

Note that while I would have wanted to add a test case,
(a) I didn't spot any one testing the base functionality here, and
(b) I wasn't able to figure out proper conditionals to use in e.g.
    ld-elf/elf.exp to check for the necessary PE/PE+ support (which
    varies by target).
This commit is contained in:
Jan Beulich
2015-12-15 14:31:25 +01:00
committed by Jan Beulich
parent 1d19cae752
commit 270f824531
5 changed files with 62 additions and 15 deletions

View File

@ -312,8 +312,8 @@ extern void coff_mangle_symbols
extern bfd_boolean coff_write_symbols
(bfd *);
extern bfd_boolean coff_write_alien_symbol
(bfd *, asymbol *, struct internal_syment *, bfd_vma *,
bfd_size_type *, asection **, bfd_size_type *);
(bfd *, asymbol *, struct internal_syment *, union internal_auxent *,
bfd_vma *, bfd_size_type *, asection **, bfd_size_type *);
extern bfd_boolean coff_write_linenumbers
(bfd *);
extern alent *coff_get_lineno