Re: The config takes exception when the address of an load/store is unaligned
> Error: The config takes exception when the address of an load/store is unaligned. The address 0xfead844c is not properly aligned.
That complaint is from the application, and not from valgrind (memcheck).
The substring 'takes exception' does not appear anywhere in the valgrind source code.
Also, every line that _is_ a valgrind complaint begins with "==PID==" where PID
is the process ID in decimal.
The address 0xfead844c is 4-byte aligned. What alignment is the application expecting?
Look at the source code of the application to find out. malloc() claims that each
newly-allocated block is "suitably aligned for any built-in type", and memcheck's
replacement for malloc() obeys this rule. On aarch64 the maximum required alignment
is 16-byte alignment, but this is required only when using the stack pointer register
SP as a base register, or for special exclusive and explicitly-ordered memory accesses
that are part of multi-threaded synchronization. Otherwise, most compilers and
runtime libraries use natural alignment: sizeof(x) divides &x for any builtin type;
and align_of(struct) is max(align_of(members)). Therefore in practice the maximum
alignment is likely to be 8-byte alignment because of the 'double' type.
On x86_64 it is 16 bytes because some "multi-media" SIMD instructions require
128-bit alignment for operands in memory. aarch64 does not have this requirement,
although there are VectorFloatingPoint and other SIMD loads and stores which may
execute faster when aligned to 4 times the alignment of an individual element.