
Hi!
First, we have a compatibility problem here. GCC assumes that puts() will add a newline character after the string; U-Boot puts() does NOT do this. So the GCC auto-converted printf()s will all be wrong, as they are missing the newline. [1]
[1] One might argue that this is a bug in U-Boot and should be fixed, but that is another topic.
I believe we should fix that, yes.
I did quick grep,
pavel@duo:~/wagabuibui/u-boot$ grep -ri puts . | wc -l 4287
and that is probably too much to change in one go. So what about this?
Best regards, Pavel ---
Introduce __puts() that puts strings without trailing newline. Plan is to move the existing puts() users into __puts(), when no puts() users are left, fix the puts() to add the newline, and move users that want newline back to puts().
Signed-off-by: Pavel Machek pavel@denx.de
--- a/include/common.h +++ b/include/common.h @@ -836,6 +836,8 @@ int tstc(void); /* stdout */ void putc(const char c); void puts(const char *s); +static inline void __puts(const char *s) { puts(s); } + int printf(const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2))); int vprintf(const char *fmt, va_list args);