These types are problematic because they are typically declared in a non-standard way in U-Boot. For example, U-Boot uses 'long long' for int64_t even on a 64-bit machine whereas stdint.h uses 'long'. Similarly, U-Boot always uses 'long' for intptr_t whereas stdint.h mostly uses 'int'. This simple test script runs a few toolchains on a few archs to check for warnings. Signed-off-by: Simon Glass <sjg@chromium.org>master
parent
4fd074de03
commit
b01495e644
@ -0,0 +1,13 @@ |
||||
#include <common.h> |
||||
#include <inttypes.h> |
||||
|
||||
int test_types(void) |
||||
{ |
||||
uintptr_t uintptr = 0; |
||||
uint64_t uint64 = 0; |
||||
u64 u64_val = 0; |
||||
|
||||
printf("uintptr = %" PRIuPTR "\n", uintptr); |
||||
printf("uint64 = %" PRIu64 "\n", uint64); |
||||
printf("u64 = %" PRIu64 "\n", u64_val); |
||||
} |
@ -0,0 +1,58 @@ |
||||
#!/bin/bash |
||||
|
||||
# Test script to check uintptr_t and 64-bit types for warnings |
||||
# |
||||
# It builds a few boards with different toolchains. If there are no warnings |
||||
# then all is well. |
||||
# |
||||
# Usage: |
||||
# |
||||
# Make sure that your toolchains are correct at the bottom of this file |
||||
# |
||||
# Then: |
||||
# ./test/stdint/test-includes.sh |
||||
|
||||
out=/tmp/test-includes.tmp |
||||
|
||||
try_test() { |
||||
local board=$1 |
||||
local arch=$2 |
||||
local soc=$3 |
||||
local gcc=$4 |
||||
local flags="$5" |
||||
|
||||
echo $@ |
||||
if ! which ${gcc} >/dev/null 2>&1; then |
||||
echo "Not found: ${gcc}" |
||||
return |
||||
fi |
||||
|
||||
rm -rf ${out} |
||||
mkdir -p ${out} |
||||
touch ${out}/config.h |
||||
mkdir -p ${out}/generated |
||||
touch ${out}/generated/generic-asm-offsets.h |
||||
mkdir -p ${out}/include/asm |
||||
ln -s $(pwd)/arch/${arch}/include/asm/arch-${soc} \ |
||||
${out}/include/asm/arch |
||||
|
||||
cmd="${gcc} -c -D__KERNEL__ ${flags} \ |
||||
-fno-builtin -ffreestanding \ |
||||
-Iarch/${arch}/include \ |
||||
-Iinclude \ |
||||
-I${out} -I${out}/include \ |
||||
-include configs/${board}.h test/stdint/int-types.c \ |
||||
-o /dev/null" |
||||
$cmd |
||||
} |
||||
|
||||
# Run a test with and without CONFIG_USE_STDINT |
||||
try_both() { |
||||
try_test $@ |
||||
try_test $@ -DCONFIG_USE_STDINT |
||||
} |
||||
|
||||
# board arch soc path-to-gcc |
||||
try_both sandbox sandbox - gcc |
||||
try_both coreboot x86 - x86_64-linux-gnu-gcc |
||||
try_both seaboard arm tegra20 /opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux/bin/arm-linux-gnueabihf-gcc |
Loading…
Reference in new issue