]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/patches/glibc/glibc-rh750531.patch
Merge branch 'kernel-update' of ssh://git.ipfire.org/pub/git/ipfire-2.x into kernel...
[ipfire-2.x.git] / src / patches / glibc / glibc-rh750531.patch
diff --git a/src/patches/glibc/glibc-rh750531.patch b/src/patches/glibc/glibc-rh750531.patch
new file mode 100644 (file)
index 0000000..a53e770
--- /dev/null
@@ -0,0 +1,122 @@
+commit 69da074d7adfab7b57004a0dea9403a928e310a5
+Author: Ulrich Drepper <drepper@gmail.com>
+Date:   Wed Nov 10 02:38:35 2010 -0500
+
+    Fix warnings in __bswap_16.
+
+diff --git a/sysdeps/i386/bits/byteswap.h b/sysdeps/i386/bits/byteswap.h
+index 1f3fc5e..c246ae8 100644
+--- a/sysdeps/i386/bits/byteswap.h
++++ b/sysdeps/i386/bits/byteswap.h
+@@ -1,5 +1,5 @@
+ /* Macros to swap the order of bytes in integer values.
+-   Copyright (C) 1997, 1998, 2000, 2002, 2003, 2006, 2007, 2008
++   Copyright (C) 1997, 1998, 2000, 2002, 2003, 2006, 2007, 2008, 2010
+    Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+@@ -27,26 +27,27 @@
+ /* Swap bytes in 16 bit value.  */
+ #define __bswap_constant_16(x) \
+-     ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
++     ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
+ #ifdef __GNUC__
+ # if __GNUC__ >= 2
+ #  define __bswap_16(x) \
+      (__extension__                                                         \
+-      ({ register unsigned short int __v, __x = (x);                        \
++      ({ register unsigned short int __v, __x = (unsigned short int) (x);     \
+        if (__builtin_constant_p (__x))                                      \
+          __v = __bswap_constant_16 (__x);                                   \
+        else                                                                 \
+          __asm__ ("rorw $8, %w0"                                            \
+                   : "=r" (__v)                                              \
+-                  : "0" (__x)                                               \
+-                  : "cc");                                                  \
++                  : "0" (__x)                                               \
++                  : "cc");                                                  \
+        __v; }))
+ # else
+ /* This is better than nothing.  */
+ #  define __bswap_16(x) \
+      (__extension__                                                         \
+-      ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); }))
++      ({ register unsigned short int __x = (unsigned short int) (x);        \
++       __bswap_constant_16 (__x); }))
+ # endif
+ #else
+ static __inline unsigned short int
+@@ -122,7 +123,7 @@ __bswap_32 (unsigned int __bsx)
+      (__extension__                                                         \
+       ({ union { __extension__ unsigned long long int __ll;                 \
+                unsigned long int __l[2]; } __w, __r;                        \
+-         if (__builtin_constant_p (x))                                              \
++       if (__builtin_constant_p (x))                                        \
+          __r.__ll = __bswap_constant_64 (x);                                \
+        else                                                                 \
+          {                                                                  \
+diff --git a/sysdeps/x86_64/bits/byteswap.h b/sysdeps/x86_64/bits/byteswap.h
+index 08b38e8..e350fb8 100644
+--- a/sysdeps/x86_64/bits/byteswap.h
++++ b/sysdeps/x86_64/bits/byteswap.h
+@@ -1,5 +1,5 @@
+ /* Macros to swap the order of bytes in integer values.
+-   Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008
++   Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008, 2010
+    Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+@@ -29,12 +29,12 @@
+ /* Swap bytes in 16 bit value.  */
+ #define __bswap_constant_16(x) \
+-     ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
++     ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
+ #if defined __GNUC__ && __GNUC__ >= 2
+ # define __bswap_16(x) \
+      (__extension__                                                         \
+-      ({ register unsigned short int __v, __x = (x);                        \
++      ({ register unsigned short int __v, __x = (unsigned short int) (x);     \
+        if (__builtin_constant_p (__x))                                      \
+          __v = __bswap_constant_16 (__x);                                   \
+        else                                                                 \
+@@ -47,7 +47,8 @@
+ /* This is better than nothing.  */
+ # define __bswap_16(x) \
+      (__extension__                                                         \
+-      ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); }))
++      ({ register unsigned short int __x = (unsigned short int) (x);          \
++       __bswap_constant_16 (__x); }))
+ #endif
+@@ -120,16 +121,16 @@
+ #  define __bswap_64(x) \
+      (__extension__                                                           \
+       ({ union { __extension__ unsigned long long int __ll;                   \
+-                 unsigned int __l[2]; } __w, __r;                             \
+-         if (__builtin_constant_p (x))                                        \
+-           __r.__ll = __bswap_constant_64 (x);                                \
+-         else                                                                 \
+-           {                                                                  \
+-             __w.__ll = (x);                                                  \
+-             __r.__l[0] = __bswap_32 (__w.__l[1]);                            \
+-             __r.__l[1] = __bswap_32 (__w.__l[0]);                            \
+-           }                                                                  \
+-         __r.__ll; }))
++               unsigned int __l[2]; } __w, __r;                             \
++       if (__builtin_constant_p (x))                                        \
++         __r.__ll = __bswap_constant_64 (x);                                \
++       else                                                                 \
++         {                                                                  \
++           __w.__ll = (x);                                                  \
++           __r.__l[0] = __bswap_32 (__w.__l[1]);                            \
++           __r.__l[1] = __bswap_32 (__w.__l[0]);                            \
++         }                                                                  \
++       __r.__ll; }))
+ # endif
+ #endif