
On 10/29/2015 10:16 AM, Simon Glass wrote:
Hi York,
On 19 October 2015 at 11:30, York Sun yorksun@freescale.com wrote:
On 10/18/2015 04:15 PM, Simon Glass wrote:
Hi,
On 18 October 2015 at 06:18, Simon Glass sjg@chromium.org wrote:
On 9 September 2015 at 12:07, Simon Glass sjg@chromium.org wrote:
On Friday, 4 September 2015, York Sun yorksun@freescale.com wrote:
FIT image supports more than 32 bits in addresses by using #address-cell field. However the address length is not handled when parsing FIT images. Beside, the variable used to host address has "ulong" type. It is OK for the target, but not always enough for host tools such as mkimage. This patch replaces "ulong" with "phys_addr_t" to make sure the address is correct for both the target and the host.
Signed-off-by: York Sun yorksun@freescale.com
Changes in v3: Define PRIpa for host and target in common/image-fit.c so printf works properly for 32-, 64-bit targets and host tools.
Changes in v2: Make a common function for both load and entry addresses. Simplify calculation of addresses in a similar way as fdtdec_get_number() fdtdec_get_number() is not used, or too many files need to be included and/or twisted for host tool Continue to use %08llx for print format for load and entry addresses because %pa does not always work for host tool (mkimage)
common/bootm.c | 13 +++++---- common/image-fit.c | 81 +++++++++++++++++++++++++++++----------------------- include/bootm.h | 6 ++-- include/image.h | 12 +++++--- 4 files changed, 63 insertions(+), 49 deletions(-)
Acked-by: Simon Glass sjg@chromium.org
Unfortunately this produces lots of warnings on sandbox. Can you please take a look?
/usr/local/google/c/cosarm/src/third_party/u-boot/files/common/bootm.c: In function ‘bootm_find_os’: /usr/local/google/c/cosarm/src/third_party/u-boot/files/common/bootm.c:146:12: warning: passing argument 3 of ‘fit_image_get_load’ from incompatible pointer type [enabled by default] &images.os.load)) { ^ In file included from /usr/local/google/c/cosarm/src/third_party/u-boot/files/include/common.h:82:0, from /usr/local/google/c/cosarm/src/third_party/u-boot/files/common/bootm.c:9: /usr/local/google/c/cosarm/src/third_party/u-boot/files/include/image.h:851:5: note: expected ‘phys_addr_t *’ but argument is of type ‘ulong *’ int fit_image_get_load(const void *fit, int noffset, phys_addr_t *load); ^
Simon,
This warning is buried by tons of other warnings when compiling sandbox. I believe it is caused by the typedef of phys_addr_t for sandbox. How about a fix like this?
diff --git a/arch/sandbox/include/asm/types.h b/arch/sandbox/include/asm/types.h index 42c09e2..c3bb76e 100644 --- a/arch/sandbox/include/asm/types.h +++ b/arch/sandbox/include/asm/types.h @@ -53,8 +53,8 @@ typedef __UINT64_TYPE__ u64; #define BITS_PER_LONG CONFIG_SANDBOX_BITS_PER_LONG
typedef unsigned long dma_addr_t; -typedef u32 phys_addr_t; -typedef u32 phys_size_t; +typedef unsigned long phys_addr_t; +typedef unsigned long phys_size_t;
Sandbox is supposed to use a 32-bit memory model regardless of the host. What other warnings do you see? I don't see any when I build it.
Maybe I did something wrong. Here is my log
$ make sandbox_defconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o SHIPPED scripts/kconfig/zconf.tab.c SHIPPED scripts/kconfig/zconf.lex.c SHIPPED scripts/kconfig/zconf.hash.c HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf # # configuration written to .config # $ make -s -j8 disk/part_efi.c: In function ‘alloc_read_gpt_entries’: disk/part_efi.c:752:2: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 5 has type ‘long unsigned int’ [-Wformat] disk/part_efi.c:765:4: warning: format ‘%zX’ expects argument of type ‘size_t’, but argument 3 has type ‘long unsigned int’ [-Wformat] drivers/mtd/spi/sf.c: In function ‘spi_flash_read_write’: drivers/mtd/spi/sf.c:30:3: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 2 has type ‘long unsigned int’ [-Wformat] drivers/mtd/spi/sf.c:36:4: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 2 has type ‘long unsigned int’ [-Wformat] drivers/mtd/spi/sf_ops.c: In function ‘spi_flash_cmd_write_ops’: drivers/mtd/spi/sf_ops.c:343:3: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 7 has type ‘long unsigned int’ [-Wformat] drivers/mtd/spi/sf_ops.c: In function ‘sst_write_wp’: drivers/mtd/spi/sf_ops.c:538:2: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 3 has type ‘long unsigned int’ [-Wformat] drivers/mtd/spi/sf_ops.c:538:2: warning: format ‘%zx’ expects argument of type ‘size_t’, but argument 4 has type ‘long unsigned int’ [-Wformat] drivers/mtd/spi/sf_ops.c: In function ‘sst_write_bp’: drivers/mtd/spi/sf_ops.c:569:2: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 3 has type ‘long unsigned int’ [-Wformat] drivers/mtd/spi/sf_ops.c:569:2: warning: format ‘%zx’ expects argument of type ‘size_t’, but argument 4 has type ‘long unsigned int’ [-Wformat] drivers/tpm/tpm-uclass.c: In function ‘tpm_xfer’: drivers/tpm/tpm-uclass.c:92:3: warning: format ‘%zx’ expects argument of type ‘size_t’, but argument 3 has type ‘long unsigned int’ [-Wformat] drivers/tpm/tpm_tis_sandbox.c: In function ‘sandbox_tpm_xfer’: drivers/tpm/tpm_tis_sandbox.c:152:9: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 2 has type ‘size_t’ [-Wformat] drivers/tpm/tpm_tis_sandbox.c:152:9: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 3 has type ‘size_t’ [-Wformat] common/cmd_pxe.c: In function ‘format_mac_pxe’: common/cmd_pxe.c:68:3: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 2 has type ‘size_t’ [-Wformat] common/cmd_pxe.c: In function ‘get_bootfile_path’: common/cmd_pxe.c:114:5: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 2 has type ‘size_t’ [-Wformat] common/cmd_pxe.c:114:5: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 3 has type ‘size_t’ [-Wformat] common/cmd_pxe.c: In function ‘label_boot’: common/cmd_pxe.c:690:11: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 2 has type ‘__kernel_size_t’ [-Wformat] common/cmd_pxe.c:690:11: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 3 has type ‘__kernel_size_t’ [-Wformat] common/cmd_pxe.c:690:11: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 4 has type ‘__kernel_size_t’ [-Wformat] common/cmd_sf.c: In function ‘spi_flash_update_block’: common/cmd_sf.c:174:2: warning: format ‘%zx’ expects argument of type ‘size_t’, but argument 4 has type ‘long unsigned int’ [-Wformat] common/cmd_sf.c:181:3: warning: format ‘%zx’ expects argument of type ‘size_t’, but argument 3 has type ‘long unsigned int’ [-Wformat] common/cmd_sf.c: In function ‘spi_flash_update’: common/cmd_sf.c:236:9: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 2 has type ‘long unsigned int’ [-Wformat] common/cmd_sf.c:254:9: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 2 has type ‘long unsigned int’ [-Wformat] common/cmd_sf.c:254:9: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 3 has type ‘long unsigned int’ [-Wformat] common/cmd_sf.c: In function ‘do_spi_flash_read_write’: common/cmd_sf.c:307:10: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 2 has type ‘long unsigned int’ [-Wformat] common/cmd_sf.c: In function ‘do_spi_flash_erase’: common/cmd_sf.c:346:9: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 2 has type ‘ulong’ [-Wformat] common/cmd_nvedit.c: In function ‘do_env_export’: common/cmd_nvedit.c:929:3: warning: format ‘%zX’ expects argument of type ‘size_t’, but argument 3 has type ‘long unsigned int’ [-Wformat] common/cmd_nvedit.c: In function ‘do_env_import’: common/cmd_nvedit.c:1062:3: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 2 has type ‘long unsigned int’ [-Wformat] common/cmd_nvedit.c:1062:3: warning: format ‘%zX’ expects argument of type ‘size_t’, but argument 3 has type ‘long unsigned int’ [-Wformat] common/malloc_simple.c: In function ‘malloc_simple’: common/malloc_simple.c:22:2: warning: format ‘%zx’ expects argument of type ‘size_t’, but argument 3 has type ‘long unsigned int’ [-Wformat] lib/lzma/LzmaTools.c: In function ‘lzmaBuffToBuffDecompress’: lib/lzma/LzmaTools.c:94:5: warning: format ‘%zx’ expects argument of type ‘size_t’, but argument 2 has type ‘SizeT’ [-Wformat] lib/lzma/LzmaTools.c:95:5: warning: format ‘%zx’ expects argument of type ‘size_t’, but argument 2 has type ‘SizeT’ [-Wformat] lib/lzma/LzmaTools.c:115:5: warning: format ‘%zx’ expects argument of type ‘size_t’, but argument 2 has type ‘SizeT’ [-Wformat] common/cli_simple.c: In function ‘cli_simple_process_macros’: common/cli_simple.c:73:2: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 2 has type ‘__kernel_size_t’ [-Wformat] common/cli_simple.c:162:2: warning: format ‘%zd’ expects argument of type ‘signed size_t’, but argument 2 has type ‘__kernel_size_t’ [-Wformat] lib/lz4_wrapper.c: In function ‘ulz4fn’: lib/lz4_wrapper.c:111:18: warning: comparison of distinct pointer types lacks a cast [enabled by default] lib/hashtable.c: In function ‘hexport_r’: lib/hashtable.c:605:2: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 5 has type ‘long unsigned int’ [-Wformat] lib/hashtable.c:661:5: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 2 has type ‘long unsigned int’ [-Wformat] lib/hashtable.c:661:5: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 3 has type ‘long unsigned int’ [-Wformat] lib/hashtable.c: In function ‘himport_r’: lib/hashtable.c:793:3: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 2 has type ‘long unsigned int’ [-Wformat]
I don't need to specify ARCH or CROSS_COMPILE to build sandbox, do I?
York