Patchwork [v2] Fix failure when CFLAGS contains -DNDEBUG (Bug 25251)

login
register
mail settings
Submitter Carlos O'Donell
Date Dec. 4, 2019, 4:49 p.m.
Message ID <e496f426-102a-5f85-9d1c-7ab750a17ff8@redhat.com>
Download mbox | patch
Permalink /patch/36518/
State New
Headers show

Comments

Carlos O'Donell - Dec. 4, 2019, 4:49 p.m.
On 12/4/19 9:44 AM, Carlos O'Donell wrote:
> On 12/4/19 2:31 AM, Florian Weimer wrote:
>> * Carlos O'Donell:
>>
>>> How is this v2 with a better commit message?
>>
>> Sorry, why has -DNDEBUG got anything with -march=i486 (sic) or -Os?
>> I think you should mention -DNDEBUG only.
>>
>> The comment should probably mention CFLAGS and -DNDEBUG, because that's
>> the common case.
> 
> Ah, I see your point. Cleaned up. I filed a new bug for this user-visible
> build bug. The following patch fixes the issue, and commit message update.
> 
> No regressions on a build with -DNDEBUG.
> 
> OK for master?

I realized the comment in the code should get cleaned up too based on
your comment.

v2.

OK for master?

8< --- 8< --- 8<
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(+)

Patch

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