Skip to content
  • Alan Modra's avatar
    PR23254, ld.bfd mishandles file pointers while scanning archive · 27b07675
    Alan Modra authored
    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.
    27b07675