This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.24-366-g809b72d


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  809b72df6c90303aa3622a28f2837ec6c518290d (commit)
      from  14f95a420313ee745b80fe71a0fe6f61b46b327c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=809b72df6c90303aa3622a28f2837ec6c518290d

commit 809b72df6c90303aa3622a28f2837ec6c518290d
Author: Zack Weinberg <zackw@panix.com>
Date:   Mon Nov 14 08:34:59 2016 -0500

    [BZ #19239] Issue deprecation warnings on macro expansion.
    
    By using __glibc_macro_warning instead of __attribute_deprecated__,
    we get the deprecation warnings whenever the macros are expanded,
    not just when they compile to a function call.  This is important
    for unintentional uses like the test case in #19239 (C++ var(value)
    initialization syntax, with a variable named "major").  It's also
    simpler, because __REDIRECT is no longer required.
    
    	* misc/sys/sysmacros.h (__SYSMACROS_DM, __SYSMACROS_DM1): New macros.
    	(__SYSMACROS_DEPRECATION_MSG, __SYSMACROS_FST_DECL_TEMPL)
    	(__SYSMACROS_FST_IMPL_TEMPL): Delete.
    	(major, minor, makedev): Use __SYSMACROS_DM in definition, instead
    	of redirected function names.
    
    	* misc/sys/cdefs.h (__glibc_macro_warning): Activate for clang >= 3.5
    	as well.  Document that MESSAGE must be a single string literal.

diff --git a/ChangeLog b/ChangeLog
index 7521477..f2b6683 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2016-11-14  Zack Weinberg  <zackw@panix.com>
+
+	* misc/sys/sysmacros.h (__SYSMACROS_DM, __SYSMACROS_DM1): New macros.
+	(__SYSMACROS_DEPRECATION_MSG, __SYSMACROS_FST_DECL_TEMPL)
+	(__SYSMACROS_FST_IMPL_TEMPL): Delete.
+	(major, minor, makedev): Use __SYSMACROS_DM in definition, instead
+	of redirected function names.
+
+	* misc/sys/cdefs.h (__glibc_macro_warning): Activate for clang >= 3.5
+	as well.  Document that MESSAGE must be a single string literal.
+
 2016-11-11  Joseph Myers  <joseph@codesourcery.com>
 
 	* scripts/build-many-glibcs.py: New file.
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index 50e00e6..9298dd6 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -473,8 +473,11 @@
 #endif
 
 /* __glibc_macro_warning (MESSAGE) issues warning MESSAGE.  This is
-   intended for use in preprocessor macros.  */
-#if __GNUC_PREREQ (4,8)
+   intended for use in preprocessor macros.
+
+   Note: MESSAGE must be a _single_ string; concatenation of string
+   literals is not supported.  */
+#if __GNUC_PREREQ (4,8) || __glibc_clang_prereq (3,5)
 # define __glibc_macro_warning1(message) _Pragma (#message)
 # define __glibc_macro_warning(message) \
   __glibc_macro_warning1 (GCC warning message)
diff --git a/misc/sys/sysmacros.h b/misc/sys/sysmacros.h
index 086e9af..7ecccfb 100644
--- a/misc/sys/sysmacros.h
+++ b/misc/sys/sysmacros.h
@@ -40,54 +40,46 @@
 #include <bits/types.h>
 #include <bits/sysmacros.h>
 
-/* The extra "\n " moves gcc's [-Wdeprecated-declarations] annotation
-   onto the next line.  */
-#define __SYSMACROS_DEPRECATION_MSG(symbol)				     \
-  "\n  In the GNU C Library, `" #symbol "' is defined by <sys/sysmacros.h>." \
-  "\n  For historical compatibility, it is currently defined by"	     \
-  "\n  <sys/types.h> as well, but we plan to remove this soon."		     \
-  "\n  To use `" #symbol "', include <sys/sysmacros.h> directly."	     \
-  "\n  If you did not intend to use a system-defined macro `" #symbol "',"   \
-  "\n  you should #undef it after including <sys/types.h>."		     \
-  "\n "
+/* Caution: The text of this deprecation message is unquoted, so that
+   #symbol can be substituted.  (It is converted to a string by
+   __SYSMACROS_DM1.)  This means the message must be a sequence of
+   complete pp-tokens; in particular, English contractions (it's,
+   can't) cannot be used.
+
+   The message has been manually word-wrapped to fit in 80 columns
+   when output by GCC 5 and 6.  The first line is shorter to leave
+   some room for the "foo.c:23: warning:" annotation.  */
+#define __SYSMACROS_DM(symbol) __SYSMACROS_DM1 \
+ (In the GNU C Library, #symbol is defined\n\
+  by <sys/sysmacros.h>. For historical compatibility, it is\n\
+  currently defined by <sys/types.h> as well, but we plan to\n\
+  remove this soon.  To use #symbol, include <sys/sysmacros.h>\n\
+  directly.  If you did not intend to use a system-defined macro\n\
+  #symbol, you should undefine it after including <sys/types.h>.)
+
+/* This macro is variadic because the deprecation message above
+   contains commas.  */
+#define __SYSMACROS_DM1(...) __glibc_macro_warning (#__VA_ARGS__)
 
 #define __SYSMACROS_DECL_TEMPL(rtype, name, proto)			     \
   extern rtype gnu_dev_##name proto __THROW __attribute_const__;
 
-#define __SYSMACROS_FST_DECL_TEMPL(rtype, name, proto)			     \
-  extern rtype __REDIRECT_NTH (__##name##_from_sys_types, proto,	     \
-			       gnu_dev_##name)				     \
-       __attribute_const__						     \
-       __attribute_deprecated_msg__ (__SYSMACROS_DEPRECATION_MSG (name));
-
 #define __SYSMACROS_IMPL_TEMPL(rtype, name, proto)			     \
   __extension__ __extern_inline __attribute_const__ rtype		     \
   __NTH (gnu_dev_##name proto)
 
-#define __SYSMACROS_FST_IMPL_TEMPL(rtype, name, proto)			     \
-  __extension__ __extern_inline __attribute_const__ rtype		     \
-  __NTH (__##name##_from_sys_types proto)
-
 __BEGIN_DECLS
 
 __SYSMACROS_DECLARE_MAJOR (__SYSMACROS_DECL_TEMPL)
 __SYSMACROS_DECLARE_MINOR (__SYSMACROS_DECL_TEMPL)
 __SYSMACROS_DECLARE_MAKEDEV (__SYSMACROS_DECL_TEMPL)
 
-__SYSMACROS_DECLARE_MAJOR (__SYSMACROS_FST_DECL_TEMPL)
-__SYSMACROS_DECLARE_MINOR (__SYSMACROS_FST_DECL_TEMPL)
-__SYSMACROS_DECLARE_MAKEDEV (__SYSMACROS_FST_DECL_TEMPL)
-
 #ifdef __USE_EXTERN_INLINES
 
 __SYSMACROS_DEFINE_MAJOR (__SYSMACROS_IMPL_TEMPL)
 __SYSMACROS_DEFINE_MINOR (__SYSMACROS_IMPL_TEMPL)
 __SYSMACROS_DEFINE_MAKEDEV (__SYSMACROS_IMPL_TEMPL)
 
-__SYSMACROS_DEFINE_MAJOR (__SYSMACROS_FST_IMPL_TEMPL)
-__SYSMACROS_DEFINE_MINOR (__SYSMACROS_FST_IMPL_TEMPL)
-__SYSMACROS_DEFINE_MAKEDEV (__SYSMACROS_FST_IMPL_TEMPL)
-
 #endif
 
 __END_DECLS
@@ -96,9 +88,7 @@ __END_DECLS
 
 #ifndef __SYSMACROS_NEED_IMPLEMENTATION
 # undef __SYSMACROS_DECL_TEMPL
-# undef __SYSMACROS_FST_DECL_TEMPL
 # undef __SYSMACROS_IMPL_TEMPL
-# undef __SYSMACROS_FST_IMPL_TEMPL
 # undef __SYSMACROS_DECLARE_MAJOR
 # undef __SYSMACROS_DECLARE_MINOR
 # undef __SYSMACROS_DECLARE_MAKEDEV
@@ -108,9 +98,9 @@ __END_DECLS
 #endif
 
 #ifdef __SYSMACROS_DEPRECATED_INCLUSION
-# define major(dev) __major_from_sys_types (dev)
-# define minor(dev) __minor_from_sys_types (dev)
-# define makedev(maj, min) __makedev_from_sys_types (maj, min)
+# define major(dev) __SYSMACROS_DM (major) gnu_dev_major (dev)
+# define minor(dev) __SYSMACROS_DM (minor) gnu_dev_minor (dev)
+# define makedev(maj, min) __SYSMACROS_DM (makedev) gnu_dev_makedev (maj, min)
 #else
 # define major(dev) gnu_dev_major (dev)
 # define minor(dev) gnu_dev_minor (dev)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog            |   11 +++++++++
 misc/sys/cdefs.h     |    7 ++++-
 misc/sys/sysmacros.h |   56 ++++++++++++++++++++-----------------------------
 3 files changed, 39 insertions(+), 35 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]