diff options
author | Alan Modra <amodra@gmail.com> | 2017-04-11 19:37:51 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-04-11 19:49:13 +0930 |
commit | fbea15088db59186960134d11b8bf98070224d6c (patch) | |
tree | b90e6c1a439b2a2441f0075b97198018a60c610e /ld/pe-dll.h | |
parent | b43c520dba2f909c9bbb3ff5f2657c1c9010939b (diff) | |
download | binutils-fbea15088db59186960134d11b8bf98070224d6c.zip binutils-fbea15088db59186960134d11b8bf98070224d6c.tar.gz binutils-fbea15088db59186960134d11b8bf98070224d6c.tar.bz2 |
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.
Diffstat (limited to 'ld/pe-dll.h')
-rw-r--r-- | ld/pe-dll.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ld/pe-dll.h b/ld/pe-dll.h index 6d50125..de80924 100644 --- a/ld/pe-dll.h +++ b/ld/pe-dll.h @@ -62,9 +62,9 @@ extern void pe_dll_fill_sections extern void pe_exe_fill_sections (bfd *, struct bfd_link_info *); extern void pe_walk_relocs_of_symbol - (struct bfd_link_info *, const char *, int (*) (arelent *, asection *)); + (struct bfd_link_info *, char *, int (*) (arelent *, asection *, char *)); extern void pe_create_import_fixup - (arelent * rel, asection *, bfd_vma); + (arelent * rel, asection *, bfd_vma, char *); extern bfd_boolean pe_bfd_is_dll (bfd *); extern void pe_output_file_set_long_section_names |