[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#611644: libc6-dev: Wrong definition of __bswap_constant_16 in bits.h generates spurious compiler warnings with optimizations



Package: libc6-dev
Version: 2.11.2-10
Severity: important
Tags: patch

This has been discussed as a gcc bug, but it is in fact a libc6-dev bug, see
bug #561249.
Rumored to have been fixed in full glibc, but however not in eglibc (as of
trunk of today).
Patch attached.




-- System Information:
Debian Release: 6.0
  APT prefers unstable
  APT policy: (990, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.36-trunk-686 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libc6-dev depends on:
ii  libc-dev-bin                  2.11.2-10  Embedded GNU C Library: Developmen
ii  libc6                         2.11.2-10  Embedded GNU C Library: Shared lib
ii  linux-libc-dev                2.6.32-30  Linux support headers for userspac

Versions of packages libc6-dev recommends:
ii  gcc [c-compiler]          4:4.4.5-2      The GNU C compiler
ii  gcc-4.1 [c-compiler]      4.1.2-29       The GNU C compiler
ii  gcc-4.2 [c-compiler]      4.2.4-6        The GNU C compiler
ii  gcc-4.3 [c-compiler]      4.3.5-4        The GNU C compiler
ii  gcc-4.4 [c-compiler]      4.4.5-10       The GNU C compiler
ii  gcc-4.6 [c-compiler]      4.6-20110125-1 The GNU C compiler

Versions of packages libc6-dev suggests:
ii  glibc-doc                     2.11.2-10  Embedded GNU C Library: Documentat
ii  manpages-dev                  3.27-1     Manual pages about using GNU/Linux

-- no debconf information
--- ./eglibc/libc/bits/byteswap.h.orig	2011-01-31 17:06:19.000000000 +0100
+++ ./eglibc/libc/bits/byteswap.h	2011-01-31 17:06:58.000000000 +0100
@@ -26,7 +26,7 @@
 
 /* Swap bytes in 16 bit value.  */
 #define __bswap_constant_16(x) \
-     ((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8))
+     ((unsigned short int)((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)))
 
 #ifdef __GNUC__
 # define __bswap_16(x) \

Reply to: