This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH v4] Fix failure when CFLAGS contains -DNDEBUG (Bug 25251)
- From: Florian Weimer <fweimer at redhat dot com>
- To: Carlos O'Donell <carlos at redhat dot com>
- Cc: libc-alpha <libc-alpha at sourceware dot org>
- Date: Tue, 10 Dec 2019 17:57:22 +0100
- Subject: Re: [PATCH v4] Fix failure when CFLAGS contains -DNDEBUG (Bug 25251)
- References: <3a5d2d60-55c1-a493-dbab-6562bfd3202d@redhat.com>
* 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