Commit 8ead2223 by Kai Tietz Committed by Kai Tietz

re PR lto/47241 (lto not work on mingw32, reporting 'ld.exe: could not unlink output file')

2011-02-10  Kai Tietz  <kai.tietz@onevision.com>

        PR lto/47241
        * lto.c (lto_read_section_data): Free
        fd_name in failure case.
        For mingw targets don't hash file-descriptor.
        (read_cgraph_and_symbols): Close current_lto_file
        in failure case.

From-SVN: r169999
parent 06c969bd
2011-02-10 Kai Tietz <kai.tietz@onevision.com>
PR lto/47241
* lto.c (lto_read_section_data): Free
fd_name in failure case.
For mingw targets don't hash file-descriptor.
(read_cgraph_and_symbols): Close current_lto_file
in failure case.
2011-01-11 Jan Hubicka <jh@suse.cz>
PR lto/45721
......
......@@ -590,10 +590,10 @@ lto_read_section_data (struct lto_file_decl_data *file_data,
}
if (fd == -1)
{
fd_name = xstrdup (file_data->file_name);
fd = open (file_data->file_name, O_RDONLY|O_BINARY);
if (fd == -1)
return NULL;
fd_name = xstrdup (file_data->file_name);
}
#if LTO_MMAP_IO
......@@ -619,9 +619,17 @@ lto_read_section_data (struct lto_file_decl_data *file_data,
|| read (fd, result, len) != (ssize_t) len)
{
free (result);
return NULL;
result = NULL;
}
#ifdef __MINGW32__
/* Native windows doesn't supports delayed unlink on opened file. So
we close file here again. This produces higher I/O load, but at least
it prevents to have dangling file handles preventing unlink. */
free (fd_name);
fd_name = NULL;
close (fd);
fd = -1;
#endif
return result;
#endif
}
......@@ -2147,7 +2155,11 @@ read_cgraph_and_symbols (unsigned nfiles, const char **fnames)
file_data = lto_file_read (current_lto_file, resolution, &count);
if (!file_data)
break;
{
lto_obj_file_close (current_lto_file);
current_lto_file = NULL;
break;
}
decl_data[last_file_ix++] = file_data;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment