Author: pfg
Date: Mon Jun 29 00:30:30 2015
New Revision: 284917
URL: https://svnweb.freebsd.org/changeset/base/284917

Log:
  Add a new __sentinel attribute.
  
  The sentinel attribute was originally implemented in OpenBSD's gcc and
  later adopted by upstream GCC 4.0 (and clang). From the OpenBSD's
  gcc-local manpage:
  
  -   gcc recognizes the extra attribute __sentinel__, which can be used to
      mark varargs function that need a NULL pointer to mark argument
      termination, like execl(3).  This exposes latent bugs for 64-bit
      architectures, where a terminating 0 will expand to a 32-bit int, and
      not a full-fledged 64-bits pointer.
  
  While here sort the visibility attributes.
  
  Hinted-by:    OpenBSD

Modified:
  head/sys/sys/cdefs.h

Modified: head/sys/sys/cdefs.h
==============================================================================
--- head/sys/sys/cdefs.h        Sun Jun 28 21:36:00 2015        (r284916)
+++ head/sys/sys/cdefs.h        Mon Jun 29 00:30:30 2015        (r284917)
@@ -469,11 +469,13 @@
 #endif
 
 #if __GNUC_PREREQ__(4, 0)
-#define        __hidden        __attribute__((__visibility__("hidden")))
+#define        __sentinel      __attribute__((__sentinel__))
 #define        __exported      __attribute__((__visibility__("default")))
+#define        __hidden        __attribute__((__visibility__("hidden")))
 #else
-#define        __hidden
+#define        __sentinel
 #define        __exported
+#define        __hidden
 #endif
 
 /*
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to