On 01/11/2016 06:18 AM, Peter Maydell wrote: > On 9 January 2016 at 00:51, John Snow <js...@redhat.com> wrote: >> The following changes since commit 38a762fec63fd5c035aae29ba9a77d357e21e4a7: >> >> Merge remote-tracking branch >> 'remotes/berrange/tags/pull-crypto-fixes-2015-12-23-1' into staging >> (2015-12-23 13:53:32 +0000) >> >> are available in the git repository at: >> >> https://github.com/jnsnow/qemu.git tags/ide-pull-request >> >> for you to fetch changes up to 4160ad843841df21de296016fb77f986e693bed2: >> >> libqos/ahci: organize header (2016-01-08 15:22:34 -0500) >> >> ---------------------------------------------------------------- >> >> ---------------------------------------------------------------- > > These seem to result in some new clang sanitizer runtime warnings > during a 'make check': > > /home/petmay01/linaro/qemu-for-merges/tests/libqos/ahci.c:963:9: > runtime error: store to misaligned address 0x2adacfbaacd7 for type > 'uint16_t' (aka 'unsigned short'), which requires 2 byte alignment > 0x2adacfbaacd7: note: pointer points here > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 > 00 00 00 00 00 00 00 6c 6f 6e > ^ > /home/petmay01/linaro/qemu-for-merges/tests/libqos/ahci.c:907:9: > runtime error: store to misaligned address 0x2adacfbaacd2 for type > 'uint32_t' (aka 'unsigned int'), which requires 4 byte alignment > 0x2adacfbaacd2: note: pointer points here > 00 00 28 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 > 00 00 00 00 21 00 00 00 00 00 > ^ > > This kind of thing: >
"This kind of thing" as one might say while holding up a rotting fish with just two fingers, held at arm's length. > unsigned char *cbd = cmd->atapi_cmd; > uint32_t *lba32; > > lba32 = (uint32_t *)&(cbd[2]); > *lba32 = cpu_to_be32(lba); > > isn't valid. You probably want > stl_be_p(&cbd[2], lba); > > (defined in qemu/bswap.h). > > thanks > -- PMM > Thanks for the pointer. Out of curiosity, is there no standard way to perform this kind of operation in C? I want to adjust my bad habits. In QEMU I can remember to use these macros now that I know they're there, but not sure what I'd use in other projects. memcpy directly? --js