qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jamie Lokier <jamie@shareable.org>
To: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: Kevin Wolf <kwolf@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Re: [PATCH 07/17] block/vvfat.c: fix warnings with _FORTIFY_SOURCE
Date: Wed, 20 Jan 2010 16:16:07 +0000	[thread overview]
Message-ID: <20100120161607.GA7348@shareable.org> (raw)
In-Reply-To: <cc557aab1001200551y64bdd775ved9b8db22e4f6034@mail.gmail.com>

Kirill A. Shutemov wrote:
> On Wed, Jan 20, 2010 at 3:03 PM, Markus Armbruster <armbru@redhat.com> wrote:
> > "Kirill A. Shutemov" <kirill@shutemov.name> writes:
> >> No, compiler can't add anything between. 'char' is always byte-aligned.
> >
> > You got some reading to do then.
> 
> Do you want to say that it's not true? Could you provide an example
> when 'char' isn't byte-aligned?

I have no example, but that doesn't mean there is no architecture, ABI
or host OS where it happens.  Architectures can be surprising.

It's very easy to make assumptions which break on some architecture
you've never tested on.

Take this code:

struct part1 {
	char c[5];
};

struct part2 {
	char c[3];
};

struct all {
	struct part1 p1;
	struct part2 p2;
};

What do you think the size is on ARM?  Hint: not 8 when using GCC < 4,
but it is 8 when using current GCC and the later ARM ABI.

This broke some data parsing application when it was ported from x86
to ARM, because of a wrong assumption about structure layout that
works on nearly all architectures and passed all testing prior to the port.

-- Jamie

  parent reply	other threads:[~2010-01-20 16:16 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-19 23:56 [Qemu-devel] [PATCH 00/17] Fix compilation with _FORTIFY_SOURCE Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 01/17] Introduce qemu_write_full() Juan Quintela
2010-01-20  0:45   ` malc
2010-01-26 21:34   ` Anthony Liguori
2010-01-19 23:56 ` [Qemu-devel] [PATCH 02/17] force to test result for qemu_write_full() Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 03/17] posix-aio-compat.c: fix warning with _FORTIFY_SOURCE Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 04/17] block/cow.c: fix warnings " Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 05/17] block/qcow.c: " Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 06/17] block/vmdk.o: " Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 07/17] block/vvfat.c: " Juan Quintela
2010-01-20  6:19   ` [Qemu-devel] " Kirill A. Shutemov
2010-01-20 10:33     ` Daniel P. Berrange
2010-01-20 11:09       ` Kirill A. Shutemov
2010-01-20 11:45         ` Kevin Wolf
2010-01-20 12:15           ` Markus Armbruster
2010-01-20 12:36             ` Kirill A. Shutemov
2010-01-20 13:03               ` Markus Armbruster
2010-01-20 13:08                 ` Gleb Natapov
2010-01-20 14:02                   ` Kirill A. Shutemov
2010-01-20 14:11                     ` Gleb Natapov
2010-01-20 15:00                     ` malc
2010-01-20 13:51                 ` Kirill A. Shutemov
2010-01-20 14:42                   ` Markus Armbruster
2010-01-20 16:16                   ` Jamie Lokier [this message]
2010-01-20 15:59     ` Anthony Liguori
2010-01-19 23:56 ` [Qemu-devel] [PATCH 08/17] block/qcow2.c: " Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 09/17] net/slirp.c: fix warning " Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 10/17] usb-linux.c: " Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 11/17] vl.c: " Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 12/17] monitor.c: fix warnings " Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 13/17] linux-user/mmap.c: " Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 14/17] check pipe() return value Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 15/17] Enable _FORTIFY_SOURCE=2 Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 16/17] Check availavility of -fstack-protector-all Juan Quintela
2010-01-19 23:56 ` [Qemu-devel] [PATCH 17/17] mmap_frag() users only check for -1 error Juan Quintela
  -- strict thread matches above, loose matches on Subject: below --
2010-01-20 20:13 [Qemu-devel] [PATCH v2 00/17] Fix compilation with _FORTIFY_SOURCE Juan Quintela
2010-01-20 20:14 ` [Qemu-devel] [PATCH 07/17] block/vvfat.c: fix warnings " Juan Quintela
2010-01-21  7:37   ` Gleb Natapov
2010-01-21  8:17     ` [Qemu-devel] " Juan Quintela
2010-01-21  8:18       ` Gleb Natapov
2010-01-21  9:28       ` Markus Armbruster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100120161607.GA7348@shareable.org \
    --to=jamie@shareable.org \
    --cc=armbru@redhat.com \
    --cc=kirill@shutemov.name \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).