Message ID | 1318190141-1220-6-git-send-email-andi@firstfloor.org |
---|---|
State | New |
Headers | show |
On Sun, Oct 9, 2011 at 9:55 PM, Andi Kleen <andi@firstfloor.org> wrote: > From: Andi Kleen <ak@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. Hm, shouldn't these be fatal_error () then? Ok with that change. Thanks, Richard. > gcc/lto/: > > 2011-10-09 Andi Kleen <ak@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 > >
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__
From: Andi Kleen <ak@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 <ak@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(-)