From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52878) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aIg6p-00089m-D0 for qemu-devel@nongnu.org; Mon, 11 Jan 2016 12:18:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aIg6l-0001Sp-AC for qemu-devel@nongnu.org; Mon, 11 Jan 2016 12:18:23 -0500 Received: from mx1.redhat.com ([209.132.183.28]:38872) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aIg6l-0001Sd-4C for qemu-devel@nongnu.org; Mon, 11 Jan 2016 12:18:19 -0500 References: <1452300718-10660-1-git-send-email-jsnow@redhat.com> From: John Snow Message-ID: <5693E3D9.60401@redhat.com> Date: Mon, 11 Jan 2016 12:18:17 -0500 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PULL 00/11] Ide patches List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: QEMU Developers On 01/11/2016 06:18 AM, Peter Maydell wrote: > On 9 January 2016 at 00:51, John Snow 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