|
From: John R. <jr...@bi...> - 2012-06-22 21:40:57
|
>> pub_core_threadstate.h explicitely tells to align vex on 32 bytes: >> ... >> /* Saved machine context. */ >> VexGuestArchState vex __attribute__((aligned(32))); >> ... >> >> The failing assert is: >> Addr a_vex = (Addr) & tst->arch.vex; >> .... >> vg_assert(VG_IS_32_ALIGNED(a_vex)); > > Not sufficient. attribute(aligned) won't work unless all of the containing structs are also aligned. You need the ThreadState and ThreadArchState to be aligned as well. That's a compiler bug. The compiler must automatically propagate alignment requirements: first by maximum within a union, then outward to each enclosing union or struct. -- |