Re: Unaligned accesses in sha1dc
- From
- Martin Ågren <martin.agren@gmail.com>
- Date
- Jun 1, 2017, 10:26 UTC
- Message-ID
- <CAN0heSrzpwhS3Zf83vTzHAAmi8YVD4CoCh_px5SBXBZhSKPqPQ@mail.gmail.com>
- In-Reply-To
- <mvmmv9st3yv.fsf@suse.de>
On 1 June 2017 at 12:08, Andreas Schwab <schwab@suse.de> wrote:
Show 10 quoted lines
> On Jun 01 2017, Junio C Hamano <gitster@pobox.com> wrote: > >> Depending on the model of "ARM" (or "SPARC") emulated with QEMU, and >> depending on the OS that runs on such an "ARM" or "SPARC", we may >> not see this---if the emulated OS has the "software unaligned-access >> emulation" our userland may not see a SIGBUS. > > Even if the architecture implements unaligned accesses in hardware, it > is still undefined behaviour, and the compiler will (eventually) take > advantage of it.
I tried to optically follow the macros and ended up on line 87/89 in lib/sha1.c of the sha1dc-library, where there is undefined behavior if the address is unaligned, which it seems it could be. Maybe Git uses some particular combination of macro-definitions and I went down the wrong path... There might also be other spots; I haven't thrown UBSan at the code.
Using memcpy on those lines should not be a performance problem on platforms where unaligned access is ok, of course assuming the compiler sees the opportunity.
Martin