Skip to contentSkip to conversation

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

U-Boot-Users Applied Shinya Kuribayashi 2 participants 4 messages Feb 23, 2008 – Mar 2, 2008

lore
Share & tools
lore
#0 lore raw

From the Linux kernel commit 68a9bd0cd5824073e3232b102011ec568a517646

----------------------------------------------------------------
Olaf Hering [Wed, 17 Oct 2007 06:27:13 +0000 (23:27 -0700)]

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

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.

----------------------------------------------------------------

---

 include/asm-arm/types.h      |    6 +++---
 include/asm-avr32/types.h    |    6 +++---
 include/asm-blackfin/types.h |    6 +++---
 include/asm-m68k/types.h     |    6 +++---
 include/asm-mips/types.h     |    6 +++---
 include/asm-ppc/types.h      |    6 +++---
 include/asm-sh/types.h       |    6 +++---
 7 files changed, 21 insertions(+), 21 deletions(-)
include/asm-arm/types.h +3 -3
index 13e9806..e56f19d 100644
@@ -17,9 +17,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
 
 /*
include/asm-avr32/types.h +3 -3
index e6c65d9..2dbea4b 100644
@@ -39,9 +39,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__ */
include/asm-blackfin/types.h +3 -3
index 665a419..9fd8e03 100644
@@ -50,9 +50,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
 
 /*
include/asm-m68k/types.h +3 -3
index e673cb0..e944d3f 100644
@@ -14,9 +14,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
 
 typedef struct {
include/asm-mips/types.h +3 -3
index e757e22..707cbf4 100644
@@ -33,9 +33,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
include/asm-ppc/types.h +3 -3
index 4ebbb9e..7adf145 100644
@@ -14,9 +14,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
 
 typedef struct {
include/asm-sh/types.h +3 -3
index fd00dbb..7ba69d9 100644
@@ -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__ */
#1 lore raw
Quoted 20 lines · In message <[email protected]> you wrote:
Quoted 1 line

From the Linux kernel commit 68a9bd0cd5824073e3232b102011ec568a517646

----------------------------------------------------------------
Olaf Hering [Wed, 17 Oct 2007 06:27:13 +0000 (23:27 -0700)]

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

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.

Quoted 7 lines

----------------------------------------------------------------

Applied, thanks!!

Best regards,

Wolfgang Denk

Signature · 6 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Fools ignore complexity. Pragmatists suffer it. Some  can  avoid  it.
Geniuses remove it.
     - Perlis's Programming Proverb #58, SIGPLAN Notices, Sept.  1982
#2 lore raw

The previous patch was lacking of i386, microblaze, nios and nios2. This patch tries to fix them.

---

 include/asm-i386/types.h       |    6 +++---
 include/asm-microblaze/types.h |    6 +++---
 include/asm-nios/types.h       |    6 +++---
 include/asm-nios2/types.h      |    6 +++---
 4 files changed, 12 insertions(+), 12 deletions(-)
include/asm-i386/types.h +3 -3
index 69f8a5a..bdbde41 100644
@@ -17,9 +17,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
 
 /*
include/asm-microblaze/types.h +3 -3
index 8c4bef2..3895dc4 100644
@@ -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
 
 /*
include/asm-nios/types.h +3 -3
index 43fd8f6..24c98a8 100644
@@ -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
 
 /*
include/asm-nios2/types.h +3 -3
index 39e2641..f13d8bd 100644
@@ -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
 
 /*
#3 lore raw
Quoted 11 lines · In message <[email protected]> you wrote:

The previous patch was lacking of i386, microblaze, nios and nios2. This patch tries to fix them.

---

 include/asm-i386/types.h       |    6 +++---
 include/asm-microblaze/types.h |    6 +++---
 include/asm-nios/types.h       |    6 +++---
 include/asm-nios2/types.h      |    6 +++---
 4 files changed, 12 insertions(+), 12 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Nothing is easier than to denounce  the  evildoer;  nothing  is  more
difficult than to understand him.                 - Fyodor Dostoevski