[Toybox] [PATCH] devmem: Fix 8 byte wide writes

Rob Landley rob at landley.net
Mon Oct 9 21:46:05 PDT 2023


On 10/9/23 17:04, enh wrote:
> On Mon, Oct 9, 2023 at 2:45 PM Rob Landley <rob at landley.net> wrote:
>>
>> On 10/9/23 10:26, enh wrote:
>> >> Let me know how commit 5f153b56214f works? I don't have a test environment
>> >> for this, but it seems to produce the errors right on 32 and 64 bit at
>> >> least...
>> >
>> > it's a bit early in the morning for me, but doesn't the change from
>> > `unsigned long long` to `unsigned long` mean that by the time you test
>> > the result it can't be too large because you've already truncated?
>>
>> The theory is that by switching strtoull() to strtoul() we get ERANGE when it's
>> truncated.
> 
> ah, yeah, i see. (a shame though, because i much prefer the "%lx>%d
> bytes" error message. but i'm unlikely to ever run a 32-bit toybox
> binary ever again, so my opinion isn't worth much :-) )

You still get that for 1 and 2 bytes, it's just the max size that never makes it
to the later test if it can't parse from ascii into the long.

This was already the case for 8 bytes on 64 bit. It can't say doesn't fit in 8
bytes, so it says whatever the strerror() for ERANGE is...

libc/bionic/strerror.cpp:    [ERANGE] = "Math result not representable",

That.

Rob


More information about the Toybox mailing list