[patch ld]: Close BFDs before linker-plugin's atexit routine is called
Kai Tietz
ktietz70@googlemail.com
Mon Feb 14 06:45:00 GMT 2011
2011/2/14 Alan Modra <amodra@gmail.com>:
> On Wed, Feb 09, 2011 at 07:51:58PM +0100, Kai Tietz wrote:
>> Hello,
>>
>> This is patch addresses the unlink call when lto linker-plugin is
>> used. As windows
>> native doesn't support to unlink still opened files, it fails to do so
>> as file-descriptors
>> of bfds aren't closed before atexit routine of plugin gets called.
>>
>> 2011-02-09 Kai Tietz
>>
>> * ldmain.c (remove_output): Set output_bfd
>> of link_info to nil and close all cached bfds.
>> (main): Close output_bfd of link_info and set
>> it to nil. Additionally close all cached bfds.
Hi Alan,
> The fact that you need to patch three places to fix one problem
> says to me that this isn't the best fix..
Well, here I am not that sure about. I thought about fixing it just
within the atexit-handler of plugin, but well, next one trying to
opearate on files in a similar way, will have the same issues again. I
think it is simply bad style to exit a program without even try to
cleanup opened file descriptors and used memory. This could even help
to use tools like valgrind on ld ...
> Does a single
> bfd_cache_close_all at the start of plugin_call_cleanup fix your
> problem?
Yes, it does.
Regards,
Kai
More information about the Binutils
mailing list