On 1 June 2017 at 12:08, Andreas Schwab <schwab@xxxxxxx> wrote: > On Jun 01 2017, Junio C Hamano <gitster@xxxxxxxxx> 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