Hi,
The calculation of OBJALLOC_ALIGN in include/objalloc.h ensures that allocations are sufficiently aligned for doubles, but on CHERI architectures it is possible that void * has a greater alignment requirement than double.
Instead of deriving the alignment requirement from double alone, this patch uses a union to compute the maximum alignment between double and void *.
This fixes alignment faults seen when compiling the binutils for pure-capability Morello. With this patch applied, the majority of binutils tests pass when the binutils themselves are compiled for purecap.
This patch is a backport of commit a8af417a8a1559a3ebceb0c761cf26ebce5eab7f, initially upstreamed to Morello GCC.
OK for morello branch?
Thanks, Alex