This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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]

Re: PR lto/64837: lto plugin doesn't call ld_plugin_release_input_file


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;
 }


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