lkml.org 
[lkml]   [2007]   [Aug]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] remove strict ansi check from __u64 in asm/types.h

    Up to now SuSE used its own version if /usr/include/{asm,linux},
    which provided 64bit types for applications.
    Recently we switched to a tree generated by make headers_install_all.
    This lead to a few fixable compile errors in applications, and reduced
    diskspace requirements by the linux-kernel-headers.noarch.rpm

    KDE is compiled with -ansi for some reason. All KDE apps get this flag
    via the KDE build system.
    Kaffeine includes /usr/include/linux/dvb/dmx.h. This header uses __u64.
    Kaffeine fails to compile because __u64 is not available.

    Remove the __STRICT_ANSI__ check from the __u64/__s64 declaration on
    32bit targets.

    Here is the reason why we think the check should be relaxed:

    ....
    > > > One thing for example is the -ansi flag in KDE. From what I heard, this
    > > > disables all 64bit types on 32bit targets because ANSI has no long long.
    > >
    > > This is wrong. long long is supported with -ansi just fine.
    >
    > So is the __STRICT_ANSI__ check in asm/types.h wrong and should be
    > removed?

    Well, GCC can be made to warn about usage of long long types with ISO C90
    (-ansi), but only with -pedantic. You can write this in a way that even
    then it doesn't cause warnings, namely by:

    #ifdef __GNUC__
    __extension__ typedef __signed__ long long __s64;
    __extension__ typedef unsigned long long __u64;
    #endif

    The __extension__ keyword in front of this switches off any pedantic
    warnings for this expression.
    ....

    sparc does not wrap __u64 defines for some reason.

    (Currently) untested patch below.

    Signed-off-by: Olaf Hering <olh@suse.de>
    ---
    include/asm-arm/types.h | 6 +++---
    include/asm-avr32/types.h | 6 +++---
    include/asm-blackfin/types.h | 6 +++---
    include/asm-cris/types.h | 6 +++---
    include/asm-frv/types.h | 6 +++---
    include/asm-h8300/types.h | 6 +++---
    include/asm-i386/types.h | 6 +++---
    include/asm-m32r/types.h | 6 +++---
    include/asm-m68k/types.h | 6 +++---
    include/asm-mips/types.h | 6 +++---
    include/asm-parisc/types.h | 6 +++---
    include/asm-powerpc/types.h | 6 +++---
    include/asm-s390/types.h | 6 +++---
    include/asm-sh/types.h | 6 +++---
    include/asm-sh64/types.h | 6 +++---
    include/asm-v850/types.h | 6 +++---
    include/asm-xtensa/types.h | 6 +++---
    17 files changed, 51 insertions(+), 51 deletions(-)

    --- a/include/asm-arm/types.h
    +++ b/include/asm-arm/types.h
    @@ -19,9 +19,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    #endif /* __ASSEMBLY__ */
    --- a/include/asm-avr32/types.h
    +++ b/include/asm-avr32/types.h
    @@ -25,9 +25,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    #endif /* __ASSEMBLY__ */
    --- a/include/asm-blackfin/types.h
    +++ b/include/asm-blackfin/types.h
    @@ -27,9 +27,9 @@ typedef __signed__ int __s32;
    typedef unsigned int __u32;

    /* HK0617 -- Changes to unsigned long temporarily */
    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    #endif /* __ASSEMBLY__ */
    --- a/include/asm-cris/types.h
    +++ b/include/asm-cris/types.h
    @@ -19,9 +19,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    #endif /* __ASSEMBLY__ */
    --- a/include/asm-frv/types.h
    +++ b/include/asm-frv/types.h
    @@ -30,9 +30,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    #endif /* __ASSEMBLY__ */
    --- a/include/asm-h8300/types.h
    +++ b/include/asm-h8300/types.h
    @@ -27,9 +27,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    /*
    --- a/include/asm-i386/types.h
    +++ b/include/asm-i386/types.h
    @@ -19,9 +19,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    #endif /* __ASSEMBLY__ */
    --- a/include/asm-m32r/types.h
    +++ b/include/asm-m32r/types.h
    @@ -19,9 +19,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif
    #endif /* __ASSEMBLY__ */

    --- a/include/asm-m68k/types.h
    +++ b/include/asm-m68k/types.h
    @@ -27,9 +27,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    #endif /* __ASSEMBLY__ */
    --- a/include/asm-mips/types.h
    +++ b/include/asm-mips/types.h
    @@ -34,9 +34,9 @@ typedef unsigned long __u64;

    #else

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    #endif
    --- a/include/asm-parisc/types.h
    +++ b/include/asm-parisc/types.h
    @@ -19,9 +19,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    #endif /* __ASSEMBLY__ */
    --- a/include/asm-powerpc/types.h
    +++ b/include/asm-powerpc/types.h
    @@ -40,9 +40,9 @@ typedef unsigned int __u32;
    typedef __signed__ long __s64;
    typedef unsigned long __u64;
    #else
    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif
    #endif /* __powerpc64__ */

    --- a/include/asm-s390/types.h
    +++ b/include/asm-s390/types.h
    @@ -28,9 +28,9 @@ typedef __signed__ int __s32;
    typedef unsigned int __u32;

    #ifndef __s390x__
    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif
    #else /* __s390x__ */
    typedef __signed__ long __s64;
    --- a/include/asm-sh/types.h
    +++ b/include/asm-sh/types.h
    @@ -19,9 +19,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    #endif /* __ASSEMBLY__ */
    --- a/include/asm-sh64/types.h
    +++ b/include/asm-sh64/types.h
    @@ -30,9 +30,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    #endif /* __ASSEMBLY__ */
    --- a/include/asm-v850/types.h
    +++ b/include/asm-v850/types.h
    @@ -27,9 +27,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    #endif /* !__ASSEMBLY__ */
    --- a/include/asm-xtensa/types.h
    +++ b/include/asm-xtensa/types.h
    @@ -29,9 +29,9 @@ typedef unsigned short __u16;
    typedef __signed__ int __s32;
    typedef unsigned int __u32;

    -#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
    -typedef __signed__ long long __s64;
    -typedef unsigned long long __u64;
    +#if defined(__GNUC__)
    +__extension__ typedef __signed__ long long __s64;
    +__extension__ typedef unsigned long long __u64;
    #endif

    /*
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-08-06 19:25    [W:4.620 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site