aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndi Kleen <ak@linux.intel.com>2011-10-16 23:22:32 +0000
committerAndi Kleen <ak@gcc.gnu.org>2011-10-16 23:22:32 +0000
commit5958009b73d6e0048123e934a37e7f21be747086 (patch)
treec8444e075b56d5055f9758411b4aa1770e43cfcc /gcc
parentb74bdc61455f557fff3f87ac0984b01d137ada27 (diff)
downloadgcc-5958009b73d6e0048123e934a37e7f21be747086.zip
gcc-5958009b73d6e0048123e934a37e7f21be747086.tar.gz
gcc-5958009b73d6e0048123e934a37e7f21be747086.tar.bz2
Add error checking to lto_section_read
gcc/lto/: 2011-10-09 Andi Kleen <ak@linux.intel.com> * lto.c (lto_section_read): Call fatal_error on IO or mmap errors. From-SVN: r180065
Diffstat (limited to 'gcc')
-rw-r--r--gcc/lto/ChangeLog4
-rw-r--r--gcc/lto/lto.c11
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index e350fd8..12f75ad 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,7 @@
+2011-10-09 Andi Kleen <ak@linux.intel.com>
+
+ * lto.c (lto_section_read): Call fatal_error on IO or mmap errors.
+
2011-10-11 Michael Meissner <meissner@linux.vnet.ibm.com>
* lto-lang.c (def_builtin_1): Delete old interface with two
diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c
index a77eeb4..63af047 100644
--- a/gcc/lto/lto.c
+++ b/gcc/lto/lto.c
@@ -1237,7 +1237,10 @@ lto_read_section_data (struct lto_file_decl_data *file_data,
{
fd = open (file_data->file_name, O_RDONLY|O_BINARY);
if (fd == -1)
- return NULL;
+ {
+ fatal_error ("Cannot open %s", file_data->file_name);
+ return NULL;
+ }
fd_name = xstrdup (file_data->file_name);
}
@@ -1255,7 +1258,10 @@ lto_read_section_data (struct lto_file_decl_data *file_data,
result = (char *) mmap (NULL, computed_len, PROT_READ, MAP_PRIVATE,
fd, computed_offset);
if (result == MAP_FAILED)
- return NULL;
+ {
+ fatal_error ("Cannot map %s", file_data->file_name);
+ return NULL;
+ }
return result + diff;
#else
@@ -1264,6 +1270,7 @@ lto_read_section_data (struct lto_file_decl_data *file_data,
|| read (fd, result, len) != (ssize_t) len)
{
free (result);
+ fatal_error ("Cannot read %s", file_data->file_name);
result = NULL;
}
#ifdef __MINGW32__