[BZ #19239] Issue deprecation warnings on macro expansion.
commit809b72df6c90303aa3622a28f2837ec6c518290d
authorZack Weinberg <zackw@panix.com>
Mon, 14 Nov 2016 13:34:59 +0000 (14 08:34 -0500)
committerZack Weinberg <zackw@panix.com>
Mon, 14 Nov 2016 13:34:59 +0000 (14 08:34 -0500)
treeb3c7546831817355514ffd37d522acc43f6899b2
parent14f95a420313ee745b80fe71a0fe6f61b46b327c
[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.
ChangeLog
misc/sys/cdefs.h
misc/sys/sysmacros.h