All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jan Beulich" <JBeulich@suse.com>
To: Ian Campbell <Ian.Campbell@citrix.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Julien Grall <julien.grall@citrix.com>,
	Keir Fraser <keir@xen.org>, "Tim (Xen.org)" <tim@xen.org>,
	Ian Jackson <Ian.Jackson@eu.citrix.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH 4/4] xen/arm: correctly handle an empty array of platform descs.
Date: Tue, 14 May 2013 10:48:20 +0100	[thread overview]
Message-ID: <5192248402000078000D5E7F@nat28.tlf.novell.com> (raw)
In-Reply-To: <1368523975.14264.22.camel@zakaz.uk.xensource.com>

>>> On 14.05.13 at 11:32, Ian Campbell <Ian.Campbell@citrix.com> wrote:
> Sadly this turns out to be a bit more complicated :-( CCing Jan and Keir
> since this was wider implications (this construct is used elsewhere) and
> Ian J because he pointed this out.
> 
> TL;DR: There is probably a problem here, but I'm not sure it is one
> worth worrying about, at least not yet/for 4.3.
> 
> The problem is that the compiler is allowed to assume that:
>         extern const struct platform_desc _splatform[], _eplatform[];
> Defines two *distinct* arrays, which therefore can never be equal. Hence
> it optimises 
>     for ( platform = _splatform; platform != _eplatform; platform++ )
> with the assumption that there must always be at least one iteration.

Did you actually observe gcc doing this? I agree that the abstract
C specification allows for such an assumption, but with the gcc
itself providing ways to create symbols aliases I would be pretty
surprised if it actually then produces broken code here.

> FWIW this seems to work:
>     for ( platform = &_splatform[0]; platform < &_eplatform[0]; platform++ )
> But I'm not sure it is strictly any less undefined than the original
> code and it might just be obscuring things enough that today's optimiser
> misses a trick.

This surely is as (un)defined as the original code.

Jan

  reply	other threads:[~2013-05-14  9:48 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-13 16:22 [PATCH 0/4] xen/arm: fixes for 64 bit Ian Campbell
2013-05-13 16:22 ` [PATCH 1/4] xen/arm: Add emacs magic blocks to asm files Ian Campbell
2013-05-13 16:44   ` Stefano Stabellini
2013-05-13 17:35     ` Tim Deegan
2013-05-13 16:23 ` [PATCH 2/4] xen/arm64: do not clobber callee saved register in early_putch Ian Campbell
2013-05-13 16:53   ` Stefano Stabellini
2013-05-13 16:23 ` [PATCH 3/4] xen/arm: support "arm, armv8-timer" DTS compatibility Ian Campbell
2013-05-13 16:46   ` Stefano Stabellini
2013-05-13 16:23 ` [PATCH 4/4] xen/arm: correctly handle an empty array of platform descs Ian Campbell
2013-05-13 16:48   ` Stefano Stabellini
2013-05-14  9:32     ` Ian Campbell
2013-05-14  9:48       ` Jan Beulich [this message]
2013-05-14 10:21         ` Ian Campbell
2013-05-14 14:29           ` Jan Beulich
2013-05-14 14:37             ` Jan Beulich
2013-05-14 14:54             ` Ian Campbell
2013-05-14 14:56               ` Ian Campbell
2013-05-14 15:07                 ` Ian Campbell
2013-05-14 15:46                   ` Jan Beulich
2013-05-14 16:41                     ` Ian Campbell
2013-05-15  7:12                       ` Jan Beulich
2013-05-15  9:47                         ` Ian Campbell
2013-05-15 12:19                           ` Jan Beulich
2013-05-15 13:47                             ` Ian Campbell
2013-05-16 10:17                               ` Jan Beulich
2013-05-17 10:07                                 ` Ian Campbell
2013-05-17 10:39                                   ` Jan Beulich
2013-05-17 14:34                                     ` Ian Campbell
2013-05-17 15:34                                       ` Jan Beulich
2013-05-17 17:03                                         ` Ian Campbell
2013-05-21  7:54                                           ` Jan Beulich
2013-05-14 15:11               ` Jan Beulich
2013-05-14 15:14                 ` Ian Campbell
2013-05-14  9:36 ` [PATCH 0/4] xen/arm: fixes for 64 bit Ian Campbell

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=5192248402000078000D5E7F@nat28.tlf.novell.com \
    --to=jbeulich@suse.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=julien.grall@citrix.com \
    --cc=keir@xen.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tim@xen.org \
    --cc=xen-devel@lists.xen.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.