From: Andi Kleen <a...@linux.intel.com> Various callers of lto_section_read segfault on a NULL return when the mmap fails. Add some internal_errors to give a better message to the user.
gcc/lto/: 2011-10-09 Andi Kleen <a...@linux.intel.com> * lto.c (lto_section_read): Call internal_error on IO or mmap errors. --- gcc/lto/lto.c | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index a77eeb4..dc16db4 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; + { + internal_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; + { + internal_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); + internal_error ("Cannot read %s", file_data->file_name); result = NULL; } #ifdef __MINGW32__ -- 1.7.5.4