PR 21274, ld segfaults linking PE DLL
authorAlan Modra <amodra@gmail.com>
Tue, 11 Apr 2017 10:07:51 +0000 (19:37 +0930)
committerAlan Modra <amodra@gmail.com>
Tue, 11 Apr 2017 10:19:13 +0000 (19:49 +0930)
commitfbea15088db59186960134d11b8bf98070224d6c
treeb90e6c1a439b2a2441f0075b97198018a60c610e
parentb43c520dba2f909c9bbb3ff5f2657c1c9010939b
PR 21274, ld segfaults linking PE DLL

Don't use fixed size buffers for symbol names.

PR 21274
PR 18466
* emultempl/pe.em (pe_find_data_imports): Don't use fixed size
symbol buffer.  Instead, xmalloc max size needed with space for
prefix.  Wrap overlong lines.  Formatting.  Pass symbol buffer
copy of name to pe_walk_relocs_of_symbol.
(make_inport_fixup): Add "name" param, pass to pe_create_import_fixup.
* emultempl/pe.em (pep_find_data_imports): As for pe_find_data_imports.
(make_import_fixup): Add "name" param, pass to pep_create_import_fixup.
Use bfd_get_signed_* and remove unnecessary casts.  Formatting.
* pe-dll.c (pe_walk_relocs_of_symbol): Add "name" param.  Pass to
callback.
(make_import_fixup_mark): Add "name" param.  Make use of prefix
space rather than xmalloc here.
(pe_create_import_fixup): Likewise.
* pe-dll.h (pe_walk_relocs_of_symbol): Update prototype.
(pe_create_import_fixup): Likewise.
* pep-dll.h (pep_walk_relocs_of_symbol): Likewise.
(pep_create_import_fixup): Likewise.
ld/ChangeLog
ld/emultempl/pe.em
ld/emultempl/pep.em
ld/pe-dll.c
ld/pe-dll.h
ld/pep-dll.h