All of lore.kernel.org
 help / color / mirror / Atom feed
From: Carlo Marcelo Arenas Belon <carenas@sajinet.com.pe>
To: sol10x86@cox.net, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] error compiling hw/sh7750.c
Date: Sun, 11 Nov 2007 11:21:22 -0600	[thread overview]
Message-ID: <20071111172122.GA9387@tapir> (raw)
In-Reply-To: <20071111160634.GF25322@tapir>

On Sun, Nov 11, 2007 at 10:06:34AM -0600, Carlo Marcelo Arenas Belon wrote:
> On Sun, Nov 11, 2007 at 09:30:26AM -0500, Ben Taylor wrote:
> > So the macro turns the last _INTC_ARRAY(NULL) into
> > 
> > "NULL, sizeof(NULL)/sizeof(*NULL)
> 
> in my 64bit linux using gcc-4.1.2 it becomes instead :
> 
>   ((void *)0), sizeof(((void *)0))/sizeof(*((void *)0))
> 
> what version of gcc (gcc -v) are you using in that Solaris 10 box? (HINT: not
> all available versions of gcc compile qemu correctly) :
> 
>   http://www.opensolaris.org/os/project/qemu/host/gcc-failures/

That didn't sound as clear as it should, so I booted an OpenSolaris Nevada 70b
using the sun provided gcc :

$ uname -a
SunOS dell 5.11 snv_70b i86pc i386 i86pc
$ gcc -v
Reading specs from /usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/specs
Configured with: /builds2/sfwnv-gate/usr/src/cmd/gcc/gcc-3.4.3/configure
--prefix=/usr/sfw --with-as=/usr/sfw/bin/gas --with-gnu-as
--with-ld=/usr/ccs/bin/ld --without-gnu-ld --enable-languages=c,c++,f77,objc
--enable-shared
Thread model: posix
gcc version 3.4.3 (csl-sol210-3_4-20050802)

and run a test, the problem is in /usr/include/iso/stdio_iso.h that defined
NULL as an int and not a pointer as shown by :

fndef NULL
#if defined(_LP64)
#define NULL    0L
#else
#define NULL    0
#endif
#endif

contradicting (at least in spirit) the C99 (ISO/IEC 9899:TCS) standard that
says :

  "A pointer to void shall have the same representation and alignment 
   requirements as a pointer to a character type"

and therefore makes sizeof(*NULL) == 1 solving the problem to compile as it is
done if applying the following patch :

Carlo

---
--- qemu/hw/sh7750.c	Sun Oct  7 09:31:11 2007
+++ qemu/hw/sh7750.c	Sun Nov 11 16:13:13 2007
@@ -29,6 +29,9 @@
 #include "sh7750_regnames.h"
 #include "sh_intc.h"
 
+#undef NULL
+#define NULL ((void *)0)
+
 #define NB_DEVICES 4
 
 typedef struct SH7750State {

  reply	other threads:[~2007-11-11 17:16 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-11 14:30 [Qemu-devel] error compiling hw/sh7750.c Ben Taylor
2007-11-11 16:06 ` Carlo Marcelo Arenas Belon
2007-11-11 17:21   ` Carlo Marcelo Arenas Belon [this message]
2007-11-11 17:24     ` Paul Brook
2007-11-11 18:03       ` Carlo Marcelo Arenas Belon
2007-11-11 17:46     ` M. Warner Losh
2007-11-11 17:49     ` Andreas Schwab

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=20071111172122.GA9387@tapir \
    --to=carenas@sajinet.com.pe \
    --cc=qemu-devel@nongnu.org \
    --cc=sol10x86@cox.net \
    /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.