* [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>)
@ 2014-12-22 10:15 Masahiro Yamada
2014-12-22 10:15 ` [U-Boot] [PATCH 1/7] types.h: define (u)int8_t, (u)int16_t, (u)int32_t based on compiler info (MAD) Masahiro Yamada
` (7 more replies)
0 siblings, 8 replies; 17+ messages in thread
From: Masahiro Yamada @ 2014-12-22 10:15 UTC (permalink / raw)
To: u-boot
Commit 0d296cc2d3b (Provide option to avoid defining a custome version of uintptr_t)
and commit 4166ecb247 (Add some standard headers external code might need)
made a horrible decision.
I raised a flag in the following threads:
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/203954
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/198550/focus=205880
It looks like Simon is not understanding me.
Nor does anybody else have any interest in this topic.
This series is here to show what will happen next
and how horrible it is.
Masahiro Yamada (7):
types.h: define (u)int8_t, (u)int16_t, (u)int32_t based on compiler
info (MAD)
types.h: define s8, s16, s32, s64, u8, u16, u32, u64 based on compiler
info (MAD)
types: defined __s8, __16, __s32, __s64, __u8, __u16, __u32, __u64
based on compiler info (MAD)
Check if compiler-provided <stdint.h> and <inttypes.h> are available
if CONFIG_USE_STDINT=y (MAD)
Replace "llx" with PRIx64 to fix warnings on sandbox (MAD)
Use PRIx32 etc. to print out 32bit-width variable (MAD)
Make BITS_PER_LONG compiler-dependent (MAD)
Makefile | 2 +-
arch/arc/include/asm/types.h | 34 +++++
arch/arm/include/asm/types.h | 37 +++++
arch/avr32/include/asm/types.h | 36 +++++
arch/blackfin/include/asm/types.h | 36 +++++
arch/m68k/include/asm/types.h | 37 +++++
arch/microblaze/include/asm/types.h | 36 +++++
arch/mips/include/asm/types.h | 36 +++++
arch/nds32/include/asm/types.h | 36 ++++-
arch/nios2/include/asm/types.h | 35 +++++
arch/openrisc/include/asm/types.h | 35 +++++
arch/powerpc/include/asm/types.h | 36 +++++
arch/sandbox/include/asm/types.h | 34 +++++
arch/sh/include/asm/types.h | 35 +++++
arch/sparc/include/asm/types.h | 35 +++++
arch/x86/include/asm/types.h | 35 +++++
common/fdt_support.c | 2 +-
config.mk | 12 ++
disk/part_efi.c | 12 +-
fs/fat/fat.c | 35 ++---
include/inttypes.h | 287 ------------------------------------
include/linux/types.h | 15 ++
include/u-boot/zlib.h | 2 +-
scripts/gcc-have-stdint.sh | 21 +++
24 files changed, 607 insertions(+), 314 deletions(-)
delete mode 100644 include/inttypes.h
create mode 100755 scripts/gcc-have-stdint.sh
--
1.9.1
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 1/7] types.h: define (u)int8_t, (u)int16_t, (u)int32_t based on compiler info (MAD)
2014-12-22 10:15 [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>) Masahiro Yamada
@ 2014-12-22 10:15 ` Masahiro Yamada
2014-12-23 4:41 ` Simon Glass
2014-12-22 10:15 ` [U-Boot] [PATCH 2/7] types.h: define s8, s16, s32, s64, u8, u16, u32, u64 " Masahiro Yamada
` (6 subsequent siblings)
7 siblings, 1 reply; 17+ messages in thread
From: Masahiro Yamada @ 2014-12-22 10:15 UTC (permalink / raw)
To: u-boot
The intent of this series is to show the nasty problems introduced
by <stdint.h>.
Simon and I are already discussing this in the following thread:
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/203954
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/198550/focus=205880
-----
Commit 0d296cc2d3b8 (Provide option to avoid defining a custom version
of uintptr_t.) introduced CONFIG_USE_STDINT. If it is enabled,
<stdint.h> is included and uint64_t, u_int64_t, int64_t are defined
based on the compiler-provided information. While, inconsistently,
that commit left uint_{8,16,32}_t, u_int{8,16,32}t, int_{8,16,32}t
to be hard-coded in include/linux/types.h.
This causes type conflicts between the typedefs defined in the compiler's
<stdint.h> and the ones hard-coded in include/linux/types.h.
As you may know, 'uint32_t' is defined as 'unsigned long' in some compilers
such as bare metal ARM toolchain, whereas it is defined as 'unsigned int'
in kernel.org ones.
(This is also clearly mentioned in Linux's arch/arm/include/asm/types.h)
If you make a decision to use a compiler-provided <stdint.h>,
we cannot hard-code the fixed-width types.
To avoid the type conflicts, we must make all of them compiler-dependent
consistently.
You can reproduce this problem, for example, with a Linaro toolchain.
Visit "http://www.linaro.org/downloads/" and download "Bare-metal toolchain
for Cortex-R/M and Cortex-A".
$ make USE_STDINT=1 CROSS_COMPILE=arm-none-eabi- omap4_panda_defconfig all
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
[snip]
CC lib/asm-offsets.s
In file included from /opt/gcc-arm-none-eabi-4_7-2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/include/stdint.h:5:0,
from include/compiler.h:117,
from include/image.h:19,
from include/common.h:82,
from lib/asm-offsets.c:15:
/opt/gcc-arm-none-eabi-4_7-2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/include/stdint-gcc.h:40:24: error: conflicting types for 'int32_t'
In file included from include/common.h:21:0,
from lib/asm-offsets.c:15:
include/linux/types.h:99:17: note: previous declaration of 'int32_t' was here
In file included from /opt/gcc-arm-none-eabi-4_7-2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/include/stdint.h:5:0,
from include/compiler.h:117,
from include/image.h:19,
from include/common.h:82,
from lib/asm-offsets.c:15:
/opt/gcc-arm-none-eabi-4_7-2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/include/stdint-gcc.h:52:25: error: conflicting types for 'uint32_t'
In file included from include/common.h:21:0,
from lib/asm-offsets.c:15:
include/linux/types.h:105:17: note: previous declaration of 'uint32_t' was here
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Gabe Black <gabeblack@chromium.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Bill Richardson <wfrichar@google.com>
Cc: Tom Rini <trini@ti.com>
---
include/linux/types.h | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/include/linux/types.h b/include/linux/types.h
index c9a8d9a..5549479 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -91,18 +91,33 @@ typedef unsigned long ulong;
#ifndef __BIT_TYPES_DEFINED__
#define __BIT_TYPES_DEFINED__
+#if defined(CONFIG_USE_STDINT)
+typedef __UINT8_TYPE__ u_int8_t;
+typedef __INT8_TYPE__ int8_t;
+typedef __UINT16_TYPE__ u_int16_t;
+typedef __INT16_TYPE__ int16_t;
+typedef __UINT32_TYPE__ u_int32_t;
+typedef __INT32_TYPE__ int32_t;
+#else
typedef __u8 u_int8_t;
typedef __s8 int8_t;
typedef __u16 u_int16_t;
typedef __s16 int16_t;
typedef __u32 u_int32_t;
typedef __s32 int32_t;
+#endif
#endif /* !(__BIT_TYPES_DEFINED__) */
+#if defined(CONFIG_USE_STDINT)
+typedef __UINT8_TYPE__ uint8_t;
+typedef __UINT16_TYPE__ uint16_t;
+typedef __UINT32_TYPE__ uint32_t;
+#else
typedef __u8 uint8_t;
typedef __u16 uint16_t;
typedef __u32 uint32_t;
+#endif
#if defined(__GNUC__) && !defined(__STRICT_ANSI__) && \
(!defined(CONFIG_USE_STDINT) || !defined(__INT64_TYPE__))
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 2/7] types.h: define s8, s16, s32, s64, u8, u16, u32, u64 based on compiler info (MAD)
2014-12-22 10:15 [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>) Masahiro Yamada
2014-12-22 10:15 ` [U-Boot] [PATCH 1/7] types.h: define (u)int8_t, (u)int16_t, (u)int32_t based on compiler info (MAD) Masahiro Yamada
@ 2014-12-22 10:15 ` Masahiro Yamada
2014-12-22 10:15 ` [U-Boot] [PATCH 3/7] types: defined __s8, __16, __s32, __s64, __u8, __u16, __u32, __u64 " Masahiro Yamada
` (5 subsequent siblings)
7 siblings, 0 replies; 17+ messages in thread
From: Masahiro Yamada @ 2014-12-22 10:15 UTC (permalink / raw)
To: u-boot
If CONFIG_USE_STDINT is defined, (u)int_{8,16,32,64}_t are provided
by <stdint.h>. s{8,16,32,64}, u{8,16,32,64} must be consistent with them.
For example, some compilers define "uint32_t" as "unsigned long" and
some define it as "unsigned int". "u32" should have the compatible type
with "uint32_t".
We cannot hard-code its definition when CONFIG_USE_STDINT is enabled.
If we want to use <stdint.h>, it must be consistent everywhere.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Gabe Black <gabeblack@chromium.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Bill Richardson <wfrichar@google.com>
Cc: Tom Rini <trini@ti.com>
---
arch/arc/include/asm/types.h | 14 ++++++++++++++
arch/arm/include/asm/types.h | 16 ++++++++++++++++
arch/avr32/include/asm/types.h | 16 ++++++++++++++++
arch/blackfin/include/asm/types.h | 16 ++++++++++++++++
arch/m68k/include/asm/types.h | 16 ++++++++++++++++
arch/microblaze/include/asm/types.h | 16 ++++++++++++++++
arch/mips/include/asm/types.h | 16 ++++++++++++++++
arch/nds32/include/asm/types.h | 16 ++++++++++++++++
arch/nios2/include/asm/types.h | 16 ++++++++++++++++
arch/openrisc/include/asm/types.h | 16 ++++++++++++++++
arch/powerpc/include/asm/types.h | 16 ++++++++++++++++
arch/sandbox/include/asm/types.h | 14 ++++++++++++++
arch/sh/include/asm/types.h | 16 ++++++++++++++++
arch/sparc/include/asm/types.h | 14 ++++++++++++++
arch/x86/include/asm/types.h | 14 ++++++++++++++
15 files changed, 232 insertions(+)
diff --git a/arch/arc/include/asm/types.h b/arch/arc/include/asm/types.h
index 24eeb76..daa1f30 100644
--- a/arch/arc/include/asm/types.h
+++ b/arch/arc/include/asm/types.h
@@ -31,6 +31,19 @@ typedef unsigned long long __u64;
/*
* These aren't exported outside the kernel to avoid name space clashes
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+#else
typedef signed char s8;
typedef unsigned char u8;
@@ -42,6 +55,7 @@ typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
+#endif
#define BITS_PER_LONG 32
diff --git a/arch/arm/include/asm/types.h b/arch/arm/include/asm/types.h
index 2326420..4ab7e6b 100644
--- a/arch/arm/include/asm/types.h
+++ b/arch/arm/include/asm/types.h
@@ -27,6 +27,20 @@ __extension__ typedef unsigned long long __u64;
*/
#ifdef __KERNEL__
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+#else
+
typedef signed char s8;
typedef unsigned char u8;
@@ -39,6 +53,8 @@ typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
+#endif
+
#ifdef CONFIG_ARM64
#define BITS_PER_LONG 64
#else /* CONFIG_ARM64 */
diff --git a/arch/avr32/include/asm/types.h b/arch/avr32/include/asm/types.h
index 65de677..fe355a2 100644
--- a/arch/avr32/include/asm/types.h
+++ b/arch/avr32/include/asm/types.h
@@ -39,6 +39,20 @@ __extension__ typedef unsigned long long __u64;
#ifndef __ASSEMBLY__
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+#else
+
typedef __signed__ char s8;
typedef unsigned char u8;
@@ -51,6 +65,8 @@ typedef unsigned int u32;
typedef __signed__ long long s64;
typedef unsigned long long u64;
+#endif
+
/* Dma addresses are 32-bits wide. */
typedef u32 dma_addr_t;
diff --git a/arch/blackfin/include/asm/types.h b/arch/blackfin/include/asm/types.h
index 92124f1..5ed8462 100644
--- a/arch/blackfin/include/asm/types.h
+++ b/arch/blackfin/include/asm/types.h
@@ -44,6 +44,20 @@ __extension__ typedef unsigned long long __u64;
*/
#ifdef __KERNEL__
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+#else
+
typedef signed char s8;
typedef unsigned char u8;
@@ -56,6 +70,8 @@ typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
+#endif
+
#define BITS_PER_LONG 32
/* Dma addresses are 32-bits wide. */
diff --git a/arch/m68k/include/asm/types.h b/arch/m68k/include/asm/types.h
index 3ffcab2..51bf08d 100644
--- a/arch/m68k/include/asm/types.h
+++ b/arch/m68k/include/asm/types.h
@@ -27,6 +27,20 @@ typedef struct {
/*
* These aren't exported outside the kernel to avoid name space clashes
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+#else
+
typedef signed char s8;
typedef unsigned char u8;
@@ -39,6 +53,8 @@ typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
+#endif
+
#define BITS_PER_LONG 32
/* DMA addresses are 32-bits wide */
diff --git a/arch/microblaze/include/asm/types.h b/arch/microblaze/include/asm/types.h
index 77094f6..343bf84 100644
--- a/arch/microblaze/include/asm/types.h
+++ b/arch/microblaze/include/asm/types.h
@@ -35,6 +35,20 @@ __extension__ typedef unsigned long long __u64;
*/
#ifdef __KERNEL__
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+#else
+
typedef signed char s8;
typedef unsigned char u8;
@@ -47,6 +61,8 @@ typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
+#endif
+
#define BITS_PER_LONG 32
/* Dma addresses are 32-bits wide. */
diff --git a/arch/mips/include/asm/types.h b/arch/mips/include/asm/types.h
index aebafdb..9fc4a6d 100644
--- a/arch/mips/include/asm/types.h
+++ b/arch/mips/include/asm/types.h
@@ -46,6 +46,20 @@ typedef unsigned long long __u64;
#ifndef __ASSEMBLY__
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+#else
+
typedef __signed char s8;
typedef unsigned char u8;
@@ -58,6 +72,8 @@ typedef unsigned int u32;
typedef __signed__ long long s64;
typedef unsigned long long u64;
+#endif
+
#if (defined(CONFIG_HIGHMEM) && defined(CONFIG_64BIT_PHYS_ADDR)) \
|| defined(CONFIG_64BIT)
typedef u64 dma_addr_t;
diff --git a/arch/nds32/include/asm/types.h b/arch/nds32/include/asm/types.h
index 2e8924f..e2c56d7 100644
--- a/arch/nds32/include/asm/types.h
+++ b/arch/nds32/include/asm/types.h
@@ -37,6 +37,20 @@ typedef unsigned long long __u64;
*/
#ifdef __KERNEL__
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+#else
+
typedef signed char s8;
typedef unsigned char u8;
@@ -49,6 +63,8 @@ typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
+#endif
+
#define BITS_PER_LONG 32
#include <stddef.h>
diff --git a/arch/nios2/include/asm/types.h b/arch/nios2/include/asm/types.h
index ea859c0..b3b25b3 100644
--- a/arch/nios2/include/asm/types.h
+++ b/arch/nios2/include/asm/types.h
@@ -35,6 +35,20 @@ __extension__ typedef unsigned long long __u64;
*/
#ifdef __KERNEL__
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+#else
+
typedef signed char s8;
typedef unsigned char u8;
@@ -47,6 +61,8 @@ typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
+#endif
+
#define BITS_PER_LONG 32
/* Dma addresses are 32-bits wide. */
diff --git a/arch/openrisc/include/asm/types.h b/arch/openrisc/include/asm/types.h
index 1fe00bf..8a232bc 100644
--- a/arch/openrisc/include/asm/types.h
+++ b/arch/openrisc/include/asm/types.h
@@ -41,6 +41,20 @@ __extension__ typedef unsigned long long __u64;
*/
#ifdef __KERNEL__
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+#else
+
typedef signed char s8;
typedef unsigned char u8;
@@ -53,6 +67,8 @@ typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
+#endif
+
#define BITS_PER_LONG 32
/* Dma addresses are 32-bits wide. */
diff --git a/arch/powerpc/include/asm/types.h b/arch/powerpc/include/asm/types.h
index b29ce79..cc76387 100644
--- a/arch/powerpc/include/asm/types.h
+++ b/arch/powerpc/include/asm/types.h
@@ -27,6 +27,20 @@ typedef struct {
/*
* These aren't exported outside the kernel to avoid name space clashes
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+#else
+
typedef signed char s8;
typedef unsigned char u8;
@@ -39,6 +53,8 @@ typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
+#endif
+
#define BITS_PER_LONG 32
#ifdef CONFIG_PHYS_64BIT
diff --git a/arch/sandbox/include/asm/types.h b/arch/sandbox/include/asm/types.h
index 42c09e2..a6a51b7 100644
--- a/arch/sandbox/include/asm/types.h
+++ b/arch/sandbox/include/asm/types.h
@@ -33,6 +33,18 @@ __extension__ typedef unsigned long long __u64;
*/
#ifdef __KERNEL__
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+#else
+
typedef signed char s8;
typedef unsigned char u8;
@@ -42,6 +54,8 @@ typedef unsigned short u16;
typedef signed int s32;
typedef unsigned int u32;
+#endif
+
#if !defined(CONFIG_USE_STDINT) || !defined(__INT64_TYPE__)
typedef signed long long s64;
typedef unsigned long long u64;
diff --git a/arch/sh/include/asm/types.h b/arch/sh/include/asm/types.h
index aed4a6e..7b005e4 100644
--- a/arch/sh/include/asm/types.h
+++ b/arch/sh/include/asm/types.h
@@ -35,6 +35,20 @@ __extension__ typedef unsigned long long __u64;
#ifndef __ASSEMBLY__
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+
+#else
typedef __signed__ char s8;
typedef unsigned char u8;
@@ -48,6 +62,8 @@ typedef unsigned int u32;
typedef __signed__ long long s64;
typedef unsigned long long u64;
+#endif
+
/* Dma addresses are 32-bits wide. */
typedef u32 dma_addr_t;
diff --git a/arch/sparc/include/asm/types.h b/arch/sparc/include/asm/types.h
index 72030b2..41c653a 100644
--- a/arch/sparc/include/asm/types.h
+++ b/arch/sparc/include/asm/types.h
@@ -34,6 +34,20 @@ typedef struct {
/*
* These aren't exported outside the kernel to avoid name space clashes
*/
+
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+typedef __INT64_TYPE__ s64;
+typedef __UINT64_TYPE__ u64;
+
typedef signed char s8;
typedef unsigned char u8;
diff --git a/arch/x86/include/asm/types.h b/arch/x86/include/asm/types.h
index e272c90..ca773de 100644
--- a/arch/x86/include/asm/types.h
+++ b/arch/x86/include/asm/types.h
@@ -27,6 +27,18 @@ __extension__ typedef unsigned long long __u64;
*/
#ifdef __KERNEL__
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ s8;
+typedef __UINT8_TYPE__ u8;
+
+typedef __INT16_TYPE__ s16;
+typedef __UINT16_TYPE__ u16;
+
+typedef __INT32_TYPE__ s32;
+typedef __UINT32_TYPE__ u32;
+
+#else
+
typedef signed char s8;
typedef unsigned char u8;
@@ -36,6 +48,8 @@ typedef unsigned short u16;
typedef signed int s32;
typedef unsigned int u32;
+#endif
+
#if !defined(CONFIG_USE_STDINT) || !defined(__INT64_TYPE__)
typedef signed long long s64;
typedef unsigned long long u64;
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 3/7] types: defined __s8, __16, __s32, __s64, __u8, __u16, __u32, __u64 based on compiler info (MAD)
2014-12-22 10:15 [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>) Masahiro Yamada
2014-12-22 10:15 ` [U-Boot] [PATCH 1/7] types.h: define (u)int8_t, (u)int16_t, (u)int32_t based on compiler info (MAD) Masahiro Yamada
2014-12-22 10:15 ` [U-Boot] [PATCH 2/7] types.h: define s8, s16, s32, s64, u8, u16, u32, u64 " Masahiro Yamada
@ 2014-12-22 10:15 ` Masahiro Yamada
2014-12-22 10:16 ` [U-Boot] [PATCH 4/7] Check if compiler-provided <stdint.h> and <inttypes.h> are available if CONFIG_USE_STDINT=y (MAD) Masahiro Yamada
` (4 subsequent siblings)
7 siblings, 0 replies; 17+ messages in thread
From: Masahiro Yamada @ 2014-12-22 10:15 UTC (permalink / raw)
To: u-boot
For the same reason as the last commit, keep the typedefs of
__s{8,16,32,64} and __u{8,16,32,64} compatible with other types.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Gabe Black <gabeblack@chromium.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Bill Richardson <wfrichar@google.com>
Cc: Tom Rini <trini@ti.com>
---
arch/arc/include/asm/types.h | 16 ++++++++++++++++
arch/arm/include/asm/types.h | 17 +++++++++++++++++
arch/avr32/include/asm/types.h | 16 ++++++++++++++++
arch/blackfin/include/asm/types.h | 16 ++++++++++++++++
arch/m68k/include/asm/types.h | 17 +++++++++++++++++
arch/microblaze/include/asm/types.h | 16 ++++++++++++++++
arch/mips/include/asm/types.h | 16 ++++++++++++++++
arch/nds32/include/asm/types.h | 16 +++++++++++++++-
arch/nios2/include/asm/types.h | 15 +++++++++++++++
arch/openrisc/include/asm/types.h | 15 +++++++++++++++
arch/powerpc/include/asm/types.h | 16 ++++++++++++++++
arch/sandbox/include/asm/types.h | 16 ++++++++++++++++
arch/sh/include/asm/types.h | 15 +++++++++++++++
arch/sparc/include/asm/types.h | 17 +++++++++++++++++
arch/x86/include/asm/types.h | 17 +++++++++++++++++
15 files changed, 240 insertions(+), 1 deletion(-)
diff --git a/arch/arc/include/asm/types.h b/arch/arc/include/asm/types.h
index daa1f30..5693e5f 100644
--- a/arch/arc/include/asm/types.h
+++ b/arch/arc/include/asm/types.h
@@ -14,6 +14,21 @@ typedef unsigned short umode_t;
* header files exported to user space
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
+
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -27,6 +42,7 @@ typedef unsigned int __u32;
typedef __signed__ long long __s64;
typedef unsigned long long __u64;
#endif
+#endif
/*
* These aren't exported outside the kernel to avoid name space clashes
diff --git a/arch/arm/include/asm/types.h b/arch/arm/include/asm/types.h
index 4ab7e6b..e24acc59 100644
--- a/arch/arm/include/asm/types.h
+++ b/arch/arm/include/asm/types.h
@@ -8,6 +8,21 @@ typedef unsigned short umode_t;
* header files exported to user space
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
+
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -22,6 +37,8 @@ __extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
#endif
+#endif
+
/*
* These aren't exported outside the kernel to avoid name space clashes
*/
diff --git a/arch/avr32/include/asm/types.h b/arch/avr32/include/asm/types.h
index fe355a2..032a765 100644
--- a/arch/avr32/include/asm/types.h
+++ b/arch/avr32/include/asm/types.h
@@ -10,6 +10,21 @@
typedef unsigned short umode_t;
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
+
/*
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
@@ -27,6 +42,7 @@ typedef unsigned int __u32;
__extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
#endif
+#endif
#endif /* __ASSEMBLY__ */
diff --git a/arch/blackfin/include/asm/types.h b/arch/blackfin/include/asm/types.h
index 5ed8462..8cae642 100644
--- a/arch/blackfin/include/asm/types.h
+++ b/arch/blackfin/include/asm/types.h
@@ -23,6 +23,20 @@ typedef unsigned short umode_t;
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -39,6 +53,8 @@ __extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
#endif
+#endif
+
/*
* These aren't exported outside the kernel to avoid name space clashes
*/
diff --git a/arch/m68k/include/asm/types.h b/arch/m68k/include/asm/types.h
index 51bf08d..83de4d5 100644
--- a/arch/m68k/include/asm/types.h
+++ b/arch/m68k/include/asm/types.h
@@ -5,6 +5,21 @@
typedef unsigned short umode_t;
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
+
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -19,6 +34,8 @@ __extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
#endif
+#endif
+
typedef struct {
__u32 u[4];
} __attribute__((aligned(16))) vector128;
diff --git a/arch/microblaze/include/asm/types.h b/arch/microblaze/include/asm/types.h
index 343bf84..afcd811 100644
--- a/arch/microblaze/include/asm/types.h
+++ b/arch/microblaze/include/asm/types.h
@@ -15,6 +15,20 @@ typedef unsigned short umode_t;
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -30,6 +44,8 @@ __extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
#endif
+#endif
+
/*
* These aren't exported outside the kernel to avoid name space clashes
*/
diff --git a/arch/mips/include/asm/types.h b/arch/mips/include/asm/types.h
index 9fc4a6d..f372c70 100644
--- a/arch/mips/include/asm/types.h
+++ b/arch/mips/include/asm/types.h
@@ -17,6 +17,20 @@ typedef unsigned short umode_t;
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -35,6 +49,8 @@ typedef __signed__ long long __s64;
typedef unsigned long long __u64;
#endif
+#endif
+
#endif /* __ASSEMBLY__ */
/*
diff --git a/arch/nds32/include/asm/types.h b/arch/nds32/include/asm/types.h
index e2c56d7..8416cef 100644
--- a/arch/nds32/include/asm/types.h
+++ b/arch/nds32/include/asm/types.h
@@ -17,6 +17,20 @@ typedef unsigned short umode_t;
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -31,7 +45,7 @@ typedef unsigned int __u32;
typedef __signed__ long long __s64;
typedef unsigned long long __u64;
#endif
-
+#endif
/*
* These aren't exported outside the kernel to avoid name space clashes
*/
diff --git a/arch/nios2/include/asm/types.h b/arch/nios2/include/asm/types.h
index b3b25b3..43c76cc 100644
--- a/arch/nios2/include/asm/types.h
+++ b/arch/nios2/include/asm/types.h
@@ -15,6 +15,20 @@ typedef unsigned short umode_t;
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -29,6 +43,7 @@ typedef unsigned int __u32;
__extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
#endif
+#endif
/*
* These aren't exported outside the kernel to avoid name space clashes
diff --git a/arch/openrisc/include/asm/types.h b/arch/openrisc/include/asm/types.h
index 8a232bc..069c8d6 100644
--- a/arch/openrisc/include/asm/types.h
+++ b/arch/openrisc/include/asm/types.h
@@ -21,6 +21,20 @@ typedef unsigned short umode_t;
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -35,6 +49,7 @@ typedef unsigned int __u32;
__extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
#endif
+#endif
/*
* These aren't exported outside the kernel to avoid name space clashes
diff --git a/arch/powerpc/include/asm/types.h b/arch/powerpc/include/asm/types.h
index cc76387..71868ef 100644
--- a/arch/powerpc/include/asm/types.h
+++ b/arch/powerpc/include/asm/types.h
@@ -5,6 +5,21 @@
typedef unsigned short umode_t;
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
+
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -18,6 +33,7 @@ typedef unsigned int __u32;
__extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
#endif
+#endif
typedef struct {
__u32 u[4];
diff --git a/arch/sandbox/include/asm/types.h b/arch/sandbox/include/asm/types.h
index a6a51b7..1bb168c 100644
--- a/arch/sandbox/include/asm/types.h
+++ b/arch/sandbox/include/asm/types.h
@@ -13,6 +13,20 @@ typedef unsigned short umode_t;
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -28,6 +42,8 @@ __extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
#endif
+#endif
+
/*
* These aren't exported outside the kernel to avoid name space clashes
*/
diff --git a/arch/sh/include/asm/types.h b/arch/sh/include/asm/types.h
index 7b005e4..eb47b0f 100644
--- a/arch/sh/include/asm/types.h
+++ b/arch/sh/include/asm/types.h
@@ -9,6 +9,20 @@ typedef unsigned short umode_t;
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
* header files exported to user space
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -23,6 +37,7 @@ typedef unsigned int __u32;
__extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
#endif
+#endif
#endif /* __ASSEMBLY__ */
diff --git a/arch/sparc/include/asm/types.h b/arch/sparc/include/asm/types.h
index 41c653a..79484c5 100644
--- a/arch/sparc/include/asm/types.h
+++ b/arch/sparc/include/asm/types.h
@@ -12,6 +12,21 @@
typedef unsigned short umode_t;
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
+
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -26,6 +41,8 @@ typedef __signed__ long long __s64;
typedef unsigned long long __u64;
#endif
+#endif
+
typedef struct {
__u32 u[4];
} __attribute__((aligned(16))) vector128;
diff --git a/arch/x86/include/asm/types.h b/arch/x86/include/asm/types.h
index ca773de..88c6645 100644
--- a/arch/x86/include/asm/types.h
+++ b/arch/x86/include/asm/types.h
@@ -8,6 +8,21 @@ typedef unsigned short umode_t;
* header files exported to user space
*/
+#if defined(CONFIG_USE_STDINT)
+typedef __INT8_TYPE__ __s8;
+typedef __UINT8_TYPE__ __u8;
+
+typedef __INT16_TYPE__ __s16;
+typedef __UINT16_TYPE__ __u16;
+
+typedef __INT32_TYPE__ __s32;
+typedef __UINT32_TYPE__ __u32;
+
+typedef __INT64_TYPE__ __s64;
+typedef __UINT64_TYPE__ __u64;
+
+#else
+
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -22,6 +37,8 @@ __extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
#endif
+#endif
+
/*
* These aren't exported outside the kernel to avoid name space clashes
*/
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 4/7] Check if compiler-provided <stdint.h> and <inttypes.h> are available if CONFIG_USE_STDINT=y (MAD)
2014-12-22 10:15 [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>) Masahiro Yamada
` (2 preceding siblings ...)
2014-12-22 10:15 ` [U-Boot] [PATCH 3/7] types: defined __s8, __16, __s32, __s64, __u8, __u16, __u32, __u64 " Masahiro Yamada
@ 2014-12-22 10:16 ` Masahiro Yamada
2014-12-23 4:46 ` Simon Glass
2014-12-22 10:16 ` [U-Boot] [PATCH 5/7] Replace "llx" with PRIx64 to fix warnings on sandbox (MAD) Masahiro Yamada
` (3 subsequent siblings)
7 siblings, 1 reply; 17+ messages in thread
From: Masahiro Yamada @ 2014-12-22 10:16 UTC (permalink / raw)
To: u-boot
CONFIG_USE_STDINT was introduced to use compiler-provided types for
fixed-width variables.
This must be consistent everywhere to avoid warnings/errors
including printf() and friends.
Assume the code below
uint32_t foo;
printf("foo= %x\n", foo);
If <stdint.h> is included, uint32_t is defined by the compiler.
The code above only works on compilers that define "uint32_t"
as "unsigned int". Actually there exist compilers that define
"uint32_t" as "unsigned long".
Going forward, to print out fixed-width variables, we always have
to use PRIxN like this
uint32_t foo;
printf("foo= " PRIx32 "\n", foo);
Notice,
- Typedefs ( uint32_t, int32_t etc.) are provided by <stdint.h>
- Printf formats ( PRIx32, PRId32 etc.) are provided by <inttypes.h>
Also notice, it makes sense only when <stdint.h> and <inttypes.h> are provided by
the same compiler.
^^^^^^^^^^^^^^^^^^
Commit 4166ecb24 (Add some standard headers external code might need) added
hard-coded include/inttypes.h.
It provides hard-coded PRIx32 "x", but it does not make sense.
Some compiler's <stdint.h> define "uint32_t" as "unsigned long"
and expect the format string "lx" to print out "uint32_t" variable.
This commit:
- Adds scripts/gcc-have-stdint.sh to check if the compiler is
providing both <stdint.h> and <inttypes.h>
- Modifies config.mk to error-out if CONFIG_USE_STDINT is enabled,
but <stdint.h> or <inttyps.h> is missing
- Modifies the top Makefile to delete "-nostdinc" option and allow to
include compiler-provided <inttypes.h>
- Remove hard-coded include/inttypes.h
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Gabe Black <gabeblack@chromium.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Bill Richardson <wfrichar@google.com>
Cc: Tom Rini <trini@ti.com>
---
Makefile | 2 +-
config.mk | 12 ++
include/inttypes.h | 287 ---------------------------------------------
scripts/gcc-have-stdint.sh | 21 ++++
4 files changed, 34 insertions(+), 288 deletions(-)
delete mode 100644 include/inttypes.h
create mode 100755 scripts/gcc-have-stdint.sh
diff --git a/Makefile b/Makefile
index 1560bff..b44e504 100644
--- a/Makefile
+++ b/Makefile
@@ -591,7 +591,7 @@ UBOOTINCLUDE := \
-I$(srctree)/arch/$(ARCH)/include \
-include $(srctree)/include/linux/kconfig.h
-NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
+NOSTDINC_FLAGS += -isystem $(shell $(CC) -print-file-name=include)
CHECKFLAGS += $(NOSTDINC_FLAGS)
# FIX ME
diff --git a/config.mk b/config.mk
index 64c2951..91f60d4 100644
--- a/config.mk
+++ b/config.mk
@@ -64,6 +64,18 @@ ifneq ($(USE_STDINT),)
PLATFORM_CPPFLAGS += -DCONFIG_USE_STDINT
endif
+ifeq ($(CONFIG_USE_STDINT),y)
+HAVE_STDINT := $(shell $(CONFIG_SHELL) scripts/gcc-have-stdint.sh $(CC))
+
+ifeq ($(HAVE_STDINT),)
+$(warning you have enabled CONFIG_USE_STDINT (or given USE_STDINT=1 from the command line))
+$(warning but your compiler is not providing <stdint.h> or <inttypes.h>.)
+$(error check your compiler.)
+
+endif
+
+endif
+
#########################################################################
RELFLAGS := $(PLATFORM_RELFLAGS)
diff --git a/include/inttypes.h b/include/inttypes.h
deleted file mode 100644
index e2e569d..0000000
--- a/include/inttypes.h
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Copyright (C) 1997-2001, 2004, 2007 Free Software Foundation, Inc.
- *
- * This file is taken from the GNU C Library v2.15, with the unimplemented
- * functions removed and a few style fixes.
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-/*
- * ISO C99: 7.8 Format conversion of integer types <inttypes.h>
- */
-
-#ifndef _INTTYPES_H
-#define _INTTYPES_H 1
-
-#include <linux/compiler.h>
-
-/* Get a definition for wchar_t. But we must not define wchar_t itself. */
-#ifndef ____gwchar_t_defined
-# ifdef __cplusplus
-# define __gwchar_t wchar_t
-# elif defined __WCHAR_TYPE__
-typedef __WCHAR_TYPE__ __gwchar_t;
-# else
-# define __need_wchar_t
-# include <stddef.h>
-typedef wchar_t __gwchar_t;
-# endif
-# define ____gwchar_t_defined 1
-#endif
-
-
-/* The ISO C99 standard specifies that these macros must only be
- defined if explicitly requested. */
-#if !defined __cplusplus || defined __STDC_FORMAT_MACROS
-
-#ifdef CONFIG_USE_STDINT
-# if __WORDSIZE == 64
-# define __PRI64_PREFIX "l"
-# define __PRIPTR_PREFIX "l"
-# else
-# define __PRI64_PREFIX "ll"
-# define __PRIPTR_PREFIX
-# endif
-#else
-/* linux/types.h always uses long long for 64-bit and long for uintptr_t */
-# define __PRI64_PREFIX "ll"
-# define __PRIPTR_PREFIX "l"
-#endif
-
-/* Macros for printing format specifiers. */
-
-/* Decimal notation. */
-# define PRId8 "d"
-# define PRId16 "d"
-# define PRId32 "d"
-# define PRId64 __PRI64_PREFIX "d"
-
-# define PRIdLEAST8 "d"
-# define PRIdLEAST16 "d"
-# define PRIdLEAST32 "d"
-# define PRIdLEAST64 __PRI64_PREFIX "d"
-
-# define PRIdFAST8 "d"
-# define PRIdFAST16 __PRIPTR_PREFIX "d"
-# define PRIdFAST32 __PRIPTR_PREFIX "d"
-# define PRIdFAST64 __PRI64_PREFIX "d"
-
-
-# define PRIi8 "i"
-# define PRIi16 "i"
-# define PRIi32 "i"
-# define PRIi64 __PRI64_PREFIX "i"
-
-# define PRIiLEAST8 "i"
-# define PRIiLEAST16 "i"
-# define PRIiLEAST32 "i"
-# define PRIiLEAST64 __PRI64_PREFIX "i"
-
-# define PRIiFAST8 "i"
-# define PRIiFAST16 __PRIPTR_PREFIX "i"
-# define PRIiFAST32 __PRIPTR_PREFIX "i"
-# define PRIiFAST64 __PRI64_PREFIX "i"
-
-/* Octal notation. */
-# define PRIo8 "o"
-# define PRIo16 "o"
-# define PRIo32 "o"
-# define PRIo64 __PRI64_PREFIX "o"
-
-# define PRIoLEAST8 "o"
-# define PRIoLEAST16 "o"
-# define PRIoLEAST32 "o"
-# define PRIoLEAST64 __PRI64_PREFIX "o"
-
-# define PRIoFAST8 "o"
-# define PRIoFAST16 __PRIPTR_PREFIX "o"
-# define PRIoFAST32 __PRIPTR_PREFIX "o"
-# define PRIoFAST64 __PRI64_PREFIX "o"
-
-/* Unsigned integers. */
-# define PRIu8 "u"
-# define PRIu16 "u"
-# define PRIu32 "u"
-# define PRIu64 __PRI64_PREFIX "u"
-
-# define PRIuLEAST8 "u"
-# define PRIuLEAST16 "u"
-# define PRIuLEAST32 "u"
-# define PRIuLEAST64 __PRI64_PREFIX "u"
-
-# define PRIuFAST8 "u"
-# define PRIuFAST16 __PRIPTR_PREFIX "u"
-# define PRIuFAST32 __PRIPTR_PREFIX "u"
-# define PRIuFAST64 __PRI64_PREFIX "u"
-
-/* lowercase hexadecimal notation. */
-# define PRIx8 "x"
-# define PRIx16 "x"
-# define PRIx32 "x"
-# define PRIx64 __PRI64_PREFIX "x"
-
-# define PRIxLEAST8 "x"
-# define PRIxLEAST16 "x"
-# define PRIxLEAST32 "x"
-# define PRIxLEAST64 __PRI64_PREFIX "x"
-
-# define PRIxFAST8 "x"
-# define PRIxFAST16 __PRIPTR_PREFIX "x"
-# define PRIxFAST32 __PRIPTR_PREFIX "x"
-# define PRIxFAST64 __PRI64_PREFIX "x"
-
-/* UPPERCASE hexadecimal notation. */
-# define PRIX8 "X"
-# define PRIX16 "X"
-# define PRIX32 "X"
-# define PRIX64 __PRI64_PREFIX "X"
-
-# define PRIXLEAST8 "X"
-# define PRIXLEAST16 "X"
-# define PRIXLEAST32 "X"
-# define PRIXLEAST64 __PRI64_PREFIX "X"
-
-# define PRIXFAST8 "X"
-# define PRIXFAST16 __PRIPTR_PREFIX "X"
-# define PRIXFAST32 __PRIPTR_PREFIX "X"
-# define PRIXFAST64 __PRI64_PREFIX "X"
-
-
-/* Macros for printing `intmax_t' and `uintmax_t'. */
-# define PRIdMAX __PRI64_PREFIX "d"
-# define PRIiMAX __PRI64_PREFIX "i"
-# define PRIoMAX __PRI64_PREFIX "o"
-# define PRIuMAX __PRI64_PREFIX "u"
-# define PRIxMAX __PRI64_PREFIX "x"
-# define PRIXMAX __PRI64_PREFIX "X"
-
-
-/* Macros for printing `intptr_t' and `uintptr_t'. */
-# define PRIdPTR __PRIPTR_PREFIX "d"
-# define PRIiPTR __PRIPTR_PREFIX "i"
-# define PRIoPTR __PRIPTR_PREFIX "o"
-# define PRIuPTR __PRIPTR_PREFIX "u"
-# define PRIxPTR __PRIPTR_PREFIX "x"
-# define PRIXPTR __PRIPTR_PREFIX "X"
-
-
-/* Macros for scanning format specifiers. */
-
-/* Signed decimal notation. */
-# define SCNd8 "hhd"
-# define SCNd16 "hd"
-# define SCNd32 "d"
-# define SCNd64 __PRI64_PREFIX "d"
-
-# define SCNdLEAST8 "hhd"
-# define SCNdLEAST16 "hd"
-# define SCNdLEAST32 "d"
-# define SCNdLEAST64 __PRI64_PREFIX "d"
-
-# define SCNdFAST8 "hhd"
-# define SCNdFAST16 __PRIPTR_PREFIX "d"
-# define SCNdFAST32 __PRIPTR_PREFIX "d"
-# define SCNdFAST64 __PRI64_PREFIX "d"
-
-/* Signed decimal notation. */
-# define SCNi8 "hhi"
-# define SCNi16 "hi"
-# define SCNi32 "i"
-# define SCNi64 __PRI64_PREFIX "i"
-
-# define SCNiLEAST8 "hhi"
-# define SCNiLEAST16 "hi"
-# define SCNiLEAST32 "i"
-# define SCNiLEAST64 __PRI64_PREFIX "i"
-
-# define SCNiFAST8 "hhi"
-# define SCNiFAST16 __PRIPTR_PREFIX "i"
-# define SCNiFAST32 __PRIPTR_PREFIX "i"
-# define SCNiFAST64 __PRI64_PREFIX "i"
-
-/* Unsigned decimal notation. */
-# define SCNu8 "hhu"
-# define SCNu16 "hu"
-# define SCNu32 "u"
-# define SCNu64 __PRI64_PREFIX "u"
-
-# define SCNuLEAST8 "hhu"
-# define SCNuLEAST16 "hu"
-# define SCNuLEAST32 "u"
-# define SCNuLEAST64 __PRI64_PREFIX "u"
-
-# define SCNuFAST8 "hhu"
-# define SCNuFAST16 __PRIPTR_PREFIX "u"
-# define SCNuFAST32 __PRIPTR_PREFIX "u"
-# define SCNuFAST64 __PRI64_PREFIX "u"
-
-/* Octal notation. */
-# define SCNo8 "hho"
-# define SCNo16 "ho"
-# define SCNo32 "o"
-# define SCNo64 __PRI64_PREFIX "o"
-
-# define SCNoLEAST8 "hho"
-# define SCNoLEAST16 "ho"
-# define SCNoLEAST32 "o"
-# define SCNoLEAST64 __PRI64_PREFIX "o"
-
-# define SCNoFAST8 "hho"
-# define SCNoFAST16 __PRIPTR_PREFIX "o"
-# define SCNoFAST32 __PRIPTR_PREFIX "o"
-# define SCNoFAST64 __PRI64_PREFIX "o"
-
-/* Hexadecimal notation. */
-# define SCNx8 "hhx"
-# define SCNx16 "hx"
-# define SCNx32 "x"
-# define SCNx64 __PRI64_PREFIX "x"
-
-# define SCNxLEAST8 "hhx"
-# define SCNxLEAST16 "hx"
-# define SCNxLEAST32 "x"
-# define SCNxLEAST64 __PRI64_PREFIX "x"
-
-# define SCNxFAST8 "hhx"
-# define SCNxFAST16 __PRIPTR_PREFIX "x"
-# define SCNxFAST32 __PRIPTR_PREFIX "x"
-# define SCNxFAST64 __PRI64_PREFIX "x"
-
-
-/* Macros for scanning `intmax_t' and `uintmax_t'. */
-# define SCNdMAX __PRI64_PREFIX "d"
-# define SCNiMAX __PRI64_PREFIX "i"
-# define SCNoMAX __PRI64_PREFIX "o"
-# define SCNuMAX __PRI64_PREFIX "u"
-# define SCNxMAX __PRI64_PREFIX "x"
-
-/* Macros for scaning `intptr_t' and `uintptr_t'. */
-# define SCNdPTR __PRIPTR_PREFIX "d"
-# define SCNiPTR __PRIPTR_PREFIX "i"
-# define SCNoPTR __PRIPTR_PREFIX "o"
-# define SCNuPTR __PRIPTR_PREFIX "u"
-# define SCNxPTR __PRIPTR_PREFIX "x"
-
-#endif /* C++ && format macros */
-
-
-#if __WORDSIZE == 64
-
-/* We have to define the `uintmax_t' type using `ldiv_t'. */
-typedef struct {
- long int quot; /* Quotient. */
- long int rem; /* Remainder. */
-} imaxdiv_t;
-
-#else
-
-/* We have to define the `uintmax_t' type using `lldiv_t'. */
-typedef struct {
- long long int quot; /* Quotient. */
- long long int rem; /* Remainder. */
-} imaxdiv_t;
-
-#endif
-
-#endif /* inttypes.h */
diff --git a/scripts/gcc-have-stdint.sh b/scripts/gcc-have-stdint.sh
new file mode 100755
index 0000000..555ede6
--- /dev/null
+++ b/scripts/gcc-have-stdint.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# Test if the compiler has <stdint.h> and <inttypes.>
+# Kernel.org toolchains do not provide them.
+#
+# CONFIG_USE_STDINT makes sense only when
+# both <stdint.h> and <inttypes.h> are provided by the compiler.
+#
+TMP="$$"
+
+cat <<END | $@ -Werror -x c - -c -o $TMP >/dev/null 2>&1 && echo "y"
+#include <stdint.h>
+#include <inttypes.h>
+
+int main(void)
+{
+ return 0;
+}
+END
+
+rm -f $TMP
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 5/7] Replace "llx" with PRIx64 to fix warnings on sandbox (MAD)
2014-12-22 10:15 [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>) Masahiro Yamada
` (3 preceding siblings ...)
2014-12-22 10:16 ` [U-Boot] [PATCH 4/7] Check if compiler-provided <stdint.h> and <inttypes.h> are available if CONFIG_USE_STDINT=y (MAD) Masahiro Yamada
@ 2014-12-22 10:16 ` Masahiro Yamada
2014-12-22 12:39 ` Wolfgang Denk
2014-12-23 4:47 ` Simon Glass
2014-12-22 10:16 ` [U-Boot] [PATCH 6/7] Use PRIx32 etc. to print out 32bit-width variable (MAD) Masahiro Yamada
` (2 subsequent siblings)
7 siblings, 2 replies; 17+ messages in thread
From: Masahiro Yamada @ 2014-12-22 10:16 UTC (permalink / raw)
To: u-boot
These must be fixed to fix sandbox at least.
(Horrible things are happening on the other boards, of course.)
If we include <stdint.h>, we do not know 64bit-types are defined
as "unsigned long long" or "unsigned long".
(As for my 64bit GCC, __UINT64_TYPE__ is "long unsigned int")
We cannot hard-code "%llx" in printf() or friends anymore.
We must always use PRIx64 etc.
(As Documentation/printk-formats.txt clearly says, Linux Kernel
always uses "%llx" to print 64bit variables, and U-Boot used to do that.
But we lost the convenience by commit 0d296cc and commit 4166ecb24)
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Gabe Black <gabeblack@chromium.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Bill Richardson <wfrichar@google.com>
Cc: Tom Rini <trini@ti.com>
---
common/fdt_support.c | 2 +-
disk/part_efi.c | 12 ++++++------
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/common/fdt_support.c b/common/fdt_support.c
index 8266bca..6211a82 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -1533,7 +1533,7 @@ int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
if (ret < 0)
return ret;
- snprintf(name, sizeof(name), "framebuffer@%llx", base_address);
+ snprintf(name, sizeof(name), "framebuffer@%" PRIx64, base_address);
ret = fdt_set_name(fdt, node, name);
if (ret < 0)
return ret;
diff --git a/disk/part_efi.c b/disk/part_efi.c
index efed58f..3fe280d 100644
--- a/disk/part_efi.c
+++ b/disk/part_efi.c
@@ -113,7 +113,7 @@ void print_part_efi(block_dev_desc_t * dev_desc)
if (!is_pte_valid(&gpt_pte[i]))
break;
- printf("%3d\t0x%08llx\t0x%08llx\t\"%s\"\n", (i + 1),
+ printf("%3d\t0x%08" PRIx64 "\t0x%08" PRIx64 "\t\"%s\"\n", (i + 1),
le64_to_cpu(gpt_pte[i].starting_lba),
le64_to_cpu(gpt_pte[i].ending_lba),
print_efiname(&gpt_pte[i]));
@@ -530,7 +530,7 @@ static int is_gpt_valid(block_dev_desc_t *dev_desc, u64 lba,
/* Check the GPT header signature */
if (le64_to_cpu(pgpt_head->signature) != GPT_HEADER_SIGNATURE) {
printf("GUID Partition Table Header signature is wrong:"
- "0x%llX != 0x%llX\n",
+ "0x%" PRIX64 " != 0x%llX\n",
le64_to_cpu(pgpt_head->signature),
GPT_HEADER_SIGNATURE);
return 0;
@@ -554,7 +554,7 @@ static int is_gpt_valid(block_dev_desc_t *dev_desc, u64 lba,
/* Check that the my_lba entry points to the LBA that contains the GPT */
if (le64_to_cpu(pgpt_head->my_lba) != lba) {
- printf("GPT: my_lba incorrect: %llX != %" PRIX64 "\n",
+ printf("GPT: my_lba incorrect: %" PRIX64 " != %" PRIX64 "\n",
le64_to_cpu(pgpt_head->my_lba),
lba);
return 0;
@@ -563,17 +563,17 @@ static int is_gpt_valid(block_dev_desc_t *dev_desc, u64 lba,
/* Check the first_usable_lba and last_usable_lba are within the disk. */
lastlba = (u64)dev_desc->lba;
if (le64_to_cpu(pgpt_head->first_usable_lba) > lastlba) {
- printf("GPT: first_usable_lba incorrect: %llX > %" PRIX64 "\n",
+ printf("GPT: first_usable_lba incorrect: %" PRIX64 " > %" PRIX64 "\n",
le64_to_cpu(pgpt_head->first_usable_lba), lastlba);
return 0;
}
if (le64_to_cpu(pgpt_head->last_usable_lba) > lastlba) {
- printf("GPT: last_usable_lba incorrect: %llX > %" PRIX64 "\n",
+ printf("GPT: last_usable_lba incorrect: %" PRIx64 " > %" PRIX64 "\n",
le64_to_cpu(pgpt_head->last_usable_lba), lastlba);
return 0;
}
- debug("GPT: first_usable_lba: %llX last_usable_lba %llX last lba %"
+ debug("GPT: first_usable_lba: %" PRIx64 "last_usable_lba %" PRIX64 " last lba %"
PRIX64 "\n", le64_to_cpu(pgpt_head->first_usable_lba),
le64_to_cpu(pgpt_head->last_usable_lba), lastlba);
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 6/7] Use PRIx32 etc. to print out 32bit-width variable (MAD)
2014-12-22 10:15 [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>) Masahiro Yamada
` (4 preceding siblings ...)
2014-12-22 10:16 ` [U-Boot] [PATCH 5/7] Replace "llx" with PRIx64 to fix warnings on sandbox (MAD) Masahiro Yamada
@ 2014-12-22 10:16 ` Masahiro Yamada
2014-12-23 4:48 ` Simon Glass
2014-12-22 10:16 ` [U-Boot] [PATCH 7/7] Make BITS_PER_LONG compiler-dependent (MAD) Masahiro Yamada
2014-12-22 12:43 ` [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>) Wolfgang Denk
7 siblings, 1 reply; 17+ messages in thread
From: Masahiro Yamada @ 2014-12-22 10:16 UTC (permalink / raw)
To: u-boot
If <stdint.h> is included, the definition of fixed-width types
are compiler-dependent.
For example, some compilers use "unsigned long" and some compilers
use "unsigned int" for 32bit width typedefs.
That means, we can no longer use hard-code "%x" or "%d"
to print 32bit-width variables.
We use printf() everywhere to print 32bit variables.
This commit only fixes fs/fat/fat.c because I cannot imagine
how many days I have to spend to eliminate all the warnings.
(Of course, I do not think we should do such ridiculous things.)
Just in case, I put the warnings I got for Panda board below:
$ make USE_STDINT=1 CROSS_COMPILE=arm-none-eabi- omap4_panda_defconfig all
#
# configuration written to .config
#
#
# configuration written to spl/.config
#
scripts/kconfig/conf --silentoldconfig Kconfig
scripts/kconfig/conf --silentoldconfig Kconfig
CHK include/config.h
GEN include/autoconf.mk
GEN include/autoconf.mk.dep
GEN spl/include/autoconf.mk
CHK include/config/uboot.release
UPD include/config/uboot.release
CHK include/generated/version_autogenerated.h
UPD include/generated/version_autogenerated.h
CHK include/generated/timestamp_autogenerated.h
UPD include/generated/timestamp_autogenerated.h
CC lib/asm-offsets.s
GEN include/generated/generic-asm-offsets.h
CC arch/arm/lib/asm-offsets.s
GEN include/generated/asm-offsets.h
LD arch/arm/cpu/built-in.o
CC arch/arm/cpu/armv7/cache_v7.o
arch/arm/cpu/armv7/cache_v7.c: In function 'v7_dcache_inval_range':
arch/arm/cpu/armv7/cache_v7.c:174:4: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/cache_v7.c:185:4: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
CC arch/arm/cpu/armv7/cpu.o
CC arch/arm/cpu/armv7/syslib.o
AS arch/arm/cpu/armv7/lowlevel_init.o
CC arch/arm/cpu/armv7/omap-common/reset.o
CC arch/arm/cpu/armv7/omap-common/timer.o
arch/arm/cpu/armv7/omap-common/timer.c: In function 'timer_init':
arch/arm/cpu/armv7/omap-common/timer.c:39:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/timer.c:41:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/timer.c:45:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/timer.c: In function '__udelay':
arch/arm/cpu/armv7/omap-common/timer.c:64:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/timer.c:67:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/timer.c: In function 'get_timer_masked':
arch/arm/cpu/armv7/omap-common/timer.c:79:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
CC arch/arm/cpu/armv7/omap-common/utils.o
CC arch/arm/cpu/armv7/omap-common/hwinit-common.o
In file included from arch/arm/cpu/armv7/omap-common/hwinit-common.c:18:0:
./arch/arm/include/asm/emif.h: In function 'get_emif_rev':
./arch/arm/include/asm/emif.h:1165:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
./arch/arm/include/asm/emif.h: In function 'emif_sdram_type':
./arch/arm/include/asm/emif.h:1179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/hwinit-common.c: In function 'omap_rev_string':
arch/arm/cpu/armv7/omap-common/hwinit-common.c:73:9: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/hwinit-common.c:73:9: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/hwinit-common.c:73:9: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/hwinit-common.c: In function 'wait_for_command_complete':
arch/arm/cpu/armv7/omap-common/hwinit-common.c:159:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/hwinit-common.c: In function 'watchdog_init':
arch/arm/cpu/armv7/omap-common/hwinit-common.c:171:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/hwinit-common.c:173:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
CC arch/arm/cpu/armv7/omap-common/clocks-common.o
In file included from arch/arm/cpu/armv7/omap-common/clocks-common.c:24:0:
./arch/arm/include/asm/emif.h: In function 'get_emif_rev':
./arch/arm/include/asm/emif.h:1165:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
./arch/arm/include/asm/emif.h: In function 'emif_sdram_type':
./arch/arm/include/asm/emif.h:1179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'setup_post_dividers':
arch/arm/cpu/armv7/omap-common/clocks-common.c:80:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:82:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:84:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:86:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:88:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:90:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:92:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:94:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:96:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:98:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'do_bypass_dpll':
arch/arm/cpu/armv7/omap-common/clocks-common.c:105:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:105:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'do_lock_dpll':
arch/arm/cpu/armv7/omap-common/clocks-common.c:125:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:125:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'check_for_lock':
arch/arm/cpu/armv7/omap-common/clocks-common.c:144:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'do_setup_dpll':
arch/arm/cpu/armv7/omap-common/clocks-common.c:220:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:252:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'configure_mpu_dpll':
arch/arm/cpu/armv7/omap-common/clocks-common.c:332:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:332:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
CC arch/arm/cpu/armv7/omap-common/emif-common.o
In file included from arch/arm/cpu/armv7/omap-common/emif-common.c:13:0:
./arch/arm/include/asm/emif.h: In function 'get_emif_rev':
./arch/arm/include/asm/emif.h:1165:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
./arch/arm/include/asm/emif.h: In function 'emif_sdram_type':
./arch/arm/include/asm/emif.h:1179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'set_lpmode_selfrefresh':
arch/arm/cpu/armv7/omap-common/emif-common.c:27:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:31:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:34:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'get_mr':
arch/arm/cpu/armv7/omap-common/emif-common.c:59:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:61:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:63:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:64:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c:64:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c:64:2: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c:64:2: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'set_mr':
arch/arm/cpu/armv7/omap-common/emif-common.c:79:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:80:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'emif_reset_phy':
arch/arm/cpu/armv7/omap-common/emif-common.c:88:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:90:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'lpddr2_init':
arch/arm/cpu/armv7/omap-common/emif-common.c:129:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:129:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:135:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:135:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:141:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:142:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:150:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:151:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:154:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:154:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'emif_update_timings':
arch/arm/cpu/armv7/omap-common/emif-common.c:166:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:167:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:168:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:169:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:172:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:174:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:175:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:177:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:178:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:180:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:183:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:186:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:189:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'omap5_ddr3_leveling':
arch/arm/cpu/armv7/omap-common/emif-common.c:199:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:211:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:214:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:218:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:222:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:225:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:235:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:241:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'ddr3_init':
arch/arm/cpu/armv7/omap-common/emif-common.c:261:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:264:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:265:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:266:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:268:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:269:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:277:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:278:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:280:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:281:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:286:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'do_sdram_init':
arch/arm/cpu/armv7/omap-common/emif-common.c:1010:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c:1082:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'emif_post_init_config':
arch/arm/cpu/armv7/omap-common/emif-common.c:1096:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'dmm_init':
arch/arm/cpu/armv7/omap-common/emif-common.c:1186:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1187:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1188:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1189:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1191:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1193:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1195:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1197:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1204:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1206:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1208:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1210:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'do_bug0039_workaround':
arch/arm/cpu/armv7/omap-common/emif-common.c:1270:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'sdram_init':
arch/arm/cpu/armv7/omap-common/emif-common.c:1303:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c:1345:5: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c:1345:5: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
CC arch/arm/cpu/armv7/omap-common/vc.o
CC arch/arm/cpu/armv7/omap-common/abb.o
CC arch/arm/cpu/armv7/omap-common/omap-cache.o
CC arch/arm/cpu/armv7/omap-common/boot-common.o
AS arch/arm/cpu/armv7/omap-common/lowlevel_init.o
CC arch/arm/cpu/armv7/omap-common/mem-common.o
arch/arm/cpu/armv7/omap-common/mem-common.c: In function 'enable_gpmc_cs_config':
arch/arm/cpu/armv7/omap-common/mem-common.c:56:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:59:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:60:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:61:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:62:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:63:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:64:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:66:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c: In function 'gpmc_init':
arch/arm/cpu/armv7/omap-common/mem-common.c:126:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:127:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:128:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:130:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:134:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:139:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
LD arch/arm/cpu/armv7/omap-common/built-in.o
CC arch/arm/cpu/armv7/omap4/sdram_elpida.o
In file included from arch/arm/cpu/armv7/omap4/sdram_elpida.c:13:0:
./arch/arm/include/asm/emif.h: In function 'get_emif_rev':
./arch/arm/include/asm/emif.h:1165:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
./arch/arm/include/asm/emif.h: In function 'emif_sdram_type':
./arch/arm/include/asm/emif.h:1179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
CC arch/arm/cpu/armv7/omap4/hwinit.o
In file included from arch/arm/cpu/armv7/omap4/hwinit.c:19:0:
./arch/arm/include/asm/emif.h: In function 'get_emif_rev':
./arch/arm/include/asm/emif.h:1165:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
./arch/arm/include/asm/emif.h: In function 'emif_sdram_type':
./arch/arm/include/asm/emif.h:1179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
CC arch/arm/cpu/armv7/omap4/emif.o
In file included from arch/arm/cpu/armv7/omap4/emif.c:13:0:
./arch/arm/include/asm/emif.h: In function 'get_emif_rev':
./arch/arm/include/asm/emif.h:1165:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
./arch/arm/include/asm/emif.h: In function 'emif_sdram_type':
./arch/arm/include/asm/emif.h:1179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
CC arch/arm/cpu/armv7/omap4/prcm-regs.o
CC arch/arm/cpu/armv7/omap4/hw_data.o
LD arch/arm/cpu/armv7/omap4/built-in.o
LD arch/arm/cpu/armv7/built-in.o
AS arch/arm/cpu/armv7/start.o
AS arch/arm/lib/vectors.o
AS arch/arm/lib/crt0.o
AS arch/arm/lib/relocate.o
CC arch/arm/lib/bootm-fdt.o
CC arch/arm/lib/bootm.o
CC arch/arm/lib/cache-pl310.o
arch/arm/lib/cache-pl310.c: In function 'pl310_cache_sync':
arch/arm/lib/cache-pl310.c:19:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/lib/cache-pl310.c: In function 'pl310_background_op_all_ways':
arch/arm/lib/cache-pl310.c:26:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/lib/cache-pl310.c: In function 'v7_outer_cache_flush_range':
arch/arm/lib/cache-pl310.c:65:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/lib/cache-pl310.c: In function 'v7_outer_cache_inval_range':
arch/arm/lib/cache-pl310.c:82:4: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
arch/arm/lib/cache-pl310.c:93:4: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
arch/arm/lib/cache-pl310.c:99:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
CC arch/arm/lib/sections.o
CC arch/arm/lib/interrupts.o
CC arch/arm/lib/reset.o
CC arch/arm/lib/cache.o
CC arch/arm/lib/cache-cp15.o
LD arch/arm/lib/built-in.o
AR arch/arm/lib/lib.a
CC arch/arm/lib/eabi_compat.o
CC board/ti/panda/panda.o
board/ti/panda/panda.c: In function 'misc_init_r':
board/ti/panda/panda.c:211:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
board/ti/panda/panda.c:221:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
board/ti/panda/panda.c:226:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
board/ti/panda/panda.c:236:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
board/ti/panda/panda.c:239:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
board/ti/panda/panda.c:248:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
LD board/ti/panda/built-in.o
CC common/main.o
CC common/exports.o
CC common/hash.o
CC common/cli_hush.o
CC common/autoboot.o
CC common/board_f.o
CC common/board_r.o
CC common/cmd_boot.o
CC common/cmd_bootm.o
CC common/bootm.o
CC common/bootm_os.o
CC common/cmd_help.o
CC common/cmd_version.o
CC common/env_attr.o
CC common/env_callback.o
CC common/env_flags.o
CC common/env_nowhere.o
CC common/cmd_source.o
CC common/cmd_bdinfo.o
CC common/cmd_console.o
CC common/cmd_echo.o
CC common/cmd_exit.o
CC common/cmd_ext4.o
CC common/cmd_ext2.o
CC common/cmd_fat.o
CC common/cmd_fdt.o
common/cmd_fdt.c: In function 'fdt_value_setenv':
common/cmd_fdt.c:60:3: warning: format '%X' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c: In function 'do_fdt':
common/cmd_fdt.c:138:11: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:193:11: warning: format '%X' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:473:32: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:475:10: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:475:10: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:477:10: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:479:10: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:481:10: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:482:3: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
common/cmd_fdt.c:484:10: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:487:5: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:490:5: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:493:5: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:539:6: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:539:6: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:539:6: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:539:6: warning: format '%x' expects argument of type 'unsigned int', but argument 6 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c: In function 'fdt_valid':
common/cmd_fdt.c:685:6: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c:691:6: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c: In function 'print_data':
common/cmd_fdt.c:883:6: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
common/cmd_fdt.c: In function 'fdt_print':
common/cmd_fdt.c:1015:5: warning: format '%X' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
CC common/fdt_support.o
common/fdt_support.c: In function 'of_bus_default_map':
common/fdt_support.c:975:2: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'u64' [-Wformat]
common/fdt_support.c:975:2: warning: format '%u' expects argument of type 'unsigned int', but argument 3 has type 'u64' [-Wformat]
common/fdt_support.c:975:2: warning: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'u64' [-Wformat]
common/fdt_support.c: In function 'of_translate_one':
common/fdt_support.c:1054:2: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'u64' [-Wformat]
common/fdt_support.c: In function 'fdt_verify_alias_address':
common/fdt_support.c:1385:10: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u64' [-Wformat]
common/fdt_support.c:1385:10: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'u64' [-Wformat]
common/fdt_support.c: In function 'fdt_setup_simplefb_node':
common/fdt_support.c:1536:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u64' [-Wformat]
CC common/cmd_fs.o
CC common/cmd_gpio.o
CC common/cmd_i2c.o
CC common/cmd_itest.o
CC common/cmd_load.o
CC common/cmd_mem.o
common/cmd_mem.c: In function 'mod_mem':
common/cmd_mem.c:1148:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
CC common/cmd_misc.o
CC common/cmd_mmc.o
common/cmd_mmc.c: In function 'do_mmc_read':
common/cmd_mmc.c:303:9: warning: format '%d' expects argument of type 'int', but argument 3 has type 'u32' [-Wformat]
common/cmd_mmc.c:303:9: warning: format '%d' expects argument of type 'int', but argument 4 has type 'u32' [-Wformat]
common/cmd_mmc.c:308:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
common/cmd_mmc.c: In function 'do_mmc_write':
common/cmd_mmc.c:331:9: warning: format '%d' expects argument of type 'int', but argument 3 has type 'u32' [-Wformat]
common/cmd_mmc.c:331:9: warning: format '%d' expects argument of type 'int', but argument 4 has type 'u32' [-Wformat]
common/cmd_mmc.c:338:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
common/cmd_mmc.c: In function 'do_mmc_erase':
common/cmd_mmc.c:359:9: warning: format '%d' expects argument of type 'int', but argument 3 has type 'u32' [-Wformat]
common/cmd_mmc.c:359:9: warning: format '%d' expects argument of type 'int', but argument 4 has type 'u32' [-Wformat]
common/cmd_mmc.c:366:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
CC common/cmd_net.o
CC common/cmd_pcmcia.o
CC common/cmd_spi.o
CC common/cmd_test.o
CC common/cmd_usb.o
CC common/usb.o
CC common/usb_hub.o
CC common/usb_storage.o
CC common/cmd_ximg.o
CC common/cmd_spl.o
CC common/flash.o
CC common/splash.o
CC common/cmd_nvedit.o
CC common/env_common.o
CC common/console.o
CC common/dlmalloc.o
CC common/image.o
common/image.c: In function 'image_print_contents':
common/image.c:308:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
common/image.c:309:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
common/image.c: In function 'genimg_print_size':
common/image.c:505:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Wformat]
CC common/image-fdt.o
CC common/memsize.o
CC common/stdio.o
CC common/cli_simple.o
CC common/cli.o
CC common/cli_readline.o
CC common/command.o
CC common/s_record.o
CC common/xyzModem.o
CC common/cmd_disk.o
LD common/built-in.o
CC disk/part.o
CC disk/part_dos.o
LD disk/built-in.o
LD drivers/block/built-in.o
LD drivers/crypto/fsl/built-in.o
LD drivers/crypto/built-in.o
LD drivers/dfu/built-in.o
LD drivers/hwmon/built-in.o
CC drivers/input/input.o
LD drivers/input/built-in.o
LD drivers/memory/built-in.o
LD drivers/misc/built-in.o
CC drivers/pcmcia/tqm8xx_pcmcia.o
LD drivers/pcmcia/built-in.o
LD drivers/pwm/built-in.o
CC drivers/rtc/date.o
LD drivers/rtc/built-in.o
LD drivers/soc/built-in.o
LD drivers/sound/built-in.o
LD drivers/thermal/built-in.o
LD drivers/tpm/built-in.o
LD drivers/twserial/built-in.o
LD drivers/video/built-in.o
LD drivers/watchdog/built-in.o
LD drivers/built-in.o
LD drivers/dma/built-in.o
CC drivers/gpio/omap_gpio.o
LD drivers/gpio/built-in.o
CC drivers/i2c/i2c_core.o
CC drivers/i2c/omap24xx_i2c.o
LD drivers/i2c/built-in.o
CC drivers/mmc/mmc.o
CC drivers/mmc/omap_hsmmc.o
drivers/mmc/omap_hsmmc.c: In function 'mmc_reset_controller_fsm':
drivers/mmc/omap_hsmmc.c:308:5: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
drivers/mmc/omap_hsmmc.c: In function 'omap_hsmmc_send_cmd':
drivers/mmc/omap_hsmmc.c:335:5: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
CC drivers/mmc/mmc_write.o
LD drivers/mmc/built-in.o
LD drivers/mtd/built-in.o
LD drivers/mtd/onenand/built-in.o
LD drivers/mtd/spi/built-in.o
LD drivers/net/built-in.o
LD drivers/net/phy/built-in.o
LD drivers/pci/built-in.o
CC drivers/power/twl6030.o
LD drivers/power/built-in.o
LD drivers/power/battery/built-in.o
LD drivers/power/fuel_gauge/built-in.o
LD drivers/power/mfd/built-in.o
LD drivers/power/pmic/built-in.o
CC drivers/serial/serial.o
CC drivers/serial/serial_ns16550.o
CC drivers/serial/ns16550.o
CC drivers/serial/usbtty.o
LD drivers/serial/built-in.o
CC drivers/spi/spi.o
CC drivers/spi/omap3_spi.o
drivers/spi/omap3_spi.c: In function 'omap3_spi_write':
drivers/spi/omap3_spi.c:248:12: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
drivers/spi/omap3_spi.c: In function 'omap3_spi_read':
drivers/spi/omap3_spi.c:303:12: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
drivers/spi/omap3_spi.c: In function 'omap3_spi_txrx':
drivers/spi/omap3_spi.c:357:12: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
drivers/spi/omap3_spi.c:375:12: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
LD drivers/spi/built-in.o
CC drivers/usb/eth/usb_ether.o
CC drivers/usb/eth/smsc95xx.o
drivers/usb/eth/smsc95xx.c: In function 'smsc95xx_write_reg':
drivers/usb/eth/smsc95xx.c:165:3: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
drivers/usb/eth/smsc95xx.c:165:3: warning: format '%d' expects argument of type 'int', but argument 3 has type 'u32' [-Wformat]
drivers/usb/eth/smsc95xx.c: In function 'smsc95xx_read_reg':
drivers/usb/eth/smsc95xx.c:183:3: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
drivers/usb/eth/smsc95xx.c: In function 'smsc95xx_set_csums':
drivers/usb/eth/smsc95xx.c:418:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
drivers/usb/eth/smsc95xx.c: In function 'smsc95xx_init':
drivers/usb/eth/smsc95xx.c:522:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
drivers/usb/eth/smsc95xx.c:532:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
drivers/usb/eth/smsc95xx.c:556:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
drivers/usb/eth/smsc95xx.c:566:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
drivers/usb/eth/smsc95xx.c:572:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
drivers/usb/eth/smsc95xx.c:589:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
drivers/usb/eth/smsc95xx.c:599:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
drivers/usb/eth/smsc95xx.c: In function 'smsc95xx_recv':
drivers/usb/eth/smsc95xx.c:752:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
drivers/usb/eth/smsc95xx.c:758:4: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
LD drivers/usb/eth/built-in.o
CC drivers/usb/gadget/core.o
CC drivers/usb/gadget/ep0.o
LD drivers/usb/gadget/built-in.o
CC drivers/usb/host/ehci-hcd.o
drivers/usb/host/ehci-hcd.c: In function 'ehci_submit_async':
drivers/usb/host/ehci-hcd.c:591:3: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
drivers/usb/host/ehci-hcd.c:607:3: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
drivers/usb/host/ehci-hcd.c:637:3: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
drivers/usb/host/ehci-hcd.c:637:3: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'u32' [-Wformat]
drivers/usb/host/ehci-hcd.c:637:3: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'u32' [-Wformat]
drivers/usb/host/ehci-hcd.c: In function 'usb_lowlevel_init':
drivers/usb/host/ehci-hcd.c:1028:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
drivers/usb/host/ehci-hcd.c:1059:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
drivers/usb/host/ehci-hcd.c:1059:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
drivers/usb/host/ehci-hcd.c: In function 'poll_int_queue':
drivers/usb/host/ehci-hcd.c:1323:3: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
drivers/usb/host/ehci-hcd.c:1336:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
drivers/usb/host/ehci-hcd.c: In function 'destroy_int_queue':
drivers/usb/host/ehci-hcd.c:1358:3: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
drivers/usb/host/ehci-hcd.c: In function 'submit_int_msg':
drivers/usb/host/ehci-hcd.c:1414:3: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
drivers/usb/host/ehci-hcd.c:1414:3: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
CC drivers/usb/host/ehci-omap.o
drivers/usb/host/ehci-omap.c: In function 'omap_uhh_reset':
drivers/usb/host/ehci-omap.c:34:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/host/ehci-omap.c:37:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/host/ehci-omap.c:42:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/host/ehci-omap.c:52:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/host/ehci-omap.c:60:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/host/ehci-omap.c:69:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/host/ehci-omap.c: In function 'omap_ehci_tll_reset':
drivers/usb/host/ehci-omap.c:81:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/host/ehci-omap.c:84:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/host/ehci-omap.c: In function 'omap_ehci_hcd_init':
drivers/usb/host/ehci-omap.c:204:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/host/ehci-omap.c:209:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/host/ehci-omap.c:217:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/host/ehci-omap.c:267:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/host/ehci-omap.c:284:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
LD drivers/usb/host/built-in.o
LD drivers/usb/musb-new/built-in.o
CC drivers/usb/musb/musb_udc.o
CC drivers/usb/musb/musb_core.o
CC drivers/usb/musb/omap3.o
drivers/usb/musb/omap3.c: In function 'musb_platform_init':
drivers/usb/musb/omap3.c:110:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/musb/omap3.c:114:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/musb/omap3.c:117:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
drivers/usb/musb/omap3.c:119:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
LD drivers/usb/musb/built-in.o
LD drivers/usb/phy/built-in.o
LD drivers/usb/ulpi/built-in.o
CC fs/fs.o
CC fs/ext4/ext4fs.o
CC fs/ext4/ext4_common.o
fs/ext4/ext4_common.c: In function 'ext4fs_iterate_dir':
fs/ext4/ext4_common.c:2011:6: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
fs/ext4/ext4_common.c: In function 'ext4fs_mount':
fs/ext4/ext4_common.c:2230:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Wformat]
fs/ext4/ext4_common.c:2230:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat]
CC fs/ext4/dev.o
LD fs/ext4/built-in.o
CC fs/fat/fat_write.o
In file included from fs/fat/fat_write.c:18:0:
fs/fat/fat.c: In function 'get_fatent':
fs/fat/fat.c:187:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat.c:187:2: warning: format '%d' expects argument of type 'int', but argument 4 has type '__u32' [-Wformat]
fs/fat/fat.c:187:2: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type '__u32' [-Wformat]
fs/fat/fat.c:187:2: warning: format '%d' expects argument of type 'int', but argument 6 has type '__u32' [-Wformat]
fs/fat/fat.c:248:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat.c:248:2: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type '__u32' [-Wformat]
fs/fat/fat.c: In function 'get_cluster':
fs/fat/fat.c:272:2: warning: format '%d' expects argument of type 'int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:272:2: warning: format '%d' expects argument of type 'int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat.c: In function 'get_contents':
fs/fat/fat.c:353:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:383:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:399:5: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:426:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c: In function 'get_dentfromdir':
fs/fat/fat.c:639:10: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:695:8: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:717:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:726:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c: In function 'do_fat_read_at':
fs/fat/fat.c:877:2: warning: format '%d' expects argument of type 'int', but argument 4 has type '__u32' [-Wformat]
fs/fat/fat.c:879:2: warning: format '%d' expects argument of type 'int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:879:2: warning: format '%d' expects argument of type 'int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat.c:879:2: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'long unsigned int' [-Wformat]
fs/fat/fat.c:917:4: warning: format '%d' expects argument of type 'int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:979:10: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:1036:8: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:1059:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:1160:2: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat_write.c: In function 'get_fatent_value':
fs/fat/fat_write.c:145:3: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat_write.c:168:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat_write.c:168:2: warning: format '%d' expects argument of type 'int', but argument 4 has type '__u32' [-Wformat]
fs/fat/fat_write.c:168:2: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type '__u32' [-Wformat]
fs/fat/fat_write.c:168:2: warning: format '%d' expects argument of type 'int', but argument 6 has type '__u32' [-Wformat]
fs/fat/fat_write.c:236:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat_write.c:236:2: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type '__u32' [-Wformat]
fs/fat/fat_write.c:236:2: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type '__u32' [-Wformat]
fs/fat/fat_write.c: In function 'determine_fatent':
fs/fat/fat_write.c:537:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat_write.c:537:2: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type '__u32' [-Wformat]
fs/fat/fat_write.c: In function 'set_cluster':
fs/fat/fat_write.c:560:2: warning: format '%d' expects argument of type 'int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat_write.c:560:2: warning: format '%d' expects argument of type 'int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat_write.c: In function 'set_contents':
fs/fat/fat_write.c:697:5: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat_write.c:742:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat_write.c: In function 'find_directory_entry':
fs/fat/fat_write.c:885:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat_write.c:921:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
CC fs/fat/file.o
LD fs/fat/built-in.o
LD fs/built-in.o
CC lib/libfdt/fdt.o
CC lib/libfdt/fdt_ro.o
CC lib/libfdt/fdt_rw.o
CC lib/libfdt/fdt_strerror.o
CC lib/libfdt/fdt_sw.o
CC lib/libfdt/fdt_wip.o
CC lib/libfdt/fdt_empty_tree.o
CC lib/libfdt/fdt_addresses.o
LD lib/libfdt/built-in.o
CC lib/zlib/zlib.o
LD lib/zlib/built-in.o
CC lib/circbuf.o
CC lib/crc7.o
CC lib/crc8.o
CC lib/crc16.o
CC lib/gunzip.o
CC lib/initcall.o
CC lib/lmb.o
CC lib/ldiv.o
CC lib/net_utils.o
CC lib/qsort.o
CC lib/strmhz.o
CC lib/list_sort.o
CC lib/hashtable.o
CC lib/errno.o
CC lib/display_options.o
lib/display_options.c: In function 'print_size':
lib/display_options.c:42:3: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'long long unsigned int' [-Wformat]
lib/display_options.c: In function 'print_buffer':
lib/display_options.c:128:4: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
CC lib/crc32.o
CC lib/ctype.o
CC lib/div64.o
CC lib/hang.o
CC lib/linux_compat.o
CC lib/linux_string.o
CC lib/string.o
CC lib/time.o
CC lib/vsprintf.o
LD lib/built-in.o
CC net/arp.o
CC net/bootp.o
CC net/eth.o
CC net/net.o
CC net/ping.o
CC net/tftp.o
net/tftp.c: In function 'TftpStart':
net/tftp.c:722:4: warning: format '%X' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
net/tftp.c:722:4: warning: format '%X' expects argument of type 'unsigned int', but argument 4 has type 'long unsigned int' [-Wformat]
net/tftp.c:722:4: warning: format '%X' expects argument of type 'unsigned int', but argument 5 has type 'long unsigned int' [-Wformat]
net/tftp.c:722:4: warning: format '%X' expects argument of type 'unsigned int', but argument 6 has type 'long unsigned int' [-Wformat]
LD net/built-in.o
LD test/built-in.o
LD test/dm/built-in.o
CC examples/standalone/hello_world.o
CC examples/standalone/stubs.o
LD examples/standalone/libstubs.o
LD examples/standalone/hello_world
OBJCOPY examples/standalone/hello_world.srec
OBJCOPY examples/standalone/hello_world.bin
LDS u-boot.lds
LD u-boot
OBJCOPY u-boot.bin
MKIMAGE u-boot.img
OBJCOPY u-boot.srec
CC spl/arch/arm/cpu/armv7/cache_v7.o
arch/arm/cpu/armv7/cache_v7.c: In function 'v7_dcache_inval_range':
arch/arm/cpu/armv7/cache_v7.c:174:4: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/cache_v7.c:185:4: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
CC spl/arch/arm/cpu/armv7/cpu.o
CC spl/arch/arm/cpu/armv7/syslib.o
AS spl/arch/arm/cpu/armv7/lowlevel_init.o
CC spl/arch/arm/cpu/armv7/omap-common/reset.o
CC spl/arch/arm/cpu/armv7/omap-common/timer.o
arch/arm/cpu/armv7/omap-common/timer.c: In function 'timer_init':
arch/arm/cpu/armv7/omap-common/timer.c:39:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/timer.c:41:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/timer.c:45:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/timer.c: In function '__udelay':
arch/arm/cpu/armv7/omap-common/timer.c:64:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/timer.c:67:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/timer.c: In function 'get_timer_masked':
arch/arm/cpu/armv7/omap-common/timer.c:79:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
CC spl/arch/arm/cpu/armv7/omap-common/utils.o
CC spl/arch/arm/cpu/armv7/omap-common/hwinit-common.o
In file included from arch/arm/cpu/armv7/omap-common/hwinit-common.c:18:0:
./arch/arm/include/asm/emif.h: In function 'get_emif_rev':
./arch/arm/include/asm/emif.h:1165:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
./arch/arm/include/asm/emif.h: In function 'emif_sdram_type':
./arch/arm/include/asm/emif.h:1179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/hwinit-common.c: In function 'omap_rev_string':
arch/arm/cpu/armv7/omap-common/hwinit-common.c:73:9: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/hwinit-common.c:73:9: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/hwinit-common.c:73:9: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/hwinit-common.c: In function 'wait_for_command_complete':
arch/arm/cpu/armv7/omap-common/hwinit-common.c:159:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/hwinit-common.c: In function 'watchdog_init':
arch/arm/cpu/armv7/omap-common/hwinit-common.c:171:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/hwinit-common.c:173:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
CC spl/arch/arm/cpu/armv7/omap-common/clocks-common.o
In file included from arch/arm/cpu/armv7/omap-common/clocks-common.c:24:0:
./arch/arm/include/asm/emif.h: In function 'get_emif_rev':
./arch/arm/include/asm/emif.h:1165:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
./arch/arm/include/asm/emif.h: In function 'emif_sdram_type':
./arch/arm/include/asm/emif.h:1179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'setup_post_dividers':
arch/arm/cpu/armv7/omap-common/clocks-common.c:80:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:82:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:84:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:86:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:88:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:90:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:92:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:94:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:96:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:98:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'do_bypass_dpll':
arch/arm/cpu/armv7/omap-common/clocks-common.c:105:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:105:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'wait_for_bypass':
arch/arm/cpu/armv7/omap-common/clocks-common.c:117:3: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'do_lock_dpll':
arch/arm/cpu/armv7/omap-common/clocks-common.c:125:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:125:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'wait_for_lock':
arch/arm/cpu/armv7/omap-common/clocks-common.c:136:3: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'check_for_lock':
arch/arm/cpu/armv7/omap-common/clocks-common.c:144:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'do_setup_dpll':
arch/arm/cpu/armv7/omap-common/clocks-common.c:220:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:231:4: warning: format '%d' expects argument of type 'int', but argument 3 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:231:4: warning: format '%d' expects argument of type 'int', but argument 4 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:231:4: warning: format '%d' expects argument of type 'int', but argument 5 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:231:4: warning: format '%d' expects argument of type 'int', but argument 6 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:252:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'omap_ddr_clk':
arch/arm/cpu/armv7/omap-common/clocks-common.c:276:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:298:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'configure_mpu_dpll':
arch/arm/cpu/armv7/omap-common/clocks-common.c:332:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c:332:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'do_scale_vcore':
arch/arm/cpu/armv7/omap-common/clocks-common.c:465:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:465:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:469:3: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'optimize_vcore_voltage':
arch/arm/cpu/armv7/omap-common/clocks-common.c:492:10: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:498:10: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:498:10: warning: format '%d' expects argument of type 'int', but argument 4 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:502:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:502:2: warning: format '%d' expects argument of type 'int', but argument 5 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:502:2: warning: format '%d' expects argument of type 'int', but argument 6 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'enable_clock_domain':
arch/arm/cpu/armv7/omap-common/clocks-common.c:549:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'wait_for_clk_enable':
arch/arm/cpu/armv7/omap-common/clocks-common.c:565:5: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c:565:5: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/clocks-common.c: In function 'enable_clock_module':
arch/arm/cpu/armv7/omap-common/clocks-common.c:576:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
CC spl/arch/arm/cpu/armv7/omap-common/emif-common.o
In file included from arch/arm/cpu/armv7/omap-common/emif-common.c:13:0:
./arch/arm/include/asm/emif.h: In function 'get_emif_rev':
./arch/arm/include/asm/emif.h:1165:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
./arch/arm/include/asm/emif.h: In function 'emif_sdram_type':
./arch/arm/include/asm/emif.h:1179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'set_lpmode_selfrefresh':
arch/arm/cpu/armv7/omap-common/emif-common.c:27:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:31:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:34:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'get_mr':
arch/arm/cpu/armv7/omap-common/emif-common.c:59:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:61:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:63:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:64:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c:64:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c:64:2: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c:64:2: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'set_mr':
arch/arm/cpu/armv7/omap-common/emif-common.c:79:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:80:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'emif_reset_phy':
arch/arm/cpu/armv7/omap-common/emif-common.c:88:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:90:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'lpddr2_init':
arch/arm/cpu/armv7/omap-common/emif-common.c:129:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:129:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:135:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:135:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:141:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:142:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:150:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:151:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:154:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:154:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'emif_update_timings':
arch/arm/cpu/armv7/omap-common/emif-common.c:166:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:167:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:168:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:169:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:172:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:174:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:175:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:177:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:178:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:180:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:183:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:186:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:189:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'omap5_ddr3_leveling':
arch/arm/cpu/armv7/omap-common/emif-common.c:199:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:211:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:214:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:218:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:222:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:225:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:235:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:241:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'ddr3_init':
arch/arm/cpu/armv7/omap-common/emif-common.c:261:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:264:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:265:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:266:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:268:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:269:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:277:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:278:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:280:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:281:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:286:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'do_sdram_init':
arch/arm/cpu/armv7/omap-common/emif-common.c:1010:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c:1082:2: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'emif_post_init_config':
arch/arm/cpu/armv7/omap-common/emif-common.c:1096:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'dmm_init':
arch/arm/cpu/armv7/omap-common/emif-common.c:1186:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1187:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1188:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1189:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1191:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1193:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1195:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1197:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1204:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1206:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1208:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c:1210:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'do_bug0039_workaround':
arch/arm/cpu/armv7/omap-common/emif-common.c:1270:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/emif-common.c: In function 'sdram_init':
arch/arm/cpu/armv7/omap-common/emif-common.c:1303:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c:1345:5: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
arch/arm/cpu/armv7/omap-common/emif-common.c:1345:5: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
CC spl/arch/arm/cpu/armv7/omap-common/vc.o
CC spl/arch/arm/cpu/armv7/omap-common/abb.o
CC spl/arch/arm/cpu/armv7/omap-common/omap-cache.o
CC spl/arch/arm/cpu/armv7/omap-common/boot-common.o
arch/arm/cpu/armv7/omap-common/boot-common.c: In function 'jump_to_image_no_args':
arch/arm/cpu/armv7/omap-common/boot-common.c:141:2: warning: format '%X' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
AS spl/arch/arm/cpu/armv7/omap-common/lowlevel_init.o
CC spl/arch/arm/cpu/armv7/omap-common/mem-common.o
arch/arm/cpu/armv7/omap-common/mem-common.c: In function 'enable_gpmc_cs_config':
arch/arm/cpu/armv7/omap-common/mem-common.c:56:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:59:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:60:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:61:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:62:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:63:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:64:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:66:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c: In function 'gpmc_init':
arch/arm/cpu/armv7/omap-common/mem-common.c:126:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:127:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:128:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:130:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:134:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
arch/arm/cpu/armv7/omap-common/mem-common.c:139:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
LD spl/arch/arm/cpu/armv7/omap-common/built-in.o
CC spl/arch/arm/cpu/armv7/omap4/sdram_elpida.o
In file included from arch/arm/cpu/armv7/omap4/sdram_elpida.c:13:0:
./arch/arm/include/asm/emif.h: In function 'get_emif_rev':
./arch/arm/include/asm/emif.h:1165:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
./arch/arm/include/asm/emif.h: In function 'emif_sdram_type':
./arch/arm/include/asm/emif.h:1179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
CC spl/arch/arm/cpu/armv7/omap4/hwinit.o
In file included from arch/arm/cpu/armv7/omap4/hwinit.c:19:0:
./arch/arm/include/asm/emif.h: In function 'get_emif_rev':
./arch/arm/include/asm/emif.h:1165:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
./arch/arm/include/asm/emif.h: In function 'emif_sdram_type':
./arch/arm/include/asm/emif.h:1179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
CC spl/arch/arm/cpu/armv7/omap4/emif.o
In file included from arch/arm/cpu/armv7/omap4/emif.c:13:0:
./arch/arm/include/asm/emif.h: In function 'get_emif_rev':
./arch/arm/include/asm/emif.h:1165:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
./arch/arm/include/asm/emif.h: In function 'emif_sdram_type':
./arch/arm/include/asm/emif.h:1179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
CC spl/arch/arm/cpu/armv7/omap4/prcm-regs.o
CC spl/arch/arm/cpu/armv7/omap4/hw_data.o
LD spl/arch/arm/cpu/armv7/omap4/built-in.o
LD spl/arch/arm/cpu/armv7/built-in.o
AS spl/arch/arm/cpu/armv7/start.o
LD spl/arch/arm/cpu/built-in.o
AS spl/arch/arm/lib/vectors.o
AS spl/arch/arm/lib/crt0.o
CC spl/arch/arm/lib/spl.o
CC spl/arch/arm/lib/sections.o
CC spl/arch/arm/lib/interrupts.o
CC spl/arch/arm/lib/reset.o
CC spl/arch/arm/lib/cache.o
CC spl/arch/arm/lib/cache-cp15.o
LD spl/arch/arm/lib/built-in.o
AR spl/arch/arm/lib/lib.a
CC spl/arch/arm/lib/eabi_compat.o
CC spl/board/ti/panda/panda.o
board/ti/panda/panda.c: In function 'misc_init_r':
board/ti/panda/panda.c:211:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
board/ti/panda/panda.c:221:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
board/ti/panda/panda.c:226:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
board/ti/panda/panda.c:236:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
board/ti/panda/panda.c:239:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
board/ti/panda/panda.c:248:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
LD spl/board/ti/panda/built-in.o
CC spl/common/spl/spl.o
common/spl/spl.c: In function 'spl_parse_image_header':
common/spl/spl.c:100:3: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'u32' [-Wformat]
common/spl/spl.c:100:3: warning: format '%d' expects argument of type 'int', but argument 5 has type 'u32' [-Wformat]
common/spl/spl.c:105:3: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__be32' [-Wformat]
common/spl/spl.c: In function 'jump_to_image_no_args':
common/spl/spl.c:118:2: warning: format '%X' expects argument of type 'unsigned int', but argument 2 has type 'u32' [-Wformat]
common/spl/spl.c: In function 'board_init_r':
common/spl/spl.c:169:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
common/spl/spl.c:234:3: warning: format '%d' expects argument of type 'int', but argument 2 has type 'u32' [-Wformat]
CC spl/common/spl/spl_mmc.o
CC spl/common/spl/spl_fat.o
CC spl/common/spl/spl_ext.o
common/spl/spl_ext.c: In function 'spl_load_image_ext':
common/spl/spl_ext.c:35:3: warning: format '%d' expects argument of type 'int', but argument 3 has type 's32' [-Wformat]
common/spl/spl_ext.c:59:10: warning: format '%d' expects argument of type 'int', but argument 4 has type 's32' [-Wformat]
LD spl/common/spl/built-in.o
CC spl/common/cmd_nvedit.o
CC spl/common/env_common.o
CC spl/common/console.o
CC spl/common/dlmalloc.o
CC spl/common/image.o
common/image.c: In function 'image_print_contents':
common/image.c:308:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
common/image.c:309:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
common/image.c: In function 'genimg_print_size':
common/image.c:505:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Wformat]
CC spl/common/image-fdt.o
CC spl/common/memsize.o
CC spl/common/stdio.o
CC spl/common/cli_simple.o
CC spl/common/cli.o
CC spl/common/cli_readline.o
CC spl/common/command.o
CC spl/common/s_record.o
CC spl/common/xyzModem.o
CC spl/common/cmd_disk.o
LD spl/common/built-in.o
CC spl/disk/part.o
CC spl/disk/part_dos.o
LD spl/disk/built-in.o
LD spl/drivers/i2c/built-in.o
CC spl/drivers/gpio/omap_gpio.o
LD spl/drivers/gpio/built-in.o
CC spl/drivers/mmc/mmc.o
CC spl/drivers/mmc/omap_hsmmc.o
drivers/mmc/omap_hsmmc.c: In function 'mmc_reset_controller_fsm':
drivers/mmc/omap_hsmmc.c:308:5: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
drivers/mmc/omap_hsmmc.c: In function 'omap_hsmmc_send_cmd':
drivers/mmc/omap_hsmmc.c:335:5: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'u32' [-Wformat]
LD spl/drivers/mmc/built-in.o
CC spl/drivers/serial/serial.o
CC spl/drivers/serial/serial_ns16550.o
CC spl/drivers/serial/ns16550.o
LD spl/drivers/serial/built-in.o
CC spl/fs/ext4/ext4fs.o
CC spl/fs/ext4/ext4_common.o
fs/ext4/ext4_common.c: In function 'ext4fs_iterate_dir':
fs/ext4/ext4_common.c:2011:6: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'long unsigned int' [-Wformat]
fs/ext4/ext4_common.c: In function 'ext4fs_mount':
fs/ext4/ext4_common.c:2230:2: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Wformat]
fs/ext4/ext4_common.c:2230:2: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat]
CC spl/fs/ext4/dev.o
LD spl/fs/ext4/built-in.o
CC spl/fs/fat/fat_write.o
In file included from fs/fat/fat_write.c:18:0:
fs/fat/fat.c: In function 'get_fatent':
fs/fat/fat.c:187:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat.c:187:2: warning: format '%d' expects argument of type 'int', but argument 4 has type '__u32' [-Wformat]
fs/fat/fat.c:187:2: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type '__u32' [-Wformat]
fs/fat/fat.c:187:2: warning: format '%d' expects argument of type 'int', but argument 6 has type '__u32' [-Wformat]
fs/fat/fat.c:248:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat.c:248:2: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type '__u32' [-Wformat]
fs/fat/fat.c: In function 'get_cluster':
fs/fat/fat.c:272:2: warning: format '%d' expects argument of type 'int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:272:2: warning: format '%d' expects argument of type 'int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat.c: In function 'get_contents':
fs/fat/fat.c:353:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:383:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:399:5: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:426:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c: In function 'get_dentfromdir':
fs/fat/fat.c:639:10: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:695:8: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:717:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:726:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c: In function 'do_fat_read_at':
fs/fat/fat.c:877:2: warning: format '%d' expects argument of type 'int', but argument 4 has type '__u32' [-Wformat]
fs/fat/fat.c:879:2: warning: format '%d' expects argument of type 'int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:879:2: warning: format '%d' expects argument of type 'int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat.c:879:2: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'long unsigned int' [-Wformat]
fs/fat/fat.c:917:4: warning: format '%d' expects argument of type 'int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:979:10: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:1036:8: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:1059:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat.c:1160:2: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat_write.c: In function 'get_fatent_value':
fs/fat/fat_write.c:145:3: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat_write.c:168:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat_write.c:168:2: warning: format '%d' expects argument of type 'int', but argument 4 has type '__u32' [-Wformat]
fs/fat/fat_write.c:168:2: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type '__u32' [-Wformat]
fs/fat/fat_write.c:168:2: warning: format '%d' expects argument of type 'int', but argument 6 has type '__u32' [-Wformat]
fs/fat/fat_write.c:236:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat_write.c:236:2: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type '__u32' [-Wformat]
fs/fat/fat_write.c:236:2: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type '__u32' [-Wformat]
fs/fat/fat_write.c: In function 'determine_fatent':
fs/fat/fat_write.c:537:2: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat_write.c:537:2: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type '__u32' [-Wformat]
fs/fat/fat_write.c: In function 'set_cluster':
fs/fat/fat_write.c:560:2: warning: format '%d' expects argument of type 'int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat_write.c:560:2: warning: format '%d' expects argument of type 'int', but argument 3 has type '__u32' [-Wformat]
fs/fat/fat_write.c: In function 'set_contents':
fs/fat/fat_write.c:697:5: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat_write.c:742:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat_write.c: In function 'find_directory_entry':
fs/fat/fat_write.c:885:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
fs/fat/fat_write.c:921:4: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type '__u32' [-Wformat]
LD spl/fs/fat/built-in.o
LD spl/fs/built-in.o
CC spl/lib/hashtable.o
CC spl/lib/errno.o
CC spl/lib/display_options.o
lib/display_options.c: In function 'print_size':
lib/display_options.c:42:3: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'long long unsigned int' [-Wformat]
lib/display_options.c: In function 'print_buffer':
lib/display_options.c:128:4: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat]
CC spl/lib/crc32.o
CC spl/lib/ctype.o
CC spl/lib/div64.o
CC spl/lib/hang.o
CC spl/lib/linux_compat.o
CC spl/lib/linux_string.o
CC spl/lib/string.o
CC spl/lib/time.o
CC spl/lib/vsprintf.o
LD spl/lib/built-in.o
LDS spl/u-boot-spl.lds
LD spl/u-boot-spl
OBJCOPY spl/u-boot-spl.bin
MKIMAGE MLO
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Gabe Black <gabeblack@chromium.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Bill Richardson <wfrichar@google.com>
Cc: Tom Rini <trini@ti.com>
---
fs/fat/fat.c | 35 ++++++++++++++++++-----------------
include/u-boot/zlib.h | 2 +-
2 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/fs/fat/fat.c b/fs/fat/fat.c
index 04a51db..d473e17 100644
--- a/fs/fat/fat.c
+++ b/fs/fat/fat.c
@@ -9,6 +9,7 @@
* SPDX-License-Identifier: GPL-2.0+
*/
+#include <inttypes.h>
#include <common.h>
#include <config.h>
#include <exports.h>
@@ -184,7 +185,7 @@ static __u32 get_fatent(fsdata *mydata, __u32 entry)
return ret;
}
- debug("FAT%d: entry: 0x%04x = %d, offset: 0x%04x = %d\n",
+ debug("FAT%d: entry: 0x%04" PRIx32 " = %" PRId32 ", offset: 0x%04" PRIx32 " = %" PRId32 "\n",
mydata->fatsize, entry, entry, offset, offset);
/* Read a new block of FAT entries into the cache. */
@@ -245,7 +246,7 @@ static __u32 get_fatent(fsdata *mydata, __u32 entry)
}
break;
}
- debug("FAT%d: ret: %08x, offset: %04x\n",
+ debug("FAT%d: ret: %08" PRIx32 ", offset: %04" PRIx32 "\n",
mydata->fatsize, ret, offset);
return ret;
@@ -269,7 +270,7 @@ get_cluster(fsdata *mydata, __u32 clustnum, __u8 *buffer, unsigned long size)
startsect = mydata->rootdir_sect;
}
- debug("gc - clustnum: %d, startsect: %d\n", clustnum, startsect);
+ debug("gc - clustnum: %" PRId32 ", startsect: %" PRId32 "\n", clustnum, startsect);
if ((unsigned long)buffer & (ARCH_DMA_MINALIGN - 1)) {
ALLOC_CACHE_ALIGN_BUFFER(__u8, tmpbuf, mydata->sect_size);
@@ -350,7 +351,7 @@ static int get_contents(fsdata *mydata, dir_entry *dentptr, loff_t pos,
while (actsize <= pos) {
curclust = get_fatent(mydata, curclust);
if (CHECK_CLUST(curclust, mydata->fatsize)) {
- debug("curclust: 0x%x\n", curclust);
+ debug("curclust: 0x%" PRIx32 "\n", curclust);
debug("Invalid FAT entry\n");
return 0;
}
@@ -380,7 +381,7 @@ static int get_contents(fsdata *mydata, dir_entry *dentptr, loff_t pos,
curclust = get_fatent(mydata, curclust);
if (CHECK_CLUST(curclust, mydata->fatsize)) {
- debug("curclust: 0x%x\n", curclust);
+ debug("curclust: 0x%" PRIx32 "\n", curclust);
debug("Invalid FAT entry\n");
return 0;
}
@@ -396,7 +397,7 @@ static int get_contents(fsdata *mydata, dir_entry *dentptr, loff_t pos,
if ((newclust - 1) != endclust)
goto getit;
if (CHECK_CLUST(newclust, mydata->fatsize)) {
- debug("curclust: 0x%x\n", newclust);
+ debug("curclust: 0x%" PRIx32 "\n", newclust);
debug("Invalid FAT entry\n");
return 0;
}
@@ -423,7 +424,7 @@ getit:
curclust = get_fatent(mydata, endclust);
if (CHECK_CLUST(curclust, mydata->fatsize)) {
- debug("curclust: 0x%x\n", curclust);
+ debug("curclust: 0x%" PRIx32 "\n", curclust);
printf("Invalid FAT entry\n");
return 0;
}
@@ -633,7 +634,7 @@ static dir_entry *get_dentfromdir(fsdata *mydata, int startsect,
}
if (doit) {
if (dirc == ' ') {
- printf(" %8u %s%c\n",
+ printf(" %8" PRIu32 "%s%c\n",
FAT2CPU32(dentptr->size),
l_name,
dirc);
@@ -690,7 +691,7 @@ static dir_entry *get_dentfromdir(fsdata *mydata, int startsect,
if (doit) {
if (dirc == ' ') {
- printf(" %8u %s%c\n",
+ printf(" %8" PRIu32 "%s%c\n",
FAT2CPU32(dentptr->size),
s_name, dirc);
} else {
@@ -714,7 +715,7 @@ static dir_entry *get_dentfromdir(fsdata *mydata, int startsect,
debug("DentName: %s", s_name);
debug(", start: 0x%x", START(dentptr));
- debug(", size: 0x%x %s\n",
+ debug(", size: 0x%" PRIx32 " %s\n",
FAT2CPU32(dentptr->size),
(dentptr->attr & ATTR_DIR) ? "(DIR)" : "");
@@ -723,7 +724,7 @@ static dir_entry *get_dentfromdir(fsdata *mydata, int startsect,
curclust = get_fatent(mydata, curclust);
if (CHECK_CLUST(curclust, mydata->fatsize)) {
- debug("curclust: 0x%x\n", curclust);
+ debug("curclust: 0x%" PRIx32 "\n", curclust);
printf("Invalid FAT entry\n");
return NULL;
}
@@ -874,7 +875,7 @@ int do_fat_read_at(const char *filename, loff_t pos, void *buffer,
if (vfat_enabled)
debug("VFAT Support enabled\n");
- debug("FAT%d, fat_sect: %d, fatlength: %d\n",
+ debug("FAT%d, fat_sect: %d, fatlength: %" PRId32 "\n",
mydata->fatsize, mydata->fat_sect, mydata->fatlength);
debug("Rootdir begins at cluster: %d, sector: %d, offset: %x\n"
"Data begins at: %d\n",
@@ -914,7 +915,7 @@ int do_fat_read_at(const char *filename, loff_t pos, void *buffer,
int i;
if (j == 0) {
- debug("FAT read sect=%d, clust_size=%d, DIRENTSPERBLOCK=%zd\n",
+ debug("FAT read sect=%" PRId32 ", clust_size=%d, DIRENTSPERBLOCK=%zd\n",
cursect, mydata->clust_size, DIRENTSPERBLOCK);
if (disk_read(cursect,
@@ -973,7 +974,7 @@ int do_fat_read_at(const char *filename, loff_t pos, void *buffer,
}
if (doit) {
if (dirc == ' ') {
- printf(" %8u %s%c\n",
+ printf(" %8" PRIu32 " %s%c\n",
FAT2CPU32(dentptr->size),
l_name,
dirc);
@@ -1031,7 +1032,7 @@ int do_fat_read_at(const char *filename, loff_t pos, void *buffer,
}
if (doit) {
if (dirc == ' ') {
- printf(" %8u %s%c\n",
+ printf(" %8" PRIu32 " %s%c\n",
FAT2CPU32(dentptr->size),
s_name, dirc);
} else {
@@ -1056,7 +1057,7 @@ int do_fat_read_at(const char *filename, loff_t pos, void *buffer,
debug("RootName: %s", s_name);
debug(", start: 0x%x", START(dentptr));
- debug(", size: 0x%x %s\n",
+ debug(", size: 0x%" PRIx32 " %s\n",
FAT2CPU32(dentptr->size),
isdir ? "(DIR)" : "");
@@ -1157,7 +1158,7 @@ rootdir_done:
} else {
ret = get_contents(mydata, dentptr, pos, buffer, maxsize, size);
}
- debug("Size: %u, got: %llu\n", FAT2CPU32(dentptr->size), *size);
+ debug("Size: %" PRIu32 ", got: %llu\n", FAT2CPU32(dentptr->size), *size);
exit:
free(mydata->fatbuf);
diff --git a/include/u-boot/zlib.h b/include/u-boot/zlib.h
index e23ceb5..bf09b6f 100644
--- a/include/u-boot/zlib.h
+++ b/include/u-boot/zlib.h
@@ -694,7 +694,7 @@ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
*/
-ZEXTERN uInt ZEXPORT crc32 OF((uInt crc, const Bytef *buf, uInt len));
+ZEXTERN uint32_t ZEXPORT crc32 OF((uint32_t crc, const Bytef *buf, uInt len));
/*
Update a running CRC-32 with the bytes buf[0..len-1] and return the
updated CRC-32. If buf is NULL, this function returns the required initial
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 7/7] Make BITS_PER_LONG compiler-dependent (MAD)
2014-12-22 10:15 [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>) Masahiro Yamada
` (5 preceding siblings ...)
2014-12-22 10:16 ` [U-Boot] [PATCH 6/7] Use PRIx32 etc. to print out 32bit-width variable (MAD) Masahiro Yamada
@ 2014-12-22 10:16 ` Masahiro Yamada
2014-12-23 4:51 ` Simon Glass
2014-12-22 12:43 ` [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>) Wolfgang Denk
7 siblings, 1 reply; 17+ messages in thread
From: Masahiro Yamada @ 2014-12-22 10:16 UTC (permalink / raw)
To: u-boot
Linux expects "unsigned long" has the same bit-width as the pointer,
i.e. the size of "unsigned long" is 4 on 32-bit compilers (ILP32)
and it is 8 on 64-bit compilers (LLP64).
It provides us the convenience in return of the limitation that
LP64 data model is not supported.
U-Boot used to follow Linux's way, but it does not now.
Including <stdint.h> means the width of "long" type is provided by
the compiler.
Use __SIZEOF_LONG__ instead of hard-coding BITS_PER_LONG.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Cc: Gabe Black <gabeblack@chromium.org>
Cc: Simon Glass <sjg@chromium.org>
Cc: Bill Richardson <wfrichar@google.com>
Cc: Tom Rini <trini@ti.com>
---
arch/arc/include/asm/types.h | 4 ++++
arch/arm/include/asm/types.h | 4 ++++
arch/avr32/include/asm/types.h | 4 ++++
arch/blackfin/include/asm/types.h | 4 ++++
arch/m68k/include/asm/types.h | 4 ++++
arch/microblaze/include/asm/types.h | 4 ++++
arch/mips/include/asm/types.h | 4 ++++
arch/nds32/include/asm/types.h | 4 ++++
arch/nios2/include/asm/types.h | 4 ++++
arch/openrisc/include/asm/types.h | 4 ++++
arch/powerpc/include/asm/types.h | 4 ++++
arch/sandbox/include/asm/types.h | 4 ++++
arch/sh/include/asm/types.h | 4 ++++
arch/sparc/include/asm/types.h | 4 ++++
arch/x86/include/asm/types.h | 4 ++++
15 files changed, 60 insertions(+)
diff --git a/arch/arc/include/asm/types.h b/arch/arc/include/asm/types.h
index 5693e5f..71779e9 100644
--- a/arch/arc/include/asm/types.h
+++ b/arch/arc/include/asm/types.h
@@ -73,7 +73,11 @@ typedef signed long long s64;
typedef unsigned long long u64;
#endif
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG 32
+#endif
/* Dma addresses are 32-bits wide. */
diff --git a/arch/arm/include/asm/types.h b/arch/arm/include/asm/types.h
index e24acc59..510b694 100644
--- a/arch/arm/include/asm/types.h
+++ b/arch/arm/include/asm/types.h
@@ -72,11 +72,15 @@ typedef unsigned long long u64;
#endif
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#ifdef CONFIG_ARM64
#define BITS_PER_LONG 64
#else /* CONFIG_ARM64 */
#define BITS_PER_LONG 32
#endif /* CONFIG_ARM64 */
+#endif
/* Dma addresses are 32-bits wide. */
diff --git a/arch/avr32/include/asm/types.h b/arch/avr32/include/asm/types.h
index 032a765..5311daa 100644
--- a/arch/avr32/include/asm/types.h
+++ b/arch/avr32/include/asm/types.h
@@ -51,7 +51,11 @@ __extension__ typedef unsigned long long __u64;
*/
#ifdef __KERNEL__
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG 32
+#endif
#ifndef __ASSEMBLY__
diff --git a/arch/blackfin/include/asm/types.h b/arch/blackfin/include/asm/types.h
index 8cae642..2cdb0e8 100644
--- a/arch/blackfin/include/asm/types.h
+++ b/arch/blackfin/include/asm/types.h
@@ -88,7 +88,11 @@ typedef unsigned long long u64;
#endif
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG 32
+#endif
/* Dma addresses are 32-bits wide. */
diff --git a/arch/m68k/include/asm/types.h b/arch/m68k/include/asm/types.h
index 83de4d5..53414db 100644
--- a/arch/m68k/include/asm/types.h
+++ b/arch/m68k/include/asm/types.h
@@ -72,7 +72,11 @@ typedef unsigned long long u64;
#endif
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG 32
+#endif
/* DMA addresses are 32-bits wide */
typedef u32 dma_addr_t;
diff --git a/arch/microblaze/include/asm/types.h b/arch/microblaze/include/asm/types.h
index afcd811..7418499 100644
--- a/arch/microblaze/include/asm/types.h
+++ b/arch/microblaze/include/asm/types.h
@@ -79,7 +79,11 @@ typedef unsigned long long u64;
#endif
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG 32
+#endif
/* Dma addresses are 32-bits wide. */
diff --git a/arch/mips/include/asm/types.h b/arch/mips/include/asm/types.h
index f372c70..546a9c1 100644
--- a/arch/mips/include/asm/types.h
+++ b/arch/mips/include/asm/types.h
@@ -58,7 +58,11 @@ typedef unsigned long long __u64;
*/
#ifdef __KERNEL__
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG _MIPS_SZLONG
+#endif
#ifndef __ASSEMBLY__
diff --git a/arch/nds32/include/asm/types.h b/arch/nds32/include/asm/types.h
index 8416cef..6d0a2db 100644
--- a/arch/nds32/include/asm/types.h
+++ b/arch/nds32/include/asm/types.h
@@ -79,7 +79,11 @@ typedef unsigned long long u64;
#endif
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG 32
+#endif
#include <stddef.h>
diff --git a/arch/nios2/include/asm/types.h b/arch/nios2/include/asm/types.h
index 43c76cc..d5751e2 100644
--- a/arch/nios2/include/asm/types.h
+++ b/arch/nios2/include/asm/types.h
@@ -78,7 +78,11 @@ typedef unsigned long long u64;
#endif
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG 32
+#endif
/* Dma addresses are 32-bits wide. */
diff --git a/arch/openrisc/include/asm/types.h b/arch/openrisc/include/asm/types.h
index 069c8d6..16a0ad9 100644
--- a/arch/openrisc/include/asm/types.h
+++ b/arch/openrisc/include/asm/types.h
@@ -84,7 +84,11 @@ typedef unsigned long long u64;
#endif
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG 32
+#endif
/* Dma addresses are 32-bits wide. */
diff --git a/arch/powerpc/include/asm/types.h b/arch/powerpc/include/asm/types.h
index 71868ef..cba487c 100644
--- a/arch/powerpc/include/asm/types.h
+++ b/arch/powerpc/include/asm/types.h
@@ -71,7 +71,11 @@ typedef unsigned long long u64;
#endif
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG 32
+#endif
#ifdef CONFIG_PHYS_64BIT
typedef unsigned long long dma_addr_t;
diff --git a/arch/sandbox/include/asm/types.h b/arch/sandbox/include/asm/types.h
index 1bb168c..6d69422 100644
--- a/arch/sandbox/include/asm/types.h
+++ b/arch/sandbox/include/asm/types.h
@@ -80,7 +80,11 @@ typedef __INT64_TYPE__ s64;
typedef __UINT64_TYPE__ u64;
#endif
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG CONFIG_SANDBOX_BITS_PER_LONG
+#endif
typedef unsigned long dma_addr_t;
typedef u32 phys_addr_t;
diff --git a/arch/sh/include/asm/types.h b/arch/sh/include/asm/types.h
index eb47b0f..82884f4 100644
--- a/arch/sh/include/asm/types.h
+++ b/arch/sh/include/asm/types.h
@@ -46,7 +46,11 @@ __extension__ typedef unsigned long long __u64;
*/
#ifdef __KERNEL__
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG 32
+#endif
#ifndef __ASSEMBLY__
diff --git a/arch/sparc/include/asm/types.h b/arch/sparc/include/asm/types.h
index 79484c5..5794152 100644
--- a/arch/sparc/include/asm/types.h
+++ b/arch/sparc/include/asm/types.h
@@ -77,7 +77,11 @@ typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG 32
+#endif
/* DMA addresses are 32-bits wide */
typedef u32 dma_addr_t;
diff --git a/arch/x86/include/asm/types.h b/arch/x86/include/asm/types.h
index 88c6645..7ff1520 100644
--- a/arch/x86/include/asm/types.h
+++ b/arch/x86/include/asm/types.h
@@ -75,7 +75,11 @@ typedef __INT64_TYPE__ s64;
typedef __UINT64_TYPE__ u64;
#endif
+#ifdef CONFIG_USE_STDINT
+#define BITS_PER_LONG ((__SIZEOF_LONG__) * 8)
+#else
#define BITS_PER_LONG 32
+#endif
/* Dma addresses are 32-bits wide. */
--
1.9.1
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 5/7] Replace "llx" with PRIx64 to fix warnings on sandbox (MAD)
2014-12-22 10:16 ` [U-Boot] [PATCH 5/7] Replace "llx" with PRIx64 to fix warnings on sandbox (MAD) Masahiro Yamada
@ 2014-12-22 12:39 ` Wolfgang Denk
2014-12-23 4:47 ` Simon Glass
1 sibling, 0 replies; 17+ messages in thread
From: Wolfgang Denk @ 2014-12-22 12:39 UTC (permalink / raw)
To: u-boot
Dear Masahiro Yamada,
In message <1419243363-11542-6-git-send-email-yamada.m@jp.panasonic.com> you wrote:
> These must be fixed to fix sandbox at least.
> (Horrible things are happening on the other boards, of course.)
>
> If we include <stdint.h>, we do not know 64bit-types are defined
> as "unsigned long long" or "unsigned long".
> (As for my 64bit GCC, __UINT64_TYPE__ is "long unsigned int")
>
> We cannot hard-code "%llx" in printf() or friends anymore.
> We must always use PRIx64 etc.
>
> (As Documentation/printk-formats.txt clearly says, Linux Kernel
> always uses "%llx" to print 64bit variables, and U-Boot used to do that.
> But we lost the convenience by commit 0d296cc and commit 4166ecb24)
I think we should reconsider these two commits, then.
The use of the PRIx?? macros is really ugly and makes the code very
hard to read. This alone should be reason to avoid that - in addition
we deviate from the Linux kernel, so adapting code from there becomes
much more difficult.
I think we should especially strive to maintain compatibility with
Linux code.
Best regards,
Wolfgang Denk
--
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
If the facts don't fit the theory, change the facts.
-- Albert Einstein
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>)
2014-12-22 10:15 [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>) Masahiro Yamada
` (6 preceding siblings ...)
2014-12-22 10:16 ` [U-Boot] [PATCH 7/7] Make BITS_PER_LONG compiler-dependent (MAD) Masahiro Yamada
@ 2014-12-22 12:43 ` Wolfgang Denk
7 siblings, 0 replies; 17+ messages in thread
From: Wolfgang Denk @ 2014-12-22 12:43 UTC (permalink / raw)
To: u-boot
Dear Masahiro,
In message <1419243363-11542-1-git-send-email-yamada.m@jp.panasonic.com> you wrote:
>
> Commit 0d296cc2d3b (Provide option to avoid defining a custome version of uintptr_t)
> and commit 4166ecb247 (Add some standard headers external code might need)
> made a horrible decision.
I fully agree with that statement.
> It looks like Simon is not understanding me.
> Nor does anybody else have any interest in this topic.
Sorry, I missed that, largely for personal reasons (resulting in even
harder than usual lack of time).
> This series is here to show what will happen next
> and how horrible it is.
Yes, it is horrible, and we should not do that. I just commented on
patch 5/7, but the applies to the whole series:
We should reconsider the aforementioned commits (read: revert and/or
replace with a more sensible implementation).
We should really make sure to 1) keep the code readable and
2) especially keep the code compatible with Linux coding.
Best regards,
Wolfgang Denk
--
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
I believe you find life such a problem because you think there are
the good people and the bad people. You're wrong, of course. There
are, always and only, the bad people, but some of them are on oppo-
site sides. - Terry Pratchett, _Guards! Guards!_
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 1/7] types.h: define (u)int8_t, (u)int16_t, (u)int32_t based on compiler info (MAD)
2014-12-22 10:15 ` [U-Boot] [PATCH 1/7] types.h: define (u)int8_t, (u)int16_t, (u)int32_t based on compiler info (MAD) Masahiro Yamada
@ 2014-12-23 4:41 ` Simon Glass
2014-12-24 8:44 ` Masahiro Yamada
0 siblings, 1 reply; 17+ messages in thread
From: Simon Glass @ 2014-12-23 4:41 UTC (permalink / raw)
To: u-boot
Hi Masahiro,
On 22 December 2014 at 03:15, Masahiro Yamada <yamada.m@jp.panasonic.com> wrote:
> The intent of this series is to show the nasty problems introduced
> by <stdint.h>.
>
> Simon and I are already discussing this in the following thread:
> http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/203954
> http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/198550/focus=205880
I'll reply on that thread but I will add a few comments on each patch as well.
>
> -----
>
> Commit 0d296cc2d3b8 (Provide option to avoid defining a custom version
> of uintptr_t.) introduced CONFIG_USE_STDINT. If it is enabled,
> <stdint.h> is included and uint64_t, u_int64_t, int64_t are defined
> based on the compiler-provided information. While, inconsistently,
> that commit left uint_{8,16,32}_t, u_int{8,16,32}t, int_{8,16,32}t
> to be hard-coded in include/linux/types.h.
>
> This causes type conflicts between the typedefs defined in the compiler's
> <stdint.h> and the ones hard-coded in include/linux/types.h.
>
> As you may know, 'uint32_t' is defined as 'unsigned long' in some compilers
> such as bare metal ARM toolchain, whereas it is defined as 'unsigned int'
> in kernel.org ones.
> (This is also clearly mentioned in Linux's arch/arm/include/asm/types.h)
In that file, it actually redefines the types so that stdint.h can be
included. Are you suggesting that we should follow the same route?
That suggests that Gabe's implementation is not correct, but not that
the whole concept is wrong.
* As the typedefs for these types in 'stdint.h' are based on builtin defines
* supplied by GCC, we can tweak these to align with the kernel's idea of those
* types, so 'linux/types.h' and 'stdint.h' can be safely included from the same
* source file (provided that -ffreestanding is used).
>
> If you make a decision to use a compiler-provided <stdint.h>,
> we cannot hard-code the fixed-width types.
> To avoid the type conflicts, we must make all of them compiler-dependent
> consistently.
>
> You can reproduce this problem, for example, with a Linaro toolchain.
>
> Visit "http://www.linaro.org/downloads/" and download "Bare-metal toolchain
> for Cortex-R/M and Cortex-A".
>
> $ make USE_STDINT=1 CROSS_COMPILE=arm-none-eabi- omap4_panda_defconfig all
> HOSTCC scripts/basic/fixdep
> HOSTCC scripts/kconfig/conf.o
> [snip]
> CC lib/asm-offsets.s
> In file included from /opt/gcc-arm-none-eabi-4_7-2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/include/stdint.h:5:0,
> from include/compiler.h:117,
> from include/image.h:19,
> from include/common.h:82,
> from lib/asm-offsets.c:15:
> /opt/gcc-arm-none-eabi-4_7-2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/include/stdint-gcc.h:40:24: error: conflicting types for 'int32_t'
> In file included from include/common.h:21:0,
> from lib/asm-offsets.c:15:
> include/linux/types.h:99:17: note: previous declaration of 'int32_t' was here
> In file included from /opt/gcc-arm-none-eabi-4_7-2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/include/stdint.h:5:0,
> from include/compiler.h:117,
> from include/image.h:19,
> from include/common.h:82,
> from lib/asm-offsets.c:15:
> /opt/gcc-arm-none-eabi-4_7-2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/include/stdint-gcc.h:52:25: error: conflicting types for 'uint32_t'
> In file included from include/common.h:21:0,
> from lib/asm-offsets.c:15:
> include/linux/types.h:105:17: note: previous declaration of 'uint32_t' was here
I suspect I have not tested this toolchain, so have not see this
problem. Perhaps this compiler cannot support stdint.h?
In any case I don't think it is necessary to fiddle with the 8, 16,
32-bit types, so this patch is not needed.
>
> Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
> Cc: Gabe Black <gabeblack@chromium.org>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Bill Richardson <wfrichar@google.com>
> Cc: Tom Rini <trini@ti.com>
> ---
>
> include/linux/types.h | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/include/linux/types.h b/include/linux/types.h
> index c9a8d9a..5549479 100644
> --- a/include/linux/types.h
> +++ b/include/linux/types.h
> @@ -91,18 +91,33 @@ typedef unsigned long ulong;
> #ifndef __BIT_TYPES_DEFINED__
> #define __BIT_TYPES_DEFINED__
>
> +#if defined(CONFIG_USE_STDINT)
> +typedef __UINT8_TYPE__ u_int8_t;
> +typedef __INT8_TYPE__ int8_t;
> +typedef __UINT16_TYPE__ u_int16_t;
> +typedef __INT16_TYPE__ int16_t;
> +typedef __UINT32_TYPE__ u_int32_t;
> +typedef __INT32_TYPE__ int32_t;
> +#else
> typedef __u8 u_int8_t;
> typedef __s8 int8_t;
> typedef __u16 u_int16_t;
> typedef __s16 int16_t;
> typedef __u32 u_int32_t;
> typedef __s32 int32_t;
> +#endif
>
> #endif /* !(__BIT_TYPES_DEFINED__) */
>
> +#if defined(CONFIG_USE_STDINT)
> +typedef __UINT8_TYPE__ uint8_t;
> +typedef __UINT16_TYPE__ uint16_t;
> +typedef __UINT32_TYPE__ uint32_t;
> +#else
> typedef __u8 uint8_t;
> typedef __u16 uint16_t;
> typedef __u32 uint32_t;
> +#endif
>
> #if defined(__GNUC__) && !defined(__STRICT_ANSI__) && \
> (!defined(CONFIG_USE_STDINT) || !defined(__INT64_TYPE__))
> --
> 1.9.1
>
Regards,
Simon
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 4/7] Check if compiler-provided <stdint.h> and <inttypes.h> are available if CONFIG_USE_STDINT=y (MAD)
2014-12-22 10:16 ` [U-Boot] [PATCH 4/7] Check if compiler-provided <stdint.h> and <inttypes.h> are available if CONFIG_USE_STDINT=y (MAD) Masahiro Yamada
@ 2014-12-23 4:46 ` Simon Glass
2014-12-24 8:44 ` Masahiro Yamada
0 siblings, 1 reply; 17+ messages in thread
From: Simon Glass @ 2014-12-23 4:46 UTC (permalink / raw)
To: u-boot
Hi Masahiro,
On 22 December 2014 at 03:16, Masahiro Yamada <yamada.m@jp.panasonic.com> wrote:
> CONFIG_USE_STDINT was introduced to use compiler-provided types for
> fixed-width variables.
> This must be consistent everywhere to avoid warnings/errors
> including printf() and friends.
>
> Assume the code below
>
> uint32_t foo;
>
> printf("foo= %x\n", foo);
>
> If <stdint.h> is included, uint32_t is defined by the compiler.
> The code above only works on compilers that define "uint32_t"
> as "unsigned int". Actually there exist compilers that define
> "uint32_t" as "unsigned long".
>
> Going forward, to print out fixed-width variables, we always have
> to use PRIxN like this
>
> uint32_t foo;
>
> printf("foo= " PRIx32 "\n", foo);
>
> Notice,
>
> - Typedefs ( uint32_t, int32_t etc.) are provided by <stdint.h>
> - Printf formats ( PRIx32, PRId32 etc.) are provided by <inttypes.h>
>
> Also notice, it makes sense only when <stdint.h> and <inttypes.h> are provided by
> the same compiler.
> ^^^^^^^^^^^^^^^^^^
>
> Commit 4166ecb24 (Add some standard headers external code might need) added
> hard-coded include/inttypes.h.
> It provides hard-coded PRIx32 "x", but it does not make sense.
> Some compiler's <stdint.h> define "uint32_t" as "unsigned long"
> and expect the format string "lx" to print out "uint32_t" variable.
>
> This commit:
> - Adds scripts/gcc-have-stdint.sh to check if the compiler is
> providing both <stdint.h> and <inttypes.h>
>
> - Modifies config.mk to error-out if CONFIG_USE_STDINT is enabled,
> but <stdint.h> or <inttyps.h> is missing
>
> - Modifies the top Makefile to delete "-nostdinc" option and allow to
> include compiler-provided <inttypes.h>
>
> - Remove hard-coded include/inttypes.h
This patch looks good to me except that I don't understand why you are
removing inttypes.h? Where will the PRI defines come from? Or is it
because you are fixing things such that the defines are not needed
anymore?
>
> Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
> Cc: Gabe Black <gabeblack@chromium.org>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Bill Richardson <wfrichar@google.com>
> Cc: Tom Rini <trini@ti.com>
> ---
>
> Makefile | 2 +-
> config.mk | 12 ++
> include/inttypes.h | 287 ---------------------------------------------
> scripts/gcc-have-stdint.sh | 21 ++++
> 4 files changed, 34 insertions(+), 288 deletions(-)
> delete mode 100644 include/inttypes.h
> create mode 100755 scripts/gcc-have-stdint.sh
>
[snip]
Regards,
Simon
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 5/7] Replace "llx" with PRIx64 to fix warnings on sandbox (MAD)
2014-12-22 10:16 ` [U-Boot] [PATCH 5/7] Replace "llx" with PRIx64 to fix warnings on sandbox (MAD) Masahiro Yamada
2014-12-22 12:39 ` Wolfgang Denk
@ 2014-12-23 4:47 ` Simon Glass
1 sibling, 0 replies; 17+ messages in thread
From: Simon Glass @ 2014-12-23 4:47 UTC (permalink / raw)
To: u-boot
Hi Masahiro,
On 22 December 2014 at 03:16, Masahiro Yamada <yamada.m@jp.panasonic.com> wrote:
> These must be fixed to fix sandbox at least.
> (Horrible things are happening on the other boards, of course.)
>
> If we include <stdint.h>, we do not know 64bit-types are defined
> as "unsigned long long" or "unsigned long".
> (As for my 64bit GCC, __UINT64_TYPE__ is "long unsigned int")
>
> We cannot hard-code "%llx" in printf() or friends anymore.
> We must always use PRIx64 etc.
>
> (As Documentation/printk-formats.txt clearly says, Linux Kernel
> always uses "%llx" to print 64bit variables, and U-Boot used to do that.
> But we lost the convenience by commit 0d296cc and commit 4166ecb24)
I think we should study how the kernel does this - basically by
redefining __UIN32_TYPE__, etc. as far as I understand it. From what
you are saying, I gather that the PRI defines will then not be needed.
>
> Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
> Cc: Gabe Black <gabeblack@chromium.org>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Bill Richardson <wfrichar@google.com>
> Cc: Tom Rini <trini@ti.com>
> ---
Regards,
Simon
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 6/7] Use PRIx32 etc. to print out 32bit-width variable (MAD)
2014-12-22 10:16 ` [U-Boot] [PATCH 6/7] Use PRIx32 etc. to print out 32bit-width variable (MAD) Masahiro Yamada
@ 2014-12-23 4:48 ` Simon Glass
0 siblings, 0 replies; 17+ messages in thread
From: Simon Glass @ 2014-12-23 4:48 UTC (permalink / raw)
To: u-boot
Hi Masahiro,
On 22 December 2014 at 03:16, Masahiro Yamada <yamada.m@jp.panasonic.com> wrote:
> If <stdint.h> is included, the definition of fixed-width types
> are compiler-dependent.
>
> For example, some compilers use "unsigned long" and some compilers
> use "unsigned int" for 32bit width typedefs.
>
> That means, we can no longer use hard-code "%x" or "%d"
> to print 32bit-width variables.
>
> We use printf() everywhere to print 32bit variables.
>
> This commit only fixes fs/fat/fat.c because I cannot imagine
> how many days I have to spend to eliminate all the warnings.
> (Of course, I do not think we should do such ridiculous things.)
>
> Just in case, I put the warnings I got for Panda board below:
Yes indeed, this patch is ugly. We need to keep 32-bit types
consistent. I felt it was possible to live with 64-bit types being
inconsistent because 64-bit printf()s are so rare. But it would be
better to avoid the inconsistency altogether.
Regards,
Simon
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 7/7] Make BITS_PER_LONG compiler-dependent (MAD)
2014-12-22 10:16 ` [U-Boot] [PATCH 7/7] Make BITS_PER_LONG compiler-dependent (MAD) Masahiro Yamada
@ 2014-12-23 4:51 ` Simon Glass
0 siblings, 0 replies; 17+ messages in thread
From: Simon Glass @ 2014-12-23 4:51 UTC (permalink / raw)
To: u-boot
Hi Masahiro,
On 22 December 2014 at 03:16, Masahiro Yamada <yamada.m@jp.panasonic.com> wrote:
> Linux expects "unsigned long" has the same bit-width as the pointer,
> i.e. the size of "unsigned long" is 4 on 32-bit compilers (ILP32)
> and it is 8 on 64-bit compilers (LLP64).
> It provides us the convenience in return of the limitation that
> LP64 data model is not supported.
>
> U-Boot used to follow Linux's way, but it does not now.
>
> Including <stdint.h> means the width of "long" type is provided by
> the compiler.
>
> Use __SIZEOF_LONG__ instead of hard-coding BITS_PER_LONG.
>
From what I can tell the size of the types is no different with and
without stdint.h. It is just the names of the typedefs that are used
for each type that changes. So if we follow the kernel approach, maybe
this patch isn't needed either?
> Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
> Cc: Gabe Black <gabeblack@chromium.org>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Bill Richardson <wfrichar@google.com>
> Cc: Tom Rini <trini@ti.com>
> ---
>
> arch/arc/include/asm/types.h | 4 ++++
> arch/arm/include/asm/types.h | 4 ++++
> arch/avr32/include/asm/types.h | 4 ++++
> arch/blackfin/include/asm/types.h | 4 ++++
> arch/m68k/include/asm/types.h | 4 ++++
> arch/microblaze/include/asm/types.h | 4 ++++
> arch/mips/include/asm/types.h | 4 ++++
> arch/nds32/include/asm/types.h | 4 ++++
> arch/nios2/include/asm/types.h | 4 ++++
> arch/openrisc/include/asm/types.h | 4 ++++
> arch/powerpc/include/asm/types.h | 4 ++++
> arch/sandbox/include/asm/types.h | 4 ++++
> arch/sh/include/asm/types.h | 4 ++++
> arch/sparc/include/asm/types.h | 4 ++++
> arch/x86/include/asm/types.h | 4 ++++
> 15 files changed, 60 insertions(+)
>
[snip]
Regards,
Simon
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 1/7] types.h: define (u)int8_t, (u)int16_t, (u)int32_t based on compiler info (MAD)
2014-12-23 4:41 ` Simon Glass
@ 2014-12-24 8:44 ` Masahiro Yamada
0 siblings, 0 replies; 17+ messages in thread
From: Masahiro Yamada @ 2014-12-24 8:44 UTC (permalink / raw)
To: u-boot
Hi Simon,
On Mon, 22 Dec 2014 21:41:48 -0700
Simon Glass <sjg@chromium.org> wrote:
> Hi Masahiro,
>
> On 22 December 2014 at 03:15, Masahiro Yamada <yamada.m@jp.panasonic.com> wrote:
> > The intent of this series is to show the nasty problems introduced
> > by <stdint.h>.
> >
> > Simon and I are already discussing this in the following thread:
> > http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/203954
> > http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/198550/focus=205880
>
> I'll reply on that thread but I will add a few comments on each patch as well.
>
> >
> > -----
> >
> > Commit 0d296cc2d3b8 (Provide option to avoid defining a custom version
> > of uintptr_t.) introduced CONFIG_USE_STDINT. If it is enabled,
> > <stdint.h> is included and uint64_t, u_int64_t, int64_t are defined
> > based on the compiler-provided information. While, inconsistently,
> > that commit left uint_{8,16,32}_t, u_int{8,16,32}t, int_{8,16,32}t
> > to be hard-coded in include/linux/types.h.
> >
> > This causes type conflicts between the typedefs defined in the compiler's
> > <stdint.h> and the ones hard-coded in include/linux/types.h.
> >
> > As you may know, 'uint32_t' is defined as 'unsigned long' in some compilers
> > such as bare metal ARM toolchain, whereas it is defined as 'unsigned int'
> > in kernel.org ones.
> > (This is also clearly mentioned in Linux's arch/arm/include/asm/types.h)
>
> In that file, it actually redefines the types so that stdint.h can be
> included. Are you suggesting that we should follow the same route?
No.
What I wanted you to notice was the type conflicts. This matrix:
* int32_t uint32_t uintptr_t
* bare metal GCC long unsigned long unsigned int
* glibc GCC int unsigned int unsigned int
* kernel int unsigned int unsigned long
Undefing __UINT32_TYPE__ etc. is an ugly workaround.
The best way is to avoid including <stdint.h>.
> That suggests that Gabe's implementation is not correct, but not that
> the whole concept is wrong.
>
> * As the typedefs for these types in 'stdint.h' are based on builtin defines
> * supplied by GCC, we can tweak these to align with the kernel's idea of those
> * types, so 'linux/types.h' and 'stdint.h' can be safely included from the same
> * source file (provided that -ffreestanding is used).
Accoding to Documentation/arm/kernel_mode_neon.txt,
the kernel deos not want to include <stdint.h>.
It wants to <arm_neon.h> but unfortunately <arm_neon.h> is including <stdint.h>.
That is the difference: it looks like you like to include <stdint.h>.
> >
> > If you make a decision to use a compiler-provided <stdint.h>,
> > we cannot hard-code the fixed-width types.
> > To avoid the type conflicts, we must make all of them compiler-dependent
> > consistently.
> >
> > You can reproduce this problem, for example, with a Linaro toolchain.
> >
> > Visit "http://www.linaro.org/downloads/" and download "Bare-metal toolchain
> > for Cortex-R/M and Cortex-A".
> >
> > $ make USE_STDINT=1 CROSS_COMPILE=arm-none-eabi- omap4_panda_defconfig all
> > HOSTCC scripts/basic/fixdep
> > HOSTCC scripts/kconfig/conf.o
> > [snip]
> > CC lib/asm-offsets.s
> > In file included from /opt/gcc-arm-none-eabi-4_7-2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/include/stdint.h:5:0,
> > from include/compiler.h:117,
> > from include/image.h:19,
> > from include/common.h:82,
> > from lib/asm-offsets.c:15:
> > /opt/gcc-arm-none-eabi-4_7-2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/include/stdint-gcc.h:40:24: error: conflicting types for 'int32_t'
> > In file included from include/common.h:21:0,
> > from lib/asm-offsets.c:15:
> > include/linux/types.h:99:17: note: previous declaration of 'int32_t' was here
> > In file included from /opt/gcc-arm-none-eabi-4_7-2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/include/stdint.h:5:0,
> > from include/compiler.h:117,
> > from include/image.h:19,
> > from include/common.h:82,
> > from lib/asm-offsets.c:15:
> > /opt/gcc-arm-none-eabi-4_7-2013q1/bin/../lib/gcc/arm-none-eabi/4.7.3/include/stdint-gcc.h:52:25: error: conflicting types for 'uint32_t'
> > In file included from include/common.h:21:0,
> > from lib/asm-offsets.c:15:
> > include/linux/types.h:105:17: note: previous declaration of 'uint32_t' was here
>
> I suspect I have not tested this toolchain, so have not see this
> problem. Perhaps this compiler cannot support stdint.h?
It does support stdint.h.
It is not the compiler's fault, but your and Gabe's fault.
> In any case I don't think it is necessary to fiddle with the 8, 16,
> 32-bit types, so this patch is not needed.
>
As I wrote in another reply, please answer:
Why do you want to change the 64bit-types only?
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 17+ messages in thread
* [U-Boot] [PATCH 4/7] Check if compiler-provided <stdint.h> and <inttypes.h> are available if CONFIG_USE_STDINT=y (MAD)
2014-12-23 4:46 ` Simon Glass
@ 2014-12-24 8:44 ` Masahiro Yamada
0 siblings, 0 replies; 17+ messages in thread
From: Masahiro Yamada @ 2014-12-24 8:44 UTC (permalink / raw)
To: u-boot
Hi Simon,
On Mon, 22 Dec 2014 21:46:26 -0700
Simon Glass <sjg@chromium.org> wrote:
> Hi Masahiro,
>
> On 22 December 2014 at 03:16, Masahiro Yamada <yamada.m@jp.panasonic.com> wrote:
> > CONFIG_USE_STDINT was introduced to use compiler-provided types for
> > fixed-width variables.
> > This must be consistent everywhere to avoid warnings/errors
> > including printf() and friends.
> >
> > Assume the code below
> >
> > uint32_t foo;
> >
> > printf("foo= %x\n", foo);
> >
> > If <stdint.h> is included, uint32_t is defined by the compiler.
> > The code above only works on compilers that define "uint32_t"
> > as "unsigned int". Actually there exist compilers that define
> > "uint32_t" as "unsigned long".
> >
> > Going forward, to print out fixed-width variables, we always have
> > to use PRIxN like this
> >
> > uint32_t foo;
> >
> > printf("foo= " PRIx32 "\n", foo);
> >
> > Notice,
> >
> > - Typedefs ( uint32_t, int32_t etc.) are provided by <stdint.h>
> > - Printf formats ( PRIx32, PRId32 etc.) are provided by <inttypes.h>
> >
> > Also notice, it makes sense only when <stdint.h> and <inttypes.h> are provided by
> > the same compiler.
> > ^^^^^^^^^^^^^^^^^^
> >
> > Commit 4166ecb24 (Add some standard headers external code might need) added
> > hard-coded include/inttypes.h.
> > It provides hard-coded PRIx32 "x", but it does not make sense.
> > Some compiler's <stdint.h> define "uint32_t" as "unsigned long"
> > and expect the format string "lx" to print out "uint32_t" variable.
> >
> > This commit:
> > - Adds scripts/gcc-have-stdint.sh to check if the compiler is
> > providing both <stdint.h> and <inttypes.h>
> >
> > - Modifies config.mk to error-out if CONFIG_USE_STDINT is enabled,
> > but <stdint.h> or <inttyps.h> is missing
> >
> > - Modifies the top Makefile to delete "-nostdinc" option and allow to
> > include compiler-provided <inttypes.h>
> >
> > - Remove hard-coded include/inttypes.h
>
> This patch looks good to me except that I don't understand why you are
> removing inttypes.h? Where will the PRI defines come from? Or is it
> because you are fixing things such that the defines are not needed
> anymore?
According to this question, I am afraid you are not understanding <inttypes.h> very well.
Maybe is this page useful?
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/inttypes.h.html
My commit description has also answered your question:
Notice,
- Typedefs ( uint32_t, int32_t etc.) are provided by <stdint.h>
- Printf formats ( PRIx32, PRId32 etc.) are provided by <inttypes.h>
Also notice, it makes sense only when <stdint.h> and <inttypes.h> are provided by
the same compiler.
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2014-12-24 8:44 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-22 10:15 [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>) Masahiro Yamada
2014-12-22 10:15 ` [U-Boot] [PATCH 1/7] types.h: define (u)int8_t, (u)int16_t, (u)int32_t based on compiler info (MAD) Masahiro Yamada
2014-12-23 4:41 ` Simon Glass
2014-12-24 8:44 ` Masahiro Yamada
2014-12-22 10:15 ` [U-Boot] [PATCH 2/7] types.h: define s8, s16, s32, s64, u8, u16, u32, u64 " Masahiro Yamada
2014-12-22 10:15 ` [U-Boot] [PATCH 3/7] types: defined __s8, __16, __s32, __s64, __u8, __u16, __u32, __u64 " Masahiro Yamada
2014-12-22 10:16 ` [U-Boot] [PATCH 4/7] Check if compiler-provided <stdint.h> and <inttypes.h> are available if CONFIG_USE_STDINT=y (MAD) Masahiro Yamada
2014-12-23 4:46 ` Simon Glass
2014-12-24 8:44 ` Masahiro Yamada
2014-12-22 10:16 ` [U-Boot] [PATCH 5/7] Replace "llx" with PRIx64 to fix warnings on sandbox (MAD) Masahiro Yamada
2014-12-22 12:39 ` Wolfgang Denk
2014-12-23 4:47 ` Simon Glass
2014-12-22 10:16 ` [U-Boot] [PATCH 6/7] Use PRIx32 etc. to print out 32bit-width variable (MAD) Masahiro Yamada
2014-12-23 4:48 ` Simon Glass
2014-12-22 10:16 ` [U-Boot] [PATCH 7/7] Make BITS_PER_LONG compiler-dependent (MAD) Masahiro Yamada
2014-12-23 4:51 ` Simon Glass
2014-12-22 12:43 ` [U-Boot] [PATCH 0/7] Crazy patches (Nightmare of <stdint.h>) Wolfgang Denk
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.