svn commit: r316779 - stable/11/sys/sys

Mark Millard markmi at dsl-only.net
Thu Apr 13 21:02:23 UTC 2017


> Author: pfg
> Date: Thu Apr 13 18:28:40 2017
> New Revision: 316779
> URL: 
> https://svnweb.freebsd.org/changeset/base/316779
> 
> 
> Log:
>   Temporarily revert r315602.
>   Bring back the definition for the GCC __nonnull() attribute.
>   
>   Old versions of GCC, including the version installed the latest 11-stable
>   snapshot with pkg(8), still carry the old attributes.
>   
>   The issue is easily fixed by rebuilding GCC but there is no need to cause
>   havoc in our user base. The definition by itself is harmless but it should
>   be removed again in the near future.
> 
> Modified:
>   stable/11/sys/sys/cdefs.h
> Directory Properties:
>   stable/11/   (props changed)
> 
> Modified: stable/11/sys/sys/cdefs.h
> ==============================================================================
> --- stable/11/sys/sys/cdefs.h	Thu Apr 13 18:13:10 2017	(r316778)
> +++ stable/11/sys/sys/cdefs.h	Thu Apr 13 18:28:40 2017	(r316779)
> @@ -376,6 +376,14 @@
>  #define	__noinline
>  #endif
>  
> +#if __GNUC_PREREQ__(3, 3)
> +#define	__nonnull(x)	__attribute__((__nonnull__(x)))
> +#define	__nonnull_all	__attribute__((__nonnull__))
> +#else
> +#define	__nonnull(x)
> +#define	__nonnull_all
> +#endif
> +
>  #if __GNUC_PREREQ__(3, 4)
>  #define	__fastcall	__attribute__((__fastcall__))
>  #define	__result_use_check	__attribute__((__warn_unused_result__))


My understanding was that __attribute__((__nonnull__(x))) and
__attribute__((__nonnull__)) were causing some problems
because of optimization consequences (code removal). The goal
of converting to the new technique (involving lack of
__nonnull and lack of __nonnull_all ) was to still have
warning notices but without such removal of code if I
understand right.

If avoiding code removal was the intent behind the removal
of __nonnull (and __nonnull_all) use (and use of  the
__nonull__ attributes) then just having the two lines:

+#define	__nonnull(x)
+#define	__nonnull_all 

might be better for maintaining compatibility with existing
older sources that reference __nonnull and/or __nonnull_all .

Of course I could be wrong about why the changes were made
in the first place or in other details about the alternatives.

===
Mark Millard
markmi at dsl-only.net



More information about the svn-src-stable-11 mailing list