Eric Gallager <eg...@gwmail.gwu.edu> writes:
> On Wed, Oct 9, 2024 at 4:54 AM Christophe Lyon
> <christophe.l...@linaro.org> wrote:
>>
>> On Wed, 9 Oct 2024 at 03:05, Eric Gallager <eg...@gwmail.gwu.edu> wrote:
>> >
>> > On Tue, Oct 8, 2024 at 6:25 AM Richard Sandiford
>> > <richard.sandif...@arm.com> wrote:
>> > >
>> > > Christophe Lyon <christophe.l...@linaro.org> writes:
>> > > > When --enable-werror is enabled when running the top-level configure,
>> > > > it passes --enable-werror-always to subdirs.  Some of them, like
>> > > > libgcc, ignore it.
>> > > >
>> > > > This patch adds support for it, enabled only for aarch64, to avoid
>> > > > breaking bootstrap for other targets.
>> > > >
>> > > > The patch also adds -Wno-prio-ctor-dtor to avoid a warning when 
>> > > > compiling lse_init.c
>> > > >
>> > > >       libgcc/
>> > > >       * Makefile.in (WERROR): New.
>> > > >       * config/aarch64/t-aarch64: Handle WERROR. Always use
>> > > >       -Wno-prio-ctor-dtor.
>> > > >       * configure.ac: Add support for --enable-werror-always.
>> > > >       * configure: Regenerate.
>> > > > ---
>> > > >  libgcc/Makefile.in              |  1 +
>> > > >  libgcc/config/aarch64/t-aarch64 |  1 +
>> > > >  libgcc/configure                | 31 +++++++++++++++++++++++++++++++
>> > > >  libgcc/configure.ac             |  5 +++++
>> > > >  4 files changed, 38 insertions(+)
>> > > >
>> > > > [...]
>> > > > diff --git a/libgcc/configure.ac b/libgcc/configure.ac
>> > > > index 4e8c036990f..6b3ea2aea5c 100644
>> > > > --- a/libgcc/configure.ac
>> > > > +++ b/libgcc/configure.ac
>> > > > @@ -13,6 +13,7 @@ sinclude(../config/unwind_ipinfo.m4)
>> > > >  sinclude(../config/gthr.m4)
>> > > >  sinclude(../config/sjlj.m4)
>> > > >  sinclude(../config/cet.m4)
>> > > > +sinclude(../config/warnings.m4)
>> > > >
>> > > >  AC_INIT([GNU C Runtime Library], 1.0,,[libgcc])
>> > > >  AC_CONFIG_SRCDIR([static-object.mk])
>> > > > @@ -746,6 +747,10 @@ AC_SUBST(HAVE_STRUB_SUPPORT)
>> > > >  # Determine what GCC version number to use in filesystem paths.
>> > > >  GCC_BASE_VER
>> > > >
>> > > > +# Only enable with --enable-werror-always until existing warnings are
>> > > > +# corrected.
>> > > > +ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual])
>> > >
>> > > It looks like this is borrowed from libcpp and/or libdecnumber.
>> > > Those are a bit different from libgcc in that they're host libraries
>> > > that can be built with any supported compiler (including non-GCC ones).
>> > > In constrast, libgcc can only be built with the corresponding version
>> > > of GCC.  The usual restrictions on -Werror -- only use it during stages
>> > > 2 and 3, or if the user explicitly passes --enable-werror -- don't apply
>> > > in libgcc's case.  We should always be building with the "right" version
>> > > of GCC (even for Canadian crosses) and so should always be able to use
>> > > -Werror.
>> > >
>> > > So personally, I think we should just go with:
>> > >
>> > > diff --git a/libgcc/config/aarch64/t-aarch64 
>> > > b/libgcc/config/aarch64/t-aarch64
>> > > index b70e7b94edd..ae1588ce307 100644
>> > > --- a/libgcc/config/aarch64/t-aarch64
>> > > +++ b/libgcc/config/aarch64/t-aarch64
>> > > @@ -30,3 +30,4 @@ LIB2ADDEH += \
>> > >         $(srcdir)/config/aarch64/__arm_za_disable.S
>> > >
>> > >  SHLIB_MAPFILES += $(srcdir)/config/aarch64/libgcc-sme.ver
>> > > +LIBGCC2_CFLAGS += $(WERROR) -Wno-prio-ctor-dtor
>> > >
>> > > ...this, but with $(WERROR) replaced by -Werror.
>> > >
>> > > At least, it would be a good way of finding out if there's a case
>> > > I've forgotten :)
>> > >
>> > > Let's see what others think though.
>> >
>> > I think it would be worthwhile to test this assumption first; I have a
>> > vague memory of having seen warnings in libgcc previously that would
>> > presumably get turned into errors if -Werror were applied
>> > unconditionally...
>> >
>> Sorry, it's not clear to me what you mean by "test this assumption" ?
>> Do you mean I should push the patch with unconditional -Werror and
>> monitor what happens for a while?
>> Or investigate more / other targets?
>> Or wait for others to commit?
>>
>
> I mean, I think we should try the original approach of having it be
> enableable manually first, let some people test by enabling it
> manually, and then if they all report back success, then we can go
> ahead with the unconditional -Werror version of it.

I can see the attraction.  But that would mean adding code only to take
it out later.  Plus, the original patch would enable -Werror for stages
2 and 3 anyway, so everyone who bootstraps would still be testing the
-Werror path, whether they'd chosen to or not.

My point is that stage 1 isn't really a different case from stages
2 and 3 for libgcc, since in all three cases, it's the recently built
gcc that is being used to build libgcc.  libgcc also gets the majority
of its command-line flags directly from the gcc directory (via
libgcc.mvars), rather than from libgcc's own configure line.

How about going for an unconditional -Werror (for aarch64 only), but with
a pre-approval for anyone with commit access to revert it if it breaks
their build?

Thanks,
Richard


Reply via email to