diff options
author | Alan Modra <amodra@gmail.com> | 2018-06-05 21:04:00 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2018-06-05 22:39:11 +0930 |
commit | 27b0767593284f97384b3597ebd211164f8c8b47 (patch) | |
tree | 1f82c304a2abc2acca2d865190b382e0963cd84a /bfd/bfd-in.h | |
parent | 8347745522002d5c0093bac584a2eaf9386ad219 (diff) | |
download | gdb-27b0767593284f97384b3597ebd211164f8c8b47.zip gdb-27b0767593284f97384b3597ebd211164f8c8b47.tar.gz gdb-27b0767593284f97384b3597ebd211164f8c8b47.tar.bz2 |
PR23254, ld.bfd mishandles file pointers while scanning archive
Best practice is to not mix lseek/read with fseek/fread on the same
underlying file descriptor, as not all stdio implementations will cope.
Since the plugin uses lseek/read while bfd uses fseek/fread this patch
reopens the file for exclusive use by the plugin rather than trying to
restore the file descriptor. That allows the plugin to read the file
after plugin_call_claim_file too.
bfd/
PR 23254
* plugin.c (bfd_plugin_open_input): Allow for possibility of
nested archives. Open file again for plugin.
(try_claim): Don't save and restore file position. Close file
if not claimed.
* sysdep.h (O_BINARY): Define.
ld/
PR 23254
* plugin.c (plugin_call_claim_file): Revert 2016-07-19 patch.
(plugin_object_p): Don't dup file descriptor.
Diffstat (limited to 'bfd/bfd-in.h')
0 files changed, 0 insertions, 0 deletions