This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH PR31490] Re: another build failure on ppc64-linux
- From: "Richard Guenther" <richard dot guenther at gmail dot com>
- To: "Segher Boessenkool" <segher at kernel dot crashing dot org>
- Cc: janis187 at us dot ibm dot com, "gcc-patches at gcc dot gnu dot org Patches" <gcc-patches at gcc dot gnu dot org>, "GCC List" <gcc at gcc dot gnu dot org>
- Date: Tue, 4 Sep 2007 16:37:32 +0200
- Subject: Re: [PATCH PR31490] Re: another build failure on ppc64-linux
- References: <1188257157.9813.12.camel@janis-laptop> <3e48b8a01451a1664664b949855fb366@kernel.crashing.org>
On 9/2/07, Segher Boessenkool <segher@kernel.crashing.org> wrote:
> > Bootstrap of current trunk on powerpc64-linux fails in libstdc++
> > building system_error.lo. The code that fails was added a few days
> > ago,
> > but the failure seems to be the same as the one reported in PR 31490.
> > I
> > verified that the patch from comment #10 of that PR allows bootstrap of
> > c,c++,fortran to succeed and now I'm doing a bootstrap and regtest of
> > all languages but Ada. I'll report the results in the PR.
>
> Since there seems to be interest in that patch again, I bootstrapped
> it on x86-64 (all default languages); no new fails, except for
> gcc.dg/20051207-3.c, which is to be expected since the whole goal
> of the patch is to change this behaviour (i.e., to allow both writable
> and read-only objects in the same section).
>
> I can't bootstrap and test a powerpc64 compiler in less than 48 hours
> or so; the patch does fix the original problem though (tested with a
> cross-compiler).
>
> My original patch (attached to PR31490) had some little problems,
> here's the thing I actually tested.
>
> I know it needs a testsuite change (and a Changelog entry); I'll wait
> for Janis' testing for that though (and thanks for that testing, btw
> :-) )
>
>
> Segher
>
Missing ChangeLog and it needs a testcase. Otherwise it is ok.
Thanks,
Richard.
> --- a/gcc/varasm.c
> +++ b/gcc/varasm.c
> @@ -536,10 +536,20 @@ get_section (const char *name, unsigned int
> flags, tree de
> else
> {
> sect = *slot;
> +
> + /* Sanity check user variables for flag changes. */
> if ((sect->common.flags & ~SECTION_DECLARED) != flags
> && ((sect->common.flags | flags) & SECTION_OVERRIDE) == 0)
> {
> - /* Sanity check user variables for flag changes. */
> + /* Allow mixed writable and read-only objects in named
> sections. */
> + if ((sect->common.flags & SECTION_NAMED) != 0
> + && ((sect->common.flags ^ flags) & ~SECTION_DECLARED)
> + == SECTION_WRITE)
> + {
> + sect->common.flags |= SECTION_WRITE;
> + return sect;
> + }
> +
> if (decl == 0)
> decl = sect->named.decl;
> gcc_assert (decl);
>
>