qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Stefan Weil <weil@mail.berlios.de>
Cc: QEMU Developers <qemu-devel@nongnu.org>,
	Aurelien Jarno <aurelien@aurel32.net>
Subject: [Qemu-devel] Re: [PATCH 01/14] Add new data type for fprintf like function pointers
Date: Fri, 02 Jul 2010 17:37:26 +0200	[thread overview]
Message-ID: <4C2E07B6.1050605@redhat.com> (raw)
In-Reply-To: <4BBF0D7B.60400@mail.berlios.de>

On 04/09/2010 01:20 PM, Stefan Weil wrote:
> Some restrictions why qemu-common.h was not used might be no longer
> valid (I think they came from pre-tcg times). Nevertheless,
> cris-dis.c even says that it cannot include qemu-common.h (without
> giving a reason).

I think these are no longer valid.  In fact, almost everything is
including the full-blown qemu-common.h, via some other header file.

They may be valid only in cpu-exec.c and target-*/op_helper.c, but even
then maybe not. :)  In particular, I see two reasons to limit the number
of included files when global registers are in use.

The first is avoiding library calls since they may be unsafe some
OS/host combinations, particularly SPARC/glibc.  No includes -> no
prototypes -> no calls.  cpu-exec.c is careful to only use the global
env when it's safe to do so, but logging goes through fprintf and
target-*/op_helper.c files require logging.  Apparently, printf/fprintf
have been audited to work on SPARC/glibc too, so dyngen-exec.h allows
those calls.  This however does not *require* using custom declarations
in place of stdio.h as done in dyngen-exec.h, it's just a small safety net.

The second (more real) reason is inline assembly failures, for example
(32-bit x86):

     register int e asm("edi");

     static inline int h()
     {
         int x;
         asm volatile ("mov $0, %0" : "=D" (x));
     }

     int g()
     {
         int f = e;
         h();
         return e - f;
     }

fails to compile because gcc cannot assign edi to %0 in h().  Some host
headers may use assembly in a way that breaks qemu.  With only one
global register in use, however, it makes sense IMO to drop the custom
inclusion hacks and see if anyone screams.

Paolo

  parent reply	other threads:[~2010-07-02 15:37 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-29 19:16 [Qemu-devel] Check format specifiers for fprintf like function pointers Stefan Weil
2010-03-29 19:16 ` [Qemu-devel] [PATCH 01/14] Add new data type " Stefan Weil
2010-04-08 19:29   ` Aurelien Jarno
2010-04-09 11:20     ` Stefan Weil
2010-07-01  9:08       ` Stefan Weil
2010-07-01 23:08         ` Aurelien Jarno
2010-07-02 15:37       ` Paolo Bonzini [this message]
2010-07-02 16:17         ` [Qemu-devel] [RFC] env stored in segment register for i386 Richard Henderson
2010-07-03  7:32         ` [Qemu-devel] Re: [PATCH 01/14] Add new data type for fprintf like function pointers Blue Swirl
2010-03-29 19:16 ` [Qemu-devel] [PATCH 02/14] Use fprint_function and fix wrong format specifiers Stefan Weil
2010-03-29 19:16 ` [Qemu-devel] [PATCH 03/14] target-alpha: Use fprintf_function Stefan Weil
2010-03-29 19:16 ` [Qemu-devel] [PATCH 04/14] target-arm: " Stefan Weil
2010-03-29 19:16 ` [Qemu-devel] [PATCH 05/14] target-cris: " Stefan Weil
2010-03-29 19:16 ` [Qemu-devel] [PATCH 06/14] target-i386: Use fprintf_function and fix dump of DR registers Stefan Weil
2010-03-29 19:16 ` [Qemu-devel] [PATCH 07/14] target-m68k: Use fprintf_function Stefan Weil
2010-03-29 19:16 ` [Qemu-devel] [PATCH 08/14] target-microblaze: " Stefan Weil
2010-03-29 19:17 ` [Qemu-devel] [PATCH 09/14] target-mips: Use fprintf_function and fix wrong format specifiers Stefan Weil
2010-04-01 21:05   ` [Qemu-devel] [PATCH] target-mips: Fix format specifiers for fpu_fprintf Stefan Weil
2010-04-09 19:54     ` Aurelien Jarno
2010-03-29 19:17 ` [Qemu-devel] [PATCH 10/14] target-ppc: Use fprintf_function and fix wrong format specifiers Stefan Weil
2010-03-29 19:17 ` [Qemu-devel] [PATCH 11/14] target-sh4: Use fprintf_function Stefan Weil
2010-03-29 19:17 ` [Qemu-devel] [PATCH 12/14] target-sparc: " Stefan Weil
2010-03-29 19:17 ` [Qemu-devel] [PATCH 13/14] target-s390: " Stefan Weil
2010-03-29 19:17 ` [Qemu-devel] [PATCH 14/14] tcg: " Stefan Weil
2010-03-29 19:27 ` [Qemu-devel] Check format specifiers for fprintf like function pointers Stefan Weil

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=4C2E07B6.1050605@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=aurelien@aurel32.net \
    --cc=qemu-devel@nongnu.org \
    --cc=weil@mail.berlios.de \
    /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).