mirror of
https://github.com/ceph/ceph
synced 2025-01-13 22:44:50 +00:00
34b33d447f
C and C++ allow us to cast a pointer with an alignment requirement to one with a different alignment requirement. but if the destination type's alignment is greater/stricter than the source type, the behavior is undefined. on amd64, it's allowed. and on aarch64, GCC offers an option named `-munaligned-access` to enable this behavior. so we cannot take this as guaranteed. in denc.h and messenger implementations, we just cast the pointers to the type we want to access without memcpy(), which is, strictly speaking, not quite standard compliant. so, to be on the safe side, we detect the support of unaligned access at compile time. please note, this would fail the cross-compile. as the target platform might not support unaligned access, and the produced executable does not run on the build platform. so this test is skipped if the building host's architecture is different than that of target host. Signed-off-by: Kefu Chai <kchai@redhat.com> |
||
---|---|---|
.. | ||
modules |