[PATCH] tiny-printf: Support %i

Marek Vasut marex at denx.de
Tue Apr 14 14:24:18 CEST 2020


On 4/14/20 5:03 AM, Tom Rini wrote:
> On Tue, Apr 14, 2020 at 03:17:16AM +0200, Marek Vasut wrote:
>> On 4/14/20 1:27 AM, Tom Rini wrote:
>>> On Fri, Apr 10, 2020 at 08:54:49PM +0200, Marek Vasut wrote:
>>>
>>>> The most basic printf("%i", value) formating string was missing,
>>>> add it for the sake of convenience.
>>>>
>>>> Signed-off-by: Marek Vasut <marex at denx.de>
>>>> Cc: Simon Glass <sjg at chromium.org>
>>>> Cc: Stefan Roese <sr at denx.de>
>>>> ---
>>>>  lib/tiny-printf.c | 3 ++-
>>>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/lib/tiny-printf.c b/lib/tiny-printf.c
>>>> index 1138c7012a..8fc7e48d99 100644
>>>> --- a/lib/tiny-printf.c
>>>> +++ b/lib/tiny-printf.c
>>>> @@ -242,6 +242,7 @@ static int _vprintf(struct printf_info *info, const char *fmt, va_list va)
>>>>  				goto abort;
>>>>  			case 'u':
>>>>  			case 'd':
>>>> +			case 'i':
>>>>  				div = 1000000000;
>>>>  				if (islong) {
>>>>  					num = va_arg(va, unsigned long);
>>>> @@ -251,7 +252,7 @@ static int _vprintf(struct printf_info *info, const char *fmt, va_list va)
>>>>  					num = va_arg(va, unsigned int);
>>>>  				}
>>>>  
>>>> -				if (ch == 'd') {
>>>> +				if (ch != 'u') {
>>>>  					if (islong && (long)num < 0) {
>>>>  						num = -(long)num;
>>>>  						out(info, '-');
>>>
>>> How much does the size change and where do we see this as a problem?
>>
>> Any code which uses %i in SPL just misbehaves, e.g.
>> printf("%s[%i] value=%x", __func__, __LINE__, val);
>> prints function name and then incorrect value, because %i is ignored.
>> This is also documented in the commit message.
>>
>> U-Boot grows in size massively due to all the DM/DT bloat which is being
>> forced upon everyone, but there the uncontrolled growth is apparently OK
>> even if it brings no obvious improvement, rather the opposite. And yet
>> here, size increase suddenly matters? Sorry, that's not right.
>>
>> The code grows by 6 bytes.
> 
> Yes, it matters for _tiny-printf_ as that's where we have little to no
> room for growth.

How many systems that use tiny-printf in SPL are also forced to use DM
in SPL ?

> So it's just debug prints you were doing that ran in
> to a problem?  Thanks!

git grep %i indicates ~400 sites where %i is used, so no, not just debug
prints. All of those are broken. And no, I'm not inclined to patch all
the code to use %d instead of %i just because handling %i is a problem.


More information about the U-Boot mailing list