Brian Smith <br...@briansmith.org> wrote: > It seems that 32-bit ARM has the same limitation as x86 that the input and > output pointers must match or the input and output buffers must not overlap > at all. I'm not sure which ARM code path (NEON or non-NEON, or both) has > this issue.
Just to follow up on this: I think this might actually be a QEMU ARM (32-bit) emulator bug, or a configuration issue on my part. In one version of the QEMU emulator, I have no trouble. But, in another, newer, version of the QEMU emulator, I get results like this for BoringSSL's chacha_test (modified to print all the results before failing): Mismatch at length 64 with in-place offset 1. Mismatch at length 64 with in-place offset 2. Mismatch at length 64 with in-place offset 5. Mismatch at length 64 with in-place offset 6. Mismatch at length 64 with in-place offset 9. Notice, in particular, that it only happens when the input length is 64, and only for specific offsets. Like I said, I consistently get these failures on the Android emulator but not in a newer version of QEMU. It doesn't make any difference whether NEON is enabled or disabled; I believe this is because the ARM code only uses NEON if there are at least 3 blocks. Anyway, I see in the ARM chacha code that there is a special case when the length is 64, so it might be worth double-checking that code. Just FYI. -- Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4362 Please log in as guest with password guest if prompted -- openssl-dev mailing list To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev