re PR preprocessor/58893 (<command-line>:0:0: internal compiler error: Segmentation fault)
2014-09-30 Bernd Edlinger <bernd.edlinger@hotmail.de> PR preprocessor/58893 * errors.c (cpp_diagnostic): Fix possible out of bounds access. * files.c (_cpp_stack_include): Initialize src_loc for IT_CMDLINE. testsuite: 2014-09-30 Bernd Edlinger <bernd.edlinger@hotmail.de> PR preprocessor/58893 * gcc.dg/pr58893.c: New test case. * gcc.dg/pr58893-0.h: New include. From-SVN: r215730
This commit is contained in:
parent
cd91371c5f
commit
cc811a8ae6
6 changed files with 31 additions and 4 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2014-09-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||||
|
|
||||||
|
PR preprocessor/58893
|
||||||
|
* gcc.dg/pr58893.c: New test case.
|
||||||
|
* gcc.dg/pr58893-0.h: New include.
|
||||||
|
|
||||||
2014-09-30 Ilya Tocar <ilya.tocar@intel.com>
|
2014-09-30 Ilya Tocar <ilya.tocar@intel.com>
|
||||||
|
|
||||||
PR middle-end/62120
|
PR middle-end/62120
|
||||||
|
|
1
gcc/testsuite/gcc.dg/pr58893-0.h
Normal file
1
gcc/testsuite/gcc.dg/pr58893-0.h
Normal file
|
@ -0,0 +1 @@
|
||||||
|
#pragma GCC visibility push(hidden)
|
5
gcc/testsuite/gcc.dg/pr58893.c
Normal file
5
gcc/testsuite/gcc.dg/pr58893.c
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
/* PR preprocessor/58893 */
|
||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-include pr58893-0.h -include pr58893-1.h -I${srcdir}/gcc.dg" } */
|
||||||
|
/* { dg-error "pr58893-1.h: No such file or directory" "" { target *-*-* } 0 } */
|
||||||
|
/* { dg-prune-output "compilation terminated" } */
|
|
@ -1,3 +1,9 @@
|
||||||
|
2014-09-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||||
|
|
||||||
|
PR preprocessor/58893
|
||||||
|
* errors.c (cpp_diagnostic): Fix possible out of bounds access.
|
||||||
|
* files.c (_cpp_stack_include): Initialize src_loc for IT_CMDLINE.
|
||||||
|
|
||||||
2014-09-24 Marek Polacek <polacek@redhat.com>
|
2014-09-24 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
PR c/61405
|
PR c/61405
|
||||||
|
|
|
@ -48,9 +48,6 @@ cpp_diagnostic (cpp_reader * pfile, int level, int reason,
|
||||||
current run -- that is invalid. */
|
current run -- that is invalid. */
|
||||||
else if (pfile->cur_token == pfile->cur_run->base)
|
else if (pfile->cur_token == pfile->cur_run->base)
|
||||||
{
|
{
|
||||||
if (pfile->cur_run->prev != NULL)
|
|
||||||
src_loc = pfile->cur_run->prev->limit->src_loc;
|
|
||||||
else
|
|
||||||
src_loc = 0;
|
src_loc = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -991,6 +991,18 @@ _cpp_stack_include (cpp_reader *pfile, const char *fname, int angle_brackets,
|
||||||
_cpp_file *file;
|
_cpp_file *file;
|
||||||
bool stacked;
|
bool stacked;
|
||||||
|
|
||||||
|
/* For -include command-line flags we have type == IT_CMDLINE.
|
||||||
|
When the first -include file is processed we have the case, where
|
||||||
|
pfile->cur_token == pfile->cur_run->base, we are directly called up
|
||||||
|
by the front end. However in the case of the second -include file,
|
||||||
|
we are called from _cpp_lex_token -> _cpp_get_fresh_line ->
|
||||||
|
cpp_push_include, with pfile->cur_token != pfile->cur_run->base,
|
||||||
|
and pfile->cur_token[-1].src_loc not (yet) initialized.
|
||||||
|
However, when the include file cannot be found, we need src_loc to
|
||||||
|
be initialized to some safe value: 0 means UNKNOWN_LOCATION. */
|
||||||
|
if (type == IT_CMDLINE && pfile->cur_token != pfile->cur_run->base)
|
||||||
|
pfile->cur_token[-1].src_loc = 0;
|
||||||
|
|
||||||
dir = search_path_head (pfile, fname, angle_brackets, type);
|
dir = search_path_head (pfile, fname, angle_brackets, type);
|
||||||
if (!dir)
|
if (!dir)
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue