This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PR lto/64837: lto plugin doesn't call ld_plugin_release_input_file
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Richard Biener <richard dot guenther at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 5 Feb 2015 12:57:59 -0800
- Subject: Re: PR lto/64837: lto plugin doesn't call ld_plugin_release_input_file
- Authentication-results: sourceware.org; auth=none
- References: <20150128181242 dot GA4350 at intel dot com> <DC893389-7AE0-45DA-A65B-124426D91CF3 at gmail dot com> <CAMe9rOqxNUzhanCShsgfLsqj_QJibroQZrF+g4y8c=XQxZnd8A at mail dot gmail dot com> <CAMe9rOpMWxMRHfmS=9kio+V5XAjEMFfnHo3xDPg5wegVXdj9MQ at mail dot gmail dot com> <CAMe9rOo=rBfa9rXANJy4raHn1bKKsVp75MmhxTA-fJdEdfi9yA at mail dot gmail dot com>
On Thu, Feb 5, 2015 at 8:42 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Wed, Jan 28, 2015 at 4:02 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Wed, Jan 28, 2015 at 11:37 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>> On Wed, Jan 28, 2015 at 11:19 AM, Richard Biener
>>> <richard.guenther@gmail.com> wrote:
>>>> On January 28, 2015 7:12:43 PM CET, "H.J. Lu" <hongjiu.lu@intel.com> wrote:
>>>>>Hi,
>>>>>
>>>>>This patch makes claim_file_handler to call release_input_file after it
>>>>>finishes processing input file. OK for trunk?
>>>>
>>>> OK. How did you test this?
>>>
>>> I did normal bootstrap and "make check" on Linux/x86-64.
>>> I also run ld.bfd and ld.gold by hand to verify that release_input_file
>>> is called.
>>>
>>
>> This is needed for LTO build. ar/nm/ranlib don't provide
>> release_input_file. I checked it in as an obvious fix.
>>
>> --
>> H.J.
>> ---
>> Index: ChangeLog
>> ===================================================================
>> --- ChangeLog (revision 220212)
>> +++ ChangeLog (working copy)
>> @@ -1,5 +1,10 @@
>> 2015-01-28 H.J. Lu <hongjiu.lu@intel.com>
>>
>> + * lto-plugin.c (claim_file_handler): Call release_input_file only
>> + if it is not NULL.
>> +
>> +2015-01-28 H.J. Lu <hongjiu.lu@intel.com>
>> +
>> PR lto/64837
>> * lto-plugin.c (release_input_file): New.
>> (claim_file_handler): Call release_input_file.
>> Index: lto-plugin.c
>> ===================================================================
>> --- lto-plugin.c (revision 220212)
>> +++ lto-plugin.c (working copy)
>> @@ -1007,7 +1007,8 @@ claim_file_handler (const struct ld_plug
>> if (obj.objfile)
>> simple_object_release_read (obj.objfile);
>>
>> - release_input_file (file);
>> + if (release_input_file)
>> + release_input_file (file);
>>
>> return LDPS_OK;
>> }
>
> We should call release_input_file only if file is claimed. Otherwise,
> ld will close file descriptor of non-IR file. I checked it in as obvious fix.
>
> --
> H.J.
> ---
> Index: ChangeLog
> ===================================================================
> --- ChangeLog (revision 220454)
> +++ ChangeLog (working copy)
> @@ -1,3 +1,8 @@
> +2015-02-05 H.J. Lu <hongjiu.lu@intel.com>
> +
> + * lto-plugin.c (claim_file_handler): Call release_input_file only
> + if file is claimed.
> +
> 2015-01-28 H.J. Lu <hongjiu.lu@intel.com>
>
> * lto-plugin.c (claim_file_handler): Call release_input_file only
> Index: lto-plugin.c
> ===================================================================
> --- lto-plugin.c (revision 220454)
> +++ lto-plugin.c (working copy)
> @@ -998,6 +998,9 @@ claim_file_handler (const struct ld_plug
>
> *claimed = 1;
>
> + if (release_input_file)
> + release_input_file (file);
> +
> goto cleanup;
>
> err:
> @@ -1007,9 +1010,6 @@ claim_file_handler (const struct ld_plug
> if (obj.objfile)
> simple_object_release_read (obj.objfile);
>
> - if (release_input_file)
> - release_input_file (file);
> -
> return LDPS_OK;
> }
We should pass handle, not file, to release_input_file.
I checked it in as an obvious fix.
--
H.J.
--
Index: ChangeLog
===================================================================
--- ChangeLog (revision 220455)
+++ ChangeLog (working copy)
@@ -1,5 +1,10 @@
2015-02-05 H.J. Lu <hongjiu.lu@intel.com>
+ * lto-plugin.c (claim_file_handler): Pass handle to
+ release_input_file.
+
+2015-02-05 H.J. Lu <hongjiu.lu@intel.com>
+
* lto-plugin.c (claim_file_handler): Call release_input_file only
if file is claimed.
Index: lto-plugin.c
===================================================================
--- lto-plugin.c (revision 220455)
+++ lto-plugin.c (working copy)
@@ -999,7 +999,7 @@ claim_file_handler (const struct ld_plug
*claimed = 1;
if (release_input_file)
- release_input_file (file);
+ release_input_file (file->handle);
goto cleanup;