Skip to contentSkip to conversation

cmd_sf warning on size_t

U-Boot New Thomas Chou 5 participants 19 messages Dec 14, 2011 – Dec 17, 2011 VFAT/FAT/msdos filesystem

lore
Share & tools
lore
#0 lore raw

Hi Mike,

I got this warning on cmd_sf.c,

cmd_sf.c: In function `spi_flash_update_block':
cmd_sf.c:130: warning: unsigned int format, size_t arg (arg 4) cmd_sf.c:135: warning: unsigned int format, size_t arg (arg 3)

It was related to our arch/avr32|blackfin|nios2/asm/posix_types.h typedef unsigned long __kernel_size_t;

While most other 32 bits archs use unsigned int, we three use unsigned long.

It is said in linux-2.6/include/asm-generic/posix_types.h /*
* Most 32 bit architectures use "unsigned int" size_t,
* and all 64 bit architectures use "unsigned long" size_t. */

Shall we fix the cmd_sf.c, or shall I change size_t to unsigned int as other 32 bits archs do?

Best regards,
Thomas

#1 lore raw

Dear Thomas Chou,

Quoted 7 lines · Thomas Chou

Hi Mike,

I got this warning on cmd_sf.c,

cmd_sf.c: In function `spi_flash_update_block':
cmd_sf.c:130: warning: unsigned int format, size_t arg (arg 4) cmd_sf.c:135: warning: unsigned int format, size_t arg (arg 3)

I tumble over this these days too.

Quoted 6 lines

It was related to our arch/avr32|blackfin|nios2/asm/posix_types.h typedef unsigned long __kernel_size_t;

While most other 32 bits archs use unsigned int, we three use unsigned long.

Quoted 8 lines

It is said in linux-2.6/include/asm-generic/posix_types.h /*
* Most 32 bit architectures use "unsigned int" size_t,
* and all 64 bit architectures use "unsigned long" size_t. */

Shall we fix the cmd_sf.c, or shall I change size_t to unsigned int as other 32 bits archs do?

I tend to fix the cmd_sf.c and arch/avr32/cpu/at32ap700x/mmu.c ->
mmu.c:25: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'uintptr_t'

I have already a patch, and would send it.

best regards

Andreas Bie?mann

#2 lore raw

[U-Boot] [PATCH/RFC] fix several printf() modifiers

In reply to Thomas Chou

From: Andreas Bie?mann <[email protected]>

Some architectures define size_t to unsigned long even though they are 32 bit architectures.

This patch fixes several warnings when running MAKEALL for avr32 architecture:

---8<---
mmu.c: In function 'mmu_init_r':
mmu.c:25: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'uintptr_t' fat.c: In function 'do_fat_read':
fat.c:879: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int' cmd_sf.c: In function 'spi_flash_update_block':
cmd_sf.c:130: warning: format '%#x' expects type 'unsigend int', but argument 4 has type 'size_t' cmd_sf.c:135: warning: format '%x' expects type 'unsigned int', but argument 3 has type 'size_t' --->8---

cc Mike Frysinger <[email protected]>
cc Thomas Chou <[email protected]>
---
 arch/avr32/cpu/at32ap700x/mmu.c |    2 +-
 common/cmd_sf.c                 |    4 ++--
 fs/fat/fat.c                    |    2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)
arch/avr32/cpu/at32ap700x/mmu.c +1 -1
index c3a1b93..fda06a9 100644
@@ -22,7 +22,7 @@ void mmu_init_r(unsigned long dest_addr)
 	 */
 	vmr_table_addr = (uintptr_t)&mmu_vmr_table;
 	sysreg_write(PTBR, vmr_table_addr);
-	printf("VMR table @ 0x%08x\n", vmr_table_addr);
+	printf("VMR table @ %#lx\n", vmr_table_addr);
 
 	/* Enable paging */
 	sysreg_write(MMUCR, SYSREG_BF(DRP, 1) | SYSREG_BF(DLA, 1)
common/cmd_sf.c +2 -2
index 7225656..612fd18 100644
@@ -127,12 +127,12 @@ static int do_spi_flash_probe(int argc, char * const argv[])
 static const char *spi_flash_update_block(struct spi_flash *flash, u32 offset,
 		size_t len, const char *buf, char *cmp_buf, size_t *skipped)
 {
-	debug("offset=%#x, sector_size=%#x, len=%#x\n",
+	debug("offset=%#x, sector_size=%#x, len=%#zx\n",
 		offset, flash->sector_size, len);
 	if (spi_flash_read(flash, offset, len, cmp_buf))
 		return "read";
 	if (memcmp(cmp_buf, buf, len) == 0) {
-		debug("Skip region %x size %x: no change\n",
+		debug("Skip region %x size %zx: no change\n",
 			offset, len);
 		*skipped += len;
 		return NULL;
fs/fat/fat.c +1 -1
index 9a29458..dbb8db9 100644
@@ -876,7 +876,7 @@ do_fat_read (const char *filename, void *buffer, unsigned long maxsize,
 	while (1) {
 		int i;
 
-		debug("FAT read sect=%d, clust_size=%d, DIRENTSPERBLOCK=%d\n",
+		debug("FAT read sect=%d, clust_size=%d, DIRENTSPERBLOCK=%zd\n",
 			cursect, mydata->clust_size, DIRENTSPERBLOCK);
 
 		if (disk_read(cursect,
Signature · 1 line
1.7.7.3
author Tested-by
#3 lore raw

[U-Boot] [PATCH/RFC] fix several printf() modifiers

Quoted 6 lines · Andreas Bie?mann

From: Andreas Bie?mann<[email protected]>

Some architectures define size_t to unsigned long even though they are 32 bit architectures.

This patch fixes several warnings when running MAKEALL for avr32 architecture:

Hi Andreas,

Thanks. I have tested cmd_sf and fat.

I would suggest splitting this patch into three, as they related to different custodians.

Best regards,
Thomas

#4 lore raw

[U-Boot] [PATCH/RFC] fix several printf() modifiers

Hi Thomas,

Quoted 6 lines · Thomas Chou
Quoted 4 lines · Andreas Bie?mann

From: Andreas Bie?mann<[email protected]>

Some architectures define size_t to unsigned long even though they are

32 bit

Quoted 3 lines
Quoted 3 lines

architectures.

This patch fixes several warnings when running MAKEALL for avr32

architecture:

Quoted 9 lines

Hi Andreas,

Thanks. I have tested cmd_sf and fat.

I would suggest splitting this patch into three, as they related to

different custodians.

No, that is not true - the patch is a single logical unit

The three maintainers can each provide an Ack

Regards,

Graeme

#5 lore raw

[U-Boot] [PATCH/RFC] fix several printf() modifiers

Quoted 5 lines · On Wednesday 14 December 2011 21:39:48 Graeme Russ wrote:
Quoted 2 lines · Thomas Chou

I would suggest splitting this patch into three, as they related to different custodians.

No, that is not true - the patch is a single logical unit

meh. no need to keep them as one.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111215/d7176f13/attachment.pgp>

#6 lore raw

[U-Boot] [PATCH/RFC] fix several printf() modifiers

In reply to Andreas Bießmann

arch/avr32/cpu/at32ap700x/mmu.c void mmu_init_r(unsigned long dest_addr) · line 25

Quoted 5 lines · On Wednesday 14 December 2011 05:04:07 Andreas Bie?mann wrote:
arch/avr32/cpu/at32ap700x/mmu.c +1 -1
 
-	printf("VMR table @ 0x%08x\n", vmr_table_addr);
+	printf("VMR table @ %#lx\n", vmr_table_addr);

this isn't the same. probably should be %08lx.

Quoted 11 lines
common/cmd_sf.c +2 -2
 
-	debug("offset=%#x, sector_size=%#x, len=%#x\n",
+	debug("offset=%#x, sector_size=%#x, len=%#zx\n",
 
-		debug("Skip region %x size %x: no change\n",
+		debug("Skip region %x size %zx: no change\n",

fs/fat/fat.c do_fat_read (const char *filename, void *buffer, unsigned long maxsize, · line 879

Quoted 3 lines
fs/fat/fat.c +1 -1
 
-		debug("FAT read sect=%d, clust_size=%d, DIRENTSPERBLOCK=%d\n",
+		debug("FAT read sect=%d, clust_size=%d, DIRENTSPERBLOCK=%zd\n",

these look good.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111215/e0092fcb/attachment.pgp>

#7 lore raw

[U-Boot] [PATCH/RFC] fix several printf() modifiers

Dear Mike Frysinger,

Quoted 8 lines · Mike Frysinger

arch/avr32/cpu/at32ap700x/mmu.c void mmu_init_r(unsigned long dest_addr) · line 25

Quoted 5 lines · On Wednesday 14 December 2011 05:04:07 Andreas Bie?mann wrote:
arch/avr32/cpu/at32ap700x/mmu.c +1 -1
 
-	printf("VMR table @ 0x%08x\n", vmr_table_addr);
+	printf("VMR table @ %#lx\n", vmr_table_addr);

this isn't the same. probably should be %08lx.

You are right, but as you may know the memory map for at32ap7000 has its SDRAM physically at 0x10000000. Therefore the result will be the same for 0x%08lx and %#lx (in all currently available boards). But maybe one will locate the vmr_table sometimes in SRAM some day?

I will provide v2 which change this back, split off in three patches and add the respective custodian in cc.

best regards

Andreas Bie?mann

#8 lore raw

[U-Boot] [PATCH/RFC] fix several printf() modifiers

Quoted 5 lines · On Thursday 15 December 2011 03:30:37 Andreas Bie?mann wrote:
Quoted 4 lines · Mike Frysinger
Quoted 3 lines · On Wednesday 14 December 2011 05:04:07 Andreas Bie?mann wrote:
arch/avr32/cpu/at32ap700x/mmu.c +0 -0
Quoted 8 lines
Quoted 4 lines

arch/avr32/cpu/at32ap700x/mmu.c void mmu_init_r(unsigned long dest_addr) · line 25

Quoted 2 lines
arch/avr32/cpu/at32ap700x/mmu.c +1 -1
-	printf("VMR table @ 0x%08x\n", vmr_table_addr);
+	printf("VMR table @ %#lx\n", vmr_table_addr);

this isn't the same. probably should be %08lx.

You are right, but as you may know the memory map for at32ap7000 has its SDRAM physically at 0x10000000. Therefore the result will be the same for 0x%08lx and %#lx (in all currently available boards).

i don't know anything about AVR32 ;)

Quoted 1 line

But maybe one will locate the vmr_table sometimes in SRAM some day?

seems safer, although probably unlikely as i think the AVR32 is pretty much dead nowadays ?
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111215/6a4b7ec0/attachment.pgp>

#9 lore raw

v2 cover fix several printf() length modifers

In reply to Andreas Bießmann

From: Andreas Bie?mann <[email protected]>

Andreas Bie?mann (3):
cmd_sf.c: fix printf() length modifier
fat.c: fix printf() length modifier
avr32:mmu.c: fix printf() length modifier

 arch/avr32/cpu/at32ap700x/mmu.c |    2 +-
 common/cmd_sf.c                 |    4 ++--
 fs/fat/fat.c                    |    2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)
Signature · 1 line
1.7.7.3
#10 lore raw

PATCH v2 1/3 cmd_sf.c: fix printf() length modifier

From: Andreas Bie?mann <[email protected]>

size_t is not always 'unsigned int', use corret length modifer.

This patch fixes following warning:

---8<---
cmd_sf.c: In function 'spi_flash_update_block':
cmd_sf.c:130: warning: format '%#x' expects type 'unsigend int', but argument 4 has type 'size_t' cmd_sf.c:135: warning: format '%x' expects type 'unsigned int', but argument 3 has type 'size_t' --->8---

cc Mike Frysinger <[email protected]>
cc Thomas Chou <[email protected]>

---
changes since v1: split off into single patches

total: 0 errors, 0 warnings, 14 lines checked

NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX MULTISTATEMENT_MACRO_USE_DO_WHILE

0001-cmd_sf.c-fix-printf-length-modifier.patch has no obvious style problems and is ready for submission.

 common/cmd_sf.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
common/cmd_sf.c +2 -2
index 7225656..612fd18 100644
@@ -127,12 +127,12 @@ static int do_spi_flash_probe(int argc, char * const argv[])
 static const char *spi_flash_update_block(struct spi_flash *flash, u32 offset,
 		size_t len, const char *buf, char *cmp_buf, size_t *skipped)
 {
-	debug("offset=%#x, sector_size=%#x, len=%#x\n",
+	debug("offset=%#x, sector_size=%#x, len=%#zx\n",
 		offset, flash->sector_size, len);
 	if (spi_flash_read(flash, offset, len, cmp_buf))
 		return "read";
 	if (memcmp(cmp_buf, buf, len) == 0) {
-		debug("Skip region %x size %x: no change\n",
+		debug("Skip region %x size %zx: no change\n",
 			offset, len);
 		*skipped += len;
 		return NULL;
Signature · 1 line
1.7.7.3
#11 lore raw

PATCH v2 1/3 cmd_sf.c: fix printf() length modifier

if it doesn't get picked up by someone else, i'll push via my sf branch -mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20111215/11f2226f/attachment.pgp>

#12 lore raw

PATCH v2 1/3 cmd_sf.c: fix printf() length modifier

In reply to Andreas Bießmann

Dear =?UTF-8?q?Andreas=20Bie=C3=9Fmann?=,

Quoted 18 lines · In message <[email protected]>…

From: Andreas Bie?mann <[email protected]>

size_t is not always 'unsigned int', use corret length modifer.

This patch fixes following warning:

---8<---
cmd_sf.c: In function 'spi_flash_update_block':
cmd_sf.c:130: warning: format '%#x' expects type 'unsigend int', but argument 4 has type 'size_t' cmd_sf.c:135: warning: format '%x' expects type 'unsigned int', but argument 3 has type 'size_t' --->8---

cc Mike Frysinger <[email protected]>
cc Thomas Chou <[email protected]>

---
changes since v1: split off into single patches

Quoted 8 lines

total: 0 errors, 0 warnings, 14 lines checked

NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX MULTISTATEMENT_MACRO_USE_DO_WHILE

0001-cmd_sf.c-fix-printf-length-modifier.patch has no obvious style problems and is ready for submission.

 common/cmd_sf.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Applied to "next" branch, thanks.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Anything that is worth doing at all is worth doing well.
                                       -- Philip Earl of Chesterfield
#13 lore raw

PATCH v2 2/3 fat.c: fix printf() length modifier

In reply to Andreas Bießmann

From: Andreas Bie?mann <[email protected]>

The DIRENTSPERBLOCK utilizes sizeof() which will return a size_t which has no fixed size. Therefor use correct length modifer for printf() statement to prevent compiler warnings.

This patch fixes following warning:

---8<---
fat.c: In function 'do_fat_read':
fat.c:879: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int' --->8---

cc Mike Frysinger <[email protected]>
cc Thomas Chou <[email protected]>
cc rjones at nexus-tech.net
cc kharris at nexus-tech.net

---
changes since v1: split off into single patches

total: 0 errors, 0 warnings, 8 lines checked

NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX MULTISTATEMENT_MACRO_USE_DO_WHILE

0002-fat.c-fix-printf-length-modifier.patch has no obvious style problems and is ready for submission.

 fs/fat/fat.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
fs/fat/fat.c +1 -1
index 9a29458..dbb8db9 100644
@@ -876,7 +876,7 @@ do_fat_read (const char *filename, void *buffer, unsigned long maxsize,
 	while (1) {
 		int i;
 
-		debug("FAT read sect=%d, clust_size=%d, DIRENTSPERBLOCK=%d\n",
+		debug("FAT read sect=%d, clust_size=%d, DIRENTSPERBLOCK=%zd\n",
 			cursect, mydata->clust_size, DIRENTSPERBLOCK);
 
 		if (disk_read(cursect,
Signature · 1 line
1.7.7.3
#15 lore raw

PATCH v2 2/3 fat.c: fix printf() length modifier

In reply to Andreas Bießmann

Dear =?UTF-8?q?Andreas=20Bie=C3=9Fmann?=,

Quoted 21 lines · In message <[email protected]>…

From: Andreas Bie?mann <[email protected]>

The DIRENTSPERBLOCK utilizes sizeof() which will return a size_t which has no fixed size. Therefor use correct length modifer for printf() statement to prevent compiler warnings.

This patch fixes following warning:

---8<---
fat.c: In function 'do_fat_read':
fat.c:879: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int' --->8---

cc Mike Frysinger <[email protected]>
cc Thomas Chou <[email protected]>
cc rjones at nexus-tech.net
cc kharris at nexus-tech.net

---
changes since v1: split off into single patches

Quoted 8 lines

total: 0 errors, 0 warnings, 8 lines checked

NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX MULTISTATEMENT_MACRO_USE_DO_WHILE

0002-fat.c-fix-printf-length-modifier.patch has no obvious style problems and is ready for submission.

 fs/fat/fat.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Applied to "next" branch, thanks.

Best regards,

Wolfgang Denk

Signature · 4 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Send lawyers, guns and money..."  - Lyrics from a Warren Zevon song
#16 lore raw

PATCH v2 3/3 avr32:mmu.c: fix printf() length modifier

In reply to Andreas Bießmann

From: Andreas Bie?mann <[email protected]>

avr32 uses unsigned long addresses, fix the printf() length modifier for that fact.

Before this patch following warning occours:

---8<---
mmu.c: In function 'mmu_init_r':
mmu.c:25: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'uintptr_t' --->8---

cc Mike Frysinger <[email protected]>
cc Thomas Chou <[email protected]>
cc Reinhard Meyer <[email protected]>

---
changes since v1: split off into single patches

total: 0 errors, 0 warnings, 8 lines checked

NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX MULTISTATEMENT_MACRO_USE_DO_WHILE

0003-avr32-mmu.c-fix-printf-length-modifier.patch has no obvious style problems and is ready for submission.

 arch/avr32/cpu/at32ap700x/mmu.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
arch/avr32/cpu/at32ap700x/mmu.c +1 -1
index c3a1b93..0e28b21 100644
@@ -22,7 +22,7 @@ void mmu_init_r(unsigned long dest_addr)
 	 */
 	vmr_table_addr = (uintptr_t)&mmu_vmr_table;
 	sysreg_write(PTBR, vmr_table_addr);
-	printf("VMR table @ 0x%08x\n", vmr_table_addr);
+	printf("VMR table @ 0x%08lx\n", vmr_table_addr);
 
 	/* Enable paging */
 	sysreg_write(MMUCR, SYSREG_BF(DRP, 1) | SYSREG_BF(DLA, 1)
Signature · 1 line
1.7.7.3
#18 lore raw

PATCH v2 3/3 avr32:mmu.c: fix printf() length modifier

In reply to Andreas Bießmann

Dear =?UTF-8?q?Andreas=20Bie=C3=9Fmann?=,

Quoted 19 lines · In message <[email protected]>…

From: Andreas Bie?mann <[email protected]>

avr32 uses unsigned long addresses, fix the printf() length modifier for that fact.

Before this patch following warning occours:

---8<---
mmu.c: In function 'mmu_init_r':
mmu.c:25: warning: format '%08x' expects type 'unsigned int', but argument 2 has type 'uintptr_t' --->8---

cc Mike Frysinger <[email protected]>
cc Thomas Chou <[email protected]>
cc Reinhard Meyer <[email protected]>

---
changes since v1: split off into single patches

Quoted 8 lines

total: 0 errors, 0 warnings, 8 lines checked

NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX MULTISTATEMENT_MACRO_USE_DO_WHILE

0003-avr32-mmu.c-fix-printf-length-modifier.patch has no obvious style problems and is ready for submission.

 arch/avr32/cpu/at32ap700x/mmu.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Applied to "next" branch, thanks.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"Spock, did you see the looks on their faces?"
"Yes, Captain, a sort of vacant contentment."