From: "Boehm, Hans" <hans_boehm@hp.com>
To: linux-ia64@vger.kernel.org
Subject: RE: [Linux-ia64] C union on ia-64
Date: Wed, 24 Oct 2001 19:46:41 +0000 [thread overview]
Message-ID: <marc-linux-ia64-105590698805386@msgid-missing> (raw)
In-Reply-To: <marc-linux-ia64-105590698805377@msgid-missing>
That slide looks to me like it escaped from a presentation on 64-bit Windows
programming, where "unsigned long" is 4 bytes long, unlike "void *", and
where it's customary to call both types by different names.
It is never legal C to union the two structures store into one structure
field, and retrieve the value through a field in the other structure. In
many cases it may work, but it is officially undefined, and hence allowed to
confuse the compiler's alias analysis. Thus the compiler is entitled to
generate incorrect code. This applies to all platforms.
In the 64-bit Windows case, this sort of thing is guaranteed to fail, since
the fields also don't line up correctly. On the Linux side, there is no
difference between the 64-bit and 32-bit cases.
Unless there's a better explanation, could someone at Intel correct this?
Hans
> -----Original Message-----
> From: Gururaj Ananthateerta [mailto:gururaj@cup.hp.com]
> Sent: Wednesday, October 24, 2001 11:53 AM
> To: Andreas Schwab
> Cc: KOCHI, Takayoshi; linux-64
> Subject: Re: [Linux-ia64] C union on ia-64
>
>
> http://developer.intel.com/design/itanium/linuxDDPorting/sld025.htm
>
> The above link provides an example.
>
>
>
> Andreas Schwab wrote:
>
> > Gururaj Ananthateerta <gururaj@cup.hp.com> writes:
> >
> > |> Anyone experienced (memory corruption ) problems with
> unions on ia-64.
> > |> I have found couple of documents which discourages the
> use of unions on
> > |> ia-64 in particular.
> >
> > Please expand. Unions are an integral part of C, without
> them you could
> > not call it C.
> >
> > Andreas.
> >
> > --
> > Andreas Schwab "And now
> for something
> > Andreas.Schwab@suse.de completely
> different."
> > SuSE Labs, SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg
> > Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
>
>
> _______________________________________________
> Linux-IA64 mailing list
> Linux-IA64@linuxia64.org
> http://lists.linuxia64.org/lists/listinfo/linux-ia64
>
next prev parent reply other threads:[~2001-10-24 19:46 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-23 19:03 [Linux-ia64] C union on ia-64 Gururaj Ananthateerta
2001-10-24 11:35 ` Andreas Schwab
2001-10-24 18:52 ` Gururaj Ananthateerta
2001-10-24 19:46 ` Andreas Schwab
2001-10-24 19:46 ` Boehm, Hans [this message]
2001-10-24 19:50 ` n0ano
2001-10-24 19:50 ` KOCHI, Takayoshi
2001-10-25 1:12 ` Tang, Yu
2001-10-25 14:36 ` n0ano
2001-10-31 23:16 ` Jes Sorensen
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=marc-linux-ia64-105590698805386@msgid-missing \
--to=hans_boehm@hp.com \
--cc=linux-ia64@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox