mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01:00 
			
		
		
		
	test: Add a simple test to detected warnings with uint64_t, uintptr_t
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>
This commit is contained in:
		
							
								
								
									
										13
									
								
								test/stdint/int-types.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								test/stdint/int-types.c
									
									
									
									
									
										Normal file
									
								
							| @@ -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); | ||||||
|  | } | ||||||
							
								
								
									
										58
									
								
								test/stdint/test-includes.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										58
									
								
								test/stdint/test-includes.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -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 | ||||||
		Reference in New Issue
	
	Block a user