All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/3] vsprintf.c: Always enable CONFIG_SYS_VSNPRINTF
@ 2016-01-14 18:02 Tom Rini
  2016-01-14 18:02 ` [U-Boot] [PATCH 2/3] axm/taurus: Enable tiny printf in SPL Tom Rini
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Tom Rini @ 2016-01-14 18:02 UTC (permalink / raw)
  To: u-boot

Enabling this function always removes some class of string saftey issues.
The size change here in general is about 400 bytes and this seems a reasonable
trade-off.

Cc: Peng Fan <peng.fan@nxp.com>
Cc: Peter Robinson <pbrobinson@gmail.com>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
Cc: Adrian Alonso <aalonso@freescale.com>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Tom Rini <trini@konsulko.com>

---
I ran my usual world build of buildman with size comparison options this time
to test this out.  The only exception to the general size change here are
q8_a23_tablet_800x480 and gt90h_v4 both in the non-SPL case.  These both grow
by 3780 bytes in the non-SPL case.  In all cases except those two, when paired
with the gzwrite patch I posted yesterday we gain all of that back, or more.
---
 README                              |  9 ---------
 configs/bayleybay_defconfig         |  1 -
 configs/chromebook_link_defconfig   |  1 -
 configs/chromebox_panther_defconfig |  1 -
 configs/coreboot-x86_defconfig      |  1 -
 configs/crownbay_defconfig          |  1 -
 configs/galileo_defconfig           |  1 -
 configs/minnowmax_defconfig         |  1 -
 configs/qemu-x86_defconfig          |  1 -
 configs/sandbox_defconfig           |  1 -
 include/vsprintf.h                  | 12 ------------
 lib/Kconfig                         |  9 ---------
 lib/vsprintf.c                      | 12 ------------
 13 files changed, 51 deletions(-)

diff --git a/README b/README
index 5ac2d44..b7ce63d 100644
--- a/README
+++ b/README
@@ -890,15 +890,6 @@ The following options need to be configured:
 		'Sane' compilers will generate smaller code if
 		CONFIG_PRE_CON_BUF_SZ is a power of 2
 
-- Safe printf() functions
-		Define CONFIG_SYS_VSNPRINTF to compile in safe versions of
-		the printf() functions. These are defined in
-		include/vsprintf.h and include snprintf(), vsnprintf() and
-		so on. Code size increase is approximately 300-500 bytes.
-		If this option is not given then these functions will
-		silently discard their buffer size argument - this means
-		you are not getting any overflow checking in this case.
-
 - Boot Delay:	CONFIG_BOOTDELAY - in seconds
 		Delay before automatically booting the default image;
 		set to -1 to disable autoboot.
diff --git a/configs/bayleybay_defconfig b/configs/bayleybay_defconfig
index f462e05..0879d1e 100644
--- a/configs/bayleybay_defconfig
+++ b/configs/bayleybay_defconfig
@@ -37,4 +37,3 @@ CONFIG_VIDEO_VESA=y
 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
 CONFIG_USE_PRIVATE_LIBGCC=y
-CONFIG_SYS_VSNPRINTF=y
diff --git a/configs/chromebook_link_defconfig b/configs/chromebook_link_defconfig
index dbfbb97..baa0ed8 100644
--- a/configs/chromebook_link_defconfig
+++ b/configs/chromebook_link_defconfig
@@ -38,5 +38,4 @@ CONFIG_VIDEO_VESA=y
 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
 CONFIG_USE_PRIVATE_LIBGCC=y
-CONFIG_SYS_VSNPRINTF=y
 CONFIG_TPM=y
diff --git a/configs/chromebox_panther_defconfig b/configs/chromebox_panther_defconfig
index ed4428f..c368cc0 100644
--- a/configs/chromebox_panther_defconfig
+++ b/configs/chromebox_panther_defconfig
@@ -33,5 +33,4 @@ CONFIG_VIDEO_VESA=y
 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
 CONFIG_USE_PRIVATE_LIBGCC=y
-CONFIG_SYS_VSNPRINTF=y
 CONFIG_TPM=y
diff --git a/configs/coreboot-x86_defconfig b/configs/coreboot-x86_defconfig
index cd2be18..fda0db2 100644
--- a/configs/coreboot-x86_defconfig
+++ b/configs/coreboot-x86_defconfig
@@ -25,5 +25,4 @@ CONFIG_TPM_TIS_LPC=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USE_PRIVATE_LIBGCC=y
-CONFIG_SYS_VSNPRINTF=y
 CONFIG_TPM=y
diff --git a/configs/crownbay_defconfig b/configs/crownbay_defconfig
index 932d9ec..6bc4b8d 100644
--- a/configs/crownbay_defconfig
+++ b/configs/crownbay_defconfig
@@ -36,4 +36,3 @@ CONFIG_DM_USB=y
 CONFIG_VIDEO_VESA=y
 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
 CONFIG_USE_PRIVATE_LIBGCC=y
-CONFIG_SYS_VSNPRINTF=y
diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig
index 0604aa7..925d3ee 100644
--- a/configs/galileo_defconfig
+++ b/configs/galileo_defconfig
@@ -28,4 +28,3 @@ CONFIG_TIMER=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USE_PRIVATE_LIBGCC=y
-CONFIG_SYS_VSNPRINTF=y
diff --git a/configs/minnowmax_defconfig b/configs/minnowmax_defconfig
index 864fd1b..af6a8ec 100644
--- a/configs/minnowmax_defconfig
+++ b/configs/minnowmax_defconfig
@@ -39,4 +39,3 @@ CONFIG_VIDEO_VESA=y
 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
 CONFIG_USE_PRIVATE_LIBGCC=y
-CONFIG_SYS_VSNPRINTF=y
diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
index 8c86931..b0c935c 100644
--- a/configs/qemu-x86_defconfig
+++ b/configs/qemu-x86_defconfig
@@ -30,4 +30,3 @@ CONFIG_VIDEO_VESA=y
 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
 CONFIG_FRAMEBUFFER_VESA_MODE_111=y
 CONFIG_USE_PRIVATE_LIBGCC=y
-CONFIG_SYS_VSNPRINTF=y
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index 731fc25..caa7336 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -76,7 +76,6 @@ CONFIG_USB_EMUL=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
 CONFIG_SYS_USB_EVENT_POLL=y
-CONFIG_SYS_VSNPRINTF=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_TPM=y
 CONFIG_LZ4=y
diff --git a/include/vsprintf.h b/include/vsprintf.h
index b5bc9c1..376f5dd 100644
--- a/include/vsprintf.h
+++ b/include/vsprintf.h
@@ -124,7 +124,6 @@ int sprintf(char *buf, const char *fmt, ...)
 int vsprintf(char *buf, const char *fmt, va_list args);
 char *simple_itoa(ulong i);
 
-#ifdef CONFIG_SYS_VSNPRINTF
 /**
  * Format a string and place it in a buffer
  *
@@ -199,17 +198,6 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
  * See the vsprintf() documentation for format string extensions over C99.
  */
 int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
-#else
-/*
- * Use macros to silently drop the size parameter. Note that the 'cn'
- * versions are the same as the 'n' versions since the functions assume
- * there is always enough buffer space when !CONFIG_SYS_VSNPRINTF
- */
-#define snprintf(buf, size, fmt, args...) sprintf(buf, fmt, ##args)
-#define scnprintf(buf, size, fmt, args...) sprintf(buf, fmt, ##args)
-#define vsnprintf(buf, size, fmt, args...) vsprintf(buf, fmt, ##args)
-#define vscnprintf(buf, size, fmt, args...) vsprintf(buf, fmt, ##args)
-#endif /* CONFIG_SYS_VSNPRINTF */
 
 /**
  * print_grouped_ull() - print a value with digits grouped by ','
diff --git a/lib/Kconfig b/lib/Kconfig
index 9d580e4..46d7034 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -27,15 +27,6 @@ config SYS_HZ
 	  get_timer() must operate in milliseconds and this option must be
 	  set to 1000.
 
-config SYS_VSNPRINTF
-	bool "Enable safe version of sprintf()"
-	help
-	  Since sprintf() can overflow its buffer, it is common to use
-	  snprintf() instead, which knows the buffer size and can avoid
-	  overflow. However, this does increase code size slightly (for
-	  Thumb-2, about 420 bytes). Enable this option for safety when
-	  using sprintf() with data you do not control.
-
 config USE_TINY_PRINTF
 	bool "Enable tiny printf() version"
 	help
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index 24167a1..874a295 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -141,7 +141,6 @@ static noinline char *put_dec(char *buf, uint64_t num)
 #define SMALL	32		/* Must be 32 == 0x20 */
 #define SPECIAL	64		/* 0x */
 
-#ifdef CONFIG_SYS_VSNPRINTF
 /*
  * Macro to add a new character to our output string, but only if it will
  * fit. The macro moves to the next character position in the output string.
@@ -151,9 +150,6 @@ static noinline char *put_dec(char *buf, uint64_t num)
 		*(str) = (ch); \
 	++str; \
 	} while (0)
-#else
-#define ADDCH(str, ch)	(*(str)++ = (ch))
-#endif
 
 static char *number(char *buf, char *end, u64 num,
 		int base, int size, int precision, int type)
@@ -441,13 +437,11 @@ static int vsnprintf_internal(char *buf, size_t size, const char *fmt,
 				/* 't' added for ptrdiff_t */
 	char *end = buf + size;
 
-#ifdef CONFIG_SYS_VSNPRINTF
 	/* Make sure end is always >= buf - do we want this in U-Boot? */
 	if (end < buf) {
 		end = ((void *)-1);
 		size = end - buf;
 	}
-#endif
 	str = buf;
 
 	for (; *fmt ; ++fmt) {
@@ -609,21 +603,16 @@ repeat:
 			     flags);
 	}
 
-#ifdef CONFIG_SYS_VSNPRINTF
 	if (size > 0) {
 		ADDCH(str, '\0');
 		if (str > end)
 			end[-1] = '\0';
 		--str;
 	}
-#else
-	*str = '\0';
-#endif
 	/* the trailing null byte doesn't count towards the total */
 	return str - buf;
 }
 
-#ifdef CONFIG_SYS_VSNPRINTF
 int vsnprintf(char *buf, size_t size, const char *fmt,
 			      va_list args)
 {
@@ -666,7 +655,6 @@ int scnprintf(char *buf, size_t size, const char *fmt, ...)
 
 	return i;
 }
-#endif /* CONFIG_SYS_VSNPRINT */
 
 /**
  * Format a string and place it in a buffer (va_list version)
-- 
2.6.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 2/3] axm/taurus: Enable tiny printf in SPL
  2016-01-14 18:02 [U-Boot] [PATCH 1/3] vsprintf.c: Always enable CONFIG_SYS_VSNPRINTF Tom Rini
@ 2016-01-14 18:02 ` Tom Rini
  2016-01-19 18:08   ` [U-Boot] [U-Boot,2/3] " Tom Rini
  2016-01-14 18:02 ` [U-Boot] [PATCH 3/3] gunzip.c: Only include gzwrite on CONFIG_CMD_UNZIP Tom Rini
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Tom Rini @ 2016-01-14 18:02 UTC (permalink / raw)
  To: u-boot

Both of these boards are very close to their limit and with some toolchains
such as gcc 5.x are too large.  Switch to tiny printf to reclaim some size.

Signed-off-by: Tom Rini <trini@konsulko.com>
---
 configs/axm_defconfig    | 1 +
 configs/taurus_defconfig | 1 +
 2 files changed, 2 insertions(+)

diff --git a/configs/axm_defconfig b/configs/axm_defconfig
index 38bb9ab..25e4570 100644
--- a/configs/axm_defconfig
+++ b/configs/axm_defconfig
@@ -12,3 +12,4 @@ CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2068,BOARD_AXM"
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_USE_TINY_PRINTF=y
diff --git a/configs/taurus_defconfig b/configs/taurus_defconfig
index d59912c..3f08cc1 100644
--- a/configs/taurus_defconfig
+++ b/configs/taurus_defconfig
@@ -13,3 +13,4 @@ CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_USE_TINY_PRINTF=y
-- 
2.6.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 3/3] gunzip.c: Only include gzwrite on CONFIG_CMD_UNZIP
  2016-01-14 18:02 [U-Boot] [PATCH 1/3] vsprintf.c: Always enable CONFIG_SYS_VSNPRINTF Tom Rini
  2016-01-14 18:02 ` [U-Boot] [PATCH 2/3] axm/taurus: Enable tiny printf in SPL Tom Rini
@ 2016-01-14 18:02 ` Tom Rini
  2016-01-19 18:08   ` [U-Boot] [U-Boot, " Tom Rini
  2016-01-15  1:59 ` [U-Boot] [PATCH 1/3] vsprintf.c: Always enable CONFIG_SYS_VSNPRINTF Peng Fan
  2016-01-19 18:08 ` [U-Boot] [U-Boot, " Tom Rini
  3 siblings, 1 reply; 8+ messages in thread
From: Tom Rini @ 2016-01-14 18:02 UTC (permalink / raw)
  To: u-boot

Only when we have CONFIG_CMD_UNZIP enabled do we have the 'gzwrite'
command.  While this command should be separated from CONFIG_CMD_UNZIP
we should also only include the write portion of the gz code in that
case as well.

Signed-off-by: Tom Rini <trini@konsulko.com>
---
 lib/gunzip.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/gunzip.c b/lib/gunzip.c
index d86aa87..80b157f 100644
--- a/lib/gunzip.c
+++ b/lib/gunzip.c
@@ -70,6 +70,7 @@ int gunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp)
 	return zunzip(dst, dstlen, src, lenp, 1, i);
 }
 
+#ifdef CONFIG_CMD_UNZIP
 __weak
 void gzwrite_progress_init(u64 expectedsize)
 {
@@ -258,6 +259,7 @@ out:
 
 	return r;
 }
+#endif
 
 /*
  * Uncompress blocks compressed with zlib without headers
-- 
2.6.4

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [U-Boot] [PATCH 1/3] vsprintf.c: Always enable CONFIG_SYS_VSNPRINTF
  2016-01-14 18:02 [U-Boot] [PATCH 1/3] vsprintf.c: Always enable CONFIG_SYS_VSNPRINTF Tom Rini
  2016-01-14 18:02 ` [U-Boot] [PATCH 2/3] axm/taurus: Enable tiny printf in SPL Tom Rini
  2016-01-14 18:02 ` [U-Boot] [PATCH 3/3] gunzip.c: Only include gzwrite on CONFIG_CMD_UNZIP Tom Rini
@ 2016-01-15  1:59 ` Peng Fan
  2016-01-19 18:08 ` [U-Boot] [U-Boot, " Tom Rini
  3 siblings, 0 replies; 8+ messages in thread
From: Peng Fan @ 2016-01-15  1:59 UTC (permalink / raw)
  To: u-boot

Hi Tom,

On Thu, Jan 14, 2016 at 01:02:03PM -0500, Tom Rini wrote:
>Enabling this function always removes some class of string saftey issues.
>The size change here in general is about 400 bytes and this seems a reasonable
>trade-off.
>
>Cc: Peng Fan <peng.fan@nxp.com>
>Cc: Peter Robinson <pbrobinson@gmail.com>
>Cc: Fabio Estevam <fabio.estevam@freescale.com>
>Cc: Adrian Alonso <aalonso@freescale.com>
>Cc: Stefano Babic <sbabic@denx.de>
>Cc: Hans de Goede <hdegoede@redhat.com>
>Signed-off-by: Tom Rini <trini@konsulko.com>


Reviewed-and-tested-by: Peng Fan <peng.fan@nxp.com>

Regards,
Peng.
>
>---
>I ran my usual world build of buildman with size comparison options this time
>to test this out.  The only exception to the general size change here are
>q8_a23_tablet_800x480 and gt90h_v4 both in the non-SPL case.  These both grow
>by 3780 bytes in the non-SPL case.  In all cases except those two, when paired
>with the gzwrite patch I posted yesterday we gain all of that back, or more.
>---
> README                              |  9 ---------
> configs/bayleybay_defconfig         |  1 -
> configs/chromebook_link_defconfig   |  1 -
> configs/chromebox_panther_defconfig |  1 -
> configs/coreboot-x86_defconfig      |  1 -
> configs/crownbay_defconfig          |  1 -
> configs/galileo_defconfig           |  1 -
> configs/minnowmax_defconfig         |  1 -
> configs/qemu-x86_defconfig          |  1 -
> configs/sandbox_defconfig           |  1 -
> include/vsprintf.h                  | 12 ------------
> lib/Kconfig                         |  9 ---------
> lib/vsprintf.c                      | 12 ------------
> 13 files changed, 51 deletions(-)
>
>diff --git a/README b/README
>index 5ac2d44..b7ce63d 100644
>--- a/README
>+++ b/README
>@@ -890,15 +890,6 @@ The following options need to be configured:
> 		'Sane' compilers will generate smaller code if
> 		CONFIG_PRE_CON_BUF_SZ is a power of 2
> 
>-- Safe printf() functions
>-		Define CONFIG_SYS_VSNPRINTF to compile in safe versions of
>-		the printf() functions. These are defined in
>-		include/vsprintf.h and include snprintf(), vsnprintf() and
>-		so on. Code size increase is approximately 300-500 bytes.
>-		If this option is not given then these functions will
>-		silently discard their buffer size argument - this means
>-		you are not getting any overflow checking in this case.
>-
> - Boot Delay:	CONFIG_BOOTDELAY - in seconds
> 		Delay before automatically booting the default image;
> 		set to -1 to disable autoboot.
>diff --git a/configs/bayleybay_defconfig b/configs/bayleybay_defconfig
>index f462e05..0879d1e 100644
>--- a/configs/bayleybay_defconfig
>+++ b/configs/bayleybay_defconfig
>@@ -37,4 +37,3 @@ CONFIG_VIDEO_VESA=y
> CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
> CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
> CONFIG_USE_PRIVATE_LIBGCC=y
>-CONFIG_SYS_VSNPRINTF=y
>diff --git a/configs/chromebook_link_defconfig b/configs/chromebook_link_defconfig
>index dbfbb97..baa0ed8 100644
>--- a/configs/chromebook_link_defconfig
>+++ b/configs/chromebook_link_defconfig
>@@ -38,5 +38,4 @@ CONFIG_VIDEO_VESA=y
> CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
> CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
> CONFIG_USE_PRIVATE_LIBGCC=y
>-CONFIG_SYS_VSNPRINTF=y
> CONFIG_TPM=y
>diff --git a/configs/chromebox_panther_defconfig b/configs/chromebox_panther_defconfig
>index ed4428f..c368cc0 100644
>--- a/configs/chromebox_panther_defconfig
>+++ b/configs/chromebox_panther_defconfig
>@@ -33,5 +33,4 @@ CONFIG_VIDEO_VESA=y
> CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
> CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
> CONFIG_USE_PRIVATE_LIBGCC=y
>-CONFIG_SYS_VSNPRINTF=y
> CONFIG_TPM=y
>diff --git a/configs/coreboot-x86_defconfig b/configs/coreboot-x86_defconfig
>index cd2be18..fda0db2 100644
>--- a/configs/coreboot-x86_defconfig
>+++ b/configs/coreboot-x86_defconfig
>@@ -25,5 +25,4 @@ CONFIG_TPM_TIS_LPC=y
> CONFIG_USB=y
> CONFIG_DM_USB=y
> CONFIG_USE_PRIVATE_LIBGCC=y
>-CONFIG_SYS_VSNPRINTF=y
> CONFIG_TPM=y
>diff --git a/configs/crownbay_defconfig b/configs/crownbay_defconfig
>index 932d9ec..6bc4b8d 100644
>--- a/configs/crownbay_defconfig
>+++ b/configs/crownbay_defconfig
>@@ -36,4 +36,3 @@ CONFIG_DM_USB=y
> CONFIG_VIDEO_VESA=y
> CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
> CONFIG_USE_PRIVATE_LIBGCC=y
>-CONFIG_SYS_VSNPRINTF=y
>diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig
>index 0604aa7..925d3ee 100644
>--- a/configs/galileo_defconfig
>+++ b/configs/galileo_defconfig
>@@ -28,4 +28,3 @@ CONFIG_TIMER=y
> CONFIG_USB=y
> CONFIG_DM_USB=y
> CONFIG_USE_PRIVATE_LIBGCC=y
>-CONFIG_SYS_VSNPRINTF=y
>diff --git a/configs/minnowmax_defconfig b/configs/minnowmax_defconfig
>index 864fd1b..af6a8ec 100644
>--- a/configs/minnowmax_defconfig
>+++ b/configs/minnowmax_defconfig
>@@ -39,4 +39,3 @@ CONFIG_VIDEO_VESA=y
> CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
> CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
> CONFIG_USE_PRIVATE_LIBGCC=y
>-CONFIG_SYS_VSNPRINTF=y
>diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
>index 8c86931..b0c935c 100644
>--- a/configs/qemu-x86_defconfig
>+++ b/configs/qemu-x86_defconfig
>@@ -30,4 +30,3 @@ CONFIG_VIDEO_VESA=y
> CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
> CONFIG_FRAMEBUFFER_VESA_MODE_111=y
> CONFIG_USE_PRIVATE_LIBGCC=y
>-CONFIG_SYS_VSNPRINTF=y
>diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
>index 731fc25..caa7336 100644
>--- a/configs/sandbox_defconfig
>+++ b/configs/sandbox_defconfig
>@@ -76,7 +76,6 @@ CONFIG_USB_EMUL=y
> CONFIG_USB_STORAGE=y
> CONFIG_USB_KEYBOARD=y
> CONFIG_SYS_USB_EVENT_POLL=y
>-CONFIG_SYS_VSNPRINTF=y
> CONFIG_CMD_DHRYSTONE=y
> CONFIG_TPM=y
> CONFIG_LZ4=y
>diff --git a/include/vsprintf.h b/include/vsprintf.h
>index b5bc9c1..376f5dd 100644
>--- a/include/vsprintf.h
>+++ b/include/vsprintf.h
>@@ -124,7 +124,6 @@ int sprintf(char *buf, const char *fmt, ...)
> int vsprintf(char *buf, const char *fmt, va_list args);
> char *simple_itoa(ulong i);
> 
>-#ifdef CONFIG_SYS_VSNPRINTF
> /**
>  * Format a string and place it in a buffer
>  *
>@@ -199,17 +198,6 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
>  * See the vsprintf() documentation for format string extensions over C99.
>  */
> int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
>-#else
>-/*
>- * Use macros to silently drop the size parameter. Note that the 'cn'
>- * versions are the same as the 'n' versions since the functions assume
>- * there is always enough buffer space when !CONFIG_SYS_VSNPRINTF
>- */
>-#define snprintf(buf, size, fmt, args...) sprintf(buf, fmt, ##args)
>-#define scnprintf(buf, size, fmt, args...) sprintf(buf, fmt, ##args)
>-#define vsnprintf(buf, size, fmt, args...) vsprintf(buf, fmt, ##args)
>-#define vscnprintf(buf, size, fmt, args...) vsprintf(buf, fmt, ##args)
>-#endif /* CONFIG_SYS_VSNPRINTF */
> 
> /**
>  * print_grouped_ull() - print a value with digits grouped by ','
>diff --git a/lib/Kconfig b/lib/Kconfig
>index 9d580e4..46d7034 100644
>--- a/lib/Kconfig
>+++ b/lib/Kconfig
>@@ -27,15 +27,6 @@ config SYS_HZ
> 	  get_timer() must operate in milliseconds and this option must be
> 	  set to 1000.
> 
>-config SYS_VSNPRINTF
>-	bool "Enable safe version of sprintf()"
>-	help
>-	  Since sprintf() can overflow its buffer, it is common to use
>-	  snprintf() instead, which knows the buffer size and can avoid
>-	  overflow. However, this does increase code size slightly (for
>-	  Thumb-2, about 420 bytes). Enable this option for safety when
>-	  using sprintf() with data you do not control.
>-
> config USE_TINY_PRINTF
> 	bool "Enable tiny printf() version"
> 	help
>diff --git a/lib/vsprintf.c b/lib/vsprintf.c
>index 24167a1..874a295 100644
>--- a/lib/vsprintf.c
>+++ b/lib/vsprintf.c
>@@ -141,7 +141,6 @@ static noinline char *put_dec(char *buf, uint64_t num)
> #define SMALL	32		/* Must be 32 == 0x20 */
> #define SPECIAL	64		/* 0x */
> 
>-#ifdef CONFIG_SYS_VSNPRINTF
> /*
>  * Macro to add a new character to our output string, but only if it will
>  * fit. The macro moves to the next character position in the output string.
>@@ -151,9 +150,6 @@ static noinline char *put_dec(char *buf, uint64_t num)
> 		*(str) = (ch); \
> 	++str; \
> 	} while (0)
>-#else
>-#define ADDCH(str, ch)	(*(str)++ = (ch))
>-#endif
> 
> static char *number(char *buf, char *end, u64 num,
> 		int base, int size, int precision, int type)
>@@ -441,13 +437,11 @@ static int vsnprintf_internal(char *buf, size_t size, const char *fmt,
> 				/* 't' added for ptrdiff_t */
> 	char *end = buf + size;
> 
>-#ifdef CONFIG_SYS_VSNPRINTF
> 	/* Make sure end is always >= buf - do we want this in U-Boot? */
> 	if (end < buf) {
> 		end = ((void *)-1);
> 		size = end - buf;
> 	}
>-#endif
> 	str = buf;
> 
> 	for (; *fmt ; ++fmt) {
>@@ -609,21 +603,16 @@ repeat:
> 			     flags);
> 	}
> 
>-#ifdef CONFIG_SYS_VSNPRINTF
> 	if (size > 0) {
> 		ADDCH(str, '\0');
> 		if (str > end)
> 			end[-1] = '\0';
> 		--str;
> 	}
>-#else
>-	*str = '\0';
>-#endif
> 	/* the trailing null byte doesn't count towards the total */
> 	return str - buf;
> }
> 
>-#ifdef CONFIG_SYS_VSNPRINTF
> int vsnprintf(char *buf, size_t size, const char *fmt,
> 			      va_list args)
> {
>@@ -666,7 +655,6 @@ int scnprintf(char *buf, size_t size, const char *fmt, ...)
> 
> 	return i;
> }
>-#endif /* CONFIG_SYS_VSNPRINT */
> 
> /**
>  * Format a string and place it in a buffer (va_list version)
>-- 
>2.6.4
>
>_______________________________________________
>U-Boot mailing list
>U-Boot at lists.denx.de
>http://lists.denx.de/mailman/listinfo/u-boot

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [U-Boot, 1/3] vsprintf.c: Always enable CONFIG_SYS_VSNPRINTF
  2016-01-14 18:02 [U-Boot] [PATCH 1/3] vsprintf.c: Always enable CONFIG_SYS_VSNPRINTF Tom Rini
                   ` (2 preceding siblings ...)
  2016-01-15  1:59 ` [U-Boot] [PATCH 1/3] vsprintf.c: Always enable CONFIG_SYS_VSNPRINTF Peng Fan
@ 2016-01-19 18:08 ` Tom Rini
  3 siblings, 0 replies; 8+ messages in thread
From: Tom Rini @ 2016-01-19 18:08 UTC (permalink / raw)
  To: u-boot

On Thu, Jan 14, 2016 at 01:02:03PM -0500, Tom Rini wrote:

> Enabling this function always removes some class of string saftey issues.
> The size change here in general is about 400 bytes and this seems a reasonable
> trade-off.
> 
> Cc: Peng Fan <peng.fan@nxp.com>
> Cc: Peter Robinson <pbrobinson@gmail.com>
> Cc: Fabio Estevam <fabio.estevam@freescale.com>
> Cc: Adrian Alonso <aalonso@freescale.com>
> Cc: Stefano Babic <sbabic@denx.de>
> Cc: Hans de Goede <hdegoede@redhat.com>
> Signed-off-by: Tom Rini <trini@konsulko.com>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160119/10e18618/attachment.sig>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [U-Boot,2/3] axm/taurus: Enable tiny printf in SPL
  2016-01-14 18:02 ` [U-Boot] [PATCH 2/3] axm/taurus: Enable tiny printf in SPL Tom Rini
@ 2016-01-19 18:08   ` Tom Rini
  2016-01-20  6:44     ` Heiko Schocher
  0 siblings, 1 reply; 8+ messages in thread
From: Tom Rini @ 2016-01-19 18:08 UTC (permalink / raw)
  To: u-boot

On Thu, Jan 14, 2016 at 01:02:04PM -0500, Tom Rini wrote:

> Both of these boards are very close to their limit and with some toolchains
> such as gcc 5.x are too large.  Switch to tiny printf to reclaim some size.
> 
> Signed-off-by: Tom Rini <trini@konsulko.com>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160119/87775de6/attachment.sig>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [U-Boot, 3/3] gunzip.c: Only include gzwrite on CONFIG_CMD_UNZIP
  2016-01-14 18:02 ` [U-Boot] [PATCH 3/3] gunzip.c: Only include gzwrite on CONFIG_CMD_UNZIP Tom Rini
@ 2016-01-19 18:08   ` Tom Rini
  0 siblings, 0 replies; 8+ messages in thread
From: Tom Rini @ 2016-01-19 18:08 UTC (permalink / raw)
  To: u-boot

On Thu, Jan 14, 2016 at 01:02:05PM -0500, Tom Rini wrote:

> Only when we have CONFIG_CMD_UNZIP enabled do we have the 'gzwrite'
> command.  While this command should be separated from CONFIG_CMD_UNZIP
> we should also only include the write portion of the gz code in that
> case as well.
> 
> Signed-off-by: Tom Rini <trini@konsulko.com>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160119/9df69019/attachment.sig>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [U-Boot] [U-Boot,2/3] axm/taurus: Enable tiny printf in SPL
  2016-01-19 18:08   ` [U-Boot] [U-Boot,2/3] " Tom Rini
@ 2016-01-20  6:44     ` Heiko Schocher
  0 siblings, 0 replies; 8+ messages in thread
From: Heiko Schocher @ 2016-01-20  6:44 UTC (permalink / raw)
  To: u-boot

Hello Tom,

Am 19.01.2016 um 19:08 schrieb Tom Rini:
> On Thu, Jan 14, 2016 at 01:02:04PM -0500, Tom Rini wrote:
>
>> Both of these boards are very close to their limit and with some toolchains
>> such as gcc 5.x are too large.  Switch to tiny printf to reclaim some size.
>>
>> Signed-off-by: Tom Rini <trini@konsulko.com>
>
> Applied to u-boot/master, thanks!

Missed this patch, tested it on the taurus board, works!

Thanks!

bye,
Heiko
-- 
-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-01-20  6:44 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-14 18:02 [U-Boot] [PATCH 1/3] vsprintf.c: Always enable CONFIG_SYS_VSNPRINTF Tom Rini
2016-01-14 18:02 ` [U-Boot] [PATCH 2/3] axm/taurus: Enable tiny printf in SPL Tom Rini
2016-01-19 18:08   ` [U-Boot] [U-Boot,2/3] " Tom Rini
2016-01-20  6:44     ` Heiko Schocher
2016-01-14 18:02 ` [U-Boot] [PATCH 3/3] gunzip.c: Only include gzwrite on CONFIG_CMD_UNZIP Tom Rini
2016-01-19 18:08   ` [U-Boot] [U-Boot, " Tom Rini
2016-01-15  1:59 ` [U-Boot] [PATCH 1/3] vsprintf.c: Always enable CONFIG_SYS_VSNPRINTF Peng Fan
2016-01-19 18:08 ` [U-Boot] [U-Boot, " Tom Rini

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.