Message ID | 54E62C70.8020208@redhat.com |
---|---|
State | New |
Headers | show |
On Thu, Feb 19, 2015 at 10:33:20AM -0800, Aldy Hernandez wrote: > Well, any PCH file we generate will have some sort of early DIE in it (at > the very least the compilation unit DIE) and we will read these in at PCH > read-in time, obliterating whatever was already there. But most > importantly, with the attached patch we will not use these > DW_TAG_GNU_[BE]INCL* DIEs, since the reader will avoid reading the pch file. > So, I don't think erroring out at output time is necessary. > > How does this look? Looks reasonable to me, but I'd prefer to defer this to Jason as debug maintainer. > commit d90a408ad21aa0868cc13de24ea38e210ef78a68 > Author: Aldy Hernandez <aldyh@redhat.com> > Date: Thu Feb 19 07:35:59 2015 -0800 > > PR debug/46102 > * c-pch.c (c_common_valid_pch): Mark PCH file with > -feliminate-dwarf2-dups as invalid. > > diff --git a/gcc/c-family/c-pch.c b/gcc/c-family/c-pch.c > index 0ede92a..55163c9 100644 > --- a/gcc/c-family/c-pch.c > +++ b/gcc/c-family/c-pch.c > @@ -224,6 +224,19 @@ c_common_valid_pch (cpp_reader *pfile, const char *name, int fd) > const char *pch_ident; > struct c_pch_validity v; > > + /* We may have outputted a few DIEs corresponding to > + DW_TAG_GNU_[BE]INCL. Reading the compiler state later will read > + in these DIEs, and obliterate any DW_TAG_GNU_[BE]INCL the reader > + may have generated itself. Do not read the PCH if this may > + happen. */ > + if (flag_eliminate_dwarf2_dups) > + { > + if (cpp_get_options (pfile)->warn_invalid_pch) > + cpp_error (pfile, CPP_DL_WARNING, > + "%s: cannot be used with -feliminate-dwarf2-dups", name); > + return 2; > + } > + > /* Perform a quick test of whether this is a valid > precompiled header for the current language. */ > Jakub
On 02/19/2015 10:41 AM, Jakub Jelinek wrote: > On Thu, Feb 19, 2015 at 10:33:20AM -0800, Aldy Hernandez wrote: >> Well, any PCH file we generate will have some sort of early DIE in it (at >> the very least the compilation unit DIE) and we will read these in at PCH >> read-in time, obliterating whatever was already there. But most >> importantly, with the attached patch we will not use these >> DW_TAG_GNU_[BE]INCL* DIEs, since the reader will avoid reading the pch file. >> So, I don't think erroring out at output time is necessary. >> >> How does this look? > > Looks reasonable to me, but I'd prefer to defer this to Jason as debug > maintainer. > >> commit d90a408ad21aa0868cc13de24ea38e210ef78a68 >> Author: Aldy Hernandez <aldyh@redhat.com> >> Date: Thu Feb 19 07:35:59 2015 -0800 >> >> PR debug/46102 >> * c-pch.c (c_common_valid_pch): Mark PCH file with >> -feliminate-dwarf2-dups as invalid. >> >> diff --git a/gcc/c-family/c-pch.c b/gcc/c-family/c-pch.c >> index 0ede92a..55163c9 100644 >> --- a/gcc/c-family/c-pch.c >> +++ b/gcc/c-family/c-pch.c >> @@ -224,6 +224,19 @@ c_common_valid_pch (cpp_reader *pfile, const char *name, int fd) >> const char *pch_ident; >> struct c_pch_validity v; >> >> + /* We may have outputted a few DIEs corresponding to >> + DW_TAG_GNU_[BE]INCL. Reading the compiler state later will read >> + in these DIEs, and obliterate any DW_TAG_GNU_[BE]INCL the reader >> + may have generated itself. Do not read the PCH if this may >> + happen. */ >> + if (flag_eliminate_dwarf2_dups) >> + { >> + if (cpp_get_options (pfile)->warn_invalid_pch) >> + cpp_error (pfile, CPP_DL_WARNING, >> + "%s: cannot be used with -feliminate-dwarf2-dups", name); >> + return 2; >> + } >> + >> /* Perform a quick test of whether this is a valid >> precompiled header for the current language. */ >> > > > Jakub >
diff --git a/gcc/c-family/c-pch.c b/gcc/c-family/c-pch.c index 0ede92a..55163c9 100644 --- a/gcc/c-family/c-pch.c +++ b/gcc/c-family/c-pch.c @@ -224,6 +224,19 @@ c_common_valid_pch (cpp_reader *pfile, const char *name, int fd) const char *pch_ident; struct c_pch_validity v; + /* We may have outputted a few DIEs corresponding to + DW_TAG_GNU_[BE]INCL. Reading the compiler state later will read + in these DIEs, and obliterate any DW_TAG_GNU_[BE]INCL the reader + may have generated itself. Do not read the PCH if this may + happen. */ + if (flag_eliminate_dwarf2_dups) + { + if (cpp_get_options (pfile)->warn_invalid_pch) + cpp_error (pfile, CPP_DL_WARNING, + "%s: cannot be used with -feliminate-dwarf2-dups", name); + return 2; + } + /* Perform a quick test of whether this is a valid precompiled header for the current language. */