Message ID | 3a5d2d60-55c1-a493-dbab-6562bfd3202d@redhat.com |
---|---|
State | New |
Headers | show |
Series | [v4] Fix failure when CFLAGS contains -DNDEBUG (Bug 25251) | expand |
* Carlos O'Donell: > Building tests with -DNDEBUG in CFLAGS, gcc 9.2.1 issues the following error: > tst-assert-c++.cc: In function ‘int do_test()’: > tst-assert-c++.cc:66:12: error: unused variable ‘value’ [-Werror=unused-variable] > 66 | no_int value; > | ^~~~~ > tst-assert-c++.cc:71:18: error: unused variable ‘value’ [-Werror=unused-variable] > 71 | bool_and_int value; > | ^~~~~ > > The assert has been disabled by building glibc with CFLAGS, CXXFLAGS, > and CPPFLAGS with -DNDEBUG which removes the assert and leaves the > value unused. > > We never want the assert disabled because that's the point of the > test, so we undefine NDEBUG before including assert.h to ensure that > we get assert correctly defined. > --- > assert/tst-assert-c++.cc | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/assert/tst-assert-c++.cc b/assert/tst-assert-c++.cc > index 41cb487512..c01fc8bd25 100644 > --- a/assert/tst-assert-c++.cc > +++ b/assert/tst-assert-c++.cc > @@ -16,6 +16,9 @@ > License along with the GNU C Library; if not, see > <https://www.gnu.org/licenses/>. */ > > +/* Undefine NDEBUG to ensure the build system e.g. CFLAGS/CXXFLAGS > + does not disable the asserts we want to test. */ > +#undef NDEBUG > #include <assert.h> > > /* The C++ standard requires that if the assert argument is a constant Looks good to me. Thanks, Florian
On 12/10/19 11:57 AM, Florian Weimer wrote: > * Carlos O'Donell: > >> Building tests with -DNDEBUG in CFLAGS, gcc 9.2.1 issues the following error: >> tst-assert-c++.cc: In function ‘int do_test()’: >> tst-assert-c++.cc:66:12: error: unused variable ‘value’ [-Werror=unused-variable] >> 66 | no_int value; >> | ^~~~~ >> tst-assert-c++.cc:71:18: error: unused variable ‘value’ [-Werror=unused-variable] >> 71 | bool_and_int value; >> | ^~~~~ >> >> The assert has been disabled by building glibc with CFLAGS, CXXFLAGS, >> and CPPFLAGS with -DNDEBUG which removes the assert and leaves the >> value unused. >> >> We never want the assert disabled because that's the point of the >> test, so we undefine NDEBUG before including assert.h to ensure that >> we get assert correctly defined. >> --- >> assert/tst-assert-c++.cc | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/assert/tst-assert-c++.cc b/assert/tst-assert-c++.cc >> index 41cb487512..c01fc8bd25 100644 >> --- a/assert/tst-assert-c++.cc >> +++ b/assert/tst-assert-c++.cc >> @@ -16,6 +16,9 @@ >> License along with the GNU C Library; if not, see >> <https://www.gnu.org/licenses/>. */ >> >> +/* Undefine NDEBUG to ensure the build system e.g. CFLAGS/CXXFLAGS >> + does not disable the asserts we want to test. */ >> +#undef NDEBUG >> #include <assert.h> >> >> /* The C++ standard requires that if the assert argument is a constant > > Looks good to me. Thanks. Pushed.
diff --git a/assert/tst-assert-c++.cc b/assert/tst-assert-c++.cc index 41cb487512..c01fc8bd25 100644 --- a/assert/tst-assert-c++.cc +++ b/assert/tst-assert-c++.cc @@ -16,6 +16,9 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ +/* Undefine NDEBUG to ensure the build system e.g. CFLAGS/CXXFLAGS + does not disable the asserts we want to test. */ +#undef NDEBUG #include <assert.h> /* The C++ standard requires that if the assert argument is a constant