Re: [Freeipa-devel] [PATCH 0390] Fix build with GCC 4.9+
On 3.3.2016 08:59, Lukas Slebodnik wrote: > On (01/03/16 14:35), Petr Spacek wrote: >> On 1.3.2016 12:06, Lukas Slebodnik wrote: >>> On (25/02/16 15:57), Petr Spacek wrote: On 19.2.2016 13:55, Petr Spacek wrote: > Hello, > > Fix build with GCC 4.9+. > > GCC 4.9+ is too aggressive when optimizing functions with nonnull > attributes. This removes most of asserts() in the plugin. > GCC 6 adds warnings for these cases. > > We are disabling the unwanted condition pruning by adding > -fno-delete-null-pointer-checks argument. > BIND 9 did the same in its commit > 603a78708343f063b44affb882ef93bb19a5142a. > > Additionally we silence warnings to prevent build failures when -Werror > is used. > > https://bugzilla.redhat.com/show_bug.cgi?id=1307346 Updated version is attached. It contains less autotools magic because it enables attribute nonnull only under Clang static analyzer and Coverity - as a result we do not have to silence GCC warnings from -Wnonnull. Please review so I can fix build in Fedora 24. Thank you. -- Petr^2 Spacek >>> >>> >From 4732fe9f4e525c44b46e7ed0734ccaec94fba49e Mon Sep 17 00:00:00 2001 From: Petr Spacek Date: Fri, 19 Feb 2016 13:39:27 +0100 Subject: [PATCH] Fix build with GCC 4.9+. GCC 4.9+ is too aggressive when optimizing functions with nonnull attributes. This removes most of asserts() in the plugin. GCC 6 adds warnings for these cases. We are disabling the unwanted condition pruning by adding -fno-delete-null-pointer-checks argument. BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. Additionally we enable nonnull attribute only when the build is running under Clang static analyzer or Coverity. https://bugzilla.redhat.com/show_bug.cgi?id=1307346 --- configure.ac | 13 + src/util.h | 8 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index a06708b1a5ee64bb64c80272c10ed1a35670c8d0..a0123ac0a62b5acd5238f028d8c42e83af4060db 100644 --- a/configure.ac +++ b/configure.ac @@ -39,6 +39,19 @@ AC_TRY_COMPILE([ [CFLAGS="$SAVED_CFLAGS" AC_MSG_RESULT([no])]) +# Check if build chain supports -fno-delete-null-pointer-checks +# this flag avoids too agressive optimizations which would remove some asserts +# BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a +AC_MSG_CHECKING([for -fno-delete-null-pointer-checks compiler flag]) +SAVED_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -fno-delete-null-pointer-checks" +AC_TRY_COMPILE([ + extern int fdef(void); +],[], +[AC_MSG_RESULT([yes])], +[CFLAGS="$SAVED_CFLAGS" + AC_MSG_RESULT([no])]) + >>> NACK. >>> >>> It failes with clang. >>> >>> configure:12982: checking for -fno-delete-null-pointer-checks compiler flag >>> configure:12999: clang -c -O2 -g -pipe -Wall -Werror=format-security >>> -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong >>> --param=ssp-buffer-size=4 -grecord-gcc-switches >>> -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic >>> -fvisibility=hidden -fno-delete-null-pointer-checks conftest.c >&5 >>> clang-3.8: warning: optimization flag '-fno-delete-null-pointer-checks' is >>> not supported >>> clang-3.8: warning: argument unused during compilation: >>> '-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1' >>> configure:12999: $? = 0 >>> configure:13000: result: yes >>> >>> Reproducer: >>> autoreconf -if && CC=clang ./configure && make >> >> Thanks! I was testing this only with Clang static analyzer ... >> >> Here is updated patch. >> >> -- >> Petr^2 Spacek > >>From 6b2ac51fe4ff75c9f59499cbaa4306f70db46425 Mon Sep 17 00:00:00 2001 >> From: Petr Spacek >> Date: Fri, 19 Feb 2016 13:39:27 +0100 >> Subject: [PATCH] Fix build with GCC 4.9+. >> >> GCC 4.9+ is too aggressive when optimizing functions with nonnull >> attributes. This removes most of asserts() in the plugin. >> GCC 6 adds warnings for these cases. >> >> We are disabling the unwanted condition pruning by adding >> -fno-delete-null-pointer-checks argument. >> BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. >> >> Additionally we enable nonnull attribute only when the build is running under >> Clang static analyzer or Coverity. >> >> https://bugzilla.redhat.com/show_bug.cgi?id=1307346 >> --- >> configure.ac | 14 ++ >> src/util.h | 8 ++-- >> 2 files changed, 20 insertions(+), 2 deletions(-) >> >> diff --git a/configure.ac b/configure.ac >> index >> a06708b1a5ee64bb64c80272c10ed1a35670c8d0..48f5cb63c3bb5535fe1da56abe7583e15d4b5f92 >> 100644 >> --- a/configure.ac >> +++ b/configure.ac >> @@ -39,6 +39,20 @@ AC_TRY_COMPILE([ >> [CFLAGS="$SAVED_CF
Re: [Freeipa-devel] [PATCH 0390] Fix build with GCC 4.9+
On (01/03/16 14:35), Petr Spacek wrote: >On 1.3.2016 12:06, Lukas Slebodnik wrote: >> On (25/02/16 15:57), Petr Spacek wrote: >>> On 19.2.2016 13:55, Petr Spacek wrote: Hello, Fix build with GCC 4.9+. GCC 4.9+ is too aggressive when optimizing functions with nonnull attributes. This removes most of asserts() in the plugin. GCC 6 adds warnings for these cases. We are disabling the unwanted condition pruning by adding -fno-delete-null-pointer-checks argument. BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. Additionally we silence warnings to prevent build failures when -Werror is used. https://bugzilla.redhat.com/show_bug.cgi?id=1307346 >>> >>> Updated version is attached. It contains less autotools magic because it >>> enables attribute nonnull only under Clang static analyzer and Coverity - >>> as a >>> result we do not have to silence GCC warnings from -Wnonnull. >>> >>> Please review so I can fix build in Fedora 24. >>> >>> Thank you. >>> >>> -- >>> Petr^2 Spacek >> >>>From 4732fe9f4e525c44b46e7ed0734ccaec94fba49e Mon Sep 17 00:00:00 2001 >>> From: Petr Spacek >>> Date: Fri, 19 Feb 2016 13:39:27 +0100 >>> Subject: [PATCH] Fix build with GCC 4.9+. >>> >>> GCC 4.9+ is too aggressive when optimizing functions with nonnull >>> attributes. This removes most of asserts() in the plugin. >>> GCC 6 adds warnings for these cases. >>> >>> We are disabling the unwanted condition pruning by adding >>> -fno-delete-null-pointer-checks argument. >>> BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. >>> >>> Additionally we enable nonnull attribute only when the build is running >>> under >>> Clang static analyzer or Coverity. >>> >>> https://bugzilla.redhat.com/show_bug.cgi?id=1307346 >>> --- >>> configure.ac | 13 + >>> src/util.h | 8 ++-- >>> 2 files changed, 19 insertions(+), 2 deletions(-) >>> >>> diff --git a/configure.ac b/configure.ac >>> index >>> a06708b1a5ee64bb64c80272c10ed1a35670c8d0..a0123ac0a62b5acd5238f028d8c42e83af4060db >>> 100644 >>> --- a/configure.ac >>> +++ b/configure.ac >>> @@ -39,6 +39,19 @@ AC_TRY_COMPILE([ >>> [CFLAGS="$SAVED_CFLAGS" >>> AC_MSG_RESULT([no])]) >>> >>> +# Check if build chain supports -fno-delete-null-pointer-checks >>> +# this flag avoids too agressive optimizations which would remove some >>> asserts >>> +# BIND 9 did the same in its commit >>> 603a78708343f063b44affb882ef93bb19a5142a >>> +AC_MSG_CHECKING([for -fno-delete-null-pointer-checks compiler flag]) >>> +SAVED_CFLAGS="$CFLAGS" >>> +CFLAGS="$CFLAGS -fno-delete-null-pointer-checks" >>> +AC_TRY_COMPILE([ >>> + extern int fdef(void); >>> +],[], >>> +[AC_MSG_RESULT([yes])], >>> +[CFLAGS="$SAVED_CFLAGS" >>> + AC_MSG_RESULT([no])]) >>> + >> NACK. >> >> It failes with clang. >> >> configure:12982: checking for -fno-delete-null-pointer-checks compiler flag >> configure:12999: clang -c -O2 -g -pipe -Wall -Werror=format-security >> -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong >> --param=ssp-buffer-size=4 -grecord-gcc-switches >> -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic >> -fvisibility=hidden -fno-delete-null-pointer-checks conftest.c >&5 >> clang-3.8: warning: optimization flag '-fno-delete-null-pointer-checks' is >> not supported >> clang-3.8: warning: argument unused during compilation: >> '-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1' >> configure:12999: $? = 0 >> configure:13000: result: yes >> >> Reproducer: >> autoreconf -if && CC=clang ./configure && make > >Thanks! I was testing this only with Clang static analyzer ... > >Here is updated patch. > >-- >Petr^2 Spacek >From 6b2ac51fe4ff75c9f59499cbaa4306f70db46425 Mon Sep 17 00:00:00 2001 >From: Petr Spacek >Date: Fri, 19 Feb 2016 13:39:27 +0100 >Subject: [PATCH] Fix build with GCC 4.9+. > >GCC 4.9+ is too aggressive when optimizing functions with nonnull >attributes. This removes most of asserts() in the plugin. >GCC 6 adds warnings for these cases. > >We are disabling the unwanted condition pruning by adding >-fno-delete-null-pointer-checks argument. >BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. > >Additionally we enable nonnull attribute only when the build is running under >Clang static analyzer or Coverity. > >https://bugzilla.redhat.com/show_bug.cgi?id=1307346 >--- > configure.ac | 14 ++ > src/util.h | 8 ++-- > 2 files changed, 20 insertions(+), 2 deletions(-) > >diff --git a/configure.ac b/configure.ac >index >a06708b1a5ee64bb64c80272c10ed1a35670c8d0..48f5cb63c3bb5535fe1da56abe7583e15d4b5f92 > 100644 >--- a/configure.ac >+++ b/configure.ac >@@ -39,6 +39,20 @@ AC_TRY_COMPILE([ > [CFLAGS="$SAVED_CFLAGS" > AC_MSG_RESULT([no])]) > >+# Check if build chain supports -fno-delete-null-pointer-checks >+# this flag avoids too agressive optimizations which would remove some asserts >+# BIND 9 did the same in it
Re: [Freeipa-devel] [PATCH 0390] Fix build with GCC 4.9+
On 1.3.2016 12:06, Lukas Slebodnik wrote: > On (25/02/16 15:57), Petr Spacek wrote: >> On 19.2.2016 13:55, Petr Spacek wrote: >>> Hello, >>> >>> Fix build with GCC 4.9+. >>> >>> GCC 4.9+ is too aggressive when optimizing functions with nonnull >>> attributes. This removes most of asserts() in the plugin. >>> GCC 6 adds warnings for these cases. >>> >>> We are disabling the unwanted condition pruning by adding >>> -fno-delete-null-pointer-checks argument. >>> BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. >>> >>> Additionally we silence warnings to prevent build failures when -Werror >>> is used. >>> >>> https://bugzilla.redhat.com/show_bug.cgi?id=1307346 >> >> Updated version is attached. It contains less autotools magic because it >> enables attribute nonnull only under Clang static analyzer and Coverity - as >> a >> result we do not have to silence GCC warnings from -Wnonnull. >> >> Please review so I can fix build in Fedora 24. >> >> Thank you. >> >> -- >> Petr^2 Spacek > >>From 4732fe9f4e525c44b46e7ed0734ccaec94fba49e Mon Sep 17 00:00:00 2001 >> From: Petr Spacek >> Date: Fri, 19 Feb 2016 13:39:27 +0100 >> Subject: [PATCH] Fix build with GCC 4.9+. >> >> GCC 4.9+ is too aggressive when optimizing functions with nonnull >> attributes. This removes most of asserts() in the plugin. >> GCC 6 adds warnings for these cases. >> >> We are disabling the unwanted condition pruning by adding >> -fno-delete-null-pointer-checks argument. >> BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. >> >> Additionally we enable nonnull attribute only when the build is running under >> Clang static analyzer or Coverity. >> >> https://bugzilla.redhat.com/show_bug.cgi?id=1307346 >> --- >> configure.ac | 13 + >> src/util.h | 8 ++-- >> 2 files changed, 19 insertions(+), 2 deletions(-) >> >> diff --git a/configure.ac b/configure.ac >> index >> a06708b1a5ee64bb64c80272c10ed1a35670c8d0..a0123ac0a62b5acd5238f028d8c42e83af4060db >> 100644 >> --- a/configure.ac >> +++ b/configure.ac >> @@ -39,6 +39,19 @@ AC_TRY_COMPILE([ >> [CFLAGS="$SAVED_CFLAGS" >> AC_MSG_RESULT([no])]) >> >> +# Check if build chain supports -fno-delete-null-pointer-checks >> +# this flag avoids too agressive optimizations which would remove some >> asserts >> +# BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a >> +AC_MSG_CHECKING([for -fno-delete-null-pointer-checks compiler flag]) >> +SAVED_CFLAGS="$CFLAGS" >> +CFLAGS="$CFLAGS -fno-delete-null-pointer-checks" >> +AC_TRY_COMPILE([ >> +extern int fdef(void); >> +],[], >> +[AC_MSG_RESULT([yes])], >> +[CFLAGS="$SAVED_CFLAGS" >> + AC_MSG_RESULT([no])]) >> + > NACK. > > It failes with clang. > > configure:12982: checking for -fno-delete-null-pointer-checks compiler flag > configure:12999: clang -c -O2 -g -pipe -Wall -Werror=format-security > -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong > --param=ssp-buffer-size=4 -grecord-gcc-switches > -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic > -fvisibility=hidden -fno-delete-null-pointer-checks conftest.c >&5 > clang-3.8: warning: optimization flag '-fno-delete-null-pointer-checks' is > not supported > clang-3.8: warning: argument unused during compilation: > '-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1' > configure:12999: $? = 0 > configure:13000: result: yes > > Reproducer: > autoreconf -if && CC=clang ./configure && make Thanks! I was testing this only with Clang static analyzer ... Here is updated patch. -- Petr^2 Spacek From 6b2ac51fe4ff75c9f59499cbaa4306f70db46425 Mon Sep 17 00:00:00 2001 From: Petr Spacek Date: Fri, 19 Feb 2016 13:39:27 +0100 Subject: [PATCH] Fix build with GCC 4.9+. GCC 4.9+ is too aggressive when optimizing functions with nonnull attributes. This removes most of asserts() in the plugin. GCC 6 adds warnings for these cases. We are disabling the unwanted condition pruning by adding -fno-delete-null-pointer-checks argument. BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. Additionally we enable nonnull attribute only when the build is running under Clang static analyzer or Coverity. https://bugzilla.redhat.com/show_bug.cgi?id=1307346 --- configure.ac | 14 ++ src/util.h | 8 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index a06708b1a5ee64bb64c80272c10ed1a35670c8d0..48f5cb63c3bb5535fe1da56abe7583e15d4b5f92 100644 --- a/configure.ac +++ b/configure.ac @@ -39,6 +39,20 @@ AC_TRY_COMPILE([ [CFLAGS="$SAVED_CFLAGS" AC_MSG_RESULT([no])]) +# Check if build chain supports -fno-delete-null-pointer-checks +# this flag avoids too agressive optimizations which would remove some asserts +# BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a +AC_MSG_CHECKING([for -fno-delete-null-pointer-checks compiler flag]) +SAVED_CFLAGS="$CFLAGS" +CFLAGS="-fno-delete-null-pointer-checks -Werro
Re: [Freeipa-devel] [PATCH 0390] Fix build with GCC 4.9+
On (25/02/16 15:57), Petr Spacek wrote: >On 19.2.2016 13:55, Petr Spacek wrote: >> Hello, >> >> Fix build with GCC 4.9+. >> >> GCC 4.9+ is too aggressive when optimizing functions with nonnull >> attributes. This removes most of asserts() in the plugin. >> GCC 6 adds warnings for these cases. >> >> We are disabling the unwanted condition pruning by adding >> -fno-delete-null-pointer-checks argument. >> BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. >> >> Additionally we silence warnings to prevent build failures when -Werror >> is used. >> >> https://bugzilla.redhat.com/show_bug.cgi?id=1307346 > >Updated version is attached. It contains less autotools magic because it >enables attribute nonnull only under Clang static analyzer and Coverity - as a >result we do not have to silence GCC warnings from -Wnonnull. > >Please review so I can fix build in Fedora 24. > >Thank you. > >-- >Petr^2 Spacek >From 4732fe9f4e525c44b46e7ed0734ccaec94fba49e Mon Sep 17 00:00:00 2001 >From: Petr Spacek >Date: Fri, 19 Feb 2016 13:39:27 +0100 >Subject: [PATCH] Fix build with GCC 4.9+. > >GCC 4.9+ is too aggressive when optimizing functions with nonnull >attributes. This removes most of asserts() in the plugin. >GCC 6 adds warnings for these cases. > >We are disabling the unwanted condition pruning by adding >-fno-delete-null-pointer-checks argument. >BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. > >Additionally we enable nonnull attribute only when the build is running under >Clang static analyzer or Coverity. > >https://bugzilla.redhat.com/show_bug.cgi?id=1307346 >--- > configure.ac | 13 + > src/util.h | 8 ++-- > 2 files changed, 19 insertions(+), 2 deletions(-) > >diff --git a/configure.ac b/configure.ac >index >a06708b1a5ee64bb64c80272c10ed1a35670c8d0..a0123ac0a62b5acd5238f028d8c42e83af4060db > 100644 >--- a/configure.ac >+++ b/configure.ac >@@ -39,6 +39,19 @@ AC_TRY_COMPILE([ > [CFLAGS="$SAVED_CFLAGS" > AC_MSG_RESULT([no])]) > >+# Check if build chain supports -fno-delete-null-pointer-checks >+# this flag avoids too agressive optimizations which would remove some asserts >+# BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a >+AC_MSG_CHECKING([for -fno-delete-null-pointer-checks compiler flag]) >+SAVED_CFLAGS="$CFLAGS" >+CFLAGS="$CFLAGS -fno-delete-null-pointer-checks" >+AC_TRY_COMPILE([ >+ extern int fdef(void); >+],[], >+[AC_MSG_RESULT([yes])], >+[CFLAGS="$SAVED_CFLAGS" >+ AC_MSG_RESULT([no])]) >+ NACK. It failes with clang. configure:12982: checking for -fno-delete-null-pointer-checks compiler flag configure:12999: clang -c -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -fvisibility=hidden -fno-delete-null-pointer-checks conftest.c >&5 clang-3.8: warning: optimization flag '-fno-delete-null-pointer-checks' is not supported clang-3.8: warning: argument unused during compilation: '-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1' configure:12999: $? = 0 configure:13000: result: yes Reproducer: autoreconf -if && CC=clang ./configure && make LS -- Manage your subscription for the Freeipa-devel mailing list: https://www.redhat.com/mailman/listinfo/freeipa-devel Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code
Re: [Freeipa-devel] [PATCH 0390] Fix build with GCC 4.9+
On 19.2.2016 13:55, Petr Spacek wrote: > Hello, > > Fix build with GCC 4.9+. > > GCC 4.9+ is too aggressive when optimizing functions with nonnull > attributes. This removes most of asserts() in the plugin. > GCC 6 adds warnings for these cases. > > We are disabling the unwanted condition pruning by adding > -fno-delete-null-pointer-checks argument. > BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. > > Additionally we silence warnings to prevent build failures when -Werror > is used. > > https://bugzilla.redhat.com/show_bug.cgi?id=1307346 Updated version is attached. It contains less autotools magic because it enables attribute nonnull only under Clang static analyzer and Coverity - as a result we do not have to silence GCC warnings from -Wnonnull. Please review so I can fix build in Fedora 24. Thank you. -- Petr^2 Spacek From 4732fe9f4e525c44b46e7ed0734ccaec94fba49e Mon Sep 17 00:00:00 2001 From: Petr Spacek Date: Fri, 19 Feb 2016 13:39:27 +0100 Subject: [PATCH] Fix build with GCC 4.9+. GCC 4.9+ is too aggressive when optimizing functions with nonnull attributes. This removes most of asserts() in the plugin. GCC 6 adds warnings for these cases. We are disabling the unwanted condition pruning by adding -fno-delete-null-pointer-checks argument. BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. Additionally we enable nonnull attribute only when the build is running under Clang static analyzer or Coverity. https://bugzilla.redhat.com/show_bug.cgi?id=1307346 --- configure.ac | 13 + src/util.h | 8 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index a06708b1a5ee64bb64c80272c10ed1a35670c8d0..a0123ac0a62b5acd5238f028d8c42e83af4060db 100644 --- a/configure.ac +++ b/configure.ac @@ -39,6 +39,19 @@ AC_TRY_COMPILE([ [CFLAGS="$SAVED_CFLAGS" AC_MSG_RESULT([no])]) +# Check if build chain supports -fno-delete-null-pointer-checks +# this flag avoids too agressive optimizations which would remove some asserts +# BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a +AC_MSG_CHECKING([for -fno-delete-null-pointer-checks compiler flag]) +SAVED_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -fno-delete-null-pointer-checks" +AC_TRY_COMPILE([ + extern int fdef(void); +],[], +[AC_MSG_RESULT([yes])], +[CFLAGS="$SAVED_CFLAGS" + AC_MSG_RESULT([no])]) + # Get CFLAGS from isc-config.sh AC_ARG_VAR([BIND9_CFLAGS], [C compiler flags for bind9, overriding isc-config.sh]) diff --git a/src/util.h b/src/util.h index 9849ff9b6c38ec1c6dd143440d5b5e584b2ecd51..402503c339a5ab6ca5273cae420e743b9fc252ab 100644 --- a/src/util.h +++ b/src/util.h @@ -103,11 +103,15 @@ extern isc_boolean_t verbose_checks; /* from settings.c */ /* If no argument index list is given to the nonnull attribute, * all pointer arguments are marked as non-null. */ #define ATTR_NONNULLS ATTR_NONNULL() -#ifdef __GNUC__ +#if defined(__COVERITY__) || defined(__clang_analyzer__) #define ATTR_NONNULL(...) __attribute__((nonnull(__VA_ARGS__))) -#define ATTR_CHECKRESULT __attribute__((warn_unused_result)) #else #define ATTR_NONNULL(...) +#endif + +#if defined(__GNUC__) +#define ATTR_CHECKRESULT __attribute__((warn_unused_result)) +#else #define ATTR_CHECKRESULT #endif -- 2.5.0 -- Manage your subscription for the Freeipa-devel mailing list: https://www.redhat.com/mailman/listinfo/freeipa-devel Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code
[Freeipa-devel] [PATCH 0390] Fix build with GCC 4.9+
Hello, Fix build with GCC 4.9+. GCC 4.9+ is too aggressive when optimizing functions with nonnull attributes. This removes most of asserts() in the plugin. GCC 6 adds warnings for these cases. We are disabling the unwanted condition pruning by adding -fno-delete-null-pointer-checks argument. BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. Additionally we silence warnings to prevent build failures when -Werror is used. https://bugzilla.redhat.com/show_bug.cgi?id=1307346 -- Petr^2 Spacek From bc379e56336abae93d593b878dac6f4da4b497de Mon Sep 17 00:00:00 2001 From: Petr Spacek Date: Fri, 19 Feb 2016 13:39:27 +0100 Subject: [PATCH] Fix build with GCC 4.9+. GCC 4.9+ is too aggressive when optimizing functions with nonnull attributes. This removes most of asserts() in the plugin. GCC 6 adds warnings for these cases. We are disabling the unwanted condition pruning by adding -fno-delete-null-pointer-checks argument. BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a. Additionally we silence warnings to prevent build failures when -Werror is used. https://bugzilla.redhat.com/show_bug.cgi?id=1307346 --- configure.ac | 46 ++ 1 file changed, 46 insertions(+) diff --git a/configure.ac b/configure.ac index a06708b1a5ee64bb64c80272c10ed1a35670c8d0..486c9a37b081c8d60111694a5815ac10e4e5559a 100644 --- a/configure.ac +++ b/configure.ac @@ -39,6 +39,52 @@ AC_TRY_COMPILE([ [CFLAGS="$SAVED_CFLAGS" AC_MSG_RESULT([no])]) +# Check if build chain supports -fno-delete-null-pointer-checks +# this flag avoids too agressive optimizations which would remove some asserts +# BIND 9 did the same in its commit 603a78708343f063b44affb882ef93bb19a5142a +AC_MSG_CHECKING([for -fno-delete-null-pointer-checks compiler flag]) +SAVED_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -fno-delete-null-pointer-checks" +AC_TRY_COMPILE([ + extern int fdef(void); +],[], +[AC_MSG_RESULT([yes])], +[CFLAGS="$SAVED_CFLAGS" + AC_MSG_RESULT([no])]) + +# detect if __attribute__(nonnull) is causing warnings we do not care about +# this is typically caused by REQUIRE(ptr != NULL); +AC_MSG_CHECKING([for too agressive __attribute__(nonnull) handling]) +NONNULL_COMPARE_CODE=" + __attribute__((nonnull)) + void f(void *ptr) { + if (ptr == 0) + ; + }; +" +SAVED_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -Wall -Werror" +AC_TRY_COMPILE([$NONNULL_COMPARE_CODE +],[], +[CFLAGS="$SAVED_CFLAGS" + AC_MSG_RESULT([no problem detected])], +[AC_MSG_RESULT([it is too aggresive]) + AC_MSG_CHECKING([if -Wno-nonnull-compare is sufficient]) + CFLAGS="$SAVED_CFLAGS -Wno-nonnull-compare -Wall -Werror" + AC_TRY_COMPILE([$NONNULL_COMPARE_CODE],[], + [AC_MSG_RESULT([yes]) + CFLAGS="$SAVED_CFLAGS -Wno-nonnull-compare"], + [AC_MSG_RESULT([no]) + AC_MSG_CHECKING([for -Wno-nonnull support]) + CFLAGS="$SAVED_CFLAGS -Wno-nonnull -Wall -Werror" + AC_TRY_COMPILE([$NONNULL_COMPARE_CODE],[], + [AC_MSG_RESULT([yes]) + CFLAGS="$SAVED_CFLAGS -Wno-nonnull"], + [AC_MSG_RESULT([no]) + CFLAGS="$SAVED_CFLAGS"]) + ]) +]) + # Get CFLAGS from isc-config.sh AC_ARG_VAR([BIND9_CFLAGS], [C compiler flags for bind9, overriding isc-config.sh]) -- 2.5.0 -- Manage your subscription for the Freeipa-devel mailing list: https://www.redhat.com/mailman/listinfo/freeipa-devel Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code