This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH mingw/gold] Plugins cleanup fails on windows due to open handle


Hi,
Attached patch fixes issue with gold on windows:

ld.exe: fatal error: could not unlink output file
collect2.exe: error: ld returned 1 exit status

It happens on any gold link (successful or not) with plugins when
plugins->cleanup() called on gold_exit() tries to remove temporary
files (cc2lB8c4.ltrans0.ltrans.o) but handle is still opened.
I'm fixing it via new property close_on_release which can be setup per
each descriptor and therefore control any descriptor release if
needed.

ChangeLog:

2013-01-20  Pavel Chupin  <pavel.v.chupin@intel.com>

        Enforce descriptor close on release when plugins used
        * descriptors.cc: Enforce close for plugins.
        * descriptors.h: Add close_on_release descriptor property.

Alternative simpler fix could be made to always call
release_descriptor with permanent=true. E.g. this patch fixes the
problem as well:

--- a/gold/fileread.cc
+++ b/gold/fileread.cc
@@ -280,7 +280,7 @@ File_read::release()
       this->clear_views(CLEAR_VIEWS_NORMAL);
       if (this->is_descriptor_opened_)
        {
-         release_descriptor(this->descriptor_, false);
+         release_descriptor(this->descriptor_, true);
          this->is_descriptor_opened_ = false;
        }
     }

--
Pavel Chupin
Intel Corporation

Attachment: gold-plugins-close-handle.patch
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]