diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | misc/sys/cdefs.h | 9 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sys/sysmacros.h | 12 |
3 files changed, 20 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog index 13def71aad..2d05c821ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-07-12 Marek Polacek <mpolacek@redhat.com> + + * misc/sys/cdefs.h: Add support for const attribute. + * sysdeps/unix/sysv/linux/sys/sysmacros.h: Add __attribute_const__ + to gnu_dev_{major,minor,makedev} functions. + 2011-07-20 Marek Polacek <mpolacek@redhat.com> * intl/dcigettext.c (get_output_charset): Add missing bracket. diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h index c9495a479e..165a94a64b 100644 --- a/misc/sys/cdefs.h +++ b/misc/sys/cdefs.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-2001, 2002, 2004, 2005, 2006, 2007, 2009 +/* Copyright (C) 1992-2001, 2002, 2004, 2005, 2006, 2007, 2009, 2011 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -218,6 +218,13 @@ # define __attribute_pure__ /* Ignore */ #endif +/* This declaration tells the compiler that the value is constant. */ +#if __GNUC_PREREQ (2,5) +# define __attribute_const__ __attribute__ ((__const__)) +#else +# define __attribute_const__ /* Ignore */ +#endif + /* At some point during the gcc 3.1 development the `used' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ diff --git a/sysdeps/unix/sysv/linux/sys/sysmacros.h b/sysdeps/unix/sysv/linux/sys/sysmacros.h index 3fc01dff11..4600c93694 100644 --- a/sysdeps/unix/sysv/linux/sys/sysmacros.h +++ b/sysdeps/unix/sysv/linux/sys/sysmacros.h @@ -31,29 +31,29 @@ __BEGIN_DECLS __extension__ extern unsigned int gnu_dev_major (unsigned long long int __dev) - __THROW; + __THROW __attribute_const__; __extension__ extern unsigned int gnu_dev_minor (unsigned long long int __dev) - __THROW; + __THROW __attribute_const__; __extension__ extern unsigned long long int gnu_dev_makedev (unsigned int __major, unsigned int __minor) - __THROW; + __THROW __attribute_const__; # if defined __GNUC__ && __GNUC__ >= 2 && defined __USE_EXTERN_INLINES -__extension__ __extern_inline unsigned int +__extension__ __extern_inline __attribute_const__ unsigned int __NTH (gnu_dev_major (unsigned long long int __dev)) { return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); } -__extension__ __extern_inline unsigned int +__extension__ __extern_inline __attribute_const__ unsigned int __NTH (gnu_dev_minor (unsigned long long int __dev)) { return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); } -__extension__ __extern_inline unsigned long long int +__extension__ __extern_inline __attribute_const__ unsigned long long int __NTH (gnu_dev_makedev (unsigned int __major, unsigned int __minor)) { return ((__minor & 0xff) | ((__major & 0xfff) << 8) |