> Macros __attribute__, __format__ and __printf__ are defined in argp.h
> for compatibility with ANSI and old gccs. But leaving them effective
> out of the scope of the header may break applications relying on
> these compiler attributes even with __STRICT_ANSI__ defined. So undef
> the macros after using.
> ---
>  include/argp.h | 10 ++++++++++
>  1 file changed, 10 insertions(+)

> diff --git a/include/argp.h b/include/argp.h
> index 8e8674296..1824c69d6 100644
> --- a/include/argp.h
> +++ b/include/argp.h
> @@ -562,4 +562,14 @@ __NTH (__option_is_end (__const struct argp_option 
> *__opt))
>  }
>  #endif

> +#ifdef __attribute__
> +# if __GNUC__ < 2 ||(__GNUC__ == 2 && __GNUC_MINOR__ < 5) || 
> defined(__STRICT_ANSI__)
> +#  undef __attribute__
> +# endif
> +# if __GNUC__ < 2 ||(__GNUC__ == 2 && __GNUC_MINOR__ < 7) || 
> defined(__STRICT_ANSI__)
> +#  undef __format__
> +#  undef __printf__
> +# endif
> +#endif

Sounds like a good point.

Reviewed-by: Petr Vorel <petr.vo...@gmail.com>

I wonder if instead of copy paste the if conditions wouldn't be better 
something like:

+++ include/argp.h
@@ -46,12 +46,14 @@
 /* This feature is available in gcc versions 2.5 and later.  */
 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || 
defined(__STRICT_ANSI__)
 #  define __attribute__(Spec) /* empty */
+#  define __UCLIBC_ATTRIBUTE_FALLBACK__
 # endif
 /* The __-protected variants of `format' and `printf' attributes
    are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || 
defined(__STRICT_ANSI__)
 #  define __format__ format
 #  define __printf__ printf
+#  define __UCLIBC_PRINTF_FALLBACK__
 # endif
 #endif
 
@@ -562,4 +564,13 @@ __NTH (__option_is_end (__const struct argp_option *__opt))
 }
 #endif
 
+#ifdef __UCLIBC_ATTRIBUTE_FALLBACK__
+# undef __attribute__
+#endif
+
+#ifdef __UCLIBC_PRINTF_FALLBACK__
+# undef __format__
+# undef __printf__
+#endif
+
 #endif /* argp.h */

Kind regards,
Petr

> +
>  #endif /* argp.h */
_______________________________________________
devel mailing list -- devel@uclibc-ng.org
To unsubscribe send an email to devel-le...@uclibc-ng.org

Reply via email to