* [Buildroot] [PATCH 1/1] package/gcc: undefine NDEBUG directive @ 2021-06-17 12:19 Andreas Ziegler 2021-06-20 18:23 ` Romain Naour 2021-07-04 19:58 ` Yann E. MORIN 0 siblings, 2 replies; 4+ messages in thread From: Andreas Ziegler @ 2021-06-17 12:19 UTC (permalink / raw) To: buildroot GCC performs internal consistency checks that can be controlled with --enable-checking, but not completely removed for all stages of the build. One of these checks uses the assert macro from <assert.h> Defining NDEBUG removes the assertion code, which is not anticipated in the gcc code. Undefine the NDEBUG flag for package/gcc to preserve assertions. This fixes the following error during build of GCC 10: ../../../libgomp/target.c: In function ?gomp_unmap_vars_internal?: ../../../libgomp/target.c:1474:9: error: unused variable ?is_tgt_unmapped? [-Werror=unused-variable] 1474 | bool is_tgt_unmapped = gomp_remove_var (devicep, k); | ^~~~~~~~~~~~~~~ ../../../libgomp/target.c:1473:28: error: unused variable ?k_tgt? [-Werror=unused-variable] 1473 | struct target_mem_desc *k_tgt = k->tgt; | ^~~~~ Signed-off-by: Andreas Ziegler <br015@umbiko.net> --- package/gcc/gcc.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk index ed9b93e50f..4ee32c03a7 100644 --- a/package/gcc/gcc.mk +++ b/package/gcc/gcc.mk @@ -90,7 +90,8 @@ HOST_GCC_COMMON_CONF_OPTS = \ HOST_GCC_COMMON_CONF_ENV = \ MAKEINFO=missing -GCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS) +# gcc should not be built with NDEBUG enabled +GCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS) -UNDEBUG GCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS) # used to fix ../../../../libsanitizer/libbacktrace/../../libbacktrace/elf.c:772:21: error: 'st.st_mode' may be used uninitialized in this function [-Werror=maybe-uninitialized] -- 2.25.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 1/1] package/gcc: undefine NDEBUG directive 2021-06-17 12:19 [Buildroot] [PATCH 1/1] package/gcc: undefine NDEBUG directive Andreas Ziegler @ 2021-06-20 18:23 ` Romain Naour 2021-06-21 4:49 ` Andreas Ziegler 2021-07-04 19:58 ` Yann E. MORIN 1 sibling, 1 reply; 4+ messages in thread From: Romain Naour @ 2021-06-20 18:23 UTC (permalink / raw) To: buildroot Hello Andreas, Le 17/06/2021 ? 14:19, Andreas Ziegler a ?crit?: > GCC performs internal consistency checks that can be controlled with --enable-checking, but not completely removed for all stages of the build. One of these checks uses the assert macro from <assert.h> Defining NDEBUG removes the assertion code, which is not anticipated in the gcc code. > > Undefine the NDEBUG flag for package/gcc to preserve assertions. > > This fixes the following error during build of GCC 10: > > ../../../libgomp/target.c: In function ?gomp_unmap_vars_internal?: > ../../../libgomp/target.c:1474:9: error: unused variable ?is_tgt_unmapped? [-Werror=unused-variable] > 1474 | bool is_tgt_unmapped = gomp_remove_var (devicep, k); > | ^~~~~~~~~~~~~~~ > ../../../libgomp/target.c:1473:28: error: unused variable ?k_tgt? [-Werror=unused-variable] > 1473 | struct target_mem_desc *k_tgt = k->tgt; > | ^~~~~ It seems an error related to Werror being enabled. Usually we prefer disable Werror while building a package in Buildroot because any package can trigger new warning with the latest compiler. Maybe we can use -Wno-error not just when BR2_ENABLE_DEBUG is set: https://git.buildroot.net/buildroot/commit/?id=dcaf6e75acb4d21c2c31c70b054dac8d18710fcb Best regards, Romain > > Signed-off-by: Andreas Ziegler <br015@umbiko.net> > --- > package/gcc/gcc.mk | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk > index ed9b93e50f..4ee32c03a7 100644 > --- a/package/gcc/gcc.mk > +++ b/package/gcc/gcc.mk > @@ -90,7 +90,8 @@ HOST_GCC_COMMON_CONF_OPTS = \ > HOST_GCC_COMMON_CONF_ENV = \ > MAKEINFO=missing > > -GCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS) > +# gcc should not be built with NDEBUG enabled > +GCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS) -UNDEBUG > GCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS) > > # used to fix ../../../../libsanitizer/libbacktrace/../../libbacktrace/elf.c:772:21: error: 'st.st_mode' may be used uninitialized in this function [-Werror=maybe-uninitialized] > ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 1/1] package/gcc: undefine NDEBUG directive 2021-06-20 18:23 ` Romain Naour @ 2021-06-21 4:49 ` Andreas Ziegler 0 siblings, 0 replies; 4+ messages in thread From: Andreas Ziegler @ 2021-06-21 4:49 UTC (permalink / raw) To: buildroot Bonjour Romain, On 2021-06-20 18:23, Romain Naour wrote: > Hello Andreas, > > Le 17/06/2021 ? 14:19, Andreas Ziegler a ?crit?: >> GCC performs internal consistency checks that can be controlled with >> --enable-checking, but not completely removed for all stages of the >> build. One of these checks uses the assert macro from <assert.h> >> Defining NDEBUG removes the assertion code, which is not anticipated >> in the gcc code. >> >> Undefine the NDEBUG flag for package/gcc to preserve assertions. >> >> This fixes the following error during build of GCC 10: >> >> ../../../libgomp/target.c: In function ?gomp_unmap_vars_internal?: >> ../../../libgomp/target.c:1474:9: error: unused variable >> ?is_tgt_unmapped? [-Werror=unused-variable] >> 1474 | bool is_tgt_unmapped = gomp_remove_var (devicep, k); >> | ^~~~~~~~~~~~~~~ >> ../../../libgomp/target.c:1473:28: error: unused variable ?k_tgt? >> [-Werror=unused-variable] >> 1473 | struct target_mem_desc *k_tgt = k->tgt; >> | ^~~~~ > > It seems an error related to Werror being enabled. > > Usually we prefer disable Werror while building a package in Buildroot > because > any package can trigger new warning with the latest compiler. Using -Wno-error was my first idea, though I would have preferred to just disable the actual error: -Werror=unused-variable. I posted a question an the mailing list https://marc.info/?l=buildroot&m=162366255526973&w=2 After receiving no answer, I did some more research: -- gcc does not use NDEBUG consistently, but relies on assertions to monitor some internal structures. These assertions, but not the code, are disabled via the C library when NDEBUG is set. -- The build process explicitly sets -Werror in some phases. -- For enabling and disabling individual internal checks and assertions, configure options exist: --enable-werror --disable-werror --enable-checking --disable-checking --disable-stage1-checking --enable-stage1-checking So my recommendation is to remove NDEBUG, not suppress the error message. This is the least invasive option. > Maybe we can use -Wno-error not just when BR2_ENABLE_DEBUG is set: > > https://git.buildroot.net/buildroot/commit/?id=dcaf6e75acb4d21c2c31c70b054dac8d18710fcb I have seen this, but would not recommend disabling errors overall to catch one specific error that manifests. -Wno-error=maybe-uninitialized might have been more elegant ... Kind regards, Andreas > Best regards, > Romain > >> >> Signed-off-by: Andreas Ziegler <br015@umbiko.net> >> --- >> package/gcc/gcc.mk | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk >> index ed9b93e50f..4ee32c03a7 100644 >> --- a/package/gcc/gcc.mk >> +++ b/package/gcc/gcc.mk >> @@ -90,7 +90,8 @@ HOST_GCC_COMMON_CONF_OPTS = \ >> HOST_GCC_COMMON_CONF_ENV = \ >> MAKEINFO=missing >> >> -GCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS) >> +# gcc should not be built with NDEBUG enabled >> +GCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS) -UNDEBUG >> GCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS) >> >> # used to fix >> ../../../../libsanitizer/libbacktrace/../../libbacktrace/elf.c:772:21: >> error: 'st.st_mode' may be used uninitialized in this function >> [-Werror=maybe-uninitialized] >> ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Buildroot] [PATCH 1/1] package/gcc: undefine NDEBUG directive 2021-06-17 12:19 [Buildroot] [PATCH 1/1] package/gcc: undefine NDEBUG directive Andreas Ziegler 2021-06-20 18:23 ` Romain Naour @ 2021-07-04 19:58 ` Yann E. MORIN 1 sibling, 0 replies; 4+ messages in thread From: Yann E. MORIN @ 2021-07-04 19:58 UTC (permalink / raw) To: buildroot Andreas, All, On 2021-06-17 14:19 +0200, Andreas Ziegler spake thusly: > GCC performs internal consistency checks that can be controlled with --enable-checking, but not completely removed for all stages of the build. One of these checks uses the assert macro from <assert.h> Defining NDEBUG removes the assertion code, which is not anticipated in the gcc code. > > Undefine the NDEBUG flag for package/gcc to preserve assertions. > > This fixes the following error during build of GCC 10: > > ../../../libgomp/target.c: In function ?gomp_unmap_vars_internal?: > ../../../libgomp/target.c:1474:9: error: unused variable ?is_tgt_unmapped? [-Werror=unused-variable] > 1474 | bool is_tgt_unmapped = gomp_remove_var (devicep, k); > | ^~~~~~~~~~~~~~~ > ../../../libgomp/target.c:1473:28: error: unused variable ?k_tgt? [-Werror=unused-variable] > 1473 | struct target_mem_desc *k_tgt = k->tgt; > | ^~~~~ > > Signed-off-by: Andreas Ziegler <br015@umbiko.net> We are now no longer setting NDEBUG in the infra; see a1c7cff1a081. So this patch is no longer needed; I've marked it as rejected. Thanks! Regards, Yann E. MORIN. > --- > package/gcc/gcc.mk | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk > index ed9b93e50f..4ee32c03a7 100644 > --- a/package/gcc/gcc.mk > +++ b/package/gcc/gcc.mk > @@ -90,7 +90,8 @@ HOST_GCC_COMMON_CONF_OPTS = \ > HOST_GCC_COMMON_CONF_ENV = \ > MAKEINFO=missing > > -GCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS) > +# gcc should not be built with NDEBUG enabled > +GCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS) -UNDEBUG > GCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS) > > # used to fix ../../../../libsanitizer/libbacktrace/../../libbacktrace/elf.c:772:21: error: 'st.st_mode' may be used uninitialized in this function [-Werror=maybe-uninitialized] > -- > 2.25.1 > > _______________________________________________ > buildroot mailing list > buildroot at busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-07-04 19:58 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-06-17 12:19 [Buildroot] [PATCH 1/1] package/gcc: undefine NDEBUG directive Andreas Ziegler 2021-06-20 18:23 ` Romain Naour 2021-06-21 4:49 ` Andreas Ziegler 2021-07-04 19:58 ` Yann E. MORIN
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.