On Wed 2014-10-15 10:40:12, Pavel Machek wrote: > 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?
Next step is probably diff --git a/include/common.h b/include/common.h index d5020c8..95b2377 100644 --- a/include/common.h +++ b/include/common.h @@ -836,6 +836,9 @@ int tstc(void); /* stdout */ void putc(const char c); void puts(const char *s); +static inline void __puts(const char *s) { puts(s); } +static inline void putsnl(const char *s) { puts(s); putc('\n'); } + int printf(const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2))); int vprintf(const char *fmt, va_list args); Then run sed 's/puts(\(.*\)\\n")/putsnl(\1")/' `find . -name "*.[ch]"` ... to get existing users converted. Then we can convert the rest to to either __puts or putsnl, and finally get rid of putsnl and convert it back to puts. (Patch is >400KB, so I'll not post it here). Best regards, Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot