All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v1 0/8]  Remove some of the fprintf(stderr, "*
@ 2017-09-26  0:08 Alistair Francis
  2017-09-26  0:08   ` Alistair Francis
                   ` (10 more replies)
  0 siblings, 11 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-26  0:08 UTC (permalink / raw)
  To: qemu-devel; +Cc: alistair.francis, alistair23, armbru


Continue on improving QEMUs logging/error messages by removing more
fprintf()'s.

Unfortunatley my Coccinelle skills aren't that great so it's all done in
some nasty regex and a little bit of manual work.



Alistair Francis (8):
  Replace all occurances of __FUNCTION__ with __func__
  tests: Replace fprintf(stderr, "*\n" with error_report()
  hw: Replace fprintf(stderr, "*\n" with error_report()
  block: Replace fprintf(stderr, "*\n" with error_report()
  util: Replace fprintf(stderr, "*\n" with error_report()
  ui: Replace fprintf(stderr, "*\n" with error_report()
  tcg: Replace fprintf(stderr, "*\n" with error_report()
  target: Replace fprintf(stderr, "*\n" with error_report()

 audio/audio_int.h                      |   2 +-
 block/file-posix.c                     |   6 +-
 block/file-win32.c                     |   3 +-
 block/linux-aio.c                      |   5 +-
 block/parallels.c                      |   7 ++-
 block/qcow2-cluster.c                  |   2 +-
 block/qcow2-refcount.c                 |  95 +++++++++++++++----------------
 block/qcow2.c                          |   8 +--
 block/quorum.c                         |   5 +-
 block/ssh.c                            |   4 +-
 block/vdi.c                            |  14 +++--
 block/vpc.c                            |   5 +-
 block/vvfat.c                          |  99 ++++++++++++++++++---------------
 cpus.c                                 |   8 +--
 exec.c                                 |  14 ++---
 hw/arm/armv7m.c                        |   2 +-
 hw/arm/boot.c                          |  34 +++++------
 hw/arm/gumstix.c                       |  13 +++--
 hw/arm/mainstone.c                     |   7 ++-
 hw/arm/musicpal.c                      |   2 +-
 hw/arm/nseries.c                       |   2 +-
 hw/arm/omap1.c                         |  45 +++++++--------
 hw/arm/omap2.c                         |  23 ++++----
 hw/arm/omap_sx1.c                      |   6 +-
 hw/arm/palm.c                          |  20 +++----
 hw/arm/pxa2xx.c                        |  53 +++++++++---------
 hw/arm/pxa2xx_gpio.c                   |   6 +-
 hw/arm/pxa2xx_pic.c                    |   4 +-
 hw/arm/stellaris.c                     |   3 +-
 hw/arm/tosa.c                          |  25 +++++----
 hw/arm/versatilepb.c                   |   2 +-
 hw/arm/vexpress.c                      |   8 +--
 hw/arm/z2.c                            |   6 +-
 hw/audio/hda-codec.c                   |  10 ++--
 hw/audio/intel-hda.c                   |  28 +++++-----
 hw/audio/wm8750.c                      |   4 +-
 hw/block/dataplane/virtio-blk.c        |   6 +-
 hw/block/nand.c                        |   4 +-
 hw/block/onenand.c                     |  16 +++---
 hw/block/tc58128.c                     |  44 +++++++--------
 hw/bt/core.c                           |  15 ++---
 hw/bt/hci-csr.c                        |  17 +++---
 hw/bt/hci.c                            |  48 ++++++++--------
 hw/bt/hid.c                            |   4 +-
 hw/bt/l2cap.c                          |  49 ++++++++--------
 hw/bt/sdp.c                            |  11 ++--
 hw/char/exynos4210_uart.c              |   6 +-
 hw/char/mcf_uart.c                     |   5 +-
 hw/char/sh_serial.c                    |   9 +--
 hw/core/loader.c                       |  31 ++++++-----
 hw/core/ptimer.c                       |   7 ++-
 hw/cris/axis_dev88.c                   |   3 +-
 hw/cris/boot.c                         |   5 +-
 hw/display/blizzard.c                  |  28 +++++-----
 hw/display/omap_dss.c                  |  16 +++---
 hw/display/pl110.c                     |   2 +-
 hw/display/pxa2xx_lcd.c                |  14 ++---
 hw/display/qxl-render.c                |   9 ++-
 hw/display/qxl.c                       |  10 ++--
 hw/display/qxl.h                       |   2 +-
 hw/display/tc6393xb.c                  |  38 +++++++------
 hw/display/virtio-gpu-3d.c             |   4 +-
 hw/display/vmware_vga.c                |  22 ++++----
 hw/display/xenfb.c                     |   2 +-
 hw/dma/omap_dma.c                      |  38 +++++++------
 hw/dma/pxa2xx_dma.c                    |  14 ++---
 hw/dma/soc_dma.c                       |  37 ++++++------
 hw/gpio/max7310.c                      |   8 +--
 hw/gpio/omap_gpio.c                    |   2 +-
 hw/i2c/omap_i2c.c                      |  10 ++--
 hw/i386/kvm/apic.c                     |   9 +--
 hw/i386/kvm/clock.c                    |   7 ++-
 hw/i386/kvm/i8254.c                    |   7 ++-
 hw/i386/kvm/i8259.c                    |   5 +-
 hw/i386/kvm/ioapic.c                   |   5 +-
 hw/i386/multiboot.c                    |  21 +++----
 hw/i386/pc.c                           |  18 +++---
 hw/i386/pc_piix.c                      |   2 +-
 hw/i386/pc_sysfw.c                     |   5 +-
 hw/i386/xen/xen-hvm.c                  |  32 ++++++-----
 hw/i386/xen/xen-mapcache.c             |  12 ++--
 hw/i386/xen/xen_apic.c                 |   2 +-
 hw/ide/ahci.c                          |   6 +-
 hw/ide/core.c                          |   2 +-
 hw/ide/microdrive.c                    |   4 +-
 hw/input/lm832x.c                      |   8 +--
 hw/input/pckbd.c                       |   3 +-
 hw/input/pxa2xx_keypad.c               |   6 +-
 hw/input/tsc2005.c                     |  17 +++---
 hw/input/tsc210x.c                     |  76 ++++++++++++-------------
 hw/input/virtio-input-hid.c            |  14 ++---
 hw/input/virtio-input.c                |   5 +-
 hw/intc/arm_gic_kvm.c                  |  12 ++--
 hw/intc/omap_intc.c                    |   4 +-
 hw/intc/openpic.c                      |   7 ++-
 hw/intc/openpic_kvm.c                  |   8 +--
 hw/intc/s390_flic_kvm.c                |   4 +-
 hw/ipmi/ipmi.c                         |   1 +
 hw/ipmi/ipmi_bmc_extern.c              |   5 +-
 hw/isa/isa-bus.c                       |   7 ++-
 hw/isa/vt82c686.c                      |   2 +-
 hw/lm32/lm32_boards.c                  |   5 +-
 hw/lm32/milkymist.c                    |   5 +-
 hw/m68k/an5206.c                       |   4 +-
 hw/m68k/mcf5206.c                      |   3 +-
 hw/m68k/mcf5208.c                      |   7 ++-
 hw/microblaze/boot.c                   |   2 +-
 hw/mips/boston.c                       |   4 +-
 hw/mips/gt64xxx_pci.c                  |   2 +-
 hw/mips/mips_fulong2e.c                |   4 +-
 hw/mips/mips_jazz.c                    |   4 +-
 hw/mips/mips_malta.c                   |   4 +-
 hw/mips/mips_mipssim.c                 |   4 +-
 hw/mips/mips_r4k.c                     |   6 +-
 hw/misc/a9scu.c                        |   3 +-
 hw/misc/cbus.c                         |  12 ++--
 hw/misc/omap_clk.c                     |   4 +-
 hw/misc/omap_gpmc.c                    |  13 +++--
 hw/misc/omap_l4.c                      |   5 +-
 hw/misc/omap_sdrc.c                    |   5 +-
 hw/misc/omap_tap.c                     |   6 +-
 hw/misc/tmp105.c                       |   2 +-
 hw/misc/vmport.c                       |   2 +-
 hw/moxie/moxiesim.c                    |   7 ++-
 hw/net/fsl_etsec/etsec.c               |   2 +-
 hw/net/pcnet.c                         |   2 +-
 hw/net/smc91c111.c                     |   5 +-
 hw/net/vhost_net.c                     |  16 +++---
 hw/nios2/boot.c                        |   2 +-
 hw/nvram/eeprom93xx.c                  |   5 +-
 hw/nvram/fw_cfg.c                      |   4 +-
 hw/openrisc/openrisc_sim.c             |   3 +-
 hw/pci-host/bonito.c                   |   8 +--
 hw/pci/pci.c                           |  10 ++--
 hw/ppc/e500.c                          |  20 +++----
 hw/ppc/mac_newworld.c                  |   2 +-
 hw/ppc/mac_oldworld.c                  |   2 +-
 hw/ppc/mpc8544_guts.c                  |   5 +-
 hw/ppc/ppc405_boards.c                 |   8 +--
 hw/ppc/ppc440_bamboo.c                 |  19 ++++---
 hw/ppc/ppc4xx_pci.c                    |   3 +-
 hw/ppc/prep.c                          |   4 +-
 hw/ppc/virtex_ml507.c                  |   4 +-
 hw/s390x/virtio-ccw.c                  |   2 +-
 hw/scsi/lsi53c895a.c                   |   4 +-
 hw/scsi/spapr_vscsi.c                  |  49 ++++++++--------
 hw/scsi/virtio-scsi-dataplane.c        |   6 +-
 hw/sd/pl181.c                          |   5 +-
 hw/sd/pxa2xx_mmci.c                    |   6 +-
 hw/sd/sd.c                             |  14 ++---
 hw/sh4/r2d.c                           |   9 +--
 hw/sh4/sh7750.c                        |  64 ++++++++++-----------
 hw/sparc/leon3.c                       |   9 +--
 hw/sparc/sun4m.c                       |   8 +--
 hw/sparc64/niagara.c                   |   2 +-
 hw/sparc64/sun4u.c                     |   9 +--
 hw/ssi/omap_spi.c                      |   9 +--
 hw/timer/omap_gptimer.c                |  13 +++--
 hw/timer/twl92230.c                    |   8 +--
 hw/timer/xilinx_timer.c                |   8 +--
 hw/usb/core.c                          |  15 ++---
 hw/usb/desc.c                          |   4 +-
 hw/usb/dev-audio.c                     |  29 +++++-----
 hw/usb/dev-bluetooth.c                 |   4 +-
 hw/usb/dev-mtp.c                       |   9 +--
 hw/usb/dev-network.c                   |  20 +++----
 hw/usb/hcd-ehci.c                      |  32 +++++------
 hw/usb/hcd-musb.c                      |   4 +-
 hw/usb/hcd-xhci.c                      |   3 +-
 hw/usb/host-legacy.c                   |   2 +-
 hw/usb/tusb6010.c                      |  14 ++---
 hw/watchdog/watchdog.c                 |   9 +--
 hw/watchdog/wdt_i6300esb.c             |   8 ++-
 hw/xen/xen-common.c                    |  10 ++--
 hw/xen/xen_pt.c                        |   4 +-
 hw/xenpv/xen_domainbuild.c             |  32 +++++------
 hw/xenpv/xen_machine_pv.c              |   8 +--
 include/hw/arm/omap.h                  |  10 ++--
 include/hw/arm/sharpsl.h               |   2 +-
 memory_mapping.c                       |   2 +-
 migration/block.c                      |   4 +-
 target/arm/arm-powerctl.c              |   5 +-
 target/arm/arm-semi.c                  |   3 +-
 target/arm/helper.c                    |   4 +-
 target/arm/kvm.c                       |  16 +++---
 target/arm/kvm32.c                     |   2 +-
 target/arm/kvm64.c                     |   2 +-
 target/arm/translate-a64.c             |   4 +-
 target/arm/translate.c                 |   2 +-
 target/cris/helper.c                   |   2 +-
 target/cris/translate.c                |   2 +-
 target/i386/hax-all.c                  |  52 ++++++++---------
 target/i386/hax-darwin.c               |  26 ++++-----
 target/i386/hax-mem.c                  |   4 +-
 target/i386/hax-windows.c              |  42 +++++++-------
 target/i386/kvm.c                      |  38 ++++++-------
 target/i386/misc_helper.c              |  12 ++--
 target/lm32/op_helper.c                |   4 +-
 target/mips/mips-semi.c                |   3 +-
 target/mips/translate.c                |   2 +-
 target/ppc/excp_helper.c               |   4 +-
 target/ppc/kvm.c                       |  36 ++++++------
 target/ppc/mmu-hash64.c                |   2 +-
 target/ppc/mmu_helper.c                |   2 +-
 target/ppc/translate.c                 |  20 +++----
 target/ppc/translate_init.c            |  53 +++++++++---------
 target/s390x/kvm.c                     |  20 +++----
 target/s390x/misc_helper.c             |   2 +-
 target/sh4/translate.c                 |   4 +-
 target/unicore32/translate.c           |   4 +-
 tcg/optimize.c                         |   8 +--
 tcg/tcg.c                              |   2 +-
 tcg/tcg.h                              |   3 +-
 tcg/tci.c                              |   2 +-
 tcg/tci/tcg-target.inc.c               |   4 +-
 tests/Makefile.include                 |   4 +-
 tests/ahci-test.c                      |   3 +-
 tests/atomic_add-bench.c               |   2 +-
 tests/bios-tables-test.c               |   5 +-
 tests/check-qlit                       | Bin 0 -> 272776 bytes
 tests/i440fx-test.c                    |   8 +--
 tests/libqos/ahci.c                    |  10 ++--
 tests/libqos/libqos.c                  |   7 ++-
 tests/libqos/malloc.c                  |  13 +++--
 tests/libqtest.c                       |  13 +++--
 tests/migration/stress.c               |  36 ++++++------
 tests/postcopy-test.c                  |   8 +--
 tests/qemu-iotests/socket_scm_helper.c |  11 ++--
 tests/qht-bench.c                      |   5 +-
 tests/rcutorture.c                     |   5 +-
 tests/tcg/linux-test.c                 |   2 +-
 tests/tcg/runcom.c                     |   6 +-
 tests/tcg/test-i386-fprem.c            |   2 +-
 tests/tcg/test_path.c                  |   4 +-
 tests/test-hmp.c                       |   5 +-
 tests/test-rcu-list.c                  |   5 +-
 tests/usb-hcd-ehci-test.c              |   2 +-
 tests/vhost-user-bridge.c              |  28 +++++-----
 ui/cocoa.m                             |   6 +-
 ui/console.c                           |   2 +-
 ui/curses.c                            |   2 +-
 ui/cursor.c                            |  12 ++--
 ui/gtk.c                               |  10 ++--
 ui/input-linux.c                       |   3 +-
 ui/keymaps.c                           |   4 +-
 ui/sdl.c                               |  14 ++---
 ui/sdl2.c                              |   8 +--
 ui/sdl_zoom.c                          |   3 +-
 ui/shader.c                            |   8 +--
 ui/spice-display.c                     |  10 ++--
 ui/vnc-enc-tight.c                     |   4 +-
 ui/vnc-enc-zlib.c                      |   4 +-
 ui/vnc-enc-zrle.c                      |   4 +-
 ui/vnc.c                               |   2 +-
 util/aio-posix.c                       |   5 +-
 util/coroutine-sigaltstack.c           |   2 +-
 util/error.c                           |   2 +-
 util/main-loop.c                       |   2 +-
 util/mmap-alloc.c                      |   3 +-
 util/module.c                          |   6 +-
 util/osdep.c                           |   4 +-
 util/oslib-posix.c                     |   3 +-
 util/oslib-win32.c                     |   3 +-
 util/qemu-coroutine.c                  |   5 +-
 util/qemu-progress.c                   |   3 +-
 util/qemu-thread-posix.c               |   5 +-
 util/qemu-thread-win32.c               |   5 +-
 util/qemu-timer-common.c               |   3 +-
 util/qht.c                             |   2 +-
 vl.c                                   |   2 +-
 270 files changed, 1477 insertions(+), 1368 deletions(-)
 create mode 100755 tests/check-qlit

-- 
2.11.0

^ permalink raw reply	[flat|nested] 35+ messages in thread

* [Qemu-devel] [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__
  2017-09-26  0:08 [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* Alistair Francis
@ 2017-09-26  0:08   ` Alistair Francis
  2017-09-26  0:08 ` [Qemu-devel] [PATCH v1 2/8] tests: Replace fprintf(stderr, "*\n" with error_report() Alistair Francis
                     ` (9 subsequent siblings)
  10 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-26  0:08 UTC (permalink / raw)
  To: qemu-devel
  Cc: alistair.francis, alistair23, armbru, Gerd Hoffmann,
	Andrzej Zaborowski, Stefano Stabellini, Anthony Perard,
	John Snow, Aurelien Jarno, Yongbok Kim, Peter Crosthwaite,
	Stefan Hajnoczi, Fam Zheng, Juan Quintela,
	Dr. David Alan Gilbert, qemu-arm, qemu-block, xen-devel

Replace all occurs of __FUNCTION__ except for the check in checkpatch
with the non GCC specific __func__.

One line in hcd-musb.c was manually tweaked to pass checkpatch.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Andrzej Zaborowski <balrogg@gmail.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Anthony Perard <anthony.perard@citrix.com>
Cc: John Snow <jsnow@redhat.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: Yongbok Kim <yongbok.kim@imgtec.com>
Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
Cc: Stefan Hajnoczi <stefanha@redhat.com> (supporter:Block
Cc: Fam Zheng <famz@redhat.com> (supporter:Block
Cc: Juan Quintela <quintela@redhat.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: qemu-arm@nongnu.org
Cc: qemu-block@nongnu.org
Cc: xen-devel@lists.xenproject.org
---

 audio/audio_int.h          |  2 +-
 hw/arm/nseries.c           |  2 +-
 hw/arm/omap1.c             | 42 +++++++++++++++++++++---------------------
 hw/arm/omap2.c             | 12 ++++++------
 hw/arm/palm.c              | 14 +++++++-------
 hw/arm/pxa2xx.c            | 46 +++++++++++++++++++++++-----------------------
 hw/arm/pxa2xx_gpio.c       |  6 +++---
 hw/arm/pxa2xx_pic.c        |  4 ++--
 hw/arm/tosa.c              | 10 +++++-----
 hw/audio/hda-codec.c       | 10 +++++-----
 hw/audio/intel-hda.c       | 28 ++++++++++++++--------------
 hw/audio/wm8750.c          |  4 ++--
 hw/block/nand.c            |  4 ++--
 hw/block/onenand.c         |  8 ++++----
 hw/bt/core.c               | 10 +++++-----
 hw/bt/hci-csr.c            | 14 +++++++-------
 hw/bt/hci.c                | 26 +++++++++++++-------------
 hw/bt/hid.c                |  2 +-
 hw/bt/l2cap.c              | 22 +++++++++++-----------
 hw/bt/sdp.c                |  6 +++---
 hw/display/blizzard.c      | 18 +++++++++---------
 hw/display/omap_dss.c      |  6 +++---
 hw/display/pxa2xx_lcd.c    | 14 +++++++-------
 hw/display/qxl-render.c    |  6 +++---
 hw/display/qxl.h           |  2 +-
 hw/display/tc6393xb.c      |  2 +-
 hw/display/xenfb.c         |  2 +-
 hw/dma/omap_dma.c          | 26 +++++++++++++-------------
 hw/dma/pxa2xx_dma.c        | 14 +++++++-------
 hw/gpio/max7310.c          |  8 ++++----
 hw/gpio/omap_gpio.c        |  2 +-
 hw/i2c/omap_i2c.c          |  6 +++---
 hw/ide/ahci.c              |  2 +-
 hw/ide/microdrive.c        |  4 ++--
 hw/input/lm832x.c          |  6 +++---
 hw/input/pxa2xx_keypad.c   |  6 +++---
 hw/input/tsc2005.c         |  8 ++++----
 hw/input/tsc210x.c         |  4 ++--
 hw/intc/omap_intc.c        |  2 +-
 hw/isa/vt82c686.c          |  2 +-
 hw/mips/gt64xxx_pci.c      |  2 +-
 hw/misc/cbus.c             | 12 ++++++------
 hw/misc/omap_clk.c         |  4 ++--
 hw/misc/omap_gpmc.c        |  6 +++---
 hw/misc/omap_l4.c          |  4 ++--
 hw/misc/omap_sdrc.c        |  2 +-
 hw/misc/omap_tap.c         |  6 +++---
 hw/misc/tmp105.c           |  2 +-
 hw/pci-host/bonito.c       |  2 +-
 hw/sd/pxa2xx_mmci.c        |  6 +++---
 hw/ssi/omap_spi.c          |  6 +++---
 hw/timer/omap_gptimer.c    |  6 +++---
 hw/timer/twl92230.c        |  6 +++---
 hw/usb/desc.c              |  2 +-
 hw/usb/dev-bluetooth.c     |  4 ++--
 hw/usb/hcd-musb.c          |  4 ++--
 hw/usb/tusb6010.c          | 14 +++++++-------
 hw/xenpv/xen_domainbuild.c | 16 ++++++++--------
 hw/xenpv/xen_machine_pv.c  |  2 +-
 include/hw/arm/omap.h      | 10 +++++-----
 include/hw/arm/sharpsl.h   |  2 +-
 memory_mapping.c           |  2 +-
 migration/block.c          |  4 ++--
 ui/cursor.c                |  6 +++---
 ui/spice-display.c         |  4 ++--
 65 files changed, 273 insertions(+), 273 deletions(-)

diff --git a/audio/audio_int.h b/audio/audio_int.h
index 5bcb1c60e1..543b1bd8d5 100644
--- a/audio/audio_int.h
+++ b/audio/audio_int.h
@@ -253,7 +253,7 @@ static inline int audio_ring_dist (int dst, int src, int len)
 #define AUDIO_STRINGIFY(n) AUDIO_STRINGIFY_(n)
 
 #if defined _MSC_VER || defined __GNUC__
-#define AUDIO_FUNC __FUNCTION__
+#define AUDIO_FUNC __func__
 #else
 #define AUDIO_FUNC __FILE__ ":" AUDIO_STRINGIFY (__LINE__)
 #endif
diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
index 58005b6619..32687afced 100644
--- a/hw/arm/nseries.c
+++ b/hw/arm/nseries.c
@@ -463,7 +463,7 @@ static uint32_t mipid_txrx(void *opaque, uint32_t cmd, int len)
     uint8_t ret;
 
     if (len > 9) {
-        hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len);
+        hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len);
     }
 
     if (s->p >= ARRAY_SIZE(s->resp)) {
diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c
index b3e7625130..1388200191 100644
--- a/hw/arm/omap1.c
+++ b/hw/arm/omap1.c
@@ -999,7 +999,7 @@ static uint64_t omap_id_read(void *opaque, hwaddr addr,
         case omap1510:
             return 0x03310115;
         default:
-            hw_error("%s: bad mpu model\n", __FUNCTION__);
+            hw_error("%s: bad mpu model\n", __func__);
         }
         break;
 
@@ -1010,7 +1010,7 @@ static uint64_t omap_id_read(void *opaque, hwaddr addr,
         case omap1510:
             return 0xfb47002f;
         default:
-            hw_error("%s: bad mpu model\n", __FUNCTION__);
+            hw_error("%s: bad mpu model\n", __func__);
         }
         break;
     }
@@ -1716,7 +1716,7 @@ static void omap_clkm_write(void *opaque, hwaddr addr,
     case 0x18:	/* ARM_SYSST */
         if ((s->clkm.clocking_scheme ^ (value >> 11)) & 7) {
             s->clkm.clocking_scheme = (value >> 11) & 7;
-            printf("%s: clocking scheme set to %s\n", __FUNCTION__,
+            printf("%s: clocking scheme set to %s\n", __func__,
                             clkschemename[s->clkm.clocking_scheme]);
         }
         s->clkm.cold_start &= value & 0x3f;
@@ -2129,14 +2129,14 @@ qemu_irq *omap_mpuio_in_get(struct omap_mpuio_s *s)
 void omap_mpuio_out_set(struct omap_mpuio_s *s, int line, qemu_irq handler)
 {
     if (line >= 16 || line < 0)
-        hw_error("%s: No GPIO line %i\n", __FUNCTION__, line);
+        hw_error("%s: No GPIO line %i\n", __func__, line);
     s->handler[line] = handler;
 }
 
 void omap_mpuio_key(struct omap_mpuio_s *s, int row, int col, int down)
 {
     if (row >= 5 || row < 0)
-        hw_error("%s: No key %i-%i\n", __FUNCTION__, col, row);
+        hw_error("%s: No key %i-%i\n", __func__, col, row);
 
     if (down)
         s->buttons[row] |= 1 << col;
@@ -2313,7 +2313,7 @@ void omap_uwire_attach(struct omap_uwire_s *s,
                 uWireSlave *slave, int chipselect)
 {
     if (chipselect < 0 || chipselect > 3) {
-        fprintf(stderr, "%s: Bad chipselect %i\n", __FUNCTION__, chipselect);
+        fprintf(stderr, "%s: Bad chipselect %i\n", __func__, chipselect);
         exit(-1);
     }
 
@@ -2335,7 +2335,7 @@ static void omap_pwl_update(struct omap_pwl_s *s)
 
     if (output != s->output) {
         s->output = output;
-        printf("%s: Backlight now at %i/256\n", __FUNCTION__, output);
+        printf("%s: Backlight now at %i/256\n", __func__, output);
     }
 }
 
@@ -2473,7 +2473,7 @@ static void omap_pwt_write(void *opaque, hwaddr addr,
     case 0x04:	/* VRC */
         if ((value ^ s->vrc) & 1) {
             if (value & 1)
-                printf("%s: %iHz buzz on\n", __FUNCTION__, (int)
+                printf("%s: %iHz buzz on\n", __func__, (int)
                                 /* 1.5 MHz from a 12-MHz or 13-MHz PWT_CLK */
                                 ((omap_clk_getrate(s->clk) >> 3) /
                                  /* Pre-multiplexer divider */
@@ -2490,7 +2490,7 @@ static void omap_pwt_write(void *opaque, hwaddr addr,
                                  ((value & (1 << 5)) ?  80 : 127) /
                                  (107 * 55 * 63 * 127)));
             else
-                printf("%s: silence!\n", __FUNCTION__);
+                printf("%s: silence!\n", __func__);
         }
         s->vrc = value & 0x7f;
         break;
@@ -2562,7 +2562,7 @@ static void omap_rtc_alarm_update(struct omap_rtc_s *s)
 {
     s->alarm_ti = mktimegm(&s->alarm_tm);
     if (s->alarm_ti == -1)
-        printf("%s: conversion failed\n", __FUNCTION__);
+        printf("%s: conversion failed\n", __func__);
 }
 
 static uint64_t omap_rtc_read(void *opaque, hwaddr addr,
@@ -3028,7 +3028,7 @@ static void omap_mcbsp_source_tick(void *opaque)
     if (!s->rx_rate)
         return;
     if (s->rx_req)
-        printf("%s: Rx FIFO overrun\n", __FUNCTION__);
+        printf("%s: Rx FIFO overrun\n", __func__);
 
     s->rx_req = s->rx_rate << bps[(s->rcr[0] >> 5) & 7];
 
@@ -3074,7 +3074,7 @@ static void omap_mcbsp_sink_tick(void *opaque)
     if (!s->tx_rate)
         return;
     if (s->tx_req)
-        printf("%s: Tx FIFO underrun\n", __FUNCTION__);
+        printf("%s: Tx FIFO underrun\n", __func__);
 
     s->tx_req = s->tx_rate << bps[(s->xcr[0] >> 5) & 7];
 
@@ -3176,7 +3176,7 @@ static uint64_t omap_mcbsp_read(void *opaque, hwaddr addr,
         /* Fall through.  */
     case 0x02:	/* DRR1 */
         if (s->rx_req < 2) {
-            printf("%s: Rx FIFO underrun\n", __FUNCTION__);
+            printf("%s: Rx FIFO underrun\n", __func__);
             omap_mcbsp_rx_done(s);
         } else {
             s->tx_req -= 2;
@@ -3282,7 +3282,7 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr,
             if (s->tx_req < 2)
                 omap_mcbsp_tx_done(s);
         } else
-            printf("%s: Tx FIFO overrun\n", __FUNCTION__);
+            printf("%s: Tx FIFO overrun\n", __func__);
         return;
 
     case 0x08:	/* SPCR2 */
@@ -3297,7 +3297,7 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr,
         s->spcr[0] &= 0x0006;
         s->spcr[0] |= 0xf8f9 & value;
         if (value & (1 << 15))				/* DLB */
-            printf("%s: Digital Loopback mode enable attempt\n", __FUNCTION__);
+            printf("%s: Digital Loopback mode enable attempt\n", __func__);
         if (~value & 1) {				/* RRST */
             s->spcr[0] &= ~6;
             s->rx_req = 0;
@@ -3330,13 +3330,13 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr,
         s->mcr[1] = value & 0x03e3;
         if (value & 3)					/* XMCM */
             printf("%s: Tx channel selection mode enable attempt\n",
-                            __FUNCTION__);
+                            __func__);
         return;
     case 0x1a:	/* MCR1 */
         s->mcr[0] = value & 0x03e1;
         if (value & 1)					/* RMCM */
             printf("%s: Rx channel selection mode enable attempt\n",
-                            __FUNCTION__);
+                            __func__);
         return;
     case 0x1c:	/* RCERA */
         s->rcer[0] = value & 0xffff;
@@ -3418,7 +3418,7 @@ static void omap_mcbsp_writew(void *opaque, hwaddr addr,
             if (s->tx_req < 4)
                 omap_mcbsp_tx_done(s);
         } else
-            printf("%s: Tx FIFO overrun\n", __FUNCTION__);
+            printf("%s: Tx FIFO overrun\n", __func__);
         return;
     }
 
@@ -3536,7 +3536,7 @@ static void omap_lpg_tick(void *opaque)
         timer_mod(s->tm, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + s->on);
 
     s->cycle = !s->cycle;
-    printf("%s: LED is %s\n", __FUNCTION__, s->cycle ? "on" : "off");
+    printf("%s: LED is %s\n", __func__, s->cycle ? "on" : "off");
 }
 
 static void omap_lpg_update(struct omap_lpg_s *s)
@@ -3557,9 +3557,9 @@ static void omap_lpg_update(struct omap_lpg_s *s)
 
     timer_del(s->tm);
     if (on == period && s->on < s->period)
-        printf("%s: LED is on\n", __FUNCTION__);
+        printf("%s: LED is on\n", __func__);
     else if (on == 0 && s->on)
-        printf("%s: LED is off\n", __FUNCTION__);
+        printf("%s: LED is off\n", __func__);
     else if (on && (on != s->on || period != s->period)) {
         s->cycle = 0;
         s->on = on;
diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c
index f5b148881c..b53878b8b9 100644
--- a/hw/arm/omap2.c
+++ b/hw/arm/omap2.c
@@ -1312,7 +1312,7 @@ static void omap_prcm_apll_update(struct omap_prcm_s *s)
 
     if (mode[0] == 1 || mode[0] == 2 || mode[1] == 1 || mode[1] == 2)
         fprintf(stderr, "%s: bad EN_54M_PLL or bad EN_96M_PLL\n",
-                        __FUNCTION__);
+                        __func__);
 }
 
 static void omap_prcm_dpll_update(struct omap_prcm_s *s)
@@ -1331,7 +1331,7 @@ static void omap_prcm_dpll_update(struct omap_prcm_s *s)
     s->dpll_lock = 0;
     switch (mode) {
     case 0:
-        fprintf(stderr, "%s: bad EN_DPLL\n", __FUNCTION__);
+        fprintf(stderr, "%s: bad EN_DPLL\n", __func__);
         break;
     case 1:	/* Low-power bypass mode (Default) */
     case 2:	/* Fast-relock bypass mode */
@@ -1358,7 +1358,7 @@ static void omap_prcm_dpll_update(struct omap_prcm_s *s)
         omap_clk_reparent(core, dpll_x2);
         break;
     case 3:
-        fprintf(stderr, "%s: bad CORE_CLK_SRC\n", __FUNCTION__);
+        fprintf(stderr, "%s: bad CORE_CLK_SRC\n", __func__);
         break;
     }
 }
@@ -1628,7 +1628,7 @@ static void omap_prcm_write(void *opaque, hwaddr addr,
     case 0x500:	/* CM_CLKEN_PLL */
         if (value & 0xffffff30)
             fprintf(stderr, "%s: write 0s in CM_CLKEN_PLL for "
-                            "future compatibility\n", __FUNCTION__);
+                            "future compatibility\n", __func__);
         if ((s->clken[9] ^ value) & 0xcc) {
             s->clken[9] &= ~0xcc;
             s->clken[9] |= value & 0xcc;
@@ -1647,7 +1647,7 @@ static void omap_prcm_write(void *opaque, hwaddr addr,
     case 0x540:	/* CM_CLKSEL1_PLL */
         if (value & 0xfc4000d7)
             fprintf(stderr, "%s: write 0s in CM_CLKSEL1_PLL for "
-                            "future compatibility\n", __FUNCTION__);
+                            "future compatibility\n", __func__);
         if ((s->clksel[5] ^ value) & 0x003fff00) {
             s->clksel[5] = value & 0x03bfff28;
             omap_prcm_dpll_update(s);
@@ -1659,7 +1659,7 @@ static void omap_prcm_write(void *opaque, hwaddr addr,
     case 0x544:	/* CM_CLKSEL2_PLL */
         if (value & ~3)
             fprintf(stderr, "%s: write 0s in CM_CLKSEL2_PLL[31:2] for "
-                            "future compatibility\n", __FUNCTION__);
+                            "future compatibility\n", __func__);
         if (s->clksel[6] != (value & 3)) {
             s->clksel[6] = value & 3;
             omap_prcm_dpll_update(s);
diff --git a/hw/arm/palm.c b/hw/arm/palm.c
index a1f55d79b4..285f43709d 100644
--- a/hw/arm/palm.c
+++ b/hw/arm/palm.c
@@ -44,7 +44,7 @@ static void static_write(void *opaque, hwaddr offset, uint64_t value,
 {
 #ifdef SPY
     printf("%s: value %08lx written at " PA_FMT "\n",
-                    __FUNCTION__, value, offset);
+                    __func__, value, offset);
 #endif
 }
 
@@ -127,11 +127,11 @@ static void palmte_onoff_gpios(void *opaque, int line, int level)
     switch (line) {
     case 0:
         printf("%s: current to MMC/SD card %sabled.\n",
-                        __FUNCTION__, level ? "dis" : "en");
+                        __func__, level ? "dis" : "en");
         break;
     case 1:
         printf("%s: internal speaker amplifier %s.\n",
-                        __FUNCTION__, level ? "down" : "on");
+                        __func__, level ? "down" : "on");
         break;
 
     /* These LCD & Audio output signals have not been identified yet.  */
@@ -139,12 +139,12 @@ static void palmte_onoff_gpios(void *opaque, int line, int level)
     case 3:
     case 4:
         printf("%s: LCD GPIO%i %s.\n",
-                        __FUNCTION__, line - 1, level ? "high" : "low");
+                        __func__, line - 1, level ? "high" : "low");
         break;
     case 5:
     case 6:
         printf("%s: Audio GPIO%i %s.\n",
-                        __FUNCTION__, line - 4, level ? "high" : "low");
+                        __func__, line - 4, level ? "high" : "low");
         break;
     }
 }
@@ -234,7 +234,7 @@ static void palmte_init(MachineState *machine)
         rom_size = get_image_size(option_rom[0].name);
         if (rom_size > flash_size) {
             fprintf(stderr, "%s: ROM image too big (%x > %x)\n",
-                            __FUNCTION__, rom_size, flash_size);
+                            __func__, rom_size, flash_size);
             rom_size = 0;
         }
         if (rom_size > 0) {
@@ -244,7 +244,7 @@ static void palmte_init(MachineState *machine)
         }
         if (rom_size < 0) {
             fprintf(stderr, "%s: error loading '%s'\n",
-                            __FUNCTION__, option_rom[0].name);
+                            __func__, option_rom[0].name);
         }
     }
 
diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
index cf07234578..078006f390 100644
--- a/hw/arm/pxa2xx.c
+++ b/hw/arm/pxa2xx.c
@@ -107,7 +107,7 @@ static uint64_t pxa2xx_pm_read(void *opaque, hwaddr addr,
         return s->pm_regs[addr >> 2];
     default:
     fail:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -139,7 +139,7 @@ static void pxa2xx_pm_write(void *opaque, hwaddr addr,
             break;
         }
 
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
 }
@@ -180,7 +180,7 @@ static uint64_t pxa2xx_cm_read(void *opaque, hwaddr addr,
         return s->cm_regs[CCCR >> 2] | (3 << 28);
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -205,7 +205,7 @@ static void pxa2xx_cm_write(void *opaque, hwaddr addr,
         break;
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
 }
@@ -410,7 +410,7 @@ static uint64_t pxa2xx_mm_read(void *opaque, hwaddr addr,
             return s->mm_regs[addr >> 2];
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -429,7 +429,7 @@ static void pxa2xx_mm_write(void *opaque, hwaddr addr,
         }
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
 }
@@ -619,7 +619,7 @@ static uint64_t pxa2xx_ssp_read(void *opaque, hwaddr addr,
         if (!s->enable)
             return 0xffffffff;
         if (s->rx_level < 1) {
-            printf("%s: SSP Rx Underrun\n", __FUNCTION__);
+            printf("%s: SSP Rx Underrun\n", __func__);
             return 0xffffffff;
         }
         s->rx_level --;
@@ -636,7 +636,7 @@ static uint64_t pxa2xx_ssp_read(void *opaque, hwaddr addr,
     case SSACD:
         return s->ssacd;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -653,9 +653,9 @@ static void pxa2xx_ssp_write(void *opaque, hwaddr addr,
         s->sscr[0] = value & 0xc7ffffff;
         s->enable = value & SSCR0_SSE;
         if (value & SSCR0_MOD)
-            printf("%s: Attempt to use network mode\n", __FUNCTION__);
+            printf("%s: Attempt to use network mode\n", __func__);
         if (s->enable && SSCR0_DSS(value) < 4)
-            printf("%s: Wrong data size: %i bits\n", __FUNCTION__,
+            printf("%s: Wrong data size: %i bits\n", __func__,
                             SSCR0_DSS(value));
         if (!(value & SSCR0_SSE)) {
             s->sssr = 0;
@@ -668,7 +668,7 @@ static void pxa2xx_ssp_write(void *opaque, hwaddr addr,
     case SSCR1:
         s->sscr[1] = value;
         if (value & (SSCR1_LBM | SSCR1_EFWR))
-            printf("%s: Attempt to use SSP test mode\n", __FUNCTION__);
+            printf("%s: Attempt to use SSP test mode\n", __func__);
         pxa2xx_ssp_fifo_update(s);
         break;
 
@@ -728,7 +728,7 @@ static void pxa2xx_ssp_write(void *opaque, hwaddr addr,
         break;
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
 }
@@ -990,7 +990,7 @@ static uint64_t pxa2xx_rtc_read(void *opaque, hwaddr addr,
         else
             return s->last_swcr;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -1096,7 +1096,7 @@ static void pxa2xx_rtc_write(void *opaque, hwaddr addr,
         break;
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
     }
 }
 
@@ -1342,7 +1342,7 @@ static uint64_t pxa2xx_i2c_read(void *opaque, hwaddr addr,
             s->ibmr = 0;
         return s->ibmr;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -1415,7 +1415,7 @@ static void pxa2xx_i2c_write(void *opaque, hwaddr addr,
         break;
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
     }
 }
 
@@ -1616,7 +1616,7 @@ static uint64_t pxa2xx_i2s_read(void *opaque, hwaddr addr,
         }
         return 0;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -1639,14 +1639,14 @@ static void pxa2xx_i2s_write(void *opaque, hwaddr addr,
             s->status &= ~(1 << 7);			/* I2SOFF */
         }
         if (value & (1 << 4))				/* EFWR */
-            printf("%s: Attempt to use special function\n", __FUNCTION__);
+            printf("%s: Attempt to use special function\n", __func__);
         s->enable = (value & 9) == 1;			/* ENB && !RST*/
         pxa2xx_i2s_update(s);
         break;
     case SACR1:
         s->control[1] = value & 0x0039;
         if (value & (1 << 5))				/* ENLBF */
-            printf("%s: Attempt to use loopback function\n", __FUNCTION__);
+            printf("%s: Attempt to use loopback function\n", __func__);
         if (value & (1 << 4))				/* DPRL */
             s->fifo_len = 0;
         pxa2xx_i2s_update(s);
@@ -1673,7 +1673,7 @@ static void pxa2xx_i2s_write(void *opaque, hwaddr addr,
         }
         break;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
     }
 }
 
@@ -1849,7 +1849,7 @@ static uint64_t pxa2xx_fir_read(void *opaque, hwaddr addr,
             pxa2xx_fir_update(s);
             return ret;
         }
-        printf("%s: Rx FIFO underrun.\n", __FUNCTION__);
+        printf("%s: Rx FIFO underrun.\n", __func__);
         break;
     case ICSR0:
         return s->status[0];
@@ -1858,7 +1858,7 @@ static uint64_t pxa2xx_fir_read(void *opaque, hwaddr addr,
     case ICFOR:
         return s->rx_len;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -1910,7 +1910,7 @@ static void pxa2xx_fir_write(void *opaque, hwaddr addr,
     case ICFOR:
         break;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
     }
 }
 
diff --git a/hw/arm/pxa2xx_gpio.c b/hw/arm/pxa2xx_gpio.c
index 521dbad039..e15070188e 100644
--- a/hw/arm/pxa2xx_gpio.c
+++ b/hw/arm/pxa2xx_gpio.c
@@ -107,7 +107,7 @@ static void pxa2xx_gpio_set(void *opaque, int line, int level)
     uint32_t mask;
 
     if (line >= s->lines) {
-        printf("%s: No GPIO pin %i\n", __FUNCTION__, line);
+        printf("%s: No GPIO pin %i\n", __func__, line);
         return;
     }
 
@@ -195,7 +195,7 @@ static uint64_t pxa2xx_gpio_read(void *opaque, hwaddr offset,
         return s->status[bank];
 
     default:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 
     return 0;
@@ -248,7 +248,7 @@ static void pxa2xx_gpio_write(void *opaque, hwaddr offset,
         break;
 
     default:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 }
 
diff --git a/hw/arm/pxa2xx_pic.c b/hw/arm/pxa2xx_pic.c
index b516ced8c0..61275fa040 100644
--- a/hw/arm/pxa2xx_pic.c
+++ b/hw/arm/pxa2xx_pic.c
@@ -165,7 +165,7 @@ static uint64_t pxa2xx_pic_mem_read(void *opaque, hwaddr offset,
     case ICHP:	/* Highest Priority register */
         return pxa2xx_pic_highest(s);
     default:
-        printf("%s: Bad register offset " REG_FMT "\n", __FUNCTION__, offset);
+        printf("%s: Bad register offset " REG_FMT "\n", __func__, offset);
         return 0;
     }
 }
@@ -198,7 +198,7 @@ static void pxa2xx_pic_mem_write(void *opaque, hwaddr offset,
         s->priority[32 + ((offset - IPR32) >> 2)] = value & 0x8000003f;
         break;
     default:
-        printf("%s: Bad register offset " REG_FMT "\n", __FUNCTION__, offset);
+        printf("%s: Bad register offset " REG_FMT "\n", __func__, offset);
         return;
     }
     pxa2xx_pic_update(opaque);
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
index 044796350a..a55b1a369c 100644
--- a/hw/arm/tosa.c
+++ b/hw/arm/tosa.c
@@ -159,7 +159,7 @@ static int tosa_dac_send(I2CSlave *i2c, uint8_t data)
     s->buf[s->len] = data;
     if (s->len ++ > 2) {
 #ifdef VERBOSE
-        fprintf(stderr, "%s: message too long (%i bytes)\n", __FUNCTION__, s->len);
+        fprintf(stderr, "%s: message too long (%i bytes)\n", __func__, s->len);
 #endif
         return 1;
     }
@@ -181,14 +181,14 @@ static int tosa_dac_event(I2CSlave *i2c, enum i2c_event event)
     case I2C_START_SEND:
         break;
     case I2C_START_RECV:
-        printf("%s: recv not supported!!!\n", __FUNCTION__);
+        printf("%s: recv not supported!!!\n", __func__);
         break;
     case I2C_FINISH:
 #ifdef VERBOSE
         if (s->len < 2)
-            printf("%s: message too short (%i bytes)\n", __FUNCTION__, s->len);
+            printf("%s: message too short (%i bytes)\n", __func__, s->len);
         if (s->len > 2)
-            printf("%s: message too long\n", __FUNCTION__);
+            printf("%s: message too long\n", __func__);
 #endif
         break;
     default:
@@ -200,7 +200,7 @@ static int tosa_dac_event(I2CSlave *i2c, enum i2c_event event)
 
 static int tosa_dac_recv(I2CSlave *s)
 {
-    printf("%s: recv not supported!!!\n", __FUNCTION__);
+    printf("%s: recv not supported!!!\n", __func__);
     return -1;
 }
 
diff --git a/hw/audio/hda-codec.c b/hw/audio/hda-codec.c
index 5402cd196c..e8aa7842e6 100644
--- a/hw/audio/hda-codec.c
+++ b/hw/audio/hda-codec.c
@@ -316,7 +316,7 @@ static void hda_audio_command(HDACodecDevice *hda, uint32_t nid, uint32_t data)
         goto fail;
     }
     dprint(a, 2, "%s: nid %d (%s), verb 0x%x, payload 0x%x\n",
-           __FUNCTION__, nid, node->name, verb, payload);
+           __func__, nid, node->name, verb, payload);
 
     switch (verb) {
     /* all nodes */
@@ -449,7 +449,7 @@ static void hda_audio_command(HDACodecDevice *hda, uint32_t nid, uint32_t data)
 
 fail:
     dprint(a, 1, "%s: not handled: nid %d (%s), verb 0x%x, payload 0x%x\n",
-           __FUNCTION__, nid, node ? node->name : "?", verb, payload);
+           __func__, nid, node ? node->name : "?", verb, payload);
     hda_codec_response(hda, true, 0);
 }
 
@@ -484,7 +484,7 @@ static int hda_audio_init(HDACodecDevice *hda, const struct desc_codec *desc)
 
     a->desc = desc;
     a->name = object_get_typename(OBJECT(a));
-    dprint(a, 1, "%s: cad %d\n", __FUNCTION__, a->hda.cad);
+    dprint(a, 1, "%s: cad %d\n", __func__, a->hda.cad);
 
     AUD_register_card("hda", &a->card);
     for (i = 0; i < a->desc->nnodes; i++) {
@@ -526,7 +526,7 @@ static void hda_audio_exit(HDACodecDevice *hda)
     HDAAudioStream *st;
     int i;
 
-    dprint(a, 1, "%s\n", __FUNCTION__);
+    dprint(a, 1, "%s\n", __func__);
     for (i = 0; i < ARRAY_SIZE(a->st); i++) {
         st = a->st + i;
         if (st->node == NULL) {
@@ -547,7 +547,7 @@ static int hda_audio_post_load(void *opaque, int version)
     HDAAudioStream *st;
     int i;
 
-    dprint(a, 1, "%s\n", __FUNCTION__);
+    dprint(a, 1, "%s\n", __func__);
     if (version == 1) {
         /* assume running_compat[] is for output streams */
         for (i = 0; i < ARRAY_SIZE(a->running_compat); i++)
diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
index 18a50a8f83..ed51177b15 100644
--- a/hw/audio/intel-hda.c
+++ b/hw/audio/intel-hda.c
@@ -265,7 +265,7 @@ static void intel_hda_update_irq(IntelHDAState *d)
     } else {
         level = 0;
     }
-    dprint(d, 2, "%s: level %d [%s]\n", __FUNCTION__,
+    dprint(d, 2, "%s: level %d [%s]\n", __func__,
            level, msi ? "msi" : "intx");
     if (msi) {
         if (level) {
@@ -285,7 +285,7 @@ static int intel_hda_send_command(IntelHDAState *d, uint32_t verb)
     cad = (verb >> 28) & 0x0f;
     if (verb & (1 << 27)) {
         /* indirect node addressing, not specified in HDA 1.0 */
-        dprint(d, 1, "%s: indirect node addressing (guest bug?)\n", __FUNCTION__);
+        dprint(d, 1, "%s: indirect node addressing (guest bug?)\n", __func__);
         return -1;
     }
     nid = (verb >> 20) & 0x7f;
@@ -293,7 +293,7 @@ static int intel_hda_send_command(IntelHDAState *d, uint32_t verb)
 
     codec = hda_codec_find(&d->codecs, cad);
     if (codec == NULL) {
-        dprint(d, 1, "%s: addressed non-existing codec\n", __FUNCTION__);
+        dprint(d, 1, "%s: addressed non-existing codec\n", __func__);
         return -1;
     }
     cdc = HDA_CODEC_DEVICE_GET_CLASS(codec);
@@ -307,22 +307,22 @@ static void intel_hda_corb_run(IntelHDAState *d)
     uint32_t rp, verb;
 
     if (d->ics & ICH6_IRS_BUSY) {
-        dprint(d, 2, "%s: [icw] verb 0x%08x\n", __FUNCTION__, d->icw);
+        dprint(d, 2, "%s: [icw] verb 0x%08x\n", __func__, d->icw);
         intel_hda_send_command(d, d->icw);
         return;
     }
 
     for (;;) {
         if (!(d->corb_ctl & ICH6_CORBCTL_RUN)) {
-            dprint(d, 2, "%s: !run\n", __FUNCTION__);
+            dprint(d, 2, "%s: !run\n", __func__);
             return;
         }
         if ((d->corb_rp & 0xff) == d->corb_wp) {
-            dprint(d, 2, "%s: corb ring empty\n", __FUNCTION__);
+            dprint(d, 2, "%s: corb ring empty\n", __func__);
             return;
         }
         if (d->rirb_count == d->rirb_cnt) {
-            dprint(d, 2, "%s: rirb count reached\n", __FUNCTION__);
+            dprint(d, 2, "%s: rirb count reached\n", __func__);
             return;
         }
 
@@ -331,7 +331,7 @@ static void intel_hda_corb_run(IntelHDAState *d)
         verb = ldl_le_pci_dma(&d->pci, addr + 4*rp);
         d->corb_rp = rp;
 
-        dprint(d, 2, "%s: [rp 0x%x] verb 0x%08x\n", __FUNCTION__, rp, verb);
+        dprint(d, 2, "%s: [rp 0x%x] verb 0x%08x\n", __func__, rp, verb);
         intel_hda_send_command(d, verb);
     }
 }
@@ -345,7 +345,7 @@ static void intel_hda_response(HDACodecDevice *dev, bool solicited, uint32_t res
 
     if (d->ics & ICH6_IRS_BUSY) {
         dprint(d, 2, "%s: [irr] response 0x%x, cad 0x%x\n",
-               __FUNCTION__, response, dev->cad);
+               __func__, response, dev->cad);
         d->irr = response;
         d->ics &= ~(ICH6_IRS_BUSY | 0xf0);
         d->ics |= (ICH6_IRS_VALID | (dev->cad << 4));
@@ -353,7 +353,7 @@ static void intel_hda_response(HDACodecDevice *dev, bool solicited, uint32_t res
     }
 
     if (!(d->rirb_ctl & ICH6_RBCTL_DMA_EN)) {
-        dprint(d, 1, "%s: rirb dma disabled, drop codec response\n", __FUNCTION__);
+        dprint(d, 1, "%s: rirb dma disabled, drop codec response\n", __func__);
         return;
     }
 
@@ -365,17 +365,17 @@ static void intel_hda_response(HDACodecDevice *dev, bool solicited, uint32_t res
     d->rirb_wp = wp;
 
     dprint(d, 2, "%s: [wp 0x%x] response 0x%x, extra 0x%x\n",
-           __FUNCTION__, wp, response, ex);
+           __func__, wp, response, ex);
 
     d->rirb_count++;
     if (d->rirb_count == d->rirb_cnt) {
-        dprint(d, 2, "%s: rirb count reached (%d)\n", __FUNCTION__, d->rirb_count);
+        dprint(d, 2, "%s: rirb count reached (%d)\n", __func__, d->rirb_count);
         if (d->rirb_ctl & ICH6_RBCTL_IRQ_EN) {
             d->rirb_sts |= ICH6_RBSTS_IRQ;
             intel_hda_update_irq(d);
         }
     } else if ((d->corb_rp & 0xff) == d->corb_wp) {
-        dprint(d, 2, "%s: corb ring empty (%d/%d)\n", __FUNCTION__,
+        dprint(d, 2, "%s: corb ring empty (%d/%d)\n", __func__,
                d->rirb_count, d->rirb_cnt);
         if (d->rirb_ctl & ICH6_RBCTL_IRQ_EN) {
             d->rirb_sts |= ICH6_RBSTS_IRQ;
@@ -1144,7 +1144,7 @@ static int intel_hda_post_load(void *opaque, int version)
     IntelHDAState* d = opaque;
     int i;
 
-    dprint(d, 1, "%s\n", __FUNCTION__);
+    dprint(d, 1, "%s\n", __func__);
     for (i = 0; i < ARRAY_SIZE(d->st); i++) {
         if (d->st[i].ctl & 0x02) {
             intel_hda_parse_bdl(d, &d->st[i]);
diff --git a/hw/audio/wm8750.c b/hw/audio/wm8750.c
index d2bf2e1da1..de04d8ae8f 100644
--- a/hw/audio/wm8750.c
+++ b/hw/audio/wm8750.c
@@ -315,7 +315,7 @@ static int wm8750_event(I2CSlave *i2c, enum i2c_event event)
 #ifdef VERBOSE
         if (s->i2c_len < 2)
             printf("%s: message too short (%i bytes)\n",
-                            __FUNCTION__, s->i2c_len);
+                            __func__, s->i2c_len);
 #endif
         break;
     default:
@@ -555,7 +555,7 @@ static int wm8750_tx(I2CSlave *i2c, uint8_t data)
 
 #ifdef VERBOSE
     default:
-        printf("%s: unknown register %02x\n", __FUNCTION__, cmd);
+        printf("%s: unknown register %02x\n", __func__, cmd);
 #endif
     }
 
diff --git a/hw/block/nand.c b/hw/block/nand.c
index 0d33ac281f..5bc1829889 100644
--- a/hw/block/nand.c
+++ b/hw/block/nand.c
@@ -321,7 +321,7 @@ static void nand_command(NANDFlashState *s)
         break;
 
     default:
-        printf("%s: Unknown NAND command 0x%02x\n", __FUNCTION__, s->cmd);
+        printf("%s: Unknown NAND command 0x%02x\n", __func__, s->cmd);
     }
 }
 
@@ -638,7 +638,7 @@ DeviceState *nand_init(BlockBackend *blk, int manf_id, int chip_id)
     DeviceState *dev;
 
     if (nand_flash_ids[chip_id].size == 0) {
-        hw_error("%s: Unsupported NAND chip ID.\n", __FUNCTION__);
+        hw_error("%s: Unsupported NAND chip ID.\n", __func__);
     }
     dev = DEVICE(object_new(TYPE_NAND));
     qdev_prop_set_uint8(dev, "manufacturer_id", manf_id);
diff --git a/hw/block/onenand.c b/hw/block/onenand.c
index b7423607d9..224daf7ccf 100644
--- a/hw/block/onenand.c
+++ b/hw/block/onenand.c
@@ -661,12 +661,12 @@ static uint64_t onenand_read(void *opaque, hwaddr addr,
     case 0xff02:	/* ECC Result of spare area data */
     case 0xff03:	/* ECC Result of main area data */
     case 0xff04:	/* ECC Result of spare area data */
-        hw_error("%s: imeplement ECC\n", __FUNCTION__);
+        hw_error("%s: imeplement ECC\n", __func__);
         return 0x0000;
     }
 
     fprintf(stderr, "%s: unknown OneNAND register %x\n",
-                    __FUNCTION__, offset);
+                    __func__, offset);
     return 0;
 }
 
@@ -711,7 +711,7 @@ static void onenand_write(void *opaque, hwaddr addr,
 
         default:
             fprintf(stderr, "%s: unknown OneNAND boot command %"PRIx64"\n",
-                            __FUNCTION__, value);
+                            __func__, value);
         }
         break;
 
@@ -762,7 +762,7 @@ static void onenand_write(void *opaque, hwaddr addr,
 
     default:
         fprintf(stderr, "%s: unknown OneNAND register %x\n",
-                        __FUNCTION__, offset);
+                        __func__, offset);
     }
 }
 
diff --git a/hw/bt/core.c b/hw/bt/core.c
index 615f0af073..c1806b71a3 100644
--- a/hw/bt/core.c
+++ b/hw/bt/core.c
@@ -32,23 +32,23 @@ static void bt_dummy_lmp_connection_complete(struct bt_link_s *link)
 {
     if (link->slave->reject_reason)
         fprintf(stderr, "%s: stray LMP_not_accepted received, fixme\n",
-                        __FUNCTION__);
+                        __func__);
     else
         fprintf(stderr, "%s: stray LMP_accepted received, fixme\n",
-                        __FUNCTION__);
+                        __func__);
     exit(-1);
 }
 
 static void bt_dummy_lmp_disconnect_master(struct bt_link_s *link)
 {
-    fprintf(stderr, "%s: stray LMP_detach received, fixme\n", __FUNCTION__);
+    fprintf(stderr, "%s: stray LMP_detach received, fixme\n", __func__);
     exit(-1);
 }
 
 static void bt_dummy_lmp_acl_resp(struct bt_link_s *link,
                 const uint8_t *data, int start, int len)
 {
-    fprintf(stderr, "%s: stray ACL response PDU, fixme\n", __FUNCTION__);
+    fprintf(stderr, "%s: stray ACL response PDU, fixme\n", __func__);
     exit(-1);
 }
 
@@ -113,7 +113,7 @@ void bt_device_done(struct bt_device_s *dev)
     while (*p && *p != dev)
         p = &(*p)->next;
     if (*p != dev) {
-        fprintf(stderr, "%s: bad bt device \"%s\"\n", __FUNCTION__,
+        fprintf(stderr, "%s: bad bt device \"%s\"\n", __func__,
                         dev->lmp_name ?: "(null)");
         exit(-1);
     }
diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c
index d13192b9b5..ac067b81f6 100644
--- a/hw/bt/hci-csr.c
+++ b/hw/bt/hci-csr.c
@@ -111,14 +111,14 @@ static uint8_t *csrhci_out_packet(struct csrhci_s *s, int len)
 
     if (off < FIFO_LEN) {
         if (off + len > FIFO_LEN && (s->out_size = off + len) > FIFO_LEN * 2) {
-            fprintf(stderr, "%s: can't alloc %i bytes\n", __FUNCTION__, len);
+            fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
             exit(-1);
         }
         return s->outfifo + off;
     }
 
     if (s->out_len > s->out_size) {
-        fprintf(stderr, "%s: can't alloc %i bytes\n", __FUNCTION__, len);
+        fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
         exit(-1);
     }
 
@@ -169,7 +169,7 @@ static void csrhci_in_packet_vendor(struct csrhci_s *s, int ocf,
 
             s->hci->bdaddr_set(s->hci, s->bd_addr.b);
             fprintf(stderr, "%s: bd_address loaded from firmware: "
-                            "%02x:%02x:%02x:%02x:%02x:%02x\n", __FUNCTION__,
+                            "%02x:%02x:%02x:%02x:%02x:%02x\n", __func__,
                             s->bd_addr.b[0], s->bd_addr.b[1], s->bd_addr.b[2],
                             s->bd_addr.b[3], s->bd_addr.b[4], s->bd_addr.b[5]);
         }
@@ -181,7 +181,7 @@ static void csrhci_in_packet_vendor(struct csrhci_s *s, int ocf,
         break;
 
     default:
-        fprintf(stderr, "%s: got a bad CMD packet\n", __FUNCTION__);
+        fprintf(stderr, "%s: got a bad CMD packet\n", __func__);
         return;
     }
 
@@ -226,7 +226,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
     case H4_NEG_PKT:
         if (s->in_hdr != sizeof(csrhci_neg_packet) ||
                         memcmp(pkt - 1, csrhci_neg_packet, s->in_hdr)) {
-            fprintf(stderr, "%s: got a bad NEG packet\n", __FUNCTION__);
+            fprintf(stderr, "%s: got a bad NEG packet\n", __func__);
             return;
         }
         pkt += 2;
@@ -241,7 +241,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
 
     case H4_ALIVE_PKT:
         if (s->in_hdr != 4 || pkt[1] != 0x55 || pkt[2] != 0x00) {
-            fprintf(stderr, "%s: got a bad ALIVE packet\n", __FUNCTION__);
+            fprintf(stderr, "%s: got a bad ALIVE packet\n", __func__);
             return;
         }
 
@@ -254,7 +254,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
     default:
     bad_pkt:
         /* TODO: error out */
-        fprintf(stderr, "%s: got a bad packet\n", __FUNCTION__);
+        fprintf(stderr, "%s: got a bad packet\n", __func__);
         break;
     }
 
diff --git a/hw/bt/hci.c b/hw/bt/hci.c
index 476ebec0ab..df05f07887 100644
--- a/hw/bt/hci.c
+++ b/hw/bt/hci.c
@@ -458,7 +458,7 @@ static inline uint8_t *bt_hci_event_start(struct bt_hci_s *hci,
 
     if (len > 255) {
         fprintf(stderr, "%s: HCI event params too long (%ib)\n",
-                        __FUNCTION__, len);
+                        __func__, len);
         exit(-1);
     }
 
@@ -589,7 +589,7 @@ static void bt_hci_inquiry_result(struct bt_hci_s *hci,
         bt_hci_inquiry_result_with_rssi(hci, slave);
         return;
     default:
-        fprintf(stderr, "%s: bad inquiry mode %02x\n", __FUNCTION__,
+        fprintf(stderr, "%s: bad inquiry mode %02x\n", __func__,
                         hci->lm.inquiry_mode);
         exit(-1);
     }
@@ -1528,7 +1528,7 @@ static void bt_submit_hci(struct HCIInfo *info,
                             "the Inquiry command has been issued, a Command "
                             "Status event has been received for the Inquiry "
                             "command, and before the Inquiry Complete event "
-                            "occurs", __FUNCTION__);
+                            "occurs", __func__);
             bt_hci_event_complete_status(hci, HCI_COMMAND_DISALLOWED);
             break;
         }
@@ -1567,7 +1567,7 @@ static void bt_submit_hci(struct HCIInfo *info,
                             "the Inquiry command has been issued, a Command "
                             "Status event has been received for the Inquiry "
                             "command, and before the Inquiry Complete event "
-                            "occurs", __FUNCTION__);
+                            "occurs", __func__);
             bt_hci_event_complete_status(hci, HCI_COMMAND_DISALLOWED);
             break;
         }
@@ -1972,7 +1972,7 @@ static void bt_submit_hci(struct HCIInfo *info,
 
     short_hci:
         fprintf(stderr, "%s: HCI packet too short (%iB)\n",
-                        __FUNCTION__, length);
+                        __func__, length);
         bt_hci_event_status(hci, HCI_INVALID_PARAMETERS);
         break;
     }
@@ -1992,7 +1992,7 @@ static inline void bt_hci_lmp_acl_data(struct bt_hci_s *hci, uint16_t handle,
 
     if (len + HCI_ACL_HDR_SIZE > sizeof(hci->acl_buf)) {
         fprintf(stderr, "%s: can't take ACL packets %i bytes long\n",
-                        __FUNCTION__, len);
+                        __func__, len);
         return;
     }
     memcpy(hci->acl_buf + HCI_ACL_HDR_SIZE, data, len);
@@ -2030,7 +2030,7 @@ static void bt_submit_acl(struct HCIInfo *info,
 
     if (length < HCI_ACL_HDR_SIZE) {
         fprintf(stderr, "%s: ACL packet too short (%iB)\n",
-                        __FUNCTION__, length);
+                        __func__, length);
         return;
     }
 
@@ -2042,7 +2042,7 @@ static void bt_submit_acl(struct HCIInfo *info,
 
     if (bt_hci_handle_bad(hci, handle)) {
         fprintf(stderr, "%s: invalid ACL handle %03x\n",
-                        __FUNCTION__, handle);
+                        __func__, handle);
         /* TODO: signal an error */
         return;
     }
@@ -2050,7 +2050,7 @@ static void bt_submit_acl(struct HCIInfo *info,
 
     if (datalen > length) {
         fprintf(stderr, "%s: ACL packet too short (%iB < %iB)\n",
-                        __FUNCTION__, length, datalen);
+                        __func__, length, datalen);
         return;
     }
 
@@ -2061,7 +2061,7 @@ static void bt_submit_acl(struct HCIInfo *info,
             hci->asb_handle = handle;
         else if (handle != hci->asb_handle) {
             fprintf(stderr, "%s: Bad handle %03x in Active Slave Broadcast\n",
-                            __FUNCTION__, handle);
+                            __func__, handle);
             /* TODO: signal an error */
             return;
         }
@@ -2074,7 +2074,7 @@ static void bt_submit_acl(struct HCIInfo *info,
             hci->psb_handle = handle;
         else if (handle != hci->psb_handle) {
             fprintf(stderr, "%s: Bad handle %03x in Parked Slave Broadcast\n",
-                            __FUNCTION__, handle);
+                            __func__, handle);
             /* TODO: signal an error */
             return;
         }
@@ -2106,13 +2106,13 @@ static void bt_submit_sco(struct HCIInfo *info,
 
     if (bt_hci_handle_bad(hci, handle)) {
         fprintf(stderr, "%s: invalid SCO handle %03x\n",
-                        __FUNCTION__, handle);
+                        __func__, handle);
         return;
     }
 
     if (datalen > length) {
         fprintf(stderr, "%s: SCO packet too short (%iB < %iB)\n",
-                        __FUNCTION__, length, datalen);
+                        __func__, length, datalen);
         return;
     }
 
diff --git a/hw/bt/hid.c b/hw/bt/hid.c
index f6affbbb44..09d17322e4 100644
--- a/hw/bt/hid.c
+++ b/hw/bt/hid.c
@@ -420,7 +420,7 @@ static void bt_hid_interrupt_sdu(void *opaque, const uint8_t *data, int len)
     return;
 bad:
     fprintf(stderr, "%s: bad transaction on Interrupt channel.\n",
-                    __FUNCTION__);
+                    __func__);
 }
 
 /* "Virtual cable" plug/unplug event.  */
diff --git a/hw/bt/l2cap.c b/hw/bt/l2cap.c
index e342045140..3e53dd082d 100644
--- a/hw/bt/l2cap.c
+++ b/hw/bt/l2cap.c
@@ -468,7 +468,7 @@ static void l2cap_channel_close(struct l2cap_instance_s *l2cap,
     if (likely(ch)) {
         if (ch->remote_cid != source_cid) {
             fprintf(stderr, "%s: Ignoring a Disconnection Request with the "
-                            "invalid SCID %04x.\n", __FUNCTION__, source_cid);
+                            "invalid SCID %04x.\n", __func__, source_cid);
             return;
         }
 
@@ -791,7 +791,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
     /* TODO: do the IDs really have to be in sequence?  */
     if (!id || (id != l2cap->last_id && id != l2cap->next_id)) {
         fprintf(stderr, "%s: out of sequence command packet ignored.\n",
-                        __FUNCTION__);
+                        __func__);
         return;
     }
 #else
@@ -814,7 +814,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
 
         /* We never issue commands other than Command Reject currently.  */
         fprintf(stderr, "%s: stray Command Reject (%02x, %04x) "
-                        "packet, ignoring.\n", __FUNCTION__, id,
+                        "packet, ignoring.\n", __func__, id,
                         le16_to_cpu(((l2cap_cmd_rej *) params)->reason));
         break;
 
@@ -837,7 +837,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
 
         /* We never issue Connection Requests currently. TODO  */
         fprintf(stderr, "%s: unexpected Connection Response (%02x) "
-                        "packet, ignoring.\n", __FUNCTION__, id);
+                        "packet, ignoring.\n", __func__, id);
         break;
 
     case L2CAP_CONF_REQ:
@@ -866,7 +866,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
                         ((l2cap_conf_rsp *) params)->data,
                         len - L2CAP_CONF_RSP_SIZE(0)))
             fprintf(stderr, "%s: unexpected Configure Response (%02x) "
-                            "packet, ignoring.\n", __FUNCTION__, id);
+                            "packet, ignoring.\n", __func__, id);
         break;
 
     case L2CAP_DISCONN_REQ:
@@ -888,7 +888,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
 
         /* We never issue Disconnection Requests currently. TODO  */
         fprintf(stderr, "%s: unexpected Disconnection Response (%02x) "
-                        "packet, ignoring.\n", __FUNCTION__, id);
+                        "packet, ignoring.\n", __func__, id);
         break;
 
     case L2CAP_ECHO_REQ:
@@ -898,7 +898,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
     case L2CAP_ECHO_RSP:
         /* We never issue Echo Requests currently. TODO  */
         fprintf(stderr, "%s: unexpected Echo Response (%02x) "
-                        "packet, ignoring.\n", __FUNCTION__, id);
+                        "packet, ignoring.\n", __func__, id);
         break;
 
     case L2CAP_INFO_REQ:
@@ -918,7 +918,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
 
         /* We never issue Information Requests currently. TODO  */
         fprintf(stderr, "%s: unexpected Information Response (%02x) "
-                        "packet, ignoring.\n", __FUNCTION__, id);
+                        "packet, ignoring.\n", __func__, id);
         break;
 
     default:
@@ -1067,7 +1067,7 @@ static void l2cap_frame_in(struct l2cap_instance_s *l2cap,
 
     if (unlikely(cid >= L2CAP_CID_MAX || !l2cap->cid[cid])) {
         fprintf(stderr, "%s: frame addressed to a non-existent L2CAP "
-                        "channel %04x received.\n", __FUNCTION__, cid);
+                        "channel %04x received.\n", __func__, cid);
         return;
     }
 
@@ -1129,7 +1129,7 @@ static uint8_t *l2cap_bframe_out(struct bt_l2cap_conn_params_s *parm, int len)
 
     if (len > chan->params.remote_mtu) {
         fprintf(stderr, "%s: B-Frame for CID %04x longer than %i octets.\n",
-                        __FUNCTION__,
+                        __func__,
                         chan->remote_cid, chan->params.remote_mtu);
         exit(-1);
     }
@@ -1354,7 +1354,7 @@ void bt_l2cap_psm_register(struct bt_l2cap_device_s *dev, int psm, int min_mtu,
 
     if (new_psm) {
         fprintf(stderr, "%s: PSM %04x already registered for device `%s'.\n",
-                        __FUNCTION__, psm, dev->device.lmp_name);
+                        __func__, psm, dev->device.lmp_name);
         exit(-1);
     }
 
diff --git a/hw/bt/sdp.c b/hw/bt/sdp.c
index 3cb60b9495..7c0d38b504 100644
--- a/hw/bt/sdp.c
+++ b/hw/bt/sdp.c
@@ -506,7 +506,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)
     int rsp_len = 0;
 
     if (len < 5) {
-        fprintf(stderr, "%s: short SDP PDU (%iB).\n", __FUNCTION__, len);
+        fprintf(stderr, "%s: short SDP PDU (%iB).\n", __func__, len);
         return;
     }
 
@@ -518,7 +518,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)
 
     if (len != plen) {
         fprintf(stderr, "%s: wrong SDP PDU length (%iB != %iB).\n",
-                        __FUNCTION__, plen, len);
+                        __func__, plen, len);
         err = SDP_INVALID_PDU_SIZE;
         goto respond;
     }
@@ -545,7 +545,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)
     case SDP_SVC_SEARCH_ATTR_RSP:
     default:
         fprintf(stderr, "%s: unexpected SDP PDU ID %02x.\n",
-                        __FUNCTION__, pdu_id);
+                        __func__, pdu_id);
         err = SDP_INVALID_SYNTAX;
         break;
     }
diff --git a/hw/display/blizzard.c b/hw/display/blizzard.c
index cbf07d14d9..291abe6fca 100644
--- a/hw/display/blizzard.c
+++ b/hw/display/blizzard.c
@@ -474,7 +474,7 @@ static uint16_t blizzard_reg_read(void *opaque, uint8_t reg)
         return s->gpio_pdown;
 
     default:
-        fprintf(stderr, "%s: unknown register %02x\n", __FUNCTION__, reg);
+        fprintf(stderr, "%s: unknown register %02x\n", __func__, reg);
         return 0;
     }
 }
@@ -502,7 +502,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->pll_mode = value & 0x77;
         if ((value & 3) == 0 || (value & 3) == 3)
             fprintf(stderr, "%s: wrong PLL Control bits (%i)\n",
-                    __FUNCTION__, value & 3);
+                    __func__, value & 3);
         break;
 
     case 0x0e:	/* Clock-Source Select */
@@ -541,7 +541,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
     case 0x28:	/* LCD Panel Configuration */
         s->lcd_config = value & 0xff;
         if (value & (1 << 7))
-            fprintf(stderr, "%s: data swap not supported!\n", __FUNCTION__);
+            fprintf(stderr, "%s: data swap not supported!\n", __func__);
         break;
 
     case 0x2a:	/* LCD Horizontal Display Width */
@@ -586,7 +586,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->hssi_config[1] = value;
         if (((value >> 4) & 3) == 3)
             fprintf(stderr, "%s: Illegal active-data-links value\n",
-                            __FUNCTION__);
+                            __func__);
         break;
     case 0x42:	/* High-speed Serial Interface Tx Mode */
         s->hssi_config[2] = value & 0xbd;
@@ -641,7 +641,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->enable = value & 1;
         s->blank = (value >> 1) & 1;
         if (value & (1 << 4))
-            fprintf(stderr, "%s: Macrovision enable attempt!\n", __FUNCTION__);
+            fprintf(stderr, "%s: Macrovision enable attempt!\n", __func__);
         break;
 
     case 0x6a:	/* Special Effects */
@@ -718,7 +718,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->bpp = blizzard_iformat_bpp[s->iformat];
         if (!s->bpp)
             fprintf(stderr, "%s: Illegal or unsupported input format %x\n",
-                            __FUNCTION__, s->iformat);
+                            __func__, s->iformat);
         break;
     case 0x8e:	/* Data Source Select */
         s->source = value & 7;
@@ -730,7 +730,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
                         !((s->ix[1] - s->ix[0]) & (s->iy[1] - s->iy[0]) &
                           (s->ox[1] - s->ox[0]) & (s->oy[1] - s->oy[0]) & 1))
             fprintf(stderr, "%s: Illegal input/output window positions\n",
-                            __FUNCTION__);
+                            __func__);
 
         blizzard_transfer_setup(s);
         break;
@@ -784,7 +784,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->pm = value & 0x83;
         if (value & s->mode & 1)
             fprintf(stderr, "%s: The display must be disabled before entering "
-                            "Standby Mode\n", __FUNCTION__);
+                            "Standby Mode\n", __func__);
         break;
     case 0xe8:	/* Non-display Period Control / Status */
         s->status = value & 0x1b;
@@ -815,7 +815,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         break;
 
     default:
-        fprintf(stderr, "%s: unknown register %02x\n", __FUNCTION__, reg);
+        fprintf(stderr, "%s: unknown register %02x\n", __func__, reg);
         break;
     }
 }
diff --git a/hw/display/omap_dss.c b/hw/display/omap_dss.c
index 783e9e1318..601f178fdd 100644
--- a/hw/display/omap_dss.c
+++ b/hw/display/omap_dss.c
@@ -526,7 +526,7 @@ static void omap_disc_write(void *opaque, hwaddr addr,
         s->dispc.l[0].attr = value & 0x7ff;
         if (value & (3 << 9))
             fprintf(stderr, "%s: Big-endian pixel format not supported\n",
-                            __FUNCTION__);
+                            __func__);
         s->dispc.l[0].enable = value & 1;
         s->dispc.l[0].bpp = (value >> 1) & 0xf;
         s->dispc.invalidate = 1;
@@ -617,7 +617,7 @@ static void omap_rfbi_transfer_start(struct omap_dss_s *s)
     if (s->rfbi.control & (1 << 1)) {				/* BYPASS */
         /* TODO: in non-Bypass mode we probably need to just assert the
          * DRQ and wait for DMA to write the pixels.  */
-        fprintf(stderr, "%s: Bypass mode unimplemented\n", __FUNCTION__);
+        fprintf(stderr, "%s: Bypass mode unimplemented\n", __func__);
         return;
     }
 
@@ -1086,6 +1086,6 @@ struct omap_dss_s *omap_dss_init(struct omap_target_agent_s *ta,
 void omap_rfbi_attach(struct omap_dss_s *s, int cs, struct rfbi_chip_s *chip)
 {
     if (cs < 0 || cs > 1)
-        hw_error("%s: wrong CS %i\n", __FUNCTION__, cs);
+        hw_error("%s: wrong CS %i\n", __func__, cs);
     s->rfbi.chip[cs] = chip;
 }
diff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c
index 845521c5b2..b83f80753a 100644
--- a/hw/display/pxa2xx_lcd.c
+++ b/hw/display/pxa2xx_lcd.c
@@ -405,7 +405,7 @@ static uint64_t pxa2xx_lcdc_read(void *opaque, hwaddr offset,
 
     default:
     fail:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 
     return 0;
@@ -424,7 +424,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset,
             s->status[0] |= LCSR0_QD;
 
         if (!(s->control[0] & LCCR0_LCDT) && (value & LCCR0_LCDT))
-            printf("%s: internal frame buffer unsupported\n", __FUNCTION__);
+            printf("%s: internal frame buffer unsupported\n", __func__);
 
         if ((s->control[3] & LCCR3_API) &&
                 (value & LCCR0_ENB) && !(value & LCCR0_LCDT))
@@ -460,7 +460,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset,
 
     case OVL1C1:
         if (!(s->ovl1c[0] & OVLC1_EN) && (value & OVLC1_EN))
-            printf("%s: Overlay 1 not supported\n", __FUNCTION__);
+            printf("%s: Overlay 1 not supported\n", __func__);
 
         s->ovl1c[0] = value & 0x80ffffff;
         s->dma_ch[1].up = (value & OVLC1_EN) || (s->control[0] & LCCR0_SDS);
@@ -472,7 +472,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset,
 
     case OVL2C1:
         if (!(s->ovl2c[0] & OVLC1_EN) && (value & OVLC1_EN))
-            printf("%s: Overlay 2 not supported\n", __FUNCTION__);
+            printf("%s: Overlay 2 not supported\n", __func__);
 
         s->ovl2c[0] = value & 0x80ffffff;
         s->dma_ch[2].up = !!(value & OVLC1_EN);
@@ -486,7 +486,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset,
 
     case CCR:
         if (!(s->ccr & CCR_CEN) && (value & CCR_CEN))
-            printf("%s: Hardware cursor unimplemented\n", __FUNCTION__);
+            printf("%s: Hardware cursor unimplemented\n", __func__);
 
         s->ccr = value & 0x81ffffe7;
         s->dma_ch[5].up = !!(value & CCR_CEN);
@@ -560,7 +560,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset,
 
     default:
     fail:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 }
 
@@ -1050,7 +1050,7 @@ PXA2xxLCDState *pxa2xx_lcdc_init(MemoryRegion *sysmem,
         s->dest_width = 4;
         break;
     default:
-        fprintf(stderr, "%s: Bad color depth\n", __FUNCTION__);
+        fprintf(stderr, "%s: Bad color depth\n", __func__);
         exit(1);
     }
 
diff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c
index 90e0865618..e7ac4f8789 100644
--- a/hw/display/qxl-render.c
+++ b/hw/display/qxl-render.c
@@ -78,7 +78,7 @@ void qxl_render_resize(PCIQXLDevice *qxl)
         qxl->guest_primary.bits_pp = 32;
         break;
     default:
-        fprintf(stderr, "%s: unhandled format: %x\n", __FUNCTION__,
+        fprintf(stderr, "%s: unhandled format: %x\n", __func__,
                 qxl->guest_primary.surface.format);
         qxl->guest_primary.bytes_pp = 4;
         qxl->guest_primary.bits_pp = 32;
@@ -248,7 +248,7 @@ static QEMUCursor *qxl_cursor(PCIQXLDevice *qxl, QXLCursor *cursor,
         break;
     default:
         fprintf(stderr, "%s: not implemented: type %d\n",
-                __FUNCTION__, cursor->header.type);
+                __func__, cursor->header.type);
         goto fail;
     }
     return c;
@@ -275,7 +275,7 @@ int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext)
     }
 
     if (qxl->debug > 1 && cmd->type != QXL_CURSOR_MOVE) {
-        fprintf(stderr, "%s", __FUNCTION__);
+        fprintf(stderr, "%s", __func__);
         qxl_log_cmd_cursor(qxl, cmd, ext->group_id);
         fprintf(stderr, "\n");
     }
diff --git a/hw/display/qxl.h b/hw/display/qxl.h
index f6556adb73..7d1b60014a 100644
--- a/hw/display/qxl.h
+++ b/hw/display/qxl.h
@@ -133,7 +133,7 @@ typedef struct PCIQXLDevice {
 #define PCI_QXL(obj) OBJECT_CHECK(PCIQXLDevice, (obj), TYPE_PCI_QXL)
 
 #define PANIC_ON(x) if ((x)) {                         \
-    printf("%s: PANIC %s failed\n", __FUNCTION__, #x); \
+    printf("%s: PANIC %s failed\n", __func__, #x); \
     abort();                                           \
 }
 
diff --git a/hw/display/tc6393xb.c b/hw/display/tc6393xb.c
index 74d10af3d4..79f161740a 100644
--- a/hw/display/tc6393xb.c
+++ b/hw/display/tc6393xb.c
@@ -148,7 +148,7 @@ static void tc6393xb_gpio_set(void *opaque, int line, int level)
 //    TC6393xbState *s = opaque;
 
     if (line > TC6393XB_GPIOS) {
-        printf("%s: No GPIO pin %i\n", __FUNCTION__, line);
+        printf("%s: No GPIO pin %i\n", __func__, line);
         return;
     }
 
diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c
index df8b78f6f4..6dc98d0497 100644
--- a/hw/display/xenfb.c
+++ b/hw/display/xenfb.c
@@ -643,7 +643,7 @@ static void xenfb_guest_copy(struct XenFB *xenfb, int x, int y, int w, int h)
     }
     if (oops) /* should not happen */
         xen_pv_printf(&xenfb->c.xendev, 0, "%s: oops: convert %d -> %d bpp?\n",
-                      __FUNCTION__, xenfb->depth, bpp);
+                      __func__, xenfb->depth, bpp);
 
     dpy_gfx_update(xenfb->con, x, y, w, h);
 }
diff --git a/hw/dma/omap_dma.c b/hw/dma/omap_dma.c
index 45dfe7aadd..abd18c67ea 100644
--- a/hw/dma/omap_dma.c
+++ b/hw/dma/omap_dma.c
@@ -161,7 +161,7 @@ static void omap_dma_channel_load(struct omap_dma_channel_s *ch)
     a->pck_element = 0;
 
     if (unlikely(!ch->elements || !ch->frames)) {
-        printf("%s: bad DMA request\n", __FUNCTION__);
+        printf("%s: bad DMA request\n", __func__);
         return;
     }
 
@@ -519,7 +519,7 @@ static void omap_dma_transfer_setup(struct soc_dma_ch_s *dma)
         continue;
 #endif
         printf("%s: Bus time-out in DMA%i operation\n",
-                        __FUNCTION__, dma->num);
+                        __func__, dma->num);
     }
 
     min_elems = INT_MAX;
@@ -879,14 +879,14 @@ static int omap_dma_ch_reg_write(struct omap_dma_s *s,
         ch->pack[0] = (value & 0x0040) >> 6;
         ch->port[0] = (enum omap_dma_port) ((value & 0x003c) >> 2);
         if (ch->port[0] >= __omap_dma_port_last)
-            printf("%s: invalid DMA port %i\n", __FUNCTION__,
+            printf("%s: invalid DMA port %i\n", __func__,
                             ch->port[0]);
         if (ch->port[1] >= __omap_dma_port_last)
-            printf("%s: invalid DMA port %i\n", __FUNCTION__,
+            printf("%s: invalid DMA port %i\n", __func__,
                             ch->port[1]);
         ch->data_type = 1 << (value & 3);
         if ((value & 3) == 3) {
-            printf("%s: bad data_type for DMA channel\n", __FUNCTION__);
+            printf("%s: bad data_type for DMA channel\n", __func__);
             ch->data_type >>= 1;
         }
         break;
@@ -1440,7 +1440,7 @@ static int omap_dma_sys_read(struct omap_dma_s *s, int offset,
     case 0x482:	/* DMA_PCh1_SR */
     case 0x4c0:	/* DMA_PChD_SR_0 */
         printf("%s: Physical Channel Status Registers not implemented.\n",
-               __FUNCTION__);
+               __func__);
         *ret = 0xff;
         break;
 
@@ -1898,13 +1898,13 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
             omap_dma_reset(s->dma);
         s->ocp = value & 0x3321;
         if (((s->ocp >> 12) & 3) == 3)				/* MIDLEMODE */
-            fprintf(stderr, "%s: invalid DMA power mode\n", __FUNCTION__);
+            fprintf(stderr, "%s: invalid DMA power mode\n", __func__);
         return;
 
     case 0x78:	/* DMA4_GCR */
         s->gcr = value & 0x00ff00ff;
 	if ((value & 0xff) == 0x00)		/* MAX_CHANNEL_FIFO_DEPTH */
-            fprintf(stderr, "%s: wrong FIFO depth in GCR\n", __FUNCTION__);
+            fprintf(stderr, "%s: wrong FIFO depth in GCR\n", __func__);
         return;
 
     case 0x80 ... 0xfff:
@@ -1935,7 +1935,7 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->src_sync = (value >> 24) & 1;	/* XXX For CamDMA must be 1 */
         if (ch->buf_disable && !ch->src_sync)
             fprintf(stderr, "%s: Buffering disable is not allowed in "
-                            "destination synchronised mode\n", __FUNCTION__);
+                            "destination synchronised mode\n", __func__);
         ch->prefetch = (value >> 23) & 1;
         ch->bs = (value >> 18) & 1;
         ch->transparent_copy = (value >> 17) & 1;
@@ -1947,7 +1947,7 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->fs = (value & 0x0020) >> 5;
         if (ch->fs && ch->bs && ch->mode[0] && ch->mode[1])
             fprintf(stderr, "%s: For a packet transfer at least one port "
-                            "must be constant-addressed\n", __FUNCTION__);
+                            "must be constant-addressed\n", __func__);
         ch->sync = (value & 0x001f) | ((value >> 14) & 0x0060);
         /* XXX must be 0x01 for CamDMA */
 
@@ -1978,7 +1978,7 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->endian_lock[1] =(value >> 18) & 1;
         if (ch->endian[0] != ch->endian[1])
             fprintf(stderr, "%s: DMA endianness conversion enable attempt\n",
-                            __FUNCTION__);
+                            __func__);
         ch->write_mode = (value >> 16) & 3;
         ch->burst[1] = (value & 0xc000) >> 14;
         ch->pack[1] = (value & 0x2000) >> 13;
@@ -1988,10 +1988,10 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->translate[0] = (value & 0x003c) >> 2;
         if (ch->translate[0] | ch->translate[1])
             fprintf(stderr, "%s: bad MReqAddressTranslate sideband signal\n",
-                            __FUNCTION__);
+                            __func__);
         ch->data_type = 1 << (value & 3);
         if ((value & 3) == 3) {
-            printf("%s: bad data_type for DMA channel\n", __FUNCTION__);
+            printf("%s: bad data_type for DMA channel\n", __func__);
             ch->data_type >>= 1;
         }
         break;
diff --git a/hw/dma/pxa2xx_dma.c b/hw/dma/pxa2xx_dma.c
index 634a4328f0..f4eb26cf17 100644
--- a/hw/dma/pxa2xx_dma.c
+++ b/hw/dma/pxa2xx_dma.c
@@ -169,7 +169,7 @@ static inline void pxa2xx_dma_descriptor_fetch(
         s->chan[ch].dest &= ~3;
 
     if (s->chan[ch].cmd & (DCMD_CMPEN | DCMD_FLYBYS | DCMD_FLYBYT))
-        printf("%s: unsupported mode in channel %i\n", __FUNCTION__, ch);
+        printf("%s: unsupported mode in channel %i\n", __func__, ch);
 
     if (s->chan[ch].cmd & DCMD_STARTIRQEN)
         s->chan[ch].state |= DCSR_STARTINTR;
@@ -264,7 +264,7 @@ static uint64_t pxa2xx_dma_read(void *opaque, hwaddr offset,
     unsigned int channel;
 
     if (size != 4) {
-        hw_error("%s: Bad access width\n", __FUNCTION__);
+        hw_error("%s: Bad access width\n", __func__);
         return 5;
     }
 
@@ -312,7 +312,7 @@ static uint64_t pxa2xx_dma_read(void *opaque, hwaddr offset,
         }
     }
 
-    hw_error("%s: Bad offset 0x" TARGET_FMT_plx "\n", __FUNCTION__, offset);
+    hw_error("%s: Bad offset 0x" TARGET_FMT_plx "\n", __func__, offset);
     return 7;
 }
 
@@ -323,7 +323,7 @@ static void pxa2xx_dma_write(void *opaque, hwaddr offset,
     unsigned int channel;
 
     if (size != 4) {
-        hw_error("%s: Bad access width\n", __FUNCTION__);
+        hw_error("%s: Bad access width\n", __func__);
         return;
     }
 
@@ -337,7 +337,7 @@ static void pxa2xx_dma_write(void *opaque, hwaddr offset,
         if (value & DRCMR_MAPVLD)
             if ((value & DRCMR_CHLNUM) > s->channels)
                 hw_error("%s: Bad DMA channel %i\n",
-                         __FUNCTION__, (unsigned)value & DRCMR_CHLNUM);
+                         __func__, (unsigned)value & DRCMR_CHLNUM);
 
         s->req[channel] = value;
         break;
@@ -416,7 +416,7 @@ static void pxa2xx_dma_write(void *opaque, hwaddr offset,
             break;
         }
     fail:
-        hw_error("%s: Bad offset " TARGET_FMT_plx "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " TARGET_FMT_plx "\n", __func__, offset);
     }
 }
 
@@ -431,7 +431,7 @@ static void pxa2xx_dma_request(void *opaque, int req_num, int on)
     PXA2xxDMAState *s = opaque;
     int ch;
     if (req_num < 0 || req_num >= PXA2XX_DMA_NUM_REQUESTS)
-        hw_error("%s: Bad DMA request %i\n", __FUNCTION__, req_num);
+        hw_error("%s: Bad DMA request %i\n", __func__, req_num);
 
     if (!(s->req[req_num] & DRCMR_MAPVLD))
         return;
diff --git a/hw/gpio/max7310.c b/hw/gpio/max7310.c
index f82e3e6555..4c203ef5c6 100644
--- a/hw/gpio/max7310.c
+++ b/hw/gpio/max7310.c
@@ -67,7 +67,7 @@ static int max7310_rx(I2CSlave *i2c)
 
     default:
 #ifdef VERBOSE
-        printf("%s: unknown register %02x\n", __FUNCTION__, s->command);
+        printf("%s: unknown register %02x\n", __func__, s->command);
 #endif
         break;
     }
@@ -82,7 +82,7 @@ static int max7310_tx(I2CSlave *i2c, uint8_t data)
 
     if (s->len ++ > 1) {
 #ifdef VERBOSE
-        printf("%s: message too long (%i bytes)\n", __FUNCTION__, s->len);
+        printf("%s: message too long (%i bytes)\n", __func__, s->len);
 #endif
         return 1;
     }
@@ -121,7 +121,7 @@ static int max7310_tx(I2CSlave *i2c, uint8_t data)
 	break;
     default:
 #ifdef VERBOSE
-        printf("%s: unknown register %02x\n", __FUNCTION__, s->command);
+        printf("%s: unknown register %02x\n", __func__, s->command);
 #endif
         return 1;
     }
@@ -141,7 +141,7 @@ static int max7310_event(I2CSlave *i2c, enum i2c_event event)
     case I2C_FINISH:
 #ifdef VERBOSE
         if (s->len == 1)
-            printf("%s: message too short (%i bytes)\n", __FUNCTION__, s->len);
+            printf("%s: message too short (%i bytes)\n", __func__, s->len);
 #endif
         break;
     default:
diff --git a/hw/gpio/omap_gpio.c b/hw/gpio/omap_gpio.c
index 17891e2d0f..08472193b5 100644
--- a/hw/gpio/omap_gpio.c
+++ b/hw/gpio/omap_gpio.c
@@ -399,7 +399,7 @@ static void omap2_gpio_module_write(void *opaque, hwaddr addr,
 
     case 0x10:	/* GPIO_SYSCONFIG */
         if (((value >> 3) & 3) == 3)
-            fprintf(stderr, "%s: bad IDLEMODE value\n", __FUNCTION__);
+            fprintf(stderr, "%s: bad IDLEMODE value\n", __func__);
         if (value & 2)
             omap2_gpio_module_reset(s);
         s->config[0] = value & 0x1d;
diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c
index 12264ee0f5..26e3e5ebf6 100644
--- a/hw/i2c/omap_i2c.c
+++ b/hw/i2c/omap_i2c.c
@@ -341,12 +341,12 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
         }
         if ((value & (1 << 15)) && !(value & (1 << 10))) {	/* MST */
             fprintf(stderr, "%s: I^2C slave mode not supported\n",
-                            __FUNCTION__);
+                            __func__);
             break;
         }
         if ((value & (1 << 15)) && value & (1 << 8)) {		/* XA */
             fprintf(stderr, "%s: 10-bit addressing mode not supported\n",
-                            __FUNCTION__);
+                            __func__);
             break;
         }
         if ((value & (1 << 15)) && value & (1 << 0)) {		/* STT */
@@ -393,7 +393,7 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
                 omap_i2c_interrupts_update(s);
             }
         if (value & (1 << 15))					/* ST_EN */
-            fprintf(stderr, "%s: System Test not supported\n", __FUNCTION__);
+            fprintf(stderr, "%s: System Test not supported\n", __func__);
         break;
 
     default:
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index 32d1296a64..c25e293d88 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -1053,7 +1053,7 @@ static void process_ncq_command(AHCIState *s, int port, uint8_t *cmd_fis,
     g_assert(is_ncq(ncq_fis->command));
     if (ncq_tfs->used) {
         /* error - already in use */
-        fprintf(stderr, "%s: tag %d already used\n", __FUNCTION__, tag);
+        fprintf(stderr, "%s: tag %d already used\n", __func__, tag);
         return;
     }
 
diff --git a/hw/ide/microdrive.c b/hw/ide/microdrive.c
index 17917c0b30..3090254783 100644
--- a/hw/ide/microdrive.c
+++ b/hw/ide/microdrive.c
@@ -156,7 +156,7 @@ static uint8_t md_attr_read(PCMCIACardState *card, uint32_t at)
         return 0x00;
 #ifdef VERBOSE
     default:
-        printf("%s: Bad attribute space register %02x\n", __FUNCTION__, at);
+        printf("%s: Bad attribute space register %02x\n", __func__, at);
 #endif
     }
 
@@ -193,7 +193,7 @@ static void md_attr_write(PCMCIACardState *card, uint32_t at, uint8_t value)
     case 0x06:	/* Socket and Copy Register */
         break;
     default:
-        printf("%s: Bad attribute space register %02x\n", __FUNCTION__, at);
+        printf("%s: Bad attribute space register %02x\n", __func__, at);
     }
 }
 
diff --git a/hw/input/lm832x.c b/hw/input/lm832x.c
index 2340523da0..d39953126b 100644
--- a/hw/input/lm832x.c
+++ b/hw/input/lm832x.c
@@ -239,7 +239,7 @@ static uint8_t lm_kbd_read(LM823KbdState *s, int reg, int byte)
 
     default:
         lm_kbd_error(s, ERR_CMDUNK);
-        fprintf(stderr, "%s: unknown command %02x\n", __FUNCTION__, reg);
+        fprintf(stderr, "%s: unknown command %02x\n", __func__, reg);
         return 0x00;
     }
 
@@ -331,7 +331,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value)
         if ((value & 3) && (value & 3) != 3) {
             lm_kbd_error(s, ERR_BADPAR);
             fprintf(stderr, "%s: invalid clock setting in RCPWM\n",
-                            __FUNCTION__);
+                            __func__);
         }
         /* TODO: Validate that the command is only issued once */
         break;
@@ -378,7 +378,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value)
         break;
     default:
         lm_kbd_error(s, ERR_CMDUNK);
-        fprintf(stderr, "%s: unknown command %02x\n", __FUNCTION__, reg);
+        fprintf(stderr, "%s: unknown command %02x\n", __func__, reg);
         break;
     }
 }
diff --git a/hw/input/pxa2xx_keypad.c b/hw/input/pxa2xx_keypad.c
index 2b70bbb95c..93db9ed25b 100644
--- a/hw/input/pxa2xx_keypad.c
+++ b/hw/input/pxa2xx_keypad.c
@@ -231,7 +231,7 @@ static uint64_t pxa2xx_keypad_read(void *opaque, hwaddr offset,
         return s->kpkdi;
         break;
     default:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 
     return 0;
@@ -278,7 +278,7 @@ static void pxa2xx_keypad_write(void *opaque, hwaddr offset,
         break;
 
     default:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 }
 
@@ -326,7 +326,7 @@ void pxa27x_register_keypad(PXA2xxKeyPadState *kp,
                             const struct keymap *map, int size)
 {
     if(!map || size < 0x80) {
-        fprintf(stderr, "%s - No PXA keypad map defined\n", __FUNCTION__);
+        fprintf(stderr, "%s - No PXA keypad map defined\n", __func__);
         exit(-1);
     }
 
diff --git a/hw/input/tsc2005.c b/hw/input/tsc2005.c
index eb5320af40..7990954b6c 100644
--- a/hw/input/tsc2005.c
+++ b/hw/input/tsc2005.c
@@ -201,7 +201,7 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data)
         if (s->enabled != !(data & 0x4000)) {
             s->enabled = !(data & 0x4000);
             fprintf(stderr, "%s: touchscreen sense %sabled\n",
-                            __FUNCTION__, s->enabled ? "en" : "dis");
+                            __func__, s->enabled ? "en" : "dis");
             if (s->busy && !s->enabled)
                 timer_del(s->timer);
             s->busy = s->busy && s->enabled;
@@ -210,7 +210,7 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data)
         s->timing[0] = data & 0x1fff;
         if ((s->timing[0] >> 11) == 3)
             fprintf(stderr, "%s: illegal conversion clock setting\n",
-                            __FUNCTION__);
+                            __func__);
         break;
     case 0xd:	/* CFR1 */
         s->timing[1] = data & 0xf07;
@@ -222,7 +222,7 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data)
 
     default:
         fprintf(stderr, "%s: write into read-only register %x\n",
-                        __FUNCTION__, reg);
+                        __func__, reg);
     }
 }
 
@@ -338,7 +338,7 @@ static uint8_t tsc2005_txrx_word(void *opaque, uint8_t value)
                 if (s->enabled != !(value & 1)) {
                     s->enabled = !(value & 1);
                     fprintf(stderr, "%s: touchscreen sense %sabled\n",
-                                    __FUNCTION__, s->enabled ? "en" : "dis");
+                                    __func__, s->enabled ? "en" : "dis");
                     if (s->busy && !s->enabled)
                         timer_del(s->timer);
                     s->busy = s->busy && s->enabled;
diff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c
index b068343771..d4b19c1825 100644
--- a/hw/input/tsc210x.c
+++ b/hw/input/tsc210x.c
@@ -287,7 +287,7 @@ static void tsc2102_audio_rate_update(TSC210xState *s)
                         rate->fsref == ((s->audio_ctrl3 >> 13) & 1))/* REFFS */
             break;
     if (!rate->rate) {
-        printf("%s: unknown sampling rate configured\n", __FUNCTION__);
+        printf("%s: unknown sampling rate configured\n", __func__);
         return;
     }
 
@@ -913,7 +913,7 @@ uint32_t tsc210x_txrx(void *opaque, uint32_t value, int len)
     uint32_t ret = 0;
 
     if (len != 16)
-        hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len);
+        hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len);
 
     /* TODO: sequential reads etc - how do we make sure the host doesn't
      * unintentionally read out a conversion result from a register while
diff --git a/hw/intc/omap_intc.c b/hw/intc/omap_intc.c
index ccdda89dab..6844c1aa83 100644
--- a/hw/intc/omap_intc.c
+++ b/hw/intc/omap_intc.c
@@ -540,7 +540,7 @@ static void omap2_inth_write(void *opaque, hwaddr addr,
          * for every register, see Chapter 3 and 4 for privileged mode.  */
         if (value & 1)
             fprintf(stderr, "%s: protection mode enable attempt\n",
-                            __FUNCTION__);
+                            __func__);
         return;
 
     case 0x50:	/* INTC_IDLE */
diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
index 50dc83df77..72bf674403 100644
--- a/hw/isa/vt82c686.c
+++ b/hw/isa/vt82c686.c
@@ -30,7 +30,7 @@
 //#define DEBUG_VT82C686B
 
 #ifdef DEBUG_VT82C686B
-#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
+#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
 #else
 #define DPRINTF(fmt, ...)
 #endif
diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
index e8b2eef688..41a7690560 100644
--- a/hw/mips/gt64xxx_pci.c
+++ b/hw/mips/gt64xxx_pci.c
@@ -33,7 +33,7 @@
 //#define DEBUG
 
 #ifdef DEBUG
-#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
+#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
 #else
 #define DPRINTF(fmt, ...)
 #endif
diff --git a/hw/misc/cbus.c b/hw/misc/cbus.c
index 677274ce3e..25e337ea77 100644
--- a/hw/misc/cbus.c
+++ b/hw/misc/cbus.c
@@ -62,7 +62,7 @@ static void cbus_io(CBusPriv *s)
         s->slave[s->addr]->io(s->slave[s->addr]->opaque,
                         s->rw, s->reg, &s->val);
     else
-        hw_error("%s: bad slave address %i\n", __FUNCTION__, s->addr);
+        hw_error("%s: bad slave address %i\n", __func__, s->addr);
 }
 
 static void cbus_cycle(CBusPriv *s)
@@ -299,7 +299,7 @@ static inline uint16_t retu_read(CBusRetu *s, int reg)
         return 0x0000;
 
     default:
-        hw_error("%s: bad register %02x\n", __FUNCTION__, reg);
+        hw_error("%s: bad register %02x\n", __func__, reg);
     }
 }
 
@@ -372,7 +372,7 @@ static inline void retu_write(CBusRetu *s, int reg, uint16_t val)
         break;
 
     default:
-        hw_error("%s: bad register %02x\n", __FUNCTION__, reg);
+        hw_error("%s: bad register %02x\n", __func__, reg);
     }
 }
 
@@ -538,7 +538,7 @@ static inline uint16_t tahvo_read(CBusTahvo *s, int reg)
         return 0x0000;
 
     default:
-        hw_error("%s: bad register %02x\n", __FUNCTION__, reg);
+        hw_error("%s: bad register %02x\n", __func__, reg);
     }
 }
 
@@ -567,7 +567,7 @@ static inline void tahvo_write(CBusTahvo *s, int reg, uint16_t val)
         if (s->backlight != (val & 0x7f)) {
             s->backlight = val & 0x7f;
             printf("%s: LCD backlight now at %i / 127\n",
-                            __FUNCTION__, s->backlight);
+                            __func__, s->backlight);
         }
         break;
 
@@ -588,7 +588,7 @@ static inline void tahvo_write(CBusTahvo *s, int reg, uint16_t val)
         break;
 
     default:
-        hw_error("%s: bad register %02x\n", __FUNCTION__, reg);
+        hw_error("%s: bad register %02x\n", __func__, reg);
     }
 }
 
diff --git a/hw/misc/omap_clk.c b/hw/misc/omap_clk.c
index 19151d07d6..9ea14186d4 100644
--- a/hw/misc/omap_clk.c
+++ b/hw/misc/omap_clk.c
@@ -1109,7 +1109,7 @@ struct clk *omap_findclk(struct omap_mpu_state_s *mpu, const char *name)
     for (i = mpu->clks; i->name; i ++)
         if (!strcmp(i->name, name) || (i->alias && !strcmp(i->alias, name)))
             return i;
-    hw_error("%s: %s not found\n", __FUNCTION__, name);
+    hw_error("%s: %s not found\n", __func__, name);
 }
 
 void omap_clk_get(struct clk *clk)
@@ -1120,7 +1120,7 @@ void omap_clk_get(struct clk *clk)
 void omap_clk_put(struct clk *clk)
 {
     if (!(clk->usecount --))
-        hw_error("%s: %s is not in use\n", __FUNCTION__, clk->name);
+        hw_error("%s: %s is not in use\n", __func__, clk->name);
 }
 
 static void omap_clk_update(struct clk *clk)
diff --git a/hw/misc/omap_gpmc.c b/hw/misc/omap_gpmc.c
index 67d8e2f023..84f9e4c612 100644
--- a/hw/misc/omap_gpmc.c
+++ b/hw/misc/omap_gpmc.c
@@ -643,7 +643,7 @@ static void omap_gpmc_write(void *opaque, hwaddr addr,
     case 0x010:	/* GPMC_SYSCONFIG */
         if ((value >> 3) == 0x3)
             fprintf(stderr, "%s: bad SDRAM idle mode %"PRIi64"\n",
-                            __FUNCTION__, value >> 3);
+                            __func__, value >> 3);
         if (value & 2)
             omap_gpmc_reset(s);
         s->sysconfig = value & 0x19;
@@ -806,7 +806,7 @@ static void omap_gpmc_write(void *opaque, hwaddr addr,
         break;
     case 0x230:	/* GPMC_TESTMODE_CTRL */
         if (value & 7)
-            fprintf(stderr, "%s: test mode enable attempt\n", __FUNCTION__);
+            fprintf(stderr, "%s: test mode enable attempt\n", __func__);
         break;
 
     default:
@@ -864,7 +864,7 @@ void omap_gpmc_attach(struct omap_gpmc_s *s, int cs, MemoryRegion *iomem)
     assert(iomem);
 
     if (cs < 0 || cs >= 8) {
-        fprintf(stderr, "%s: bad chip-select %i\n", __FUNCTION__, cs);
+        fprintf(stderr, "%s: bad chip-select %i\n", __func__, cs);
         exit(-1);
     }
     f = &s->cs_file[cs];
diff --git a/hw/misc/omap_l4.c b/hw/misc/omap_l4.c
index 88c533a0fe..96fc057b4e 100644
--- a/hw/misc/omap_l4.c
+++ b/hw/misc/omap_l4.c
@@ -126,7 +126,7 @@ struct omap_target_agent_s *omap_l4ta_get(struct omap_l4_s *bus,
             break;
         }
     if (!ta) {
-        fprintf(stderr, "%s: bad target agent (%i)\n", __FUNCTION__, cs);
+        fprintf(stderr, "%s: bad target agent (%i)\n", __func__, cs);
         exit(-1);
     }
 
@@ -151,7 +151,7 @@ hwaddr omap_l4_attach(struct omap_target_agent_s *ta,
     hwaddr base;
 
     if (region < 0 || region >= ta->regions) {
-        fprintf(stderr, "%s: bad io region (%i)\n", __FUNCTION__, region);
+        fprintf(stderr, "%s: bad io region (%i)\n", __func__, region);
         exit(-1);
     }
 
diff --git a/hw/misc/omap_sdrc.c b/hw/misc/omap_sdrc.c
index dff37ecaf9..7b38c5568c 100644
--- a/hw/misc/omap_sdrc.c
+++ b/hw/misc/omap_sdrc.c
@@ -109,7 +109,7 @@ static void omap_sdrc_write(void *opaque, hwaddr addr,
     case 0x10:	/* SDRC_SYSCONFIG */
         if ((value >> 3) != 0x2)
             fprintf(stderr, "%s: bad SDRAM idle mode %i\n",
-                    __FUNCTION__, (unsigned)value >> 3);
+                    __func__, (unsigned)value >> 3);
         if (value & 2)
             omap_sdrc_reset(s);
         s->config = value & 0x18;
diff --git a/hw/misc/omap_tap.c b/hw/misc/omap_tap.c
index e6ea8ee235..3f595e8df7 100644
--- a/hw/misc/omap_tap.c
+++ b/hw/misc/omap_tap.c
@@ -44,7 +44,7 @@ static uint64_t omap_tap_read(void *opaque, hwaddr addr,
         case omap3430:
             return 0x1b7ae02f;	/* ES 2 */
         default:
-            hw_error("%s: Bad mpu model\n", __FUNCTION__);
+            hw_error("%s: Bad mpu model\n", __func__);
         }
 
     case 0x208:	/* PRODUCTION_ID_reg for OMAP2 */
@@ -61,7 +61,7 @@ static uint64_t omap_tap_read(void *opaque, hwaddr addr,
         case omap3430:
             return 0x000000f0;
         default:
-            hw_error("%s: Bad mpu model\n", __FUNCTION__);
+            hw_error("%s: Bad mpu model\n", __func__);
         }
 
     case 0x20c:
@@ -75,7 +75,7 @@ static uint64_t omap_tap_read(void *opaque, hwaddr addr,
         case omap3430:
             return 0xcafeb7ae;	/* ES 2 */
         default:
-            hw_error("%s: Bad mpu model\n", __FUNCTION__);
+            hw_error("%s: Bad mpu model\n", __func__);
         }
 
     case 0x218:	/* DIE_ID_reg */
diff --git a/hw/misc/tmp105.c b/hw/misc/tmp105.c
index 04e83787d4..9e22d64e36 100644
--- a/hw/misc/tmp105.c
+++ b/hw/misc/tmp105.c
@@ -131,7 +131,7 @@ static void tmp105_write(TMP105State *s)
 
     case TMP105_REG_CONFIG:
         if (s->buf[0] & ~s->config & (1 << 0))			/* SD */
-            printf("%s: TMP105 shutdown\n", __FUNCTION__);
+            printf("%s: TMP105 shutdown\n", __func__);
         s->config = s->buf[0];
         s->faults = tmp105_faultq[(s->config >> 3) & 3];	/* F */
         tmp105_alarm_update(s);
diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
index 89133a9dd3..1767d2af61 100644
--- a/hw/pci-host/bonito.c
+++ b/hw/pci-host/bonito.c
@@ -50,7 +50,7 @@
 //#define DEBUG_BONITO
 
 #ifdef DEBUG_BONITO
-#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
+#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
 #else
 #define DPRINTF(fmt, ...)
 #endif
diff --git a/hw/sd/pxa2xx_mmci.c b/hw/sd/pxa2xx_mmci.c
index 3deccf02c9..0d4b88c609 100644
--- a/hw/sd/pxa2xx_mmci.c
+++ b/hw/sd/pxa2xx_mmci.c
@@ -330,7 +330,7 @@ static uint64_t pxa2xx_mmci_read(void *opaque, hwaddr offset, unsigned size)
     case MMC_BLKS_REM:
         return s->numblk;
     default:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 
     return 0;
@@ -369,7 +369,7 @@ static void pxa2xx_mmci_write(void *opaque,
     case MMC_SPI:
         s->spi = value & 0xf;
         if (value & SPI_SPI_MODE)
-            printf("%s: attempted to use card in SPI mode\n", __FUNCTION__);
+            printf("%s: attempted to use card in SPI mode\n", __func__);
         break;
 
     case MMC_CMDAT:
@@ -442,7 +442,7 @@ static void pxa2xx_mmci_write(void *opaque,
         break;
 
     default:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 }
 
diff --git a/hw/ssi/omap_spi.c b/hw/ssi/omap_spi.c
index 22034656b8..34163e5646 100644
--- a/hw/ssi/omap_spi.c
+++ b/hw/ssi/omap_spi.c
@@ -295,10 +295,10 @@ static void omap_mcspi_write(void *opaque, hwaddr addr,
         if ((value ^ s->ch[ch].config) & (3 << 14))	/* DMAR | DMAW */
             omap_mcspi_dmarequest_update(s->ch + ch);
         if (((value >> 12) & 3) == 3)			/* TRM */
-            fprintf(stderr, "%s: invalid TRM value (3)\n", __FUNCTION__);
+            fprintf(stderr, "%s: invalid TRM value (3)\n", __func__);
         if (((value >> 7) & 0x1f) < 3)			/* WL */
             fprintf(stderr, "%s: invalid WL value (%" PRIx64 ")\n",
-                            __FUNCTION__, (value >> 7) & 0x1f);
+                            __func__, (value >> 7) & 0x1f);
         s->ch[ch].config = value & 0x7fffff;
         break;
 
@@ -367,7 +367,7 @@ void omap_mcspi_attach(struct omap_mcspi_s *s,
                 int chipselect)
 {
     if (chipselect < 0 || chipselect >= s->chnum)
-        hw_error("%s: Bad chipselect %i\n", __FUNCTION__, chipselect);
+        hw_error("%s: Bad chipselect %i\n", __func__, chipselect);
 
     s->ch[chipselect].txrx = txrx;
     s->ch[chipselect].opaque = opaque;
diff --git a/hw/timer/omap_gptimer.c b/hw/timer/omap_gptimer.c
index 6d7c8a396f..ae2dc99832 100644
--- a/hw/timer/omap_gptimer.c
+++ b/hw/timer/omap_gptimer.c
@@ -357,7 +357,7 @@ static void omap_gp_timer_write(void *opaque, hwaddr addr,
         s->config = value & 0x33d;
         if (((value >> 3) & 3) == 3)				/* IDLEMODE */
             fprintf(stderr, "%s: illegal IDLEMODE value in TIOCP_CFG\n",
-                            __FUNCTION__);
+                            __func__);
         if (value & 2)						/* SOFTRESET */
             omap_gp_timer_reset(s);
         break;
@@ -395,10 +395,10 @@ static void omap_gp_timer_write(void *opaque, hwaddr addr,
         s->st = (value >> 0) & 1;
         if (s->inout && s->trigger != gpt_trigger_none)
             fprintf(stderr, "%s: GP timer pin must be an output "
-                            "for this trigger mode\n", __FUNCTION__);
+                            "for this trigger mode\n", __func__);
         if (!s->inout && s->capture != gpt_capture_none)
             fprintf(stderr, "%s: GP timer pin must be an input "
-                            "for this capture mode\n", __FUNCTION__);
+                            "for this capture mode\n", __func__);
         if (s->trigger == gpt_trigger_none)
             omap_gp_timer_out(s, s->scpwm);
         /* TODO: make sure this doesn't overflow 32-bits */
diff --git a/hw/timer/twl92230.c b/hw/timer/twl92230.c
index c0aa8ae3de..87e334af24 100644
--- a/hw/timer/twl92230.c
+++ b/hw/timer/twl92230.c
@@ -403,7 +403,7 @@ static uint8_t menelaus_read(void *opaque, uint8_t addr)
 
     default:
 #ifdef VERBOSE
-        printf("%s: unknown register %02x\n", __FUNCTION__, addr);
+        printf("%s: unknown register %02x\n", __func__, addr);
 #endif
         break;
     }
@@ -615,7 +615,7 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value)
         rtc_badness:
         default:
             fprintf(stderr, "%s: bad RTC_UPDATE value %02x\n",
-                            __FUNCTION__, value);
+                            __func__, value);
             s->status |= 1 << 10;				/* RTCERR */
             menelaus_update(s);
         }
@@ -708,7 +708,7 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value)
 
     default:
 #ifdef VERBOSE
-        printf("%s: unknown register %02x\n", __FUNCTION__, addr);
+        printf("%s: unknown register %02x\n", __func__, addr);
 #endif
     }
 }
diff --git a/hw/usb/desc.c b/hw/usb/desc.c
index c36bf30e4f..85c15addc5 100644
--- a/hw/usb/desc.c
+++ b/hw/usb/desc.c
@@ -688,7 +688,7 @@ int usb_desc_get_descriptor(USBDevice *dev, USBPacket *p,
         break;
 
     default:
-        fprintf(stderr, "%s: %d unknown type %d (len %zd)\n", __FUNCTION__,
+        fprintf(stderr, "%s: %d unknown type %d (len %zd)\n", __func__,
                 dev->addr, type, len);
         break;
     }
diff --git a/hw/usb/dev-bluetooth.c b/hw/usb/dev-bluetooth.c
index 443e3c301d..0bbceaea0b 100644
--- a/hw/usb/dev-bluetooth.c
+++ b/hw/usb/dev-bluetooth.c
@@ -274,13 +274,13 @@ static void usb_bt_fifo_enqueue(struct usb_hci_in_fifo_s *fifo,
     if (off <= DFIFO_LEN_MASK) {
         if (off + len > DFIFO_LEN_MASK + 1 &&
                         (fifo->dsize = off + len) > (DFIFO_LEN_MASK + 1) * 2) {
-            fprintf(stderr, "%s: can't alloc %i bytes\n", __FUNCTION__, len);
+            fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
             exit(-1);
         }
         buf = fifo->data + off;
     } else {
         if (fifo->dlen > fifo->dsize) {
-            fprintf(stderr, "%s: can't alloc %i bytes\n", __FUNCTION__, len);
+            fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
             exit(-1);
         }
         buf = fifo->data + off - fifo->dsize;
diff --git a/hw/usb/hcd-musb.c b/hw/usb/hcd-musb.c
index 27d9d0bd82..d70a91a58c 100644
--- a/hw/usb/hcd-musb.c
+++ b/hw/usb/hcd-musb.c
@@ -253,8 +253,8 @@
 /* #define MUSB_DEBUG */
 
 #ifdef MUSB_DEBUG
-#define TRACE(fmt,...) fprintf(stderr, "%s@%d: " fmt "\n", __FUNCTION__, \
-                               __LINE__, ##__VA_ARGS__)
+#define TRACE(fmt, ...) fprintf(stderr, "%s@%d: " fmt "\n", __func__, \
+                                __LINE__, ##__VA_ARGS__)
 #else
 #define TRACE(...)
 #endif
diff --git a/hw/usb/tusb6010.c b/hw/usb/tusb6010.c
index 8f593a6fdb..2662c060ed 100644
--- a/hw/usb/tusb6010.c
+++ b/hw/usb/tusb6010.c
@@ -296,7 +296,7 @@ static uint32_t tusb_async_readb(void *opaque, hwaddr addr)
     }
 
     printf("%s: unknown register at %03x\n",
-                    __FUNCTION__, (int) (addr & 0xfff));
+                    __func__, (int) (addr & 0xfff));
     return 0;
 }
 
@@ -313,7 +313,7 @@ static uint32_t tusb_async_readh(void *opaque, hwaddr addr)
     }
 
     printf("%s: unknown register at %03x\n",
-                    __FUNCTION__, (int) (addr & 0xfff));
+                    __func__, (int) (addr & 0xfff));
     return 0;
 }
 
@@ -436,7 +436,7 @@ static uint32_t tusb_async_readw(void *opaque, hwaddr addr)
         return 0x54059adf;
     }
 
-    printf("%s: unknown register at %03x\n", __FUNCTION__, offset);
+    printf("%s: unknown register at %03x\n", __func__, offset);
     return 0;
 }
 
@@ -456,7 +456,7 @@ static void tusb_async_writeb(void *opaque, hwaddr addr,
 
     default:
         printf("%s: unknown register at %03x\n",
-                        __FUNCTION__, (int) (addr & 0xfff));
+                        __func__, (int) (addr & 0xfff));
         return;
     }
 }
@@ -477,7 +477,7 @@ static void tusb_async_writeh(void *opaque, hwaddr addr,
 
     default:
         printf("%s: unknown register at %03x\n",
-                        __FUNCTION__, (int) (addr & 0xfff));
+                        __func__, (int) (addr & 0xfff));
         return;
     }
 }
@@ -505,7 +505,7 @@ static void tusb_async_writew(void *opaque, hwaddr addr,
         s->dev_config = value;
         s->host_mode = (value & TUSB_DEV_CONF_USB_HOST_MODE);
         if (value & TUSB_DEV_CONF_PROD_TEST_MODE)
-            hw_error("%s: Product Test mode not allowed\n", __FUNCTION__);
+            hw_error("%s: Product Test mode not allowed\n", __func__);
         break;
 
     case TUSB_PHY_OTG_CTRL_ENABLE:
@@ -636,7 +636,7 @@ static void tusb_async_writew(void *opaque, hwaddr addr,
         break;
 
     default:
-        printf("%s: unknown register at %03x\n", __FUNCTION__, offset);
+        printf("%s: unknown register at %03x\n", __func__, offset);
         return;
     }
 }
diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c
index c89ced2e88..027f76fad1 100644
--- a/hw/xenpv/xen_domainbuild.c
+++ b/hw/xenpv/xen_domainbuild.c
@@ -25,22 +25,22 @@ static int xenstore_domain_mkdir(char *path)
     int i;
 
     if (!xs_mkdir(xenstore, 0, path)) {
-        fprintf(stderr, "%s: xs_mkdir %s: failed\n", __FUNCTION__, path);
+        fprintf(stderr, "%s: xs_mkdir %s: failed\n", __func__, path);
 	return -1;
     }
     if (!xs_set_permissions(xenstore, 0, path, perms_ro, 2)) {
-        fprintf(stderr, "%s: xs_set_permissions failed\n", __FUNCTION__);
+        fprintf(stderr, "%s: xs_set_permissions failed\n", __func__);
 	return -1;
     }
 
     for (i = 0; writable[i]; i++) {
         snprintf(subpath, sizeof(subpath), "%s/%s", path, writable[i]);
         if (!xs_mkdir(xenstore, 0, subpath)) {
-            fprintf(stderr, "%s: xs_mkdir %s: failed\n", __FUNCTION__, subpath);
+            fprintf(stderr, "%s: xs_mkdir %s: failed\n", __func__, subpath);
             return -1;
         }
         if (!xs_set_permissions(xenstore, 0, subpath, perms_rw, 2)) {
-            fprintf(stderr, "%s: xs_set_permissions failed\n", __FUNCTION__);
+            fprintf(stderr, "%s: xs_set_permissions failed\n", __func__);
             return -1;
         }
     }
@@ -158,7 +158,7 @@ static int xen_domain_watcher(void)
     char byte;
 
     if (pipe(fd) != 0) {
-        qemu_log("%s: Huh? pipe error: %s\n", __FUNCTION__, strerror(errno));
+        qemu_log("%s: Huh? pipe error: %s\n", __func__, strerror(errno));
         return -1;
     }
     if (fork() != 0)
@@ -190,7 +190,7 @@ static int xen_domain_watcher(void)
         case -1:
             if (errno == EINTR)
                 continue;
-            qemu_log("%s: Huh? read error: %s\n", __FUNCTION__, strerror(errno));
+            qemu_log("%s: Huh? read error: %s\n", __func__, strerror(errno));
             qemu_running = 0;
             break;
         case 0:
@@ -198,13 +198,13 @@ static int xen_domain_watcher(void)
             qemu_running = 0;
             break;
         default:
-            qemu_log("%s: Huh? data on the watch pipe?\n", __FUNCTION__);
+            qemu_log("%s: Huh? data on the watch pipe?\n", __func__);
             break;
         }
     }
 
     /* cleanup */
-    qemu_log("%s: destroy domain %d\n", __FUNCTION__, xen_domid);
+    qemu_log("%s: destroy domain %d\n", __func__, xen_domid);
     xc_domain_destroy(xen_xc, xen_domid);
     _exit(0);
 }
diff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c
index 31d2f25627..69a52a9f93 100644
--- a/hw/xenpv/xen_machine_pv.c
+++ b/hw/xenpv/xen_machine_pv.c
@@ -36,7 +36,7 @@ static void xen_init_pv(MachineState *machine)
 
     /* Initialize backend core & drivers */
     if (xen_be_init() != 0) {
-        fprintf(stderr, "%s: xen backend core setup failed\n", __FUNCTION__);
+        fprintf(stderr, "%s: xen backend core setup failed\n", __func__);
         exit(1);
     }
 
diff --git a/include/hw/arm/omap.h b/include/hw/arm/omap.h
index cac1b2ba43..b398607b06 100644
--- a/include/hw/arm/omap.h
+++ b/include/hw/arm/omap.h
@@ -960,10 +960,10 @@ void omap_mpu_wakeup(void *opaque, int irq, int req);
 
 # define OMAP_BAD_REG(paddr)		\
         fprintf(stderr, "%s: Bad register " OMAP_FMT_plx "\n",	\
-                        __FUNCTION__, paddr)
+                        __func__, paddr)
 # define OMAP_RO_REG(paddr)		\
         fprintf(stderr, "%s: Read-only register " OMAP_FMT_plx "\n",	\
-                        __FUNCTION__, paddr)
+                        __func__, paddr)
 
 /* OMAP-specific Linux bootloader tags for the ATAG_BOARD area
    (Board-specifc tags are not here)  */
@@ -998,13 +998,13 @@ enum {
 # ifdef TCMI_VERBOSE
 #  define OMAP_8B_REG(paddr)		\
         fprintf(stderr, "%s: 8-bit register " OMAP_FMT_plx "\n",	\
-                        __FUNCTION__, paddr)
+                        __func__, paddr)
 #  define OMAP_16B_REG(paddr)		\
         fprintf(stderr, "%s: 16-bit register " OMAP_FMT_plx "\n",	\
-                        __FUNCTION__, paddr)
+                        __func__, paddr)
 #  define OMAP_32B_REG(paddr)		\
         fprintf(stderr, "%s: 32-bit register " OMAP_FMT_plx "\n",	\
-                        __FUNCTION__, paddr)
+                        __func__, paddr)
 # else
 #  define OMAP_8B_REG(paddr)
 #  define OMAP_16B_REG(paddr)
diff --git a/include/hw/arm/sharpsl.h b/include/hw/arm/sharpsl.h
index 13981a6d03..5bf6db1fa2 100644
--- a/include/hw/arm/sharpsl.h
+++ b/include/hw/arm/sharpsl.h
@@ -7,7 +7,7 @@
 #define QEMU_SHARPSL_H
 
 #define zaurus_printf(format, ...)	\
-    fprintf(stderr, "%s: " format, __FUNCTION__, ##__VA_ARGS__)
+    fprintf(stderr, "%s: " format, __func__, ##__VA_ARGS__)
 
 /* zaurus.c */
 
diff --git a/memory_mapping.c b/memory_mapping.c
index a5d38552a6..775466f3a8 100644
--- a/memory_mapping.c
+++ b/memory_mapping.c
@@ -256,7 +256,7 @@ static void guest_phys_blocks_region_add(MemoryListener *listener,
 
 #ifdef DEBUG_GUEST_PHYS_REGION_ADD
     fprintf(stderr, "%s: target_start=" TARGET_FMT_plx " target_end="
-            TARGET_FMT_plx ": %s (count: %u)\n", __FUNCTION__, target_start,
+            TARGET_FMT_plx ": %s (count: %u)\n", __func__, target_start,
             target_end, predecessor ? "joined" : "added", g->list->num);
 #endif
 }
diff --git a/migration/block.c b/migration/block.c
index 9171f60028..0e1b90a365 100644
--- a/migration/block.c
+++ b/migration/block.c
@@ -621,7 +621,7 @@ static int flush_blks(QEMUFile *f)
     int ret = 0;
 
     DPRINTF("%s Enter submitted %d read_done %d transferred %d\n",
-            __FUNCTION__, block_mig_state.submitted, block_mig_state.read_done,
+            __func__, block_mig_state.submitted, block_mig_state.read_done,
             block_mig_state.transferred);
 
     blk_mig_lock();
@@ -648,7 +648,7 @@ static int flush_blks(QEMUFile *f)
     }
     blk_mig_unlock();
 
-    DPRINTF("%s Exit submitted %d read_done %d transferred %d\n", __FUNCTION__,
+    DPRINTF("%s Exit submitted %d read_done %d transferred %d\n", __func__,
             block_mig_state.submitted, block_mig_state.read_done,
             block_mig_state.transferred);
     return ret;
diff --git a/ui/cursor.c b/ui/cursor.c
index 2e2fe13fa6..f3da0cee79 100644
--- a/ui/cursor.c
+++ b/ui/cursor.c
@@ -19,11 +19,11 @@ static QEMUCursor *cursor_parse_xpm(const char *xpm[])
     if (sscanf(xpm[line], "%u %u %u %u",
                &width, &height, &colors, &chars) != 4) {
         fprintf(stderr, "%s: header parse error: \"%s\"\n",
-                __FUNCTION__, xpm[line]);
+                __func__, xpm[line]);
         return NULL;
     }
     if (chars != 1) {
-        fprintf(stderr, "%s: chars != 1 not supported\n", __FUNCTION__);
+        fprintf(stderr, "%s: chars != 1 not supported\n", __func__);
         return NULL;
     }
     line++;
@@ -41,7 +41,7 @@ static QEMUCursor *cursor_parse_xpm(const char *xpm[])
             }
         }
         fprintf(stderr, "%s: color parse error: \"%s\"\n",
-                __FUNCTION__, xpm[line]);
+                __func__, xpm[line]);
         return NULL;
     }
 
diff --git a/ui/spice-display.c b/ui/spice-display.c
index 0963c7825f..346fff44f4 100644
--- a/ui/spice-display.c
+++ b/ui/spice-display.c
@@ -630,13 +630,13 @@ static int interface_req_cursor_notification(QXLInstance *sin)
 
 static void interface_notify_update(QXLInstance *sin, uint32_t update_id)
 {
-    fprintf(stderr, "%s: abort()\n", __FUNCTION__);
+    fprintf(stderr, "%s: abort()\n", __func__);
     abort();
 }
 
 static int interface_flush_resources(QXLInstance *sin)
 {
-    fprintf(stderr, "%s: abort()\n", __FUNCTION__);
+    fprintf(stderr, "%s: abort()\n", __func__);
     abort();
     return 0;
 }
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__
@ 2017-09-26  0:08   ` Alistair Francis
  0 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-26  0:08 UTC (permalink / raw)
  To: qemu-devel
  Cc: Dr. David Alan Gilbert, Stefano Stabellini, Fam Zheng,
	qemu-block, Peter Crosthwaite, John Snow, Juan Quintela, armbru,
	alistair.francis, Yongbok Kim, qemu-arm, Gerd Hoffmann,
	Stefan Hajnoczi, xen-devel, Anthony Perard, alistair23,
	Andrzej Zaborowski, Aurelien Jarno

Replace all occurs of __FUNCTION__ except for the check in checkpatch
with the non GCC specific __func__.

One line in hcd-musb.c was manually tweaked to pass checkpatch.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Andrzej Zaborowski <balrogg@gmail.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Anthony Perard <anthony.perard@citrix.com>
Cc: John Snow <jsnow@redhat.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: Yongbok Kim <yongbok.kim@imgtec.com>
Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
Cc: Stefan Hajnoczi <stefanha@redhat.com> (supporter:Block
Cc: Fam Zheng <famz@redhat.com> (supporter:Block
Cc: Juan Quintela <quintela@redhat.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: qemu-arm@nongnu.org
Cc: qemu-block@nongnu.org
Cc: xen-devel@lists.xenproject.org
---

 audio/audio_int.h          |  2 +-
 hw/arm/nseries.c           |  2 +-
 hw/arm/omap1.c             | 42 +++++++++++++++++++++---------------------
 hw/arm/omap2.c             | 12 ++++++------
 hw/arm/palm.c              | 14 +++++++-------
 hw/arm/pxa2xx.c            | 46 +++++++++++++++++++++++-----------------------
 hw/arm/pxa2xx_gpio.c       |  6 +++---
 hw/arm/pxa2xx_pic.c        |  4 ++--
 hw/arm/tosa.c              | 10 +++++-----
 hw/audio/hda-codec.c       | 10 +++++-----
 hw/audio/intel-hda.c       | 28 ++++++++++++++--------------
 hw/audio/wm8750.c          |  4 ++--
 hw/block/nand.c            |  4 ++--
 hw/block/onenand.c         |  8 ++++----
 hw/bt/core.c               | 10 +++++-----
 hw/bt/hci-csr.c            | 14 +++++++-------
 hw/bt/hci.c                | 26 +++++++++++++-------------
 hw/bt/hid.c                |  2 +-
 hw/bt/l2cap.c              | 22 +++++++++++-----------
 hw/bt/sdp.c                |  6 +++---
 hw/display/blizzard.c      | 18 +++++++++---------
 hw/display/omap_dss.c      |  6 +++---
 hw/display/pxa2xx_lcd.c    | 14 +++++++-------
 hw/display/qxl-render.c    |  6 +++---
 hw/display/qxl.h           |  2 +-
 hw/display/tc6393xb.c      |  2 +-
 hw/display/xenfb.c         |  2 +-
 hw/dma/omap_dma.c          | 26 +++++++++++++-------------
 hw/dma/pxa2xx_dma.c        | 14 +++++++-------
 hw/gpio/max7310.c          |  8 ++++----
 hw/gpio/omap_gpio.c        |  2 +-
 hw/i2c/omap_i2c.c          |  6 +++---
 hw/ide/ahci.c              |  2 +-
 hw/ide/microdrive.c        |  4 ++--
 hw/input/lm832x.c          |  6 +++---
 hw/input/pxa2xx_keypad.c   |  6 +++---
 hw/input/tsc2005.c         |  8 ++++----
 hw/input/tsc210x.c         |  4 ++--
 hw/intc/omap_intc.c        |  2 +-
 hw/isa/vt82c686.c          |  2 +-
 hw/mips/gt64xxx_pci.c      |  2 +-
 hw/misc/cbus.c             | 12 ++++++------
 hw/misc/omap_clk.c         |  4 ++--
 hw/misc/omap_gpmc.c        |  6 +++---
 hw/misc/omap_l4.c          |  4 ++--
 hw/misc/omap_sdrc.c        |  2 +-
 hw/misc/omap_tap.c         |  6 +++---
 hw/misc/tmp105.c           |  2 +-
 hw/pci-host/bonito.c       |  2 +-
 hw/sd/pxa2xx_mmci.c        |  6 +++---
 hw/ssi/omap_spi.c          |  6 +++---
 hw/timer/omap_gptimer.c    |  6 +++---
 hw/timer/twl92230.c        |  6 +++---
 hw/usb/desc.c              |  2 +-
 hw/usb/dev-bluetooth.c     |  4 ++--
 hw/usb/hcd-musb.c          |  4 ++--
 hw/usb/tusb6010.c          | 14 +++++++-------
 hw/xenpv/xen_domainbuild.c | 16 ++++++++--------
 hw/xenpv/xen_machine_pv.c  |  2 +-
 include/hw/arm/omap.h      | 10 +++++-----
 include/hw/arm/sharpsl.h   |  2 +-
 memory_mapping.c           |  2 +-
 migration/block.c          |  4 ++--
 ui/cursor.c                |  6 +++---
 ui/spice-display.c         |  4 ++--
 65 files changed, 273 insertions(+), 273 deletions(-)

diff --git a/audio/audio_int.h b/audio/audio_int.h
index 5bcb1c60e1..543b1bd8d5 100644
--- a/audio/audio_int.h
+++ b/audio/audio_int.h
@@ -253,7 +253,7 @@ static inline int audio_ring_dist (int dst, int src, int len)
 #define AUDIO_STRINGIFY(n) AUDIO_STRINGIFY_(n)
 
 #if defined _MSC_VER || defined __GNUC__
-#define AUDIO_FUNC __FUNCTION__
+#define AUDIO_FUNC __func__
 #else
 #define AUDIO_FUNC __FILE__ ":" AUDIO_STRINGIFY (__LINE__)
 #endif
diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
index 58005b6619..32687afced 100644
--- a/hw/arm/nseries.c
+++ b/hw/arm/nseries.c
@@ -463,7 +463,7 @@ static uint32_t mipid_txrx(void *opaque, uint32_t cmd, int len)
     uint8_t ret;
 
     if (len > 9) {
-        hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len);
+        hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len);
     }
 
     if (s->p >= ARRAY_SIZE(s->resp)) {
diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c
index b3e7625130..1388200191 100644
--- a/hw/arm/omap1.c
+++ b/hw/arm/omap1.c
@@ -999,7 +999,7 @@ static uint64_t omap_id_read(void *opaque, hwaddr addr,
         case omap1510:
             return 0x03310115;
         default:
-            hw_error("%s: bad mpu model\n", __FUNCTION__);
+            hw_error("%s: bad mpu model\n", __func__);
         }
         break;
 
@@ -1010,7 +1010,7 @@ static uint64_t omap_id_read(void *opaque, hwaddr addr,
         case omap1510:
             return 0xfb47002f;
         default:
-            hw_error("%s: bad mpu model\n", __FUNCTION__);
+            hw_error("%s: bad mpu model\n", __func__);
         }
         break;
     }
@@ -1716,7 +1716,7 @@ static void omap_clkm_write(void *opaque, hwaddr addr,
     case 0x18:	/* ARM_SYSST */
         if ((s->clkm.clocking_scheme ^ (value >> 11)) & 7) {
             s->clkm.clocking_scheme = (value >> 11) & 7;
-            printf("%s: clocking scheme set to %s\n", __FUNCTION__,
+            printf("%s: clocking scheme set to %s\n", __func__,
                             clkschemename[s->clkm.clocking_scheme]);
         }
         s->clkm.cold_start &= value & 0x3f;
@@ -2129,14 +2129,14 @@ qemu_irq *omap_mpuio_in_get(struct omap_mpuio_s *s)
 void omap_mpuio_out_set(struct omap_mpuio_s *s, int line, qemu_irq handler)
 {
     if (line >= 16 || line < 0)
-        hw_error("%s: No GPIO line %i\n", __FUNCTION__, line);
+        hw_error("%s: No GPIO line %i\n", __func__, line);
     s->handler[line] = handler;
 }
 
 void omap_mpuio_key(struct omap_mpuio_s *s, int row, int col, int down)
 {
     if (row >= 5 || row < 0)
-        hw_error("%s: No key %i-%i\n", __FUNCTION__, col, row);
+        hw_error("%s: No key %i-%i\n", __func__, col, row);
 
     if (down)
         s->buttons[row] |= 1 << col;
@@ -2313,7 +2313,7 @@ void omap_uwire_attach(struct omap_uwire_s *s,
                 uWireSlave *slave, int chipselect)
 {
     if (chipselect < 0 || chipselect > 3) {
-        fprintf(stderr, "%s: Bad chipselect %i\n", __FUNCTION__, chipselect);
+        fprintf(stderr, "%s: Bad chipselect %i\n", __func__, chipselect);
         exit(-1);
     }
 
@@ -2335,7 +2335,7 @@ static void omap_pwl_update(struct omap_pwl_s *s)
 
     if (output != s->output) {
         s->output = output;
-        printf("%s: Backlight now at %i/256\n", __FUNCTION__, output);
+        printf("%s: Backlight now at %i/256\n", __func__, output);
     }
 }
 
@@ -2473,7 +2473,7 @@ static void omap_pwt_write(void *opaque, hwaddr addr,
     case 0x04:	/* VRC */
         if ((value ^ s->vrc) & 1) {
             if (value & 1)
-                printf("%s: %iHz buzz on\n", __FUNCTION__, (int)
+                printf("%s: %iHz buzz on\n", __func__, (int)
                                 /* 1.5 MHz from a 12-MHz or 13-MHz PWT_CLK */
                                 ((omap_clk_getrate(s->clk) >> 3) /
                                  /* Pre-multiplexer divider */
@@ -2490,7 +2490,7 @@ static void omap_pwt_write(void *opaque, hwaddr addr,
                                  ((value & (1 << 5)) ?  80 : 127) /
                                  (107 * 55 * 63 * 127)));
             else
-                printf("%s: silence!\n", __FUNCTION__);
+                printf("%s: silence!\n", __func__);
         }
         s->vrc = value & 0x7f;
         break;
@@ -2562,7 +2562,7 @@ static void omap_rtc_alarm_update(struct omap_rtc_s *s)
 {
     s->alarm_ti = mktimegm(&s->alarm_tm);
     if (s->alarm_ti == -1)
-        printf("%s: conversion failed\n", __FUNCTION__);
+        printf("%s: conversion failed\n", __func__);
 }
 
 static uint64_t omap_rtc_read(void *opaque, hwaddr addr,
@@ -3028,7 +3028,7 @@ static void omap_mcbsp_source_tick(void *opaque)
     if (!s->rx_rate)
         return;
     if (s->rx_req)
-        printf("%s: Rx FIFO overrun\n", __FUNCTION__);
+        printf("%s: Rx FIFO overrun\n", __func__);
 
     s->rx_req = s->rx_rate << bps[(s->rcr[0] >> 5) & 7];
 
@@ -3074,7 +3074,7 @@ static void omap_mcbsp_sink_tick(void *opaque)
     if (!s->tx_rate)
         return;
     if (s->tx_req)
-        printf("%s: Tx FIFO underrun\n", __FUNCTION__);
+        printf("%s: Tx FIFO underrun\n", __func__);
 
     s->tx_req = s->tx_rate << bps[(s->xcr[0] >> 5) & 7];
 
@@ -3176,7 +3176,7 @@ static uint64_t omap_mcbsp_read(void *opaque, hwaddr addr,
         /* Fall through.  */
     case 0x02:	/* DRR1 */
         if (s->rx_req < 2) {
-            printf("%s: Rx FIFO underrun\n", __FUNCTION__);
+            printf("%s: Rx FIFO underrun\n", __func__);
             omap_mcbsp_rx_done(s);
         } else {
             s->tx_req -= 2;
@@ -3282,7 +3282,7 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr,
             if (s->tx_req < 2)
                 omap_mcbsp_tx_done(s);
         } else
-            printf("%s: Tx FIFO overrun\n", __FUNCTION__);
+            printf("%s: Tx FIFO overrun\n", __func__);
         return;
 
     case 0x08:	/* SPCR2 */
@@ -3297,7 +3297,7 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr,
         s->spcr[0] &= 0x0006;
         s->spcr[0] |= 0xf8f9 & value;
         if (value & (1 << 15))				/* DLB */
-            printf("%s: Digital Loopback mode enable attempt\n", __FUNCTION__);
+            printf("%s: Digital Loopback mode enable attempt\n", __func__);
         if (~value & 1) {				/* RRST */
             s->spcr[0] &= ~6;
             s->rx_req = 0;
@@ -3330,13 +3330,13 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr,
         s->mcr[1] = value & 0x03e3;
         if (value & 3)					/* XMCM */
             printf("%s: Tx channel selection mode enable attempt\n",
-                            __FUNCTION__);
+                            __func__);
         return;
     case 0x1a:	/* MCR1 */
         s->mcr[0] = value & 0x03e1;
         if (value & 1)					/* RMCM */
             printf("%s: Rx channel selection mode enable attempt\n",
-                            __FUNCTION__);
+                            __func__);
         return;
     case 0x1c:	/* RCERA */
         s->rcer[0] = value & 0xffff;
@@ -3418,7 +3418,7 @@ static void omap_mcbsp_writew(void *opaque, hwaddr addr,
             if (s->tx_req < 4)
                 omap_mcbsp_tx_done(s);
         } else
-            printf("%s: Tx FIFO overrun\n", __FUNCTION__);
+            printf("%s: Tx FIFO overrun\n", __func__);
         return;
     }
 
@@ -3536,7 +3536,7 @@ static void omap_lpg_tick(void *opaque)
         timer_mod(s->tm, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + s->on);
 
     s->cycle = !s->cycle;
-    printf("%s: LED is %s\n", __FUNCTION__, s->cycle ? "on" : "off");
+    printf("%s: LED is %s\n", __func__, s->cycle ? "on" : "off");
 }
 
 static void omap_lpg_update(struct omap_lpg_s *s)
@@ -3557,9 +3557,9 @@ static void omap_lpg_update(struct omap_lpg_s *s)
 
     timer_del(s->tm);
     if (on == period && s->on < s->period)
-        printf("%s: LED is on\n", __FUNCTION__);
+        printf("%s: LED is on\n", __func__);
     else if (on == 0 && s->on)
-        printf("%s: LED is off\n", __FUNCTION__);
+        printf("%s: LED is off\n", __func__);
     else if (on && (on != s->on || period != s->period)) {
         s->cycle = 0;
         s->on = on;
diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c
index f5b148881c..b53878b8b9 100644
--- a/hw/arm/omap2.c
+++ b/hw/arm/omap2.c
@@ -1312,7 +1312,7 @@ static void omap_prcm_apll_update(struct omap_prcm_s *s)
 
     if (mode[0] == 1 || mode[0] == 2 || mode[1] == 1 || mode[1] == 2)
         fprintf(stderr, "%s: bad EN_54M_PLL or bad EN_96M_PLL\n",
-                        __FUNCTION__);
+                        __func__);
 }
 
 static void omap_prcm_dpll_update(struct omap_prcm_s *s)
@@ -1331,7 +1331,7 @@ static void omap_prcm_dpll_update(struct omap_prcm_s *s)
     s->dpll_lock = 0;
     switch (mode) {
     case 0:
-        fprintf(stderr, "%s: bad EN_DPLL\n", __FUNCTION__);
+        fprintf(stderr, "%s: bad EN_DPLL\n", __func__);
         break;
     case 1:	/* Low-power bypass mode (Default) */
     case 2:	/* Fast-relock bypass mode */
@@ -1358,7 +1358,7 @@ static void omap_prcm_dpll_update(struct omap_prcm_s *s)
         omap_clk_reparent(core, dpll_x2);
         break;
     case 3:
-        fprintf(stderr, "%s: bad CORE_CLK_SRC\n", __FUNCTION__);
+        fprintf(stderr, "%s: bad CORE_CLK_SRC\n", __func__);
         break;
     }
 }
@@ -1628,7 +1628,7 @@ static void omap_prcm_write(void *opaque, hwaddr addr,
     case 0x500:	/* CM_CLKEN_PLL */
         if (value & 0xffffff30)
             fprintf(stderr, "%s: write 0s in CM_CLKEN_PLL for "
-                            "future compatibility\n", __FUNCTION__);
+                            "future compatibility\n", __func__);
         if ((s->clken[9] ^ value) & 0xcc) {
             s->clken[9] &= ~0xcc;
             s->clken[9] |= value & 0xcc;
@@ -1647,7 +1647,7 @@ static void omap_prcm_write(void *opaque, hwaddr addr,
     case 0x540:	/* CM_CLKSEL1_PLL */
         if (value & 0xfc4000d7)
             fprintf(stderr, "%s: write 0s in CM_CLKSEL1_PLL for "
-                            "future compatibility\n", __FUNCTION__);
+                            "future compatibility\n", __func__);
         if ((s->clksel[5] ^ value) & 0x003fff00) {
             s->clksel[5] = value & 0x03bfff28;
             omap_prcm_dpll_update(s);
@@ -1659,7 +1659,7 @@ static void omap_prcm_write(void *opaque, hwaddr addr,
     case 0x544:	/* CM_CLKSEL2_PLL */
         if (value & ~3)
             fprintf(stderr, "%s: write 0s in CM_CLKSEL2_PLL[31:2] for "
-                            "future compatibility\n", __FUNCTION__);
+                            "future compatibility\n", __func__);
         if (s->clksel[6] != (value & 3)) {
             s->clksel[6] = value & 3;
             omap_prcm_dpll_update(s);
diff --git a/hw/arm/palm.c b/hw/arm/palm.c
index a1f55d79b4..285f43709d 100644
--- a/hw/arm/palm.c
+++ b/hw/arm/palm.c
@@ -44,7 +44,7 @@ static void static_write(void *opaque, hwaddr offset, uint64_t value,
 {
 #ifdef SPY
     printf("%s: value %08lx written at " PA_FMT "\n",
-                    __FUNCTION__, value, offset);
+                    __func__, value, offset);
 #endif
 }
 
@@ -127,11 +127,11 @@ static void palmte_onoff_gpios(void *opaque, int line, int level)
     switch (line) {
     case 0:
         printf("%s: current to MMC/SD card %sabled.\n",
-                        __FUNCTION__, level ? "dis" : "en");
+                        __func__, level ? "dis" : "en");
         break;
     case 1:
         printf("%s: internal speaker amplifier %s.\n",
-                        __FUNCTION__, level ? "down" : "on");
+                        __func__, level ? "down" : "on");
         break;
 
     /* These LCD & Audio output signals have not been identified yet.  */
@@ -139,12 +139,12 @@ static void palmte_onoff_gpios(void *opaque, int line, int level)
     case 3:
     case 4:
         printf("%s: LCD GPIO%i %s.\n",
-                        __FUNCTION__, line - 1, level ? "high" : "low");
+                        __func__, line - 1, level ? "high" : "low");
         break;
     case 5:
     case 6:
         printf("%s: Audio GPIO%i %s.\n",
-                        __FUNCTION__, line - 4, level ? "high" : "low");
+                        __func__, line - 4, level ? "high" : "low");
         break;
     }
 }
@@ -234,7 +234,7 @@ static void palmte_init(MachineState *machine)
         rom_size = get_image_size(option_rom[0].name);
         if (rom_size > flash_size) {
             fprintf(stderr, "%s: ROM image too big (%x > %x)\n",
-                            __FUNCTION__, rom_size, flash_size);
+                            __func__, rom_size, flash_size);
             rom_size = 0;
         }
         if (rom_size > 0) {
@@ -244,7 +244,7 @@ static void palmte_init(MachineState *machine)
         }
         if (rom_size < 0) {
             fprintf(stderr, "%s: error loading '%s'\n",
-                            __FUNCTION__, option_rom[0].name);
+                            __func__, option_rom[0].name);
         }
     }
 
diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
index cf07234578..078006f390 100644
--- a/hw/arm/pxa2xx.c
+++ b/hw/arm/pxa2xx.c
@@ -107,7 +107,7 @@ static uint64_t pxa2xx_pm_read(void *opaque, hwaddr addr,
         return s->pm_regs[addr >> 2];
     default:
     fail:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -139,7 +139,7 @@ static void pxa2xx_pm_write(void *opaque, hwaddr addr,
             break;
         }
 
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
 }
@@ -180,7 +180,7 @@ static uint64_t pxa2xx_cm_read(void *opaque, hwaddr addr,
         return s->cm_regs[CCCR >> 2] | (3 << 28);
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -205,7 +205,7 @@ static void pxa2xx_cm_write(void *opaque, hwaddr addr,
         break;
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
 }
@@ -410,7 +410,7 @@ static uint64_t pxa2xx_mm_read(void *opaque, hwaddr addr,
             return s->mm_regs[addr >> 2];
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -429,7 +429,7 @@ static void pxa2xx_mm_write(void *opaque, hwaddr addr,
         }
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
 }
@@ -619,7 +619,7 @@ static uint64_t pxa2xx_ssp_read(void *opaque, hwaddr addr,
         if (!s->enable)
             return 0xffffffff;
         if (s->rx_level < 1) {
-            printf("%s: SSP Rx Underrun\n", __FUNCTION__);
+            printf("%s: SSP Rx Underrun\n", __func__);
             return 0xffffffff;
         }
         s->rx_level --;
@@ -636,7 +636,7 @@ static uint64_t pxa2xx_ssp_read(void *opaque, hwaddr addr,
     case SSACD:
         return s->ssacd;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -653,9 +653,9 @@ static void pxa2xx_ssp_write(void *opaque, hwaddr addr,
         s->sscr[0] = value & 0xc7ffffff;
         s->enable = value & SSCR0_SSE;
         if (value & SSCR0_MOD)
-            printf("%s: Attempt to use network mode\n", __FUNCTION__);
+            printf("%s: Attempt to use network mode\n", __func__);
         if (s->enable && SSCR0_DSS(value) < 4)
-            printf("%s: Wrong data size: %i bits\n", __FUNCTION__,
+            printf("%s: Wrong data size: %i bits\n", __func__,
                             SSCR0_DSS(value));
         if (!(value & SSCR0_SSE)) {
             s->sssr = 0;
@@ -668,7 +668,7 @@ static void pxa2xx_ssp_write(void *opaque, hwaddr addr,
     case SSCR1:
         s->sscr[1] = value;
         if (value & (SSCR1_LBM | SSCR1_EFWR))
-            printf("%s: Attempt to use SSP test mode\n", __FUNCTION__);
+            printf("%s: Attempt to use SSP test mode\n", __func__);
         pxa2xx_ssp_fifo_update(s);
         break;
 
@@ -728,7 +728,7 @@ static void pxa2xx_ssp_write(void *opaque, hwaddr addr,
         break;
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
 }
@@ -990,7 +990,7 @@ static uint64_t pxa2xx_rtc_read(void *opaque, hwaddr addr,
         else
             return s->last_swcr;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -1096,7 +1096,7 @@ static void pxa2xx_rtc_write(void *opaque, hwaddr addr,
         break;
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
     }
 }
 
@@ -1342,7 +1342,7 @@ static uint64_t pxa2xx_i2c_read(void *opaque, hwaddr addr,
             s->ibmr = 0;
         return s->ibmr;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -1415,7 +1415,7 @@ static void pxa2xx_i2c_write(void *opaque, hwaddr addr,
         break;
 
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
     }
 }
 
@@ -1616,7 +1616,7 @@ static uint64_t pxa2xx_i2s_read(void *opaque, hwaddr addr,
         }
         return 0;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -1639,14 +1639,14 @@ static void pxa2xx_i2s_write(void *opaque, hwaddr addr,
             s->status &= ~(1 << 7);			/* I2SOFF */
         }
         if (value & (1 << 4))				/* EFWR */
-            printf("%s: Attempt to use special function\n", __FUNCTION__);
+            printf("%s: Attempt to use special function\n", __func__);
         s->enable = (value & 9) == 1;			/* ENB && !RST*/
         pxa2xx_i2s_update(s);
         break;
     case SACR1:
         s->control[1] = value & 0x0039;
         if (value & (1 << 5))				/* ENLBF */
-            printf("%s: Attempt to use loopback function\n", __FUNCTION__);
+            printf("%s: Attempt to use loopback function\n", __func__);
         if (value & (1 << 4))				/* DPRL */
             s->fifo_len = 0;
         pxa2xx_i2s_update(s);
@@ -1673,7 +1673,7 @@ static void pxa2xx_i2s_write(void *opaque, hwaddr addr,
         }
         break;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
     }
 }
 
@@ -1849,7 +1849,7 @@ static uint64_t pxa2xx_fir_read(void *opaque, hwaddr addr,
             pxa2xx_fir_update(s);
             return ret;
         }
-        printf("%s: Rx FIFO underrun.\n", __FUNCTION__);
+        printf("%s: Rx FIFO underrun.\n", __func__);
         break;
     case ICSR0:
         return s->status[0];
@@ -1858,7 +1858,7 @@ static uint64_t pxa2xx_fir_read(void *opaque, hwaddr addr,
     case ICFOR:
         return s->rx_len;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
         break;
     }
     return 0;
@@ -1910,7 +1910,7 @@ static void pxa2xx_fir_write(void *opaque, hwaddr addr,
     case ICFOR:
         break;
     default:
-        printf("%s: Bad register " REG_FMT "\n", __FUNCTION__, addr);
+        printf("%s: Bad register " REG_FMT "\n", __func__, addr);
     }
 }
 
diff --git a/hw/arm/pxa2xx_gpio.c b/hw/arm/pxa2xx_gpio.c
index 521dbad039..e15070188e 100644
--- a/hw/arm/pxa2xx_gpio.c
+++ b/hw/arm/pxa2xx_gpio.c
@@ -107,7 +107,7 @@ static void pxa2xx_gpio_set(void *opaque, int line, int level)
     uint32_t mask;
 
     if (line >= s->lines) {
-        printf("%s: No GPIO pin %i\n", __FUNCTION__, line);
+        printf("%s: No GPIO pin %i\n", __func__, line);
         return;
     }
 
@@ -195,7 +195,7 @@ static uint64_t pxa2xx_gpio_read(void *opaque, hwaddr offset,
         return s->status[bank];
 
     default:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 
     return 0;
@@ -248,7 +248,7 @@ static void pxa2xx_gpio_write(void *opaque, hwaddr offset,
         break;
 
     default:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 }
 
diff --git a/hw/arm/pxa2xx_pic.c b/hw/arm/pxa2xx_pic.c
index b516ced8c0..61275fa040 100644
--- a/hw/arm/pxa2xx_pic.c
+++ b/hw/arm/pxa2xx_pic.c
@@ -165,7 +165,7 @@ static uint64_t pxa2xx_pic_mem_read(void *opaque, hwaddr offset,
     case ICHP:	/* Highest Priority register */
         return pxa2xx_pic_highest(s);
     default:
-        printf("%s: Bad register offset " REG_FMT "\n", __FUNCTION__, offset);
+        printf("%s: Bad register offset " REG_FMT "\n", __func__, offset);
         return 0;
     }
 }
@@ -198,7 +198,7 @@ static void pxa2xx_pic_mem_write(void *opaque, hwaddr offset,
         s->priority[32 + ((offset - IPR32) >> 2)] = value & 0x8000003f;
         break;
     default:
-        printf("%s: Bad register offset " REG_FMT "\n", __FUNCTION__, offset);
+        printf("%s: Bad register offset " REG_FMT "\n", __func__, offset);
         return;
     }
     pxa2xx_pic_update(opaque);
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
index 044796350a..a55b1a369c 100644
--- a/hw/arm/tosa.c
+++ b/hw/arm/tosa.c
@@ -159,7 +159,7 @@ static int tosa_dac_send(I2CSlave *i2c, uint8_t data)
     s->buf[s->len] = data;
     if (s->len ++ > 2) {
 #ifdef VERBOSE
-        fprintf(stderr, "%s: message too long (%i bytes)\n", __FUNCTION__, s->len);
+        fprintf(stderr, "%s: message too long (%i bytes)\n", __func__, s->len);
 #endif
         return 1;
     }
@@ -181,14 +181,14 @@ static int tosa_dac_event(I2CSlave *i2c, enum i2c_event event)
     case I2C_START_SEND:
         break;
     case I2C_START_RECV:
-        printf("%s: recv not supported!!!\n", __FUNCTION__);
+        printf("%s: recv not supported!!!\n", __func__);
         break;
     case I2C_FINISH:
 #ifdef VERBOSE
         if (s->len < 2)
-            printf("%s: message too short (%i bytes)\n", __FUNCTION__, s->len);
+            printf("%s: message too short (%i bytes)\n", __func__, s->len);
         if (s->len > 2)
-            printf("%s: message too long\n", __FUNCTION__);
+            printf("%s: message too long\n", __func__);
 #endif
         break;
     default:
@@ -200,7 +200,7 @@ static int tosa_dac_event(I2CSlave *i2c, enum i2c_event event)
 
 static int tosa_dac_recv(I2CSlave *s)
 {
-    printf("%s: recv not supported!!!\n", __FUNCTION__);
+    printf("%s: recv not supported!!!\n", __func__);
     return -1;
 }
 
diff --git a/hw/audio/hda-codec.c b/hw/audio/hda-codec.c
index 5402cd196c..e8aa7842e6 100644
--- a/hw/audio/hda-codec.c
+++ b/hw/audio/hda-codec.c
@@ -316,7 +316,7 @@ static void hda_audio_command(HDACodecDevice *hda, uint32_t nid, uint32_t data)
         goto fail;
     }
     dprint(a, 2, "%s: nid %d (%s), verb 0x%x, payload 0x%x\n",
-           __FUNCTION__, nid, node->name, verb, payload);
+           __func__, nid, node->name, verb, payload);
 
     switch (verb) {
     /* all nodes */
@@ -449,7 +449,7 @@ static void hda_audio_command(HDACodecDevice *hda, uint32_t nid, uint32_t data)
 
 fail:
     dprint(a, 1, "%s: not handled: nid %d (%s), verb 0x%x, payload 0x%x\n",
-           __FUNCTION__, nid, node ? node->name : "?", verb, payload);
+           __func__, nid, node ? node->name : "?", verb, payload);
     hda_codec_response(hda, true, 0);
 }
 
@@ -484,7 +484,7 @@ static int hda_audio_init(HDACodecDevice *hda, const struct desc_codec *desc)
 
     a->desc = desc;
     a->name = object_get_typename(OBJECT(a));
-    dprint(a, 1, "%s: cad %d\n", __FUNCTION__, a->hda.cad);
+    dprint(a, 1, "%s: cad %d\n", __func__, a->hda.cad);
 
     AUD_register_card("hda", &a->card);
     for (i = 0; i < a->desc->nnodes; i++) {
@@ -526,7 +526,7 @@ static void hda_audio_exit(HDACodecDevice *hda)
     HDAAudioStream *st;
     int i;
 
-    dprint(a, 1, "%s\n", __FUNCTION__);
+    dprint(a, 1, "%s\n", __func__);
     for (i = 0; i < ARRAY_SIZE(a->st); i++) {
         st = a->st + i;
         if (st->node == NULL) {
@@ -547,7 +547,7 @@ static int hda_audio_post_load(void *opaque, int version)
     HDAAudioStream *st;
     int i;
 
-    dprint(a, 1, "%s\n", __FUNCTION__);
+    dprint(a, 1, "%s\n", __func__);
     if (version == 1) {
         /* assume running_compat[] is for output streams */
         for (i = 0; i < ARRAY_SIZE(a->running_compat); i++)
diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
index 18a50a8f83..ed51177b15 100644
--- a/hw/audio/intel-hda.c
+++ b/hw/audio/intel-hda.c
@@ -265,7 +265,7 @@ static void intel_hda_update_irq(IntelHDAState *d)
     } else {
         level = 0;
     }
-    dprint(d, 2, "%s: level %d [%s]\n", __FUNCTION__,
+    dprint(d, 2, "%s: level %d [%s]\n", __func__,
            level, msi ? "msi" : "intx");
     if (msi) {
         if (level) {
@@ -285,7 +285,7 @@ static int intel_hda_send_command(IntelHDAState *d, uint32_t verb)
     cad = (verb >> 28) & 0x0f;
     if (verb & (1 << 27)) {
         /* indirect node addressing, not specified in HDA 1.0 */
-        dprint(d, 1, "%s: indirect node addressing (guest bug?)\n", __FUNCTION__);
+        dprint(d, 1, "%s: indirect node addressing (guest bug?)\n", __func__);
         return -1;
     }
     nid = (verb >> 20) & 0x7f;
@@ -293,7 +293,7 @@ static int intel_hda_send_command(IntelHDAState *d, uint32_t verb)
 
     codec = hda_codec_find(&d->codecs, cad);
     if (codec == NULL) {
-        dprint(d, 1, "%s: addressed non-existing codec\n", __FUNCTION__);
+        dprint(d, 1, "%s: addressed non-existing codec\n", __func__);
         return -1;
     }
     cdc = HDA_CODEC_DEVICE_GET_CLASS(codec);
@@ -307,22 +307,22 @@ static void intel_hda_corb_run(IntelHDAState *d)
     uint32_t rp, verb;
 
     if (d->ics & ICH6_IRS_BUSY) {
-        dprint(d, 2, "%s: [icw] verb 0x%08x\n", __FUNCTION__, d->icw);
+        dprint(d, 2, "%s: [icw] verb 0x%08x\n", __func__, d->icw);
         intel_hda_send_command(d, d->icw);
         return;
     }
 
     for (;;) {
         if (!(d->corb_ctl & ICH6_CORBCTL_RUN)) {
-            dprint(d, 2, "%s: !run\n", __FUNCTION__);
+            dprint(d, 2, "%s: !run\n", __func__);
             return;
         }
         if ((d->corb_rp & 0xff) == d->corb_wp) {
-            dprint(d, 2, "%s: corb ring empty\n", __FUNCTION__);
+            dprint(d, 2, "%s: corb ring empty\n", __func__);
             return;
         }
         if (d->rirb_count == d->rirb_cnt) {
-            dprint(d, 2, "%s: rirb count reached\n", __FUNCTION__);
+            dprint(d, 2, "%s: rirb count reached\n", __func__);
             return;
         }
 
@@ -331,7 +331,7 @@ static void intel_hda_corb_run(IntelHDAState *d)
         verb = ldl_le_pci_dma(&d->pci, addr + 4*rp);
         d->corb_rp = rp;
 
-        dprint(d, 2, "%s: [rp 0x%x] verb 0x%08x\n", __FUNCTION__, rp, verb);
+        dprint(d, 2, "%s: [rp 0x%x] verb 0x%08x\n", __func__, rp, verb);
         intel_hda_send_command(d, verb);
     }
 }
@@ -345,7 +345,7 @@ static void intel_hda_response(HDACodecDevice *dev, bool solicited, uint32_t res
 
     if (d->ics & ICH6_IRS_BUSY) {
         dprint(d, 2, "%s: [irr] response 0x%x, cad 0x%x\n",
-               __FUNCTION__, response, dev->cad);
+               __func__, response, dev->cad);
         d->irr = response;
         d->ics &= ~(ICH6_IRS_BUSY | 0xf0);
         d->ics |= (ICH6_IRS_VALID | (dev->cad << 4));
@@ -353,7 +353,7 @@ static void intel_hda_response(HDACodecDevice *dev, bool solicited, uint32_t res
     }
 
     if (!(d->rirb_ctl & ICH6_RBCTL_DMA_EN)) {
-        dprint(d, 1, "%s: rirb dma disabled, drop codec response\n", __FUNCTION__);
+        dprint(d, 1, "%s: rirb dma disabled, drop codec response\n", __func__);
         return;
     }
 
@@ -365,17 +365,17 @@ static void intel_hda_response(HDACodecDevice *dev, bool solicited, uint32_t res
     d->rirb_wp = wp;
 
     dprint(d, 2, "%s: [wp 0x%x] response 0x%x, extra 0x%x\n",
-           __FUNCTION__, wp, response, ex);
+           __func__, wp, response, ex);
 
     d->rirb_count++;
     if (d->rirb_count == d->rirb_cnt) {
-        dprint(d, 2, "%s: rirb count reached (%d)\n", __FUNCTION__, d->rirb_count);
+        dprint(d, 2, "%s: rirb count reached (%d)\n", __func__, d->rirb_count);
         if (d->rirb_ctl & ICH6_RBCTL_IRQ_EN) {
             d->rirb_sts |= ICH6_RBSTS_IRQ;
             intel_hda_update_irq(d);
         }
     } else if ((d->corb_rp & 0xff) == d->corb_wp) {
-        dprint(d, 2, "%s: corb ring empty (%d/%d)\n", __FUNCTION__,
+        dprint(d, 2, "%s: corb ring empty (%d/%d)\n", __func__,
                d->rirb_count, d->rirb_cnt);
         if (d->rirb_ctl & ICH6_RBCTL_IRQ_EN) {
             d->rirb_sts |= ICH6_RBSTS_IRQ;
@@ -1144,7 +1144,7 @@ static int intel_hda_post_load(void *opaque, int version)
     IntelHDAState* d = opaque;
     int i;
 
-    dprint(d, 1, "%s\n", __FUNCTION__);
+    dprint(d, 1, "%s\n", __func__);
     for (i = 0; i < ARRAY_SIZE(d->st); i++) {
         if (d->st[i].ctl & 0x02) {
             intel_hda_parse_bdl(d, &d->st[i]);
diff --git a/hw/audio/wm8750.c b/hw/audio/wm8750.c
index d2bf2e1da1..de04d8ae8f 100644
--- a/hw/audio/wm8750.c
+++ b/hw/audio/wm8750.c
@@ -315,7 +315,7 @@ static int wm8750_event(I2CSlave *i2c, enum i2c_event event)
 #ifdef VERBOSE
         if (s->i2c_len < 2)
             printf("%s: message too short (%i bytes)\n",
-                            __FUNCTION__, s->i2c_len);
+                            __func__, s->i2c_len);
 #endif
         break;
     default:
@@ -555,7 +555,7 @@ static int wm8750_tx(I2CSlave *i2c, uint8_t data)
 
 #ifdef VERBOSE
     default:
-        printf("%s: unknown register %02x\n", __FUNCTION__, cmd);
+        printf("%s: unknown register %02x\n", __func__, cmd);
 #endif
     }
 
diff --git a/hw/block/nand.c b/hw/block/nand.c
index 0d33ac281f..5bc1829889 100644
--- a/hw/block/nand.c
+++ b/hw/block/nand.c
@@ -321,7 +321,7 @@ static void nand_command(NANDFlashState *s)
         break;
 
     default:
-        printf("%s: Unknown NAND command 0x%02x\n", __FUNCTION__, s->cmd);
+        printf("%s: Unknown NAND command 0x%02x\n", __func__, s->cmd);
     }
 }
 
@@ -638,7 +638,7 @@ DeviceState *nand_init(BlockBackend *blk, int manf_id, int chip_id)
     DeviceState *dev;
 
     if (nand_flash_ids[chip_id].size == 0) {
-        hw_error("%s: Unsupported NAND chip ID.\n", __FUNCTION__);
+        hw_error("%s: Unsupported NAND chip ID.\n", __func__);
     }
     dev = DEVICE(object_new(TYPE_NAND));
     qdev_prop_set_uint8(dev, "manufacturer_id", manf_id);
diff --git a/hw/block/onenand.c b/hw/block/onenand.c
index b7423607d9..224daf7ccf 100644
--- a/hw/block/onenand.c
+++ b/hw/block/onenand.c
@@ -661,12 +661,12 @@ static uint64_t onenand_read(void *opaque, hwaddr addr,
     case 0xff02:	/* ECC Result of spare area data */
     case 0xff03:	/* ECC Result of main area data */
     case 0xff04:	/* ECC Result of spare area data */
-        hw_error("%s: imeplement ECC\n", __FUNCTION__);
+        hw_error("%s: imeplement ECC\n", __func__);
         return 0x0000;
     }
 
     fprintf(stderr, "%s: unknown OneNAND register %x\n",
-                    __FUNCTION__, offset);
+                    __func__, offset);
     return 0;
 }
 
@@ -711,7 +711,7 @@ static void onenand_write(void *opaque, hwaddr addr,
 
         default:
             fprintf(stderr, "%s: unknown OneNAND boot command %"PRIx64"\n",
-                            __FUNCTION__, value);
+                            __func__, value);
         }
         break;
 
@@ -762,7 +762,7 @@ static void onenand_write(void *opaque, hwaddr addr,
 
     default:
         fprintf(stderr, "%s: unknown OneNAND register %x\n",
-                        __FUNCTION__, offset);
+                        __func__, offset);
     }
 }
 
diff --git a/hw/bt/core.c b/hw/bt/core.c
index 615f0af073..c1806b71a3 100644
--- a/hw/bt/core.c
+++ b/hw/bt/core.c
@@ -32,23 +32,23 @@ static void bt_dummy_lmp_connection_complete(struct bt_link_s *link)
 {
     if (link->slave->reject_reason)
         fprintf(stderr, "%s: stray LMP_not_accepted received, fixme\n",
-                        __FUNCTION__);
+                        __func__);
     else
         fprintf(stderr, "%s: stray LMP_accepted received, fixme\n",
-                        __FUNCTION__);
+                        __func__);
     exit(-1);
 }
 
 static void bt_dummy_lmp_disconnect_master(struct bt_link_s *link)
 {
-    fprintf(stderr, "%s: stray LMP_detach received, fixme\n", __FUNCTION__);
+    fprintf(stderr, "%s: stray LMP_detach received, fixme\n", __func__);
     exit(-1);
 }
 
 static void bt_dummy_lmp_acl_resp(struct bt_link_s *link,
                 const uint8_t *data, int start, int len)
 {
-    fprintf(stderr, "%s: stray ACL response PDU, fixme\n", __FUNCTION__);
+    fprintf(stderr, "%s: stray ACL response PDU, fixme\n", __func__);
     exit(-1);
 }
 
@@ -113,7 +113,7 @@ void bt_device_done(struct bt_device_s *dev)
     while (*p && *p != dev)
         p = &(*p)->next;
     if (*p != dev) {
-        fprintf(stderr, "%s: bad bt device \"%s\"\n", __FUNCTION__,
+        fprintf(stderr, "%s: bad bt device \"%s\"\n", __func__,
                         dev->lmp_name ?: "(null)");
         exit(-1);
     }
diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c
index d13192b9b5..ac067b81f6 100644
--- a/hw/bt/hci-csr.c
+++ b/hw/bt/hci-csr.c
@@ -111,14 +111,14 @@ static uint8_t *csrhci_out_packet(struct csrhci_s *s, int len)
 
     if (off < FIFO_LEN) {
         if (off + len > FIFO_LEN && (s->out_size = off + len) > FIFO_LEN * 2) {
-            fprintf(stderr, "%s: can't alloc %i bytes\n", __FUNCTION__, len);
+            fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
             exit(-1);
         }
         return s->outfifo + off;
     }
 
     if (s->out_len > s->out_size) {
-        fprintf(stderr, "%s: can't alloc %i bytes\n", __FUNCTION__, len);
+        fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
         exit(-1);
     }
 
@@ -169,7 +169,7 @@ static void csrhci_in_packet_vendor(struct csrhci_s *s, int ocf,
 
             s->hci->bdaddr_set(s->hci, s->bd_addr.b);
             fprintf(stderr, "%s: bd_address loaded from firmware: "
-                            "%02x:%02x:%02x:%02x:%02x:%02x\n", __FUNCTION__,
+                            "%02x:%02x:%02x:%02x:%02x:%02x\n", __func__,
                             s->bd_addr.b[0], s->bd_addr.b[1], s->bd_addr.b[2],
                             s->bd_addr.b[3], s->bd_addr.b[4], s->bd_addr.b[5]);
         }
@@ -181,7 +181,7 @@ static void csrhci_in_packet_vendor(struct csrhci_s *s, int ocf,
         break;
 
     default:
-        fprintf(stderr, "%s: got a bad CMD packet\n", __FUNCTION__);
+        fprintf(stderr, "%s: got a bad CMD packet\n", __func__);
         return;
     }
 
@@ -226,7 +226,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
     case H4_NEG_PKT:
         if (s->in_hdr != sizeof(csrhci_neg_packet) ||
                         memcmp(pkt - 1, csrhci_neg_packet, s->in_hdr)) {
-            fprintf(stderr, "%s: got a bad NEG packet\n", __FUNCTION__);
+            fprintf(stderr, "%s: got a bad NEG packet\n", __func__);
             return;
         }
         pkt += 2;
@@ -241,7 +241,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
 
     case H4_ALIVE_PKT:
         if (s->in_hdr != 4 || pkt[1] != 0x55 || pkt[2] != 0x00) {
-            fprintf(stderr, "%s: got a bad ALIVE packet\n", __FUNCTION__);
+            fprintf(stderr, "%s: got a bad ALIVE packet\n", __func__);
             return;
         }
 
@@ -254,7 +254,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
     default:
     bad_pkt:
         /* TODO: error out */
-        fprintf(stderr, "%s: got a bad packet\n", __FUNCTION__);
+        fprintf(stderr, "%s: got a bad packet\n", __func__);
         break;
     }
 
diff --git a/hw/bt/hci.c b/hw/bt/hci.c
index 476ebec0ab..df05f07887 100644
--- a/hw/bt/hci.c
+++ b/hw/bt/hci.c
@@ -458,7 +458,7 @@ static inline uint8_t *bt_hci_event_start(struct bt_hci_s *hci,
 
     if (len > 255) {
         fprintf(stderr, "%s: HCI event params too long (%ib)\n",
-                        __FUNCTION__, len);
+                        __func__, len);
         exit(-1);
     }
 
@@ -589,7 +589,7 @@ static void bt_hci_inquiry_result(struct bt_hci_s *hci,
         bt_hci_inquiry_result_with_rssi(hci, slave);
         return;
     default:
-        fprintf(stderr, "%s: bad inquiry mode %02x\n", __FUNCTION__,
+        fprintf(stderr, "%s: bad inquiry mode %02x\n", __func__,
                         hci->lm.inquiry_mode);
         exit(-1);
     }
@@ -1528,7 +1528,7 @@ static void bt_submit_hci(struct HCIInfo *info,
                             "the Inquiry command has been issued, a Command "
                             "Status event has been received for the Inquiry "
                             "command, and before the Inquiry Complete event "
-                            "occurs", __FUNCTION__);
+                            "occurs", __func__);
             bt_hci_event_complete_status(hci, HCI_COMMAND_DISALLOWED);
             break;
         }
@@ -1567,7 +1567,7 @@ static void bt_submit_hci(struct HCIInfo *info,
                             "the Inquiry command has been issued, a Command "
                             "Status event has been received for the Inquiry "
                             "command, and before the Inquiry Complete event "
-                            "occurs", __FUNCTION__);
+                            "occurs", __func__);
             bt_hci_event_complete_status(hci, HCI_COMMAND_DISALLOWED);
             break;
         }
@@ -1972,7 +1972,7 @@ static void bt_submit_hci(struct HCIInfo *info,
 
     short_hci:
         fprintf(stderr, "%s: HCI packet too short (%iB)\n",
-                        __FUNCTION__, length);
+                        __func__, length);
         bt_hci_event_status(hci, HCI_INVALID_PARAMETERS);
         break;
     }
@@ -1992,7 +1992,7 @@ static inline void bt_hci_lmp_acl_data(struct bt_hci_s *hci, uint16_t handle,
 
     if (len + HCI_ACL_HDR_SIZE > sizeof(hci->acl_buf)) {
         fprintf(stderr, "%s: can't take ACL packets %i bytes long\n",
-                        __FUNCTION__, len);
+                        __func__, len);
         return;
     }
     memcpy(hci->acl_buf + HCI_ACL_HDR_SIZE, data, len);
@@ -2030,7 +2030,7 @@ static void bt_submit_acl(struct HCIInfo *info,
 
     if (length < HCI_ACL_HDR_SIZE) {
         fprintf(stderr, "%s: ACL packet too short (%iB)\n",
-                        __FUNCTION__, length);
+                        __func__, length);
         return;
     }
 
@@ -2042,7 +2042,7 @@ static void bt_submit_acl(struct HCIInfo *info,
 
     if (bt_hci_handle_bad(hci, handle)) {
         fprintf(stderr, "%s: invalid ACL handle %03x\n",
-                        __FUNCTION__, handle);
+                        __func__, handle);
         /* TODO: signal an error */
         return;
     }
@@ -2050,7 +2050,7 @@ static void bt_submit_acl(struct HCIInfo *info,
 
     if (datalen > length) {
         fprintf(stderr, "%s: ACL packet too short (%iB < %iB)\n",
-                        __FUNCTION__, length, datalen);
+                        __func__, length, datalen);
         return;
     }
 
@@ -2061,7 +2061,7 @@ static void bt_submit_acl(struct HCIInfo *info,
             hci->asb_handle = handle;
         else if (handle != hci->asb_handle) {
             fprintf(stderr, "%s: Bad handle %03x in Active Slave Broadcast\n",
-                            __FUNCTION__, handle);
+                            __func__, handle);
             /* TODO: signal an error */
             return;
         }
@@ -2074,7 +2074,7 @@ static void bt_submit_acl(struct HCIInfo *info,
             hci->psb_handle = handle;
         else if (handle != hci->psb_handle) {
             fprintf(stderr, "%s: Bad handle %03x in Parked Slave Broadcast\n",
-                            __FUNCTION__, handle);
+                            __func__, handle);
             /* TODO: signal an error */
             return;
         }
@@ -2106,13 +2106,13 @@ static void bt_submit_sco(struct HCIInfo *info,
 
     if (bt_hci_handle_bad(hci, handle)) {
         fprintf(stderr, "%s: invalid SCO handle %03x\n",
-                        __FUNCTION__, handle);
+                        __func__, handle);
         return;
     }
 
     if (datalen > length) {
         fprintf(stderr, "%s: SCO packet too short (%iB < %iB)\n",
-                        __FUNCTION__, length, datalen);
+                        __func__, length, datalen);
         return;
     }
 
diff --git a/hw/bt/hid.c b/hw/bt/hid.c
index f6affbbb44..09d17322e4 100644
--- a/hw/bt/hid.c
+++ b/hw/bt/hid.c
@@ -420,7 +420,7 @@ static void bt_hid_interrupt_sdu(void *opaque, const uint8_t *data, int len)
     return;
 bad:
     fprintf(stderr, "%s: bad transaction on Interrupt channel.\n",
-                    __FUNCTION__);
+                    __func__);
 }
 
 /* "Virtual cable" plug/unplug event.  */
diff --git a/hw/bt/l2cap.c b/hw/bt/l2cap.c
index e342045140..3e53dd082d 100644
--- a/hw/bt/l2cap.c
+++ b/hw/bt/l2cap.c
@@ -468,7 +468,7 @@ static void l2cap_channel_close(struct l2cap_instance_s *l2cap,
     if (likely(ch)) {
         if (ch->remote_cid != source_cid) {
             fprintf(stderr, "%s: Ignoring a Disconnection Request with the "
-                            "invalid SCID %04x.\n", __FUNCTION__, source_cid);
+                            "invalid SCID %04x.\n", __func__, source_cid);
             return;
         }
 
@@ -791,7 +791,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
     /* TODO: do the IDs really have to be in sequence?  */
     if (!id || (id != l2cap->last_id && id != l2cap->next_id)) {
         fprintf(stderr, "%s: out of sequence command packet ignored.\n",
-                        __FUNCTION__);
+                        __func__);
         return;
     }
 #else
@@ -814,7 +814,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
 
         /* We never issue commands other than Command Reject currently.  */
         fprintf(stderr, "%s: stray Command Reject (%02x, %04x) "
-                        "packet, ignoring.\n", __FUNCTION__, id,
+                        "packet, ignoring.\n", __func__, id,
                         le16_to_cpu(((l2cap_cmd_rej *) params)->reason));
         break;
 
@@ -837,7 +837,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
 
         /* We never issue Connection Requests currently. TODO  */
         fprintf(stderr, "%s: unexpected Connection Response (%02x) "
-                        "packet, ignoring.\n", __FUNCTION__, id);
+                        "packet, ignoring.\n", __func__, id);
         break;
 
     case L2CAP_CONF_REQ:
@@ -866,7 +866,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
                         ((l2cap_conf_rsp *) params)->data,
                         len - L2CAP_CONF_RSP_SIZE(0)))
             fprintf(stderr, "%s: unexpected Configure Response (%02x) "
-                            "packet, ignoring.\n", __FUNCTION__, id);
+                            "packet, ignoring.\n", __func__, id);
         break;
 
     case L2CAP_DISCONN_REQ:
@@ -888,7 +888,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
 
         /* We never issue Disconnection Requests currently. TODO  */
         fprintf(stderr, "%s: unexpected Disconnection Response (%02x) "
-                        "packet, ignoring.\n", __FUNCTION__, id);
+                        "packet, ignoring.\n", __func__, id);
         break;
 
     case L2CAP_ECHO_REQ:
@@ -898,7 +898,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
     case L2CAP_ECHO_RSP:
         /* We never issue Echo Requests currently. TODO  */
         fprintf(stderr, "%s: unexpected Echo Response (%02x) "
-                        "packet, ignoring.\n", __FUNCTION__, id);
+                        "packet, ignoring.\n", __func__, id);
         break;
 
     case L2CAP_INFO_REQ:
@@ -918,7 +918,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
 
         /* We never issue Information Requests currently. TODO  */
         fprintf(stderr, "%s: unexpected Information Response (%02x) "
-                        "packet, ignoring.\n", __FUNCTION__, id);
+                        "packet, ignoring.\n", __func__, id);
         break;
 
     default:
@@ -1067,7 +1067,7 @@ static void l2cap_frame_in(struct l2cap_instance_s *l2cap,
 
     if (unlikely(cid >= L2CAP_CID_MAX || !l2cap->cid[cid])) {
         fprintf(stderr, "%s: frame addressed to a non-existent L2CAP "
-                        "channel %04x received.\n", __FUNCTION__, cid);
+                        "channel %04x received.\n", __func__, cid);
         return;
     }
 
@@ -1129,7 +1129,7 @@ static uint8_t *l2cap_bframe_out(struct bt_l2cap_conn_params_s *parm, int len)
 
     if (len > chan->params.remote_mtu) {
         fprintf(stderr, "%s: B-Frame for CID %04x longer than %i octets.\n",
-                        __FUNCTION__,
+                        __func__,
                         chan->remote_cid, chan->params.remote_mtu);
         exit(-1);
     }
@@ -1354,7 +1354,7 @@ void bt_l2cap_psm_register(struct bt_l2cap_device_s *dev, int psm, int min_mtu,
 
     if (new_psm) {
         fprintf(stderr, "%s: PSM %04x already registered for device `%s'.\n",
-                        __FUNCTION__, psm, dev->device.lmp_name);
+                        __func__, psm, dev->device.lmp_name);
         exit(-1);
     }
 
diff --git a/hw/bt/sdp.c b/hw/bt/sdp.c
index 3cb60b9495..7c0d38b504 100644
--- a/hw/bt/sdp.c
+++ b/hw/bt/sdp.c
@@ -506,7 +506,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)
     int rsp_len = 0;
 
     if (len < 5) {
-        fprintf(stderr, "%s: short SDP PDU (%iB).\n", __FUNCTION__, len);
+        fprintf(stderr, "%s: short SDP PDU (%iB).\n", __func__, len);
         return;
     }
 
@@ -518,7 +518,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)
 
     if (len != plen) {
         fprintf(stderr, "%s: wrong SDP PDU length (%iB != %iB).\n",
-                        __FUNCTION__, plen, len);
+                        __func__, plen, len);
         err = SDP_INVALID_PDU_SIZE;
         goto respond;
     }
@@ -545,7 +545,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)
     case SDP_SVC_SEARCH_ATTR_RSP:
     default:
         fprintf(stderr, "%s: unexpected SDP PDU ID %02x.\n",
-                        __FUNCTION__, pdu_id);
+                        __func__, pdu_id);
         err = SDP_INVALID_SYNTAX;
         break;
     }
diff --git a/hw/display/blizzard.c b/hw/display/blizzard.c
index cbf07d14d9..291abe6fca 100644
--- a/hw/display/blizzard.c
+++ b/hw/display/blizzard.c
@@ -474,7 +474,7 @@ static uint16_t blizzard_reg_read(void *opaque, uint8_t reg)
         return s->gpio_pdown;
 
     default:
-        fprintf(stderr, "%s: unknown register %02x\n", __FUNCTION__, reg);
+        fprintf(stderr, "%s: unknown register %02x\n", __func__, reg);
         return 0;
     }
 }
@@ -502,7 +502,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->pll_mode = value & 0x77;
         if ((value & 3) == 0 || (value & 3) == 3)
             fprintf(stderr, "%s: wrong PLL Control bits (%i)\n",
-                    __FUNCTION__, value & 3);
+                    __func__, value & 3);
         break;
 
     case 0x0e:	/* Clock-Source Select */
@@ -541,7 +541,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
     case 0x28:	/* LCD Panel Configuration */
         s->lcd_config = value & 0xff;
         if (value & (1 << 7))
-            fprintf(stderr, "%s: data swap not supported!\n", __FUNCTION__);
+            fprintf(stderr, "%s: data swap not supported!\n", __func__);
         break;
 
     case 0x2a:	/* LCD Horizontal Display Width */
@@ -586,7 +586,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->hssi_config[1] = value;
         if (((value >> 4) & 3) == 3)
             fprintf(stderr, "%s: Illegal active-data-links value\n",
-                            __FUNCTION__);
+                            __func__);
         break;
     case 0x42:	/* High-speed Serial Interface Tx Mode */
         s->hssi_config[2] = value & 0xbd;
@@ -641,7 +641,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->enable = value & 1;
         s->blank = (value >> 1) & 1;
         if (value & (1 << 4))
-            fprintf(stderr, "%s: Macrovision enable attempt!\n", __FUNCTION__);
+            fprintf(stderr, "%s: Macrovision enable attempt!\n", __func__);
         break;
 
     case 0x6a:	/* Special Effects */
@@ -718,7 +718,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->bpp = blizzard_iformat_bpp[s->iformat];
         if (!s->bpp)
             fprintf(stderr, "%s: Illegal or unsupported input format %x\n",
-                            __FUNCTION__, s->iformat);
+                            __func__, s->iformat);
         break;
     case 0x8e:	/* Data Source Select */
         s->source = value & 7;
@@ -730,7 +730,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
                         !((s->ix[1] - s->ix[0]) & (s->iy[1] - s->iy[0]) &
                           (s->ox[1] - s->ox[0]) & (s->oy[1] - s->oy[0]) & 1))
             fprintf(stderr, "%s: Illegal input/output window positions\n",
-                            __FUNCTION__);
+                            __func__);
 
         blizzard_transfer_setup(s);
         break;
@@ -784,7 +784,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->pm = value & 0x83;
         if (value & s->mode & 1)
             fprintf(stderr, "%s: The display must be disabled before entering "
-                            "Standby Mode\n", __FUNCTION__);
+                            "Standby Mode\n", __func__);
         break;
     case 0xe8:	/* Non-display Period Control / Status */
         s->status = value & 0x1b;
@@ -815,7 +815,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         break;
 
     default:
-        fprintf(stderr, "%s: unknown register %02x\n", __FUNCTION__, reg);
+        fprintf(stderr, "%s: unknown register %02x\n", __func__, reg);
         break;
     }
 }
diff --git a/hw/display/omap_dss.c b/hw/display/omap_dss.c
index 783e9e1318..601f178fdd 100644
--- a/hw/display/omap_dss.c
+++ b/hw/display/omap_dss.c
@@ -526,7 +526,7 @@ static void omap_disc_write(void *opaque, hwaddr addr,
         s->dispc.l[0].attr = value & 0x7ff;
         if (value & (3 << 9))
             fprintf(stderr, "%s: Big-endian pixel format not supported\n",
-                            __FUNCTION__);
+                            __func__);
         s->dispc.l[0].enable = value & 1;
         s->dispc.l[0].bpp = (value >> 1) & 0xf;
         s->dispc.invalidate = 1;
@@ -617,7 +617,7 @@ static void omap_rfbi_transfer_start(struct omap_dss_s *s)
     if (s->rfbi.control & (1 << 1)) {				/* BYPASS */
         /* TODO: in non-Bypass mode we probably need to just assert the
          * DRQ and wait for DMA to write the pixels.  */
-        fprintf(stderr, "%s: Bypass mode unimplemented\n", __FUNCTION__);
+        fprintf(stderr, "%s: Bypass mode unimplemented\n", __func__);
         return;
     }
 
@@ -1086,6 +1086,6 @@ struct omap_dss_s *omap_dss_init(struct omap_target_agent_s *ta,
 void omap_rfbi_attach(struct omap_dss_s *s, int cs, struct rfbi_chip_s *chip)
 {
     if (cs < 0 || cs > 1)
-        hw_error("%s: wrong CS %i\n", __FUNCTION__, cs);
+        hw_error("%s: wrong CS %i\n", __func__, cs);
     s->rfbi.chip[cs] = chip;
 }
diff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c
index 845521c5b2..b83f80753a 100644
--- a/hw/display/pxa2xx_lcd.c
+++ b/hw/display/pxa2xx_lcd.c
@@ -405,7 +405,7 @@ static uint64_t pxa2xx_lcdc_read(void *opaque, hwaddr offset,
 
     default:
     fail:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 
     return 0;
@@ -424,7 +424,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset,
             s->status[0] |= LCSR0_QD;
 
         if (!(s->control[0] & LCCR0_LCDT) && (value & LCCR0_LCDT))
-            printf("%s: internal frame buffer unsupported\n", __FUNCTION__);
+            printf("%s: internal frame buffer unsupported\n", __func__);
 
         if ((s->control[3] & LCCR3_API) &&
                 (value & LCCR0_ENB) && !(value & LCCR0_LCDT))
@@ -460,7 +460,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset,
 
     case OVL1C1:
         if (!(s->ovl1c[0] & OVLC1_EN) && (value & OVLC1_EN))
-            printf("%s: Overlay 1 not supported\n", __FUNCTION__);
+            printf("%s: Overlay 1 not supported\n", __func__);
 
         s->ovl1c[0] = value & 0x80ffffff;
         s->dma_ch[1].up = (value & OVLC1_EN) || (s->control[0] & LCCR0_SDS);
@@ -472,7 +472,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset,
 
     case OVL2C1:
         if (!(s->ovl2c[0] & OVLC1_EN) && (value & OVLC1_EN))
-            printf("%s: Overlay 2 not supported\n", __FUNCTION__);
+            printf("%s: Overlay 2 not supported\n", __func__);
 
         s->ovl2c[0] = value & 0x80ffffff;
         s->dma_ch[2].up = !!(value & OVLC1_EN);
@@ -486,7 +486,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset,
 
     case CCR:
         if (!(s->ccr & CCR_CEN) && (value & CCR_CEN))
-            printf("%s: Hardware cursor unimplemented\n", __FUNCTION__);
+            printf("%s: Hardware cursor unimplemented\n", __func__);
 
         s->ccr = value & 0x81ffffe7;
         s->dma_ch[5].up = !!(value & CCR_CEN);
@@ -560,7 +560,7 @@ static void pxa2xx_lcdc_write(void *opaque, hwaddr offset,
 
     default:
     fail:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 }
 
@@ -1050,7 +1050,7 @@ PXA2xxLCDState *pxa2xx_lcdc_init(MemoryRegion *sysmem,
         s->dest_width = 4;
         break;
     default:
-        fprintf(stderr, "%s: Bad color depth\n", __FUNCTION__);
+        fprintf(stderr, "%s: Bad color depth\n", __func__);
         exit(1);
     }
 
diff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c
index 90e0865618..e7ac4f8789 100644
--- a/hw/display/qxl-render.c
+++ b/hw/display/qxl-render.c
@@ -78,7 +78,7 @@ void qxl_render_resize(PCIQXLDevice *qxl)
         qxl->guest_primary.bits_pp = 32;
         break;
     default:
-        fprintf(stderr, "%s: unhandled format: %x\n", __FUNCTION__,
+        fprintf(stderr, "%s: unhandled format: %x\n", __func__,
                 qxl->guest_primary.surface.format);
         qxl->guest_primary.bytes_pp = 4;
         qxl->guest_primary.bits_pp = 32;
@@ -248,7 +248,7 @@ static QEMUCursor *qxl_cursor(PCIQXLDevice *qxl, QXLCursor *cursor,
         break;
     default:
         fprintf(stderr, "%s: not implemented: type %d\n",
-                __FUNCTION__, cursor->header.type);
+                __func__, cursor->header.type);
         goto fail;
     }
     return c;
@@ -275,7 +275,7 @@ int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext)
     }
 
     if (qxl->debug > 1 && cmd->type != QXL_CURSOR_MOVE) {
-        fprintf(stderr, "%s", __FUNCTION__);
+        fprintf(stderr, "%s", __func__);
         qxl_log_cmd_cursor(qxl, cmd, ext->group_id);
         fprintf(stderr, "\n");
     }
diff --git a/hw/display/qxl.h b/hw/display/qxl.h
index f6556adb73..7d1b60014a 100644
--- a/hw/display/qxl.h
+++ b/hw/display/qxl.h
@@ -133,7 +133,7 @@ typedef struct PCIQXLDevice {
 #define PCI_QXL(obj) OBJECT_CHECK(PCIQXLDevice, (obj), TYPE_PCI_QXL)
 
 #define PANIC_ON(x) if ((x)) {                         \
-    printf("%s: PANIC %s failed\n", __FUNCTION__, #x); \
+    printf("%s: PANIC %s failed\n", __func__, #x); \
     abort();                                           \
 }
 
diff --git a/hw/display/tc6393xb.c b/hw/display/tc6393xb.c
index 74d10af3d4..79f161740a 100644
--- a/hw/display/tc6393xb.c
+++ b/hw/display/tc6393xb.c
@@ -148,7 +148,7 @@ static void tc6393xb_gpio_set(void *opaque, int line, int level)
 //    TC6393xbState *s = opaque;
 
     if (line > TC6393XB_GPIOS) {
-        printf("%s: No GPIO pin %i\n", __FUNCTION__, line);
+        printf("%s: No GPIO pin %i\n", __func__, line);
         return;
     }
 
diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c
index df8b78f6f4..6dc98d0497 100644
--- a/hw/display/xenfb.c
+++ b/hw/display/xenfb.c
@@ -643,7 +643,7 @@ static void xenfb_guest_copy(struct XenFB *xenfb, int x, int y, int w, int h)
     }
     if (oops) /* should not happen */
         xen_pv_printf(&xenfb->c.xendev, 0, "%s: oops: convert %d -> %d bpp?\n",
-                      __FUNCTION__, xenfb->depth, bpp);
+                      __func__, xenfb->depth, bpp);
 
     dpy_gfx_update(xenfb->con, x, y, w, h);
 }
diff --git a/hw/dma/omap_dma.c b/hw/dma/omap_dma.c
index 45dfe7aadd..abd18c67ea 100644
--- a/hw/dma/omap_dma.c
+++ b/hw/dma/omap_dma.c
@@ -161,7 +161,7 @@ static void omap_dma_channel_load(struct omap_dma_channel_s *ch)
     a->pck_element = 0;
 
     if (unlikely(!ch->elements || !ch->frames)) {
-        printf("%s: bad DMA request\n", __FUNCTION__);
+        printf("%s: bad DMA request\n", __func__);
         return;
     }
 
@@ -519,7 +519,7 @@ static void omap_dma_transfer_setup(struct soc_dma_ch_s *dma)
         continue;
 #endif
         printf("%s: Bus time-out in DMA%i operation\n",
-                        __FUNCTION__, dma->num);
+                        __func__, dma->num);
     }
 
     min_elems = INT_MAX;
@@ -879,14 +879,14 @@ static int omap_dma_ch_reg_write(struct omap_dma_s *s,
         ch->pack[0] = (value & 0x0040) >> 6;
         ch->port[0] = (enum omap_dma_port) ((value & 0x003c) >> 2);
         if (ch->port[0] >= __omap_dma_port_last)
-            printf("%s: invalid DMA port %i\n", __FUNCTION__,
+            printf("%s: invalid DMA port %i\n", __func__,
                             ch->port[0]);
         if (ch->port[1] >= __omap_dma_port_last)
-            printf("%s: invalid DMA port %i\n", __FUNCTION__,
+            printf("%s: invalid DMA port %i\n", __func__,
                             ch->port[1]);
         ch->data_type = 1 << (value & 3);
         if ((value & 3) == 3) {
-            printf("%s: bad data_type for DMA channel\n", __FUNCTION__);
+            printf("%s: bad data_type for DMA channel\n", __func__);
             ch->data_type >>= 1;
         }
         break;
@@ -1440,7 +1440,7 @@ static int omap_dma_sys_read(struct omap_dma_s *s, int offset,
     case 0x482:	/* DMA_PCh1_SR */
     case 0x4c0:	/* DMA_PChD_SR_0 */
         printf("%s: Physical Channel Status Registers not implemented.\n",
-               __FUNCTION__);
+               __func__);
         *ret = 0xff;
         break;
 
@@ -1898,13 +1898,13 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
             omap_dma_reset(s->dma);
         s->ocp = value & 0x3321;
         if (((s->ocp >> 12) & 3) == 3)				/* MIDLEMODE */
-            fprintf(stderr, "%s: invalid DMA power mode\n", __FUNCTION__);
+            fprintf(stderr, "%s: invalid DMA power mode\n", __func__);
         return;
 
     case 0x78:	/* DMA4_GCR */
         s->gcr = value & 0x00ff00ff;
 	if ((value & 0xff) == 0x00)		/* MAX_CHANNEL_FIFO_DEPTH */
-            fprintf(stderr, "%s: wrong FIFO depth in GCR\n", __FUNCTION__);
+            fprintf(stderr, "%s: wrong FIFO depth in GCR\n", __func__);
         return;
 
     case 0x80 ... 0xfff:
@@ -1935,7 +1935,7 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->src_sync = (value >> 24) & 1;	/* XXX For CamDMA must be 1 */
         if (ch->buf_disable && !ch->src_sync)
             fprintf(stderr, "%s: Buffering disable is not allowed in "
-                            "destination synchronised mode\n", __FUNCTION__);
+                            "destination synchronised mode\n", __func__);
         ch->prefetch = (value >> 23) & 1;
         ch->bs = (value >> 18) & 1;
         ch->transparent_copy = (value >> 17) & 1;
@@ -1947,7 +1947,7 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->fs = (value & 0x0020) >> 5;
         if (ch->fs && ch->bs && ch->mode[0] && ch->mode[1])
             fprintf(stderr, "%s: For a packet transfer at least one port "
-                            "must be constant-addressed\n", __FUNCTION__);
+                            "must be constant-addressed\n", __func__);
         ch->sync = (value & 0x001f) | ((value >> 14) & 0x0060);
         /* XXX must be 0x01 for CamDMA */
 
@@ -1978,7 +1978,7 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->endian_lock[1] =(value >> 18) & 1;
         if (ch->endian[0] != ch->endian[1])
             fprintf(stderr, "%s: DMA endianness conversion enable attempt\n",
-                            __FUNCTION__);
+                            __func__);
         ch->write_mode = (value >> 16) & 3;
         ch->burst[1] = (value & 0xc000) >> 14;
         ch->pack[1] = (value & 0x2000) >> 13;
@@ -1988,10 +1988,10 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->translate[0] = (value & 0x003c) >> 2;
         if (ch->translate[0] | ch->translate[1])
             fprintf(stderr, "%s: bad MReqAddressTranslate sideband signal\n",
-                            __FUNCTION__);
+                            __func__);
         ch->data_type = 1 << (value & 3);
         if ((value & 3) == 3) {
-            printf("%s: bad data_type for DMA channel\n", __FUNCTION__);
+            printf("%s: bad data_type for DMA channel\n", __func__);
             ch->data_type >>= 1;
         }
         break;
diff --git a/hw/dma/pxa2xx_dma.c b/hw/dma/pxa2xx_dma.c
index 634a4328f0..f4eb26cf17 100644
--- a/hw/dma/pxa2xx_dma.c
+++ b/hw/dma/pxa2xx_dma.c
@@ -169,7 +169,7 @@ static inline void pxa2xx_dma_descriptor_fetch(
         s->chan[ch].dest &= ~3;
 
     if (s->chan[ch].cmd & (DCMD_CMPEN | DCMD_FLYBYS | DCMD_FLYBYT))
-        printf("%s: unsupported mode in channel %i\n", __FUNCTION__, ch);
+        printf("%s: unsupported mode in channel %i\n", __func__, ch);
 
     if (s->chan[ch].cmd & DCMD_STARTIRQEN)
         s->chan[ch].state |= DCSR_STARTINTR;
@@ -264,7 +264,7 @@ static uint64_t pxa2xx_dma_read(void *opaque, hwaddr offset,
     unsigned int channel;
 
     if (size != 4) {
-        hw_error("%s: Bad access width\n", __FUNCTION__);
+        hw_error("%s: Bad access width\n", __func__);
         return 5;
     }
 
@@ -312,7 +312,7 @@ static uint64_t pxa2xx_dma_read(void *opaque, hwaddr offset,
         }
     }
 
-    hw_error("%s: Bad offset 0x" TARGET_FMT_plx "\n", __FUNCTION__, offset);
+    hw_error("%s: Bad offset 0x" TARGET_FMT_plx "\n", __func__, offset);
     return 7;
 }
 
@@ -323,7 +323,7 @@ static void pxa2xx_dma_write(void *opaque, hwaddr offset,
     unsigned int channel;
 
     if (size != 4) {
-        hw_error("%s: Bad access width\n", __FUNCTION__);
+        hw_error("%s: Bad access width\n", __func__);
         return;
     }
 
@@ -337,7 +337,7 @@ static void pxa2xx_dma_write(void *opaque, hwaddr offset,
         if (value & DRCMR_MAPVLD)
             if ((value & DRCMR_CHLNUM) > s->channels)
                 hw_error("%s: Bad DMA channel %i\n",
-                         __FUNCTION__, (unsigned)value & DRCMR_CHLNUM);
+                         __func__, (unsigned)value & DRCMR_CHLNUM);
 
         s->req[channel] = value;
         break;
@@ -416,7 +416,7 @@ static void pxa2xx_dma_write(void *opaque, hwaddr offset,
             break;
         }
     fail:
-        hw_error("%s: Bad offset " TARGET_FMT_plx "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " TARGET_FMT_plx "\n", __func__, offset);
     }
 }
 
@@ -431,7 +431,7 @@ static void pxa2xx_dma_request(void *opaque, int req_num, int on)
     PXA2xxDMAState *s = opaque;
     int ch;
     if (req_num < 0 || req_num >= PXA2XX_DMA_NUM_REQUESTS)
-        hw_error("%s: Bad DMA request %i\n", __FUNCTION__, req_num);
+        hw_error("%s: Bad DMA request %i\n", __func__, req_num);
 
     if (!(s->req[req_num] & DRCMR_MAPVLD))
         return;
diff --git a/hw/gpio/max7310.c b/hw/gpio/max7310.c
index f82e3e6555..4c203ef5c6 100644
--- a/hw/gpio/max7310.c
+++ b/hw/gpio/max7310.c
@@ -67,7 +67,7 @@ static int max7310_rx(I2CSlave *i2c)
 
     default:
 #ifdef VERBOSE
-        printf("%s: unknown register %02x\n", __FUNCTION__, s->command);
+        printf("%s: unknown register %02x\n", __func__, s->command);
 #endif
         break;
     }
@@ -82,7 +82,7 @@ static int max7310_tx(I2CSlave *i2c, uint8_t data)
 
     if (s->len ++ > 1) {
 #ifdef VERBOSE
-        printf("%s: message too long (%i bytes)\n", __FUNCTION__, s->len);
+        printf("%s: message too long (%i bytes)\n", __func__, s->len);
 #endif
         return 1;
     }
@@ -121,7 +121,7 @@ static int max7310_tx(I2CSlave *i2c, uint8_t data)
 	break;
     default:
 #ifdef VERBOSE
-        printf("%s: unknown register %02x\n", __FUNCTION__, s->command);
+        printf("%s: unknown register %02x\n", __func__, s->command);
 #endif
         return 1;
     }
@@ -141,7 +141,7 @@ static int max7310_event(I2CSlave *i2c, enum i2c_event event)
     case I2C_FINISH:
 #ifdef VERBOSE
         if (s->len == 1)
-            printf("%s: message too short (%i bytes)\n", __FUNCTION__, s->len);
+            printf("%s: message too short (%i bytes)\n", __func__, s->len);
 #endif
         break;
     default:
diff --git a/hw/gpio/omap_gpio.c b/hw/gpio/omap_gpio.c
index 17891e2d0f..08472193b5 100644
--- a/hw/gpio/omap_gpio.c
+++ b/hw/gpio/omap_gpio.c
@@ -399,7 +399,7 @@ static void omap2_gpio_module_write(void *opaque, hwaddr addr,
 
     case 0x10:	/* GPIO_SYSCONFIG */
         if (((value >> 3) & 3) == 3)
-            fprintf(stderr, "%s: bad IDLEMODE value\n", __FUNCTION__);
+            fprintf(stderr, "%s: bad IDLEMODE value\n", __func__);
         if (value & 2)
             omap2_gpio_module_reset(s);
         s->config[0] = value & 0x1d;
diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c
index 12264ee0f5..26e3e5ebf6 100644
--- a/hw/i2c/omap_i2c.c
+++ b/hw/i2c/omap_i2c.c
@@ -341,12 +341,12 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
         }
         if ((value & (1 << 15)) && !(value & (1 << 10))) {	/* MST */
             fprintf(stderr, "%s: I^2C slave mode not supported\n",
-                            __FUNCTION__);
+                            __func__);
             break;
         }
         if ((value & (1 << 15)) && value & (1 << 8)) {		/* XA */
             fprintf(stderr, "%s: 10-bit addressing mode not supported\n",
-                            __FUNCTION__);
+                            __func__);
             break;
         }
         if ((value & (1 << 15)) && value & (1 << 0)) {		/* STT */
@@ -393,7 +393,7 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
                 omap_i2c_interrupts_update(s);
             }
         if (value & (1 << 15))					/* ST_EN */
-            fprintf(stderr, "%s: System Test not supported\n", __FUNCTION__);
+            fprintf(stderr, "%s: System Test not supported\n", __func__);
         break;
 
     default:
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index 32d1296a64..c25e293d88 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -1053,7 +1053,7 @@ static void process_ncq_command(AHCIState *s, int port, uint8_t *cmd_fis,
     g_assert(is_ncq(ncq_fis->command));
     if (ncq_tfs->used) {
         /* error - already in use */
-        fprintf(stderr, "%s: tag %d already used\n", __FUNCTION__, tag);
+        fprintf(stderr, "%s: tag %d already used\n", __func__, tag);
         return;
     }
 
diff --git a/hw/ide/microdrive.c b/hw/ide/microdrive.c
index 17917c0b30..3090254783 100644
--- a/hw/ide/microdrive.c
+++ b/hw/ide/microdrive.c
@@ -156,7 +156,7 @@ static uint8_t md_attr_read(PCMCIACardState *card, uint32_t at)
         return 0x00;
 #ifdef VERBOSE
     default:
-        printf("%s: Bad attribute space register %02x\n", __FUNCTION__, at);
+        printf("%s: Bad attribute space register %02x\n", __func__, at);
 #endif
     }
 
@@ -193,7 +193,7 @@ static void md_attr_write(PCMCIACardState *card, uint32_t at, uint8_t value)
     case 0x06:	/* Socket and Copy Register */
         break;
     default:
-        printf("%s: Bad attribute space register %02x\n", __FUNCTION__, at);
+        printf("%s: Bad attribute space register %02x\n", __func__, at);
     }
 }
 
diff --git a/hw/input/lm832x.c b/hw/input/lm832x.c
index 2340523da0..d39953126b 100644
--- a/hw/input/lm832x.c
+++ b/hw/input/lm832x.c
@@ -239,7 +239,7 @@ static uint8_t lm_kbd_read(LM823KbdState *s, int reg, int byte)
 
     default:
         lm_kbd_error(s, ERR_CMDUNK);
-        fprintf(stderr, "%s: unknown command %02x\n", __FUNCTION__, reg);
+        fprintf(stderr, "%s: unknown command %02x\n", __func__, reg);
         return 0x00;
     }
 
@@ -331,7 +331,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value)
         if ((value & 3) && (value & 3) != 3) {
             lm_kbd_error(s, ERR_BADPAR);
             fprintf(stderr, "%s: invalid clock setting in RCPWM\n",
-                            __FUNCTION__);
+                            __func__);
         }
         /* TODO: Validate that the command is only issued once */
         break;
@@ -378,7 +378,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value)
         break;
     default:
         lm_kbd_error(s, ERR_CMDUNK);
-        fprintf(stderr, "%s: unknown command %02x\n", __FUNCTION__, reg);
+        fprintf(stderr, "%s: unknown command %02x\n", __func__, reg);
         break;
     }
 }
diff --git a/hw/input/pxa2xx_keypad.c b/hw/input/pxa2xx_keypad.c
index 2b70bbb95c..93db9ed25b 100644
--- a/hw/input/pxa2xx_keypad.c
+++ b/hw/input/pxa2xx_keypad.c
@@ -231,7 +231,7 @@ static uint64_t pxa2xx_keypad_read(void *opaque, hwaddr offset,
         return s->kpkdi;
         break;
     default:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 
     return 0;
@@ -278,7 +278,7 @@ static void pxa2xx_keypad_write(void *opaque, hwaddr offset,
         break;
 
     default:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 }
 
@@ -326,7 +326,7 @@ void pxa27x_register_keypad(PXA2xxKeyPadState *kp,
                             const struct keymap *map, int size)
 {
     if(!map || size < 0x80) {
-        fprintf(stderr, "%s - No PXA keypad map defined\n", __FUNCTION__);
+        fprintf(stderr, "%s - No PXA keypad map defined\n", __func__);
         exit(-1);
     }
 
diff --git a/hw/input/tsc2005.c b/hw/input/tsc2005.c
index eb5320af40..7990954b6c 100644
--- a/hw/input/tsc2005.c
+++ b/hw/input/tsc2005.c
@@ -201,7 +201,7 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data)
         if (s->enabled != !(data & 0x4000)) {
             s->enabled = !(data & 0x4000);
             fprintf(stderr, "%s: touchscreen sense %sabled\n",
-                            __FUNCTION__, s->enabled ? "en" : "dis");
+                            __func__, s->enabled ? "en" : "dis");
             if (s->busy && !s->enabled)
                 timer_del(s->timer);
             s->busy = s->busy && s->enabled;
@@ -210,7 +210,7 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data)
         s->timing[0] = data & 0x1fff;
         if ((s->timing[0] >> 11) == 3)
             fprintf(stderr, "%s: illegal conversion clock setting\n",
-                            __FUNCTION__);
+                            __func__);
         break;
     case 0xd:	/* CFR1 */
         s->timing[1] = data & 0xf07;
@@ -222,7 +222,7 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data)
 
     default:
         fprintf(stderr, "%s: write into read-only register %x\n",
-                        __FUNCTION__, reg);
+                        __func__, reg);
     }
 }
 
@@ -338,7 +338,7 @@ static uint8_t tsc2005_txrx_word(void *opaque, uint8_t value)
                 if (s->enabled != !(value & 1)) {
                     s->enabled = !(value & 1);
                     fprintf(stderr, "%s: touchscreen sense %sabled\n",
-                                    __FUNCTION__, s->enabled ? "en" : "dis");
+                                    __func__, s->enabled ? "en" : "dis");
                     if (s->busy && !s->enabled)
                         timer_del(s->timer);
                     s->busy = s->busy && s->enabled;
diff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c
index b068343771..d4b19c1825 100644
--- a/hw/input/tsc210x.c
+++ b/hw/input/tsc210x.c
@@ -287,7 +287,7 @@ static void tsc2102_audio_rate_update(TSC210xState *s)
                         rate->fsref == ((s->audio_ctrl3 >> 13) & 1))/* REFFS */
             break;
     if (!rate->rate) {
-        printf("%s: unknown sampling rate configured\n", __FUNCTION__);
+        printf("%s: unknown sampling rate configured\n", __func__);
         return;
     }
 
@@ -913,7 +913,7 @@ uint32_t tsc210x_txrx(void *opaque, uint32_t value, int len)
     uint32_t ret = 0;
 
     if (len != 16)
-        hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len);
+        hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len);
 
     /* TODO: sequential reads etc - how do we make sure the host doesn't
      * unintentionally read out a conversion result from a register while
diff --git a/hw/intc/omap_intc.c b/hw/intc/omap_intc.c
index ccdda89dab..6844c1aa83 100644
--- a/hw/intc/omap_intc.c
+++ b/hw/intc/omap_intc.c
@@ -540,7 +540,7 @@ static void omap2_inth_write(void *opaque, hwaddr addr,
          * for every register, see Chapter 3 and 4 for privileged mode.  */
         if (value & 1)
             fprintf(stderr, "%s: protection mode enable attempt\n",
-                            __FUNCTION__);
+                            __func__);
         return;
 
     case 0x50:	/* INTC_IDLE */
diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
index 50dc83df77..72bf674403 100644
--- a/hw/isa/vt82c686.c
+++ b/hw/isa/vt82c686.c
@@ -30,7 +30,7 @@
 //#define DEBUG_VT82C686B
 
 #ifdef DEBUG_VT82C686B
-#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
+#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
 #else
 #define DPRINTF(fmt, ...)
 #endif
diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
index e8b2eef688..41a7690560 100644
--- a/hw/mips/gt64xxx_pci.c
+++ b/hw/mips/gt64xxx_pci.c
@@ -33,7 +33,7 @@
 //#define DEBUG
 
 #ifdef DEBUG
-#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
+#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
 #else
 #define DPRINTF(fmt, ...)
 #endif
diff --git a/hw/misc/cbus.c b/hw/misc/cbus.c
index 677274ce3e..25e337ea77 100644
--- a/hw/misc/cbus.c
+++ b/hw/misc/cbus.c
@@ -62,7 +62,7 @@ static void cbus_io(CBusPriv *s)
         s->slave[s->addr]->io(s->slave[s->addr]->opaque,
                         s->rw, s->reg, &s->val);
     else
-        hw_error("%s: bad slave address %i\n", __FUNCTION__, s->addr);
+        hw_error("%s: bad slave address %i\n", __func__, s->addr);
 }
 
 static void cbus_cycle(CBusPriv *s)
@@ -299,7 +299,7 @@ static inline uint16_t retu_read(CBusRetu *s, int reg)
         return 0x0000;
 
     default:
-        hw_error("%s: bad register %02x\n", __FUNCTION__, reg);
+        hw_error("%s: bad register %02x\n", __func__, reg);
     }
 }
 
@@ -372,7 +372,7 @@ static inline void retu_write(CBusRetu *s, int reg, uint16_t val)
         break;
 
     default:
-        hw_error("%s: bad register %02x\n", __FUNCTION__, reg);
+        hw_error("%s: bad register %02x\n", __func__, reg);
     }
 }
 
@@ -538,7 +538,7 @@ static inline uint16_t tahvo_read(CBusTahvo *s, int reg)
         return 0x0000;
 
     default:
-        hw_error("%s: bad register %02x\n", __FUNCTION__, reg);
+        hw_error("%s: bad register %02x\n", __func__, reg);
     }
 }
 
@@ -567,7 +567,7 @@ static inline void tahvo_write(CBusTahvo *s, int reg, uint16_t val)
         if (s->backlight != (val & 0x7f)) {
             s->backlight = val & 0x7f;
             printf("%s: LCD backlight now at %i / 127\n",
-                            __FUNCTION__, s->backlight);
+                            __func__, s->backlight);
         }
         break;
 
@@ -588,7 +588,7 @@ static inline void tahvo_write(CBusTahvo *s, int reg, uint16_t val)
         break;
 
     default:
-        hw_error("%s: bad register %02x\n", __FUNCTION__, reg);
+        hw_error("%s: bad register %02x\n", __func__, reg);
     }
 }
 
diff --git a/hw/misc/omap_clk.c b/hw/misc/omap_clk.c
index 19151d07d6..9ea14186d4 100644
--- a/hw/misc/omap_clk.c
+++ b/hw/misc/omap_clk.c
@@ -1109,7 +1109,7 @@ struct clk *omap_findclk(struct omap_mpu_state_s *mpu, const char *name)
     for (i = mpu->clks; i->name; i ++)
         if (!strcmp(i->name, name) || (i->alias && !strcmp(i->alias, name)))
             return i;
-    hw_error("%s: %s not found\n", __FUNCTION__, name);
+    hw_error("%s: %s not found\n", __func__, name);
 }
 
 void omap_clk_get(struct clk *clk)
@@ -1120,7 +1120,7 @@ void omap_clk_get(struct clk *clk)
 void omap_clk_put(struct clk *clk)
 {
     if (!(clk->usecount --))
-        hw_error("%s: %s is not in use\n", __FUNCTION__, clk->name);
+        hw_error("%s: %s is not in use\n", __func__, clk->name);
 }
 
 static void omap_clk_update(struct clk *clk)
diff --git a/hw/misc/omap_gpmc.c b/hw/misc/omap_gpmc.c
index 67d8e2f023..84f9e4c612 100644
--- a/hw/misc/omap_gpmc.c
+++ b/hw/misc/omap_gpmc.c
@@ -643,7 +643,7 @@ static void omap_gpmc_write(void *opaque, hwaddr addr,
     case 0x010:	/* GPMC_SYSCONFIG */
         if ((value >> 3) == 0x3)
             fprintf(stderr, "%s: bad SDRAM idle mode %"PRIi64"\n",
-                            __FUNCTION__, value >> 3);
+                            __func__, value >> 3);
         if (value & 2)
             omap_gpmc_reset(s);
         s->sysconfig = value & 0x19;
@@ -806,7 +806,7 @@ static void omap_gpmc_write(void *opaque, hwaddr addr,
         break;
     case 0x230:	/* GPMC_TESTMODE_CTRL */
         if (value & 7)
-            fprintf(stderr, "%s: test mode enable attempt\n", __FUNCTION__);
+            fprintf(stderr, "%s: test mode enable attempt\n", __func__);
         break;
 
     default:
@@ -864,7 +864,7 @@ void omap_gpmc_attach(struct omap_gpmc_s *s, int cs, MemoryRegion *iomem)
     assert(iomem);
 
     if (cs < 0 || cs >= 8) {
-        fprintf(stderr, "%s: bad chip-select %i\n", __FUNCTION__, cs);
+        fprintf(stderr, "%s: bad chip-select %i\n", __func__, cs);
         exit(-1);
     }
     f = &s->cs_file[cs];
diff --git a/hw/misc/omap_l4.c b/hw/misc/omap_l4.c
index 88c533a0fe..96fc057b4e 100644
--- a/hw/misc/omap_l4.c
+++ b/hw/misc/omap_l4.c
@@ -126,7 +126,7 @@ struct omap_target_agent_s *omap_l4ta_get(struct omap_l4_s *bus,
             break;
         }
     if (!ta) {
-        fprintf(stderr, "%s: bad target agent (%i)\n", __FUNCTION__, cs);
+        fprintf(stderr, "%s: bad target agent (%i)\n", __func__, cs);
         exit(-1);
     }
 
@@ -151,7 +151,7 @@ hwaddr omap_l4_attach(struct omap_target_agent_s *ta,
     hwaddr base;
 
     if (region < 0 || region >= ta->regions) {
-        fprintf(stderr, "%s: bad io region (%i)\n", __FUNCTION__, region);
+        fprintf(stderr, "%s: bad io region (%i)\n", __func__, region);
         exit(-1);
     }
 
diff --git a/hw/misc/omap_sdrc.c b/hw/misc/omap_sdrc.c
index dff37ecaf9..7b38c5568c 100644
--- a/hw/misc/omap_sdrc.c
+++ b/hw/misc/omap_sdrc.c
@@ -109,7 +109,7 @@ static void omap_sdrc_write(void *opaque, hwaddr addr,
     case 0x10:	/* SDRC_SYSCONFIG */
         if ((value >> 3) != 0x2)
             fprintf(stderr, "%s: bad SDRAM idle mode %i\n",
-                    __FUNCTION__, (unsigned)value >> 3);
+                    __func__, (unsigned)value >> 3);
         if (value & 2)
             omap_sdrc_reset(s);
         s->config = value & 0x18;
diff --git a/hw/misc/omap_tap.c b/hw/misc/omap_tap.c
index e6ea8ee235..3f595e8df7 100644
--- a/hw/misc/omap_tap.c
+++ b/hw/misc/omap_tap.c
@@ -44,7 +44,7 @@ static uint64_t omap_tap_read(void *opaque, hwaddr addr,
         case omap3430:
             return 0x1b7ae02f;	/* ES 2 */
         default:
-            hw_error("%s: Bad mpu model\n", __FUNCTION__);
+            hw_error("%s: Bad mpu model\n", __func__);
         }
 
     case 0x208:	/* PRODUCTION_ID_reg for OMAP2 */
@@ -61,7 +61,7 @@ static uint64_t omap_tap_read(void *opaque, hwaddr addr,
         case omap3430:
             return 0x000000f0;
         default:
-            hw_error("%s: Bad mpu model\n", __FUNCTION__);
+            hw_error("%s: Bad mpu model\n", __func__);
         }
 
     case 0x20c:
@@ -75,7 +75,7 @@ static uint64_t omap_tap_read(void *opaque, hwaddr addr,
         case omap3430:
             return 0xcafeb7ae;	/* ES 2 */
         default:
-            hw_error("%s: Bad mpu model\n", __FUNCTION__);
+            hw_error("%s: Bad mpu model\n", __func__);
         }
 
     case 0x218:	/* DIE_ID_reg */
diff --git a/hw/misc/tmp105.c b/hw/misc/tmp105.c
index 04e83787d4..9e22d64e36 100644
--- a/hw/misc/tmp105.c
+++ b/hw/misc/tmp105.c
@@ -131,7 +131,7 @@ static void tmp105_write(TMP105State *s)
 
     case TMP105_REG_CONFIG:
         if (s->buf[0] & ~s->config & (1 << 0))			/* SD */
-            printf("%s: TMP105 shutdown\n", __FUNCTION__);
+            printf("%s: TMP105 shutdown\n", __func__);
         s->config = s->buf[0];
         s->faults = tmp105_faultq[(s->config >> 3) & 3];	/* F */
         tmp105_alarm_update(s);
diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
index 89133a9dd3..1767d2af61 100644
--- a/hw/pci-host/bonito.c
+++ b/hw/pci-host/bonito.c
@@ -50,7 +50,7 @@
 //#define DEBUG_BONITO
 
 #ifdef DEBUG_BONITO
-#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
+#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
 #else
 #define DPRINTF(fmt, ...)
 #endif
diff --git a/hw/sd/pxa2xx_mmci.c b/hw/sd/pxa2xx_mmci.c
index 3deccf02c9..0d4b88c609 100644
--- a/hw/sd/pxa2xx_mmci.c
+++ b/hw/sd/pxa2xx_mmci.c
@@ -330,7 +330,7 @@ static uint64_t pxa2xx_mmci_read(void *opaque, hwaddr offset, unsigned size)
     case MMC_BLKS_REM:
         return s->numblk;
     default:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 
     return 0;
@@ -369,7 +369,7 @@ static void pxa2xx_mmci_write(void *opaque,
     case MMC_SPI:
         s->spi = value & 0xf;
         if (value & SPI_SPI_MODE)
-            printf("%s: attempted to use card in SPI mode\n", __FUNCTION__);
+            printf("%s: attempted to use card in SPI mode\n", __func__);
         break;
 
     case MMC_CMDAT:
@@ -442,7 +442,7 @@ static void pxa2xx_mmci_write(void *opaque,
         break;
 
     default:
-        hw_error("%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);
+        hw_error("%s: Bad offset " REG_FMT "\n", __func__, offset);
     }
 }
 
diff --git a/hw/ssi/omap_spi.c b/hw/ssi/omap_spi.c
index 22034656b8..34163e5646 100644
--- a/hw/ssi/omap_spi.c
+++ b/hw/ssi/omap_spi.c
@@ -295,10 +295,10 @@ static void omap_mcspi_write(void *opaque, hwaddr addr,
         if ((value ^ s->ch[ch].config) & (3 << 14))	/* DMAR | DMAW */
             omap_mcspi_dmarequest_update(s->ch + ch);
         if (((value >> 12) & 3) == 3)			/* TRM */
-            fprintf(stderr, "%s: invalid TRM value (3)\n", __FUNCTION__);
+            fprintf(stderr, "%s: invalid TRM value (3)\n", __func__);
         if (((value >> 7) & 0x1f) < 3)			/* WL */
             fprintf(stderr, "%s: invalid WL value (%" PRIx64 ")\n",
-                            __FUNCTION__, (value >> 7) & 0x1f);
+                            __func__, (value >> 7) & 0x1f);
         s->ch[ch].config = value & 0x7fffff;
         break;
 
@@ -367,7 +367,7 @@ void omap_mcspi_attach(struct omap_mcspi_s *s,
                 int chipselect)
 {
     if (chipselect < 0 || chipselect >= s->chnum)
-        hw_error("%s: Bad chipselect %i\n", __FUNCTION__, chipselect);
+        hw_error("%s: Bad chipselect %i\n", __func__, chipselect);
 
     s->ch[chipselect].txrx = txrx;
     s->ch[chipselect].opaque = opaque;
diff --git a/hw/timer/omap_gptimer.c b/hw/timer/omap_gptimer.c
index 6d7c8a396f..ae2dc99832 100644
--- a/hw/timer/omap_gptimer.c
+++ b/hw/timer/omap_gptimer.c
@@ -357,7 +357,7 @@ static void omap_gp_timer_write(void *opaque, hwaddr addr,
         s->config = value & 0x33d;
         if (((value >> 3) & 3) == 3)				/* IDLEMODE */
             fprintf(stderr, "%s: illegal IDLEMODE value in TIOCP_CFG\n",
-                            __FUNCTION__);
+                            __func__);
         if (value & 2)						/* SOFTRESET */
             omap_gp_timer_reset(s);
         break;
@@ -395,10 +395,10 @@ static void omap_gp_timer_write(void *opaque, hwaddr addr,
         s->st = (value >> 0) & 1;
         if (s->inout && s->trigger != gpt_trigger_none)
             fprintf(stderr, "%s: GP timer pin must be an output "
-                            "for this trigger mode\n", __FUNCTION__);
+                            "for this trigger mode\n", __func__);
         if (!s->inout && s->capture != gpt_capture_none)
             fprintf(stderr, "%s: GP timer pin must be an input "
-                            "for this capture mode\n", __FUNCTION__);
+                            "for this capture mode\n", __func__);
         if (s->trigger == gpt_trigger_none)
             omap_gp_timer_out(s, s->scpwm);
         /* TODO: make sure this doesn't overflow 32-bits */
diff --git a/hw/timer/twl92230.c b/hw/timer/twl92230.c
index c0aa8ae3de..87e334af24 100644
--- a/hw/timer/twl92230.c
+++ b/hw/timer/twl92230.c
@@ -403,7 +403,7 @@ static uint8_t menelaus_read(void *opaque, uint8_t addr)
 
     default:
 #ifdef VERBOSE
-        printf("%s: unknown register %02x\n", __FUNCTION__, addr);
+        printf("%s: unknown register %02x\n", __func__, addr);
 #endif
         break;
     }
@@ -615,7 +615,7 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value)
         rtc_badness:
         default:
             fprintf(stderr, "%s: bad RTC_UPDATE value %02x\n",
-                            __FUNCTION__, value);
+                            __func__, value);
             s->status |= 1 << 10;				/* RTCERR */
             menelaus_update(s);
         }
@@ -708,7 +708,7 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value)
 
     default:
 #ifdef VERBOSE
-        printf("%s: unknown register %02x\n", __FUNCTION__, addr);
+        printf("%s: unknown register %02x\n", __func__, addr);
 #endif
     }
 }
diff --git a/hw/usb/desc.c b/hw/usb/desc.c
index c36bf30e4f..85c15addc5 100644
--- a/hw/usb/desc.c
+++ b/hw/usb/desc.c
@@ -688,7 +688,7 @@ int usb_desc_get_descriptor(USBDevice *dev, USBPacket *p,
         break;
 
     default:
-        fprintf(stderr, "%s: %d unknown type %d (len %zd)\n", __FUNCTION__,
+        fprintf(stderr, "%s: %d unknown type %d (len %zd)\n", __func__,
                 dev->addr, type, len);
         break;
     }
diff --git a/hw/usb/dev-bluetooth.c b/hw/usb/dev-bluetooth.c
index 443e3c301d..0bbceaea0b 100644
--- a/hw/usb/dev-bluetooth.c
+++ b/hw/usb/dev-bluetooth.c
@@ -274,13 +274,13 @@ static void usb_bt_fifo_enqueue(struct usb_hci_in_fifo_s *fifo,
     if (off <= DFIFO_LEN_MASK) {
         if (off + len > DFIFO_LEN_MASK + 1 &&
                         (fifo->dsize = off + len) > (DFIFO_LEN_MASK + 1) * 2) {
-            fprintf(stderr, "%s: can't alloc %i bytes\n", __FUNCTION__, len);
+            fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
             exit(-1);
         }
         buf = fifo->data + off;
     } else {
         if (fifo->dlen > fifo->dsize) {
-            fprintf(stderr, "%s: can't alloc %i bytes\n", __FUNCTION__, len);
+            fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
             exit(-1);
         }
         buf = fifo->data + off - fifo->dsize;
diff --git a/hw/usb/hcd-musb.c b/hw/usb/hcd-musb.c
index 27d9d0bd82..d70a91a58c 100644
--- a/hw/usb/hcd-musb.c
+++ b/hw/usb/hcd-musb.c
@@ -253,8 +253,8 @@
 /* #define MUSB_DEBUG */
 
 #ifdef MUSB_DEBUG
-#define TRACE(fmt,...) fprintf(stderr, "%s@%d: " fmt "\n", __FUNCTION__, \
-                               __LINE__, ##__VA_ARGS__)
+#define TRACE(fmt, ...) fprintf(stderr, "%s@%d: " fmt "\n", __func__, \
+                                __LINE__, ##__VA_ARGS__)
 #else
 #define TRACE(...)
 #endif
diff --git a/hw/usb/tusb6010.c b/hw/usb/tusb6010.c
index 8f593a6fdb..2662c060ed 100644
--- a/hw/usb/tusb6010.c
+++ b/hw/usb/tusb6010.c
@@ -296,7 +296,7 @@ static uint32_t tusb_async_readb(void *opaque, hwaddr addr)
     }
 
     printf("%s: unknown register at %03x\n",
-                    __FUNCTION__, (int) (addr & 0xfff));
+                    __func__, (int) (addr & 0xfff));
     return 0;
 }
 
@@ -313,7 +313,7 @@ static uint32_t tusb_async_readh(void *opaque, hwaddr addr)
     }
 
     printf("%s: unknown register at %03x\n",
-                    __FUNCTION__, (int) (addr & 0xfff));
+                    __func__, (int) (addr & 0xfff));
     return 0;
 }
 
@@ -436,7 +436,7 @@ static uint32_t tusb_async_readw(void *opaque, hwaddr addr)
         return 0x54059adf;
     }
 
-    printf("%s: unknown register at %03x\n", __FUNCTION__, offset);
+    printf("%s: unknown register at %03x\n", __func__, offset);
     return 0;
 }
 
@@ -456,7 +456,7 @@ static void tusb_async_writeb(void *opaque, hwaddr addr,
 
     default:
         printf("%s: unknown register at %03x\n",
-                        __FUNCTION__, (int) (addr & 0xfff));
+                        __func__, (int) (addr & 0xfff));
         return;
     }
 }
@@ -477,7 +477,7 @@ static void tusb_async_writeh(void *opaque, hwaddr addr,
 
     default:
         printf("%s: unknown register at %03x\n",
-                        __FUNCTION__, (int) (addr & 0xfff));
+                        __func__, (int) (addr & 0xfff));
         return;
     }
 }
@@ -505,7 +505,7 @@ static void tusb_async_writew(void *opaque, hwaddr addr,
         s->dev_config = value;
         s->host_mode = (value & TUSB_DEV_CONF_USB_HOST_MODE);
         if (value & TUSB_DEV_CONF_PROD_TEST_MODE)
-            hw_error("%s: Product Test mode not allowed\n", __FUNCTION__);
+            hw_error("%s: Product Test mode not allowed\n", __func__);
         break;
 
     case TUSB_PHY_OTG_CTRL_ENABLE:
@@ -636,7 +636,7 @@ static void tusb_async_writew(void *opaque, hwaddr addr,
         break;
 
     default:
-        printf("%s: unknown register at %03x\n", __FUNCTION__, offset);
+        printf("%s: unknown register at %03x\n", __func__, offset);
         return;
     }
 }
diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c
index c89ced2e88..027f76fad1 100644
--- a/hw/xenpv/xen_domainbuild.c
+++ b/hw/xenpv/xen_domainbuild.c
@@ -25,22 +25,22 @@ static int xenstore_domain_mkdir(char *path)
     int i;
 
     if (!xs_mkdir(xenstore, 0, path)) {
-        fprintf(stderr, "%s: xs_mkdir %s: failed\n", __FUNCTION__, path);
+        fprintf(stderr, "%s: xs_mkdir %s: failed\n", __func__, path);
 	return -1;
     }
     if (!xs_set_permissions(xenstore, 0, path, perms_ro, 2)) {
-        fprintf(stderr, "%s: xs_set_permissions failed\n", __FUNCTION__);
+        fprintf(stderr, "%s: xs_set_permissions failed\n", __func__);
 	return -1;
     }
 
     for (i = 0; writable[i]; i++) {
         snprintf(subpath, sizeof(subpath), "%s/%s", path, writable[i]);
         if (!xs_mkdir(xenstore, 0, subpath)) {
-            fprintf(stderr, "%s: xs_mkdir %s: failed\n", __FUNCTION__, subpath);
+            fprintf(stderr, "%s: xs_mkdir %s: failed\n", __func__, subpath);
             return -1;
         }
         if (!xs_set_permissions(xenstore, 0, subpath, perms_rw, 2)) {
-            fprintf(stderr, "%s: xs_set_permissions failed\n", __FUNCTION__);
+            fprintf(stderr, "%s: xs_set_permissions failed\n", __func__);
             return -1;
         }
     }
@@ -158,7 +158,7 @@ static int xen_domain_watcher(void)
     char byte;
 
     if (pipe(fd) != 0) {
-        qemu_log("%s: Huh? pipe error: %s\n", __FUNCTION__, strerror(errno));
+        qemu_log("%s: Huh? pipe error: %s\n", __func__, strerror(errno));
         return -1;
     }
     if (fork() != 0)
@@ -190,7 +190,7 @@ static int xen_domain_watcher(void)
         case -1:
             if (errno == EINTR)
                 continue;
-            qemu_log("%s: Huh? read error: %s\n", __FUNCTION__, strerror(errno));
+            qemu_log("%s: Huh? read error: %s\n", __func__, strerror(errno));
             qemu_running = 0;
             break;
         case 0:
@@ -198,13 +198,13 @@ static int xen_domain_watcher(void)
             qemu_running = 0;
             break;
         default:
-            qemu_log("%s: Huh? data on the watch pipe?\n", __FUNCTION__);
+            qemu_log("%s: Huh? data on the watch pipe?\n", __func__);
             break;
         }
     }
 
     /* cleanup */
-    qemu_log("%s: destroy domain %d\n", __FUNCTION__, xen_domid);
+    qemu_log("%s: destroy domain %d\n", __func__, xen_domid);
     xc_domain_destroy(xen_xc, xen_domid);
     _exit(0);
 }
diff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c
index 31d2f25627..69a52a9f93 100644
--- a/hw/xenpv/xen_machine_pv.c
+++ b/hw/xenpv/xen_machine_pv.c
@@ -36,7 +36,7 @@ static void xen_init_pv(MachineState *machine)
 
     /* Initialize backend core & drivers */
     if (xen_be_init() != 0) {
-        fprintf(stderr, "%s: xen backend core setup failed\n", __FUNCTION__);
+        fprintf(stderr, "%s: xen backend core setup failed\n", __func__);
         exit(1);
     }
 
diff --git a/include/hw/arm/omap.h b/include/hw/arm/omap.h
index cac1b2ba43..b398607b06 100644
--- a/include/hw/arm/omap.h
+++ b/include/hw/arm/omap.h
@@ -960,10 +960,10 @@ void omap_mpu_wakeup(void *opaque, int irq, int req);
 
 # define OMAP_BAD_REG(paddr)		\
         fprintf(stderr, "%s: Bad register " OMAP_FMT_plx "\n",	\
-                        __FUNCTION__, paddr)
+                        __func__, paddr)
 # define OMAP_RO_REG(paddr)		\
         fprintf(stderr, "%s: Read-only register " OMAP_FMT_plx "\n",	\
-                        __FUNCTION__, paddr)
+                        __func__, paddr)
 
 /* OMAP-specific Linux bootloader tags for the ATAG_BOARD area
    (Board-specifc tags are not here)  */
@@ -998,13 +998,13 @@ enum {
 # ifdef TCMI_VERBOSE
 #  define OMAP_8B_REG(paddr)		\
         fprintf(stderr, "%s: 8-bit register " OMAP_FMT_plx "\n",	\
-                        __FUNCTION__, paddr)
+                        __func__, paddr)
 #  define OMAP_16B_REG(paddr)		\
         fprintf(stderr, "%s: 16-bit register " OMAP_FMT_plx "\n",	\
-                        __FUNCTION__, paddr)
+                        __func__, paddr)
 #  define OMAP_32B_REG(paddr)		\
         fprintf(stderr, "%s: 32-bit register " OMAP_FMT_plx "\n",	\
-                        __FUNCTION__, paddr)
+                        __func__, paddr)
 # else
 #  define OMAP_8B_REG(paddr)
 #  define OMAP_16B_REG(paddr)
diff --git a/include/hw/arm/sharpsl.h b/include/hw/arm/sharpsl.h
index 13981a6d03..5bf6db1fa2 100644
--- a/include/hw/arm/sharpsl.h
+++ b/include/hw/arm/sharpsl.h
@@ -7,7 +7,7 @@
 #define QEMU_SHARPSL_H
 
 #define zaurus_printf(format, ...)	\
-    fprintf(stderr, "%s: " format, __FUNCTION__, ##__VA_ARGS__)
+    fprintf(stderr, "%s: " format, __func__, ##__VA_ARGS__)
 
 /* zaurus.c */
 
diff --git a/memory_mapping.c b/memory_mapping.c
index a5d38552a6..775466f3a8 100644
--- a/memory_mapping.c
+++ b/memory_mapping.c
@@ -256,7 +256,7 @@ static void guest_phys_blocks_region_add(MemoryListener *listener,
 
 #ifdef DEBUG_GUEST_PHYS_REGION_ADD
     fprintf(stderr, "%s: target_start=" TARGET_FMT_plx " target_end="
-            TARGET_FMT_plx ": %s (count: %u)\n", __FUNCTION__, target_start,
+            TARGET_FMT_plx ": %s (count: %u)\n", __func__, target_start,
             target_end, predecessor ? "joined" : "added", g->list->num);
 #endif
 }
diff --git a/migration/block.c b/migration/block.c
index 9171f60028..0e1b90a365 100644
--- a/migration/block.c
+++ b/migration/block.c
@@ -621,7 +621,7 @@ static int flush_blks(QEMUFile *f)
     int ret = 0;
 
     DPRINTF("%s Enter submitted %d read_done %d transferred %d\n",
-            __FUNCTION__, block_mig_state.submitted, block_mig_state.read_done,
+            __func__, block_mig_state.submitted, block_mig_state.read_done,
             block_mig_state.transferred);
 
     blk_mig_lock();
@@ -648,7 +648,7 @@ static int flush_blks(QEMUFile *f)
     }
     blk_mig_unlock();
 
-    DPRINTF("%s Exit submitted %d read_done %d transferred %d\n", __FUNCTION__,
+    DPRINTF("%s Exit submitted %d read_done %d transferred %d\n", __func__,
             block_mig_state.submitted, block_mig_state.read_done,
             block_mig_state.transferred);
     return ret;
diff --git a/ui/cursor.c b/ui/cursor.c
index 2e2fe13fa6..f3da0cee79 100644
--- a/ui/cursor.c
+++ b/ui/cursor.c
@@ -19,11 +19,11 @@ static QEMUCursor *cursor_parse_xpm(const char *xpm[])
     if (sscanf(xpm[line], "%u %u %u %u",
                &width, &height, &colors, &chars) != 4) {
         fprintf(stderr, "%s: header parse error: \"%s\"\n",
-                __FUNCTION__, xpm[line]);
+                __func__, xpm[line]);
         return NULL;
     }
     if (chars != 1) {
-        fprintf(stderr, "%s: chars != 1 not supported\n", __FUNCTION__);
+        fprintf(stderr, "%s: chars != 1 not supported\n", __func__);
         return NULL;
     }
     line++;
@@ -41,7 +41,7 @@ static QEMUCursor *cursor_parse_xpm(const char *xpm[])
             }
         }
         fprintf(stderr, "%s: color parse error: \"%s\"\n",
-                __FUNCTION__, xpm[line]);
+                __func__, xpm[line]);
         return NULL;
     }
 
diff --git a/ui/spice-display.c b/ui/spice-display.c
index 0963c7825f..346fff44f4 100644
--- a/ui/spice-display.c
+++ b/ui/spice-display.c
@@ -630,13 +630,13 @@ static int interface_req_cursor_notification(QXLInstance *sin)
 
 static void interface_notify_update(QXLInstance *sin, uint32_t update_id)
 {
-    fprintf(stderr, "%s: abort()\n", __FUNCTION__);
+    fprintf(stderr, "%s: abort()\n", __func__);
     abort();
 }
 
 static int interface_flush_resources(QXLInstance *sin)
 {
-    fprintf(stderr, "%s: abort()\n", __FUNCTION__);
+    fprintf(stderr, "%s: abort()\n", __func__);
     abort();
     return 0;
 }
-- 
2.11.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Qemu-devel] [PATCH v1 2/8] tests: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:08 [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* Alistair Francis
  2017-09-26  0:08   ` Alistair Francis
@ 2017-09-26  0:08 ` Alistair Francis
  2017-09-26  0:55   ` Emilio G. Cota
  2017-09-26  0:08   ` Alistair Francis
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 35+ messages in thread
From: Alistair Francis @ 2017-09-26  0:08 UTC (permalink / raw)
  To: qemu-devel
  Cc: alistair.francis, alistair23, armbru, Michael S. Tsirkin,
	Igor Mammedov, Dr. David Alan Gilbert, Gerd Hoffmann, qemu-block

Replace a large number of the fprintf(stderr, "*\n" calls with
error_report(). The functions were renamed with these commands and then
compiler issues where manually fixed.

find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: qemu-block@nongnu.org
---

 tests/Makefile.include                 |   4 ++--
 tests/ahci-test.c                      |   3 ++-
 tests/atomic_add-bench.c               |   2 +-
 tests/bios-tables-test.c               |   5 +++--
 tests/check-qlit                       | Bin 0 -> 272776 bytes
 tests/i440fx-test.c                    |   8 ++++----
 tests/libqos/ahci.c                    |  10 ++++-----
 tests/libqos/libqos.c                  |   7 ++++---
 tests/libqos/malloc.c                  |  13 ++++++------
 tests/libqtest.c                       |  13 ++++++------
 tests/migration/stress.c               |  36 ++++++++++++++++-----------------
 tests/postcopy-test.c                  |   8 ++++----
 tests/qemu-iotests/socket_scm_helper.c |  11 +++++-----
 tests/qht-bench.c                      |   5 +++--
 tests/rcutorture.c                     |   5 +++--
 tests/tcg/linux-test.c                 |   2 +-
 tests/tcg/runcom.c                     |   6 +++---
 tests/tcg/test-i386-fprem.c            |   2 +-
 tests/tcg/test_path.c                  |   4 ++--
 tests/test-hmp.c                       |   5 +++--
 tests/test-rcu-list.c                  |   5 +++--
 tests/usb-hcd-ehci-test.c              |   2 +-
 tests/vhost-user-bridge.c              |  28 ++++++++++++-------------
 23 files changed, 97 insertions(+), 87 deletions(-)
 create mode 100755 tests/check-qlit

diff --git a/tests/Makefile.include b/tests/Makefile.include
index abc6707ef2..485d258b17 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -618,7 +618,7 @@ tests/test-vmstate$(EXESUF): tests/test-vmstate.o \
 	$(test-io-obj-y)
 tests/test-timed-average$(EXESUF): tests/test-timed-average.o $(test-util-obj-y)
 tests/test-base64$(EXESUF): tests/test-base64.o $(test-util-obj-y)
-tests/ptimer-test$(EXESUF): tests/ptimer-test.o tests/ptimer-test-stubs.o hw/core/ptimer.o
+tests/ptimer-test$(EXESUF): tests/ptimer-test.o tests/ptimer-test-stubs.o hw/core/ptimer.o $(test-util-obj-y)
 
 tests/test-logging$(EXESUF): tests/test-logging.o $(test-util-obj-y)
 
@@ -785,7 +785,7 @@ tests/postcopy-test$(EXESUF): tests/postcopy-test.o
 tests/vhost-user-test$(EXESUF): tests/vhost-user-test.o $(test-util-obj-y) \
 	$(qtest-obj-y) $(test-io-obj-y) $(libqos-virtio-obj-y) $(libqos-pc-obj-y) \
 	$(chardev-obj-y)
-tests/qemu-iotests/socket_scm_helper$(EXESUF): tests/qemu-iotests/socket_scm_helper.o
+tests/qemu-iotests/socket_scm_helper$(EXESUF): tests/qemu-iotests/socket_scm_helper.o $(test-util-obj-y)
 tests/test-qemu-opts$(EXESUF): tests/test-qemu-opts.o $(test-util-obj-y)
 tests/test-keyval$(EXESUF): tests/test-keyval.o $(test-util-obj-y) $(test-qapi-obj-y)
 tests/test-write-threshold$(EXESUF): tests/test-write-threshold.o $(test-block-obj-y)
diff --git a/tests/ahci-test.c b/tests/ahci-test.c
index 999121bb7c..0a0c7a459a 100644
--- a/tests/ahci-test.c
+++ b/tests/ahci-test.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include <getopt.h>
 
 #include "libqtest.h"
@@ -1859,7 +1860,7 @@ int main(int argc, char **argv)
             ahci_pedantic = 1;
             break;
         default:
-            fprintf(stderr, "Unrecognized ahci_test option.\n");
+            error_report("Unrecognized ahci_test option.");
             g_assert_not_reached();
         }
     }
diff --git a/tests/atomic_add-bench.c b/tests/atomic_add-bench.c
index caa1e8e689..41ba1600c0 100644
--- a/tests/atomic_add-bench.c
+++ b/tests/atomic_add-bench.c
@@ -29,7 +29,7 @@ static const char commands_string[] =
 static void usage_complete(char *argv[])
 {
     fprintf(stderr, "Usage: %s [options]\n", argv[0]);
-    fprintf(stderr, "options:\n%s\n", commands_string);
+    fprintf(stderr, "options:\n%s", commands_string);
 }
 
 /*
diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
index 564da45f65..0955c72a74 100644
--- a/tests/bios-tables-test.c
+++ b/tests/bios-tables-test.c
@@ -11,6 +11,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include <glib/gstdio.h>
 #include "qemu-common.h"
 #include "hw/smbios/smbios.h"
@@ -396,7 +397,7 @@ try_again:
         aml_file = g_strdup_printf("%s/%s/%.4s%s", data_dir, data->machine,
                                    (gchar *)&signature, ext);
         if (getenv("V")) {
-            fprintf(stderr, "\nLooking for expected file '%s'\n", aml_file);
+            error_report("Looking for expected file '%s'", aml_file);
         }
         if (g_file_test(aml_file, G_FILE_TEST_EXISTS)) {
             exp_sdt.aml_file = aml_file;
@@ -408,7 +409,7 @@ try_again:
         }
         g_assert(exp_sdt.aml_file);
         if (getenv("V")) {
-            fprintf(stderr, "\nUsing expected file '%s'\n", aml_file);
+            error_report("Using expected file '%s'", aml_file);
         }
         ret = g_file_get_contents(aml_file, &exp_sdt.aml,
                                   &exp_sdt.aml_len, &error);
diff --git a/tests/check-qlit b/tests/check-qlit
new file mode 100755
index 0000000000000000000000000000000000000000..950429524e3eb07e6daed1fe01caad0f5d554809
GIT binary patch
literal 272776
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
G)&IXoEYhC<

literal 0
HcmV?d00001

diff --git a/tests/i440fx-test.c b/tests/i440fx-test.c
index e9d05c87d1..75fb9742ce 100644
--- a/tests/i440fx-test.c
+++ b/tests/i440fx-test.c
@@ -13,7 +13,7 @@
  */
 
 #include "qemu/osdep.h"
-
+#include "qemu/error-report.h"
 #include "libqtest.h"
 #include "libqos/pci.h"
 #include "libqos/pci-pc.h"
@@ -295,18 +295,18 @@ static char *create_blob_file(void)
     ret = -1;
     fd = g_file_open_tmp("blob_XXXXXX", &pathname, &error);
     if (fd == -1) {
-        fprintf(stderr, "unable to create blob file: %s\n", error->message);
+        error_report("unable to create blob file: %s", error->message);
         g_error_free(error);
     } else {
         if (ftruncate(fd, BLOB_SIZE) == -1) {
-            fprintf(stderr, "ftruncate(\"%s\", %zu): %s\n", pathname,
+            error_report("ftruncate(\"%s\", %zu): %s", pathname,
                     BLOB_SIZE, strerror(errno));
         } else {
             void *buf;
 
             buf = mmap(NULL, BLOB_SIZE, PROT_WRITE, MAP_SHARED, fd, 0);
             if (buf == MAP_FAILED) {
-                fprintf(stderr, "mmap(\"%s\", %zu): %s\n", pathname, BLOB_SIZE,
+                error_report("mmap(\"%s\", %zu): %s", pathname, BLOB_SIZE,
                         strerror(errno));
             } else {
                 size_t i;
diff --git a/tests/libqos/ahci.c b/tests/libqos/ahci.c
index 1ca7f456b5..dffe625444 100644
--- a/tests/libqos/ahci.c
+++ b/tests/libqos/ahci.c
@@ -23,7 +23,7 @@
  */
 
 #include "qemu/osdep.h"
-
+#include "qemu/error-report.h"
 #include "libqtest.h"
 #include "libqos/ahci.h"
 #include "libqos/pci-pc.h"
@@ -985,9 +985,9 @@ static void ahci_atapi_command_set_offset(AHCICommand *cmd, uint64_t lba)
     default:
         /* SCSI doesn't have uniform packet formats,
          * so you have to add support for it manually. Sorry! */
-        fprintf(stderr, "The Libqos AHCI driver does not support the "
+        error_report("The Libqos AHCI driver does not support the "
                 "set_offset operation for ATAPI command 0x%02x, "
-                "please add support.\n",
+                "please add support.",
                 cbd[0]);
         g_assert_not_reached();
     }
@@ -1060,8 +1060,8 @@ static void ahci_atapi_set_size(AHCICommand *cmd, uint64_t xbytes)
     default:
         /* SCSI doesn't have uniform packet formats,
          * so you have to add support for it manually. Sorry! */
-        fprintf(stderr, "The Libqos AHCI driver does not support the set_size "
-                "operation for ATAPI command 0x%02x, please add support.\n",
+        error_report("The Libqos AHCI driver does not support the set_size "
+                "operation for ATAPI command 0x%02x, please add support.",
                 cbd[0]);
         g_assert_not_reached();
     }
diff --git a/tests/libqos/libqos.c b/tests/libqos/libqos.c
index 6226546c28..e125d885ef 100644
--- a/tests/libqos/libqos.c
+++ b/tests/libqos/libqos.c
@@ -1,4 +1,5 @@
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include <sys/wait.h>
 
 #include "libqtest.h"
@@ -155,7 +156,7 @@ void migrate(QOSState *from, QOSState *to, const char *uri)
             continue;
         }
 
-        fprintf(stderr, "Migration did not complete, status: %s\n", st);
+        error_report("Migration did not complete, status: %s", st);
         g_assert_not_reached();
     }
 
@@ -199,7 +200,7 @@ void mkimg(const char *file, const char *fmt, unsigned size_mb)
                           fmt, file, size_mb);
     ret = g_spawn_command_line_sync(cli, &out, &out2, &rc, &err);
     if (err) {
-        fprintf(stderr, "%s\n", err->message);
+        error_report("%s", err->message);
         g_error_free(err);
     }
     g_assert(ret && !err);
@@ -210,7 +211,7 @@ void mkimg(const char *file, const char *fmt, unsigned size_mb)
      * 0 is only possible if the program exited normally, so that should be
      * sufficient for our purposes on all platforms, here. */
     if (rc) {
-        fprintf(stderr, "qemu-img returned status code %d\n", rc);
+        error_report("qemu-img returned status code %d", rc);
     }
     g_assert(!rc);
 
diff --git a/tests/libqos/malloc.c b/tests/libqos/malloc.c
index b8eff5f495..e81e0bb8f2 100644
--- a/tests/libqos/malloc.c
+++ b/tests/libqos/malloc.c
@@ -11,6 +11,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "libqos/malloc.h"
 #include "qemu-common.h"
 #include "qemu/host-utils.h"
@@ -193,7 +194,7 @@ static uint64_t mlist_alloc(QGuestAllocator *s, uint64_t size)
 
     node = mlist_find_space(s->free, size);
     if (!node) {
-        fprintf(stderr, "Out of guest memory.\n");
+        error_report("Out of guest memory.");
         g_assert_not_reached();
     }
     return mlist_fulfill(s, node, size);
@@ -209,8 +210,8 @@ static void mlist_free(QGuestAllocator *s, uint64_t addr)
 
     node = mlist_find_key(s->used, addr);
     if (!node) {
-        fprintf(stderr, "Error: no record found for an allocation at "
-                "0x%016" PRIx64 ".\n",
+        error_report("Error: no record found for an allocation at "
+                "0x%016" PRIx64 ".",
                 addr);
         g_assert_not_reached();
     }
@@ -234,8 +235,8 @@ void alloc_uninit(QGuestAllocator *allocator)
     /* Check for guest leaks, and destroy the list. */
     QTAILQ_FOREACH_SAFE(node, allocator->used, MLIST_ENTNAME, tmp) {
         if (allocator->opts & (ALLOC_LEAK_WARN | ALLOC_LEAK_ASSERT)) {
-            fprintf(stderr, "guest malloc leak @ 0x%016" PRIx64 "; "
-                    "size 0x%016" PRIx64 ".\n",
+            error_report("guest malloc leak @ 0x%016" PRIx64 "; "
+                    "size 0x%016" PRIx64 ".",
                     node->addr, node->size);
         }
         if (allocator->opts & (ALLOC_LEAK_ASSERT)) {
@@ -251,7 +252,7 @@ void alloc_uninit(QGuestAllocator *allocator)
         if ((allocator->opts & mask) == mask) {
             if ((node->addr != allocator->start) ||
                 (node->size != allocator->end - allocator->start)) {
-                fprintf(stderr, "Free list is corrupted.\n");
+                error_report("Free list is corrupted.");
                 g_assert_not_reached();
             }
         }
diff --git a/tests/libqtest.c b/tests/libqtest.c
index cbd709470b..b7c488444e 100644
--- a/tests/libqtest.c
+++ b/tests/libqtest.c
@@ -15,6 +15,7 @@
  *
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "libqtest.h"
 
 #include <sys/socket.h>
@@ -89,7 +90,7 @@ static int socket_accept(int sock)
         ret = accept(sock, (struct sockaddr *)&addr, &addrlen);
     } while (ret == -1 && errno == EINTR);
     if (ret == -1) {
-        fprintf(stderr, "%s failed: %s\n", __func__, strerror(errno));
+        error_report("%s failed: %s", __func__, strerror(errno));
     }
     close(sock);
 
@@ -155,7 +156,7 @@ static const char *qtest_qemu_binary(void)
 
     qemu_bin = getenv("QTEST_QEMU_BINARY");
     if (!qemu_bin) {
-        fprintf(stderr, "Environment variable QTEST_QEMU_BINARY required\n");
+        error_report("Environment variable QTEST_QEMU_BINARY required");
         exit(1);
     }
 
@@ -312,7 +313,7 @@ static GString *qtest_recv_line(QTestState *s)
         }
 
         if (len == -1 || len == 0) {
-            fprintf(stderr, "Broken pipe\n");
+            error_report("Broken pipe");
             exit(1);
         }
 
@@ -397,7 +398,7 @@ static void qmp_response(JSONMessageParser *parser, GQueue *tokens)
 
     obj = json_parser_parse(tokens, NULL);
     if (!obj) {
-        fprintf(stderr, "QMP JSON response parsing failed\n");
+        error_report("QMP JSON response parsing failed");
         exit(1);
     }
 
@@ -423,7 +424,7 @@ QDict *qmp_fd_receive(int fd)
         }
 
         if (len == -1 || len == 0) {
-            fprintf(stderr, "Broken pipe\n");
+            error_report("Broken pipe");
             exit(1);
         }
 
@@ -880,7 +881,7 @@ void qtest_bufread(QTestState *s, uint64_t addr, void *data, size_t size)
 
     g_base64_decode_inplace(args[1], &len);
     if (size != len) {
-        fprintf(stderr, "bufread: asked for %zu bytes but decoded %zu\n",
+        error_report("bufread: asked for %zu bytes but decoded %zu",
                 size, len);
         len = MIN(len, size);
     }
diff --git a/tests/migration/stress.c b/tests/migration/stress.c
index cf8ce8b16d..49e1ff4555 100644
--- a/tests/migration/stress.c
+++ b/tests/migration/stress.c
@@ -47,7 +47,7 @@ static __attribute__((noreturn)) void exit_failure(void)
     if (getpid() == 1) {
         sync();
         reboot(RB_POWER_OFF);
-        fprintf(stderr, "%s (%05d): ERROR: cannot reboot: %s\n",
+        error_report("%s (%05d): cannot reboot: %s",
                 argv0, gettid(), strerror(errno));
         abort();
     } else {
@@ -60,7 +60,7 @@ static __attribute__((noreturn)) void exit_success(void)
     if (getpid() == 1) {
         sync();
         reboot(RB_POWER_OFF);
-        fprintf(stderr, "%s (%05d): ERROR: cannot reboot: %s\n",
+        error_report("%s (%05d): cannot reboot: %s",
                 argv0, gettid(), strerror(errno));
         abort();
     } else {
@@ -76,13 +76,13 @@ static int get_command_arg_str(const char *name,
     char *start, *end;
 
     if (fp == NULL) {
-        fprintf(stderr, "%s (%05d): ERROR: cannot open /proc/cmdline: %s\n",
+        error_report("%s (%05d): cannot open /proc/cmdline: %s",
                 argv0, gettid(), strerror(errno));
         return -1;
     }
 
     if (!fgets(line, sizeof line, fp)) {
-        fprintf(stderr, "%s (%05d): ERROR: cannot read /proc/cmdline: %s\n",
+        error_report("%s (%05d): cannot read /proc/cmdline: %s",
                 argv0, gettid(), strerror(errno));
         fclose(fp);
         return -1;
@@ -96,8 +96,8 @@ static int get_command_arg_str(const char *name,
     start += strlen(name);
 
     if (*start != '=') {
-        fprintf(stderr, "%s (%05d): ERROR: no value provided for '%s' in /proc/cmdline\n",
-                argv0, gettid(), name);
+        error_report("%s (%05d): no value provided for '%s' in /proc/cmdline",
+                     argv0, gettid(), name);
     }
     start++;
 
@@ -106,8 +106,8 @@ static int get_command_arg_str(const char *name,
         end = strstr(start, "\n");
 
     if (end == start) {
-        fprintf(stderr, "%s (%05d): ERROR: no value provided for '%s' in /proc/cmdline\n",
-                argv0, gettid(), name);
+        error_report("%s (%05d): no value provided for '%s' in /proc/cmdline",
+                     argv0, gettid(), name);
         return -1;
     }
 
@@ -132,7 +132,7 @@ static int get_command_arg_ull(const char *name,
     errno = 0;
     *val = strtoll(valstr, &end, 10);
     if (errno || *end) {
-        fprintf(stderr, "%s (%05d): ERROR: cannot parse %s value %s\n",
+        error_report("%s (%05d): cannot parse %s value %s",
                 argv0, gettid(), name, valstr);
         free(valstr);
         return -1;
@@ -148,13 +148,13 @@ static int random_bytes(char *buf, size_t len)
 
     fd = open("/dev/urandom", O_RDONLY);
     if (fd < 0) {
-        fprintf(stderr, "%s (%05d): ERROR: cannot open /dev/urandom: %s\n",
+        error_report("%s (%05d): cannot open /dev/urandom: %s",
                 argv0, gettid(), strerror(errno));
         return -1;
     }
 
     if (read(fd, buf, len) != len) {
-        fprintf(stderr, "%s (%05d): ERROR: cannot read /dev/urandom: %s\n",
+        error_report("%s (%05d): cannot read /dev/urandom: %s",
                 argv0, gettid(), strerror(errno));
         close(fd);
         return -1;
@@ -187,12 +187,12 @@ static int stressone(unsigned long long ramsizeMB)
     unsigned long long before, after;
 
     if (!ram) {
-        fprintf(stderr, "%s (%05d): ERROR: cannot allocate %llu MB of RAM: %s\n",
+        error_report("%s (%05d): cannot allocate %llu MB of RAM: %s",
                 argv0, gettid(), ramsizeMB, strerror(errno));
         return -1;
     }
     if (!data) {
-        fprintf(stderr, "%s (%d): ERROR: cannot allocate %d bytes of RAM: %s\n",
+        error_report("%s (%d): cannot allocate %d bytes of RAM: %s",
                 argv0, gettid(), PAGE_SIZE, strerror(errno));
         free(ram);
         return -1;
@@ -271,13 +271,13 @@ static int stress(unsigned long long ramsizeGB, int ncpus)
 static int mount_misc(const char *fstype, const char *dir)
 {
     if (mkdir(dir, 0755) < 0 && errno != EEXIST) {
-        fprintf(stderr, "%s (%05d): ERROR: cannot create %s: %s\n",
+        error_report("%s (%05d): cannot create %s: %s",
                 argv0, gettid(), dir, strerror(errno));
         return -1;
     }
 
     if (mount("none", dir, fstype, 0, NULL) < 0) {
-        fprintf(stderr, "%s (%05d): ERROR: cannot mount %s: %s\n",
+        error_report("%s (%05d): cannot mount %s: %s",
                 argv0, gettid(), dir, strerror(errno));
         return -1;
     }
@@ -322,7 +322,7 @@ int main(int argc, char **argv)
             errno = 0;
             ramsizeGB = strtoll(optarg, &end, 10);
             if (errno != 0 || *end) {
-                fprintf(stderr, "%s (%05d): ERROR: Cannot parse RAM size %s\n",
+                error_report("%s (%05d): Cannot parse RAM size %s",
                         argv0, gettid(), optarg);
                 exit_failure();
             }
@@ -332,7 +332,7 @@ int main(int argc, char **argv)
             errno = 0;
             ncpus = strtoll(optarg, &end, 10);
             if (errno != 0 || *end) {
-                fprintf(stderr, "%s (%05d): ERROR: Cannot parse CPU count %s\n",
+                error_report("%s (%05d): Cannot parse CPU count %s",
                         argv0, gettid(), optarg);
                 exit_failure();
             }
@@ -340,7 +340,7 @@ int main(int argc, char **argv)
 
         case '?':
         case 'h':
-            fprintf(stderr, "%s: [--help][--ramsize GB][--cpus N]\n", argv0);
+            error_report("%s: [--help][--ramsize GB][--cpus N]", argv0);
             exit_failure();
         }
     }
diff --git a/tests/postcopy-test.c b/tests/postcopy-test.c
index 8142f2ab90..32bb11ba82 100644
--- a/tests/postcopy-test.c
+++ b/tests/postcopy-test.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-
+#include "qemu/error-report.h"
 #include "libqtest.h"
 #include "qemu/option.h"
 #include "qemu/range.h"
@@ -214,7 +214,7 @@ static void wait_for_serial(const char *side)
             break;
 
         default:
-            fprintf(stderr, "Unexpected %d on %s serial\n", readvalue, side);
+            error_report("Unexpected %d on %s serial", readvalue, side);
             g_assert_not_reached();
         }
     } while (true);
@@ -333,9 +333,9 @@ static void check_guests_ram(void)
                  */
                 hit_edge = true;
             } else {
-                fprintf(stderr, "Memory content inconsistency at %x"
+                error_report("Memory content inconsistency at %x"
                                 " first_byte = %x last_byte = %x current = %x"
-                                " hit_edge = %x\n",
+                                " hit_edge = %x",
                                 address, first_byte, last_byte, b, hit_edge);
                 bad = true;
             }
diff --git a/tests/qemu-iotests/socket_scm_helper.c b/tests/qemu-iotests/socket_scm_helper.c
index eb76d31aa9..7785da953a 100644
--- a/tests/qemu-iotests/socket_scm_helper.c
+++ b/tests/qemu-iotests/socket_scm_helper.c
@@ -11,6 +11,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include <sys/socket.h>
 #include <sys/un.h>
 
@@ -53,7 +54,7 @@ static int send_fd(int fd, int fd_to_send)
     } while (ret < 0 && errno == EINTR);
 
     if (ret < 0) {
-        fprintf(stderr, "Failed to send msg, reason: %s\n", strerror(errno));
+        error_report("Failed to send msg, reason: %s", strerror(errno));
     }
 
     return ret;
@@ -69,14 +70,14 @@ static int get_fd_num(const char *fd_str, bool silent)
     sock = strtol(fd_str, &err, 10);
     if (errno) {
         if (!silent) {
-            fprintf(stderr, "Failed in strtol for socket fd, reason: %s\n",
+            error_report("Failed in strtol for socket fd, reason: %s",
                     strerror(errno));
         }
         return -1;
     }
     if (!*fd_str || *err || sock < 0) {
         if (!silent) {
-            fprintf(stderr, "bad numerical value for socket fd '%s'\n", fd_str);
+            error_report("bad numerical value for socket fd '%s'", fd_str);
         }
         return -1;
     }
@@ -96,7 +97,7 @@ int main(int argc, char **argv, char **envp)
 #ifdef SOCKET_SCM_DEBUG
     int i;
     for (i = 0; i < argc; i++) {
-        fprintf(stderr, "Parameter %d: %s\n", i, argv[i]);
+        error_report("Parameter %d: %s", i, argv[i]);
     }
 #endif
 
@@ -120,7 +121,7 @@ int main(int argc, char **argv, char **envp)
            is supposed to fork and exec this program. */
         fd = open(argv[2], O_RDONLY);
         if (fd < 0) {
-            fprintf(stderr, "Failed to open file '%s'\n", argv[2]);
+            error_report("Failed to open file '%s'", argv[2]);
             return EXIT_FAILURE;
         }
     }
diff --git a/tests/qht-bench.c b/tests/qht-bench.c
index 11c1cec766..2637d601a9 100644
--- a/tests/qht-bench.c
+++ b/tests/qht-bench.c
@@ -5,6 +5,7 @@
  *   See the COPYING file in the top-level directory.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu/processor.h"
 #include "qemu/atomic.h"
 #include "qemu/qht.h"
@@ -89,7 +90,7 @@ static const char commands_string[] =
 static void usage_complete(int argc, char *argv[])
 {
     fprintf(stderr, "Usage: %s [options]\n", argv[0]);
-    fprintf(stderr, "options:\n%s\n", commands_string);
+    fprintf(stderr, "options:\n%s", commands_string);
     exit(-1);
 }
 
@@ -328,7 +329,7 @@ static void htable_init(void)
             retries++;
         }
     }
-    fprintf(stderr, " populated after %zu retries\n", retries);
+    error_report(" populated after %zu retries", retries);
 }
 
 static void add_stats(struct thread_stats *s, struct thread_info *info, int n)
diff --git a/tests/rcutorture.c b/tests/rcutorture.c
index 4002ecf123..21d2c76d0b 100644
--- a/tests/rcutorture.c
+++ b/tests/rcutorture.c
@@ -61,6 +61,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu/atomic.h"
 #include "qemu/rcu.h"
 #include "qemu/thread.h"
@@ -86,7 +87,7 @@ static int n_threads;
 static void create_thread(void *(*func)(void *))
 {
     if (n_threads >= NR_THREADS) {
-        fprintf(stderr, "Thread limit of %d exceeded!\n", NR_THREADS);
+        error_report("Thread limit of %d exceeded!", NR_THREADS);
         exit(-1);
     }
     qemu_thread_create(&threads[n_threads], "test", func, &data[n_threads],
@@ -417,7 +418,7 @@ static void gtest_stress_10_5(void)
 
 static void usage(int argc, char *argv[])
 {
-    fprintf(stderr, "Usage: %s [nreaders [ perf | stress ] ]\n", argv[0]);
+    error_report("Usage: %s [nreaders [ perf | stress ] ]", argv[0]);
     exit(-1);
 }
 
diff --git a/tests/tcg/linux-test.c b/tests/tcg/linux-test.c
index 5070d31446..76c9059073 100644
--- a/tests/tcg/linux-test.c
+++ b/tests/tcg/linux-test.c
@@ -51,7 +51,7 @@ void error1(const char *filename, int line, const char *fmt, ...)
     va_start(ap, fmt);
     fprintf(stderr, "%s:%d: ", filename, line);
     vfprintf(stderr, fmt, ap);
-    fprintf(stderr, "\n");
+    error_report("");
     va_end(ap);
     exit(1);
 }
diff --git a/tests/tcg/runcom.c b/tests/tcg/runcom.c
index d60342bfc6..7acf0239c8 100644
--- a/tests/tcg/runcom.c
+++ b/tests/tcg/runcom.c
@@ -61,7 +61,7 @@ void dump_regs(struct vm86_regs *r)
 #ifdef SIGTEST
 void alarm_handler(int sig)
 {
-    fprintf(stderr, "alarm signal=%d\n", sig);
+    error_report("alarm signal=%d", sig);
     alarm(1);
 }
 #endif
@@ -172,7 +172,7 @@ int main(int argc, char **argv)
                     break;
                 default:
                 unknown_int:
-                    fprintf(stderr, "unsupported int 0x%02x\n", int_num);
+                    error_report("unsupported int 0x%02x", int_num);
                     dump_regs(&ctx.regs);
                     //                    exit(1);
                 }
@@ -184,7 +184,7 @@ int main(int argc, char **argv)
         case VM86_STI:
             break;
         default:
-            fprintf(stderr, "unhandled vm86 return code (0x%x)\n", ret);
+            error_report("unhandled vm86 return code (0x%x)", ret);
             dump_regs(&ctx.regs);
             exit(1);
         }
diff --git a/tests/tcg/test-i386-fprem.c b/tests/tcg/test-i386-fprem.c
index 1a71623204..7c3d37d07a 100644
--- a/tests/tcg/test-i386-fprem.c
+++ b/tests/tcg/test-i386-fprem.c
@@ -340,7 +340,7 @@ static void test_fprem_pairs(void)
         }
     }
 
-    fprintf(stderr, "test-i386-fprem: tested %llu cases\n", count);
+    error_report("test-i386-fprem: tested %llu cases", count);
 }
 
 int main(int argc, char **argv)
diff --git a/tests/tcg/test_path.c b/tests/tcg/test_path.c
index 1c29bce263..d543bb76ef 100644
--- a/tests/tcg/test_path.c
+++ b/tests/tcg/test_path.c
@@ -150,8 +150,8 @@ int main(int argc, char *argv[])
     ret = do_test();
     cleanup();
     if (ret) {
-	fprintf(stderr, "test_path: failed on line %i\n", ret);
-	return 1;
+        error_report("test_path: failed on line %i", ret);
+        return 1;
     }
     return 0;
 }
diff --git a/tests/test-hmp.c b/tests/test-hmp.c
index 5677fbf775..ff86220814 100644
--- a/tests/test-hmp.c
+++ b/tests/test-hmp.c
@@ -15,6 +15,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "libqtest.h"
 
 static int verbose;
@@ -79,7 +80,7 @@ static void test_commands(void)
 
     for (i = 0; hmp_cmds[i] != NULL; i++) {
         if (verbose) {
-            fprintf(stderr, "\t%s\n", hmp_cmds[i]);
+            error_report("\t%s", hmp_cmds[i]);
         }
         response = hmp("%s", hmp_cmds[i]);
         g_free(response);
@@ -102,7 +103,7 @@ static void test_info_commands(void)
         *endp = '\0';
         /* Now run the info command */
         if (verbose) {
-            fprintf(stderr, "\t%s\n", info);
+            error_report("\t%s", info);
         }
         resp = hmp("%s", info);
         g_free(resp);
diff --git a/tests/test-rcu-list.c b/tests/test-rcu-list.c
index 1514d7ec97..00a03de370 100644
--- a/tests/test-rcu-list.c
+++ b/tests/test-rcu-list.c
@@ -21,6 +21,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu/atomic.h"
 #include "qemu/rcu.h"
 #include "qemu/thread.h"
@@ -64,7 +65,7 @@ static int select_random_el(int max)
 static void create_thread(void *(*func)(void *))
 {
     if (n_threads >= NR_THREADS) {
-        fprintf(stderr, "Thread limit of %d exceeded!\n", NR_THREADS);
+        error_report("Thread limit of %d exceeded!", NR_THREADS);
         exit(-1);
     }
     qemu_thread_create(&threads[n_threads], "test", func, &data[n_threads],
@@ -255,7 +256,7 @@ static void rcu_qtest(const char *test, int duration, int nreaders)
 
 static void usage(int argc, char *argv[])
 {
-    fprintf(stderr, "Usage: %s duration nreaders\n", argv[0]);
+    error_report("Usage: %s duration nreaders", argv[0]);
     exit(-1);
 }
 
diff --git a/tests/usb-hcd-ehci-test.c b/tests/usb-hcd-ehci-test.c
index 944eb1c088..1e7ef842e5 100644
--- a/tests/usb-hcd-ehci-test.c
+++ b/tests/usb-hcd-ehci-test.c
@@ -42,7 +42,7 @@ static void ehci_port_test(struct qhc *hc, int port, uint32_t expect)
     uint16_t mask = ~(PORTSC_CSC | PORTSC_PEDC | PORTSC_OCC);
 
 #if 0
-    fprintf(stderr, "%s: %d, have 0x%08x, want 0x%08x\n",
+    error_report("%s: %d, have 0x%08x, want 0x%08x",
             __func__, port, value & mask, expect & mask);
 #endif
     g_assert((value & mask) == (expect & mask));
diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c
index f922cc75ae..c70a453cef 100644
--- a/tests/vhost-user-bridge.c
+++ b/tests/vhost-user-bridge.c
@@ -181,7 +181,7 @@ vubr_handle_tx(VuDev *dev, int qidx)
         out_num = elem->out_num;
         out_sg = elem->out_sg;
         if (out_num < 1) {
-            fprintf(stderr, "virtio-net header not in first element\n");
+            error_report("virtio-net header not in first element");
             break;
         }
         if (VHOST_USER_BRIDGE_DEBUG) {
@@ -293,7 +293,7 @@ vubr_backend_recv_cb(int sock, void *ctx)
         }
 
         if (elem->in_num < 1) {
-            fprintf(stderr, "virtio-net contains no in buffers\n");
+            error_report("virtio-net contains no in buffers");
             break;
         }
 
@@ -363,7 +363,7 @@ vubr_receive_cb(int sock, void *ctx)
     VubrDev *vubr = (VubrDev *)ctx;
 
     if (!vu_dispatch(&vubr->vudev)) {
-        fprintf(stderr, "Error while dispatching\n");
+        error_report("Error while dispatching");
     }
 }
 
@@ -460,7 +460,7 @@ vubr_panic(VuDev *dev, const char *msg)
 {
     VubrDev *vubr = container_of(dev, VubrDev, vudev);
 
-    fprintf(stderr, "PANIC: %s\n", msg);
+    error_report("PANIC: %s", msg);
 
     dispatcher_remove(&vubr->dispatcher, dev->sock);
     vubr->quit = 1;
@@ -561,14 +561,14 @@ vubr_set_host(struct sockaddr_in *saddr, const char *host)
 {
     if (isdigit(host[0])) {
         if (!inet_aton(host, &saddr->sin_addr)) {
-            fprintf(stderr, "inet_aton() failed.\n");
+            error_report("inet_aton() failed.");
             exit(1);
         }
     } else {
         struct hostent *he = gethostbyname(host);
 
         if (!he) {
-            fprintf(stderr, "gethostbyname() failed.\n");
+            error_report("gethostbyname() failed.");
             exit(1);
         }
         saddr->sin_addr = *(struct in_addr *)he->h_addr;
@@ -589,13 +589,13 @@ vubr_backend_udp_setup(VubrDev *dev,
 
     lport = strtol(local_port, (char **)&r, 0);
     if (r == local_port) {
-        fprintf(stderr, "lport parsing failed.\n");
+        error_report("lport parsing failed.");
         exit(1);
     }
 
     rport = strtol(remote_port, (char **)&r, 0);
     if (r == remote_port) {
-        fprintf(stderr, "rport parsing failed.\n");
+        error_report("rport parsing failed.");
         exit(1);
     }
 
@@ -713,15 +713,15 @@ main(int argc, char *argv[])
     return 0;
 
 out:
-    fprintf(stderr, "Usage: %s ", argv[0]);
-    fprintf(stderr, "[-c] [-u ud_socket_path] [-l lhost:lport] [-r rhost:rport]\n");
-    fprintf(stderr, "\t-u path to unix doman socket. default: %s\n",
+    error_report("Usage: %s ", argv[0]);
+    error_report("[-c] [-u ud_socket_path] [-l lhost:lport] [-r rhost:rport]");
+    error_report("\t-u path to unix doman socket. default: %s",
             DEFAULT_UD_SOCKET);
-    fprintf(stderr, "\t-l local host and port. default: %s:%s\n",
+    fprintf(stderr, "\t-l local host and port. default: %s:%s",
             DEFAULT_LHOST, DEFAULT_LPORT);
-    fprintf(stderr, "\t-r remote host and port. default: %s:%s\n",
+    error_report("\t-r remote host and port. default: %s:%s",
             DEFAULT_RHOST, DEFAULT_RPORT);
-    fprintf(stderr, "\t-c client mode\n");
+    error_report("\t-c client mode");
 
     return 1;
 }
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Qemu-devel] [PATCH v1 3/8] hw: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:08 [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* Alistair Francis
@ 2017-09-26  0:08   ` Alistair Francis
  2017-09-26  0:08 ` [Qemu-devel] [PATCH v1 2/8] tests: Replace fprintf(stderr, "*\n" with error_report() Alistair Francis
                     ` (9 subsequent siblings)
  10 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-26  0:08 UTC (permalink / raw)
  To: qemu-devel
  Cc: alistair.francis, alistair23, armbru, Andrzej Zaborowski,
	Jan Kiszka, Stefan Hajnoczi, Paolo Bonzini, Thomas Huth,
	Gerd Hoffmann, Michael S. Tsirkin, Richard Henderson,
	Eduardo Habkost, Stefano Stabellini, Anthony Perard, John Snow,
	Christian Borntraeger, Cornelia Huck, Alexander Graf,
	Michael Walle, Paul Burton, Aurelien Jarno, Yongbok Kim,
	Hervé Poussineau, Anthony Green, Jason Wang, Chris Wulff,
	Marek Vasut, Jia Liu, Stafford Horne, Marcel Apfelbaum,
	Magnus Damm, Fabien Chouteau, Mark Cave-Ayland, Artyom Tarasenko,
	qemu-arm, qemu-block, xen-devel, qemu-ppc

Replace a large number of the fprintf(stderr, "*\n" calls with
error_report(). The functions were renamed with these commands and then
compiler issues where manually fixed.

find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +

Some lines where then manually tweaked to pass checkpatch.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Cc: Andrzej Zaborowski <balrogg@gmail.com>
Cc: Jan Kiszka <jan.kiszka@web.de>
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Thomas Huth <huth@tuxfamily.org>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Anthony Perard <anthony.perard@citrix.com>
Cc: John Snow <jsnow@redhat.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Cornelia Huck <cohuck@redhat.com>
Cc: Alexander Graf <agraf@suse.de>
Cc: Michael Walle <michael@walle.cc>
Cc: Paul Burton <paul.burton@imgtec.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: Yongbok Kim <yongbok.kim@imgtec.com>
Cc: "Hervé Poussineau" <hpoussin@reactos.org>
Cc: Anthony Green <green@moxielogic.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Chris Wulff <crwulff@gmail.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Jia Liu <proljc@gmail.com>
Cc: Stafford Horne <shorne@gmail.com>
Cc: Marcel Apfelbaum <marcel@redhat.com>
Cc: Magnus Damm <magnus.damm@gmail.com>
Cc: Fabien Chouteau <chouteau@adacore.com>
Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: Artyom Tarasenko <atar4qemu@gmail.com>
Cc: qemu-arm@nongnu.org
Cc: qemu-block@nongnu.org
Cc: xen-devel@lists.xenproject.org
Cc: qemu-ppc@nongnu.org
---

 hw/arm/armv7m.c                 |  2 +-
 hw/arm/boot.c                   | 34 +++++++++----------
 hw/arm/gumstix.c                | 13 ++++----
 hw/arm/mainstone.c              |  7 ++--
 hw/arm/musicpal.c               |  2 +-
 hw/arm/omap1.c                  |  5 +--
 hw/arm/omap2.c                  | 21 ++++++------
 hw/arm/omap_sx1.c               |  6 ++--
 hw/arm/palm.c                   | 10 +++---
 hw/arm/pxa2xx.c                 |  7 ++--
 hw/arm/stellaris.c              |  3 +-
 hw/arm/tosa.c                   | 17 +++++-----
 hw/arm/versatilepb.c            |  2 +-
 hw/arm/vexpress.c               |  8 ++---
 hw/arm/z2.c                     |  6 ++--
 hw/block/dataplane/virtio-blk.c |  6 ++--
 hw/block/onenand.c              |  8 ++---
 hw/block/tc58128.c              | 44 ++++++++++++-------------
 hw/bt/core.c                    | 15 +++++----
 hw/bt/hci-csr.c                 | 17 +++++-----
 hw/bt/hci.c                     | 30 ++++++++---------
 hw/bt/hid.c                     |  2 +-
 hw/bt/l2cap.c                   | 47 ++++++++++++++-------------
 hw/bt/sdp.c                     |  7 ++--
 hw/char/exynos4210_uart.c       |  6 ++--
 hw/char/mcf_uart.c              |  5 +--
 hw/char/sh_serial.c             |  9 +++---
 hw/core/loader.c                | 31 +++++++++---------
 hw/core/ptimer.c                |  7 ++--
 hw/cris/axis_dev88.c            |  3 +-
 hw/cris/boot.c                  |  5 +--
 hw/display/blizzard.c           | 20 ++++++------
 hw/display/omap_dss.c           | 14 ++++----
 hw/display/pl110.c              |  2 +-
 hw/display/pxa2xx_lcd.c         |  2 +-
 hw/display/qxl-render.c         |  7 ++--
 hw/display/qxl.c                | 10 +++---
 hw/display/tc6393xb.c           | 36 ++++++++++++---------
 hw/display/virtio-gpu-3d.c      |  4 +--
 hw/display/vmware_vga.c         | 22 ++++++-------
 hw/dma/omap_dma.c               | 26 ++++++++-------
 hw/dma/soc_dma.c                | 37 ++++++++++-----------
 hw/gpio/omap_gpio.c             |  2 +-
 hw/i2c/omap_i2c.c               | 10 +++---
 hw/i386/kvm/apic.c              |  9 +++---
 hw/i386/kvm/clock.c             |  7 ++--
 hw/i386/kvm/i8254.c             |  7 ++--
 hw/i386/kvm/i8259.c             |  5 +--
 hw/i386/kvm/ioapic.c            |  5 +--
 hw/i386/multiboot.c             | 21 ++++++------
 hw/i386/pc.c                    | 18 +++++------
 hw/i386/pc_piix.c               |  2 +-
 hw/i386/pc_sysfw.c              |  5 +--
 hw/i386/xen/xen-hvm.c           | 32 +++++++++---------
 hw/i386/xen/xen-mapcache.c      | 12 +++----
 hw/i386/xen/xen_apic.c          |  2 +-
 hw/ide/ahci.c                   |  6 ++--
 hw/ide/core.c                   |  2 +-
 hw/input/lm832x.c               |  6 ++--
 hw/input/pckbd.c                |  3 +-
 hw/input/pxa2xx_keypad.c        |  2 +-
 hw/input/tsc2005.c              | 17 +++++-----
 hw/input/tsc210x.c              | 72 ++++++++++++++++++++---------------------
 hw/input/virtio-input-hid.c     | 14 ++++----
 hw/input/virtio-input.c         |  5 +--
 hw/intc/arm_gic_kvm.c           | 12 +++----
 hw/intc/omap_intc.c             |  4 +--
 hw/intc/openpic.c               |  7 ++--
 hw/intc/openpic_kvm.c           |  8 ++---
 hw/intc/s390_flic_kvm.c         |  4 +--
 hw/ipmi/ipmi.c                  |  1 +
 hw/ipmi/ipmi_bmc_extern.c       |  5 +--
 hw/isa/isa-bus.c                |  7 ++--
 hw/lm32/lm32_boards.c           |  5 +--
 hw/lm32/milkymist.c             |  5 +--
 hw/m68k/an5206.c                |  4 +--
 hw/m68k/mcf5206.c               |  3 +-
 hw/m68k/mcf5208.c               |  7 ++--
 hw/microblaze/boot.c            |  2 +-
 hw/mips/boston.c                |  4 +--
 hw/mips/mips_fulong2e.c         |  4 +--
 hw/mips/mips_jazz.c             |  4 +--
 hw/mips/mips_malta.c            |  4 +--
 hw/mips/mips_mipssim.c          |  4 +--
 hw/mips/mips_r4k.c              |  6 ++--
 hw/misc/a9scu.c                 |  3 +-
 hw/misc/omap_gpmc.c             | 11 ++++---
 hw/misc/omap_l4.c               |  5 +--
 hw/misc/omap_sdrc.c             |  3 +-
 hw/misc/vmport.c                |  2 +-
 hw/moxie/moxiesim.c             |  7 ++--
 hw/net/fsl_etsec/etsec.c        |  2 +-
 hw/net/pcnet.c                  |  2 +-
 hw/net/smc91c111.c              |  5 +--
 hw/net/vhost_net.c              | 16 ++++-----
 hw/nios2/boot.c                 |  2 +-
 hw/nvram/eeprom93xx.c           |  5 +--
 hw/nvram/fw_cfg.c               |  4 +--
 hw/openrisc/openrisc_sim.c      |  3 +-
 hw/pci-host/bonito.c            |  6 ++--
 hw/pci/pci.c                    | 10 +++---
 hw/ppc/e500.c                   | 20 ++++++------
 hw/ppc/mac_newworld.c           |  2 +-
 hw/ppc/mac_oldworld.c           |  2 +-
 hw/ppc/mpc8544_guts.c           |  5 +--
 hw/ppc/ppc405_boards.c          |  8 ++---
 hw/ppc/ppc440_bamboo.c          | 19 +++++------
 hw/ppc/ppc4xx_pci.c             |  3 +-
 hw/ppc/prep.c                   |  4 +--
 hw/ppc/virtex_ml507.c           |  4 +--
 hw/s390x/virtio-ccw.c           |  2 +-
 hw/scsi/lsi53c895a.c            |  4 +--
 hw/scsi/spapr_vscsi.c           | 49 ++++++++++++++--------------
 hw/scsi/virtio-scsi-dataplane.c |  6 ++--
 hw/sd/pl181.c                   |  5 +--
 hw/sd/sd.c                      | 14 ++++----
 hw/sh4/r2d.c                    |  9 +++---
 hw/sh4/sh7750.c                 | 64 ++++++++++++++++++------------------
 hw/sparc/leon3.c                |  9 +++---
 hw/sparc/sun4m.c                |  8 ++---
 hw/sparc64/niagara.c            |  2 +-
 hw/sparc64/sun4u.c              |  9 +++---
 hw/ssi/omap_spi.c               |  5 +--
 hw/timer/omap_gptimer.c         | 11 ++++---
 hw/timer/twl92230.c             |  2 +-
 hw/timer/xilinx_timer.c         |  8 ++---
 hw/usb/core.c                   | 15 +++++----
 hw/usb/desc.c                   |  4 +--
 hw/usb/dev-audio.c              | 29 +++++++++--------
 hw/usb/dev-bluetooth.c          |  4 +--
 hw/usb/dev-mtp.c                |  9 +++---
 hw/usb/dev-network.c            | 20 ++++++------
 hw/usb/hcd-ehci.c               | 32 +++++++++---------
 hw/usb/hcd-musb.c               |  4 +--
 hw/usb/hcd-xhci.c               |  3 +-
 hw/usb/host-legacy.c            |  2 +-
 hw/watchdog/watchdog.c          |  9 +++---
 hw/watchdog/wdt_i6300esb.c      |  8 +++--
 hw/xen/xen-common.c             | 10 +++---
 hw/xen/xen_pt.c                 |  4 +--
 hw/xenpv/xen_domainbuild.c      | 24 +++++++-------
 hw/xenpv/xen_machine_pv.c       |  8 ++---
 142 files changed, 769 insertions(+), 705 deletions(-)

diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
index bb2dfc942b..56770a7048 100644
--- a/hw/arm/armv7m.c
+++ b/hw/arm/armv7m.c
@@ -278,7 +278,7 @@ void armv7m_load_kernel(ARMCPU *cpu, const char *kernel_filename, int mem_size)
 #endif
 
     if (!kernel_filename && !qtest_enabled()) {
-        fprintf(stderr, "Guest image must be specified (using -kernel)\n");
+        error_report("Guest image must be specified (using -kernel)");
         exit(1);
     }
 
diff --git a/hw/arm/boot.c b/hw/arm/boot.c
index c2720c8046..5b2d17f08a 100644
--- a/hw/arm/boot.c
+++ b/hw/arm/boot.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include <libfdt.h>
 #include "hw/hw.h"
@@ -418,13 +419,13 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
         char *filename;
         filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, binfo->dtb_filename);
         if (!filename) {
-            fprintf(stderr, "Couldn't open dtb file %s\n", binfo->dtb_filename);
+            error_report("Couldn't open dtb file %s", binfo->dtb_filename);
             goto fail;
         }
 
         fdt = load_device_tree(filename, &size);
         if (!fdt) {
-            fprintf(stderr, "Couldn't open dtb file %s\n", filename);
+            error_report("Couldn't open dtb file %s", filename);
             g_free(filename);
             goto fail;
         }
@@ -432,7 +433,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
     } else {
         fdt = binfo->get_dtb(binfo, &size);
         if (!fdt) {
-            fprintf(stderr, "Board was unable to create a dtb blob\n");
+            error_report("Board was unable to create a dtb blob");
             goto fail;
         }
     }
@@ -451,7 +452,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
     scells = qemu_fdt_getprop_cell(fdt, "/", "#size-cells",
                                    NULL, &error_fatal);
     if (acells == 0 || scells == 0) {
-        fprintf(stderr, "dtb file invalid (#address-cells or #size-cells 0)\n");
+        error_report("dtb file invalid (#address-cells or #size-cells 0)");
         goto fail;
     }
 
@@ -459,8 +460,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
         /* This is user error so deserves a friendlier error message
          * than the failure of setprop_sized_cells would provide
          */
-        fprintf(stderr, "qemu: dtb file not compatible with "
-                "RAM size > 4GB\n");
+        error_report("qemu: dtb file not compatible with RAM size > 4GB");
         goto fail;
     }
 
@@ -480,7 +480,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
                                               acells, mem_base,
                                               scells, mem_len);
             if (rc < 0) {
-                fprintf(stderr, "couldn't set %s/reg for node %d\n", nodename,
+                error_report("couldn't set %s/reg for node %d", nodename,
                         i);
                 goto fail;
             }
@@ -505,7 +505,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
                                           acells, binfo->loader_start,
                                           scells, binfo->ram_size);
         if (rc < 0) {
-            fprintf(stderr, "couldn't set /memory/reg\n");
+            error_report("couldn't set /memory/reg");
             goto fail;
         }
     }
@@ -519,7 +519,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
         rc = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs",
                                      binfo->kernel_cmdline);
         if (rc < 0) {
-            fprintf(stderr, "couldn't set /chosen/bootargs\n");
+            error_report("couldn't set /chosen/bootargs");
             goto fail;
         }
     }
@@ -528,14 +528,14 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
         rc = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-start",
                                    binfo->initrd_start);
         if (rc < 0) {
-            fprintf(stderr, "couldn't set /chosen/linux,initrd-start\n");
+            error_report("couldn't set /chosen/linux,initrd-start");
             goto fail;
         }
 
         rc = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-end",
                                    binfo->initrd_start + binfo->initrd_size);
         if (rc < 0) {
-            fprintf(stderr, "couldn't set /chosen/linux,initrd-end\n");
+            error_report("couldn't set /chosen/linux,initrd-end");
             goto fail;
         }
     }
@@ -690,7 +690,7 @@ static void load_image_to_fw_cfg(FWCfgState *fw_cfg, uint16_t size_key,
         gsize length;
 
         if (!g_file_get_contents(image_name, &contents, &length, NULL)) {
-            fprintf(stderr, "failed to load \"%s\"\n", image_name);
+            error_report("failed to load \"%s\"", image_name);
             exit(1);
         }
         size = length;
@@ -956,7 +956,7 @@ static void arm_load_kernel_notify(Notifier *notifier, void *data)
         is_linux = 1;
     }
     if (kernel_size < 0) {
-        fprintf(stderr, "qemu: could not load kernel '%s'\n",
+        error_report("qemu: could not load kernel '%s'",
                 info->kernel_filename);
         exit(1);
     }
@@ -976,7 +976,7 @@ static void arm_load_kernel_notify(Notifier *notifier, void *data)
                                                   info->initrd_start);
             }
             if (initrd_size < 0) {
-                fprintf(stderr, "qemu: could not load initrd '%s'\n",
+                error_report("qemu: could not load initrd '%s'",
                         info->initrd_filename);
                 exit(1);
             }
@@ -1021,9 +1021,9 @@ static void arm_load_kernel_notify(Notifier *notifier, void *data)
         } else {
             fixupcontext[FIXUP_ARGPTR] = info->loader_start + KERNEL_ARGS_ADDR;
             if (info->ram_size >= (1ULL << 32)) {
-                fprintf(stderr, "qemu: RAM size must be less than 4GB to boot"
-                        " Linux kernel using ATAGS (try passing a device tree"
-                        " using -dtb)\n");
+                error_report("qemu: RAM size must be less than 4GB to boot"
+                            " Linux kernel using ATAGS (try passing a device tree"
+                            " using -dtb)");
                 exit(1);
             }
         }
diff --git a/hw/arm/gumstix.c b/hw/arm/gumstix.c
index bba9e9f57a..8bd34956b7 100644
--- a/hw/arm/gumstix.c
+++ b/hw/arm/gumstix.c
@@ -35,6 +35,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/arm/pxa.h"
 #include "net/net.h"
@@ -62,8 +63,8 @@ static void connex_init(MachineState *machine)
 
     dinfo = drive_get(IF_PFLASH, 0, 0);
     if (!dinfo && !qtest_enabled()) {
-        fprintf(stderr, "A flash image must be given with the "
-                "'pflash' parameter\n");
+        error_report("A flash image must be given with the "
+                     "'pflash' parameter");
         exit(1);
     }
 
@@ -76,7 +77,7 @@ static void connex_init(MachineState *machine)
                                dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,
                                sector_len, connex_rom / sector_len,
                                2, 0, 0, 0, 0, be)) {
-        fprintf(stderr, "qemu: Error registering flash memory.\n");
+        error_report("qemu: Error registering flash memory.");
         exit(1);
     }
 
@@ -99,8 +100,8 @@ static void verdex_init(MachineState *machine)
 
     dinfo = drive_get(IF_PFLASH, 0, 0);
     if (!dinfo && !qtest_enabled()) {
-        fprintf(stderr, "A flash image must be given with the "
-                "'pflash' parameter\n");
+        error_report("A flash image must be given with the "
+                     "'pflash' parameter");
         exit(1);
     }
 
@@ -113,7 +114,7 @@ static void verdex_init(MachineState *machine)
                                dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,
                                sector_len, verdex_rom / sector_len,
                                2, 0, 0, 0, 0, be)) {
-        fprintf(stderr, "qemu: Error registering flash memory.\n");
+        error_report("qemu: Error registering flash memory.");
         exit(1);
     }
 
diff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c
index d07972a966..5c454c7109 100644
--- a/hw/arm/mainstone.c
+++ b/hw/arm/mainstone.c
@@ -12,6 +12,7 @@
  * GNU GPL, version 2 or (at your option) any later version.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "hw/arm/pxa.h"
@@ -143,8 +144,8 @@ static void mainstone_common_init(MemoryRegion *address_space_mem,
             if (qtest_enabled()) {
                 break;
             }
-            fprintf(stderr, "Two flash images must be given with the "
-                    "'pflash' parameter\n");
+            error_report("Two flash images must be given with the "
+                         "'pflash' parameter");
             exit(1);
         }
 
@@ -154,7 +155,7 @@ static void mainstone_common_init(MemoryRegion *address_space_mem,
                                    blk_by_legacy_dinfo(dinfo),
                                    sector_len, MAINSTONE_FLASH / sector_len,
                                    4, 0, 0, 0, 0, be)) {
-            fprintf(stderr, "qemu: Error registering flash memory.\n");
+            error_report("qemu: Error registering flash memory.");
             exit(1);
         }
     }
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index b648770882..06127a873d 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -1626,7 +1626,7 @@ static void musicpal_init(MachineState *machine)
         flash_size = blk_getlength(blk);
         if (flash_size != 8*1024*1024 && flash_size != 16*1024*1024 &&
             flash_size != 32*1024*1024) {
-            fprintf(stderr, "Invalid flash image size\n");
+            error_report("Invalid flash image size");
             exit(1);
         }
 
diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c
index 1388200191..821ee69441 100644
--- a/hw/arm/omap1.c
+++ b/hw/arm/omap1.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -2313,7 +2314,7 @@ void omap_uwire_attach(struct omap_uwire_s *s,
                 uWireSlave *slave, int chipselect)
 {
     if (chipselect < 0 || chipselect > 3) {
-        fprintf(stderr, "%s: Bad chipselect %i\n", __func__, chipselect);
+        error_report("%s: Bad chipselect %i", __func__, chipselect);
         exit(-1);
     }
 
@@ -3989,7 +3990,7 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegion *system_memory,
 
     dinfo = drive_get(IF_SD, 0, 0);
     if (!dinfo) {
-        fprintf(stderr, "qemu: missing SecureDigital device\n");
+        error_report("qemu: missing SecureDigital device");
         exit(1);
     }
     s->mmc = omap_mmc_init(0xfffb7800, system_memory,
diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c
index b53878b8b9..cbbb3ec05f 100644
--- a/hw/arm/omap2.c
+++ b/hw/arm/omap2.c
@@ -19,6 +19,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -1311,7 +1312,7 @@ static void omap_prcm_apll_update(struct omap_prcm_s *s)
     /* TODO: update clocks */
 
     if (mode[0] == 1 || mode[0] == 2 || mode[1] == 1 || mode[1] == 2)
-        fprintf(stderr, "%s: bad EN_54M_PLL or bad EN_96M_PLL\n",
+        error_report("%s: bad EN_54M_PLL or bad EN_96M_PLL",
                         __func__);
 }
 
@@ -1331,7 +1332,7 @@ static void omap_prcm_dpll_update(struct omap_prcm_s *s)
     s->dpll_lock = 0;
     switch (mode) {
     case 0:
-        fprintf(stderr, "%s: bad EN_DPLL\n", __func__);
+        error_report("%s: bad EN_DPLL", __func__);
         break;
     case 1:	/* Low-power bypass mode (Default) */
     case 2:	/* Fast-relock bypass mode */
@@ -1358,7 +1359,7 @@ static void omap_prcm_dpll_update(struct omap_prcm_s *s)
         omap_clk_reparent(core, dpll_x2);
         break;
     case 3:
-        fprintf(stderr, "%s: bad CORE_CLK_SRC\n", __func__);
+        error_report("%s: bad CORE_CLK_SRC", __func__);
         break;
     }
 }
@@ -1627,8 +1628,8 @@ static void omap_prcm_write(void *opaque, hwaddr addr,
 
     case 0x500:	/* CM_CLKEN_PLL */
         if (value & 0xffffff30)
-            fprintf(stderr, "%s: write 0s in CM_CLKEN_PLL for "
-                            "future compatibility\n", __func__);
+            error_report("%s: write 0s in CM_CLKEN_PLL for "
+                         "future compatibility", __func__);
         if ((s->clken[9] ^ value) & 0xcc) {
             s->clken[9] &= ~0xcc;
             s->clken[9] |= value & 0xcc;
@@ -1646,8 +1647,8 @@ static void omap_prcm_write(void *opaque, hwaddr addr,
         break;
     case 0x540:	/* CM_CLKSEL1_PLL */
         if (value & 0xfc4000d7)
-            fprintf(stderr, "%s: write 0s in CM_CLKSEL1_PLL for "
-                            "future compatibility\n", __func__);
+            error_report("%s: write 0s in CM_CLKSEL1_PLL for "
+                         "future compatibility", __func__);
         if ((s->clksel[5] ^ value) & 0x003fff00) {
             s->clksel[5] = value & 0x03bfff28;
             omap_prcm_dpll_update(s);
@@ -1658,8 +1659,8 @@ static void omap_prcm_write(void *opaque, hwaddr addr,
         break;
     case 0x544:	/* CM_CLKSEL2_PLL */
         if (value & ~3)
-            fprintf(stderr, "%s: write 0s in CM_CLKSEL2_PLL[31:2] for "
-                            "future compatibility\n", __func__);
+            error_report("%s: write 0s in CM_CLKSEL2_PLL[31:2] for "
+                         "future compatibility", __func__);
         if (s->clksel[6] != (value & 3)) {
             s->clksel[6] = value & 3;
             omap_prcm_dpll_update(s);
@@ -2486,7 +2487,7 @@ struct omap_mpu_state_s *omap2420_mpu_init(MemoryRegion *sysmem,
 
     dinfo = drive_get(IF_SD, 0, 0);
     if (!dinfo) {
-        fprintf(stderr, "qemu: missing SecureDigital device\n");
+        error_report("qemu: missing SecureDigital device");
         exit(1);
     }
     s->mmc = omap2_mmc_init(omap_l4tao(s->l4, 9),
diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c
index 9a14270795..6eb56ae744 100644
--- a/hw/arm/omap_sx1.c
+++ b/hw/arm/omap_sx1.c
@@ -158,7 +158,7 @@ static void sx1_init(MachineState *machine, const int version)
                                    blk_by_legacy_dinfo(dinfo),
                                    sector_size, flash_size / sector_size,
                                    4, 0, 0, 0, 0, be)) {
-            fprintf(stderr, "qemu: Error registering flash memory %d.\n",
+            error_report("qemu: Error registering flash memory %d.",
                            fl_idx);
         }
         fl_idx++;
@@ -182,7 +182,7 @@ static void sx1_init(MachineState *machine, const int version)
                                    blk_by_legacy_dinfo(dinfo),
                                    sector_size, flash1_size / sector_size,
                                    4, 0, 0, 0, 0, be)) {
-            fprintf(stderr, "qemu: Error registering flash memory %d.\n",
+            error_report("qemu: Error registering flash memory %d.",
                            fl_idx);
         }
         fl_idx++;
@@ -194,7 +194,7 @@ static void sx1_init(MachineState *machine, const int version)
     }
 
     if (!machine->kernel_filename && !fl_idx && !qtest_enabled()) {
-        fprintf(stderr, "Kernel or Flash image must be specified\n");
+        error_report("Kernel or Flash image must be specified");
         exit(1);
     }
 
diff --git a/hw/arm/palm.c b/hw/arm/palm.c
index 285f43709d..7f3637041a 100644
--- a/hw/arm/palm.c
+++ b/hw/arm/palm.c
@@ -233,8 +233,8 @@ static void palmte_init(MachineState *machine)
     if (nb_option_roms) {
         rom_size = get_image_size(option_rom[0].name);
         if (rom_size > flash_size) {
-            fprintf(stderr, "%s: ROM image too big (%x > %x)\n",
-                            __func__, rom_size, flash_size);
+            error_report("%s: ROM image too big (%x > %x)",
+                         __func__, rom_size, flash_size);
             rom_size = 0;
         }
         if (rom_size > 0) {
@@ -243,13 +243,13 @@ static void palmte_init(MachineState *machine)
             rom_loaded = 1;
         }
         if (rom_size < 0) {
-            fprintf(stderr, "%s: error loading '%s'\n",
-                            __func__, option_rom[0].name);
+            error_report("%s: error loading '%s'",
+                         __func__, option_rom[0].name);
         }
     }
 
     if (!rom_loaded && !kernel_filename && !qtest_enabled()) {
-        fprintf(stderr, "Kernel or ROM image must be specified\n");
+        fprintf(stderr, "Kernel or ROM image must be specified");
         exit(1);
     }
 
diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
index 078006f390..c46b65d5d2 100644
--- a/hw/arm/pxa2xx.c
+++ b/hw/arm/pxa2xx.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -2060,7 +2061,7 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
     s = g_new0(PXA2xxState, 1);
 
     if (strncmp(cpu_type, "pxa27", 5)) {
-        fprintf(stderr, "Machine requires a PXA27x processor.\n");
+        error_report("Machine requires a PXA27x processor.");
         exit(1);
     }
 
@@ -2093,7 +2094,7 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
 
     dinfo = drive_get(IF_SD, 0, 0);
     if (!dinfo) {
-        fprintf(stderr, "qemu: missing SecureDigital device\n");
+        error_report("qemu: missing SecureDigital device");
         exit(1);
     }
     s->mmc = pxa2xx_mmci_init(address_space, 0x41100000,
@@ -2218,7 +2219,7 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space, unsigned int sdram_size)
 
     dinfo = drive_get(IF_SD, 0, 0);
     if (!dinfo) {
-        fprintf(stderr, "qemu: missing SecureDigital device\n");
+        error_report("qemu: missing SecureDigital device");
         exit(1);
     }
     s->mmc = pxa2xx_mmci_init(address_space, 0x41100000,
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index de7c0fc4a6..f6f295b363 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "hw/sysbus.h"
 #include "hw/ssi/ssi.h"
@@ -559,7 +560,7 @@ static void ssys_write(void *opaque, hwaddr offset,
     case 0x040: /* SRCR0 */
     case 0x044: /* SRCR1 */
     case 0x048: /* SRCR2 */
-        fprintf(stderr, "Peripheral reset not implemented\n");
+        error_report("Peripheral reset not implemented");
         break;
     case 0x054: /* IMC */
         s->int_mask = value & 0x7f;
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
index a55b1a369c..a069c95f1c 100644
--- a/hw/arm/tosa.c
+++ b/hw/arm/tosa.c
@@ -12,6 +12,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "hw/arm/pxa.h"
@@ -70,19 +71,19 @@ static void tosa_out_switch(void *opaque, int line, int level)
 {
     switch (line) {
         case 0:
-            fprintf(stderr, "blue LED %s.\n", level ? "on" : "off");
+            error_report("blue LED %s.", level ? "on" : "off");
             break;
         case 1:
-            fprintf(stderr, "green LED %s.\n", level ? "on" : "off");
+            error_report("green LED %s.", level ? "on" : "off");
             break;
         case 2:
-            fprintf(stderr, "amber LED %s.\n", level ? "on" : "off");
+            error_report("amber LED %s.", level ? "on" : "off");
             break;
         case 3:
-            fprintf(stderr, "wlan LED %s.\n", level ? "on" : "off");
+            fprintf(stderr, "wlan LED %s.", level ? "on" : "off");
             break;
         default:
-            fprintf(stderr, "Uhandled out event: %d = %d\n", line, level);
+            fprintf(stderr, "Uhandled out event: %d = %d", line, level);
             break;
     }
 }
@@ -133,7 +134,7 @@ static void tosa_gpio_setup(PXA2xxState *cpu,
 
 static uint32_t tosa_ssp_tansfer(SSISlave *dev, uint32_t value)
 {
-    fprintf(stderr, "TG: %d %02x\n", value >> 5, value & 0x1f);
+    error_report("TG: %d %02x", value >> 5, value & 0x1f);
     return 0;
 }
 
@@ -159,13 +160,13 @@ static int tosa_dac_send(I2CSlave *i2c, uint8_t data)
     s->buf[s->len] = data;
     if (s->len ++ > 2) {
 #ifdef VERBOSE
-        fprintf(stderr, "%s: message too long (%i bytes)\n", __func__, s->len);
+        error_report("%s: message too long (%i bytes)", __func__, s->len);
 #endif
         return 1;
     }
 
     if (s->len == 2) {
-        fprintf(stderr, "dac: channel %d value 0x%02x\n",
+        error_report("dac: channel %d value 0x%02x",
                 s->buf[0], s->buf[1]);
     }
 
diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c
index 418792cd02..f0ae069172 100644
--- a/hw/arm/versatilepb.c
+++ b/hw/arm/versatilepb.c
@@ -364,7 +364,7 @@ static void versatile_init(MachineState *machine, int board_id)
                           VERSATILE_FLASH_SECT_SIZE,
                           VERSATILE_FLASH_SIZE / VERSATILE_FLASH_SECT_SIZE,
                           4, 0x0089, 0x0018, 0x0000, 0x0, 0)) {
-        fprintf(stderr, "qemu: Error registering flash memory.\n");
+        error_report("qemu: Error registering flash memory.");
     }
 
     versatile_binfo.ram_size = machine->ram_size;
diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c
index efb5a29475..508629dfe9 100644
--- a/hw/arm/vexpress.c
+++ b/hw/arm/vexpress.c
@@ -266,7 +266,7 @@ static void a9_daughterboard_init(const VexpressMachineState *vms,
 
     if (ram_size > 0x40000000) {
         /* 1GB is the maximum the address space permits */
-        fprintf(stderr, "vexpress-a9: cannot model more than 1GB RAM\n");
+        error_report("vexpress-a9: cannot model more than 1GB RAM");
         exit(1);
     }
 
@@ -355,7 +355,7 @@ static void a15_daughterboard_init(const VexpressMachineState *vms,
          */
         uint64_t rsz = ram_size;
         if (rsz > (30ULL * 1024 * 1024 * 1024)) {
-            fprintf(stderr, "vexpress-a15: cannot model more than 30GB RAM\n");
+            error_report("vexpress-a15: cannot model more than 30GB RAM");
             exit(1);
         }
     }
@@ -640,7 +640,7 @@ static void vexpress_common_init(MachineState *machine)
     pflash0 = ve_pflash_cfi01_register(map[VE_NORFLASH0], "vexpress.flash0",
                                        dinfo);
     if (!pflash0) {
-        fprintf(stderr, "vexpress: error registering flash 0.\n");
+        error_report("vexpress: error registering flash 0.");
         exit(1);
     }
 
@@ -655,7 +655,7 @@ static void vexpress_common_init(MachineState *machine)
     dinfo = drive_get_next(IF_PFLASH);
     if (!ve_pflash_cfi01_register(map[VE_NORFLASH1], "vexpress.flash1",
                                   dinfo)) {
-        fprintf(stderr, "vexpress: error registering flash 1.\n");
+        error_report("vexpress: error registering flash 1.");
         exit(1);
     }
 
diff --git a/hw/arm/z2.c b/hw/arm/z2.c
index 60561c7b7c..5048439799 100644
--- a/hw/arm/z2.c
+++ b/hw/arm/z2.c
@@ -319,8 +319,8 @@ static void z2_init(MachineState *machine)
 #endif
     dinfo = drive_get(IF_PFLASH, 0, 0);
     if (!dinfo && !qtest_enabled()) {
-        fprintf(stderr, "Flash image must be given with the "
-                "'pflash' parameter\n");
+        error_report("Flash image must be given with the "
+                     "'pflash' parameter");
         exit(1);
     }
 
@@ -329,7 +329,7 @@ static void z2_init(MachineState *machine)
                                dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,
                                sector_len, Z2_FLASH_SIZE / sector_len,
                                4, 0, 0, 0, 0, be)) {
-        fprintf(stderr, "qemu: Error registering flash memory.\n");
+        error_report("qemu: Error registering flash memory.");
         exit(1);
     }
 
diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c
index 5556f0e64e..69dfd49191 100644
--- a/hw/block/dataplane/virtio-blk.c
+++ b/hw/block/dataplane/virtio-blk.c
@@ -178,8 +178,8 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev)
     /* Set up guest notifier (irq) */
     r = k->set_guest_notifiers(qbus->parent, nvqs, true);
     if (r != 0) {
-        fprintf(stderr, "virtio-blk failed to set guest notifier (%d), "
-                "ensure -enable-kvm is set\n", r);
+        error_report("virtio-blk failed to set guest notifier (%d), "
+                "ensure -enable-kvm is set", r);
         goto fail_guest_notifiers;
     }
 
@@ -187,7 +187,7 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev)
     for (i = 0; i < nvqs; i++) {
         r = virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, true);
         if (r != 0) {
-            fprintf(stderr, "virtio-blk failed to set host notifier (%d)\n", r);
+            error_report("virtio-blk failed to set host notifier (%d)", r);
             while (i--) {
                 virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, false);
             }
diff --git a/hw/block/onenand.c b/hw/block/onenand.c
index 224daf7ccf..8bcd67688b 100644
--- a/hw/block/onenand.c
+++ b/hw/block/onenand.c
@@ -598,7 +598,7 @@ static void onenand_command(OneNANDState *s)
     default:
         s->status |= ONEN_ERR_CMD;
         s->intstatus |= ONEN_INT;
-        fprintf(stderr, "%s: unknown OneNAND command %x\n",
+        error_report("%s: unknown OneNAND command %x",
                         __func__, s->command);
     }
 
@@ -665,7 +665,7 @@ static uint64_t onenand_read(void *opaque, hwaddr addr,
         return 0x0000;
     }
 
-    fprintf(stderr, "%s: unknown OneNAND register %x\n",
+    error_report("%s: unknown OneNAND register %x",
                     __func__, offset);
     return 0;
 }
@@ -710,7 +710,7 @@ static void onenand_write(void *opaque, hwaddr addr,
             break;
 
         default:
-            fprintf(stderr, "%s: unknown OneNAND boot command %"PRIx64"\n",
+            error_report("%s: unknown OneNAND boot command %"PRIx64"",
                             __func__, value);
         }
         break;
@@ -761,7 +761,7 @@ static void onenand_write(void *opaque, hwaddr addr,
         break;
 
     default:
-        fprintf(stderr, "%s: unknown OneNAND register %x\n",
+        error_report("%s: unknown OneNAND register %x",
                         __func__, offset);
     }
 }
diff --git a/hw/block/tc58128.c b/hw/block/tc58128.c
index 1d9f7ee000..d274c9aafe 100644
--- a/hw/block/tc58128.c
+++ b/hw/block/tc58128.c
@@ -50,8 +50,8 @@ static void init_dev(tc58128_dev * dev, const char *filename)
 	    dev->flash_contents[1] = (blocks >> 8) & 0xff;
 	    dev->flash_contents[2] = (blocks >> 16) & 0xff;
 	    dev->flash_contents[3] = (blocks >> 24) & 0xff;
-	    fprintf(stderr, "loaded %d bytes for %s into flash\n", ret,
-		    filename);
+        error_report("loaded %d bytes for %s into flash", ret,
+                     filename);
 	}
     }
 }
@@ -60,26 +60,26 @@ static void handle_command(tc58128_dev * dev, uint8_t command)
 {
     switch (command) {
     case 0xff:
-	fprintf(stderr, "reset flash device\n");
-	dev->state = WAIT;
-	break;
+        error_report("reset flash device");
+        dev->state = WAIT;
+        break;
     case 0x00:
-	fprintf(stderr, "read mode 1\n");
-	dev->state = READ1;
-	dev->address_cycle = 0;
-	break;
+        error_report("read mode 1");
+        dev->state = READ1;
+        dev->address_cycle = 0;
+        break;
     case 0x01:
-	fprintf(stderr, "read mode 2\n");
-	dev->state = READ2;
-	dev->address_cycle = 0;
-	break;
+        error_report("read mode 2");
+        dev->state = READ2;
+        dev->address_cycle = 0;
+        break;
     case 0x50:
-	fprintf(stderr, "read mode 3\n");
-	dev->state = READ3;
-	dev->address_cycle = 0;
-	break;
+        error_report("read mode 3");
+        dev->state = READ3;
+        dev->address_cycle = 0;
+        break;
     default:
-	fprintf(stderr, "unknown flash command 0x%02x\n", command);
+        error_report("unknown flash command 0x%02x", command);
         abort();
     }
 }
@@ -103,8 +103,8 @@ static void handle_address(tc58128_dev * dev, uint8_t data)
 	    break;
 	case 2:
 	    dev->address += data * 528;
-	    fprintf(stderr, "address pointer in flash: 0x%08x\n",
-		    dev->address);
+        error_report("address pointer in flash: 0x%08x",
+                     dev->address);
 	    break;
 	default:
 	    /* Invalid data */
@@ -119,10 +119,6 @@ static void handle_address(tc58128_dev * dev, uint8_t data)
 
 static uint8_t handle_read(tc58128_dev * dev)
 {
-#if 0
-    if (dev->address % 0x100000 == 0)
-	fprintf(stderr, "reading flash at address 0x%08x\n", dev->address);
-#endif
     return dev->flash_contents[dev->address++];
 }
 
diff --git a/hw/bt/core.c b/hw/bt/core.c
index c1806b71a3..a6e9bf2a3e 100644
--- a/hw/bt/core.c
+++ b/hw/bt/core.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "sysemu/bt.h"
 #include "hw/bt.h"
@@ -31,24 +32,24 @@ static void bt_dummy_lmp_mode_change(struct bt_link_s *link)
 static void bt_dummy_lmp_connection_complete(struct bt_link_s *link)
 {
     if (link->slave->reject_reason)
-        fprintf(stderr, "%s: stray LMP_not_accepted received, fixme\n",
-                        __func__);
+        error_report("%s: stray LMP_not_accepted received, fixme",
+                     __func__);
     else
-        fprintf(stderr, "%s: stray LMP_accepted received, fixme\n",
-                        __func__);
+        error_report("%s: stray LMP_accepted received, fixme",
+                     __func__);
     exit(-1);
 }
 
 static void bt_dummy_lmp_disconnect_master(struct bt_link_s *link)
 {
-    fprintf(stderr, "%s: stray LMP_detach received, fixme\n", __func__);
+    fprintf(stderr, "%s: stray LMP_detach received, fixme", __func__);
     exit(-1);
 }
 
 static void bt_dummy_lmp_acl_resp(struct bt_link_s *link,
                 const uint8_t *data, int start, int len)
 {
-    fprintf(stderr, "%s: stray ACL response PDU, fixme\n", __func__);
+    error_report("%s: stray ACL response PDU, fixme", __func__);
     exit(-1);
 }
 
@@ -113,7 +114,7 @@ void bt_device_done(struct bt_device_s *dev)
     while (*p && *p != dev)
         p = &(*p)->next;
     if (*p != dev) {
-        fprintf(stderr, "%s: bad bt device \"%s\"\n", __func__,
+        error_report("%s: bad bt device \"%s\"", __func__,
                         dev->lmp_name ?: "(null)");
         exit(-1);
     }
diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c
index ac067b81f6..6a171a54b7 100644
--- a/hw/bt/hci-csr.c
+++ b/hw/bt/hci-csr.c
@@ -19,6 +19,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "chardev/char-serial.h"
 #include "qemu/timer.h"
@@ -111,14 +112,14 @@ static uint8_t *csrhci_out_packet(struct csrhci_s *s, int len)
 
     if (off < FIFO_LEN) {
         if (off + len > FIFO_LEN && (s->out_size = off + len) > FIFO_LEN * 2) {
-            fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
+            error_report("%s: can't alloc %i bytes", __func__, len);
             exit(-1);
         }
         return s->outfifo + off;
     }
 
     if (s->out_len > s->out_size) {
-        fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
+        error_report("%s: can't alloc %i bytes", __func__, len);
         exit(-1);
     }
 
@@ -168,8 +169,8 @@ static void csrhci_in_packet_vendor(struct csrhci_s *s, int ocf,
             s->bd_addr.b[5] = data[offset + 2];
 
             s->hci->bdaddr_set(s->hci, s->bd_addr.b);
-            fprintf(stderr, "%s: bd_address loaded from firmware: "
-                            "%02x:%02x:%02x:%02x:%02x:%02x\n", __func__,
+            error_report("%s: bd_address loaded from firmware: "
+                            "%02x:%02x:%02x:%02x:%02x:%02x", __func__,
                             s->bd_addr.b[0], s->bd_addr.b[1], s->bd_addr.b[2],
                             s->bd_addr.b[3], s->bd_addr.b[4], s->bd_addr.b[5]);
         }
@@ -181,7 +182,7 @@ static void csrhci_in_packet_vendor(struct csrhci_s *s, int ocf,
         break;
 
     default:
-        fprintf(stderr, "%s: got a bad CMD packet\n", __func__);
+        error_report("%s: got a bad CMD packet", __func__);
         return;
     }
 
@@ -226,7 +227,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
     case H4_NEG_PKT:
         if (s->in_hdr != sizeof(csrhci_neg_packet) ||
                         memcmp(pkt - 1, csrhci_neg_packet, s->in_hdr)) {
-            fprintf(stderr, "%s: got a bad NEG packet\n", __func__);
+            error_report("%s: got a bad NEG packet", __func__);
             return;
         }
         pkt += 2;
@@ -241,7 +242,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
 
     case H4_ALIVE_PKT:
         if (s->in_hdr != 4 || pkt[1] != 0x55 || pkt[2] != 0x00) {
-            fprintf(stderr, "%s: got a bad ALIVE packet\n", __func__);
+            error_report("%s: got a bad ALIVE packet", __func__);
             return;
         }
 
@@ -254,7 +255,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
     default:
     bad_pkt:
         /* TODO: error out */
-        fprintf(stderr, "%s: got a bad packet\n", __func__);
+        error_report("%s: got a bad packet", __func__);
         break;
     }
 
diff --git a/hw/bt/hci.c b/hw/bt/hci.c
index df05f07887..ac9394daf0 100644
--- a/hw/bt/hci.c
+++ b/hw/bt/hci.c
@@ -19,6 +19,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "qemu/timer.h"
@@ -457,7 +458,7 @@ static inline uint8_t *bt_hci_event_start(struct bt_hci_s *hci,
     int mask_byte;
 
     if (len > 255) {
-        fprintf(stderr, "%s: HCI event params too long (%ib)\n",
+        error_report("%s: HCI event params too long (%ib)",
                         __func__, len);
         exit(-1);
     }
@@ -589,7 +590,7 @@ static void bt_hci_inquiry_result(struct bt_hci_s *hci,
         bt_hci_inquiry_result_with_rssi(hci, slave);
         return;
     default:
-        fprintf(stderr, "%s: bad inquiry mode %02x\n", __func__,
+        error_report("%s: bad inquiry mode %02x", __func__,
                         hci->lm.inquiry_mode);
         exit(-1);
     }
@@ -1971,7 +1972,7 @@ static void bt_submit_hci(struct HCIInfo *info,
         break;
 
     short_hci:
-        fprintf(stderr, "%s: HCI packet too short (%iB)\n",
+        error_report("%s: HCI packet too short (%iB)",
                         __func__, length);
         bt_hci_event_status(hci, HCI_INVALID_PARAMETERS);
         break;
@@ -1991,7 +1992,7 @@ static inline void bt_hci_lmp_acl_data(struct bt_hci_s *hci, uint16_t handle,
     /* TODO: avoid memcpy'ing */
 
     if (len + HCI_ACL_HDR_SIZE > sizeof(hci->acl_buf)) {
-        fprintf(stderr, "%s: can't take ACL packets %i bytes long\n",
+        error_report("%s: can't take ACL packets %i bytes long",
                         __func__, len);
         return;
     }
@@ -2029,7 +2030,7 @@ static void bt_submit_acl(struct HCIInfo *info,
     struct bt_link_s *link;
 
     if (length < HCI_ACL_HDR_SIZE) {
-        fprintf(stderr, "%s: ACL packet too short (%iB)\n",
+        error_report("%s: ACL packet too short (%iB)",
                         __func__, length);
         return;
     }
@@ -2041,15 +2042,15 @@ static void bt_submit_acl(struct HCIInfo *info,
     length -= HCI_ACL_HDR_SIZE;
 
     if (bt_hci_handle_bad(hci, handle)) {
-        fprintf(stderr, "%s: invalid ACL handle %03x\n",
-                        __func__, handle);
+        error_report("%s: invalid ACL handle %03x",
+                     __func__, handle);
         /* TODO: signal an error */
         return;
     }
     handle &= ~HCI_HANDLE_OFFSET;
 
     if (datalen > length) {
-        fprintf(stderr, "%s: ACL packet too short (%iB < %iB)\n",
+        fprintf(stderr, "%s: ACL packet too short (%iB < %iB)",
                         __func__, length, datalen);
         return;
     }
@@ -2060,7 +2061,7 @@ static void bt_submit_acl(struct HCIInfo *info,
         if (!hci->asb_handle)
             hci->asb_handle = handle;
         else if (handle != hci->asb_handle) {
-            fprintf(stderr, "%s: Bad handle %03x in Active Slave Broadcast\n",
+            error_report("%s: Bad handle %03x in Active Slave Broadcast",
                             __func__, handle);
             /* TODO: signal an error */
             return;
@@ -2073,7 +2074,7 @@ static void bt_submit_acl(struct HCIInfo *info,
         if (!hci->psb_handle)
             hci->psb_handle = handle;
         else if (handle != hci->psb_handle) {
-            fprintf(stderr, "%s: Bad handle %03x in Parked Slave Broadcast\n",
+            error_report("%s: Bad handle %03x in Parked Slave Broadcast",
                             __func__, handle);
             /* TODO: signal an error */
             return;
@@ -2105,14 +2106,13 @@ static void bt_submit_sco(struct HCIInfo *info,
     length -= 3;
 
     if (bt_hci_handle_bad(hci, handle)) {
-        fprintf(stderr, "%s: invalid SCO handle %03x\n",
-                        __func__, handle);
+        error_report("%s: invalid SCO handle %03x", __func__, handle);
         return;
     }
 
     if (datalen > length) {
-        fprintf(stderr, "%s: SCO packet too short (%iB < %iB)\n",
-                        __func__, length, datalen);
+        error_report("%s: SCO packet too short (%iB < %iB)",
+                     __func__, length, datalen);
         return;
     }
 
@@ -2223,7 +2223,7 @@ struct HCIInfo *hci_init(const char *str)
            return bt_new_hci(vlan);
     }
 
-    fprintf(stderr, "qemu: Unknown bluetooth HCI `%s'.\n", str);
+    error_report("qemu: Unknown bluetooth HCI `%s'.", str);
 
     return 0;
 }
diff --git a/hw/bt/hid.c b/hw/bt/hid.c
index 09d17322e4..056291f9b5 100644
--- a/hw/bt/hid.c
+++ b/hw/bt/hid.c
@@ -419,7 +419,7 @@ static void bt_hid_interrupt_sdu(void *opaque, const uint8_t *data, int len)
 
     return;
 bad:
-    fprintf(stderr, "%s: bad transaction on Interrupt channel.\n",
+    error_report("%s: bad transaction on Interrupt channel.",
                     __func__);
 }
 
diff --git a/hw/bt/l2cap.c b/hw/bt/l2cap.c
index 3e53dd082d..9cf27f0df6 100644
--- a/hw/bt/l2cap.c
+++ b/hw/bt/l2cap.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "qemu/timer.h"
 #include "qemu/bswap.h"
@@ -467,8 +468,8 @@ static void l2cap_channel_close(struct l2cap_instance_s *l2cap,
 
     if (likely(ch)) {
         if (ch->remote_cid != source_cid) {
-            fprintf(stderr, "%s: Ignoring a Disconnection Request with the "
-                            "invalid SCID %04x.\n", __func__, source_cid);
+            error_report("%s: Ignoring a Disconnection Request with the "
+                            "invalid SCID %04x.", __func__, source_cid);
             return;
         }
 
@@ -790,7 +791,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
 #if 0
     /* TODO: do the IDs really have to be in sequence?  */
     if (!id || (id != l2cap->last_id && id != l2cap->next_id)) {
-        fprintf(stderr, "%s: out of sequence command packet ignored.\n",
+        error_report("%s: out of sequence command packet ignored.",
                         __func__);
         return;
     }
@@ -813,9 +814,9 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
         }
 
         /* We never issue commands other than Command Reject currently.  */
-        fprintf(stderr, "%s: stray Command Reject (%02x, %04x) "
-                        "packet, ignoring.\n", __func__, id,
-                        le16_to_cpu(((l2cap_cmd_rej *) params)->reason));
+        error_report("%s: stray Command Reject (%02x, %04x) "
+                     "packet, ignoring.", __func__, id,
+                     le16_to_cpu(((l2cap_cmd_rej *) params)->reason));
         break;
 
     case L2CAP_CONN_REQ:
@@ -836,8 +837,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
         }
 
         /* We never issue Connection Requests currently. TODO  */
-        fprintf(stderr, "%s: unexpected Connection Response (%02x) "
-                        "packet, ignoring.\n", __func__, id);
+        error_report("%s: unexpected Connection Response (%02x) "
+                     "packet, ignoring.", __func__, id);
         break;
 
     case L2CAP_CONF_REQ:
@@ -865,8 +866,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
                         le16_to_cpu(((l2cap_conf_rsp *) params)->scid),
                         ((l2cap_conf_rsp *) params)->data,
                         len - L2CAP_CONF_RSP_SIZE(0)))
-            fprintf(stderr, "%s: unexpected Configure Response (%02x) "
-                            "packet, ignoring.\n", __func__, id);
+            error_report("%s: unexpected Configure Response (%02x) "
+                         "packet, ignoring.", __func__, id);
         break;
 
     case L2CAP_DISCONN_REQ:
@@ -887,8 +888,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
         }
 
         /* We never issue Disconnection Requests currently. TODO  */
-        fprintf(stderr, "%s: unexpected Disconnection Response (%02x) "
-                        "packet, ignoring.\n", __func__, id);
+        error_report("%s: unexpected Disconnection Response (%02x) "
+                     "packet, ignoring.", __func__, id);
         break;
 
     case L2CAP_ECHO_REQ:
@@ -897,8 +898,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
 
     case L2CAP_ECHO_RSP:
         /* We never issue Echo Requests currently. TODO  */
-        fprintf(stderr, "%s: unexpected Echo Response (%02x) "
-                        "packet, ignoring.\n", __func__, id);
+        error_report("%s: unexpected Echo Response (%02x) "
+                     "packet, ignoring.", __func__, id);
         break;
 
     case L2CAP_INFO_REQ:
@@ -917,8 +918,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
         }
 
         /* We never issue Information Requests currently. TODO  */
-        fprintf(stderr, "%s: unexpected Information Response (%02x) "
-                        "packet, ignoring.\n", __func__, id);
+        error_report("%s: unexpected Information Response (%02x) "
+                     "packet, ignoring.", __func__, id);
         break;
 
     default:
@@ -1066,8 +1067,8 @@ static void l2cap_frame_in(struct l2cap_instance_s *l2cap,
     uint16_t len = le16_to_cpu(frame->len);
 
     if (unlikely(cid >= L2CAP_CID_MAX || !l2cap->cid[cid])) {
-        fprintf(stderr, "%s: frame addressed to a non-existent L2CAP "
-                        "channel %04x received.\n", __func__, cid);
+        error_report("%s: frame addressed to a non-existent L2CAP "
+                     "channel %04x received.", __func__, cid);
         return;
     }
 
@@ -1128,9 +1129,9 @@ static uint8_t *l2cap_bframe_out(struct bt_l2cap_conn_params_s *parm, int len)
     struct l2cap_chan_s *chan = (struct l2cap_chan_s *) parm;
 
     if (len > chan->params.remote_mtu) {
-        fprintf(stderr, "%s: B-Frame for CID %04x longer than %i octets.\n",
-                        __func__,
-                        chan->remote_cid, chan->params.remote_mtu);
+        error_report("%s: B-Frame for CID %04x longer than %i octets.",
+                     __func__,
+                     chan->remote_cid, chan->params.remote_mtu);
         exit(-1);
     }
 
@@ -1353,8 +1354,8 @@ void bt_l2cap_psm_register(struct bt_l2cap_device_s *dev, int psm, int min_mtu,
     struct bt_l2cap_psm_s *new_psm = l2cap_psm(dev, psm);
 
     if (new_psm) {
-        fprintf(stderr, "%s: PSM %04x already registered for device `%s'.\n",
-                        __func__, psm, dev->device.lmp_name);
+        error_report("%s: PSM %04x already registered for device `%s'.",
+                     __func__, psm, dev->device.lmp_name);
         exit(-1);
     }
 
diff --git a/hw/bt/sdp.c b/hw/bt/sdp.c
index 7c0d38b504..f4aba9d74f 100644
--- a/hw/bt/sdp.c
+++ b/hw/bt/sdp.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "qemu/host-utils.h"
 #include "hw/bt.h"
@@ -506,7 +507,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)
     int rsp_len = 0;
 
     if (len < 5) {
-        fprintf(stderr, "%s: short SDP PDU (%iB).\n", __func__, len);
+        error_report("%s: short SDP PDU (%iB).", __func__, len);
         return;
     }
 
@@ -517,7 +518,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)
     len -= 5;
 
     if (len != plen) {
-        fprintf(stderr, "%s: wrong SDP PDU length (%iB != %iB).\n",
+        error_report("%s: wrong SDP PDU length (%iB != %iB).",
                         __func__, plen, len);
         err = SDP_INVALID_PDU_SIZE;
         goto respond;
@@ -544,7 +545,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)
     case SDP_SVC_SEARCH_RSP:
     case SDP_SVC_SEARCH_ATTR_RSP:
     default:
-        fprintf(stderr, "%s: unexpected SDP PDU ID %02x.\n",
+        error_report("%s: unexpected SDP PDU ID %02x.",
                         __func__, pdu_id);
         err = SDP_INVALID_SYNTAX;
         break;
diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
index 3957e78abf..a388f01a23 100644
--- a/hw/char/exynos4210_uart.c
+++ b/hw/char/exynos4210_uart.c
@@ -296,7 +296,7 @@ static void exynos4210_uart_update_irq(Exynos4210UartState *s)
         qemu_irq_raise(s->irq);
 
 #if DEBUG_IRQ
-        fprintf(stderr, "UART%d: IRQ has been raised: %08x\n",
+        error_report("UART%d: IRQ has been raised: %08x",
                 s->channel, s->reg[I_(UINTP)]);
 #endif
 
@@ -388,7 +388,7 @@ static void exynos4210_uart_write(void *opaque, hwaddr offset,
              * qemu_chr_fe_write and background I/O callbacks */
             qemu_chr_fe_write_all(&s->chr, &ch, 1);
 #if DEBUG_Tx_DATA
-            fprintf(stderr, "%c", ch);
+            error_report("%c", ch);
 #endif
             s->reg[I_(UTRSTAT)] |= UTRSTAT_TRANSMITTER_EMPTY |
                     UTRSTAT_Tx_BUFFER_EMPTY;
@@ -400,7 +400,7 @@ static void exynos4210_uart_write(void *opaque, hwaddr offset,
     case UINTP:
         s->reg[I_(UINTP)] &= ~val;
         s->reg[I_(UINTSP)] &= ~val;
-        PRINT_DEBUG("UART%d: UINTP [%04x] have been cleared: %08x\n",
+        PRINT_DEBUG("UART%d: UINTP [%04x] have been cleared: %08x",
                     s->channel, offset, s->reg[I_(UINTP)]);
         exynos4210_uart_update_irq(s);
         break;
diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c
index 56fa402b58..14cb051be9 100644
--- a/hw/char/mcf_uart.c
+++ b/hw/char/mcf_uart.c
@@ -6,6 +6,7 @@
  * This code is licensed under the GPL
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/sysbus.h"
 #include "hw/m68k/mcf.h"
@@ -174,7 +175,7 @@ static void mcf_do_command(mcf_uart_state *s, uint8_t cmd)
         mcf_uart_do_tx(s);
         break;
     case 3: /* Reserved.  */
-        fprintf(stderr, "mcf_uart: Bad TX command\n");
+        error_report("mcf_uart: Bad TX command");
         break;
     }
 
@@ -189,7 +190,7 @@ static void mcf_do_command(mcf_uart_state *s, uint8_t cmd)
         s->rx_enabled = 0;
         break;
     case 3: /* Reserved.  */
-        fprintf(stderr, "mcf_uart: Bad RX command\n");
+        error_report("mcf_uart: Bad RX command");
         break;
     }
 }
diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c
index 835b5378a0..7bb3f3c70b 100644
--- a/hw/char/sh_serial.c
+++ b/hw/char/sh_serial.c
@@ -25,6 +25,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/sh4/sh.h"
 #include "chardev/char-fe.h"
@@ -190,8 +191,8 @@ static void sh_serial_write(void *opaque, hwaddr offs,
         }
     }
 
-    fprintf(stderr, "sh_serial: unsupported write to 0x%02"
-            HWADDR_PRIx "\n", offs);
+    error_report("sh_serial: unsupported write to 0x%02"
+                 HWADDR_PRIx "", offs);
     abort();
 }
 
@@ -290,8 +291,8 @@ static uint64_t sh_serial_read(void *opaque, hwaddr offs,
 #endif
 
     if (ret & ~((1 << 16) - 1)) {
-        fprintf(stderr, "sh_serial: unsupported read from 0x%02"
-                HWADDR_PRIx "\n", offs);
+        error_report("sh_serial: unsupported read from 0x%02"
+                     HWADDR_PRIx "", offs);
         abort();
     }
 
diff --git a/hw/core/loader.c b/hw/core/loader.c
index 4593061445..95bdcbbe36 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -43,6 +43,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "disas/disas.h"
@@ -82,7 +83,7 @@ int load_image(const char *filename, uint8_t *addr)
         return -1;
     size = lseek(fd, 0, SEEK_END);
     if (size == -1) {
-        fprintf(stderr, "file %-20s: get size error: %s\n",
+        error_report("file %-20s: get size error: %s",
                 filename, strerror(errno));
         close(fd);
         return -1;
@@ -623,7 +624,7 @@ static int load_uboot_image(const char *filename, hwaddr *ep, hwaddr *loadaddr,
         goto out;
 
     if (hdr->ih_type != image_type) {
-        fprintf(stderr, "Wrong image type %d, expected %d\n", hdr->ih_type,
+        error_report("Wrong image type %d, expected %d", hdr->ih_type,
                 image_type);
         goto out;
     }
@@ -670,14 +671,14 @@ static int load_uboot_image(const char *filename, hwaddr *ep, hwaddr *loadaddr,
         address = *loadaddr;
         break;
     default:
-        fprintf(stderr, "Unsupported u-boot image type %d\n", hdr->ih_type);
+        error_report("Unsupported u-boot image type %d", hdr->ih_type);
         goto out;
     }
 
     data = g_malloc(hdr->ih_size);
 
     if (read(fd, data, hdr->ih_size) != hdr->ih_size) {
-        fprintf(stderr, "Error reading file\n");
+        error_report("Error reading file");
         goto out;
     }
 
@@ -693,7 +694,7 @@ static int load_uboot_image(const char *filename, hwaddr *ep, hwaddr *loadaddr,
         bytes = gunzip(data, max_bytes, compressed_data, hdr->ih_size);
         g_free(compressed_data);
         if (bytes < 0) {
-            fprintf(stderr, "Unable to decompress gzipped image!\n");
+            error_report("Unable to decompress gzipped image!");
             goto out;
         }
         hdr->ih_size = bytes;
@@ -763,7 +764,7 @@ int load_image_gzipped_buffer(const char *filename, uint64_t max_sz,
     data = g_malloc(max_sz);
     bytes = gunzip(data, max_sz, compressed_data, len);
     if (bytes < 0) {
-        fprintf(stderr, "%s: unable to decompress gzipped kernel file\n",
+        error_report("%s: unable to decompress gzipped kernel file",
                 filename);
         goto out;
     }
@@ -893,8 +894,8 @@ int rom_add_file(const char *file, const char *fw_dir,
     char devpath[100];
 
     if (as && mr) {
-        fprintf(stderr, "Specifying an Address Space and Memory Region is " \
-                "not valid when loading a rom\n");
+        error_report("Specifying an Address Space and Memory Region is " \
+                     "not valid when loading a rom");
         /* We haven't allocated anything so we don't need any cleanup */
         return -1;
     }
@@ -909,7 +910,7 @@ int rom_add_file(const char *file, const char *fw_dir,
 
     fd = open(rom->path, O_RDONLY | O_BINARY);
     if (fd == -1) {
-        fprintf(stderr, "Could not open option rom '%s': %s\n",
+        error_report("Could not open option rom '%s': %s",
                 rom->path, strerror(errno));
         goto err;
     }
@@ -921,7 +922,7 @@ int rom_add_file(const char *file, const char *fw_dir,
     rom->addr     = addr;
     rom->romsize  = lseek(fd, 0, SEEK_END);
     if (rom->romsize == -1) {
-        fprintf(stderr, "rom: file %-20s: get size error: %s\n",
+        error_report("rom: file %-20s: get size error: %s",
                 rom->name, strerror(errno));
         goto err;
     }
@@ -931,7 +932,7 @@ int rom_add_file(const char *file, const char *fw_dir,
     lseek(fd, 0, SEEK_SET);
     rc = read(fd, rom->data, rom->datasize);
     if (rc != rom->datasize) {
-        fprintf(stderr, "rom: file %-20s: read error: rc=%d (expected %zd)\n",
+        error_report("rom: file %-20s: read error: rc=%d (expected %zd)",
                 rom->name, rc, rom->datasize);
         goto err;
     }
@@ -1105,10 +1106,10 @@ int rom_check_and_register_reset(void)
             continue;
         }
         if ((addr > rom->addr) && (as == rom->as)) {
-            fprintf(stderr, "rom: requested regions overlap "
-                    "(rom %s. free=0x" TARGET_FMT_plx
-                    ", addr=0x" TARGET_FMT_plx ")\n",
-                    rom->name, addr, rom->addr);
+            error_report("rom: requested regions overlap "
+                         "(rom %s. free=0x" TARGET_FMT_plx
+                         ", addr=0x" TARGET_FMT_plx ")",
+                         rom->name, addr, rom->addr);
             return -1;
         }
         addr  = rom->addr;
diff --git a/hw/core/ptimer.c b/hw/core/ptimer.c
index 7221c68a98..514e177de2 100644
--- a/hw/core/ptimer.c
+++ b/hw/core/ptimer.c
@@ -6,6 +6,7 @@
  * This code is licensed under the GNU LGPL.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "hw/ptimer.h"
@@ -56,7 +57,7 @@ static void ptimer_reload(ptimer_state *s, int delta_adjust)
 
     if (s->period == 0) {
         if (!qtest_enabled()) {
-            fprintf(stderr, "Timer with period zero, disabling\n");
+            error_report("Timer with period zero, disabling");
         }
         timer_del(s->timer);
         s->enabled = 0;
@@ -89,7 +90,7 @@ static void ptimer_reload(ptimer_state *s, int delta_adjust)
 
     if (delta == 0) {
         if (!qtest_enabled()) {
-            fprintf(stderr, "Timer with delta zero, disabling\n");
+            error_report("Timer with delta zero, disabling");
         }
         timer_del(s->timer);
         s->enabled = 0;
@@ -263,7 +264,7 @@ void ptimer_run(ptimer_state *s, int oneshot)
 
     if (was_disabled && s->period == 0) {
         if (!qtest_enabled()) {
-            fprintf(stderr, "Timer with period zero, disabling\n");
+            error_report("Timer with period zero, disabling");
         }
         return;
     }
diff --git a/hw/cris/axis_dev88.c b/hw/cris/axis_dev88.c
index 5eb552bce2..d121836b69 100644
--- a/hw/cris/axis_dev88.c
+++ b/hw/cris/axis_dev88.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -349,7 +350,7 @@ void axisdev88_init(MachineState *machine)
         li.cmdline = kernel_cmdline;
         cris_load_image(cpu, &li);
     } else if (!qtest_enabled()) {
-        fprintf(stderr, "Kernel image must be specified\n");
+        error_report("Kernel image must be specified");
         exit(1);
     }
 }
diff --git a/hw/cris/boot.c b/hw/cris/boot.c
index f896ed7f86..f199a13a82 100644
--- a/hw/cris/boot.c
+++ b/hw/cris/boot.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/hw.h"
@@ -86,14 +87,14 @@ void cris_load_image(CRISCPU *cpu, struct cris_load_info *li)
     }
 
     if (image_size < 0) {
-        fprintf(stderr, "qemu: could not load kernel '%s'\n",
+        error_report("qemu: could not load kernel '%s'",
                 li->image_filename);
         exit(1);
     }
 
     if (li->cmdline && (kcmdline_len = strlen(li->cmdline))) {
         if (kcmdline_len > 256) {
-            fprintf(stderr, "Too long CRIS kernel cmdline (max 256)\n");
+            error_report("Too long CRIS kernel cmdline (max 256)");
             exit(1);
         }
         pstrcpy_targphys("cmdline", 0x40000000, 256, li->cmdline);
diff --git a/hw/display/blizzard.c b/hw/display/blizzard.c
index 291abe6fca..0d12e078c4 100644
--- a/hw/display/blizzard.c
+++ b/hw/display/blizzard.c
@@ -474,7 +474,7 @@ static uint16_t blizzard_reg_read(void *opaque, uint8_t reg)
         return s->gpio_pdown;
 
     default:
-        fprintf(stderr, "%s: unknown register %02x\n", __func__, reg);
+        error_report("%s: unknown register %02x", __func__, reg);
         return 0;
     }
 }
@@ -501,7 +501,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
     case 0x0c:	/* PLL Mode Control 0 */
         s->pll_mode = value & 0x77;
         if ((value & 3) == 0 || (value & 3) == 3)
-            fprintf(stderr, "%s: wrong PLL Control bits (%i)\n",
+            error_report("%s: wrong PLL Control bits (%i)",
                     __func__, value & 3);
         break;
 
@@ -541,7 +541,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
     case 0x28:	/* LCD Panel Configuration */
         s->lcd_config = value & 0xff;
         if (value & (1 << 7))
-            fprintf(stderr, "%s: data swap not supported!\n", __func__);
+            error_report("%s: data swap not supported!", __func__);
         break;
 
     case 0x2a:	/* LCD Horizontal Display Width */
@@ -585,7 +585,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
     case 0x40:	/* High-speed Serial Interface Tx Configuration Port 1 */
         s->hssi_config[1] = value;
         if (((value >> 4) & 3) == 3)
-            fprintf(stderr, "%s: Illegal active-data-links value\n",
+            error_report("%s: Illegal active-data-links value",
                             __func__);
         break;
     case 0x42:	/* High-speed Serial Interface Tx Mode */
@@ -641,7 +641,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->enable = value & 1;
         s->blank = (value >> 1) & 1;
         if (value & (1 << 4))
-            fprintf(stderr, "%s: Macrovision enable attempt!\n", __func__);
+            error_report("%s: Macrovision enable attempt!", __func__);
         break;
 
     case 0x6a:	/* Special Effects */
@@ -717,7 +717,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->iformat = value & 0xf;
         s->bpp = blizzard_iformat_bpp[s->iformat];
         if (!s->bpp)
-            fprintf(stderr, "%s: Illegal or unsupported input format %x\n",
+            error_report("%s: Illegal or unsupported input format %x",
                             __func__, s->iformat);
         break;
     case 0x8e:	/* Data Source Select */
@@ -729,7 +729,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
                                         s->iy[1] != s->oy[1])) ||
                         !((s->ix[1] - s->ix[0]) & (s->iy[1] - s->iy[0]) &
                           (s->ox[1] - s->ox[0]) & (s->oy[1] - s->oy[0]) & 1))
-            fprintf(stderr, "%s: Illegal input/output window positions\n",
+            error_report("%s: Illegal input/output window positions",
                             __func__);
 
         blizzard_transfer_setup(s);
@@ -783,8 +783,8 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
     case 0xe6:	/* Power-save */
         s->pm = value & 0x83;
         if (value & s->mode & 1)
-            fprintf(stderr, "%s: The display must be disabled before entering "
-                            "Standby Mode\n", __func__);
+            error_report("%s: The display must be disabled before entering "
+                         "Standby Mode", __func__);
         break;
     case 0xe8:	/* Non-display Period Control / Status */
         s->status = value & 0x1b;
@@ -815,7 +815,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         break;
 
     default:
-        fprintf(stderr, "%s: unknown register %02x\n", __func__, reg);
+        error_report("%s: unknown register %02x", __func__, reg);
         break;
     }
 }
diff --git a/hw/display/omap_dss.c b/hw/display/omap_dss.c
index 601f178fdd..52d6e753d3 100644
--- a/hw/display/omap_dss.c
+++ b/hw/display/omap_dss.c
@@ -406,10 +406,10 @@ static void omap_disc_write(void *opaque, hwaddr addr,
         s->lcd.enable = (value >> 0) & 1;
         if (value & (1 << 12))			/* OVERLAY_OPTIMIZATION */
             if (!((s->dispc.l[1].attr | s->dispc.l[2].attr) & 1)) {
-                fprintf(stderr, "%s: Overlay Optimization when no overlay "
-                        "region effectively exists leads to "
-                        "unpredictable behaviour!\n", __func__);
-            }
+                error_report("%s: Overlay Optimization when no overlay "
+                             "region effectively exists leads to "
+                             "unpredictable behaviour!", __func__);
+           }
         if (value & (1 << 6)) {				/* GODIGITAL */
             /* XXX: Shadowed fields are:
              * s->dispc.config
@@ -525,8 +525,8 @@ static void omap_disc_write(void *opaque, hwaddr addr,
     case 0x0a0:	/* DISPC_GFX_ATTRIBUTES */
         s->dispc.l[0].attr = value & 0x7ff;
         if (value & (3 << 9))
-            fprintf(stderr, "%s: Big-endian pixel format not supported\n",
-                            __func__);
+            error_report("%s: Big-endian pixel format not supported",
+                         __func__);
         s->dispc.l[0].enable = value & 1;
         s->dispc.l[0].bpp = (value >> 1) & 0xf;
         s->dispc.invalidate = 1;
@@ -617,7 +617,7 @@ static void omap_rfbi_transfer_start(struct omap_dss_s *s)
     if (s->rfbi.control & (1 << 1)) {				/* BYPASS */
         /* TODO: in non-Bypass mode we probably need to just assert the
          * DRQ and wait for DMA to write the pixels.  */
-        fprintf(stderr, "%s: Bypass mode unimplemented\n", __func__);
+        error_report("%s: Bypass mode unimplemented", __func__);
         return;
     }
 
diff --git a/hw/display/pl110.c b/hw/display/pl110.c
index 8c7dcc6f0a..b8b7903d36 100644
--- a/hw/display/pl110.c
+++ b/hw/display/pl110.c
@@ -174,7 +174,7 @@ static void pl110_update_display(void *opaque)
         dest_width = 4;
         break;
     default:
-        fprintf(stderr, "pl110: Bad color depth\n");
+        error_report("pl110: Bad color depth");
         exit(1);
     }
     if (s->cr & PL110_CR_BGR)
diff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c
index b83f80753a..ae3a365849 100644
--- a/hw/display/pxa2xx_lcd.c
+++ b/hw/display/pxa2xx_lcd.c
@@ -1050,7 +1050,7 @@ PXA2xxLCDState *pxa2xx_lcdc_init(MemoryRegion *sysmem,
         s->dest_width = 4;
         break;
     default:
-        fprintf(stderr, "%s: Bad color depth\n", __func__);
+        error_report("%s: Bad color depth", __func__);
         exit(1);
     }
 
diff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c
index e7ac4f8789..0cd07028a4 100644
--- a/hw/display/qxl-render.c
+++ b/hw/display/qxl-render.c
@@ -78,7 +78,7 @@ void qxl_render_resize(PCIQXLDevice *qxl)
         qxl->guest_primary.bits_pp = 32;
         break;
     default:
-        fprintf(stderr, "%s: unhandled format: %x\n", __func__,
+        error_report("%s: unhandled format: %x", __func__,
                 qxl->guest_primary.surface.format);
         qxl->guest_primary.bytes_pp = 4;
         qxl->guest_primary.bits_pp = 32;
@@ -247,7 +247,7 @@ static QEMUCursor *qxl_cursor(PCIQXLDevice *qxl, QXLCursor *cursor,
         }
         break;
     default:
-        fprintf(stderr, "%s: not implemented: type %d\n",
+        error_report("%s: not implemented: type %d",
                 __func__, cursor->header.type);
         goto fail;
     }
@@ -275,9 +275,8 @@ int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext)
     }
 
     if (qxl->debug > 1 && cmd->type != QXL_CURSOR_MOVE) {
-        fprintf(stderr, "%s", __func__);
+        error_report("%s", __func__);
         qxl_log_cmd_cursor(qxl, cmd, ext->group_id);
-        fprintf(stderr, "\n");
     }
     switch (cmd->type) {
     case QXL_CURSOR_SET:
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index ae3677fd1e..0163a18bbb 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -875,7 +875,7 @@ static void interface_notify_update(QXLInstance *sin, uint32_t update_id)
      * Probably was at some earlier version that is prior to git start (2009),
      * and is still guest trigerrable.
      */
-    fprintf(stderr, "%s: deprecated\n", __func__);
+    error_report("%s: deprecated", __func__);
 }
 
 /* called from spice server thread context only */
@@ -905,7 +905,7 @@ static void interface_async_complete_io(PCIQXLDevice *qxl, QXLCookie *cookie)
 
     trace_qxl_interface_async_complete_io(qxl->id, current_async, cookie);
     if (!cookie) {
-        fprintf(stderr, "qxl: %s: error, cookie is NULL\n", __func__);
+        error_report("qxl: %s: error, cookie is NULL", __func__);
         return;
     }
     if (cookie && current_async != cookie->io) {
@@ -930,7 +930,7 @@ static void interface_async_complete_io(PCIQXLDevice *qxl, QXLCookie *cookie)
         qxl_spice_destroy_surface_wait_complete(qxl, cookie->u.surface_id);
         break;
     default:
-        fprintf(stderr, "qxl: %s: unexpected current_async %d\n", __func__,
+        error_report("qxl: %s: unexpected current_async %d", __func__,
                 current_async);
     }
     qxl_send_events(qxl, QXL_INTERRUPT_IO_CMD);
@@ -998,7 +998,7 @@ static void interface_async_complete(QXLInstance *sin, uint64_t cookie_token)
     case QXL_COOKIE_TYPE_POST_LOAD_MONITORS_CONFIG:
         break;
     default:
-        fprintf(stderr, "qxl: %s: unexpected cookie type %d\n",
+        error_report("qxl: %s: unexpected cookie type %d",
                 __func__, cookie->type);
         g_free(cookie);
     }
@@ -1875,7 +1875,7 @@ static void qxl_send_events(PCIQXLDevice *d, uint32_t events)
     trace_qxl_send_events(d->id, events);
     if (!qemu_spice_display_is_running(&d->ssd)) {
         /* spice-server tracks guest running state and should not do this */
-        fprintf(stderr, "%s: spice-server bug: guest stopped, ignoring\n",
+        error_report("%s: spice-server bug: guest stopped, ignoring",
                 __func__);
         trace_qxl_send_events_vm_stopped(d->id, events);
         return;
diff --git a/hw/display/tc6393xb.c b/hw/display/tc6393xb.c
index 79f161740a..8b708a858b 100644
--- a/hw/display/tc6393xb.c
+++ b/hw/display/tc6393xb.c
@@ -159,7 +159,7 @@ void tc6393xb_gpio_out_set(TC6393xbState *s, int line,
                     qemu_irq handler)
 {
     if (line >= TC6393XB_GPIOS) {
-        fprintf(stderr, "TC6393xb: no GPIO pin %d\n", line);
+        error_report("TC6393xb: no GPIO pin %d", line);
         return;
     }
 
@@ -190,7 +190,7 @@ static void tc6393xb_l3v(void *opaque, int line, int level)
 {
     TC6393xbState *s = opaque;
     s->blank = !level;
-    fprintf(stderr, "L3V: %d\n", level);
+    error_report("L3V: %d", level);
 }
 
 static void tc6393xb_sub_irq(void *opaque, int line, int level) {
@@ -257,7 +257,7 @@ static uint32_t tc6393xb_scr_readb(TC6393xbState *s, hwaddr addr)
         SCR_REG_B(CONFIG);
         SCR_REG_B(DEBUG);
     }
-    fprintf(stderr, "tc6393xb_scr: unhandled read at %08x\n", (uint32_t) addr);
+    error_report("tc6393xb_scr: unhandled read at %08x", (uint32_t) addr);
     return 0;
 }
 #undef SCR_REG_B
@@ -318,8 +318,8 @@ static void tc6393xb_scr_writeb(TC6393xbState *s, hwaddr addr, uint32_t value)
         SCR_REG_B(CONFIG);
         SCR_REG_B(DEBUG);
     }
-    fprintf(stderr, "tc6393xb_scr: unhandled write at %08x: %02x\n",
-					(uint32_t) addr, value & 0xff);
+    error_report("tc6393xb_scr: unhandled write at %08x: %02x",
+                 (uint32_t) addr, value & 0xff);
 }
 #undef SCR_REG_B
 #undef SCR_REG_W
@@ -341,7 +341,7 @@ static uint32_t tc6393xb_nand_cfg_readb(TC6393xbState *s, hwaddr addr) {
         case NAND_CFG_BASE + 3:
             return s->nand_phys >> (addr - NAND_CFG_BASE);
     }
-    fprintf(stderr, "tc6393xb_nand_cfg: unhandled read at %08x\n", (uint32_t) addr);
+    error_report("tc6393xb_nand_cfg: unhandled read at %08x", (uint32_t) addr);
     return 0;
 }
 static void tc6393xb_nand_cfg_writeb(TC6393xbState *s, hwaddr addr, uint32_t value) {
@@ -357,7 +357,7 @@ static void tc6393xb_nand_cfg_writeb(TC6393xbState *s, hwaddr addr, uint32_t val
             s->nand_phys |= (value & 0xff) << ((addr - NAND_CFG_BASE) * 8);
             return;
     }
-    fprintf(stderr, "tc6393xb_nand_cfg: unhandled write at %08x: %02x\n",
+    error_report("tc6393xb_nand_cfg: unhandled write at %08x: %02x",
 					(uint32_t) addr, value & 0xff);
 }
 
@@ -377,12 +377,14 @@ static uint32_t tc6393xb_nand_readb(TC6393xbState *s, hwaddr addr) {
         case NAND_IMR:
             return s->nand.imr;
     }
-    fprintf(stderr, "tc6393xb_nand: unhandled read at %08x\n", (uint32_t) addr);
+    error_report("tc6393xb_nand: unhandled read at %08x", (uint32_t) addr);
     return 0;
 }
-static void tc6393xb_nand_writeb(TC6393xbState *s, hwaddr addr, uint32_t value) {
-//    fprintf(stderr, "tc6393xb_nand: write at %08x: %02x\n",
-//					(uint32_t) addr, value & 0xff);
+static void tc6393xb_nand_writeb(TC6393xbState *s, hwaddr addr, uint32_t value)
+{
+    /* error_report("tc6393xb_nand: write at %08x: %02x",
+     *              (uint32_t) addr, value & 0xff);
+     */
     switch (addr) {
         case NAND_DATA + 0:
         case NAND_DATA + 1:
@@ -420,7 +422,7 @@ static void tc6393xb_nand_writeb(TC6393xbState *s, hwaddr addr, uint32_t value)
             tc6393xb_nand_irq(s);
             return;
     }
-    fprintf(stderr, "tc6393xb_nand: unhandled write at %08x: %02x\n",
+    error_report("tc6393xb_nand: unhandled write at %08x: %02x",
 					(uint32_t) addr, value & 0xff);
 }
 
@@ -522,13 +524,15 @@ static uint64_t tc6393xb_readb(void *opaque, hwaddr addr,
     };
 
     if ((addr &~0xff) == s->nand_phys && s->nand_enable) {
-//        return tc6393xb_nand_readb(s, addr & 0xff);
+        /* return tc6393xb_nand_readb(s, addr & 0xff); */
         uint8_t d = tc6393xb_nand_readb(s, addr & 0xff);
-//        fprintf(stderr, "tc6393xb_nand: read at %08x: %02hhx\n", (uint32_t) addr, d);
+        /* error_report("tc6393xb_nand: read at %08x: %02hhx",
+         *              (uint32_t) addr, d);
+         */
         return d;
     }
 
-//    fprintf(stderr, "tc6393xb: unhandled read at %08x\n", (uint32_t) addr);
+    /* error_report("tc6393xb: unhandled read at %08x", (uint32_t) addr); */
     return 0;
 }
 
@@ -548,7 +552,7 @@ static void tc6393xb_writeb(void *opaque, hwaddr addr,
     if ((addr &~0xff) == s->nand_phys && s->nand_enable)
         tc6393xb_nand_writeb(s, addr & 0xff, value);
     else
-        fprintf(stderr, "tc6393xb: unhandled write at %08x: %02x\n",
+        error_report("tc6393xb: unhandled write at %08x: %02x",
                 (uint32_t) addr, (int)value & 0xff);
 }
 
diff --git a/hw/display/virtio-gpu-3d.c b/hw/display/virtio-gpu-3d.c
index 8c106a662d..88bc1c84a6 100644
--- a/hw/display/virtio-gpu-3d.c
+++ b/hw/display/virtio-gpu-3d.c
@@ -473,7 +473,7 @@ void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
         return;
     }
     if (cmd->error) {
-        fprintf(stderr, "%s: ctrl 0x%x, error 0x%x\n", __func__,
+        error_report("%s: ctrl 0x%x, error 0x%x", __func__,
                 cmd->cmd_hdr.type, cmd->error);
         virtio_gpu_ctrl_response_nodata(g, cmd, cmd->error);
         return;
@@ -556,7 +556,7 @@ static void virtio_gpu_print_stats(void *opaque)
     VirtIOGPU *g = opaque;
 
     if (g->stats.requests) {
-        fprintf(stderr, "stats: vq req %4d, %3d -- 3D %4d (%5d)\n",
+        error_report("stats: vq req %4d, %3d -- 3D %4d (%5d)",
                 g->stats.requests,
                 g->stats.max_inflight,
                 g->stats.req_3d,
diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c
index 4a64b41259..44d425e1f6 100644
--- a/hw/display/vmware_vga.c
+++ b/hw/display/vmware_vga.c
@@ -293,45 +293,45 @@ static inline bool vmsvga_verify_rect(DisplaySurface *surface,
                                       int x, int y, int w, int h)
 {
     if (x < 0) {
-        fprintf(stderr, "%s: x was < 0 (%d)\n", name, x);
+        error_report("%s: x was < 0 (%d)", name, x);
         return false;
     }
     if (x > SVGA_MAX_WIDTH) {
-        fprintf(stderr, "%s: x was > %d (%d)\n", name, SVGA_MAX_WIDTH, x);
+        error_report("%s: x was > %d (%d)", name, SVGA_MAX_WIDTH, x);
         return false;
     }
     if (w < 0) {
-        fprintf(stderr, "%s: w was < 0 (%d)\n", name, w);
+        error_report("%s: w was < 0 (%d)", name, w);
         return false;
     }
     if (w > SVGA_MAX_WIDTH) {
-        fprintf(stderr, "%s: w was > %d (%d)\n", name, SVGA_MAX_WIDTH, w);
+        error_report("%s: w was > %d (%d)", name, SVGA_MAX_WIDTH, w);
         return false;
     }
     if (x + w > surface_width(surface)) {
-        fprintf(stderr, "%s: width was > %d (x: %d, w: %d)\n",
+        error_report("%s: width was > %d (x: %d, w: %d)",
                 name, surface_width(surface), x, w);
         return false;
     }
 
     if (y < 0) {
-        fprintf(stderr, "%s: y was < 0 (%d)\n", name, y);
+        error_report("%s: y was < 0 (%d)", name, y);
         return false;
     }
     if (y > SVGA_MAX_HEIGHT) {
-        fprintf(stderr, "%s: y was > %d (%d)\n", name, SVGA_MAX_HEIGHT, y);
+        error_report("%s: y was > %d (%d)", name, SVGA_MAX_HEIGHT, y);
         return false;
     }
     if (h < 0) {
-        fprintf(stderr, "%s: h was < 0 (%d)\n", name, h);
+        error_report("%s: h was < 0 (%d)", name, h);
         return false;
     }
     if (h > SVGA_MAX_HEIGHT) {
-        fprintf(stderr, "%s: h was > %d (%d)\n", name, SVGA_MAX_HEIGHT, h);
+        error_report("%s: h was > %d (%d)", name, SVGA_MAX_HEIGHT, h);
         return false;
     }
     if (y + h > surface_height(surface)) {
-        fprintf(stderr, "%s: update height > %d (y: %d, h: %d)\n",
+        error_report("%s: update height > %d (y: %d, h: %d)",
                 name, surface_height(surface), y, h);
         return false;
     }
@@ -529,7 +529,7 @@ static inline void vmsvga_cursor_define(struct vmsvga_state_s *s,
 #endif
         break;
     default:
-        fprintf(stderr, "%s: unhandled bpp %d, using fallback cursor\n",
+        error_report("%s: unhandled bpp %d, using fallback cursor",
                 __func__, c->bpp);
         cursor_put(qc);
         qc = cursor_builtin_left_ptr();
diff --git a/hw/dma/omap_dma.c b/hw/dma/omap_dma.c
index abd18c67ea..5d7fe06d98 100644
--- a/hw/dma/omap_dma.c
+++ b/hw/dma/omap_dma.c
@@ -18,6 +18,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "qemu/timer.h"
 #include "hw/arm/omap.h"
@@ -1898,13 +1899,13 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
             omap_dma_reset(s->dma);
         s->ocp = value & 0x3321;
         if (((s->ocp >> 12) & 3) == 3)				/* MIDLEMODE */
-            fprintf(stderr, "%s: invalid DMA power mode\n", __func__);
+            error_report("%s: invalid DMA power mode", __func__);
         return;
 
     case 0x78:	/* DMA4_GCR */
         s->gcr = value & 0x00ff00ff;
 	if ((value & 0xff) == 0x00)		/* MAX_CHANNEL_FIFO_DEPTH */
-            fprintf(stderr, "%s: wrong FIFO depth in GCR\n", __func__);
+            error_report("%s: wrong FIFO depth in GCR", __func__);
         return;
 
     case 0x80 ... 0xfff:
@@ -1934,8 +1935,8 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->buf_disable = (value >> 25) & 1;
         ch->src_sync = (value >> 24) & 1;	/* XXX For CamDMA must be 1 */
         if (ch->buf_disable && !ch->src_sync)
-            fprintf(stderr, "%s: Buffering disable is not allowed in "
-                            "destination synchronised mode\n", __func__);
+            error_report("%s: Buffering disable is not allowed in "
+                         "destination synchronised mode", __func__);
         ch->prefetch = (value >> 23) & 1;
         ch->bs = (value >> 18) & 1;
         ch->transparent_copy = (value >> 17) & 1;
@@ -1946,8 +1947,8 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->priority = (value & 0x0040) >> 6;
         ch->fs = (value & 0x0020) >> 5;
         if (ch->fs && ch->bs && ch->mode[0] && ch->mode[1])
-            fprintf(stderr, "%s: For a packet transfer at least one port "
-                            "must be constant-addressed\n", __func__);
+            error_report("%s: For a packet transfer at least one port "
+                         "must be constant-addressed", __func__);
         ch->sync = (value & 0x001f) | ((value >> 14) & 0x0060);
         /* XXX must be 0x01 for CamDMA */
 
@@ -1977,8 +1978,8 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->endian[1] =(value >> 19) & 1;
         ch->endian_lock[1] =(value >> 18) & 1;
         if (ch->endian[0] != ch->endian[1])
-            fprintf(stderr, "%s: DMA endianness conversion enable attempt\n",
-                            __func__);
+            error_report("%s: DMA endianness conversion enable attempt",
+                          __func__);
         ch->write_mode = (value >> 16) & 3;
         ch->burst[1] = (value & 0xc000) >> 14;
         ch->pack[1] = (value & 0x2000) >> 13;
@@ -1986,12 +1987,13 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->burst[0] = (value & 0x0180) >> 7;
         ch->pack[0] = (value & 0x0040) >> 6;
         ch->translate[0] = (value & 0x003c) >> 2;
-        if (ch->translate[0] | ch->translate[1])
-            fprintf(stderr, "%s: bad MReqAddressTranslate sideband signal\n",
-                            __func__);
+        if (ch->translate[0] | ch->translate[1]) {
+            error_report("%s: bad MReqAddressTranslate sideband signal",
+                         __func__);
+        }
         ch->data_type = 1 << (value & 3);
         if ((value & 3) == 3) {
-            printf("%s: bad data_type for DMA channel\n", __func__);
+            error_report("%s: bad data_type for DMA channel", __func__);
             ch->data_type >>= 1;
         }
         break;
diff --git a/hw/dma/soc_dma.c b/hw/dma/soc_dma.c
index 9bb499bf9c..7339a3ec95 100644
--- a/hw/dma/soc_dma.c
+++ b/hw/dma/soc_dma.c
@@ -18,6 +18,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "qemu/timer.h"
 #include "hw/arm/soc_dma.h"
@@ -270,11 +271,11 @@ void soc_dma_port_add_fifo(struct soc_dma_s *soc, hwaddr virt_base,
         if (entry->type == soc_dma_port_mem) {
             if (entry->addr <= virt_base &&
                             entry->addr + entry->u.mem.size > virt_base) {
-                fprintf(stderr, "%s: FIFO at %"PRIx64
-                                " collides with RAM region at %"PRIx64
-                                "-%"PRIx64 "\n", __func__,
-                                virt_base, entry->addr,
-                                (entry->addr + entry->u.mem.size));
+                error_report("%s: FIFO at %"PRIx64
+                             " collides with RAM region at %"PRIx64
+                             "-%"PRIx64 "", __func__,
+                             virt_base, entry->addr,
+                             (entry->addr + entry->u.mem.size));
                 exit(-1);
             }
 
@@ -284,9 +285,9 @@ void soc_dma_port_add_fifo(struct soc_dma_s *soc, hwaddr virt_base,
             while (entry < dma->memmap + dma->memmap_size &&
                             entry->addr <= virt_base) {
                 if (entry->addr == virt_base && entry->u.fifo.out == out) {
-                    fprintf(stderr, "%s: FIFO at %"PRIx64
-                                    " collides FIFO at %"PRIx64 "\n",
-                                    __func__, virt_base, entry->addr);
+                    error_report("%s: FIFO at %"PRIx64
+                                 " collides FIFO at %"PRIx64 "",
+                                 __func__, virt_base, entry->addr);
                     exit(-1);
                 }
 
@@ -321,11 +322,11 @@ void soc_dma_port_add_mem(struct soc_dma_s *soc, uint8_t *phys_base,
             if ((entry->addr >= virt_base && entry->addr < virt_base + size) ||
                             (entry->addr <= virt_base &&
                              entry->addr + entry->u.mem.size > virt_base)) {
-                fprintf(stderr, "%s: RAM at %"PRIx64 "-%"PRIx64
-                                " collides with RAM region at %"PRIx64
-                                "-%"PRIx64 "\n", __func__,
-                                virt_base, virt_base + size,
-                                entry->addr, entry->addr + entry->u.mem.size);
+                error_report("%s: RAM at %"PRIx64 "-%"PRIx64
+                             " collides with RAM region at %"PRIx64
+                             "-%"PRIx64 "", __func__,
+                             virt_base, virt_base + size,
+                             entry->addr, entry->addr + entry->u.mem.size);
                 exit(-1);
             }
 
@@ -334,11 +335,11 @@ void soc_dma_port_add_mem(struct soc_dma_s *soc, uint8_t *phys_base,
         } else {
             if (entry->addr >= virt_base &&
                             entry->addr < virt_base + size) {
-                fprintf(stderr, "%s: RAM at %"PRIx64 "-%"PRIx64
-                                " collides with FIFO at %"PRIx64
-                                "\n", __func__,
-                                virt_base, virt_base + size,
-                                entry->addr);
+                error_report("%s: RAM at %"PRIx64 "-%"PRIx64
+                             " collides with FIFO at %"PRIx64
+                             "", __func__,
+                             virt_base, virt_base + size,
+                             entry->addr);
                 exit(-1);
             }
 
diff --git a/hw/gpio/omap_gpio.c b/hw/gpio/omap_gpio.c
index 08472193b5..57aa2e54f5 100644
--- a/hw/gpio/omap_gpio.c
+++ b/hw/gpio/omap_gpio.c
@@ -399,7 +399,7 @@ static void omap2_gpio_module_write(void *opaque, hwaddr addr,
 
     case 0x10:	/* GPIO_SYSCONFIG */
         if (((value >> 3) & 3) == 3)
-            fprintf(stderr, "%s: bad IDLEMODE value\n", __func__);
+            error_report("%s: bad IDLEMODE value", __func__);
         if (value & 2)
             omap2_gpio_module_reset(s);
         s->config[0] = value & 0x1d;
diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c
index 26e3e5ebf6..c89664f342 100644
--- a/hw/i2c/omap_i2c.c
+++ b/hw/i2c/omap_i2c.c
@@ -340,13 +340,13 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
             break;
         }
         if ((value & (1 << 15)) && !(value & (1 << 10))) {	/* MST */
-            fprintf(stderr, "%s: I^2C slave mode not supported\n",
-                            __func__);
+            error_report("%s: I^2C slave mode not supported",
+                         __func__);
             break;
         }
         if ((value & (1 << 15)) && value & (1 << 8)) {		/* XA */
-            fprintf(stderr, "%s: 10-bit addressing mode not supported\n",
-                            __func__);
+            error_report("%s: 10-bit addressing mode not supported",
+                         __func__);
             break;
         }
         if ((value & (1 << 15)) && value & (1 << 0)) {		/* STT */
@@ -393,7 +393,7 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
                 omap_i2c_interrupts_update(s);
             }
         if (value & (1 << 15))					/* ST_EN */
-            fprintf(stderr, "%s: System Test not supported\n", __func__);
+            error_report("%s: System Test not supported", __func__);
         break;
 
     default:
diff --git a/hw/i386/kvm/apic.c b/hw/i386/kvm/apic.c
index 1df6d26816..e90a1b9b3b 100644
--- a/hw/i386/kvm/apic.c
+++ b/hw/i386/kvm/apic.c
@@ -10,6 +10,7 @@
  * See the COPYING file in the top-level directory.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/i386/apic_internal.h"
@@ -128,7 +129,7 @@ static void kvm_apic_vapic_base_update(APICCommonState *s)
 
     ret = kvm_vcpu_ioctl(CPU(s->cpu), KVM_SET_VAPIC_ADDR, &vapid_addr);
     if (ret < 0) {
-        fprintf(stderr, "KVM: setting VAPIC address failed (%s)\n",
+        error_report("KVM: setting VAPIC address failed (%s)",
                 strerror(-ret));
         abort();
     }
@@ -145,7 +146,7 @@ static void kvm_apic_put(CPUState *cs, run_on_cpu_data data)
 
     ret = kvm_vcpu_ioctl(CPU(s->cpu), KVM_SET_LAPIC, &kapic);
     if (ret < 0) {
-        fprintf(stderr, "KVM_SET_LAPIC failed: %s\n", strerror(ret));
+        error_report("KVM_SET_LAPIC failed: %s", strerror(ret));
         abort();
     }
 }
@@ -167,7 +168,7 @@ static void do_inject_external_nmi(CPUState *cpu, run_on_cpu_data data)
     if (!(lvt & APIC_LVT_MASKED) && ((lvt >> 8) & 7) == APIC_DM_NMI) {
         ret = kvm_vcpu_ioctl(cpu, KVM_NMI);
         if (ret < 0) {
-            fprintf(stderr, "KVM: injection failed, NMI lost (%s)\n",
+            error_report("KVM: injection failed, NMI lost (%s)",
                     strerror(-ret));
         }
     }
@@ -184,7 +185,7 @@ static void kvm_send_msi(MSIMessage *msg)
 
     ret = kvm_irqchip_send_msi(kvm_state, *msg);
     if (ret < 0) {
-        fprintf(stderr, "KVM: injection failed, MSI lost (%s)\n",
+        error_report("KVM: injection failed, MSI lost (%s)",
                 strerror(-ret));
     }
 }
diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
index 363d1b5743..e05c1587ce 100644
--- a/hw/i386/kvm/clock.c
+++ b/hw/i386/kvm/clock.c
@@ -14,6 +14,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "qemu/host-utils.h"
@@ -99,7 +100,7 @@ static void kvm_update_clock(KVMClockState *s)
 
     ret = kvm_vm_ioctl(kvm_state, KVM_GET_CLOCK, &data);
     if (ret < 0) {
-        fprintf(stderr, "KVM_GET_CLOCK failed: %s\n", strerror(ret));
+        error_report("KVM_GET_CLOCK failed: %s", strerror(ret));
                 abort();
     }
     s->clock = data.clock;
@@ -174,7 +175,7 @@ static void kvmclock_vm_state_change(void *opaque, int running,
         data.clock = s->clock;
         ret = kvm_vm_ioctl(kvm_state, KVM_SET_CLOCK, &data);
         if (ret < 0) {
-            fprintf(stderr, "KVM_SET_CLOCK failed: %s\n", strerror(ret));
+            error_report("KVM_SET_CLOCK failed: %s", strerror(ret));
             abort();
         }
 
@@ -185,7 +186,7 @@ static void kvmclock_vm_state_change(void *opaque, int running,
             ret = kvm_vcpu_ioctl(cpu, KVM_KVMCLOCK_CTRL, 0);
             if (ret) {
                 if (ret != -EINVAL) {
-                    fprintf(stderr, "%s: %s\n", __func__, strerror(-ret));
+                    error_report("%s: %s", __func__, strerror(-ret));
                 }
                 return;
             }
diff --git a/hw/i386/kvm/i8254.c b/hw/i386/kvm/i8254.c
index 521a58498a..27f24b1090 100644
--- a/hw/i386/kvm/i8254.c
+++ b/hw/i386/kvm/i8254.c
@@ -24,6 +24,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include <linux/kvm.h>
 #include "qapi/error.h"
 #include "qemu/timer.h"
@@ -101,7 +102,7 @@ static void kvm_pit_get(PITCommonState *pit)
     if (kvm_has_pit_state2()) {
         ret = kvm_vm_ioctl(kvm_state, KVM_GET_PIT2, &kpit);
         if (ret < 0) {
-            fprintf(stderr, "KVM_GET_PIT2 failed: %s\n", strerror(ret));
+            error_report("KVM_GET_PIT2 failed: %s", strerror(ret));
             abort();
         }
         pit->channels[0].irq_disabled = kpit.flags & KVM_PIT_FLAGS_HPET_LEGACY;
@@ -112,7 +113,7 @@ static void kvm_pit_get(PITCommonState *pit)
          */
         ret = kvm_vm_ioctl(kvm_state, KVM_GET_PIT, &kpit);
         if (ret < 0) {
-            fprintf(stderr, "KVM_GET_PIT failed: %s\n", strerror(ret));
+            error_report("KVM_GET_PIT failed: %s", strerror(ret));
             abort();
         }
     }
@@ -175,7 +176,7 @@ static void kvm_pit_put(PITCommonState *pit)
                        kvm_has_pit_state2() ? KVM_SET_PIT2 : KVM_SET_PIT,
                        &kpit);
     if (ret < 0) {
-        fprintf(stderr, "%s failed: %s\n",
+        error_report("%s failed: %s",
                 kvm_has_pit_state2() ? "KVM_SET_PIT2" : "KVM_SET_PIT",
                 strerror(ret));
         abort();
diff --git a/hw/i386/kvm/i8259.c b/hw/i386/kvm/i8259.c
index 11d1b726b6..770a934552 100644
--- a/hw/i386/kvm/i8259.c
+++ b/hw/i386/kvm/i8259.c
@@ -10,6 +10,7 @@
  * See the COPYING file in the top-level directory.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/isa/i8259_internal.h"
 #include "hw/i386/apic_internal.h"
 #include "sysemu/kvm.h"
@@ -39,7 +40,7 @@ static void kvm_pic_get(PICCommonState *s)
     chip.chip_id = s->master ? KVM_IRQCHIP_PIC_MASTER : KVM_IRQCHIP_PIC_SLAVE;
     ret = kvm_vm_ioctl(kvm_state, KVM_GET_IRQCHIP, &chip);
     if (ret < 0) {
-        fprintf(stderr, "KVM_GET_IRQCHIP failed: %s\n", strerror(ret));
+        error_report("KVM_GET_IRQCHIP failed: %s", strerror(ret));
         abort();
     }
 
@@ -92,7 +93,7 @@ static void kvm_pic_put(PICCommonState *s)
 
     ret = kvm_vm_ioctl(kvm_state, KVM_SET_IRQCHIP, &chip);
     if (ret < 0) {
-        fprintf(stderr, "KVM_SET_IRQCHIP failed: %s\n", strerror(ret));
+        error_report("KVM_SET_IRQCHIP failed: %s", strerror(ret));
         abort();
     }
 }
diff --git a/hw/i386/kvm/ioapic.c b/hw/i386/kvm/ioapic.c
index 98ca480792..a31bcd2658 100644
--- a/hw/i386/kvm/ioapic.c
+++ b/hw/i386/kvm/ioapic.c
@@ -11,6 +11,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "monitor/monitor.h"
 #include "hw/i386/pc.h"
 #include "hw/i386/ioapic_internal.h"
@@ -74,7 +75,7 @@ static void kvm_ioapic_get(IOAPICCommonState *s)
     chip.chip_id = KVM_IRQCHIP_IOAPIC;
     ret = kvm_vm_ioctl(kvm_state, KVM_GET_IRQCHIP, &chip);
     if (ret < 0) {
-        fprintf(stderr, "KVM_GET_IRQCHIP failed: %s\n", strerror(ret));
+        error_report("KVM_GET_IRQCHIP failed: %s", strerror(ret));
         abort();
     }
 
@@ -107,7 +108,7 @@ static void kvm_ioapic_put(IOAPICCommonState *s)
 
     ret = kvm_vm_ioctl(kvm_state, KVM_SET_IRQCHIP, &chip);
     if (ret < 0) {
-        fprintf(stderr, "KVM_GET_IRQCHIP failed: %s\n", strerror(ret));
+        error_report("KVM_GET_IRQCHIP failed: %s", strerror(ret));
         abort();
     }
 }
diff --git a/hw/i386/multiboot.c b/hw/i386/multiboot.c
index c7b70c91d5..d297a88f9d 100644
--- a/hw/i386/multiboot.c
+++ b/hw/i386/multiboot.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/hw.h"
@@ -184,7 +185,7 @@ int load_multiboot(FWCfgState *fw_cfg,
     memset(&mbs, 0, sizeof(mbs));
 
     if (flags & 0x00000004) { /* MULTIBOOT_HEADER_HAS_VBE */
-        fprintf(stderr, "qemu: multiboot knows VBE. we don't.\n");
+        error_report("qemu: multiboot knows VBE. we don't.");
     }
     if (!(flags & 0x00010000)) { /* MULTIBOOT_HEADER_HAS_ADDR */
         uint64_t elf_entry;
@@ -193,7 +194,7 @@ int load_multiboot(FWCfgState *fw_cfg,
         fclose(f);
 
         if (((struct elf64_hdr*)header)->e_machine == EM_X86_64) {
-            fprintf(stderr, "Cannot load x86-64 image, give a 32bit one.\n");
+            error_report("Cannot load x86-64 image, give a 32bit one.");
             exit(1);
         }
 
@@ -201,7 +202,7 @@ int load_multiboot(FWCfgState *fw_cfg,
                                &elf_low, &elf_high, 0, I386_ELF_MACHINE,
                                0, 0);
         if (kernel_size < 0) {
-            fprintf(stderr, "Error while loading elf kernel\n");
+            error_report("Error while loading elf kernel");
             exit(1);
         }
         mh_load_addr = elf_low;
@@ -210,7 +211,7 @@ int load_multiboot(FWCfgState *fw_cfg,
 
         mbs.mb_buf = g_malloc(mb_kernel_size);
         if (rom_copy(mbs.mb_buf, mh_load_addr, mb_kernel_size) != mb_kernel_size) {
-            fprintf(stderr, "Error while fetching elf kernel from rom\n");
+            error_report("Error while fetching elf kernel from rom");
             exit(1);
         }
 
@@ -224,7 +225,7 @@ int load_multiboot(FWCfgState *fw_cfg,
 
         mh_load_addr = ldl_p(header+i+16);
         if (mh_header_addr < mh_load_addr) {
-            fprintf(stderr, "invalid mh_load_addr address\n");
+            error_report("invalid mh_load_addr address");
             exit(1);
         }
 
@@ -234,19 +235,19 @@ int load_multiboot(FWCfgState *fw_cfg,
 
         if (mh_load_end_addr) {
             if (mh_bss_end_addr < mh_load_addr) {
-                fprintf(stderr, "invalid mh_bss_end_addr address\n");
+                error_report("invalid mh_bss_end_addr address");
                 exit(1);
             }
             mb_kernel_size = mh_bss_end_addr - mh_load_addr;
 
             if (mh_load_end_addr < mh_load_addr) {
-                fprintf(stderr, "invalid mh_load_end_addr address\n");
+                error_report("invalid mh_load_end_addr address");
                 exit(1);
             }
             mb_load_size = mh_load_end_addr - mh_load_addr;
         } else {
             if (kernel_file_size < mb_kernel_text_offset) {
-                fprintf(stderr, "invalid kernel_file_size\n");
+                error_report("invalid kernel_file_size");
                 exit(1);
             }
             mb_kernel_size = kernel_file_size - mb_kernel_text_offset;
@@ -269,7 +270,7 @@ int load_multiboot(FWCfgState *fw_cfg,
         mbs.mb_buf = g_malloc(mb_kernel_size);
         fseek(f, mb_kernel_text_offset, SEEK_SET);
         if (fread(mbs.mb_buf, 1, mb_load_size, f) != mb_load_size) {
-            fprintf(stderr, "fread() failed\n");
+            error_report("fread() failed");
             exit(1);
         }
         memset(mbs.mb_buf + mb_load_size, 0, mb_kernel_size - mb_load_size);
@@ -326,7 +327,7 @@ int load_multiboot(FWCfgState *fw_cfg,
             mb_debug("multiboot loading module: %s\n", tmpbuf);
             mb_mod_length = get_image_size(tmpbuf);
             if (mb_mod_length < 0) {
-                fprintf(stderr, "Failed to open file '%s'\n", tmpbuf);
+                error_report("Failed to open file '%s'", tmpbuf);
                 exit(1);
             }
 
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 05985d4927..ca25424c09 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -856,14 +856,14 @@ static void load_linux(PCMachineState *pcms,
     if (!f || !(kernel_size = get_file_size(f)) ||
         fread(header, 1, MIN(ARRAY_SIZE(header), kernel_size), f) !=
         MIN(ARRAY_SIZE(header), kernel_size)) {
-        fprintf(stderr, "qemu: could not load kernel '%s': %s\n",
+        error_report("qemu: could not load kernel '%s': %s",
                 kernel_filename, strerror(errno));
         exit(1);
     }
 
     /* kernel protocol version */
 #if 0
-    fprintf(stderr, "header magic: %#x\n", ldl_p(header+0x202));
+    error_report("header magic: %#x", ldl_p(header + 0x202));
 #endif
     if (ldl_p(header+0x202) == 0x53726448) {
         protocol = lduw_p(header+0x206);
@@ -960,13 +960,13 @@ static void load_linux(PCMachineState *pcms,
     /* load initrd */
     if (initrd_filename) {
         if (protocol < 0x200) {
-            fprintf(stderr, "qemu: linux kernel too old to load a ram disk\n");
+            error_report("qemu: linux kernel too old to load a ram disk");
             exit(1);
         }
 
         initrd_size = get_image_size(initrd_filename);
         if (initrd_size < 0) {
-            fprintf(stderr, "qemu: error reading initrd %s: %s\n",
+            error_report("qemu: error reading initrd %s: %s",
                     initrd_filename, strerror(errno));
             exit(1);
         }
@@ -991,7 +991,7 @@ static void load_linux(PCMachineState *pcms,
     }
     setup_size = (setup_size+1)*512;
     if (setup_size > kernel_size) {
-        fprintf(stderr, "qemu: invalid kernel header\n");
+        error_report("qemu: invalid kernel header");
         exit(1);
     }
     kernel_size -= setup_size;
@@ -1000,11 +1000,11 @@ static void load_linux(PCMachineState *pcms,
     kernel = g_malloc(kernel_size);
     fseek(f, 0, SEEK_SET);
     if (fread(setup, 1, setup_size, f) != setup_size) {
-        fprintf(stderr, "fread() failed\n");
+        error_report("fread() failed");
         exit(1);
     }
     if (fread(kernel, 1, kernel_size, f) != kernel_size) {
-        fprintf(stderr, "fread() failed\n");
+        error_report("fread() failed");
         exit(1);
     }
     fclose(f);
@@ -1012,13 +1012,13 @@ static void load_linux(PCMachineState *pcms,
     /* append dtb to kernel */
     if (dtb_filename) {
         if (protocol < 0x209) {
-            fprintf(stderr, "qemu: Linux kernel too old to load a dtb\n");
+            error_report("qemu: Linux kernel too old to load a dtb");
             exit(1);
         }
 
         dtb_size = get_image_size(dtb_filename);
         if (dtb_size <= 0) {
-            fprintf(stderr, "qemu: error reading dtb %s: %s\n",
+            error_report("qemu: error reading dtb %s: %s",
                     dtb_filename, strerror(errno));
             exit(1);
         }
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 9ff79b1fd9..1796db1e36 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -1090,7 +1090,7 @@ void igd_passthrough_isa_bridge_create(PCIBus *bus, uint16_t gpu_dev_id)
      * Note that vendor id is always PCI_VENDOR_ID_INTEL.
      */
     if (!bridge_dev) {
-        fprintf(stderr, "set igd-passthrough-isa-bridge failed!\n");
+        error_report("set igd-passthrough-isa-bridge failed!");
         return;
     }
     pci_config_set_device_id(bridge_dev->config, pch_dev_id);
diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
index 6b183747fc..b6c10a509f 100644
--- a/hw/i386/pc_sysfw.c
+++ b/hw/i386/pc_sysfw.c
@@ -201,7 +201,7 @@ static void old_pc_system_rom_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
     ret = rom_add_file_fixed(bios_name, (uint32_t)(-bios_size), -1);
     if (ret != 0) {
     bios_error:
-        fprintf(stderr, "qemu: could not load PC BIOS '%s'\n", bios_name);
+        error_report("qemu: could not load PC BIOS '%s'", bios_name);
         exit(1);
     }
     g_free(filename);
@@ -243,7 +243,8 @@ void pc_system_firmware_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
     if (kvm_enabled() && !kvm_readonly_mem_enabled()) {
         /* Older KVM cannot execute from device memory. So, flash memory
          * cannot be used unless the readonly memory kvm capability is present. */
-        fprintf(stderr, "qemu: pflash with kvm requires KVM readonly memory support\n");
+        error_report("qemu: pflash with kvm requires KVM readonly memory"
+                     " support");
         exit(1);
     }
 
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index d9ccd5d0d6..f8e3e0507b 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -246,9 +246,10 @@ void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, MemoryRegion *mr,
 
     if (runstate_check(RUN_STATE_INMIGRATE)) {
         /* RAM already populated in Xen */
-        fprintf(stderr, "%s: do not alloc "RAM_ADDR_FMT
-                " bytes of ram at "RAM_ADDR_FMT" when runstate is INMIGRATE\n",
-                __func__, size, ram_addr); 
+        error_report("%s: do not alloc "RAM_ADDR_FMT
+                     " bytes of ram at "RAM_ADDR_FMT" when runstate is "
+                     " INMIGRATE",
+                     __func__, size, ram_addr);
         return;
     }
 
@@ -444,8 +445,9 @@ static int xen_remove_from_physmap(XenIOState *state,
 
         rc = xen_xc_domain_add_to_physmap(xen_xc, xen_domid, XENMAPSPACE_gmfn, idx, gpfn);
         if (rc) {
-            fprintf(stderr, "add_to_physmap MFN %"PRI_xen_pfn" to PFN %"
-                    PRI_xen_pfn" failed: %d (errno: %d)\n", idx, gpfn, rc, errno);
+            error_report("add_to_physmap MFN %"PRI_xen_pfn" to PFN %"
+                         PRI_xen_pfn" failed: %d (errno: %d)", idx,
+                         gpfn, rc, errno);
             return -rc;
         }
     }
@@ -1090,11 +1092,11 @@ static void cpu_handle_ioreq(void *opaque)
         req->data = copy.data;
 
         if (req->state != STATE_IOREQ_INPROCESS) {
-            fprintf(stderr, "Badness in I/O request ... not in service?!: "
-                    "%x, ptr: %x, port: %"PRIx64", "
-                    "data: %"PRIx64", count: %u, size: %u, type: %u\n",
-                    req->state, req->data_is_ptr, req->addr,
-                    req->data, req->count, req->size, req->type);
+            error_report("Badness in I/O request ... not in service?!: "
+                         "%x, ptr: %x, port: %"PRIx64", "
+                         "data: %"PRIx64", count: %u, size: %u, type: %u",
+                         req->state, req->data_is_ptr, req->addr,
+                         req->data, req->count, req->size, req->type);
             destroy_hvm_domain(false);
             return;
         }
@@ -1397,16 +1399,16 @@ void destroy_hvm_domain(bool reboot)
 
     xc_handle = xc_interface_open(0, 0, 0);
     if (xc_handle == NULL) {
-        fprintf(stderr, "Cannot acquire xenctrl handle\n");
+        error_report("Cannot acquire xenctrl handle");
     } else {
         sts = xc_domain_shutdown(xc_handle, xen_domid,
                                  reboot ? SHUTDOWN_reboot : SHUTDOWN_poweroff);
         if (sts != 0) {
-            fprintf(stderr, "xc_domain_shutdown failed to issue %s, "
-                    "sts %d, %s\n", reboot ? "reboot" : "poweroff",
+            error_report("xc_domain_shutdown failed to issue %s, "
+                    "sts %d, %s", reboot ? "reboot" : "poweroff",
                     sts, strerror(errno));
         } else {
-            fprintf(stderr, "Issued domain %d %s\n", xen_domid,
+            error_report("Issued domain %d %s", xen_domid,
                     reboot ? "reboot" : "poweroff");
         }
         xc_interface_close(xc_handle);
@@ -1425,7 +1427,7 @@ void xen_shutdown_fatal_error(const char *fmt, ...)
     va_start(ap, fmt);
     vfprintf(stderr, fmt, ap);
     va_end(ap);
-    fprintf(stderr, "Will destroy the domain.\n");
+    error_report("Will destroy the domain.");
     /* destroy the domain */
     qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_ERROR);
 }
diff --git a/hw/i386/xen/xen-mapcache.c b/hw/i386/xen/xen-mapcache.c
index baab93b614..4062af0900 100644
--- a/hw/i386/xen/xen-mapcache.c
+++ b/hw/i386/xen/xen-mapcache.c
@@ -377,7 +377,7 @@ ram_addr_t xen_ram_addr_from_mapcache(void *ptr)
         }
     }
     if (!found) {
-        fprintf(stderr, "%s, could not find %p\n", __func__, ptr);
+        error_report("%s, could not find %p", __func__, ptr);
         QTAILQ_FOREACH(reventry, &mapcache->locked_entries, next) {
             DPRINTF("   "TARGET_FMT_plx" -> %p is present\n", reventry->paddr_index,
                     reventry->vaddr_req);
@@ -477,9 +477,9 @@ void xen_invalidate_map_cache(void)
         if (!reventry->dma) {
             continue;
         }
-        fprintf(stderr, "Locked DMA mapping while invalidating mapcache!"
-                " "TARGET_FMT_plx" -> %p is present\n",
-                reventry->paddr_index, reventry->vaddr_req);
+        error_report("Locked DMA mapping while invalidating mapcache!"
+                     " "TARGET_FMT_plx" -> %p is present",
+                     reventry->paddr_index, reventry->vaddr_req);
     }
 
     for (i = 0; i < mapcache->nr_buckets; i++) {
@@ -545,8 +545,8 @@ static uint8_t *xen_replace_cache_entry_unlocked(hwaddr old_phys_addr,
     address_index  = new_phys_addr >> MCACHE_BUCKET_SHIFT;
     address_offset = new_phys_addr & (MCACHE_BUCKET_SIZE - 1);
 
-    fprintf(stderr, "Replacing a dummy mapcache entry for "TARGET_FMT_plx \
-            " with "TARGET_FMT_plx"\n", old_phys_addr, new_phys_addr);
+    error_report("Replacing a dummy mapcache entry for "TARGET_FMT_plx \
+                 " with "TARGET_FMT_plx"", old_phys_addr, new_phys_addr);
 
     xen_remap_bucket(entry, entry->vaddr_base,
                      cache_size, address_index, false);
diff --git a/hw/i386/xen/xen_apic.c b/hw/i386/xen/xen_apic.c
index 55769eba7e..9e19ef94a2 100644
--- a/hw/i386/xen/xen_apic.c
+++ b/hw/i386/xen/xen_apic.c
@@ -24,7 +24,7 @@ static void xen_apic_mem_write(void *opaque, hwaddr addr,
                                uint64_t data, unsigned size)
 {
     if (size != sizeof(uint32_t)) {
-        fprintf(stderr, "Xen: APIC write data size = %d, invalid\n", size);
+        error_report("Xen: APIC write data size = %d, invalid", size);
         return;
     }
 
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index c25e293d88..2ed015285a 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -410,8 +410,8 @@ static void ahci_mem_write(void *opaque, hwaddr addr,
 
     /* Only aligned reads are allowed on AHCI */
     if (addr & 3) {
-        fprintf(stderr, "ahci: Mis-aligned write to addr 0x"
-                TARGET_FMT_plx "\n", addr);
+        error_report("ahci: Mis-aligned write to addr 0x"
+                     TARGET_FMT_plx "", addr);
         return;
     }
 
@@ -1053,7 +1053,7 @@ static void process_ncq_command(AHCIState *s, int port, uint8_t *cmd_fis,
     g_assert(is_ncq(ncq_fis->command));
     if (ncq_tfs->used) {
         /* error - already in use */
-        fprintf(stderr, "%s: tag %d already used\n", __func__, tag);
+        error_report("%s: tag %d already used", __func__, tag);
         return;
     }
 
diff --git a/hw/ide/core.c b/hw/ide/core.c
index d63eb4a72e..d46936193a 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -2762,7 +2762,7 @@ static void ide_drive_pio_pre_save(void *opaque)
 
     idx = transfer_end_table_idx(s->end_transfer_func);
     if (idx == -1) {
-        fprintf(stderr, "%s: invalid end_transfer_func for DRQ_STAT\n",
+        error_report("%s: invalid end_transfer_func for DRQ_STAT",
                         __func__);
         s->end_transfer_fn_idx = 2;
     } else {
diff --git a/hw/input/lm832x.c b/hw/input/lm832x.c
index d39953126b..caeeda47f2 100644
--- a/hw/input/lm832x.c
+++ b/hw/input/lm832x.c
@@ -239,7 +239,7 @@ static uint8_t lm_kbd_read(LM823KbdState *s, int reg, int byte)
 
     default:
         lm_kbd_error(s, ERR_CMDUNK);
-        fprintf(stderr, "%s: unknown command %02x\n", __func__, reg);
+        error_report("%s: unknown command %02x", __func__, reg);
         return 0x00;
     }
 
@@ -330,7 +330,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value)
         s->reg = LM832x_GENERAL_ERROR;
         if ((value & 3) && (value & 3) != 3) {
             lm_kbd_error(s, ERR_BADPAR);
-            fprintf(stderr, "%s: invalid clock setting in RCPWM\n",
+            error_report("%s: invalid clock setting in RCPWM",
                             __func__);
         }
         /* TODO: Validate that the command is only issued once */
@@ -378,7 +378,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value)
         break;
     default:
         lm_kbd_error(s, ERR_CMDUNK);
-        fprintf(stderr, "%s: unknown command %02x\n", __func__, reg);
+        error_report("%s: unknown command %02x", __func__, reg);
         break;
     }
 }
diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
index c479f827b6..ff4f03e4c3 100644
--- a/hw/input/pckbd.c
+++ b/hw/input/pckbd.c
@@ -22,6 +22,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/isa/isa.h"
 #include "hw/i386/pc.h"
@@ -307,7 +308,7 @@ static void kbd_write_command(void *opaque, hwaddr addr,
         /* ignore that */
         break;
     default:
-        fprintf(stderr, "qemu: unsupported keyboard cmd=0x%02x\n", (int)val);
+        error_report("qemu: unsupported keyboard cmd=0x%02x", (int)val);
         break;
     }
 }
diff --git a/hw/input/pxa2xx_keypad.c b/hw/input/pxa2xx_keypad.c
index 93db9ed25b..0a594c30fc 100644
--- a/hw/input/pxa2xx_keypad.c
+++ b/hw/input/pxa2xx_keypad.c
@@ -326,7 +326,7 @@ void pxa27x_register_keypad(PXA2xxKeyPadState *kp,
                             const struct keymap *map, int size)
 {
     if(!map || size < 0x80) {
-        fprintf(stderr, "%s - No PXA keypad map defined\n", __func__);
+        error_report("%s - No PXA keypad map defined", __func__);
         exit(-1);
     }
 
diff --git a/hw/input/tsc2005.c b/hw/input/tsc2005.c
index 7990954b6c..f5057e8eeb 100644
--- a/hw/input/tsc2005.c
+++ b/hw/input/tsc2005.c
@@ -200,17 +200,17 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data)
         s->host_mode = (data >> 15) != 0;
         if (s->enabled != !(data & 0x4000)) {
             s->enabled = !(data & 0x4000);
-            fprintf(stderr, "%s: touchscreen sense %sabled\n",
-                            __func__, s->enabled ? "en" : "dis");
+            error_report("%s: touchscreen sense %sabled",
+                         __func__, s->enabled ? "en" : "dis");
             if (s->busy && !s->enabled)
                 timer_del(s->timer);
             s->busy = s->busy && s->enabled;
         }
         s->nextprecision = (data >> 13) & 1;
         s->timing[0] = data & 0x1fff;
-        if ((s->timing[0] >> 11) == 3)
-            fprintf(stderr, "%s: illegal conversion clock setting\n",
-                            __func__);
+        if ((s->timing[0] >> 11) == 3) {
+            error_report("%s: illegal conversion clock setting", __func__);
+        }
         break;
     case 0xd:	/* CFR1 */
         s->timing[1] = data & 0xf07;
@@ -221,8 +221,7 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data)
         break;
 
     default:
-        fprintf(stderr, "%s: write into read-only register %x\n",
-                        __func__, reg);
+        error_report("%s: write into read-only register %x", __func__, reg);
     }
 }
 
@@ -337,8 +336,8 @@ static uint8_t tsc2005_txrx_word(void *opaque, uint8_t value)
                 s->nextprecision = (value >> 2) & 1;
                 if (s->enabled != !(value & 1)) {
                     s->enabled = !(value & 1);
-                    fprintf(stderr, "%s: touchscreen sense %sabled\n",
-                                    __func__, s->enabled ? "en" : "dis");
+                    error_report("%s: touchscreen sense %sabled",
+                                 __func__, s->enabled ? "en" : "dis");
                     if (s->busy && !s->enabled)
                         timer_del(s->timer);
                     s->busy = s->busy && s->enabled;
diff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c
index d4b19c1825..c685221842 100644
--- a/hw/input/tsc210x.c
+++ b/hw/input/tsc210x.c
@@ -396,8 +396,8 @@ static uint16_t tsc2102_data_register_read(TSC210xState *s, int reg)
 
     default:
 #ifdef TSC_VERBOSE
-        fprintf(stderr, "tsc2102_data_register_read: "
-                        "no such register: 0x%02x\n", reg);
+        error_report("tsc2102_data_register_read: "
+                     "no such register: 0x%02x", reg);
 #endif
         return 0xffff;
     }
@@ -447,8 +447,8 @@ static uint16_t tsc2102_control_register_read(
     default:
     bad_reg:
 #ifdef TSC_VERBOSE
-        fprintf(stderr, "tsc2102_control_register_read: "
-                        "no such register: 0x%02x\n", reg);
+        error_report("tsc2102_control_register_read: "
+                     "no such register: 0x%02x", reg);
 #endif
         return 0xffff;
     }
@@ -528,8 +528,8 @@ static uint16_t tsc2102_audio_register_read(TSC210xState *s, int reg)
 
     default:
 #ifdef TSC_VERBOSE
-        fprintf(stderr, "tsc2102_audio_register_read: "
-                        "no such register: 0x%02x\n", reg);
+        error_report("tsc2102_audio_register_read: "
+                     "no such register: 0x%02x", reg);
 #endif
         return 0xffff;
     }
@@ -553,8 +553,8 @@ static void tsc2102_data_register_write(
 
     default:
 #ifdef TSC_VERBOSE
-        fprintf(stderr, "tsc2102_data_register_write: "
-                        "no such register: 0x%02x\n", reg);
+        error_report("tsc2102_data_register_write: "
+                     "no such register: 0x%02x", reg);
 #endif
     }
 }
@@ -606,8 +606,8 @@ static void tsc2102_control_register_write(
             tsc210x_reset(s);
 #ifdef TSC_VERBOSE
         } else {
-            fprintf(stderr, "tsc2102_control_register_write: "
-                            "wrong value written into RESET\n");
+            error_report("tsc2102_control_register_write: "
+                         "wrong value written into RESET");
 #endif
         }
         return;
@@ -616,8 +616,8 @@ static void tsc2102_control_register_write(
         s->timing = value & 0x3f;
 #ifdef TSC_VERBOSE
         if (value & ~0x3f)
-            fprintf(stderr, "tsc2102_control_register_write: "
-                            "wrong value written into CONFIG\n");
+            error_report("tsc2102_control_register_write: "
+                         "wrong value written into CONFIG");
 #endif
         return;
 
@@ -637,8 +637,8 @@ static void tsc2102_control_register_write(
     default:
     bad_reg:
 #ifdef TSC_VERBOSE
-        fprintf(stderr, "tsc2102_control_register_write: "
-                        "no such register: 0x%02x\n", reg);
+        error_report("tsc2102_control_register_write: "
+                     "no such register: 0x%02x", reg);
 #endif
     }
 }
@@ -651,8 +651,8 @@ static void tsc2102_audio_register_write(
         s->audio_ctrl1 = value & 0x0f3f;
 #ifdef TSC_VERBOSE
         if ((value & ~0x0f3f) || ((value & 7) != ((value >> 3) & 7)))
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into Audio 1\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into Audio 1");
 #endif
         tsc2102_audio_rate_update(s);
         tsc2102_audio_output_update(s);
@@ -661,8 +661,8 @@ static void tsc2102_audio_register_write(
     case 0x01:
 #ifdef TSC_VERBOSE
         if (value != 0xff00)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into reg 0x01\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into reg 0x01");
 #endif
         return;
 
@@ -674,8 +674,8 @@ static void tsc2102_audio_register_write(
     case 0x03:
 #ifdef TSC_VERBOSE
         if (value != 0x8b00)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into reg 0x03\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into reg 0x03");
 #endif
         return;
 
@@ -683,8 +683,8 @@ static void tsc2102_audio_register_write(
         s->audio_ctrl2 = value & 0xf7f2;
 #ifdef TSC_VERBOSE
         if (value & ~0xf7fd)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into Audio 2\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into Audio 2");
 #endif
         return;
 
@@ -695,8 +695,8 @@ static void tsc2102_audio_register_write(
         s->dac_power = value & 0x9543;
 #ifdef TSC_VERBOSE
         if ((value & ~0x9543) != 0x2aa0)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into Power\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into Power");
 #endif
         tsc2102_audio_rate_update(s);
         tsc2102_audio_output_update(s);
@@ -707,8 +707,8 @@ static void tsc2102_audio_register_write(
         s->audio_ctrl3 |= value & 0xf800;
 #ifdef TSC_VERBOSE
         if (value & ~0xf8c7)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into Audio 3\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into Audio 3");
 #endif
         tsc2102_audio_output_update(s);
         return;
@@ -740,8 +740,8 @@ static void tsc2102_audio_register_write(
         s->pll[0] = value & 0xfffc;
 #ifdef TSC_VERBOSE
         if (value & ~0xfffc)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into PLL 1\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into PLL 1");
 #endif
         return;
 
@@ -749,8 +749,8 @@ static void tsc2102_audio_register_write(
         s->pll[1] = value & 0xfffc;
 #ifdef TSC_VERBOSE
         if (value & ~0xfffc)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into PLL 2\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into PLL 2");
 #endif
         return;
 
@@ -758,15 +758,15 @@ static void tsc2102_audio_register_write(
         s->softstep = !(value & 0x4000);
 #ifdef TSC_VERBOSE
         if (value & ~0x4000)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into Audio 4\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into Audio 4");
 #endif
         return;
 
     default:
 #ifdef TSC_VERBOSE
-        fprintf(stderr, "tsc2102_audio_register_write: "
-                        "no such register: 0x%02x\n", reg);
+        error_report("tsc2102_audio_register_write: "
+                     "no such register: 0x%02x", reg);
 #endif
     }
 }
@@ -847,7 +847,7 @@ static uint16_t tsc210x_read(TSC210xState *s)
     uint16_t ret = 0x0000;
 
     if (!s->command)
-        fprintf(stderr, "tsc210x_read: SPI underrun!\n");
+        error_report("tsc210x_read: SPI underrun!");
 
     switch (s->page) {
     case TSC_DATA_REGISTERS_PAGE:
@@ -886,7 +886,7 @@ static void tsc210x_write(TSC210xState *s, uint16_t value)
         s->state = true;
     } else {
         if (s->command)
-            fprintf(stderr, "tsc210x_write: SPI overrun!\n");
+            error_report("tsc210x_write: SPI overrun!");
         else
             switch (s->page) {
             case TSC_DATA_REGISTERS_PAGE:
diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c
index 4d3afc1b14..bf1ed7b18e 100644
--- a/hw/input/virtio-input-hid.c
+++ b/hw/input/virtio-input-hid.c
@@ -208,8 +208,8 @@ static void virtio_input_handle_event(DeviceState *dev, QemuConsole *src,
             virtio_input_send(vinput, &event);
         } else {
             if (key->down) {
-                fprintf(stderr, "%s: unmapped key: %d [%s]\n", __func__,
-                        qcode, QKeyCode_str(qcode));
+                error_report("%s: unmapped key: %d [%s]", __func__,
+                             qcode, QKeyCode_str(qcode));
             }
         }
         break;
@@ -222,9 +222,9 @@ static void virtio_input_handle_event(DeviceState *dev, QemuConsole *src,
             virtio_input_send(vinput, &event);
         } else {
             if (btn->down) {
-                fprintf(stderr, "%s: unmapped button: %d [%s]\n", __func__,
-                        btn->button,
-                        InputButton_str(btn->button));
+                error_report("%s: unmapped button: %d [%s]", __func__,
+                             btn->button,
+                             InputButton_str(btn->button));
             }
         }
         break;
@@ -310,8 +310,8 @@ static void virtio_input_hid_handle_status(VirtIOInput *vinput,
         kbd_put_ledstate(vhid->ledstate);
         break;
     default:
-        fprintf(stderr, "%s: unknown type %d\n", __func__,
-                le16_to_cpu(event->type));
+        error_report("%s: unknown type %d", __func__,
+                     le16_to_cpu(event->type));
         break;
     }
 }
diff --git a/hw/input/virtio-input.c b/hw/input/virtio-input.c
index 0e42f0d02c..fb5fa0a280 100644
--- a/hw/input/virtio-input.c
+++ b/hw/input/virtio-input.c
@@ -5,6 +5,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu/iov.h"
 #include "trace.h"
@@ -121,8 +122,8 @@ void virtio_input_add_config(VirtIOInput *vinput,
 
     if (virtio_input_find_config(vinput, config->select, config->subsel)) {
         /* should not happen */
-        fprintf(stderr, "%s: duplicate config: %d/%d\n",
-                __func__, config->select, config->subsel);
+        error_report("%s: duplicate config: %d/%d",
+                     __func__, config->select, config->subsel);
         abort();
     }
 
diff --git a/hw/intc/arm_gic_kvm.c b/hw/intc/arm_gic_kvm.c
index ae095d08a3..a5478d3e20 100644
--- a/hw/intc/arm_gic_kvm.c
+++ b/hw/intc/arm_gic_kvm.c
@@ -316,12 +316,12 @@ static void kvm_arm_gic_put(GICState *s)
     num_cpu = ((reg & 0xe0) >> 5) + 1;
 
     if (num_irq < s->num_irq) {
-            fprintf(stderr, "Restoring %u IRQs, but kernel supports max %d\n",
-                    s->num_irq, num_irq);
+            error_report("Restoring %u IRQs, but kernel supports max %d",
+                         s->num_irq, num_irq);
             abort();
     } else if (num_cpu != s->num_cpu) {
-            fprintf(stderr, "Restoring %u CPU interfaces, kernel only has %d\n",
-                    s->num_cpu, num_cpu);
+            error_report("Restoring %u CPU interfaces, kernel only has %d",
+                         s->num_cpu, num_cpu);
             /* Did we not create the VCPUs in the kernel yet? */
             abort();
     }
@@ -411,8 +411,8 @@ static void kvm_arm_gic_get(GICState *s)
     s->num_cpu = ((reg & 0xe0) >> 5) + 1;
 
     if (s->num_irq > GIC_MAXIRQ) {
-            fprintf(stderr, "Too many IRQs reported from the kernel: %d\n",
-                    s->num_irq);
+            error_report("Too many IRQs reported from the kernel: %d",
+                         s->num_irq);
             abort();
     }
 
diff --git a/hw/intc/omap_intc.c b/hw/intc/omap_intc.c
index 6844c1aa83..7fc239715a 100644
--- a/hw/intc/omap_intc.c
+++ b/hw/intc/omap_intc.c
@@ -539,8 +539,8 @@ static void omap2_inth_write(void *opaque, hwaddr addr,
         /* TODO: Make a bitmap (or sizeof(char)map) of access privileges
          * for every register, see Chapter 3 and 4 for privileged mode.  */
         if (value & 1)
-            fprintf(stderr, "%s: protection mode enable attempt\n",
-                            __func__);
+            error_report("%s: protection mode enable attempt",
+                          __func__);
         return;
 
     case 0x50:	/* INTC_IDLE */
diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c
index 9dd285b923..dfaefbf575 100644
--- a/hw/intc/openpic.c
+++ b/hw/intc/openpic.c
@@ -34,6 +34,7 @@
  *
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/ppc/mac.h"
 #include "hw/pci/pci.h"
@@ -162,7 +163,7 @@ static int inttgt_to_output(int inttgt)
         }
     }
 
-    fprintf(stderr, "%s: unsupported inttgt %d\n", __func__, inttgt);
+    error_report("%s: unsupported inttgt %d", __func__, inttgt);
     return OPENPIC_OUTPUT_INT;
 }
 
@@ -534,7 +535,7 @@ static void openpic_set_irq(void *opaque, int n_IRQ, int level)
     IRQSource *src;
 
     if (n_IRQ >= OPENPIC_MAX_IRQ) {
-        fprintf(stderr, "%s: IRQ %d out of range\n", __func__, n_IRQ);
+        error_report("%s: IRQ %d out of range", __func__, n_IRQ);
         abort();
     }
 
@@ -1208,7 +1209,7 @@ static uint32_t openpic_iack(OpenPICState *opp, IRQDest *dst, int cpu)
     src = &opp->src[irq];
     if (!(src->ivpr & IVPR_ACTIVITY_MASK) ||
             !(IVPR_PRIORITY(src->ivpr) > dst->ctpr)) {
-        fprintf(stderr, "%s: bad raised IRQ %d ctpr %d ivpr 0x%08x\n",
+        error_report("%s: bad raised IRQ %d ctpr %d ivpr 0x%08x",
                 __func__, irq, dst->ctpr, src->ivpr);
         openpic_update_irq(opp, irq);
         retval = opp->spve;
diff --git a/hw/intc/openpic_kvm.c b/hw/intc/openpic_kvm.c
index fa83420254..60c784ae86 100644
--- a/hw/intc/openpic_kvm.c
+++ b/hw/intc/openpic_kvm.c
@@ -150,8 +150,8 @@ static void kvm_openpic_region_add(MemoryListener *listener,
 
     ret = ioctl(opp->fd, KVM_SET_DEVICE_ATTR, &attr);
     if (ret < 0) {
-        fprintf(stderr, "%s: %s %" PRIx64 "\n", __func__,
-                strerror(errno), reg_base);
+        error_report("%s: %s %" PRIx64 "", __func__,
+                     strerror(errno), reg_base);
     }
 }
 
@@ -184,8 +184,8 @@ static void kvm_openpic_region_del(MemoryListener *listener,
 
     ret = ioctl(opp->fd, KVM_SET_DEVICE_ATTR, &attr);
     if (ret < 0) {
-        fprintf(stderr, "%s: %s %" PRIx64 "\n", __func__,
-                strerror(errno), reg_base);
+        error_report("%s: %s %" PRIx64 "", __func__,
+                     strerror(errno), reg_base);
     }
 }
 
diff --git a/hw/intc/s390_flic_kvm.c b/hw/intc/s390_flic_kvm.c
index 7ead17ac3e..3774b1a2f0 100644
--- a/hw/intc/s390_flic_kvm.c
+++ b/hw/intc/s390_flic_kvm.c
@@ -83,7 +83,7 @@ static void flic_enable_pfault(KVMS390FLICState *flic)
     rc = ioctl(flic->fd, KVM_SET_DEVICE_ATTR, &attr);
 
     if (rc) {
-        fprintf(stderr, "flic: couldn't enable pfault\n");
+        error_report("flic: couldn't enable pfault");
     }
 }
 
@@ -97,7 +97,7 @@ static void flic_disable_wait_pfault(KVMS390FLICState *flic)
     rc = ioctl(flic->fd, KVM_SET_DEVICE_ATTR, &attr);
 
     if (rc) {
-        fprintf(stderr, "flic: couldn't disable pfault\n");
+        error_report("flic: couldn't disable pfault");
     }
 }
 
diff --git a/hw/ipmi/ipmi.c b/hw/ipmi/ipmi.c
index b27babd504..81c62920de 100644
--- a/hw/ipmi/ipmi.c
+++ b/hw/ipmi/ipmi.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/ipmi/ipmi.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
index abab3bba4f..8c0535d3dd 100644
--- a/hw/ipmi/ipmi_bmc_extern.c
+++ b/hw/ipmi/ipmi_bmc_extern.c
@@ -28,6 +28,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu/timer.h"
 #include "chardev/char-fe.h"
@@ -194,8 +195,8 @@ static void ipmi_bmc_extern_handle_command(IPMIBmc *b,
 
     if (ibe->outlen) {
         /* We already have a command queued.  Shouldn't ever happen. */
-        fprintf(stderr, "IPMI KCS: Got command when not finished with the"
-                " previous command\n");
+        error_report("IPMI KCS: Got command when not finished with the"
+                     " previous command");
         abort();
     }
 
diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index 348e0eab9d..0f2e426d02 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -17,6 +17,7 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "monitor/monitor.h"
@@ -186,15 +187,15 @@ ISADevice *isa_vga_init(ISABus *bus)
     case VGA_CIRRUS:
         return isa_create_simple(bus, "isa-cirrus-vga");
     case VGA_QXL:
-        fprintf(stderr, "%s: qxl: no PCI bus\n", __func__);
+        error_report("%s: qxl: no PCI bus", __func__);
         return NULL;
     case VGA_STD:
         return isa_create_simple(bus, "isa-vga");
     case VGA_VMWARE:
-        fprintf(stderr, "%s: vmware_vga: no PCI bus\n", __func__);
+        error_report("%s: vmware_vga: no PCI bus", __func__);
         return NULL;
     case VGA_VIRTIO:
-        fprintf(stderr, "%s: virtio-vga: no PCI bus\n", __func__);
+        error_report("%s: virtio-vga: no PCI bus", __func__);
         return NULL;
     case VGA_NONE:
     default:
diff --git a/hw/lm32/lm32_boards.c b/hw/lm32/lm32_boards.c
index b0bb3ef58a..d739acf476 100644
--- a/hw/lm32/lm32_boards.c
+++ b/hw/lm32/lm32_boards.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/sysbus.h"
@@ -152,7 +153,7 @@ static void lm32_evr_init(MachineState *machine)
         }
 
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
@@ -250,7 +251,7 @@ static void lm32_uclinux_init(MachineState *machine)
         }
 
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
diff --git a/hw/lm32/milkymist.c b/hw/lm32/milkymist.c
index 4db4d2d533..caa6cf4e0f 100644
--- a/hw/lm32/milkymist.c
+++ b/hw/lm32/milkymist.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/sysbus.h"
@@ -149,7 +150,7 @@ milkymist_init(MachineState *machine)
 
     /* if no kernel is given no valid bios rom is a fatal error */
     if (!kernel_filename && !dinfo && !bios_filename && !qtest_enabled()) {
-        fprintf(stderr, "qemu: could not load Milkymist One bios '%s'\n",
+        error_report("qemu: could not load Milkymist One bios '%s'",
                 bios_name);
         exit(1);
     }
@@ -188,7 +189,7 @@ milkymist_init(MachineState *machine)
         }
 
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
diff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c
index 9002c460e5..bdab620a02 100644
--- a/hw/m68k/an5206.c
+++ b/hw/m68k/an5206.c
@@ -66,7 +66,7 @@ static void an5206_init(MachineState *machine)
         if (qtest_enabled()) {
             return;
         }
-        fprintf(stderr, "Kernel image must be specified\n");
+        error_report("Kernel image must be specified");
         exit(1);
     }
 
@@ -83,7 +83,7 @@ static void an5206_init(MachineState *machine)
         entry = KERNEL_LOAD_ADDR;
     }
     if (kernel_size < 0) {
-        fprintf(stderr, "qemu: could not load kernel '%s'\n", kernel_filename);
+        error_report("qemu: could not load kernel '%s'", kernel_filename);
         exit(1);
     }
 
diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c
index b81901fdfd..fbf3f0f074 100644
--- a/hw/m68k/mcf5206.c
+++ b/hw/m68k/mcf5206.c
@@ -6,6 +6,7 @@
  * This code is licensed under the GPL
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/hw.h"
@@ -220,7 +221,7 @@ static void m5206_mbar_update(m5206_mbar_state *s)
                 break;
             default:
                 /* Unknown vector.  */
-                fprintf(stderr, "Unhandled vector for IRQ %d\n", irq);
+                error_report("Unhandled vector for IRQ %d", irq);
                 vector = 0xf;
                 break;
             }
diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c
index b9dde75106..2fb5037b72 100644
--- a/hw/m68k/mcf5208.c
+++ b/hw/m68k/mcf5208.c
@@ -6,6 +6,7 @@
  * This code is licensed under the GPL
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -257,7 +258,7 @@ static void mcf5208evb_init(MachineState *machine)
     mcf5208_sys_init(address_space_mem, pic);
 
     if (nb_nics > 1) {
-        fprintf(stderr, "Too many NICs\n");
+        error_report("Too many NICs");
         exit(1);
     }
     if (nd_table[0].used) {
@@ -292,7 +293,7 @@ static void mcf5208evb_init(MachineState *machine)
         if (qtest_enabled()) {
             return;
         }
-        fprintf(stderr, "Kernel image must be specified\n");
+        error_report("Kernel image must be specified");
         exit(1);
     }
 
@@ -309,7 +310,7 @@ static void mcf5208evb_init(MachineState *machine)
         entry = 0x40000000;
     }
     if (kernel_size < 0) {
-        fprintf(stderr, "qemu: could not load kernel '%s'\n", kernel_filename);
+        error_report("qemu: could not load kernel '%s'", kernel_filename);
         exit(1);
     }
 
diff --git a/hw/microblaze/boot.c b/hw/microblaze/boot.c
index 457a08a2fe..31466050de 100644
--- a/hw/microblaze/boot.c
+++ b/hw/microblaze/boot.c
@@ -86,7 +86,7 @@ static int microblaze_load_dtb(hwaddr addr,
         r = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs",
                                     kernel_cmdline);
         if (r < 0) {
-            fprintf(stderr, "couldn't set /chosen/bootargs\n");
+            error_report("couldn't set /chosen/bootargs");
         }
     }
 
diff --git a/hw/mips/boston.c b/hw/mips/boston.c
index 776ee283e1..ee82968ea7 100644
--- a/hw/mips/boston.c
+++ b/hw/mips/boston.c
@@ -353,7 +353,7 @@ static const void *boston_fdt_filter(void *opaque, const void *fdt_orig,
 
     err = fdt_open_into(fdt_orig, fdt, fdt_sz);
     if (err) {
-        fprintf(stderr, "unable to open FDT\n");
+        error_report("unable to open FDT");
         return NULL;
     }
 
@@ -361,7 +361,7 @@ static const void *boston_fdt_filter(void *opaque, const void *fdt_orig,
             ? machine->kernel_cmdline : " ";
     err = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", cmdline);
     if (err < 0) {
-        fprintf(stderr, "couldn't set /chosen/bootargs\n");
+        error_report("couldn't set /chosen/bootargs");
         return NULL;
     }
 
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index 75318680e1..34710a466c 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -143,7 +143,7 @@ static int64_t load_kernel (CPUMIPSState *env)
                                      initrd_offset, ram_size - initrd_offset);
         }
         if (initrd_size == (target_ulong) -1) {
-            fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
+            error_report("qemu: could not load initial ram disk '%s'",
                     loaderparams.initrd_filename);
             exit(1);
         }
@@ -342,7 +342,7 @@ static void mips_fulong2e_init(MachineState *machine)
 
     isa_bus = vt82c686b_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 0));
     if (!isa_bus) {
-        fprintf(stderr, "vt82c686b_init error\n");
+        error_report("vt82c686b_init error");
         exit(1);
     }
 
diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
index 7e6626dc88..6c91a940be 100644
--- a/hw/mips/mips_jazz.c
+++ b/hw/mips/mips_jazz.c
@@ -271,10 +271,10 @@ static void mips_jazz_init(MachineState *machine,
             sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(rc4030, 4));
             break;
         } else if (is_help_option(nd->model)) {
-            fprintf(stderr, "qemu: Supported NICs: dp83932\n");
+            error_report("qemu: Supported NICs: dp83932");
             exit(1);
         } else {
-            fprintf(stderr, "qemu: Unsupported NIC: %s\n", nd->model);
+            error_report("qemu: Unsupported NIC: %s", nd->model);
             exit(1);
         }
     }
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 2adb9bcf89..d457adfa69 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -856,8 +856,8 @@ static int64_t load_kernel (void)
                                               ram_size - initrd_offset);
         }
         if (initrd_size == (target_ulong) -1) {
-            fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                    loaderparams.initrd_filename);
+            error_report("qemu: could not load initial ram disk '%s'",
+                         loaderparams.initrd_filename);
             exit(1);
         }
     }
diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c
index a092072e2a..a3d9406610 100644
--- a/hw/mips/mips_mipssim.c
+++ b/hw/mips/mips_mipssim.c
@@ -101,8 +101,8 @@ static int64_t load_kernel(void)
                 initrd_offset, loaderparams.ram_size - initrd_offset);
         }
         if (initrd_size == (target_ulong) -1) {
-            fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                    loaderparams.initrd_filename);
+            error_report("qemu: could not load initial ram disk '%s'",
+                         loaderparams.initrd_filename);
             exit(1);
         }
     }
diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c
index 1272d4ef9d..e54ce918a7 100644
--- a/hw/mips/mips_r4k.c
+++ b/hw/mips/mips_r4k.c
@@ -121,8 +121,8 @@ static int64_t load_kernel(void)
                                               ram_size - initrd_offset);
         }
         if (initrd_size == (target_ulong) -1) {
-            fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                    loaderparams.initrd_filename);
+            error_report("qemu: could not load initial ram disk '%s'",
+                         loaderparams.initrd_filename);
             exit(1);
         }
     }
@@ -246,7 +246,7 @@ void mips_r4k_init(MachineState *machine)
                                    blk_by_legacy_dinfo(dinfo),
                                    sector_len, mips_rom / sector_len,
                                    4, 0, 0, 0, 0, be)) {
-            fprintf(stderr, "qemu: Error registering flash memory.\n");
+            error_report("qemu: Error registering flash memory.");
 	}
     } else if (!qtest_enabled()) {
         /* not fatal */
diff --git a/hw/misc/a9scu.c b/hw/misc/a9scu.c
index 3e8ad8cd73..21b8e49b6c 100644
--- a/hw/misc/a9scu.c
+++ b/hw/misc/a9scu.c
@@ -9,6 +9,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/misc/a9scu.h"
 
 static uint64_t a9_scu_read(void *opaque, hwaddr offset,
@@ -59,7 +60,7 @@ static void a9_scu_write(void *opaque, hwaddr offset,
         mask = 0xffffffff;
         break;
     default:
-        fprintf(stderr, "Invalid size %u in write to a9 scu register %x\n",
+        error_report("Invalid size %u in write to a9 scu register %x",
                 size, (unsigned)offset);
         return;
     }
diff --git a/hw/misc/omap_gpmc.c b/hw/misc/omap_gpmc.c
index 84f9e4c612..e3b30e90ea 100644
--- a/hw/misc/omap_gpmc.c
+++ b/hw/misc/omap_gpmc.c
@@ -19,6 +19,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/block/flash.h"
 #include "hw/arm/omap.h"
@@ -408,7 +409,7 @@ static void omap_gpmc_cs_map(struct omap_gpmc_s *s, int cs)
     /* TODO: check for overlapping regions and report access errors */
     if (mask != 0x8 && mask != 0xc && mask != 0xe && mask != 0xf
          && !(s->accept_256 && !mask)) {
-        fprintf(stderr, "%s: invalid chip-select mask address (0x%x)\n",
+        error_report("%s: invalid chip-select mask address (0x%x)",
                  __func__, mask);
     }
 
@@ -642,7 +643,7 @@ static void omap_gpmc_write(void *opaque, hwaddr addr,
 
     case 0x010:	/* GPMC_SYSCONFIG */
         if ((value >> 3) == 0x3)
-            fprintf(stderr, "%s: bad SDRAM idle mode %"PRIi64"\n",
+            error_report("%s: bad SDRAM idle mode %"PRIi64"",
                             __func__, value >> 3);
         if (value & 2)
             omap_gpmc_reset(s);
@@ -806,7 +807,7 @@ static void omap_gpmc_write(void *opaque, hwaddr addr,
         break;
     case 0x230:	/* GPMC_TESTMODE_CTRL */
         if (value & 7)
-            fprintf(stderr, "%s: test mode enable attempt\n", __func__);
+            error_report("%s: test mode enable attempt", __func__);
         break;
 
     default:
@@ -864,7 +865,7 @@ void omap_gpmc_attach(struct omap_gpmc_s *s, int cs, MemoryRegion *iomem)
     assert(iomem);
 
     if (cs < 0 || cs >= 8) {
-        fprintf(stderr, "%s: bad chip-select %i\n", __func__, cs);
+        error_report("%s: bad chip-select %i", __func__, cs);
         exit(-1);
     }
     f = &s->cs_file[cs];
@@ -881,7 +882,7 @@ void omap_gpmc_attach_nand(struct omap_gpmc_s *s, int cs, DeviceState *nand)
     assert(nand);
 
     if (cs < 0 || cs >= 8) {
-        fprintf(stderr, "%s: bad chip-select %i\n", __func__, cs);
+        error_report("%s: bad chip-select %i", __func__, cs);
         exit(-1);
     }
     f = &s->cs_file[cs];
diff --git a/hw/misc/omap_l4.c b/hw/misc/omap_l4.c
index 96fc057b4e..47d9c10aeb 100644
--- a/hw/misc/omap_l4.c
+++ b/hw/misc/omap_l4.c
@@ -18,6 +18,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/arm/omap.h"
 
@@ -126,7 +127,7 @@ struct omap_target_agent_s *omap_l4ta_get(struct omap_l4_s *bus,
             break;
         }
     if (!ta) {
-        fprintf(stderr, "%s: bad target agent (%i)\n", __func__, cs);
+        error_report("%s: bad target agent (%i)", __func__, cs);
         exit(-1);
     }
 
@@ -151,7 +152,7 @@ hwaddr omap_l4_attach(struct omap_target_agent_s *ta,
     hwaddr base;
 
     if (region < 0 || region >= ta->regions) {
-        fprintf(stderr, "%s: bad io region (%i)\n", __func__, region);
+        error_report("%s: bad io region (%i)", __func__, region);
         exit(-1);
     }
 
diff --git a/hw/misc/omap_sdrc.c b/hw/misc/omap_sdrc.c
index 7b38c5568c..3dcabc1e00 100644
--- a/hw/misc/omap_sdrc.c
+++ b/hw/misc/omap_sdrc.c
@@ -18,6 +18,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/arm/omap.h"
 
@@ -108,7 +109,7 @@ static void omap_sdrc_write(void *opaque, hwaddr addr,
 
     case 0x10:	/* SDRC_SYSCONFIG */
         if ((value >> 3) != 0x2)
-            fprintf(stderr, "%s: bad SDRAM idle mode %i\n",
+            error_report("%s: bad SDRAM idle mode %i",
                     __func__, (unsigned)value >> 3);
         if (value & 2)
             omap_sdrc_reset(s);
diff --git a/hw/misc/vmport.c b/hw/misc/vmport.c
index 165500223f..55369bd180 100644
--- a/hw/misc/vmport.c
+++ b/hw/misc/vmport.c
@@ -80,7 +80,7 @@ static uint64_t vmport_ioport_read(void *opaque, hwaddr addr,
     if (!s->func[command])
     {
 #ifdef VMPORT_DEBUG
-        fprintf(stderr, "vmport: unknown command %x\n", command);
+        error_report("vmport: unknown command %x", command);
 #endif
         return eax;
     }
diff --git a/hw/moxie/moxiesim.c b/hw/moxie/moxiesim.c
index 5ea8dd3a93..5916f86c68 100644
--- a/hw/moxie/moxiesim.c
+++ b/hw/moxie/moxiesim.c
@@ -25,6 +25,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -61,7 +62,7 @@ static void load_kernel(MoxieCPU *cpu, LoaderParams *loader_params)
                            0, 0);
 
     if (kernel_size <= 0) {
-        fprintf(stderr, "qemu: could not load kernel '%s'\n",
+        error_report("qemu: could not load kernel '%s'",
                 loader_params->kernel_filename);
         exit(1);
     }
@@ -85,8 +86,8 @@ static void load_kernel(MoxieCPU *cpu, LoaderParams *loader_params)
                                               ram_size);
         }
         if (initrd_size == (target_ulong)-1) {
-            fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                    loader_params->initrd_filename);
+            error_report("qemu: could not load initial ram disk '%s'",
+                         loader_params->initrd_filename);
             exit(1);
         }
     }
diff --git a/hw/net/fsl_etsec/etsec.c b/hw/net/fsl_etsec/etsec.c
index 9da1932970..965effa314 100644
--- a/hw/net/fsl_etsec/etsec.c
+++ b/hw/net/fsl_etsec/etsec.c
@@ -347,7 +347,7 @@ static ssize_t etsec_receive(NetClientState *nc,
     eTSEC *etsec = qemu_get_nic_opaque(nc);
 
 #if defined(HEX_DUMP)
-    fprintf(stderr, "%s receive size:%zd\n", nc->name, size);
+    error_report("%s receive size:%zd", nc->name, size);
     qemu_hexdump((void *)buf, stderr, "", size);
 #endif
     /* Flush is unnecessary as are already in receiving path */
diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c
index 654455355f..5f2b5fe046 100644
--- a/hw/net/pcnet.c
+++ b/hw/net/pcnet.c
@@ -1070,7 +1070,7 @@ ssize_t pcnet_receive(NetClientState *nc, const uint8_t *buf, size_t size_)
             if (!s->looptest) {
                 if (size > 4092) {
 #ifdef PCNET_DEBUG_RMD
-                    fprintf(stderr, "pcnet: truncates rx packet.\n");
+                    error_report("pcnet: truncates rx packet.");
 #endif
                     size = 4092;
                 }
diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c
index 3b16dcf5a1..ae40fd6e6e 100644
--- a/hw/net/smc91c111.c
+++ b/hw/net/smc91c111.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/sysbus.h"
 #include "net/net.h"
 #include "hw/devices.h"
@@ -362,9 +363,9 @@ static void smc91c111_writeb(void *opaque, hwaddr offset,
             return;
         case 12: /* Control */
             if (value & 1)
-                fprintf(stderr, "smc91c111:EEPROM store not implemented\n");
+                error_report("smc91c111:EEPROM store not implemented");
             if (value & 2)
-                fprintf(stderr, "smc91c111:EEPROM reload not implemented\n");
+                error_report("smc91c111:EEPROM reload not implemented");
             value &= ~3;
             SET_LOW(ctr, value);
             return;
diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
index e037db63a3..37d0cce560 100644
--- a/hw/net/vhost_net.c
+++ b/hw/net/vhost_net.c
@@ -135,7 +135,7 @@ static int vhost_net_get_fd(NetClientState *backend)
     case NET_CLIENT_DRIVER_TAP:
         return tap_get_fd(backend);
     default:
-        fprintf(stderr, "vhost-net requires tap backend\n");
+        error_report("vhost-net requires tap backend");
         return -EBADFD;
     }
 }
@@ -148,7 +148,7 @@ struct vhost_net *vhost_net_init(VhostNetOptions *options)
     uint64_t features = 0;
 
     if (!options->net_backend) {
-        fprintf(stderr, "vhost-net requires net backend to be setup\n");
+        error_report("vhost-net requires net backend to be setup");
         goto fail;
     }
     net->nc = options->net_backend;
@@ -186,8 +186,8 @@ struct vhost_net *vhost_net_init(VhostNetOptions *options)
             net->dev.features &= ~(1ULL << VIRTIO_NET_F_MRG_RXBUF);
         }
         if (~net->dev.features & net->dev.backend_features) {
-            fprintf(stderr, "vhost lacks feature mask %" PRIu64
-                   " for backend\n",
+            error_report("vhost lacks feature mask %" PRIu64
+                   " for backend",
                    (uint64_t)(~net->dev.features & net->dev.backend_features));
             goto fail;
         }
@@ -197,8 +197,8 @@ struct vhost_net *vhost_net_init(VhostNetOptions *options)
     if (net->nc->info->type == NET_CLIENT_DRIVER_VHOST_USER) {
         features = vhost_user_get_acked_features(net->nc);
         if (~net->dev.features & features) {
-            fprintf(stderr, "vhost lacks feature mask %" PRIu64
-                    " for backend\n",
+            error_report("vhost lacks feature mask %" PRIu64
+                    " for backend",
                     (uint64_t)(~net->dev.features & features));
             goto fail;
         }
@@ -349,7 +349,7 @@ err_start:
     }
     e = k->set_guest_notifiers(qbus->parent, total_queues * 2, false);
     if (e < 0) {
-        fprintf(stderr, "vhost guest notifier cleanup failed: %d\n", e);
+        error_report("vhost guest notifier cleanup failed: %d", e);
         fflush(stderr);
     }
 err:
@@ -370,7 +370,7 @@ void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,
 
     r = k->set_guest_notifiers(qbus->parent, total_queues * 2, false);
     if (r < 0) {
-        fprintf(stderr, "vhost guest notifier cleanup failed: %d\n", r);
+        error_report("vhost guest notifier cleanup failed: %d", r);
         fflush(stderr);
     }
     assert(r >= 0);
diff --git a/hw/nios2/boot.c b/hw/nios2/boot.c
index 2b31f5b844..c896e8007b 100644
--- a/hw/nios2/boot.c
+++ b/hw/nios2/boot.c
@@ -96,7 +96,7 @@ static int nios2_load_dtb(struct nios2_boot_info bi, const uint32_t ramsize,
         r = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs",
                                     kernel_cmdline);
         if (r < 0) {
-            fprintf(stderr, "couldn't set /chosen/bootargs\n");
+            error_report("couldn't set /chosen/bootargs");
         }
     }
 
diff --git a/hw/nvram/eeprom93xx.c b/hw/nvram/eeprom93xx.c
index 2fd0e3c29f..5cad031eba 100644
--- a/hw/nvram/eeprom93xx.c
+++ b/hw/nvram/eeprom93xx.c
@@ -36,6 +36,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/nvram/eeprom93xx.h"
 
@@ -105,8 +106,8 @@ static int get_uint16_from_uint8(QEMUFile *f, void *pv, size_t size,
 static int put_unused(QEMUFile *f, void *pv, size_t size, VMStateField *field,
                       QJSON *vmdesc)
 {
-    fprintf(stderr, "uint16_from_uint8 is used only for backwards compatibility.\n");
-    fprintf(stderr, "Never should be used to write a new state.\n");
+    error_report("uint16_from_uint8 is used only for backwards compatibility.");
+    error_report("Never should be used to write a new state.");
     exit(0);
 
     return 0;
diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
index e3bd626b8c..cf9a816c0e 100644
--- a/hw/nvram/fw_cfg.c
+++ b/hw/nvram/fw_cfg.c
@@ -515,8 +515,8 @@ static int get_uint32_as_uint16(QEMUFile *f, void *pv, size_t size,
 static int put_unused(QEMUFile *f, void *pv, size_t size, VMStateField *field,
                       QJSON *vmdesc)
 {
-    fprintf(stderr, "uint32_as_uint16 is only used for backward compatibility.\n");
-    fprintf(stderr, "This functions shouldn't be called.\n");
+    error_report("uint32_as_uint16 is only used for backward compatibility.");
+    error_report("This functions shouldn't be called.");
 
     return 0;
 }
diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c
index 86bf2849c4..44a6d115dd 100644
--- a/hw/openrisc/openrisc_sim.c
+++ b/hw/openrisc/openrisc_sim.c
@@ -19,6 +19,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -87,7 +88,7 @@ static void cpu_openrisc_load_kernel(ram_addr_t ram_size,
         }
 
         if (kernel_size < 0) {
-            fprintf(stderr, "QEMU: couldn't load the kernel '%s'\n",
+            error_report("QEMU: couldn't load the kernel '%s'",
                     kernel_filename);
             exit(1);
         }
diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
index 1767d2af61..48fef86c05 100644
--- a/hw/pci-host/bonito.c
+++ b/hw/pci-host/bonito.c
@@ -38,7 +38,7 @@
  */
 
 #include "qemu/osdep.h"
-
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
 #include "hw/i386/pc.h"
@@ -449,8 +449,8 @@ static uint32_t bonito_sbridge_pciaddr(void *opaque, hwaddr addr)
     regno = (cfgaddr & BONITO_PCICONF_REG_MASK) >> BONITO_PCICONF_REG_OFFSET;
 
     if (idsel == 0) {
-        fprintf(stderr, "error in bonito pci config address " TARGET_FMT_plx
-            ",pcimap_cfg=%x\n", addr, s->regs[BONITO_PCIMAP_CFG]);
+        error_report("error in bonito pci config address " TARGET_FMT_plx
+            ",pcimap_cfg=%x", addr, s->regs[BONITO_PCIMAP_CFG]);
         exit(1);
     }
     pciaddr = PCI_ADDR(pci_bus_num(phb->bus), devno, funno, regno);
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 1e6fb88eba..1c8395d319 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -515,7 +515,7 @@ static int get_pci_irq_state(QEMUFile *f, void *pv, size_t size,
     for (i = 0; i < PCI_NUM_PINS; ++i) {
         irq_state[i] = qemu_get_be32(f);
         if (irq_state[i] != 0x1 && irq_state[i] != 0) {
-            fprintf(stderr, "irq state %d: must be 0 or 1.\n",
+            error_report("irq state %d: must be 0 or 1.",
                     irq_state[i]);
             return -EINVAL;
         }
@@ -678,7 +678,7 @@ static PCIBus *pci_get_bus_devfn(int *devfnp, PCIBus *root,
     unsigned slot;
 
     if (!root) {
-        fprintf(stderr, "No primary PCI bus\n");
+        error_report("No primary PCI bus");
         return NULL;
     }
 
@@ -694,7 +694,7 @@ static PCIBus *pci_get_bus_devfn(int *devfnp, PCIBus *root,
     }
 
     if (dom != 0) {
-        fprintf(stderr, "No support for non-zero PCI domains\n");
+        error_report("No support for non-zero PCI domains");
         return NULL;
     }
 
@@ -1118,8 +1118,8 @@ void pci_register_bar(PCIDevice *pci_dev, int region_num,
     assert(region_num >= 0);
     assert(region_num < PCI_NUM_REGIONS);
     if (size & (size-1)) {
-        fprintf(stderr, "ERROR: PCI region size must be pow2 "
-                    "type=0x%x, size=0x%"FMT_PCIBUS"\n", type, size);
+        error_report("ERROR: PCI region size must be pow2 "
+                    "type=0x%x, size=0x%"FMT_PCIBUS"", type, size);
         exit(1);
     }
 
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index db0e49ab8f..8a5350161f 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -333,13 +333,13 @@ static int ppce500_load_device_tree(MachineState *machine,
         ret = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-start",
                                     initrd_base);
         if (ret < 0) {
-            fprintf(stderr, "couldn't set /chosen/linux,initrd-start\n");
+            error_report("couldn't set /chosen/linux,initrd-start");
         }
 
         ret = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-end",
                                     (initrd_base + initrd_size));
         if (ret < 0) {
-            fprintf(stderr, "couldn't set /chosen/linux,initrd-end\n");
+            error_report("couldn't set /chosen/linux,initrd-end");
         }
 
     }
@@ -353,7 +353,7 @@ static int ppce500_load_device_tree(MachineState *machine,
     ret = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs",
                                       machine->kernel_cmdline);
     if (ret < 0)
-        fprintf(stderr, "couldn't set /chosen/bootargs\n");
+        error_report("couldn't set /chosen/bootargs");
 
     if (kvm_enabled()) {
         /* Read out host's frequencies */
@@ -720,7 +720,7 @@ static DeviceState *ppce500_init_mpic_kvm(PPCE500Params *params,
 
     CPU_FOREACH(cs) {
         if (kvm_openpic_connect_vcpu(dev, cs)) {
-            fprintf(stderr, "%s: failed to connect vcpu to irqchip\n",
+            error_report("%s: failed to connect vcpu to irqchip",
                     __func__);
             abort();
         }
@@ -821,7 +821,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
         cs = CPU(cpu);
 
         if (env->mmu_model != POWERPC_MMU_BOOKE206) {
-            fprintf(stderr, "MMU model %i not supported by this machine.\n",
+            error_report("MMU model %i not supported by this machine.",
                 env->mmu_model);
             exit(1);
         }
@@ -967,7 +967,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
                                           cur_base,
                                           ram_size - cur_base);
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     machine->kernel_filename);
             exit(1);
         }
@@ -982,8 +982,8 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
                                           ram_size - initrd_base);
 
         if (initrd_size < 0) {
-            fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                    machine->initrd_filename);
+            error_report("qemu: could not load initial ram disk '%s'",
+                         machine->initrd_filename);
             exit(1);
         }
 
@@ -1024,7 +1024,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
         kernel_size = load_uimage(filename, &bios_entry, &loadaddr, NULL,
                                   NULL, NULL);
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load firmware '%s'\n", filename);
+            error_report("qemu: could not load firmware '%s'", filename);
             exit(1);
         }
     }
@@ -1037,7 +1037,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
                                        initrd_base, initrd_size,
                                        kernel_base, kernel_size);
     if (dt_size < 0) {
-        fprintf(stderr, "couldn't load device tree\n");
+        error_report("couldn't load device tree");
         exit(1);
     }
     assert(dt_size < DTB_MAX_SIZE);
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 33b46cb50b..c0edf22352 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -283,7 +283,7 @@ static void ppc_core99_init(MachineState *machine)
             }
         }
         if (ppc_boot_device == '\0') {
-            fprintf(stderr, "No valid boot device for Mac99 machine\n");
+            error_report("No valid boot device for Mac99 machine");
             exit(1);
         }
     }
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index 193b9047d9..02f03650af 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -226,7 +226,7 @@ static void ppc_heathrow_init(MachineState *machine)
 #endif
         }
         if (ppc_boot_device == '\0') {
-            fprintf(stderr, "No valid boot device for G3 Beige machine\n");
+            error_report("No valid boot device for G3 Beige machine");
             exit(1);
         }
     }
diff --git a/hw/ppc/mpc8544_guts.c b/hw/ppc/mpc8544_guts.c
index ce1254b5d4..3a2c49e3fd 100644
--- a/hw/ppc/mpc8544_guts.c
+++ b/hw/ppc/mpc8544_guts.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/hw.h"
@@ -83,7 +84,7 @@ static uint64_t mpc8544_guts_read(void *opaque, hwaddr addr,
         value = env->spr[SPR_E500_SVR];
         break;
     default:
-        fprintf(stderr, "guts: Unknown register read: %x\n", (int)addr);
+        error_report("guts: Unknown register read: %x", (int)addr);
         break;
     }
 
@@ -102,7 +103,7 @@ static void mpc8544_guts_write(void *opaque, hwaddr addr,
         }
         break;
     default:
-        fprintf(stderr, "guts: Unknown register write: %x = %x\n",
+        error_report("guts: Unknown register write: %x = %x",
                 (int)addr, (unsigned)value);
         break;
     }
diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c
index e92db2c66a..0a31a1c116 100644
--- a/hw/ppc/ppc405_boards.c
+++ b/hw/ppc/ppc405_boards.c
@@ -324,7 +324,7 @@ static void ref405ep_init(MachineState *machine)
         kernel_size = load_image_targphys(kernel_filename, kernel_base,
                                           ram_size - kernel_base);
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
@@ -336,8 +336,8 @@ static void ref405ep_init(MachineState *machine)
             initrd_size = load_image_targphys(initrd_filename, initrd_base,
                                               ram_size - initrd_base);
             if (initrd_size < 0) {
-                fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                        initrd_filename);
+                error_report("qemu: could not load initial ram disk '%s'",
+                             initrd_filename);
                 exit(1);
             }
         } else {
@@ -607,7 +607,7 @@ static void taihu_405ep_init(MachineState *machine)
         kernel_size = load_image_targphys(kernel_filename, kernel_base,
                                           ram_size - kernel_base);
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
index f92d47f28d..77b74dfe9e 100644
--- a/hw/ppc/ppc440_bamboo.c
+++ b/hw/ppc/ppc440_bamboo.c
@@ -12,6 +12,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "net/net.h"
 #include "hw/hw.h"
@@ -80,22 +81,22 @@ static int bamboo_load_device_tree(hwaddr addr,
     ret = qemu_fdt_setprop(fdt, "/memory", "reg", mem_reg_property,
                            sizeof(mem_reg_property));
     if (ret < 0)
-        fprintf(stderr, "couldn't set /memory/reg\n");
+        error_report("couldn't set /memory/reg");
 
     ret = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-start",
                                 initrd_base);
     if (ret < 0)
-        fprintf(stderr, "couldn't set /chosen/linux,initrd-start\n");
+        error_report("couldn't set /chosen/linux,initrd-start");
 
     ret = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-end",
                                 (initrd_base + initrd_size));
     if (ret < 0)
-        fprintf(stderr, "couldn't set /chosen/linux,initrd-end\n");
+        error_report("couldn't set /chosen/linux,initrd-end");
 
     ret = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs",
                                   kernel_cmdline);
     if (ret < 0)
-        fprintf(stderr, "couldn't set /chosen/bootargs\n");
+        error_report("couldn't set /chosen/bootargs");
 
     /* Copy data from the host device tree into the guest. Since the guest can
      * directly access the timebase without host involvement, we must expose
@@ -190,7 +191,7 @@ static void bamboo_init(MachineState *machine)
     env = &cpu->env;
 
     if (env->mmu_model != POWERPC_MMU_BOOKE) {
-        fprintf(stderr, "MMU model %i not supported by this machine.\n",
+        error_report("MMU model %i not supported by this machine.",
             env->mmu_model);
         exit(1);
     }
@@ -224,7 +225,7 @@ static void bamboo_init(MachineState *machine)
                                 NULL);
     pcibus = (PCIBus *)qdev_get_child_bus(dev, "pci.0");
     if (!pcibus) {
-        fprintf(stderr, "couldn't create PCI controller!\n");
+        error_report("couldn't create PCI controller!");
         exit(1);
     }
 
@@ -265,7 +266,7 @@ static void bamboo_init(MachineState *machine)
         }
         /* XXX try again as binary */
         if (success < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
@@ -277,7 +278,7 @@ static void bamboo_init(MachineState *machine)
                                           ram_size - RAMDISK_ADDR);
 
         if (initrd_size < 0) {
-            fprintf(stderr, "qemu: could not load ram disk '%s' at %x\n",
+            error_report("qemu: could not load ram disk '%s' at %x",
                     initrd_filename, RAMDISK_ADDR);
             exit(1);
         }
@@ -287,7 +288,7 @@ static void bamboo_init(MachineState *machine)
     if (kernel_filename) {
         if (bamboo_load_device_tree(FDT_ADDR, ram_size, RAMDISK_ADDR,
                                     initrd_size, kernel_cmdline) < 0) {
-            fprintf(stderr, "couldn't load device tree\n");
+            error_report("couldn't load device tree");
             exit(1);
         }
     }
diff --git a/hw/ppc/ppc4xx_pci.c b/hw/ppc/ppc4xx_pci.c
index 6953f8b9ac..0b91d22253 100644
--- a/hw/ppc/ppc4xx_pci.c
+++ b/hw/ppc/ppc4xx_pci.c
@@ -20,6 +20,7 @@
  * 4xx SoCs, such as the 440EP. */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/ppc/ppc.h"
 #include "hw/ppc/ppc4xx.h"
@@ -254,7 +255,7 @@ static void ppc4xx_pci_set_irq(void *opaque, int irq_num, int level)
 
     trace_ppc4xx_pci_set_irq(irq_num);
     if (irq_num < 0) {
-        fprintf(stderr, "%s: PCI irq %d\n", __func__, irq_num);
+        error_report("%s: PCI irq %d", __func__, irq_num);
         return;
     }
     qemu_set_irq(pci_irqs[irq_num], level);
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 94138a4e8c..7551d53fa5 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -576,7 +576,7 @@ static void ppc_prep_init(MachineState *machine)
             }
         }
         if (ppc_boot_device == '\0') {
-            fprintf(stderr, "No valid boot device for Mac99 machine\n");
+            error_report("No valid boot device for Mac99 machine");
             exit(1);
         }
     }
@@ -597,7 +597,7 @@ static void ppc_prep_init(MachineState *machine)
     qdev_init_nofail(dev);
     pci_bus = (PCIBus *)qdev_get_child_bus(dev, "pci.0");
     if (pci_bus == NULL) {
-        fprintf(stderr, "Couldn't create PCI host controller.\n");
+        error_report("Couldn't create PCI host controller.");
         exit(1);
     }
     sysctrl->contiguous_map_irq = qdev_get_gpio_in(dev, 0);
diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c
index ed9b406fd3..7641737f81 100644
--- a/hw/ppc/virtex_ml507.c
+++ b/hw/ppc/virtex_ml507.c
@@ -187,7 +187,7 @@ static int xilinx_load_device_tree(hwaddr addr,
 
     r = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", kernel_cmdline);
     if (r < 0)
-        fprintf(stderr, "couldn't set /chosen/bootargs\n");
+        error_report("couldn't set /chosen/bootargs");
     cpu_physical_memory_write(addr, fdt, fdt_size);
     return fdt_size;
 }
@@ -219,7 +219,7 @@ static void virtex_init(MachineState *machine)
     env = &cpu->env;
 
     if (env->mmu_model != POWERPC_MMU_BOOKE) {
-        fprintf(stderr, "MMU model %i not supported by this machine.\n",
+        error_report("MMU model %i not supported by this machine.",
             env->mmu_model);
         exit(1);
     }
diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index ff1bb1534c..d3c46bc01f 100644
--- a/hw/s390x/virtio-ccw.c
+++ b/hw/s390x/virtio-ccw.c
@@ -466,7 +466,7 @@ static int virtio_ccw_cb(SubchDev *sch, CCW1 ccw)
                  * passes us zeroes for those we don't support.
                  */
                 if (features.features) {
-                    fprintf(stderr, "Guest bug: features[%i]=%x (expected 0)\n",
+                    error_report("Guest bug: features[%i]=%x (expected 0)",
                             features.index, features.features);
                     /* XXX: do a unit check here? */
                 }
diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index 3e56ab267c..3e2b24e67d 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -14,7 +14,7 @@
  */
 
 #include "qemu/osdep.h"
-
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
 #include "hw/scsi/scsi.h"
@@ -1501,7 +1501,7 @@ again:
            This is apparently sufficient to beat the drivers into submission.
          */
         if (!(s->sien0 & LSI_SIST0_UDC))
-            fprintf(stderr, "inf. loop with UDC masked\n");
+            error_report("inf. loop with UDC masked");
         lsi_script_scsi_interrupt(s, LSI_SIST0_UDC, 0);
         lsi_disconnect(s);
     } else if (s->istat1 & LSI_ISTAT1_SRUN && !s->waiting) {
diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c
index 360db53ac8..8c4eabcf3d 100644
--- a/hw/scsi/spapr_vscsi.c
+++ b/hw/scsi/spapr_vscsi.c
@@ -32,6 +32,7 @@
  *  - Maybe do autosense (PAPR seems to mandate it, linux doesn't care)
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/hw.h"
@@ -179,7 +180,7 @@ static int vscsi_send_iu(VSCSIState *s, vscsi_req *req,
     rc = spapr_vio_dma_write(&s->vdev, req->crq.s.IU_data_ptr,
                              &req->iu, length);
     if (rc) {
-        fprintf(stderr, "vscsi_send_iu: DMA write failure !\n");
+        error_report("vscsi_send_iu: DMA write failure !");
     }
 
     req->crq.s.valid = 0x80;
@@ -197,7 +198,7 @@ static int vscsi_send_iu(VSCSIState *s, vscsi_req *req,
 
     rc1 = spapr_vio_send_crq(&s->vdev, req->crq.raw);
     if (rc1) {
-        fprintf(stderr, "vscsi_send_iu: Error sending response\n");
+        error_report("vscsi_send_iu: Error sending response");
         return rc1;
     }
 
@@ -330,7 +331,7 @@ static int vscsi_fetch_desc(VSCSIState *s, struct vscsi_req *req,
         break;
     }
     default:
-        fprintf(stderr, "VSCSI:   Unknown format %x\n", req->dma_fmt);
+        error_report("VSCSI:   Unknown format %x", req->dma_fmt);
         return -1;
     }
 
@@ -518,7 +519,7 @@ static void vscsi_transfer_data(SCSIRequest *sreq, uint32_t len)
 
     trace_spapr_vscsi_transfer_data(sreq->tag, len, req);
     if (req == NULL) {
-        fprintf(stderr, "VSCSI: Can't find request for tag 0x%x\n", sreq->tag);
+        error_report("VSCSI: Can't find request for tag 0x%x", sreq->tag);
         return;
     }
 
@@ -527,7 +528,7 @@ static void vscsi_transfer_data(SCSIRequest *sreq, uint32_t len)
         rc = vscsi_srp_transfer_data(s, req, req->writing, buf, len);
     }
     if (rc < 0) {
-        fprintf(stderr, "VSCSI: RDMA error rc=%d!\n", rc);
+        error_report("VSCSI: RDMA error rc=%d!", rc);
         req->dma_error = true;
         scsi_req_cancel(req->sreq);
         return;
@@ -547,7 +548,7 @@ static void vscsi_command_complete(SCSIRequest *sreq, uint32_t status, size_t re
 
     trace_spapr_vscsi_command_complete(sreq->tag, status, req);
     if (req == NULL) {
-        fprintf(stderr, "VSCSI: Can't find request for tag 0x%x\n", sreq->tag);
+        error_report("VSCSI: Can't find request for tag 0x%x", sreq->tag);
         return;
     }
 
@@ -639,7 +640,7 @@ static void *vscsi_load_request(QEMUFile *f, SCSIRequest *sreq)
     memset(req, 0, sizeof(*req));
     rc = vmstate_load_state(f, &vmstate_spapr_vscsi_req, req, 1);
     if (rc) {
-        fprintf(stderr, "VSCSI: failed loading request tag#%u\n", sreq->tag);
+        error_report("VSCSI: failed loading request tag#%u", sreq->tag);
         return NULL;
     }
     assert(req->active);
@@ -827,7 +828,7 @@ static int vscsi_process_tsk_mgmt(VSCSIState *s, vscsi_req *req)
     uint64_t tag = iu->srp.rsp.tag;
     uint8_t sol_not = iu->srp.cmd.sol_not;
 
-    fprintf(stderr, "vscsi_process_tsk_mgmt %02x\n",
+    error_report("vscsi_process_tsk_mgmt %02x",
             iu->srp.tsk_mgmt.tsk_mgmt_func);
 
     d = vscsi_device_find(&s->bus, be64_to_cpu(req->iu.srp.tsk_mgmt.lun), &lun);
@@ -932,10 +933,10 @@ static int vscsi_handle_srp_req(VSCSIState *s, vscsi_req *req)
     case SRP_CRED_RSP:
     case SRP_AER_REQ:
     case SRP_AER_RSP:
-        fprintf(stderr, "VSCSI: Unsupported opcode %02x\n", opcode);
+        error_report("VSCSI: Unsupported opcode %02x", opcode);
         break;
     default:
-        fprintf(stderr, "VSCSI: Unknown type %02x\n", opcode);
+        error_report("VSCSI: Unknown type %02x", opcode);
     }
 
     return done;
@@ -953,7 +954,7 @@ static int vscsi_send_adapter_info(VSCSIState *s, vscsi_req *req)
     rc = spapr_vio_dma_read(&s->vdev, be64_to_cpu(sinfo->buffer),
                             &info, be16_to_cpu(sinfo->common.length));
     if (rc) {
-        fprintf(stderr, "vscsi_send_adapter_info: DMA read failure !\n");
+        error_report("vscsi_send_adapter_info: DMA read failure !");
     }
 #endif
     memset(&info, 0, sizeof(info));
@@ -967,7 +968,7 @@ static int vscsi_send_adapter_info(VSCSIState *s, vscsi_req *req)
     rc = spapr_vio_dma_write(&s->vdev, be64_to_cpu(sinfo->buffer),
                              &info, be16_to_cpu(sinfo->common.length));
     if (rc)  {
-        fprintf(stderr, "vscsi_send_adapter_info: DMA write failure !\n");
+        error_report("vscsi_send_adapter_info: DMA write failure !");
     }
 
     sinfo->common.status = rc ? cpu_to_be32(1) : 0;
@@ -987,7 +988,7 @@ static int vscsi_send_capabilities(VSCSIState *s, vscsi_req *req)
     req_len = len = be16_to_cpu(vcap->common.length);
     buffer = be64_to_cpu(vcap->buffer);
     if (len > sizeof(cap)) {
-        fprintf(stderr, "vscsi_send_capabilities: capabilities size mismatch !\n");
+        error_report("vscsi_send_capabilities: capabilities size mismatch !");
 
         /*
          * Just read and populate the structure that is known.
@@ -997,7 +998,7 @@ static int vscsi_send_capabilities(VSCSIState *s, vscsi_req *req)
     }
     rc = spapr_vio_dma_read(&s->vdev, buffer, &cap, len);
     if (rc)  {
-        fprintf(stderr, "vscsi_send_capabilities: DMA read failure !\n");
+        error_report("vscsi_send_capabilities: DMA read failure !");
     }
 
     /*
@@ -1013,7 +1014,7 @@ static int vscsi_send_capabilities(VSCSIState *s, vscsi_req *req)
 
     rc = spapr_vio_dma_write(&s->vdev, buffer, &cap, len);
     if (rc)  {
-        fprintf(stderr, "vscsi_send_capabilities: DMA write failure !\n");
+        error_report("vscsi_send_capabilities: DMA write failure !");
     }
     if (req_len > len) {
         /*
@@ -1034,11 +1035,11 @@ static int vscsi_handle_mad_req(VSCSIState *s, vscsi_req *req)
 
     switch (be32_to_cpu(mad->empty_iu.common.type)) {
     case VIOSRP_EMPTY_IU_TYPE:
-        fprintf(stderr, "Unsupported EMPTY MAD IU\n");
+        error_report("Unsupported EMPTY MAD IU");
         retlen = sizeof(mad->empty_iu);
         break;
     case VIOSRP_ERROR_LOG_TYPE:
-        fprintf(stderr, "Unsupported ERROR LOG MAD IU\n");
+        error_report("Unsupported ERROR LOG MAD IU");
         retlen = sizeof(mad->error_log);
         break;
     case VIOSRP_ADAPTER_INFO_TYPE:
@@ -1053,7 +1054,7 @@ static int vscsi_handle_mad_req(VSCSIState *s, vscsi_req *req)
         request_handled = true;
         break;
     default:
-        fprintf(stderr, "VSCSI: Unknown MAD type %02x\n",
+        error_report("VSCSI: Unknown MAD type %02x",
                 be32_to_cpu(mad->empty_iu.common.type));
         /*
          * PAPR+ says that "The length field is set to the length
@@ -1078,7 +1079,7 @@ static void vscsi_got_payload(VSCSIState *s, vscsi_crq *crq)
 
     req = vscsi_get_req(s);
     if (req == NULL) {
-        fprintf(stderr, "VSCSI: Failed to get a request !\n");
+        error_report("VSCSI: Failed to get a request !");
         return;
     }
 
@@ -1088,7 +1089,7 @@ static void vscsi_got_payload(VSCSIState *s, vscsi_crq *crq)
      * of the structure.
      */
     if (crq->s.IU_length > sizeof(union viosrp_iu)) {
-        fprintf(stderr, "VSCSI: SRP IU too long (%d bytes) !\n",
+        error_report("VSCSI: SRP IU too long (%d bytes) !",
                 crq->s.IU_length);
         vscsi_put_req(req);
         return;
@@ -1097,7 +1098,7 @@ static void vscsi_got_payload(VSCSIState *s, vscsi_crq *crq)
     /* XXX Handle failure differently ? */
     if (spapr_vio_dma_read(&s->vdev, crq->s.IU_data_ptr, &req->iu,
                            crq->s.IU_length)) {
-        fprintf(stderr, "vscsi_got_payload: DMA read failure !\n");
+        error_report("vscsi_got_payload: DMA read failure !");
         vscsi_put_req(req);
         return;
     }
@@ -1158,16 +1159,16 @@ static int vscsi_do_crq(struct VIOsPAPRDevice *dev, uint8_t *crq_data)
         case VIOSRP_AIX_FORMAT:
         case VIOSRP_LINUX_FORMAT:
         case VIOSRP_INLINE_FORMAT:
-            fprintf(stderr, "vscsi_do_srq: Unsupported payload format %02x\n",
+            error_report("vscsi_do_srq: Unsupported payload format %02x",
                     crq.s.format);
             break;
         default:
-            fprintf(stderr, "vscsi_do_srq: Unknown payload format %02x\n",
+            error_report("vscsi_do_srq: Unknown payload format %02x",
                     crq.s.format);
         }
         break;
     default:
-        fprintf(stderr, "vscsi_do_crq: unknown CRQ %02x %02x ...\n",
+        error_report("vscsi_do_crq: unknown CRQ %02x %02x ...",
                 crq.raw[0], crq.raw[1]);
     };
 
diff --git a/hw/scsi/virtio-scsi-dataplane.c b/hw/scsi/virtio-scsi-dataplane.c
index add4b3f4a4..e047361310 100644
--- a/hw/scsi/virtio-scsi-dataplane.c
+++ b/hw/scsi/virtio-scsi-dataplane.c
@@ -97,7 +97,7 @@ static int virtio_scsi_vring_init(VirtIOSCSI *s, VirtQueue *vq, int n,
     /* Set up virtqueue notify */
     rc = virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), n, true);
     if (rc != 0) {
-        fprintf(stderr, "virtio-scsi: Failed to set host notifier (%d)\n",
+        error_report("virtio-scsi: Failed to set host notifier (%d)",
                 rc);
         s->dataplane_fenced = true;
         return rc;
@@ -141,8 +141,8 @@ int virtio_scsi_dataplane_start(VirtIODevice *vdev)
     /* Set up guest notifier (irq) */
     rc = k->set_guest_notifiers(qbus->parent, vs->conf.num_queues + 2, true);
     if (rc != 0) {
-        fprintf(stderr, "virtio-scsi: Failed to set guest notifiers (%d), "
-                "ensure -enable-kvm is set\n", rc);
+        error_report("virtio-scsi: Failed to set guest notifiers (%d), "
+                "ensure -enable-kvm is set", rc);
         goto fail_guest_notifiers;
     }
 
diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c
index 55c8098ecd..2b878a0c5e 100644
--- a/hw/sd/pl181.c
+++ b/hw/sd/pl181.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "sysemu/block-backend.h"
 #include "sysemu/blockdev.h"
 #include "hw/sysbus.h"
@@ -146,7 +147,7 @@ static void pl181_fifo_push(PL181State *s, uint32_t value)
     int n;
 
     if (s->fifo_len == PL181_FIFO_LEN) {
-        fprintf(stderr, "pl181: FIFO overflow\n");
+        error_report("pl181: FIFO overflow");
         return;
     }
     n = (s->fifo_pos + s->fifo_len) & (PL181_FIFO_LEN - 1);
@@ -160,7 +161,7 @@ static uint32_t pl181_fifo_pop(PL181State *s)
     uint32_t value;
 
     if (s->fifo_len == 0) {
-        fprintf(stderr, "pl181: FIFO underflow\n");
+        error_report("pl181: FIFO underflow");
         return 0;
     }
     value = s->fifo[s->fifo_pos];
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index ba47bff4db..e467d74fc8 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -700,7 +700,7 @@ static void sd_lock_command(SDState *sd)
         sd->card_status &= ~CARD_IS_LOCKED;
         sd->pwd_len = 0;
         /* Erasing the entire card here! */
-        fprintf(stderr, "SD: Card force-erased by CMD42\n");
+        error_report("SD: Card force-erased by CMD42");
         return;
     }
 
@@ -1282,7 +1282,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
         return sd_r1;
 
     case 56:	/* CMD56:  GEN_CMD */
-        fprintf(stderr, "SD: GEN_CMD 0x%08x\n", req.arg);
+        error_report("SD: GEN_CMD 0x%08x", req.arg);
 
         switch (sd->state) {
         case sd_transfer_state:
@@ -1565,10 +1565,10 @@ send_response:
         int i;
         DPRINTF("Response:");
         for (i = 0; i < rsplen; i++)
-            fprintf(stderr, " %02x", response[i]);
-        fprintf(stderr, " state %d\n", sd->state);
+            error_report(" %02x", response[i]);
+        error_report(" state %d", sd->state);
     } else {
-        DPRINTF("No response %d\n", sd->state);
+        DPRINTF("No response %d", sd->state);
     }
 #endif
 
@@ -1580,14 +1580,14 @@ static void sd_blk_read(SDState *sd, uint64_t addr, uint32_t len)
     DPRINTF("sd_blk_read: addr = 0x%08llx, len = %d\n",
             (unsigned long long) addr, len);
     if (!sd->blk || blk_pread(sd->blk, addr, sd->data, len) < 0) {
-        fprintf(stderr, "sd_blk_read: read error on host side\n");
+        error_report("sd_blk_read: read error on host side");
     }
 }
 
 static void sd_blk_write(SDState *sd, uint64_t addr, uint32_t len)
 {
     if (!sd->blk || blk_pwrite(sd->blk, addr, sd->data, len, 0) < 0) {
-        fprintf(stderr, "sd_blk_write: write error on host side\n");
+        error_report("sd_blk_write: write error on host side");
     }
 }
 
diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c
index 16b9ed2db2..a010f559e2 100644
--- a/hw/sh4/r2d.c
+++ b/hw/sh4/r2d.c
@@ -24,6 +24,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -319,8 +320,8 @@ static void r2d_init(MachineState *machine)
                                           SDRAM_BASE + LINUX_LOAD_OFFSET,
                                           INITRD_LOAD_OFFSET - LINUX_LOAD_OFFSET);
         if (kernel_size < 0) {
-          fprintf(stderr, "qemu: could not load kernel '%s'\n", kernel_filename);
-          exit(1);
+            error_report("qemu: could not load kernel '%s'", kernel_filename);
+            exit(1);
         }
 
         /* initialization which should be done by firmware */
@@ -339,8 +340,8 @@ static void r2d_init(MachineState *machine)
                                           SDRAM_SIZE - INITRD_LOAD_OFFSET);
 
         if (initrd_size < 0) {
-          fprintf(stderr, "qemu: could not load initrd '%s'\n", initrd_filename);
-          exit(1);
+            error_report("qemu: could not load initrd '%s'", initrd_filename);
+            exit(1);
         }
 
         /* initialization which should be done by firmware */
diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c
index 166e4bd947..64ffc4c1d2 100644
--- a/hw/sh4/sh7750.c
+++ b/hw/sh4/sh7750.c
@@ -23,6 +23,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/sh4/sh.h"
 #include "sysemu/sysemu.h"
@@ -147,9 +148,9 @@ static void porta_changed(SH7750State * s, uint16_t prev)
     int i, r = 0;
 
 #if 0
-    fprintf(stderr, "porta changed from 0x%04x to 0x%04x\n",
+    error_report("porta changed from 0x%04x to 0x%04x",
 	    prev, porta_lines(s));
-    fprintf(stderr, "pdtra=0x%04x, pctra=0x%08x\n", s->pdtra, s->pctra);
+    error_report("pdtra=0x%04x, pctra=0x%08x", s->pdtra, s->pctra);
 #endif
     currenta = porta_lines(s);
     if (currenta == prev)
@@ -200,13 +201,13 @@ static void portb_changed(SH7750State * s, uint16_t prev)
 
 static void error_access(const char *kind, hwaddr addr)
 {
-    fprintf(stderr, "%s to %s (0x" TARGET_FMT_plx ") not supported\n",
+    error_report("%s to %s (0x" TARGET_FMT_plx ") not supported",
 	    kind, regname(addr), addr);
 }
 
 static void ignore_access(const char *kind, hwaddr addr)
 {
-    fprintf(stderr, "%s to %s (0x" TARGET_FMT_plx ") ignored\n",
+    error_report("%s to %s (0x" TARGET_FMT_plx ") ignored",
 	    kind, regname(addr), addr);
 }
 
@@ -326,47 +327,48 @@ static void sh7750_mem_writew(void *opaque, hwaddr addr,
     uint16_t temp;
 
     switch (addr) {
-	/* SDRAM controller */
+    /* SDRAM controller */
     case SH7750_BCR2_A7:
         s->bcr2 = mem_value;
         return;
     case SH7750_BCR3_A7:
-	if(!has_bcr3_and_bcr4(s))
-	    error_access("word write", addr);
-	s->bcr3 = mem_value;
-	return;
+        if (!has_bcr3_and_bcr4(s)) {
+            error_access("word write", addr);
+        }
+        s->bcr3 = mem_value;
+        return;
     case SH7750_PCR_A7:
-	s->pcr = mem_value;
-	return;
+        s->pcr = mem_value;
+        return;
     case SH7750_RTCNT_A7:
     case SH7750_RTCOR_A7:
     case SH7750_RTCSR_A7:
-	ignore_access("word write", addr);
-	return;
-	/* IO ports */
+        ignore_access("word write", addr);
+        return;
+        /* IO ports */
     case SH7750_PDTRA_A7:
-	temp = porta_lines(s);
-	s->pdtra = mem_value;
-	porta_changed(s, temp);
-	return;
+        temp = porta_lines(s);
+        s->pdtra = mem_value;
+        porta_changed(s, temp);
+        return;
     case SH7750_PDTRB_A7:
-	temp = portb_lines(s);
-	s->pdtrb = mem_value;
-	portb_changed(s, temp);
-	return;
+        temp = portb_lines(s);
+        s->pdtrb = mem_value;
+        portb_changed(s, temp);
+        return;
     case SH7750_RFCR_A7:
-	fprintf(stderr, "Write access to refresh count register\n");
-	s->rfcr = mem_value;
-	return;
+        error_report("Write access to refresh count register");
+        s->rfcr = mem_value;
+        return;
     case SH7750_GPIOIC_A7:
-	s->gpioic = mem_value;
-	if (mem_value != 0) {
-	    fprintf(stderr, "I/O interrupts not implemented\n");
+        s->gpioic = mem_value;
+        if (mem_value != 0) {
+            error_report("I/O interrupts not implemented");
             abort();
-	}
-	return;
+        }
+        return;
     default:
-	error_access("word write", addr);
+        error_access("word write", addr);
         abort();
     }
 }
diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
index ec2816bf94..d434edec92 100644
--- a/hw/sparc/leon3.c
+++ b/hw/sparc/leon3.c
@@ -22,6 +22,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -172,7 +173,7 @@ static void leon3_generic_hw_init(MachineState *machine)
     }
 
     if (bios_size > prom_size) {
-        fprintf(stderr, "qemu: could not load prom '%s': file too big\n",
+        error_report("qemu: could not load prom '%s': file too big",
                 filename);
         exit(1);
     }
@@ -180,11 +181,11 @@ static void leon3_generic_hw_init(MachineState *machine)
     if (bios_size > 0) {
         ret = load_image_targphys(filename, 0x00000000, bios_size);
         if (ret < 0 || ret > prom_size) {
-            fprintf(stderr, "qemu: could not load prom '%s'\n", filename);
+            error_report("qemu: could not load prom '%s'", filename);
             exit(1);
         }
     } else if (kernel_filename == NULL && !qtest_enabled()) {
-        fprintf(stderr, "Can't read bios image %s\n", filename);
+        error_report("Can't read bios image %s", filename);
         exit(1);
     }
     g_free(filename);
@@ -197,7 +198,7 @@ static void leon3_generic_hw_init(MachineState *machine)
         kernel_size = load_elf(kernel_filename, NULL, NULL, &entry, NULL, NULL,
                                1 /* big endian */, EM_SPARC, 0, 0);
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index e1bdd4828d..7a2812aaa4 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -261,7 +261,7 @@ static unsigned long sun4m_load_kernel(const char *kernel_filename,
                                               KERNEL_LOAD_ADDR,
                                               RAM_size - KERNEL_LOAD_ADDR);
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
@@ -273,8 +273,8 @@ static unsigned long sun4m_load_kernel(const char *kernel_filename,
                                               INITRD_LOAD_ADDR,
                                               RAM_size - INITRD_LOAD_ADDR);
             if (initrd_size < 0) {
-                fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                        initrd_filename);
+                error_report("qemu: could not load initial ram disk '%s'",
+                             initrd_filename);
                 exit(1);
             }
         }
@@ -688,7 +688,7 @@ static void prom_init(hwaddr addr, const char *bios_name)
         ret = -1;
     }
     if (ret < 0 || ret > PROM_SIZE_MAX) {
-        fprintf(stderr, "qemu: could not load prom '%s'\n", bios_name);
+        error_report("qemu: could not load prom '%s'", bios_name);
         exit(1);
     }
 }
diff --git a/hw/sparc64/niagara.c b/hw/sparc64/niagara.c
index 9a8d6109d4..60799220f3 100644
--- a/hw/sparc64/niagara.c
+++ b/hw/sparc64/niagara.c
@@ -153,7 +153,7 @@ static void niagara_init(MachineState *machine)
             dinfo->is_default = 1;
             rom_add_file_fixed(blk_bs(blk)->filename, NIAGARA_VDISK_BASE, -1);
         } else {
-            fprintf(stderr, "qemu: could not load ram disk '%s'\n",
+            error_report("qemu: could not load ram disk '%s'",
                     blk_bs(blk)->filename);
             exit(1);
         }
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index c3280aaf38..070d9b94f9 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -22,6 +22,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -165,7 +166,7 @@ static uint64_t sun4u_load_kernel(const char *kernel_filename,
                                               RAM_size - KERNEL_LOAD_ADDR);
         }
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
@@ -178,8 +179,8 @@ static uint64_t sun4u_load_kernel(const char *kernel_filename,
                                                *initrd_addr,
                                                RAM_size - *initrd_addr);
             if ((int)*initrd_size < 0) {
-                fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                        initrd_filename);
+                error_report("qemu: could not load initial ram disk '%s'",
+                             initrd_filename);
                 exit(1);
             }
         }
@@ -322,7 +323,7 @@ static void prom_init(hwaddr addr, const char *bios_name)
         ret = -1;
     }
     if (ret < 0 || ret > PROM_SIZE_MAX) {
-        fprintf(stderr, "qemu: could not load prom '%s'\n", bios_name);
+        error_report("qemu: could not load prom '%s'", bios_name);
         exit(1);
     }
 }
diff --git a/hw/ssi/omap_spi.c b/hw/ssi/omap_spi.c
index 34163e5646..98242d1e8b 100644
--- a/hw/ssi/omap_spi.c
+++ b/hw/ssi/omap_spi.c
@@ -20,6 +20,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/arm/omap.h"
 
@@ -295,9 +296,9 @@ static void omap_mcspi_write(void *opaque, hwaddr addr,
         if ((value ^ s->ch[ch].config) & (3 << 14))	/* DMAR | DMAW */
             omap_mcspi_dmarequest_update(s->ch + ch);
         if (((value >> 12) & 3) == 3)			/* TRM */
-            fprintf(stderr, "%s: invalid TRM value (3)\n", __func__);
+            error_report("%s: invalid TRM value (3)", __func__);
         if (((value >> 7) & 0x1f) < 3)			/* WL */
-            fprintf(stderr, "%s: invalid WL value (%" PRIx64 ")\n",
+            error_report("%s: invalid WL value (%" PRIx64 ")",
                             __func__, (value >> 7) & 0x1f);
         s->ch[ch].config = value & 0x7fffff;
         break;
diff --git a/hw/timer/omap_gptimer.c b/hw/timer/omap_gptimer.c
index ae2dc99832..0f064241d3 100644
--- a/hw/timer/omap_gptimer.c
+++ b/hw/timer/omap_gptimer.c
@@ -18,6 +18,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "hw/arm/omap.h"
@@ -356,7 +357,7 @@ static void omap_gp_timer_write(void *opaque, hwaddr addr,
     case 0x10:	/* TIOCP_CFG */
         s->config = value & 0x33d;
         if (((value >> 3) & 3) == 3)				/* IDLEMODE */
-            fprintf(stderr, "%s: illegal IDLEMODE value in TIOCP_CFG\n",
+            error_report("%s: illegal IDLEMODE value in TIOCP_CFG",
                             __func__);
         if (value & 2)						/* SOFTRESET */
             omap_gp_timer_reset(s);
@@ -394,11 +395,11 @@ static void omap_gp_timer_write(void *opaque, hwaddr addr,
         s->ar = (value >> 1) & 1;
         s->st = (value >> 0) & 1;
         if (s->inout && s->trigger != gpt_trigger_none)
-            fprintf(stderr, "%s: GP timer pin must be an output "
-                            "for this trigger mode\n", __func__);
+            error_report("%s: GP timer pin must be an output "
+                         "for this trigger mode", __func__);
         if (!s->inout && s->capture != gpt_capture_none)
-            fprintf(stderr, "%s: GP timer pin must be an input "
-                            "for this capture mode\n", __func__);
+            error_report("%s: GP timer pin must be an input "
+                         "for this capture mode", __func__);
         if (s->trigger == gpt_trigger_none)
             omap_gp_timer_out(s, s->scpwm);
         /* TODO: make sure this doesn't overflow 32-bits */
diff --git a/hw/timer/twl92230.c b/hw/timer/twl92230.c
index 87e334af24..3ade0ba929 100644
--- a/hw/timer/twl92230.c
+++ b/hw/timer/twl92230.c
@@ -614,7 +614,7 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value)
             break;
         rtc_badness:
         default:
-            fprintf(stderr, "%s: bad RTC_UPDATE value %02x\n",
+            error_report("%s: bad RTC_UPDATE value %02x",
                             __func__, value);
             s->status |= 1 << 10;				/* RTCERR */
             menelaus_update(s);
diff --git a/hw/timer/xilinx_timer.c b/hw/timer/xilinx_timer.c
index 59439c05be..a80bba846b 100644
--- a/hw/timer/xilinx_timer.c
+++ b/hw/timer/xilinx_timer.c
@@ -127,7 +127,7 @@ timer_read(void *opaque, hwaddr addr, unsigned int size)
             break;
 
     }
-    D(fprintf(stderr, "%s timer=%d %x=%x\n", __func__, timer, addr * 4, r));
+    D(error_report("%s timer=%d %x=%x", __func__, timer, addr * 4, r));
     return r;
 }
 
@@ -135,7 +135,7 @@ static void timer_enable(struct xlx_timer *xt)
 {
     uint64_t count;
 
-    D(fprintf(stderr, "%s timer=%d down=%d\n", __func__,
+    D(error_report("%s timer=%d down=%d", __func__,
               xt->nr, xt->regs[R_TCSR] & TCSR_UDT));
 
     ptimer_stop(xt->ptimer);
@@ -160,7 +160,7 @@ timer_write(void *opaque, hwaddr addr,
     addr >>= 2;
     timer = timer_from_addr(addr);
     xt = &t->timers[timer];
-    D(fprintf(stderr, "%s addr=%x val=%x (timer=%d off=%d)\n",
+    D(error_report("%s addr=%x val=%x (timer=%d off=%d)",
              __func__, addr * 4, value, timer, addr & 3));
     /* Further decoding to address a specific timers reg.  */
     addr &= 3;
@@ -197,7 +197,7 @@ static void timer_hit(void *opaque)
 {
     struct xlx_timer *xt = opaque;
     struct timerblock *t = xt->parent;
-    D(fprintf(stderr, "%s %d\n", __func__, xt->nr));
+    D(error_report("%s %d", __func__, xt->nr));
     xt->regs[R_TCSR] |= TCSR_TINT;
 
     if (xt->regs[R_TCSR] & TCSR_ARHT)
diff --git a/hw/usb/core.c b/hw/usb/core.c
index 241ae66b15..9ffdef055c 100644
--- a/hw/usb/core.c
+++ b/hw/usb/core.c
@@ -24,6 +24,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "hw/usb.h"
 #include "qemu/iov.h"
@@ -599,7 +600,7 @@ void usb_packet_copy(USBPacket *p, void *ptr, size_t bytes)
         iov_from_buf(iov->iov, iov->niov, p->actual_length, ptr, bytes);
         break;
     default:
-        fprintf(stderr, "%s: invalid pid: %x\n", __func__, p->pid);
+        error_report("%s: invalid pid: %x", __func__, p->pid);
         abort();
     }
     p->actual_length += bytes;
@@ -681,7 +682,7 @@ void usb_ep_dump(USBDevice *dev)
     };
     int ifnum, ep, first;
 
-    fprintf(stderr, "Device \"%s\", config %d\n",
+    error_report("Device \"%s\", config %d",
             dev->product_desc, dev->configuration);
     for (ifnum = 0; ifnum < 16; ifnum++) {
         first = 1;
@@ -690,10 +691,10 @@ void usb_ep_dump(USBDevice *dev)
                 dev->ep_in[ep].ifnum == ifnum) {
                 if (first) {
                     first = 0;
-                    fprintf(stderr, "  Interface %d, alternative %d\n",
+                    error_report("  Interface %d, alternative %d",
                             ifnum, dev->altsetting[ifnum]);
                 }
-                fprintf(stderr, "    Endpoint %d, IN, %s, %d max\n", ep,
+                error_report("    Endpoint %d, IN, %s, %d max", ep,
                         tname[dev->ep_in[ep].type],
                         dev->ep_in[ep].max_packet_size);
             }
@@ -701,16 +702,16 @@ void usb_ep_dump(USBDevice *dev)
                 dev->ep_out[ep].ifnum == ifnum) {
                 if (first) {
                     first = 0;
-                    fprintf(stderr, "  Interface %d, alternative %d\n",
+                    error_report("  Interface %d, alternative %d",
                             ifnum, dev->altsetting[ifnum]);
                 }
-                fprintf(stderr, "    Endpoint %d, OUT, %s, %d max\n", ep,
+                error_report("    Endpoint %d, OUT, %s, %d max", ep,
                         tname[dev->ep_out[ep].type],
                         dev->ep_out[ep].max_packet_size);
             }
         }
     }
-    fprintf(stderr, "--\n");
+    error_report("--");
 }
 
 struct USBEndpoint *usb_ep_get(USBDevice *dev, int pid, int ep)
diff --git a/hw/usb/desc.c b/hw/usb/desc.c
index 85c15addc5..afae910f8e 100644
--- a/hw/usb/desc.c
+++ b/hw/usb/desc.c
@@ -1,5 +1,5 @@
 #include "qemu/osdep.h"
-
+#include "qemu/error-report.h"
 #include "hw/usb.h"
 #include "hw/usb/desc.h"
 #include "trace.h"
@@ -688,7 +688,7 @@ int usb_desc_get_descriptor(USBDevice *dev, USBPacket *p,
         break;
 
     default:
-        fprintf(stderr, "%s: %d unknown type %d (len %zd)\n", __func__,
+        error_report("%s: %d unknown type %d (len %zd)", __func__,
                 dev->addr, type, len);
         break;
     }
diff --git a/hw/usb/dev-audio.c b/hw/usb/dev-audio.c
index 343345235c..43fc20469a 100644
--- a/hw/usb/dev-audio.c
+++ b/hw/usb/dev-audio.c
@@ -30,6 +30,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "hw/usb.h"
 #include "hw/usb/desc.h"
@@ -398,7 +399,7 @@ static int usb_audio_set_output_altset(USBAudioState *s, int altset)
     }
 
     if (s->debug) {
-        fprintf(stderr, "usb-audio: set interface %d\n", altset);
+        error_report("usb-audio: set interface %d", altset);
     }
     s->out.altset = altset;
     return 0;
@@ -478,7 +479,7 @@ static int usb_audio_set_control(USBAudioState *s, uint8_t attrib,
             uint16_t vol = data[0] + (data[1] << 8);
 
             if (s->debug) {
-                fprintf(stderr, "usb-audio: vol %04x\n", (uint16_t)vol);
+                error_report("usb-audio: vol %04x", (uint16_t)vol);
             }
 
             vol -= 0x8000;
@@ -496,7 +497,7 @@ static int usb_audio_set_control(USBAudioState *s, uint8_t attrib,
 
     if (set_vol) {
         if (s->debug) {
-            fprintf(stderr, "usb-audio: mute %d, lvol %3d, rvol %3d\n",
+            error_report("usb-audio: mute %d, lvol %3d, rvol %3d",
                     s->out.mute, s->out.vol[0], s->out.vol[1]);
         }
         AUD_set_volume_out(s->out.voice, s->out.mute,
@@ -514,8 +515,8 @@ static void usb_audio_handle_control(USBDevice *dev, USBPacket *p,
     int ret = 0;
 
     if (s->debug) {
-        fprintf(stderr, "usb-audio: control transaction: "
-                "request 0x%04x value 0x%04x index 0x%04x length 0x%04x\n",
+        error_report("usb-audio: control transaction: "
+                "request 0x%04x value 0x%04x index 0x%04x length 0x%04x",
                 request, value, index, length);
     }
 
@@ -533,7 +534,7 @@ static void usb_audio_handle_control(USBDevice *dev, USBPacket *p,
                                     length, data);
         if (ret < 0) {
             if (s->debug) {
-                fprintf(stderr, "usb-audio: fail: get control\n");
+                error_report("usb-audio: fail: get control");
             }
             goto fail;
         }
@@ -548,7 +549,7 @@ static void usb_audio_handle_control(USBDevice *dev, USBPacket *p,
                                     length, data);
         if (ret < 0) {
             if (s->debug) {
-                fprintf(stderr, "usb-audio: fail: set control\n");
+                error_report("usb-audio: fail: set control");
             }
             goto fail;
         }
@@ -557,8 +558,8 @@ static void usb_audio_handle_control(USBDevice *dev, USBPacket *p,
     default:
 fail:
         if (s->debug) {
-            fprintf(stderr, "usb-audio: failed control transaction: "
-                    "request 0x%04x value 0x%04x index 0x%04x length 0x%04x\n",
+            error_report("usb-audio: failed control transaction: "
+                    "request 0x%04x value 0x%04x index 0x%04x length 0x%04x",
                     request, value, index, length);
         }
         p->status = USB_RET_STALL;
@@ -581,7 +582,7 @@ static void usb_audio_handle_reset(USBDevice *dev)
     USBAudioState *s = USB_AUDIO(dev);
 
     if (s->debug) {
-        fprintf(stderr, "usb-audio: reset\n");
+        error_report("usb-audio: reset");
     }
     usb_audio_set_output_altset(s, ALTSET_OFF);
 }
@@ -595,7 +596,7 @@ static void usb_audio_handle_dataout(USBAudioState *s, USBPacket *p)
 
     streambuf_put(&s->out.buf, p);
     if (p->actual_length < p->iov.size && s->debug > 1) {
-        fprintf(stderr, "usb-audio: output overrun (%zd bytes)\n",
+        error_report("usb-audio: output overrun (%zd bytes)",
                 p->iov.size - p->actual_length);
     }
 }
@@ -611,8 +612,8 @@ static void usb_audio_handle_data(USBDevice *dev, USBPacket *p)
 
     p->status = USB_RET_STALL;
     if (s->debug) {
-        fprintf(stderr, "usb-audio: failed data transaction: "
-                        "pid 0x%x ep 0x%x len 0x%zx\n",
+        error_report("usb-audio: failed data transaction: "
+                        "pid 0x%x ep 0x%x len 0x%zx",
                         p->pid, p->ep->nr, p->iov.size);
     }
 }
@@ -622,7 +623,7 @@ static void usb_audio_unrealize(USBDevice *dev, Error **errp)
     USBAudioState *s = USB_AUDIO(dev);
 
     if (s->debug) {
-        fprintf(stderr, "usb-audio: destroy\n");
+        error_report("usb-audio: destroy");
     }
 
     usb_audio_set_output_altset(s, ALTSET_OFF);
diff --git a/hw/usb/dev-bluetooth.c b/hw/usb/dev-bluetooth.c
index 0bbceaea0b..dfef258dca 100644
--- a/hw/usb/dev-bluetooth.c
+++ b/hw/usb/dev-bluetooth.c
@@ -274,13 +274,13 @@ static void usb_bt_fifo_enqueue(struct usb_hci_in_fifo_s *fifo,
     if (off <= DFIFO_LEN_MASK) {
         if (off + len > DFIFO_LEN_MASK + 1 &&
                         (fifo->dsize = off + len) > (DFIFO_LEN_MASK + 1) * 2) {
-            fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
+            error_report("%s: can't alloc %i bytes", __func__, len);
             exit(-1);
         }
         buf = fifo->data + off;
     } else {
         if (fifo->dlen > fifo->dsize) {
-            fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
+            error_report("%s: can't alloc %i bytes", __func__, len);
             exit(-1);
         }
         buf = fifo->data + off - fifo->dsize;
diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c
index 94c2e94f10..7e1782b8fc 100644
--- a/hw/usb/dev-mtp.c
+++ b/hw/usb/dev-mtp.c
@@ -10,6 +10,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include <wchar.h>
 #include <dirent.h>
@@ -546,7 +547,7 @@ static void inotify_watchfn(void *arg)
                 break;
 
             default:
-                fprintf(stderr, "usb-mtp: failed to parse inotify event\n");
+                error_report("usb-mtp: failed to parse inotify event");
                 continue;
             }
 
@@ -617,7 +618,7 @@ static void usb_mtp_object_readdir(MTPState *s, MTPObject *o)
 #ifdef CONFIG_INOTIFY1
     int watchfd = usb_mtp_add_watch(s->inotifyfd, o->path);
     if (watchfd == -1) {
-        fprintf(stderr, "usb-mtp: failed to add watch for %s\n", o->path);
+        error_report("usb-mtp: failed to add watch for %s", o->path);
     } else {
         trace_usb_mtp_inotify_event(s->dev.addr, o->path,
                                     0, "Watch Added");
@@ -1144,7 +1145,7 @@ static void usb_mtp_command(MTPState *s, MTPControl *c)
         usb_mtp_object_alloc(s, s->next_handle++, NULL, s->root);
 #ifdef CONFIG_INOTIFY1
         if (usb_mtp_inotify_init(s)) {
-            fprintf(stderr, "usb-mtp: file monitoring init failed\n");
+            error_report("usb-mtp: file monitoring init failed");
         }
 #endif
         break;
@@ -1348,7 +1349,7 @@ static void usb_mtp_handle_control(USBDevice *dev, USBPacket *p,
 static void usb_mtp_cancel_packet(USBDevice *dev, USBPacket *p)
 {
     /* we don't use async packets, so this should never be called */
-    fprintf(stderr, "%s\n", __func__);
+    error_report("%s", __func__);
 }
 
 static void usb_mtp_handle_data(USBDevice *dev, USBPacket *p)
diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c
index 85fc81bf43..9dd4af5e34 100644
--- a/hw/usb/dev-network.c
+++ b/hw/usb/dev-network.c
@@ -815,7 +815,7 @@ static int ndis_query(USBNetState *s, uint32_t oid,
         return sizeof(le32);
 
     default:
-        fprintf(stderr, "usbnet: unknown OID 0x%08x\n", oid);
+        error_report("usbnet: unknown OID 0x%08x", oid);
         return 0;
     }
     return -1;
@@ -1084,9 +1084,9 @@ static void usb_net_handle_control(USBDevice *dev, USBPacket *p,
             for (i = 0; i < length; i++) {
                 if (!(i & 15))
                     fprintf(stderr, "\n%04x:", i);
-                fprintf(stderr, " %02x", data[i]);
+                error_report(" %02x", data[i]);
             }
-            fprintf(stderr, "\n\n");
+            fprintf(stderr, "\n");
         }
 #endif
         ret = rndis_parse(s, data, length);
@@ -1111,17 +1111,17 @@ static void usb_net_handle_control(USBDevice *dev, USBPacket *p,
             for (i = 0; i < p->actual_length; i++) {
                 if (!(i & 15))
                     fprintf(stderr, "\n%04x:", i);
-                fprintf(stderr, " %02x", data[i]);
+                error_report(" %02x", data[i]);
             }
-            fprintf(stderr, "\n\n");
+            fprintf(stderr, "\n");
         }
 #endif
         break;
 
     default:
     fail:
-        fprintf(stderr, "usbnet: failed control transaction: "
-                        "request 0x%x value 0x%x index 0x%x length 0x%x\n",
+        error_report("usbnet: failed control transaction: "
+                        "request 0x%x value 0x%x index 0x%x length 0x%x",
                         request, value, index, length);
         p->status = USB_RET_STALL;
         break;
@@ -1190,7 +1190,7 @@ static void usb_net_handle_dataout(USBNetState *s, USBPacket *p)
     uint32_t len;
 
 #ifdef TRAFFIC_DEBUG
-    fprintf(stderr, "usbnet: data out len %zu\n", p->iov.size);
+    error_report("usbnet: data out len %zu", p->iov.size);
     iov_hexdump(p->iov.iov, p->iov.niov, stderr, "usbnet", p->iov.size);
 #endif
 
@@ -1260,8 +1260,8 @@ static void usb_net_handle_data(USBDevice *dev, USBPacket *p)
     }
 
     if (p->status == USB_RET_STALL) {
-        fprintf(stderr, "usbnet: failed data transaction: "
-                        "pid 0x%x ep 0x%x len 0x%zx\n",
+        error_report("usbnet: failed data transaction: "
+                        "pid 0x%x ep 0x%x len 0x%zx",
                         p->pid, p->ep->nr, p->iov.size);
     }
 }
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
index 46fd30b075..d6c8a56aec 100644
--- a/hw/usb/hcd-ehci.c
+++ b/hw/usb/hcd-ehci.c
@@ -419,7 +419,7 @@ static int ehci_get_pid(EHCIqtd *qtd)
     case 2:
         return USB_TOKEN_SETUP;
     default:
-        fprintf(stderr, "bad token\n");
+        error_report("bad token");
         return 0;
     }
 }
@@ -1033,7 +1033,7 @@ static void ehci_opreg_write(void *ptr, hwaddr addr,
 
         /* not supporting dynamic frame list size at the moment */
         if ((val & USBCMD_FLS) && !(s->usbcmd & USBCMD_FLS)) {
-            fprintf(stderr, "attempt to set frame list size -- value %d\n",
+            error_report("attempt to set frame list size -- value %d",
                     (int)val & USBCMD_FLS);
             val &= ~USBCMD_FLS;
         }
@@ -1190,7 +1190,7 @@ static int ehci_init_transfer(EHCIPacket *p)
 
     while (bytes > 0) {
         if (cpage > 4) {
-            fprintf(stderr, "cpage out of range (%d)\n", cpage);
+            error_report("cpage out of range (%d)", cpage);
             qemu_sglist_destroy(&p->sgl);
             return -1;
         }
@@ -1296,7 +1296,7 @@ static void ehci_execute_complete(EHCIQueue *q)
         break;
     default:
         /* should not be triggerable */
-        fprintf(stderr, "USB invalid response %d\n", p->packet.status);
+        error_report("USB invalid response %d", p->packet.status);
         g_assert_not_reached();
         break;
     }
@@ -1345,7 +1345,7 @@ static int ehci_execute(EHCIPacket *p, const char *action)
            p->async == EHCI_ASYNC_INITIALIZED);
 
     if (!(p->qtd.token & QTD_TOKEN_ACTIVE)) {
-        fprintf(stderr, "Attempting to execute inactive qtd\n");
+        error_report("Attempting to execute inactive qtd");
         return -1;
     }
 
@@ -1383,7 +1383,7 @@ static int ehci_execute(EHCIPacket *p, const char *action)
             p->packet.actual_length);
 
     if (p->packet.actual_length > BUFF_SIZE) {
-        fprintf(stderr, "ret from usb_handle_packet > BUFF_SIZE\n");
+        error_report("ret from usb_handle_packet > BUFF_SIZE");
         return -1;
     }
 
@@ -1461,7 +1461,7 @@ static int ehci_process_itd(EHCIState *ehci,
             case USB_RET_SUCCESS:
                 break;
             default:
-                fprintf(stderr, "Unexpected iso usb result: %d\n",
+                error_report("Unexpected iso usb result: %d",
                         ehci->ipacket.status);
                 /* Fall through */
             case USB_RET_IOERROR:
@@ -1564,7 +1564,7 @@ static int ehci_state_fetchentry(EHCIState *ehci, int async)
 
     /* section 4.8, only QH in async schedule */
     if (async && (NLPTR_TYPE_GET(entry) != NLPTR_TYPE_QH)) {
-        fprintf(stderr, "non queue head request in async schedule\n");
+        error_report("non queue head request in async schedule");
         return -1;
     }
 
@@ -1586,8 +1586,8 @@ static int ehci_state_fetchentry(EHCIState *ehci, int async)
 
     default:
         /* TODO: handle FSTN type */
-        fprintf(stderr, "FETCHENTRY: entry at %X is of type %d "
-                "which is not supported yet\n", entry, NLPTR_TYPE_GET(entry));
+        error_report("FETCHENTRY: entry at %X is of type %d "
+                "which is not supported yet", entry, NLPTR_TYPE_GET(entry));
         return -1;
     }
 
@@ -2086,7 +2086,7 @@ static void ehci_advance_state(EHCIState *ehci, int async)
             break;
 
         default:
-            fprintf(stderr, "Bad state!\n");
+            error_report("Bad state!");
             again = -1;
             g_assert_not_reached();
             break;
@@ -2094,7 +2094,7 @@ static void ehci_advance_state(EHCIState *ehci, int async)
 
         if (again < 0 || itd_count > 16) {
             /* TODO: notify guest (raise HSE irq?) */
-            fprintf(stderr, "processing error - resetting ehci HC\n");
+            error_report("processing error - resetting ehci HC");
             ehci_reset(ehci);
             again = 0;
         }
@@ -2151,8 +2151,8 @@ static void ehci_advance_async_state(EHCIState *ehci)
 
     default:
         /* this should only be due to a developer mistake */
-        fprintf(stderr, "ehci: Bad asynchronous state %d. "
-                "Resetting to active\n", ehci->astate);
+        error_report("ehci: Bad asynchronous state %d. "
+                "Resetting to active", ehci->astate);
         g_assert_not_reached();
     }
 }
@@ -2201,8 +2201,8 @@ static void ehci_advance_periodic_state(EHCIState *ehci)
 
     default:
         /* this should only be due to a developer mistake */
-        fprintf(stderr, "ehci: Bad periodic state %d. "
-                "Resetting to active\n", ehci->pstate);
+        error_report("ehci: Bad periodic state %d. "
+                "Resetting to active", ehci->pstate);
         g_assert_not_reached();
     }
 }
diff --git a/hw/usb/hcd-musb.c b/hw/usb/hcd-musb.c
index d70a91a58c..4729926124 100644
--- a/hw/usb/hcd-musb.c
+++ b/hw/usb/hcd-musb.c
@@ -253,8 +253,8 @@
 /* #define MUSB_DEBUG */
 
 #ifdef MUSB_DEBUG
-#define TRACE(fmt, ...) fprintf(stderr, "%s@%d: " fmt "\n", __func__, \
-                                __LINE__, ##__VA_ARGS__)
+#define TRACE(fmt, ...) error_report("%s@%d: " fmt "", __func__, \
+                                     __LINE__, ##__VA_ARGS__)
 #else
 #define TRACE(...)
 #endif
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index d75c085d94..6cc1be09a2 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -19,6 +19,7 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "qemu/queue.h"
@@ -39,7 +40,7 @@
 #else
 #define DPRINTF(...) do {} while (0)
 #endif
-#define FIXME(_msg) do { fprintf(stderr, "FIXME %s:%d %s\n", \
+#define FIXME(_msg) do { error_report("FIXME %s:%d %s", \
                                  __func__, __LINE__, _msg); abort(); } while (0)
 
 #define TRB_LINK_LIMIT  32
diff --git a/hw/usb/host-legacy.c b/hw/usb/host-legacy.c
index 3b57e21b52..f0c81e5309 100644
--- a/hw/usb/host-legacy.c
+++ b/hw/usb/host-legacy.c
@@ -86,7 +86,7 @@ static int parse_filter(const char *spec, struct USBAutoFilter *f)
     }
 
     if (i < DEV) {
-        fprintf(stderr, "husb: invalid auto filter spec %s\n", spec);
+        error_report("husb: invalid auto filter spec %s", spec);
         return -1;
     }
 
diff --git a/hw/watchdog/watchdog.c b/hw/watchdog/watchdog.c
index 0c5c9cde1c..76ae5d2fe5 100644
--- a/hw/watchdog/watchdog.c
+++ b/hw/watchdog/watchdog.c
@@ -20,6 +20,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu/option.h"
 #include "qemu/config-file.h"
 #include "qemu/queue.h"
@@ -51,7 +52,7 @@ int select_watchdog(const char *p)
     /* -watchdog ? lists available devices and exits cleanly. */
     if (is_help_option(p)) {
         QLIST_FOREACH(model, &watchdog_list, entry) {
-            fprintf(stderr, "\t%s\t%s\n",
+            error_report("\t%s\t%s",
                      model->wdt_name, model->wdt_description);
         }
         return 2;
@@ -67,9 +68,9 @@ int select_watchdog(const char *p)
         }
     }
 
-    fprintf(stderr, "Unknown -watchdog device. Supported devices are:\n");
+    error_report("Unknown -watchdog device. Supported devices are:");
     QLIST_FOREACH(model, &watchdog_list, entry) {
-        fprintf(stderr, "\t%s\t%s\n",
+        error_report("\t%s\t%s",
                  model->wdt_name, model->wdt_description);
     }
     return 1;
@@ -133,7 +134,7 @@ void watchdog_perform_action(void)
 
     case WDT_DEBUG:
         qapi_event_send_watchdog(WATCHDOG_EXPIRATION_ACTION_DEBUG, &error_abort);
-        fprintf(stderr, "watchdog: timer fired\n");
+        error_report("watchdog: timer fired");
         break;
 
     case WDT_NONE:
diff --git a/hw/watchdog/wdt_i6300esb.c b/hw/watchdog/wdt_i6300esb.c
index 49b3cd188a..f596f70a3b 100644
--- a/hw/watchdog/wdt_i6300esb.c
+++ b/hw/watchdog/wdt_i6300esb.c
@@ -20,7 +20,7 @@
  */
 
 #include "qemu/osdep.h"
-
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "qemu/timer.h"
 #include "sysemu/watchdog.h"
@@ -186,10 +186,12 @@ static void i6300esb_timer_expired(void *vp)
         /* What to do at the end of stage 1? */
         switch (d->int_type) {
         case INT_TYPE_IRQ:
-            fprintf(stderr, "i6300esb_timer_expired: I would send APIC 1 INT 10 here if I knew how (XXX)\n");
+            error_report("i6300esb_timer_expired: I would send APIC 1 INT 10"
+                          "here if I knew how (XXX)");
             break;
         case INT_TYPE_SMI:
-            fprintf(stderr, "i6300esb_timer_expired: I would send SMI here if I knew how (XXX)\n");
+            error_report("i6300esb_timer_expired: I would send SMI here if I"
+                         "knew how (XXX)");
             break;
         }
 
diff --git a/hw/xen/xen-common.c b/hw/xen/xen-common.c
index 632a938dcc..a7c821cfcf 100644
--- a/hw/xen/xen-common.c
+++ b/hw/xen/xen-common.c
@@ -47,19 +47,19 @@ static int store_dev_info(int domid, Chardev *cs, const char *string)
     /* We now have everything we need to set the xenstore entry. */
     xs = xs_open(0);
     if (xs == NULL) {
-        fprintf(stderr, "Could not contact XenStore\n");
+        error_report("Could not contact XenStore");
         goto out;
     }
 
     path = xs_get_domain_path(xs, domid);
     if (path == NULL) {
-        fprintf(stderr, "xs_get_domain_path() error\n");
+        error_report("xs_get_domain_path() error");
         goto out;
     }
     newpath = realloc(path, (strlen(path) + strlen(string) +
                 strlen("/tty") + 1));
     if (newpath == NULL) {
-        fprintf(stderr, "realloc error\n");
+        error_report("realloc error");
         goto out;
     }
     path = newpath;
@@ -96,13 +96,13 @@ static void xenstore_record_dm_state(struct xs_handle *xs, const char *state)
     char path[50];
 
     if (xs == NULL) {
-        fprintf(stderr, "xenstore connection not initialized\n");
+        error_report("xenstore connection not initialized");
         exit(1);
     }
 
     snprintf(path, sizeof (path), "device-model/%u/state", xen_domid);
     if (!xs_write(xs, XBT_NULL, path, state, strlen(state))) {
-        fprintf(stderr, "error recording dm state\n");
+        error_report("error recording dm state");
         exit(1);
     }
 }
diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
index 375efa68f6..e86d380d02 100644
--- a/hw/xen/xen_pt.c
+++ b/hw/xen/xen_pt.c
@@ -73,7 +73,7 @@ void xen_pt_log(const PCIDevice *d, const char *f, ...)
 
     va_start(ap, f);
     if (d) {
-        fprintf(stderr, "[%02x:%02x.%d] ", pci_bus_num(d->bus),
+        error_report("[%02x:%02x.%d] ", pci_bus_num(d->bus),
                 PCI_SLOT(d->devfn), PCI_FUNC(d->devfn));
     }
     vfprintf(stderr, f, ap);
@@ -87,7 +87,7 @@ static int xen_pt_pci_config_access_check(PCIDevice *d, uint32_t addr, int len)
     /* check offset range */
     if (addr > 0xFF) {
         XEN_PT_ERR(d, "Failed to access register with offset exceeding 0xFF. "
-                   "(addr: 0x%02x, len: %d)\n", addr, len);
+                   "(addr: 0x%02x, len: %d)", addr, len);
         return -1;
     }
 
diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c
index 027f76fad1..f5514ffec2 100644
--- a/hw/xenpv/xen_domainbuild.c
+++ b/hw/xenpv/xen_domainbuild.c
@@ -25,22 +25,22 @@ static int xenstore_domain_mkdir(char *path)
     int i;
 
     if (!xs_mkdir(xenstore, 0, path)) {
-        fprintf(stderr, "%s: xs_mkdir %s: failed\n", __func__, path);
-	return -1;
+        error_report("%s: xs_mkdir %s: failed", __func__, path);
+        return -1;
     }
     if (!xs_set_permissions(xenstore, 0, path, perms_ro, 2)) {
-        fprintf(stderr, "%s: xs_set_permissions failed\n", __func__);
-	return -1;
+        error_report("%s: xs_set_permissions failed", __func__);
+        return -1;
     }
 
     for (i = 0; writable[i]; i++) {
         snprintf(subpath, sizeof(subpath), "%s/%s", path, writable[i]);
         if (!xs_mkdir(xenstore, 0, subpath)) {
-            fprintf(stderr, "%s: xs_mkdir %s: failed\n", __func__, subpath);
+            error_report("%s: xs_mkdir %s: failed", __func__, subpath);
             return -1;
         }
         if (!xs_set_permissions(xenstore, 0, subpath, perms_rw, 2)) {
-            fprintf(stderr, "%s: xs_set_permissions failed\n", __func__);
+            error_report("%s: xs_set_permissions failed", __func__);
             return -1;
         }
     }
@@ -235,7 +235,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,
     memcpy(uuid, &qemu_uuid, sizeof(uuid));
     rc = xen_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid);
     if (rc < 0) {
-        fprintf(stderr, "xen: xc_domain_create() failed\n");
+        error_report("xen: xc_domain_create() failed");
         goto err;
     }
     qemu_log("xen: created domain %d\n", xen_domid);
@@ -248,21 +248,21 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,
 
     rc = xc_domain_max_vcpus(xen_xc, xen_domid, smp_cpus);
     if (rc < 0) {
-        fprintf(stderr, "xen: xc_domain_max_vcpus() failed\n");
+        error_report("xen: xc_domain_max_vcpus() failed");
         goto err;
     }
 
 #if 0
     rc = xc_domain_setcpuweight(xen_xc, xen_domid, 256);
     if (rc < 0) {
-        fprintf(stderr, "xen: xc_domain_setcpuweight() failed\n");
+        error_report("xen: xc_domain_setcpuweight() failed");
         goto err;
     }
 #endif
 
     rc = xc_domain_setmaxmem(xen_xc, xen_domid, ram_size >> 10);
     if (rc < 0) {
-        fprintf(stderr, "xen: xc_domain_setmaxmem() failed\n");
+        error_report("xen: xc_domain_setmaxmem() failed");
         goto err;
     }
 
@@ -275,7 +275,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,
                         xenstore_port, &xenstore_mfn,
                         console_port, &console_mfn);
     if (rc < 0) {
-        fprintf(stderr, "xen: xc_linux_build() failed\n");
+        error_report("xen: xc_linux_build() failed");
         goto err;
     }
 
@@ -285,7 +285,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,
     qemu_log("xen: unpausing domain %d\n", xen_domid);
     rc = xc_domain_unpause(xen_xc, xen_domid);
     if (rc < 0) {
-        fprintf(stderr, "xen: xc_domain_unpause() failed\n");
+        error_report("xen: xc_domain_unpause() failed");
         goto err;
     }
 
diff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c
index 69a52a9f93..ac419e164b 100644
--- a/hw/xenpv/xen_machine_pv.c
+++ b/hw/xenpv/xen_machine_pv.c
@@ -36,7 +36,7 @@ static void xen_init_pv(MachineState *machine)
 
     /* Initialize backend core & drivers */
     if (xen_be_init() != 0) {
-        fprintf(stderr, "%s: xen backend core setup failed\n", __func__);
+        error_report("%s: xen backend core setup failed", __func__);
         exit(1);
     }
 
@@ -51,18 +51,18 @@ static void xen_init_pv(MachineState *machine)
         const char *initrd_filename = machine->initrd_filename;
         if (xen_domain_build_pv(kernel_filename, initrd_filename,
                                 kernel_cmdline) < 0) {
-            fprintf(stderr, "xen pv domain creation failed\n");
+            error_report("xen pv domain creation failed");
             exit(1);
         }
         break;
     }
 #endif
     case XEN_EMULATE:
-        fprintf(stderr, "xen emulation not implemented (yet)\n");
+        error_report("xen emulation not implemented (yet)");
         exit(1);
         break;
     default:
-        fprintf(stderr, "unhandled xen_mode %d\n", xen_mode);
+        error_report("unhandled xen_mode %d", xen_mode);
         exit(1);
         break;
     }
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [PATCH v1 3/8] hw: Replace fprintf(stderr, "*\n" with error_report()
@ 2017-09-26  0:08   ` Alistair Francis
  0 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-26  0:08 UTC (permalink / raw)
  To: qemu-devel
  Cc: Chris Wulff, Michael S. Tsirkin, Anthony Green, Mark Cave-Ayland,
	armbru, Gerd Hoffmann, Marek Vasut, Stefano Stabellini, Jia Liu,
	qemu-block, Magnus Damm, Alexander Graf, Christian Borntraeger,
	Hervé Poussineau, Anthony Perard, xen-devel,
	Andrzej Zaborowski, Jason Wang, Artyom Tarasenko,
	Eduardo Habkost, Fabien Chouteau, alistair.francis,
	Marcel Apfelbaum, qemu-arm

Replace a large number of the fprintf(stderr, "*\n" calls with
error_report(). The functions were renamed with these commands and then
compiler issues where manually fixed.

find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +

Some lines where then manually tweaked to pass checkpatch.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Cc: Andrzej Zaborowski <balrogg@gmail.com>
Cc: Jan Kiszka <jan.kiszka@web.de>
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Thomas Huth <huth@tuxfamily.org>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: Anthony Perard <anthony.perard@citrix.com>
Cc: John Snow <jsnow@redhat.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Cornelia Huck <cohuck@redhat.com>
Cc: Alexander Graf <agraf@suse.de>
Cc: Michael Walle <michael@walle.cc>
Cc: Paul Burton <paul.burton@imgtec.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: Yongbok Kim <yongbok.kim@imgtec.com>
Cc: "Hervé Poussineau" <hpoussin@reactos.org>
Cc: Anthony Green <green@moxielogic.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Chris Wulff <crwulff@gmail.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Jia Liu <proljc@gmail.com>
Cc: Stafford Horne <shorne@gmail.com>
Cc: Marcel Apfelbaum <marcel@redhat.com>
Cc: Magnus Damm <magnus.damm@gmail.com>
Cc: Fabien Chouteau <chouteau@adacore.com>
Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: Artyom Tarasenko <atar4qemu@gmail.com>
Cc: qemu-arm@nongnu.org
Cc: qemu-block@nongnu.org
Cc: xen-devel@lists.xenproject.org
Cc: qemu-ppc@nongnu.org
---

 hw/arm/armv7m.c                 |  2 +-
 hw/arm/boot.c                   | 34 +++++++++----------
 hw/arm/gumstix.c                | 13 ++++----
 hw/arm/mainstone.c              |  7 ++--
 hw/arm/musicpal.c               |  2 +-
 hw/arm/omap1.c                  |  5 +--
 hw/arm/omap2.c                  | 21 ++++++------
 hw/arm/omap_sx1.c               |  6 ++--
 hw/arm/palm.c                   | 10 +++---
 hw/arm/pxa2xx.c                 |  7 ++--
 hw/arm/stellaris.c              |  3 +-
 hw/arm/tosa.c                   | 17 +++++-----
 hw/arm/versatilepb.c            |  2 +-
 hw/arm/vexpress.c               |  8 ++---
 hw/arm/z2.c                     |  6 ++--
 hw/block/dataplane/virtio-blk.c |  6 ++--
 hw/block/onenand.c              |  8 ++---
 hw/block/tc58128.c              | 44 ++++++++++++-------------
 hw/bt/core.c                    | 15 +++++----
 hw/bt/hci-csr.c                 | 17 +++++-----
 hw/bt/hci.c                     | 30 ++++++++---------
 hw/bt/hid.c                     |  2 +-
 hw/bt/l2cap.c                   | 47 ++++++++++++++-------------
 hw/bt/sdp.c                     |  7 ++--
 hw/char/exynos4210_uart.c       |  6 ++--
 hw/char/mcf_uart.c              |  5 +--
 hw/char/sh_serial.c             |  9 +++---
 hw/core/loader.c                | 31 +++++++++---------
 hw/core/ptimer.c                |  7 ++--
 hw/cris/axis_dev88.c            |  3 +-
 hw/cris/boot.c                  |  5 +--
 hw/display/blizzard.c           | 20 ++++++------
 hw/display/omap_dss.c           | 14 ++++----
 hw/display/pl110.c              |  2 +-
 hw/display/pxa2xx_lcd.c         |  2 +-
 hw/display/qxl-render.c         |  7 ++--
 hw/display/qxl.c                | 10 +++---
 hw/display/tc6393xb.c           | 36 ++++++++++++---------
 hw/display/virtio-gpu-3d.c      |  4 +--
 hw/display/vmware_vga.c         | 22 ++++++-------
 hw/dma/omap_dma.c               | 26 ++++++++-------
 hw/dma/soc_dma.c                | 37 ++++++++++-----------
 hw/gpio/omap_gpio.c             |  2 +-
 hw/i2c/omap_i2c.c               | 10 +++---
 hw/i386/kvm/apic.c              |  9 +++---
 hw/i386/kvm/clock.c             |  7 ++--
 hw/i386/kvm/i8254.c             |  7 ++--
 hw/i386/kvm/i8259.c             |  5 +--
 hw/i386/kvm/ioapic.c            |  5 +--
 hw/i386/multiboot.c             | 21 ++++++------
 hw/i386/pc.c                    | 18 +++++------
 hw/i386/pc_piix.c               |  2 +-
 hw/i386/pc_sysfw.c              |  5 +--
 hw/i386/xen/xen-hvm.c           | 32 +++++++++---------
 hw/i386/xen/xen-mapcache.c      | 12 +++----
 hw/i386/xen/xen_apic.c          |  2 +-
 hw/ide/ahci.c                   |  6 ++--
 hw/ide/core.c                   |  2 +-
 hw/input/lm832x.c               |  6 ++--
 hw/input/pckbd.c                |  3 +-
 hw/input/pxa2xx_keypad.c        |  2 +-
 hw/input/tsc2005.c              | 17 +++++-----
 hw/input/tsc210x.c              | 72 ++++++++++++++++++++---------------------
 hw/input/virtio-input-hid.c     | 14 ++++----
 hw/input/virtio-input.c         |  5 +--
 hw/intc/arm_gic_kvm.c           | 12 +++----
 hw/intc/omap_intc.c             |  4 +--
 hw/intc/openpic.c               |  7 ++--
 hw/intc/openpic_kvm.c           |  8 ++---
 hw/intc/s390_flic_kvm.c         |  4 +--
 hw/ipmi/ipmi.c                  |  1 +
 hw/ipmi/ipmi_bmc_extern.c       |  5 +--
 hw/isa/isa-bus.c                |  7 ++--
 hw/lm32/lm32_boards.c           |  5 +--
 hw/lm32/milkymist.c             |  5 +--
 hw/m68k/an5206.c                |  4 +--
 hw/m68k/mcf5206.c               |  3 +-
 hw/m68k/mcf5208.c               |  7 ++--
 hw/microblaze/boot.c            |  2 +-
 hw/mips/boston.c                |  4 +--
 hw/mips/mips_fulong2e.c         |  4 +--
 hw/mips/mips_jazz.c             |  4 +--
 hw/mips/mips_malta.c            |  4 +--
 hw/mips/mips_mipssim.c          |  4 +--
 hw/mips/mips_r4k.c              |  6 ++--
 hw/misc/a9scu.c                 |  3 +-
 hw/misc/omap_gpmc.c             | 11 ++++---
 hw/misc/omap_l4.c               |  5 +--
 hw/misc/omap_sdrc.c             |  3 +-
 hw/misc/vmport.c                |  2 +-
 hw/moxie/moxiesim.c             |  7 ++--
 hw/net/fsl_etsec/etsec.c        |  2 +-
 hw/net/pcnet.c                  |  2 +-
 hw/net/smc91c111.c              |  5 +--
 hw/net/vhost_net.c              | 16 ++++-----
 hw/nios2/boot.c                 |  2 +-
 hw/nvram/eeprom93xx.c           |  5 +--
 hw/nvram/fw_cfg.c               |  4 +--
 hw/openrisc/openrisc_sim.c      |  3 +-
 hw/pci-host/bonito.c            |  6 ++--
 hw/pci/pci.c                    | 10 +++---
 hw/ppc/e500.c                   | 20 ++++++------
 hw/ppc/mac_newworld.c           |  2 +-
 hw/ppc/mac_oldworld.c           |  2 +-
 hw/ppc/mpc8544_guts.c           |  5 +--
 hw/ppc/ppc405_boards.c          |  8 ++---
 hw/ppc/ppc440_bamboo.c          | 19 +++++------
 hw/ppc/ppc4xx_pci.c             |  3 +-
 hw/ppc/prep.c                   |  4 +--
 hw/ppc/virtex_ml507.c           |  4 +--
 hw/s390x/virtio-ccw.c           |  2 +-
 hw/scsi/lsi53c895a.c            |  4 +--
 hw/scsi/spapr_vscsi.c           | 49 ++++++++++++++--------------
 hw/scsi/virtio-scsi-dataplane.c |  6 ++--
 hw/sd/pl181.c                   |  5 +--
 hw/sd/sd.c                      | 14 ++++----
 hw/sh4/r2d.c                    |  9 +++---
 hw/sh4/sh7750.c                 | 64 ++++++++++++++++++------------------
 hw/sparc/leon3.c                |  9 +++---
 hw/sparc/sun4m.c                |  8 ++---
 hw/sparc64/niagara.c            |  2 +-
 hw/sparc64/sun4u.c              |  9 +++---
 hw/ssi/omap_spi.c               |  5 +--
 hw/timer/omap_gptimer.c         | 11 ++++---
 hw/timer/twl92230.c             |  2 +-
 hw/timer/xilinx_timer.c         |  8 ++---
 hw/usb/core.c                   | 15 +++++----
 hw/usb/desc.c                   |  4 +--
 hw/usb/dev-audio.c              | 29 +++++++++--------
 hw/usb/dev-bluetooth.c          |  4 +--
 hw/usb/dev-mtp.c                |  9 +++---
 hw/usb/dev-network.c            | 20 ++++++------
 hw/usb/hcd-ehci.c               | 32 +++++++++---------
 hw/usb/hcd-musb.c               |  4 +--
 hw/usb/hcd-xhci.c               |  3 +-
 hw/usb/host-legacy.c            |  2 +-
 hw/watchdog/watchdog.c          |  9 +++---
 hw/watchdog/wdt_i6300esb.c      |  8 +++--
 hw/xen/xen-common.c             | 10 +++---
 hw/xen/xen_pt.c                 |  4 +--
 hw/xenpv/xen_domainbuild.c      | 24 +++++++-------
 hw/xenpv/xen_machine_pv.c       |  8 ++---
 142 files changed, 769 insertions(+), 705 deletions(-)

diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
index bb2dfc942b..56770a7048 100644
--- a/hw/arm/armv7m.c
+++ b/hw/arm/armv7m.c
@@ -278,7 +278,7 @@ void armv7m_load_kernel(ARMCPU *cpu, const char *kernel_filename, int mem_size)
 #endif
 
     if (!kernel_filename && !qtest_enabled()) {
-        fprintf(stderr, "Guest image must be specified (using -kernel)\n");
+        error_report("Guest image must be specified (using -kernel)");
         exit(1);
     }
 
diff --git a/hw/arm/boot.c b/hw/arm/boot.c
index c2720c8046..5b2d17f08a 100644
--- a/hw/arm/boot.c
+++ b/hw/arm/boot.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include <libfdt.h>
 #include "hw/hw.h"
@@ -418,13 +419,13 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
         char *filename;
         filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, binfo->dtb_filename);
         if (!filename) {
-            fprintf(stderr, "Couldn't open dtb file %s\n", binfo->dtb_filename);
+            error_report("Couldn't open dtb file %s", binfo->dtb_filename);
             goto fail;
         }
 
         fdt = load_device_tree(filename, &size);
         if (!fdt) {
-            fprintf(stderr, "Couldn't open dtb file %s\n", filename);
+            error_report("Couldn't open dtb file %s", filename);
             g_free(filename);
             goto fail;
         }
@@ -432,7 +433,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
     } else {
         fdt = binfo->get_dtb(binfo, &size);
         if (!fdt) {
-            fprintf(stderr, "Board was unable to create a dtb blob\n");
+            error_report("Board was unable to create a dtb blob");
             goto fail;
         }
     }
@@ -451,7 +452,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
     scells = qemu_fdt_getprop_cell(fdt, "/", "#size-cells",
                                    NULL, &error_fatal);
     if (acells == 0 || scells == 0) {
-        fprintf(stderr, "dtb file invalid (#address-cells or #size-cells 0)\n");
+        error_report("dtb file invalid (#address-cells or #size-cells 0)");
         goto fail;
     }
 
@@ -459,8 +460,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
         /* This is user error so deserves a friendlier error message
          * than the failure of setprop_sized_cells would provide
          */
-        fprintf(stderr, "qemu: dtb file not compatible with "
-                "RAM size > 4GB\n");
+        error_report("qemu: dtb file not compatible with RAM size > 4GB");
         goto fail;
     }
 
@@ -480,7 +480,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
                                               acells, mem_base,
                                               scells, mem_len);
             if (rc < 0) {
-                fprintf(stderr, "couldn't set %s/reg for node %d\n", nodename,
+                error_report("couldn't set %s/reg for node %d", nodename,
                         i);
                 goto fail;
             }
@@ -505,7 +505,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
                                           acells, binfo->loader_start,
                                           scells, binfo->ram_size);
         if (rc < 0) {
-            fprintf(stderr, "couldn't set /memory/reg\n");
+            error_report("couldn't set /memory/reg");
             goto fail;
         }
     }
@@ -519,7 +519,7 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
         rc = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs",
                                      binfo->kernel_cmdline);
         if (rc < 0) {
-            fprintf(stderr, "couldn't set /chosen/bootargs\n");
+            error_report("couldn't set /chosen/bootargs");
             goto fail;
         }
     }
@@ -528,14 +528,14 @@ static int load_dtb(hwaddr addr, const struct arm_boot_info *binfo,
         rc = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-start",
                                    binfo->initrd_start);
         if (rc < 0) {
-            fprintf(stderr, "couldn't set /chosen/linux,initrd-start\n");
+            error_report("couldn't set /chosen/linux,initrd-start");
             goto fail;
         }
 
         rc = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-end",
                                    binfo->initrd_start + binfo->initrd_size);
         if (rc < 0) {
-            fprintf(stderr, "couldn't set /chosen/linux,initrd-end\n");
+            error_report("couldn't set /chosen/linux,initrd-end");
             goto fail;
         }
     }
@@ -690,7 +690,7 @@ static void load_image_to_fw_cfg(FWCfgState *fw_cfg, uint16_t size_key,
         gsize length;
 
         if (!g_file_get_contents(image_name, &contents, &length, NULL)) {
-            fprintf(stderr, "failed to load \"%s\"\n", image_name);
+            error_report("failed to load \"%s\"", image_name);
             exit(1);
         }
         size = length;
@@ -956,7 +956,7 @@ static void arm_load_kernel_notify(Notifier *notifier, void *data)
         is_linux = 1;
     }
     if (kernel_size < 0) {
-        fprintf(stderr, "qemu: could not load kernel '%s'\n",
+        error_report("qemu: could not load kernel '%s'",
                 info->kernel_filename);
         exit(1);
     }
@@ -976,7 +976,7 @@ static void arm_load_kernel_notify(Notifier *notifier, void *data)
                                                   info->initrd_start);
             }
             if (initrd_size < 0) {
-                fprintf(stderr, "qemu: could not load initrd '%s'\n",
+                error_report("qemu: could not load initrd '%s'",
                         info->initrd_filename);
                 exit(1);
             }
@@ -1021,9 +1021,9 @@ static void arm_load_kernel_notify(Notifier *notifier, void *data)
         } else {
             fixupcontext[FIXUP_ARGPTR] = info->loader_start + KERNEL_ARGS_ADDR;
             if (info->ram_size >= (1ULL << 32)) {
-                fprintf(stderr, "qemu: RAM size must be less than 4GB to boot"
-                        " Linux kernel using ATAGS (try passing a device tree"
-                        " using -dtb)\n");
+                error_report("qemu: RAM size must be less than 4GB to boot"
+                            " Linux kernel using ATAGS (try passing a device tree"
+                            " using -dtb)");
                 exit(1);
             }
         }
diff --git a/hw/arm/gumstix.c b/hw/arm/gumstix.c
index bba9e9f57a..8bd34956b7 100644
--- a/hw/arm/gumstix.c
+++ b/hw/arm/gumstix.c
@@ -35,6 +35,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/arm/pxa.h"
 #include "net/net.h"
@@ -62,8 +63,8 @@ static void connex_init(MachineState *machine)
 
     dinfo = drive_get(IF_PFLASH, 0, 0);
     if (!dinfo && !qtest_enabled()) {
-        fprintf(stderr, "A flash image must be given with the "
-                "'pflash' parameter\n");
+        error_report("A flash image must be given with the "
+                     "'pflash' parameter");
         exit(1);
     }
 
@@ -76,7 +77,7 @@ static void connex_init(MachineState *machine)
                                dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,
                                sector_len, connex_rom / sector_len,
                                2, 0, 0, 0, 0, be)) {
-        fprintf(stderr, "qemu: Error registering flash memory.\n");
+        error_report("qemu: Error registering flash memory.");
         exit(1);
     }
 
@@ -99,8 +100,8 @@ static void verdex_init(MachineState *machine)
 
     dinfo = drive_get(IF_PFLASH, 0, 0);
     if (!dinfo && !qtest_enabled()) {
-        fprintf(stderr, "A flash image must be given with the "
-                "'pflash' parameter\n");
+        error_report("A flash image must be given with the "
+                     "'pflash' parameter");
         exit(1);
     }
 
@@ -113,7 +114,7 @@ static void verdex_init(MachineState *machine)
                                dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,
                                sector_len, verdex_rom / sector_len,
                                2, 0, 0, 0, 0, be)) {
-        fprintf(stderr, "qemu: Error registering flash memory.\n");
+        error_report("qemu: Error registering flash memory.");
         exit(1);
     }
 
diff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c
index d07972a966..5c454c7109 100644
--- a/hw/arm/mainstone.c
+++ b/hw/arm/mainstone.c
@@ -12,6 +12,7 @@
  * GNU GPL, version 2 or (at your option) any later version.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "hw/arm/pxa.h"
@@ -143,8 +144,8 @@ static void mainstone_common_init(MemoryRegion *address_space_mem,
             if (qtest_enabled()) {
                 break;
             }
-            fprintf(stderr, "Two flash images must be given with the "
-                    "'pflash' parameter\n");
+            error_report("Two flash images must be given with the "
+                         "'pflash' parameter");
             exit(1);
         }
 
@@ -154,7 +155,7 @@ static void mainstone_common_init(MemoryRegion *address_space_mem,
                                    blk_by_legacy_dinfo(dinfo),
                                    sector_len, MAINSTONE_FLASH / sector_len,
                                    4, 0, 0, 0, 0, be)) {
-            fprintf(stderr, "qemu: Error registering flash memory.\n");
+            error_report("qemu: Error registering flash memory.");
             exit(1);
         }
     }
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index b648770882..06127a873d 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -1626,7 +1626,7 @@ static void musicpal_init(MachineState *machine)
         flash_size = blk_getlength(blk);
         if (flash_size != 8*1024*1024 && flash_size != 16*1024*1024 &&
             flash_size != 32*1024*1024) {
-            fprintf(stderr, "Invalid flash image size\n");
+            error_report("Invalid flash image size");
             exit(1);
         }
 
diff --git a/hw/arm/omap1.c b/hw/arm/omap1.c
index 1388200191..821ee69441 100644
--- a/hw/arm/omap1.c
+++ b/hw/arm/omap1.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -2313,7 +2314,7 @@ void omap_uwire_attach(struct omap_uwire_s *s,
                 uWireSlave *slave, int chipselect)
 {
     if (chipselect < 0 || chipselect > 3) {
-        fprintf(stderr, "%s: Bad chipselect %i\n", __func__, chipselect);
+        error_report("%s: Bad chipselect %i", __func__, chipselect);
         exit(-1);
     }
 
@@ -3989,7 +3990,7 @@ struct omap_mpu_state_s *omap310_mpu_init(MemoryRegion *system_memory,
 
     dinfo = drive_get(IF_SD, 0, 0);
     if (!dinfo) {
-        fprintf(stderr, "qemu: missing SecureDigital device\n");
+        error_report("qemu: missing SecureDigital device");
         exit(1);
     }
     s->mmc = omap_mmc_init(0xfffb7800, system_memory,
diff --git a/hw/arm/omap2.c b/hw/arm/omap2.c
index b53878b8b9..cbbb3ec05f 100644
--- a/hw/arm/omap2.c
+++ b/hw/arm/omap2.c
@@ -19,6 +19,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -1311,7 +1312,7 @@ static void omap_prcm_apll_update(struct omap_prcm_s *s)
     /* TODO: update clocks */
 
     if (mode[0] == 1 || mode[0] == 2 || mode[1] == 1 || mode[1] == 2)
-        fprintf(stderr, "%s: bad EN_54M_PLL or bad EN_96M_PLL\n",
+        error_report("%s: bad EN_54M_PLL or bad EN_96M_PLL",
                         __func__);
 }
 
@@ -1331,7 +1332,7 @@ static void omap_prcm_dpll_update(struct omap_prcm_s *s)
     s->dpll_lock = 0;
     switch (mode) {
     case 0:
-        fprintf(stderr, "%s: bad EN_DPLL\n", __func__);
+        error_report("%s: bad EN_DPLL", __func__);
         break;
     case 1:	/* Low-power bypass mode (Default) */
     case 2:	/* Fast-relock bypass mode */
@@ -1358,7 +1359,7 @@ static void omap_prcm_dpll_update(struct omap_prcm_s *s)
         omap_clk_reparent(core, dpll_x2);
         break;
     case 3:
-        fprintf(stderr, "%s: bad CORE_CLK_SRC\n", __func__);
+        error_report("%s: bad CORE_CLK_SRC", __func__);
         break;
     }
 }
@@ -1627,8 +1628,8 @@ static void omap_prcm_write(void *opaque, hwaddr addr,
 
     case 0x500:	/* CM_CLKEN_PLL */
         if (value & 0xffffff30)
-            fprintf(stderr, "%s: write 0s in CM_CLKEN_PLL for "
-                            "future compatibility\n", __func__);
+            error_report("%s: write 0s in CM_CLKEN_PLL for "
+                         "future compatibility", __func__);
         if ((s->clken[9] ^ value) & 0xcc) {
             s->clken[9] &= ~0xcc;
             s->clken[9] |= value & 0xcc;
@@ -1646,8 +1647,8 @@ static void omap_prcm_write(void *opaque, hwaddr addr,
         break;
     case 0x540:	/* CM_CLKSEL1_PLL */
         if (value & 0xfc4000d7)
-            fprintf(stderr, "%s: write 0s in CM_CLKSEL1_PLL for "
-                            "future compatibility\n", __func__);
+            error_report("%s: write 0s in CM_CLKSEL1_PLL for "
+                         "future compatibility", __func__);
         if ((s->clksel[5] ^ value) & 0x003fff00) {
             s->clksel[5] = value & 0x03bfff28;
             omap_prcm_dpll_update(s);
@@ -1658,8 +1659,8 @@ static void omap_prcm_write(void *opaque, hwaddr addr,
         break;
     case 0x544:	/* CM_CLKSEL2_PLL */
         if (value & ~3)
-            fprintf(stderr, "%s: write 0s in CM_CLKSEL2_PLL[31:2] for "
-                            "future compatibility\n", __func__);
+            error_report("%s: write 0s in CM_CLKSEL2_PLL[31:2] for "
+                         "future compatibility", __func__);
         if (s->clksel[6] != (value & 3)) {
             s->clksel[6] = value & 3;
             omap_prcm_dpll_update(s);
@@ -2486,7 +2487,7 @@ struct omap_mpu_state_s *omap2420_mpu_init(MemoryRegion *sysmem,
 
     dinfo = drive_get(IF_SD, 0, 0);
     if (!dinfo) {
-        fprintf(stderr, "qemu: missing SecureDigital device\n");
+        error_report("qemu: missing SecureDigital device");
         exit(1);
     }
     s->mmc = omap2_mmc_init(omap_l4tao(s->l4, 9),
diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c
index 9a14270795..6eb56ae744 100644
--- a/hw/arm/omap_sx1.c
+++ b/hw/arm/omap_sx1.c
@@ -158,7 +158,7 @@ static void sx1_init(MachineState *machine, const int version)
                                    blk_by_legacy_dinfo(dinfo),
                                    sector_size, flash_size / sector_size,
                                    4, 0, 0, 0, 0, be)) {
-            fprintf(stderr, "qemu: Error registering flash memory %d.\n",
+            error_report("qemu: Error registering flash memory %d.",
                            fl_idx);
         }
         fl_idx++;
@@ -182,7 +182,7 @@ static void sx1_init(MachineState *machine, const int version)
                                    blk_by_legacy_dinfo(dinfo),
                                    sector_size, flash1_size / sector_size,
                                    4, 0, 0, 0, 0, be)) {
-            fprintf(stderr, "qemu: Error registering flash memory %d.\n",
+            error_report("qemu: Error registering flash memory %d.",
                            fl_idx);
         }
         fl_idx++;
@@ -194,7 +194,7 @@ static void sx1_init(MachineState *machine, const int version)
     }
 
     if (!machine->kernel_filename && !fl_idx && !qtest_enabled()) {
-        fprintf(stderr, "Kernel or Flash image must be specified\n");
+        error_report("Kernel or Flash image must be specified");
         exit(1);
     }
 
diff --git a/hw/arm/palm.c b/hw/arm/palm.c
index 285f43709d..7f3637041a 100644
--- a/hw/arm/palm.c
+++ b/hw/arm/palm.c
@@ -233,8 +233,8 @@ static void palmte_init(MachineState *machine)
     if (nb_option_roms) {
         rom_size = get_image_size(option_rom[0].name);
         if (rom_size > flash_size) {
-            fprintf(stderr, "%s: ROM image too big (%x > %x)\n",
-                            __func__, rom_size, flash_size);
+            error_report("%s: ROM image too big (%x > %x)",
+                         __func__, rom_size, flash_size);
             rom_size = 0;
         }
         if (rom_size > 0) {
@@ -243,13 +243,13 @@ static void palmte_init(MachineState *machine)
             rom_loaded = 1;
         }
         if (rom_size < 0) {
-            fprintf(stderr, "%s: error loading '%s'\n",
-                            __func__, option_rom[0].name);
+            error_report("%s: error loading '%s'",
+                         __func__, option_rom[0].name);
         }
     }
 
     if (!rom_loaded && !kernel_filename && !qtest_enabled()) {
-        fprintf(stderr, "Kernel or ROM image must be specified\n");
+        fprintf(stderr, "Kernel or ROM image must be specified");
         exit(1);
     }
 
diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c
index 078006f390..c46b65d5d2 100644
--- a/hw/arm/pxa2xx.c
+++ b/hw/arm/pxa2xx.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -2060,7 +2061,7 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
     s = g_new0(PXA2xxState, 1);
 
     if (strncmp(cpu_type, "pxa27", 5)) {
-        fprintf(stderr, "Machine requires a PXA27x processor.\n");
+        error_report("Machine requires a PXA27x processor.");
         exit(1);
     }
 
@@ -2093,7 +2094,7 @@ PXA2xxState *pxa270_init(MemoryRegion *address_space,
 
     dinfo = drive_get(IF_SD, 0, 0);
     if (!dinfo) {
-        fprintf(stderr, "qemu: missing SecureDigital device\n");
+        error_report("qemu: missing SecureDigital device");
         exit(1);
     }
     s->mmc = pxa2xx_mmci_init(address_space, 0x41100000,
@@ -2218,7 +2219,7 @@ PXA2xxState *pxa255_init(MemoryRegion *address_space, unsigned int sdram_size)
 
     dinfo = drive_get(IF_SD, 0, 0);
     if (!dinfo) {
-        fprintf(stderr, "qemu: missing SecureDigital device\n");
+        error_report("qemu: missing SecureDigital device");
         exit(1);
     }
     s->mmc = pxa2xx_mmci_init(address_space, 0x41100000,
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index de7c0fc4a6..f6f295b363 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "hw/sysbus.h"
 #include "hw/ssi/ssi.h"
@@ -559,7 +560,7 @@ static void ssys_write(void *opaque, hwaddr offset,
     case 0x040: /* SRCR0 */
     case 0x044: /* SRCR1 */
     case 0x048: /* SRCR2 */
-        fprintf(stderr, "Peripheral reset not implemented\n");
+        error_report("Peripheral reset not implemented");
         break;
     case 0x054: /* IMC */
         s->int_mask = value & 0x7f;
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
index a55b1a369c..a069c95f1c 100644
--- a/hw/arm/tosa.c
+++ b/hw/arm/tosa.c
@@ -12,6 +12,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "hw/arm/pxa.h"
@@ -70,19 +71,19 @@ static void tosa_out_switch(void *opaque, int line, int level)
 {
     switch (line) {
         case 0:
-            fprintf(stderr, "blue LED %s.\n", level ? "on" : "off");
+            error_report("blue LED %s.", level ? "on" : "off");
             break;
         case 1:
-            fprintf(stderr, "green LED %s.\n", level ? "on" : "off");
+            error_report("green LED %s.", level ? "on" : "off");
             break;
         case 2:
-            fprintf(stderr, "amber LED %s.\n", level ? "on" : "off");
+            error_report("amber LED %s.", level ? "on" : "off");
             break;
         case 3:
-            fprintf(stderr, "wlan LED %s.\n", level ? "on" : "off");
+            fprintf(stderr, "wlan LED %s.", level ? "on" : "off");
             break;
         default:
-            fprintf(stderr, "Uhandled out event: %d = %d\n", line, level);
+            fprintf(stderr, "Uhandled out event: %d = %d", line, level);
             break;
     }
 }
@@ -133,7 +134,7 @@ static void tosa_gpio_setup(PXA2xxState *cpu,
 
 static uint32_t tosa_ssp_tansfer(SSISlave *dev, uint32_t value)
 {
-    fprintf(stderr, "TG: %d %02x\n", value >> 5, value & 0x1f);
+    error_report("TG: %d %02x", value >> 5, value & 0x1f);
     return 0;
 }
 
@@ -159,13 +160,13 @@ static int tosa_dac_send(I2CSlave *i2c, uint8_t data)
     s->buf[s->len] = data;
     if (s->len ++ > 2) {
 #ifdef VERBOSE
-        fprintf(stderr, "%s: message too long (%i bytes)\n", __func__, s->len);
+        error_report("%s: message too long (%i bytes)", __func__, s->len);
 #endif
         return 1;
     }
 
     if (s->len == 2) {
-        fprintf(stderr, "dac: channel %d value 0x%02x\n",
+        error_report("dac: channel %d value 0x%02x",
                 s->buf[0], s->buf[1]);
     }
 
diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c
index 418792cd02..f0ae069172 100644
--- a/hw/arm/versatilepb.c
+++ b/hw/arm/versatilepb.c
@@ -364,7 +364,7 @@ static void versatile_init(MachineState *machine, int board_id)
                           VERSATILE_FLASH_SECT_SIZE,
                           VERSATILE_FLASH_SIZE / VERSATILE_FLASH_SECT_SIZE,
                           4, 0x0089, 0x0018, 0x0000, 0x0, 0)) {
-        fprintf(stderr, "qemu: Error registering flash memory.\n");
+        error_report("qemu: Error registering flash memory.");
     }
 
     versatile_binfo.ram_size = machine->ram_size;
diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c
index efb5a29475..508629dfe9 100644
--- a/hw/arm/vexpress.c
+++ b/hw/arm/vexpress.c
@@ -266,7 +266,7 @@ static void a9_daughterboard_init(const VexpressMachineState *vms,
 
     if (ram_size > 0x40000000) {
         /* 1GB is the maximum the address space permits */
-        fprintf(stderr, "vexpress-a9: cannot model more than 1GB RAM\n");
+        error_report("vexpress-a9: cannot model more than 1GB RAM");
         exit(1);
     }
 
@@ -355,7 +355,7 @@ static void a15_daughterboard_init(const VexpressMachineState *vms,
          */
         uint64_t rsz = ram_size;
         if (rsz > (30ULL * 1024 * 1024 * 1024)) {
-            fprintf(stderr, "vexpress-a15: cannot model more than 30GB RAM\n");
+            error_report("vexpress-a15: cannot model more than 30GB RAM");
             exit(1);
         }
     }
@@ -640,7 +640,7 @@ static void vexpress_common_init(MachineState *machine)
     pflash0 = ve_pflash_cfi01_register(map[VE_NORFLASH0], "vexpress.flash0",
                                        dinfo);
     if (!pflash0) {
-        fprintf(stderr, "vexpress: error registering flash 0.\n");
+        error_report("vexpress: error registering flash 0.");
         exit(1);
     }
 
@@ -655,7 +655,7 @@ static void vexpress_common_init(MachineState *machine)
     dinfo = drive_get_next(IF_PFLASH);
     if (!ve_pflash_cfi01_register(map[VE_NORFLASH1], "vexpress.flash1",
                                   dinfo)) {
-        fprintf(stderr, "vexpress: error registering flash 1.\n");
+        error_report("vexpress: error registering flash 1.");
         exit(1);
     }
 
diff --git a/hw/arm/z2.c b/hw/arm/z2.c
index 60561c7b7c..5048439799 100644
--- a/hw/arm/z2.c
+++ b/hw/arm/z2.c
@@ -319,8 +319,8 @@ static void z2_init(MachineState *machine)
 #endif
     dinfo = drive_get(IF_PFLASH, 0, 0);
     if (!dinfo && !qtest_enabled()) {
-        fprintf(stderr, "Flash image must be given with the "
-                "'pflash' parameter\n");
+        error_report("Flash image must be given with the "
+                     "'pflash' parameter");
         exit(1);
     }
 
@@ -329,7 +329,7 @@ static void z2_init(MachineState *machine)
                                dinfo ? blk_by_legacy_dinfo(dinfo) : NULL,
                                sector_len, Z2_FLASH_SIZE / sector_len,
                                4, 0, 0, 0, 0, be)) {
-        fprintf(stderr, "qemu: Error registering flash memory.\n");
+        error_report("qemu: Error registering flash memory.");
         exit(1);
     }
 
diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c
index 5556f0e64e..69dfd49191 100644
--- a/hw/block/dataplane/virtio-blk.c
+++ b/hw/block/dataplane/virtio-blk.c
@@ -178,8 +178,8 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev)
     /* Set up guest notifier (irq) */
     r = k->set_guest_notifiers(qbus->parent, nvqs, true);
     if (r != 0) {
-        fprintf(stderr, "virtio-blk failed to set guest notifier (%d), "
-                "ensure -enable-kvm is set\n", r);
+        error_report("virtio-blk failed to set guest notifier (%d), "
+                "ensure -enable-kvm is set", r);
         goto fail_guest_notifiers;
     }
 
@@ -187,7 +187,7 @@ int virtio_blk_data_plane_start(VirtIODevice *vdev)
     for (i = 0; i < nvqs; i++) {
         r = virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, true);
         if (r != 0) {
-            fprintf(stderr, "virtio-blk failed to set host notifier (%d)\n", r);
+            error_report("virtio-blk failed to set host notifier (%d)", r);
             while (i--) {
                 virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), i, false);
             }
diff --git a/hw/block/onenand.c b/hw/block/onenand.c
index 224daf7ccf..8bcd67688b 100644
--- a/hw/block/onenand.c
+++ b/hw/block/onenand.c
@@ -598,7 +598,7 @@ static void onenand_command(OneNANDState *s)
     default:
         s->status |= ONEN_ERR_CMD;
         s->intstatus |= ONEN_INT;
-        fprintf(stderr, "%s: unknown OneNAND command %x\n",
+        error_report("%s: unknown OneNAND command %x",
                         __func__, s->command);
     }
 
@@ -665,7 +665,7 @@ static uint64_t onenand_read(void *opaque, hwaddr addr,
         return 0x0000;
     }
 
-    fprintf(stderr, "%s: unknown OneNAND register %x\n",
+    error_report("%s: unknown OneNAND register %x",
                     __func__, offset);
     return 0;
 }
@@ -710,7 +710,7 @@ static void onenand_write(void *opaque, hwaddr addr,
             break;
 
         default:
-            fprintf(stderr, "%s: unknown OneNAND boot command %"PRIx64"\n",
+            error_report("%s: unknown OneNAND boot command %"PRIx64"",
                             __func__, value);
         }
         break;
@@ -761,7 +761,7 @@ static void onenand_write(void *opaque, hwaddr addr,
         break;
 
     default:
-        fprintf(stderr, "%s: unknown OneNAND register %x\n",
+        error_report("%s: unknown OneNAND register %x",
                         __func__, offset);
     }
 }
diff --git a/hw/block/tc58128.c b/hw/block/tc58128.c
index 1d9f7ee000..d274c9aafe 100644
--- a/hw/block/tc58128.c
+++ b/hw/block/tc58128.c
@@ -50,8 +50,8 @@ static void init_dev(tc58128_dev * dev, const char *filename)
 	    dev->flash_contents[1] = (blocks >> 8) & 0xff;
 	    dev->flash_contents[2] = (blocks >> 16) & 0xff;
 	    dev->flash_contents[3] = (blocks >> 24) & 0xff;
-	    fprintf(stderr, "loaded %d bytes for %s into flash\n", ret,
-		    filename);
+        error_report("loaded %d bytes for %s into flash", ret,
+                     filename);
 	}
     }
 }
@@ -60,26 +60,26 @@ static void handle_command(tc58128_dev * dev, uint8_t command)
 {
     switch (command) {
     case 0xff:
-	fprintf(stderr, "reset flash device\n");
-	dev->state = WAIT;
-	break;
+        error_report("reset flash device");
+        dev->state = WAIT;
+        break;
     case 0x00:
-	fprintf(stderr, "read mode 1\n");
-	dev->state = READ1;
-	dev->address_cycle = 0;
-	break;
+        error_report("read mode 1");
+        dev->state = READ1;
+        dev->address_cycle = 0;
+        break;
     case 0x01:
-	fprintf(stderr, "read mode 2\n");
-	dev->state = READ2;
-	dev->address_cycle = 0;
-	break;
+        error_report("read mode 2");
+        dev->state = READ2;
+        dev->address_cycle = 0;
+        break;
     case 0x50:
-	fprintf(stderr, "read mode 3\n");
-	dev->state = READ3;
-	dev->address_cycle = 0;
-	break;
+        error_report("read mode 3");
+        dev->state = READ3;
+        dev->address_cycle = 0;
+        break;
     default:
-	fprintf(stderr, "unknown flash command 0x%02x\n", command);
+        error_report("unknown flash command 0x%02x", command);
         abort();
     }
 }
@@ -103,8 +103,8 @@ static void handle_address(tc58128_dev * dev, uint8_t data)
 	    break;
 	case 2:
 	    dev->address += data * 528;
-	    fprintf(stderr, "address pointer in flash: 0x%08x\n",
-		    dev->address);
+        error_report("address pointer in flash: 0x%08x",
+                     dev->address);
 	    break;
 	default:
 	    /* Invalid data */
@@ -119,10 +119,6 @@ static void handle_address(tc58128_dev * dev, uint8_t data)
 
 static uint8_t handle_read(tc58128_dev * dev)
 {
-#if 0
-    if (dev->address % 0x100000 == 0)
-	fprintf(stderr, "reading flash at address 0x%08x\n", dev->address);
-#endif
     return dev->flash_contents[dev->address++];
 }
 
diff --git a/hw/bt/core.c b/hw/bt/core.c
index c1806b71a3..a6e9bf2a3e 100644
--- a/hw/bt/core.c
+++ b/hw/bt/core.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "sysemu/bt.h"
 #include "hw/bt.h"
@@ -31,24 +32,24 @@ static void bt_dummy_lmp_mode_change(struct bt_link_s *link)
 static void bt_dummy_lmp_connection_complete(struct bt_link_s *link)
 {
     if (link->slave->reject_reason)
-        fprintf(stderr, "%s: stray LMP_not_accepted received, fixme\n",
-                        __func__);
+        error_report("%s: stray LMP_not_accepted received, fixme",
+                     __func__);
     else
-        fprintf(stderr, "%s: stray LMP_accepted received, fixme\n",
-                        __func__);
+        error_report("%s: stray LMP_accepted received, fixme",
+                     __func__);
     exit(-1);
 }
 
 static void bt_dummy_lmp_disconnect_master(struct bt_link_s *link)
 {
-    fprintf(stderr, "%s: stray LMP_detach received, fixme\n", __func__);
+    fprintf(stderr, "%s: stray LMP_detach received, fixme", __func__);
     exit(-1);
 }
 
 static void bt_dummy_lmp_acl_resp(struct bt_link_s *link,
                 const uint8_t *data, int start, int len)
 {
-    fprintf(stderr, "%s: stray ACL response PDU, fixme\n", __func__);
+    error_report("%s: stray ACL response PDU, fixme", __func__);
     exit(-1);
 }
 
@@ -113,7 +114,7 @@ void bt_device_done(struct bt_device_s *dev)
     while (*p && *p != dev)
         p = &(*p)->next;
     if (*p != dev) {
-        fprintf(stderr, "%s: bad bt device \"%s\"\n", __func__,
+        error_report("%s: bad bt device \"%s\"", __func__,
                         dev->lmp_name ?: "(null)");
         exit(-1);
     }
diff --git a/hw/bt/hci-csr.c b/hw/bt/hci-csr.c
index ac067b81f6..6a171a54b7 100644
--- a/hw/bt/hci-csr.c
+++ b/hw/bt/hci-csr.c
@@ -19,6 +19,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "chardev/char-serial.h"
 #include "qemu/timer.h"
@@ -111,14 +112,14 @@ static uint8_t *csrhci_out_packet(struct csrhci_s *s, int len)
 
     if (off < FIFO_LEN) {
         if (off + len > FIFO_LEN && (s->out_size = off + len) > FIFO_LEN * 2) {
-            fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
+            error_report("%s: can't alloc %i bytes", __func__, len);
             exit(-1);
         }
         return s->outfifo + off;
     }
 
     if (s->out_len > s->out_size) {
-        fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
+        error_report("%s: can't alloc %i bytes", __func__, len);
         exit(-1);
     }
 
@@ -168,8 +169,8 @@ static void csrhci_in_packet_vendor(struct csrhci_s *s, int ocf,
             s->bd_addr.b[5] = data[offset + 2];
 
             s->hci->bdaddr_set(s->hci, s->bd_addr.b);
-            fprintf(stderr, "%s: bd_address loaded from firmware: "
-                            "%02x:%02x:%02x:%02x:%02x:%02x\n", __func__,
+            error_report("%s: bd_address loaded from firmware: "
+                            "%02x:%02x:%02x:%02x:%02x:%02x", __func__,
                             s->bd_addr.b[0], s->bd_addr.b[1], s->bd_addr.b[2],
                             s->bd_addr.b[3], s->bd_addr.b[4], s->bd_addr.b[5]);
         }
@@ -181,7 +182,7 @@ static void csrhci_in_packet_vendor(struct csrhci_s *s, int ocf,
         break;
 
     default:
-        fprintf(stderr, "%s: got a bad CMD packet\n", __func__);
+        error_report("%s: got a bad CMD packet", __func__);
         return;
     }
 
@@ -226,7 +227,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
     case H4_NEG_PKT:
         if (s->in_hdr != sizeof(csrhci_neg_packet) ||
                         memcmp(pkt - 1, csrhci_neg_packet, s->in_hdr)) {
-            fprintf(stderr, "%s: got a bad NEG packet\n", __func__);
+            error_report("%s: got a bad NEG packet", __func__);
             return;
         }
         pkt += 2;
@@ -241,7 +242,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
 
     case H4_ALIVE_PKT:
         if (s->in_hdr != 4 || pkt[1] != 0x55 || pkt[2] != 0x00) {
-            fprintf(stderr, "%s: got a bad ALIVE packet\n", __func__);
+            error_report("%s: got a bad ALIVE packet", __func__);
             return;
         }
 
@@ -254,7 +255,7 @@ static void csrhci_in_packet(struct csrhci_s *s, uint8_t *pkt)
     default:
     bad_pkt:
         /* TODO: error out */
-        fprintf(stderr, "%s: got a bad packet\n", __func__);
+        error_report("%s: got a bad packet", __func__);
         break;
     }
 
diff --git a/hw/bt/hci.c b/hw/bt/hci.c
index df05f07887..ac9394daf0 100644
--- a/hw/bt/hci.c
+++ b/hw/bt/hci.c
@@ -19,6 +19,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "qemu/timer.h"
@@ -457,7 +458,7 @@ static inline uint8_t *bt_hci_event_start(struct bt_hci_s *hci,
     int mask_byte;
 
     if (len > 255) {
-        fprintf(stderr, "%s: HCI event params too long (%ib)\n",
+        error_report("%s: HCI event params too long (%ib)",
                         __func__, len);
         exit(-1);
     }
@@ -589,7 +590,7 @@ static void bt_hci_inquiry_result(struct bt_hci_s *hci,
         bt_hci_inquiry_result_with_rssi(hci, slave);
         return;
     default:
-        fprintf(stderr, "%s: bad inquiry mode %02x\n", __func__,
+        error_report("%s: bad inquiry mode %02x", __func__,
                         hci->lm.inquiry_mode);
         exit(-1);
     }
@@ -1971,7 +1972,7 @@ static void bt_submit_hci(struct HCIInfo *info,
         break;
 
     short_hci:
-        fprintf(stderr, "%s: HCI packet too short (%iB)\n",
+        error_report("%s: HCI packet too short (%iB)",
                         __func__, length);
         bt_hci_event_status(hci, HCI_INVALID_PARAMETERS);
         break;
@@ -1991,7 +1992,7 @@ static inline void bt_hci_lmp_acl_data(struct bt_hci_s *hci, uint16_t handle,
     /* TODO: avoid memcpy'ing */
 
     if (len + HCI_ACL_HDR_SIZE > sizeof(hci->acl_buf)) {
-        fprintf(stderr, "%s: can't take ACL packets %i bytes long\n",
+        error_report("%s: can't take ACL packets %i bytes long",
                         __func__, len);
         return;
     }
@@ -2029,7 +2030,7 @@ static void bt_submit_acl(struct HCIInfo *info,
     struct bt_link_s *link;
 
     if (length < HCI_ACL_HDR_SIZE) {
-        fprintf(stderr, "%s: ACL packet too short (%iB)\n",
+        error_report("%s: ACL packet too short (%iB)",
                         __func__, length);
         return;
     }
@@ -2041,15 +2042,15 @@ static void bt_submit_acl(struct HCIInfo *info,
     length -= HCI_ACL_HDR_SIZE;
 
     if (bt_hci_handle_bad(hci, handle)) {
-        fprintf(stderr, "%s: invalid ACL handle %03x\n",
-                        __func__, handle);
+        error_report("%s: invalid ACL handle %03x",
+                     __func__, handle);
         /* TODO: signal an error */
         return;
     }
     handle &= ~HCI_HANDLE_OFFSET;
 
     if (datalen > length) {
-        fprintf(stderr, "%s: ACL packet too short (%iB < %iB)\n",
+        fprintf(stderr, "%s: ACL packet too short (%iB < %iB)",
                         __func__, length, datalen);
         return;
     }
@@ -2060,7 +2061,7 @@ static void bt_submit_acl(struct HCIInfo *info,
         if (!hci->asb_handle)
             hci->asb_handle = handle;
         else if (handle != hci->asb_handle) {
-            fprintf(stderr, "%s: Bad handle %03x in Active Slave Broadcast\n",
+            error_report("%s: Bad handle %03x in Active Slave Broadcast",
                             __func__, handle);
             /* TODO: signal an error */
             return;
@@ -2073,7 +2074,7 @@ static void bt_submit_acl(struct HCIInfo *info,
         if (!hci->psb_handle)
             hci->psb_handle = handle;
         else if (handle != hci->psb_handle) {
-            fprintf(stderr, "%s: Bad handle %03x in Parked Slave Broadcast\n",
+            error_report("%s: Bad handle %03x in Parked Slave Broadcast",
                             __func__, handle);
             /* TODO: signal an error */
             return;
@@ -2105,14 +2106,13 @@ static void bt_submit_sco(struct HCIInfo *info,
     length -= 3;
 
     if (bt_hci_handle_bad(hci, handle)) {
-        fprintf(stderr, "%s: invalid SCO handle %03x\n",
-                        __func__, handle);
+        error_report("%s: invalid SCO handle %03x", __func__, handle);
         return;
     }
 
     if (datalen > length) {
-        fprintf(stderr, "%s: SCO packet too short (%iB < %iB)\n",
-                        __func__, length, datalen);
+        error_report("%s: SCO packet too short (%iB < %iB)",
+                     __func__, length, datalen);
         return;
     }
 
@@ -2223,7 +2223,7 @@ struct HCIInfo *hci_init(const char *str)
            return bt_new_hci(vlan);
     }
 
-    fprintf(stderr, "qemu: Unknown bluetooth HCI `%s'.\n", str);
+    error_report("qemu: Unknown bluetooth HCI `%s'.", str);
 
     return 0;
 }
diff --git a/hw/bt/hid.c b/hw/bt/hid.c
index 09d17322e4..056291f9b5 100644
--- a/hw/bt/hid.c
+++ b/hw/bt/hid.c
@@ -419,7 +419,7 @@ static void bt_hid_interrupt_sdu(void *opaque, const uint8_t *data, int len)
 
     return;
 bad:
-    fprintf(stderr, "%s: bad transaction on Interrupt channel.\n",
+    error_report("%s: bad transaction on Interrupt channel.",
                     __func__);
 }
 
diff --git a/hw/bt/l2cap.c b/hw/bt/l2cap.c
index 3e53dd082d..9cf27f0df6 100644
--- a/hw/bt/l2cap.c
+++ b/hw/bt/l2cap.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "qemu/timer.h"
 #include "qemu/bswap.h"
@@ -467,8 +468,8 @@ static void l2cap_channel_close(struct l2cap_instance_s *l2cap,
 
     if (likely(ch)) {
         if (ch->remote_cid != source_cid) {
-            fprintf(stderr, "%s: Ignoring a Disconnection Request with the "
-                            "invalid SCID %04x.\n", __func__, source_cid);
+            error_report("%s: Ignoring a Disconnection Request with the "
+                            "invalid SCID %04x.", __func__, source_cid);
             return;
         }
 
@@ -790,7 +791,7 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
 #if 0
     /* TODO: do the IDs really have to be in sequence?  */
     if (!id || (id != l2cap->last_id && id != l2cap->next_id)) {
-        fprintf(stderr, "%s: out of sequence command packet ignored.\n",
+        error_report("%s: out of sequence command packet ignored.",
                         __func__);
         return;
     }
@@ -813,9 +814,9 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
         }
 
         /* We never issue commands other than Command Reject currently.  */
-        fprintf(stderr, "%s: stray Command Reject (%02x, %04x) "
-                        "packet, ignoring.\n", __func__, id,
-                        le16_to_cpu(((l2cap_cmd_rej *) params)->reason));
+        error_report("%s: stray Command Reject (%02x, %04x) "
+                     "packet, ignoring.", __func__, id,
+                     le16_to_cpu(((l2cap_cmd_rej *) params)->reason));
         break;
 
     case L2CAP_CONN_REQ:
@@ -836,8 +837,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
         }
 
         /* We never issue Connection Requests currently. TODO  */
-        fprintf(stderr, "%s: unexpected Connection Response (%02x) "
-                        "packet, ignoring.\n", __func__, id);
+        error_report("%s: unexpected Connection Response (%02x) "
+                     "packet, ignoring.", __func__, id);
         break;
 
     case L2CAP_CONF_REQ:
@@ -865,8 +866,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
                         le16_to_cpu(((l2cap_conf_rsp *) params)->scid),
                         ((l2cap_conf_rsp *) params)->data,
                         len - L2CAP_CONF_RSP_SIZE(0)))
-            fprintf(stderr, "%s: unexpected Configure Response (%02x) "
-                            "packet, ignoring.\n", __func__, id);
+            error_report("%s: unexpected Configure Response (%02x) "
+                         "packet, ignoring.", __func__, id);
         break;
 
     case L2CAP_DISCONN_REQ:
@@ -887,8 +888,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
         }
 
         /* We never issue Disconnection Requests currently. TODO  */
-        fprintf(stderr, "%s: unexpected Disconnection Response (%02x) "
-                        "packet, ignoring.\n", __func__, id);
+        error_report("%s: unexpected Disconnection Response (%02x) "
+                     "packet, ignoring.", __func__, id);
         break;
 
     case L2CAP_ECHO_REQ:
@@ -897,8 +898,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
 
     case L2CAP_ECHO_RSP:
         /* We never issue Echo Requests currently. TODO  */
-        fprintf(stderr, "%s: unexpected Echo Response (%02x) "
-                        "packet, ignoring.\n", __func__, id);
+        error_report("%s: unexpected Echo Response (%02x) "
+                     "packet, ignoring.", __func__, id);
         break;
 
     case L2CAP_INFO_REQ:
@@ -917,8 +918,8 @@ static void l2cap_command(struct l2cap_instance_s *l2cap, int code, int id,
         }
 
         /* We never issue Information Requests currently. TODO  */
-        fprintf(stderr, "%s: unexpected Information Response (%02x) "
-                        "packet, ignoring.\n", __func__, id);
+        error_report("%s: unexpected Information Response (%02x) "
+                     "packet, ignoring.", __func__, id);
         break;
 
     default:
@@ -1066,8 +1067,8 @@ static void l2cap_frame_in(struct l2cap_instance_s *l2cap,
     uint16_t len = le16_to_cpu(frame->len);
 
     if (unlikely(cid >= L2CAP_CID_MAX || !l2cap->cid[cid])) {
-        fprintf(stderr, "%s: frame addressed to a non-existent L2CAP "
-                        "channel %04x received.\n", __func__, cid);
+        error_report("%s: frame addressed to a non-existent L2CAP "
+                     "channel %04x received.", __func__, cid);
         return;
     }
 
@@ -1128,9 +1129,9 @@ static uint8_t *l2cap_bframe_out(struct bt_l2cap_conn_params_s *parm, int len)
     struct l2cap_chan_s *chan = (struct l2cap_chan_s *) parm;
 
     if (len > chan->params.remote_mtu) {
-        fprintf(stderr, "%s: B-Frame for CID %04x longer than %i octets.\n",
-                        __func__,
-                        chan->remote_cid, chan->params.remote_mtu);
+        error_report("%s: B-Frame for CID %04x longer than %i octets.",
+                     __func__,
+                     chan->remote_cid, chan->params.remote_mtu);
         exit(-1);
     }
 
@@ -1353,8 +1354,8 @@ void bt_l2cap_psm_register(struct bt_l2cap_device_s *dev, int psm, int min_mtu,
     struct bt_l2cap_psm_s *new_psm = l2cap_psm(dev, psm);
 
     if (new_psm) {
-        fprintf(stderr, "%s: PSM %04x already registered for device `%s'.\n",
-                        __func__, psm, dev->device.lmp_name);
+        error_report("%s: PSM %04x already registered for device `%s'.",
+                     __func__, psm, dev->device.lmp_name);
         exit(-1);
     }
 
diff --git a/hw/bt/sdp.c b/hw/bt/sdp.c
index 7c0d38b504..f4aba9d74f 100644
--- a/hw/bt/sdp.c
+++ b/hw/bt/sdp.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "qemu/host-utils.h"
 #include "hw/bt.h"
@@ -506,7 +507,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)
     int rsp_len = 0;
 
     if (len < 5) {
-        fprintf(stderr, "%s: short SDP PDU (%iB).\n", __func__, len);
+        error_report("%s: short SDP PDU (%iB).", __func__, len);
         return;
     }
 
@@ -517,7 +518,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)
     len -= 5;
 
     if (len != plen) {
-        fprintf(stderr, "%s: wrong SDP PDU length (%iB != %iB).\n",
+        error_report("%s: wrong SDP PDU length (%iB != %iB).",
                         __func__, plen, len);
         err = SDP_INVALID_PDU_SIZE;
         goto respond;
@@ -544,7 +545,7 @@ static void bt_l2cap_sdp_sdu_in(void *opaque, const uint8_t *data, int len)
     case SDP_SVC_SEARCH_RSP:
     case SDP_SVC_SEARCH_ATTR_RSP:
     default:
-        fprintf(stderr, "%s: unexpected SDP PDU ID %02x.\n",
+        error_report("%s: unexpected SDP PDU ID %02x.",
                         __func__, pdu_id);
         err = SDP_INVALID_SYNTAX;
         break;
diff --git a/hw/char/exynos4210_uart.c b/hw/char/exynos4210_uart.c
index 3957e78abf..a388f01a23 100644
--- a/hw/char/exynos4210_uart.c
+++ b/hw/char/exynos4210_uart.c
@@ -296,7 +296,7 @@ static void exynos4210_uart_update_irq(Exynos4210UartState *s)
         qemu_irq_raise(s->irq);
 
 #if DEBUG_IRQ
-        fprintf(stderr, "UART%d: IRQ has been raised: %08x\n",
+        error_report("UART%d: IRQ has been raised: %08x",
                 s->channel, s->reg[I_(UINTP)]);
 #endif
 
@@ -388,7 +388,7 @@ static void exynos4210_uart_write(void *opaque, hwaddr offset,
              * qemu_chr_fe_write and background I/O callbacks */
             qemu_chr_fe_write_all(&s->chr, &ch, 1);
 #if DEBUG_Tx_DATA
-            fprintf(stderr, "%c", ch);
+            error_report("%c", ch);
 #endif
             s->reg[I_(UTRSTAT)] |= UTRSTAT_TRANSMITTER_EMPTY |
                     UTRSTAT_Tx_BUFFER_EMPTY;
@@ -400,7 +400,7 @@ static void exynos4210_uart_write(void *opaque, hwaddr offset,
     case UINTP:
         s->reg[I_(UINTP)] &= ~val;
         s->reg[I_(UINTSP)] &= ~val;
-        PRINT_DEBUG("UART%d: UINTP [%04x] have been cleared: %08x\n",
+        PRINT_DEBUG("UART%d: UINTP [%04x] have been cleared: %08x",
                     s->channel, offset, s->reg[I_(UINTP)]);
         exynos4210_uart_update_irq(s);
         break;
diff --git a/hw/char/mcf_uart.c b/hw/char/mcf_uart.c
index 56fa402b58..14cb051be9 100644
--- a/hw/char/mcf_uart.c
+++ b/hw/char/mcf_uart.c
@@ -6,6 +6,7 @@
  * This code is licensed under the GPL
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/sysbus.h"
 #include "hw/m68k/mcf.h"
@@ -174,7 +175,7 @@ static void mcf_do_command(mcf_uart_state *s, uint8_t cmd)
         mcf_uart_do_tx(s);
         break;
     case 3: /* Reserved.  */
-        fprintf(stderr, "mcf_uart: Bad TX command\n");
+        error_report("mcf_uart: Bad TX command");
         break;
     }
 
@@ -189,7 +190,7 @@ static void mcf_do_command(mcf_uart_state *s, uint8_t cmd)
         s->rx_enabled = 0;
         break;
     case 3: /* Reserved.  */
-        fprintf(stderr, "mcf_uart: Bad RX command\n");
+        error_report("mcf_uart: Bad RX command");
         break;
     }
 }
diff --git a/hw/char/sh_serial.c b/hw/char/sh_serial.c
index 835b5378a0..7bb3f3c70b 100644
--- a/hw/char/sh_serial.c
+++ b/hw/char/sh_serial.c
@@ -25,6 +25,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/sh4/sh.h"
 #include "chardev/char-fe.h"
@@ -190,8 +191,8 @@ static void sh_serial_write(void *opaque, hwaddr offs,
         }
     }
 
-    fprintf(stderr, "sh_serial: unsupported write to 0x%02"
-            HWADDR_PRIx "\n", offs);
+    error_report("sh_serial: unsupported write to 0x%02"
+                 HWADDR_PRIx "", offs);
     abort();
 }
 
@@ -290,8 +291,8 @@ static uint64_t sh_serial_read(void *opaque, hwaddr offs,
 #endif
 
     if (ret & ~((1 << 16) - 1)) {
-        fprintf(stderr, "sh_serial: unsupported read from 0x%02"
-                HWADDR_PRIx "\n", offs);
+        error_report("sh_serial: unsupported read from 0x%02"
+                     HWADDR_PRIx "", offs);
         abort();
     }
 
diff --git a/hw/core/loader.c b/hw/core/loader.c
index 4593061445..95bdcbbe36 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -43,6 +43,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "disas/disas.h"
@@ -82,7 +83,7 @@ int load_image(const char *filename, uint8_t *addr)
         return -1;
     size = lseek(fd, 0, SEEK_END);
     if (size == -1) {
-        fprintf(stderr, "file %-20s: get size error: %s\n",
+        error_report("file %-20s: get size error: %s",
                 filename, strerror(errno));
         close(fd);
         return -1;
@@ -623,7 +624,7 @@ static int load_uboot_image(const char *filename, hwaddr *ep, hwaddr *loadaddr,
         goto out;
 
     if (hdr->ih_type != image_type) {
-        fprintf(stderr, "Wrong image type %d, expected %d\n", hdr->ih_type,
+        error_report("Wrong image type %d, expected %d", hdr->ih_type,
                 image_type);
         goto out;
     }
@@ -670,14 +671,14 @@ static int load_uboot_image(const char *filename, hwaddr *ep, hwaddr *loadaddr,
         address = *loadaddr;
         break;
     default:
-        fprintf(stderr, "Unsupported u-boot image type %d\n", hdr->ih_type);
+        error_report("Unsupported u-boot image type %d", hdr->ih_type);
         goto out;
     }
 
     data = g_malloc(hdr->ih_size);
 
     if (read(fd, data, hdr->ih_size) != hdr->ih_size) {
-        fprintf(stderr, "Error reading file\n");
+        error_report("Error reading file");
         goto out;
     }
 
@@ -693,7 +694,7 @@ static int load_uboot_image(const char *filename, hwaddr *ep, hwaddr *loadaddr,
         bytes = gunzip(data, max_bytes, compressed_data, hdr->ih_size);
         g_free(compressed_data);
         if (bytes < 0) {
-            fprintf(stderr, "Unable to decompress gzipped image!\n");
+            error_report("Unable to decompress gzipped image!");
             goto out;
         }
         hdr->ih_size = bytes;
@@ -763,7 +764,7 @@ int load_image_gzipped_buffer(const char *filename, uint64_t max_sz,
     data = g_malloc(max_sz);
     bytes = gunzip(data, max_sz, compressed_data, len);
     if (bytes < 0) {
-        fprintf(stderr, "%s: unable to decompress gzipped kernel file\n",
+        error_report("%s: unable to decompress gzipped kernel file",
                 filename);
         goto out;
     }
@@ -893,8 +894,8 @@ int rom_add_file(const char *file, const char *fw_dir,
     char devpath[100];
 
     if (as && mr) {
-        fprintf(stderr, "Specifying an Address Space and Memory Region is " \
-                "not valid when loading a rom\n");
+        error_report("Specifying an Address Space and Memory Region is " \
+                     "not valid when loading a rom");
         /* We haven't allocated anything so we don't need any cleanup */
         return -1;
     }
@@ -909,7 +910,7 @@ int rom_add_file(const char *file, const char *fw_dir,
 
     fd = open(rom->path, O_RDONLY | O_BINARY);
     if (fd == -1) {
-        fprintf(stderr, "Could not open option rom '%s': %s\n",
+        error_report("Could not open option rom '%s': %s",
                 rom->path, strerror(errno));
         goto err;
     }
@@ -921,7 +922,7 @@ int rom_add_file(const char *file, const char *fw_dir,
     rom->addr     = addr;
     rom->romsize  = lseek(fd, 0, SEEK_END);
     if (rom->romsize == -1) {
-        fprintf(stderr, "rom: file %-20s: get size error: %s\n",
+        error_report("rom: file %-20s: get size error: %s",
                 rom->name, strerror(errno));
         goto err;
     }
@@ -931,7 +932,7 @@ int rom_add_file(const char *file, const char *fw_dir,
     lseek(fd, 0, SEEK_SET);
     rc = read(fd, rom->data, rom->datasize);
     if (rc != rom->datasize) {
-        fprintf(stderr, "rom: file %-20s: read error: rc=%d (expected %zd)\n",
+        error_report("rom: file %-20s: read error: rc=%d (expected %zd)",
                 rom->name, rc, rom->datasize);
         goto err;
     }
@@ -1105,10 +1106,10 @@ int rom_check_and_register_reset(void)
             continue;
         }
         if ((addr > rom->addr) && (as == rom->as)) {
-            fprintf(stderr, "rom: requested regions overlap "
-                    "(rom %s. free=0x" TARGET_FMT_plx
-                    ", addr=0x" TARGET_FMT_plx ")\n",
-                    rom->name, addr, rom->addr);
+            error_report("rom: requested regions overlap "
+                         "(rom %s. free=0x" TARGET_FMT_plx
+                         ", addr=0x" TARGET_FMT_plx ")",
+                         rom->name, addr, rom->addr);
             return -1;
         }
         addr  = rom->addr;
diff --git a/hw/core/ptimer.c b/hw/core/ptimer.c
index 7221c68a98..514e177de2 100644
--- a/hw/core/ptimer.c
+++ b/hw/core/ptimer.c
@@ -6,6 +6,7 @@
  * This code is licensed under the GNU LGPL.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "hw/ptimer.h"
@@ -56,7 +57,7 @@ static void ptimer_reload(ptimer_state *s, int delta_adjust)
 
     if (s->period == 0) {
         if (!qtest_enabled()) {
-            fprintf(stderr, "Timer with period zero, disabling\n");
+            error_report("Timer with period zero, disabling");
         }
         timer_del(s->timer);
         s->enabled = 0;
@@ -89,7 +90,7 @@ static void ptimer_reload(ptimer_state *s, int delta_adjust)
 
     if (delta == 0) {
         if (!qtest_enabled()) {
-            fprintf(stderr, "Timer with delta zero, disabling\n");
+            error_report("Timer with delta zero, disabling");
         }
         timer_del(s->timer);
         s->enabled = 0;
@@ -263,7 +264,7 @@ void ptimer_run(ptimer_state *s, int oneshot)
 
     if (was_disabled && s->period == 0) {
         if (!qtest_enabled()) {
-            fprintf(stderr, "Timer with period zero, disabling\n");
+            error_report("Timer with period zero, disabling");
         }
         return;
     }
diff --git a/hw/cris/axis_dev88.c b/hw/cris/axis_dev88.c
index 5eb552bce2..d121836b69 100644
--- a/hw/cris/axis_dev88.c
+++ b/hw/cris/axis_dev88.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -349,7 +350,7 @@ void axisdev88_init(MachineState *machine)
         li.cmdline = kernel_cmdline;
         cris_load_image(cpu, &li);
     } else if (!qtest_enabled()) {
-        fprintf(stderr, "Kernel image must be specified\n");
+        error_report("Kernel image must be specified");
         exit(1);
     }
 }
diff --git a/hw/cris/boot.c b/hw/cris/boot.c
index f896ed7f86..f199a13a82 100644
--- a/hw/cris/boot.c
+++ b/hw/cris/boot.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/hw.h"
@@ -86,14 +87,14 @@ void cris_load_image(CRISCPU *cpu, struct cris_load_info *li)
     }
 
     if (image_size < 0) {
-        fprintf(stderr, "qemu: could not load kernel '%s'\n",
+        error_report("qemu: could not load kernel '%s'",
                 li->image_filename);
         exit(1);
     }
 
     if (li->cmdline && (kcmdline_len = strlen(li->cmdline))) {
         if (kcmdline_len > 256) {
-            fprintf(stderr, "Too long CRIS kernel cmdline (max 256)\n");
+            error_report("Too long CRIS kernel cmdline (max 256)");
             exit(1);
         }
         pstrcpy_targphys("cmdline", 0x40000000, 256, li->cmdline);
diff --git a/hw/display/blizzard.c b/hw/display/blizzard.c
index 291abe6fca..0d12e078c4 100644
--- a/hw/display/blizzard.c
+++ b/hw/display/blizzard.c
@@ -474,7 +474,7 @@ static uint16_t blizzard_reg_read(void *opaque, uint8_t reg)
         return s->gpio_pdown;
 
     default:
-        fprintf(stderr, "%s: unknown register %02x\n", __func__, reg);
+        error_report("%s: unknown register %02x", __func__, reg);
         return 0;
     }
 }
@@ -501,7 +501,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
     case 0x0c:	/* PLL Mode Control 0 */
         s->pll_mode = value & 0x77;
         if ((value & 3) == 0 || (value & 3) == 3)
-            fprintf(stderr, "%s: wrong PLL Control bits (%i)\n",
+            error_report("%s: wrong PLL Control bits (%i)",
                     __func__, value & 3);
         break;
 
@@ -541,7 +541,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
     case 0x28:	/* LCD Panel Configuration */
         s->lcd_config = value & 0xff;
         if (value & (1 << 7))
-            fprintf(stderr, "%s: data swap not supported!\n", __func__);
+            error_report("%s: data swap not supported!", __func__);
         break;
 
     case 0x2a:	/* LCD Horizontal Display Width */
@@ -585,7 +585,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
     case 0x40:	/* High-speed Serial Interface Tx Configuration Port 1 */
         s->hssi_config[1] = value;
         if (((value >> 4) & 3) == 3)
-            fprintf(stderr, "%s: Illegal active-data-links value\n",
+            error_report("%s: Illegal active-data-links value",
                             __func__);
         break;
     case 0x42:	/* High-speed Serial Interface Tx Mode */
@@ -641,7 +641,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->enable = value & 1;
         s->blank = (value >> 1) & 1;
         if (value & (1 << 4))
-            fprintf(stderr, "%s: Macrovision enable attempt!\n", __func__);
+            error_report("%s: Macrovision enable attempt!", __func__);
         break;
 
     case 0x6a:	/* Special Effects */
@@ -717,7 +717,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         s->iformat = value & 0xf;
         s->bpp = blizzard_iformat_bpp[s->iformat];
         if (!s->bpp)
-            fprintf(stderr, "%s: Illegal or unsupported input format %x\n",
+            error_report("%s: Illegal or unsupported input format %x",
                             __func__, s->iformat);
         break;
     case 0x8e:	/* Data Source Select */
@@ -729,7 +729,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
                                         s->iy[1] != s->oy[1])) ||
                         !((s->ix[1] - s->ix[0]) & (s->iy[1] - s->iy[0]) &
                           (s->ox[1] - s->ox[0]) & (s->oy[1] - s->oy[0]) & 1))
-            fprintf(stderr, "%s: Illegal input/output window positions\n",
+            error_report("%s: Illegal input/output window positions",
                             __func__);
 
         blizzard_transfer_setup(s);
@@ -783,8 +783,8 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
     case 0xe6:	/* Power-save */
         s->pm = value & 0x83;
         if (value & s->mode & 1)
-            fprintf(stderr, "%s: The display must be disabled before entering "
-                            "Standby Mode\n", __func__);
+            error_report("%s: The display must be disabled before entering "
+                         "Standby Mode", __func__);
         break;
     case 0xe8:	/* Non-display Period Control / Status */
         s->status = value & 0x1b;
@@ -815,7 +815,7 @@ static void blizzard_reg_write(void *opaque, uint8_t reg, uint16_t value)
         break;
 
     default:
-        fprintf(stderr, "%s: unknown register %02x\n", __func__, reg);
+        error_report("%s: unknown register %02x", __func__, reg);
         break;
     }
 }
diff --git a/hw/display/omap_dss.c b/hw/display/omap_dss.c
index 601f178fdd..52d6e753d3 100644
--- a/hw/display/omap_dss.c
+++ b/hw/display/omap_dss.c
@@ -406,10 +406,10 @@ static void omap_disc_write(void *opaque, hwaddr addr,
         s->lcd.enable = (value >> 0) & 1;
         if (value & (1 << 12))			/* OVERLAY_OPTIMIZATION */
             if (!((s->dispc.l[1].attr | s->dispc.l[2].attr) & 1)) {
-                fprintf(stderr, "%s: Overlay Optimization when no overlay "
-                        "region effectively exists leads to "
-                        "unpredictable behaviour!\n", __func__);
-            }
+                error_report("%s: Overlay Optimization when no overlay "
+                             "region effectively exists leads to "
+                             "unpredictable behaviour!", __func__);
+           }
         if (value & (1 << 6)) {				/* GODIGITAL */
             /* XXX: Shadowed fields are:
              * s->dispc.config
@@ -525,8 +525,8 @@ static void omap_disc_write(void *opaque, hwaddr addr,
     case 0x0a0:	/* DISPC_GFX_ATTRIBUTES */
         s->dispc.l[0].attr = value & 0x7ff;
         if (value & (3 << 9))
-            fprintf(stderr, "%s: Big-endian pixel format not supported\n",
-                            __func__);
+            error_report("%s: Big-endian pixel format not supported",
+                         __func__);
         s->dispc.l[0].enable = value & 1;
         s->dispc.l[0].bpp = (value >> 1) & 0xf;
         s->dispc.invalidate = 1;
@@ -617,7 +617,7 @@ static void omap_rfbi_transfer_start(struct omap_dss_s *s)
     if (s->rfbi.control & (1 << 1)) {				/* BYPASS */
         /* TODO: in non-Bypass mode we probably need to just assert the
          * DRQ and wait for DMA to write the pixels.  */
-        fprintf(stderr, "%s: Bypass mode unimplemented\n", __func__);
+        error_report("%s: Bypass mode unimplemented", __func__);
         return;
     }
 
diff --git a/hw/display/pl110.c b/hw/display/pl110.c
index 8c7dcc6f0a..b8b7903d36 100644
--- a/hw/display/pl110.c
+++ b/hw/display/pl110.c
@@ -174,7 +174,7 @@ static void pl110_update_display(void *opaque)
         dest_width = 4;
         break;
     default:
-        fprintf(stderr, "pl110: Bad color depth\n");
+        error_report("pl110: Bad color depth");
         exit(1);
     }
     if (s->cr & PL110_CR_BGR)
diff --git a/hw/display/pxa2xx_lcd.c b/hw/display/pxa2xx_lcd.c
index b83f80753a..ae3a365849 100644
--- a/hw/display/pxa2xx_lcd.c
+++ b/hw/display/pxa2xx_lcd.c
@@ -1050,7 +1050,7 @@ PXA2xxLCDState *pxa2xx_lcdc_init(MemoryRegion *sysmem,
         s->dest_width = 4;
         break;
     default:
-        fprintf(stderr, "%s: Bad color depth\n", __func__);
+        error_report("%s: Bad color depth", __func__);
         exit(1);
     }
 
diff --git a/hw/display/qxl-render.c b/hw/display/qxl-render.c
index e7ac4f8789..0cd07028a4 100644
--- a/hw/display/qxl-render.c
+++ b/hw/display/qxl-render.c
@@ -78,7 +78,7 @@ void qxl_render_resize(PCIQXLDevice *qxl)
         qxl->guest_primary.bits_pp = 32;
         break;
     default:
-        fprintf(stderr, "%s: unhandled format: %x\n", __func__,
+        error_report("%s: unhandled format: %x", __func__,
                 qxl->guest_primary.surface.format);
         qxl->guest_primary.bytes_pp = 4;
         qxl->guest_primary.bits_pp = 32;
@@ -247,7 +247,7 @@ static QEMUCursor *qxl_cursor(PCIQXLDevice *qxl, QXLCursor *cursor,
         }
         break;
     default:
-        fprintf(stderr, "%s: not implemented: type %d\n",
+        error_report("%s: not implemented: type %d",
                 __func__, cursor->header.type);
         goto fail;
     }
@@ -275,9 +275,8 @@ int qxl_render_cursor(PCIQXLDevice *qxl, QXLCommandExt *ext)
     }
 
     if (qxl->debug > 1 && cmd->type != QXL_CURSOR_MOVE) {
-        fprintf(stderr, "%s", __func__);
+        error_report("%s", __func__);
         qxl_log_cmd_cursor(qxl, cmd, ext->group_id);
-        fprintf(stderr, "\n");
     }
     switch (cmd->type) {
     case QXL_CURSOR_SET:
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index ae3677fd1e..0163a18bbb 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -875,7 +875,7 @@ static void interface_notify_update(QXLInstance *sin, uint32_t update_id)
      * Probably was at some earlier version that is prior to git start (2009),
      * and is still guest trigerrable.
      */
-    fprintf(stderr, "%s: deprecated\n", __func__);
+    error_report("%s: deprecated", __func__);
 }
 
 /* called from spice server thread context only */
@@ -905,7 +905,7 @@ static void interface_async_complete_io(PCIQXLDevice *qxl, QXLCookie *cookie)
 
     trace_qxl_interface_async_complete_io(qxl->id, current_async, cookie);
     if (!cookie) {
-        fprintf(stderr, "qxl: %s: error, cookie is NULL\n", __func__);
+        error_report("qxl: %s: error, cookie is NULL", __func__);
         return;
     }
     if (cookie && current_async != cookie->io) {
@@ -930,7 +930,7 @@ static void interface_async_complete_io(PCIQXLDevice *qxl, QXLCookie *cookie)
         qxl_spice_destroy_surface_wait_complete(qxl, cookie->u.surface_id);
         break;
     default:
-        fprintf(stderr, "qxl: %s: unexpected current_async %d\n", __func__,
+        error_report("qxl: %s: unexpected current_async %d", __func__,
                 current_async);
     }
     qxl_send_events(qxl, QXL_INTERRUPT_IO_CMD);
@@ -998,7 +998,7 @@ static void interface_async_complete(QXLInstance *sin, uint64_t cookie_token)
     case QXL_COOKIE_TYPE_POST_LOAD_MONITORS_CONFIG:
         break;
     default:
-        fprintf(stderr, "qxl: %s: unexpected cookie type %d\n",
+        error_report("qxl: %s: unexpected cookie type %d",
                 __func__, cookie->type);
         g_free(cookie);
     }
@@ -1875,7 +1875,7 @@ static void qxl_send_events(PCIQXLDevice *d, uint32_t events)
     trace_qxl_send_events(d->id, events);
     if (!qemu_spice_display_is_running(&d->ssd)) {
         /* spice-server tracks guest running state and should not do this */
-        fprintf(stderr, "%s: spice-server bug: guest stopped, ignoring\n",
+        error_report("%s: spice-server bug: guest stopped, ignoring",
                 __func__);
         trace_qxl_send_events_vm_stopped(d->id, events);
         return;
diff --git a/hw/display/tc6393xb.c b/hw/display/tc6393xb.c
index 79f161740a..8b708a858b 100644
--- a/hw/display/tc6393xb.c
+++ b/hw/display/tc6393xb.c
@@ -159,7 +159,7 @@ void tc6393xb_gpio_out_set(TC6393xbState *s, int line,
                     qemu_irq handler)
 {
     if (line >= TC6393XB_GPIOS) {
-        fprintf(stderr, "TC6393xb: no GPIO pin %d\n", line);
+        error_report("TC6393xb: no GPIO pin %d", line);
         return;
     }
 
@@ -190,7 +190,7 @@ static void tc6393xb_l3v(void *opaque, int line, int level)
 {
     TC6393xbState *s = opaque;
     s->blank = !level;
-    fprintf(stderr, "L3V: %d\n", level);
+    error_report("L3V: %d", level);
 }
 
 static void tc6393xb_sub_irq(void *opaque, int line, int level) {
@@ -257,7 +257,7 @@ static uint32_t tc6393xb_scr_readb(TC6393xbState *s, hwaddr addr)
         SCR_REG_B(CONFIG);
         SCR_REG_B(DEBUG);
     }
-    fprintf(stderr, "tc6393xb_scr: unhandled read at %08x\n", (uint32_t) addr);
+    error_report("tc6393xb_scr: unhandled read at %08x", (uint32_t) addr);
     return 0;
 }
 #undef SCR_REG_B
@@ -318,8 +318,8 @@ static void tc6393xb_scr_writeb(TC6393xbState *s, hwaddr addr, uint32_t value)
         SCR_REG_B(CONFIG);
         SCR_REG_B(DEBUG);
     }
-    fprintf(stderr, "tc6393xb_scr: unhandled write at %08x: %02x\n",
-					(uint32_t) addr, value & 0xff);
+    error_report("tc6393xb_scr: unhandled write at %08x: %02x",
+                 (uint32_t) addr, value & 0xff);
 }
 #undef SCR_REG_B
 #undef SCR_REG_W
@@ -341,7 +341,7 @@ static uint32_t tc6393xb_nand_cfg_readb(TC6393xbState *s, hwaddr addr) {
         case NAND_CFG_BASE + 3:
             return s->nand_phys >> (addr - NAND_CFG_BASE);
     }
-    fprintf(stderr, "tc6393xb_nand_cfg: unhandled read at %08x\n", (uint32_t) addr);
+    error_report("tc6393xb_nand_cfg: unhandled read at %08x", (uint32_t) addr);
     return 0;
 }
 static void tc6393xb_nand_cfg_writeb(TC6393xbState *s, hwaddr addr, uint32_t value) {
@@ -357,7 +357,7 @@ static void tc6393xb_nand_cfg_writeb(TC6393xbState *s, hwaddr addr, uint32_t val
             s->nand_phys |= (value & 0xff) << ((addr - NAND_CFG_BASE) * 8);
             return;
     }
-    fprintf(stderr, "tc6393xb_nand_cfg: unhandled write at %08x: %02x\n",
+    error_report("tc6393xb_nand_cfg: unhandled write at %08x: %02x",
 					(uint32_t) addr, value & 0xff);
 }
 
@@ -377,12 +377,14 @@ static uint32_t tc6393xb_nand_readb(TC6393xbState *s, hwaddr addr) {
         case NAND_IMR:
             return s->nand.imr;
     }
-    fprintf(stderr, "tc6393xb_nand: unhandled read at %08x\n", (uint32_t) addr);
+    error_report("tc6393xb_nand: unhandled read at %08x", (uint32_t) addr);
     return 0;
 }
-static void tc6393xb_nand_writeb(TC6393xbState *s, hwaddr addr, uint32_t value) {
-//    fprintf(stderr, "tc6393xb_nand: write at %08x: %02x\n",
-//					(uint32_t) addr, value & 0xff);
+static void tc6393xb_nand_writeb(TC6393xbState *s, hwaddr addr, uint32_t value)
+{
+    /* error_report("tc6393xb_nand: write at %08x: %02x",
+     *              (uint32_t) addr, value & 0xff);
+     */
     switch (addr) {
         case NAND_DATA + 0:
         case NAND_DATA + 1:
@@ -420,7 +422,7 @@ static void tc6393xb_nand_writeb(TC6393xbState *s, hwaddr addr, uint32_t value)
             tc6393xb_nand_irq(s);
             return;
     }
-    fprintf(stderr, "tc6393xb_nand: unhandled write at %08x: %02x\n",
+    error_report("tc6393xb_nand: unhandled write at %08x: %02x",
 					(uint32_t) addr, value & 0xff);
 }
 
@@ -522,13 +524,15 @@ static uint64_t tc6393xb_readb(void *opaque, hwaddr addr,
     };
 
     if ((addr &~0xff) == s->nand_phys && s->nand_enable) {
-//        return tc6393xb_nand_readb(s, addr & 0xff);
+        /* return tc6393xb_nand_readb(s, addr & 0xff); */
         uint8_t d = tc6393xb_nand_readb(s, addr & 0xff);
-//        fprintf(stderr, "tc6393xb_nand: read at %08x: %02hhx\n", (uint32_t) addr, d);
+        /* error_report("tc6393xb_nand: read at %08x: %02hhx",
+         *              (uint32_t) addr, d);
+         */
         return d;
     }
 
-//    fprintf(stderr, "tc6393xb: unhandled read at %08x\n", (uint32_t) addr);
+    /* error_report("tc6393xb: unhandled read at %08x", (uint32_t) addr); */
     return 0;
 }
 
@@ -548,7 +552,7 @@ static void tc6393xb_writeb(void *opaque, hwaddr addr,
     if ((addr &~0xff) == s->nand_phys && s->nand_enable)
         tc6393xb_nand_writeb(s, addr & 0xff, value);
     else
-        fprintf(stderr, "tc6393xb: unhandled write at %08x: %02x\n",
+        error_report("tc6393xb: unhandled write at %08x: %02x",
                 (uint32_t) addr, (int)value & 0xff);
 }
 
diff --git a/hw/display/virtio-gpu-3d.c b/hw/display/virtio-gpu-3d.c
index 8c106a662d..88bc1c84a6 100644
--- a/hw/display/virtio-gpu-3d.c
+++ b/hw/display/virtio-gpu-3d.c
@@ -473,7 +473,7 @@ void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
         return;
     }
     if (cmd->error) {
-        fprintf(stderr, "%s: ctrl 0x%x, error 0x%x\n", __func__,
+        error_report("%s: ctrl 0x%x, error 0x%x", __func__,
                 cmd->cmd_hdr.type, cmd->error);
         virtio_gpu_ctrl_response_nodata(g, cmd, cmd->error);
         return;
@@ -556,7 +556,7 @@ static void virtio_gpu_print_stats(void *opaque)
     VirtIOGPU *g = opaque;
 
     if (g->stats.requests) {
-        fprintf(stderr, "stats: vq req %4d, %3d -- 3D %4d (%5d)\n",
+        error_report("stats: vq req %4d, %3d -- 3D %4d (%5d)",
                 g->stats.requests,
                 g->stats.max_inflight,
                 g->stats.req_3d,
diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c
index 4a64b41259..44d425e1f6 100644
--- a/hw/display/vmware_vga.c
+++ b/hw/display/vmware_vga.c
@@ -293,45 +293,45 @@ static inline bool vmsvga_verify_rect(DisplaySurface *surface,
                                       int x, int y, int w, int h)
 {
     if (x < 0) {
-        fprintf(stderr, "%s: x was < 0 (%d)\n", name, x);
+        error_report("%s: x was < 0 (%d)", name, x);
         return false;
     }
     if (x > SVGA_MAX_WIDTH) {
-        fprintf(stderr, "%s: x was > %d (%d)\n", name, SVGA_MAX_WIDTH, x);
+        error_report("%s: x was > %d (%d)", name, SVGA_MAX_WIDTH, x);
         return false;
     }
     if (w < 0) {
-        fprintf(stderr, "%s: w was < 0 (%d)\n", name, w);
+        error_report("%s: w was < 0 (%d)", name, w);
         return false;
     }
     if (w > SVGA_MAX_WIDTH) {
-        fprintf(stderr, "%s: w was > %d (%d)\n", name, SVGA_MAX_WIDTH, w);
+        error_report("%s: w was > %d (%d)", name, SVGA_MAX_WIDTH, w);
         return false;
     }
     if (x + w > surface_width(surface)) {
-        fprintf(stderr, "%s: width was > %d (x: %d, w: %d)\n",
+        error_report("%s: width was > %d (x: %d, w: %d)",
                 name, surface_width(surface), x, w);
         return false;
     }
 
     if (y < 0) {
-        fprintf(stderr, "%s: y was < 0 (%d)\n", name, y);
+        error_report("%s: y was < 0 (%d)", name, y);
         return false;
     }
     if (y > SVGA_MAX_HEIGHT) {
-        fprintf(stderr, "%s: y was > %d (%d)\n", name, SVGA_MAX_HEIGHT, y);
+        error_report("%s: y was > %d (%d)", name, SVGA_MAX_HEIGHT, y);
         return false;
     }
     if (h < 0) {
-        fprintf(stderr, "%s: h was < 0 (%d)\n", name, h);
+        error_report("%s: h was < 0 (%d)", name, h);
         return false;
     }
     if (h > SVGA_MAX_HEIGHT) {
-        fprintf(stderr, "%s: h was > %d (%d)\n", name, SVGA_MAX_HEIGHT, h);
+        error_report("%s: h was > %d (%d)", name, SVGA_MAX_HEIGHT, h);
         return false;
     }
     if (y + h > surface_height(surface)) {
-        fprintf(stderr, "%s: update height > %d (y: %d, h: %d)\n",
+        error_report("%s: update height > %d (y: %d, h: %d)",
                 name, surface_height(surface), y, h);
         return false;
     }
@@ -529,7 +529,7 @@ static inline void vmsvga_cursor_define(struct vmsvga_state_s *s,
 #endif
         break;
     default:
-        fprintf(stderr, "%s: unhandled bpp %d, using fallback cursor\n",
+        error_report("%s: unhandled bpp %d, using fallback cursor",
                 __func__, c->bpp);
         cursor_put(qc);
         qc = cursor_builtin_left_ptr();
diff --git a/hw/dma/omap_dma.c b/hw/dma/omap_dma.c
index abd18c67ea..5d7fe06d98 100644
--- a/hw/dma/omap_dma.c
+++ b/hw/dma/omap_dma.c
@@ -18,6 +18,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "qemu/timer.h"
 #include "hw/arm/omap.h"
@@ -1898,13 +1899,13 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
             omap_dma_reset(s->dma);
         s->ocp = value & 0x3321;
         if (((s->ocp >> 12) & 3) == 3)				/* MIDLEMODE */
-            fprintf(stderr, "%s: invalid DMA power mode\n", __func__);
+            error_report("%s: invalid DMA power mode", __func__);
         return;
 
     case 0x78:	/* DMA4_GCR */
         s->gcr = value & 0x00ff00ff;
 	if ((value & 0xff) == 0x00)		/* MAX_CHANNEL_FIFO_DEPTH */
-            fprintf(stderr, "%s: wrong FIFO depth in GCR\n", __func__);
+            error_report("%s: wrong FIFO depth in GCR", __func__);
         return;
 
     case 0x80 ... 0xfff:
@@ -1934,8 +1935,8 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->buf_disable = (value >> 25) & 1;
         ch->src_sync = (value >> 24) & 1;	/* XXX For CamDMA must be 1 */
         if (ch->buf_disable && !ch->src_sync)
-            fprintf(stderr, "%s: Buffering disable is not allowed in "
-                            "destination synchronised mode\n", __func__);
+            error_report("%s: Buffering disable is not allowed in "
+                         "destination synchronised mode", __func__);
         ch->prefetch = (value >> 23) & 1;
         ch->bs = (value >> 18) & 1;
         ch->transparent_copy = (value >> 17) & 1;
@@ -1946,8 +1947,8 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->priority = (value & 0x0040) >> 6;
         ch->fs = (value & 0x0020) >> 5;
         if (ch->fs && ch->bs && ch->mode[0] && ch->mode[1])
-            fprintf(stderr, "%s: For a packet transfer at least one port "
-                            "must be constant-addressed\n", __func__);
+            error_report("%s: For a packet transfer at least one port "
+                         "must be constant-addressed", __func__);
         ch->sync = (value & 0x001f) | ((value >> 14) & 0x0060);
         /* XXX must be 0x01 for CamDMA */
 
@@ -1977,8 +1978,8 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->endian[1] =(value >> 19) & 1;
         ch->endian_lock[1] =(value >> 18) & 1;
         if (ch->endian[0] != ch->endian[1])
-            fprintf(stderr, "%s: DMA endianness conversion enable attempt\n",
-                            __func__);
+            error_report("%s: DMA endianness conversion enable attempt",
+                          __func__);
         ch->write_mode = (value >> 16) & 3;
         ch->burst[1] = (value & 0xc000) >> 14;
         ch->pack[1] = (value & 0x2000) >> 13;
@@ -1986,12 +1987,13 @@ static void omap_dma4_write(void *opaque, hwaddr addr,
         ch->burst[0] = (value & 0x0180) >> 7;
         ch->pack[0] = (value & 0x0040) >> 6;
         ch->translate[0] = (value & 0x003c) >> 2;
-        if (ch->translate[0] | ch->translate[1])
-            fprintf(stderr, "%s: bad MReqAddressTranslate sideband signal\n",
-                            __func__);
+        if (ch->translate[0] | ch->translate[1]) {
+            error_report("%s: bad MReqAddressTranslate sideband signal",
+                         __func__);
+        }
         ch->data_type = 1 << (value & 3);
         if ((value & 3) == 3) {
-            printf("%s: bad data_type for DMA channel\n", __func__);
+            error_report("%s: bad data_type for DMA channel", __func__);
             ch->data_type >>= 1;
         }
         break;
diff --git a/hw/dma/soc_dma.c b/hw/dma/soc_dma.c
index 9bb499bf9c..7339a3ec95 100644
--- a/hw/dma/soc_dma.c
+++ b/hw/dma/soc_dma.c
@@ -18,6 +18,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "qemu/timer.h"
 #include "hw/arm/soc_dma.h"
@@ -270,11 +271,11 @@ void soc_dma_port_add_fifo(struct soc_dma_s *soc, hwaddr virt_base,
         if (entry->type == soc_dma_port_mem) {
             if (entry->addr <= virt_base &&
                             entry->addr + entry->u.mem.size > virt_base) {
-                fprintf(stderr, "%s: FIFO at %"PRIx64
-                                " collides with RAM region at %"PRIx64
-                                "-%"PRIx64 "\n", __func__,
-                                virt_base, entry->addr,
-                                (entry->addr + entry->u.mem.size));
+                error_report("%s: FIFO at %"PRIx64
+                             " collides with RAM region at %"PRIx64
+                             "-%"PRIx64 "", __func__,
+                             virt_base, entry->addr,
+                             (entry->addr + entry->u.mem.size));
                 exit(-1);
             }
 
@@ -284,9 +285,9 @@ void soc_dma_port_add_fifo(struct soc_dma_s *soc, hwaddr virt_base,
             while (entry < dma->memmap + dma->memmap_size &&
                             entry->addr <= virt_base) {
                 if (entry->addr == virt_base && entry->u.fifo.out == out) {
-                    fprintf(stderr, "%s: FIFO at %"PRIx64
-                                    " collides FIFO at %"PRIx64 "\n",
-                                    __func__, virt_base, entry->addr);
+                    error_report("%s: FIFO at %"PRIx64
+                                 " collides FIFO at %"PRIx64 "",
+                                 __func__, virt_base, entry->addr);
                     exit(-1);
                 }
 
@@ -321,11 +322,11 @@ void soc_dma_port_add_mem(struct soc_dma_s *soc, uint8_t *phys_base,
             if ((entry->addr >= virt_base && entry->addr < virt_base + size) ||
                             (entry->addr <= virt_base &&
                              entry->addr + entry->u.mem.size > virt_base)) {
-                fprintf(stderr, "%s: RAM at %"PRIx64 "-%"PRIx64
-                                " collides with RAM region at %"PRIx64
-                                "-%"PRIx64 "\n", __func__,
-                                virt_base, virt_base + size,
-                                entry->addr, entry->addr + entry->u.mem.size);
+                error_report("%s: RAM at %"PRIx64 "-%"PRIx64
+                             " collides with RAM region at %"PRIx64
+                             "-%"PRIx64 "", __func__,
+                             virt_base, virt_base + size,
+                             entry->addr, entry->addr + entry->u.mem.size);
                 exit(-1);
             }
 
@@ -334,11 +335,11 @@ void soc_dma_port_add_mem(struct soc_dma_s *soc, uint8_t *phys_base,
         } else {
             if (entry->addr >= virt_base &&
                             entry->addr < virt_base + size) {
-                fprintf(stderr, "%s: RAM at %"PRIx64 "-%"PRIx64
-                                " collides with FIFO at %"PRIx64
-                                "\n", __func__,
-                                virt_base, virt_base + size,
-                                entry->addr);
+                error_report("%s: RAM at %"PRIx64 "-%"PRIx64
+                             " collides with FIFO at %"PRIx64
+                             "", __func__,
+                             virt_base, virt_base + size,
+                             entry->addr);
                 exit(-1);
             }
 
diff --git a/hw/gpio/omap_gpio.c b/hw/gpio/omap_gpio.c
index 08472193b5..57aa2e54f5 100644
--- a/hw/gpio/omap_gpio.c
+++ b/hw/gpio/omap_gpio.c
@@ -399,7 +399,7 @@ static void omap2_gpio_module_write(void *opaque, hwaddr addr,
 
     case 0x10:	/* GPIO_SYSCONFIG */
         if (((value >> 3) & 3) == 3)
-            fprintf(stderr, "%s: bad IDLEMODE value\n", __func__);
+            error_report("%s: bad IDLEMODE value", __func__);
         if (value & 2)
             omap2_gpio_module_reset(s);
         s->config[0] = value & 0x1d;
diff --git a/hw/i2c/omap_i2c.c b/hw/i2c/omap_i2c.c
index 26e3e5ebf6..c89664f342 100644
--- a/hw/i2c/omap_i2c.c
+++ b/hw/i2c/omap_i2c.c
@@ -340,13 +340,13 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
             break;
         }
         if ((value & (1 << 15)) && !(value & (1 << 10))) {	/* MST */
-            fprintf(stderr, "%s: I^2C slave mode not supported\n",
-                            __func__);
+            error_report("%s: I^2C slave mode not supported",
+                         __func__);
             break;
         }
         if ((value & (1 << 15)) && value & (1 << 8)) {		/* XA */
-            fprintf(stderr, "%s: 10-bit addressing mode not supported\n",
-                            __func__);
+            error_report("%s: 10-bit addressing mode not supported",
+                         __func__);
             break;
         }
         if ((value & (1 << 15)) && value & (1 << 0)) {		/* STT */
@@ -393,7 +393,7 @@ static void omap_i2c_write(void *opaque, hwaddr addr,
                 omap_i2c_interrupts_update(s);
             }
         if (value & (1 << 15))					/* ST_EN */
-            fprintf(stderr, "%s: System Test not supported\n", __func__);
+            error_report("%s: System Test not supported", __func__);
         break;
 
     default:
diff --git a/hw/i386/kvm/apic.c b/hw/i386/kvm/apic.c
index 1df6d26816..e90a1b9b3b 100644
--- a/hw/i386/kvm/apic.c
+++ b/hw/i386/kvm/apic.c
@@ -10,6 +10,7 @@
  * See the COPYING file in the top-level directory.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/i386/apic_internal.h"
@@ -128,7 +129,7 @@ static void kvm_apic_vapic_base_update(APICCommonState *s)
 
     ret = kvm_vcpu_ioctl(CPU(s->cpu), KVM_SET_VAPIC_ADDR, &vapid_addr);
     if (ret < 0) {
-        fprintf(stderr, "KVM: setting VAPIC address failed (%s)\n",
+        error_report("KVM: setting VAPIC address failed (%s)",
                 strerror(-ret));
         abort();
     }
@@ -145,7 +146,7 @@ static void kvm_apic_put(CPUState *cs, run_on_cpu_data data)
 
     ret = kvm_vcpu_ioctl(CPU(s->cpu), KVM_SET_LAPIC, &kapic);
     if (ret < 0) {
-        fprintf(stderr, "KVM_SET_LAPIC failed: %s\n", strerror(ret));
+        error_report("KVM_SET_LAPIC failed: %s", strerror(ret));
         abort();
     }
 }
@@ -167,7 +168,7 @@ static void do_inject_external_nmi(CPUState *cpu, run_on_cpu_data data)
     if (!(lvt & APIC_LVT_MASKED) && ((lvt >> 8) & 7) == APIC_DM_NMI) {
         ret = kvm_vcpu_ioctl(cpu, KVM_NMI);
         if (ret < 0) {
-            fprintf(stderr, "KVM: injection failed, NMI lost (%s)\n",
+            error_report("KVM: injection failed, NMI lost (%s)",
                     strerror(-ret));
         }
     }
@@ -184,7 +185,7 @@ static void kvm_send_msi(MSIMessage *msg)
 
     ret = kvm_irqchip_send_msi(kvm_state, *msg);
     if (ret < 0) {
-        fprintf(stderr, "KVM: injection failed, MSI lost (%s)\n",
+        error_report("KVM: injection failed, MSI lost (%s)",
                 strerror(-ret));
     }
 }
diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c
index 363d1b5743..e05c1587ce 100644
--- a/hw/i386/kvm/clock.c
+++ b/hw/i386/kvm/clock.c
@@ -14,6 +14,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "qemu/host-utils.h"
@@ -99,7 +100,7 @@ static void kvm_update_clock(KVMClockState *s)
 
     ret = kvm_vm_ioctl(kvm_state, KVM_GET_CLOCK, &data);
     if (ret < 0) {
-        fprintf(stderr, "KVM_GET_CLOCK failed: %s\n", strerror(ret));
+        error_report("KVM_GET_CLOCK failed: %s", strerror(ret));
                 abort();
     }
     s->clock = data.clock;
@@ -174,7 +175,7 @@ static void kvmclock_vm_state_change(void *opaque, int running,
         data.clock = s->clock;
         ret = kvm_vm_ioctl(kvm_state, KVM_SET_CLOCK, &data);
         if (ret < 0) {
-            fprintf(stderr, "KVM_SET_CLOCK failed: %s\n", strerror(ret));
+            error_report("KVM_SET_CLOCK failed: %s", strerror(ret));
             abort();
         }
 
@@ -185,7 +186,7 @@ static void kvmclock_vm_state_change(void *opaque, int running,
             ret = kvm_vcpu_ioctl(cpu, KVM_KVMCLOCK_CTRL, 0);
             if (ret) {
                 if (ret != -EINVAL) {
-                    fprintf(stderr, "%s: %s\n", __func__, strerror(-ret));
+                    error_report("%s: %s", __func__, strerror(-ret));
                 }
                 return;
             }
diff --git a/hw/i386/kvm/i8254.c b/hw/i386/kvm/i8254.c
index 521a58498a..27f24b1090 100644
--- a/hw/i386/kvm/i8254.c
+++ b/hw/i386/kvm/i8254.c
@@ -24,6 +24,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include <linux/kvm.h>
 #include "qapi/error.h"
 #include "qemu/timer.h"
@@ -101,7 +102,7 @@ static void kvm_pit_get(PITCommonState *pit)
     if (kvm_has_pit_state2()) {
         ret = kvm_vm_ioctl(kvm_state, KVM_GET_PIT2, &kpit);
         if (ret < 0) {
-            fprintf(stderr, "KVM_GET_PIT2 failed: %s\n", strerror(ret));
+            error_report("KVM_GET_PIT2 failed: %s", strerror(ret));
             abort();
         }
         pit->channels[0].irq_disabled = kpit.flags & KVM_PIT_FLAGS_HPET_LEGACY;
@@ -112,7 +113,7 @@ static void kvm_pit_get(PITCommonState *pit)
          */
         ret = kvm_vm_ioctl(kvm_state, KVM_GET_PIT, &kpit);
         if (ret < 0) {
-            fprintf(stderr, "KVM_GET_PIT failed: %s\n", strerror(ret));
+            error_report("KVM_GET_PIT failed: %s", strerror(ret));
             abort();
         }
     }
@@ -175,7 +176,7 @@ static void kvm_pit_put(PITCommonState *pit)
                        kvm_has_pit_state2() ? KVM_SET_PIT2 : KVM_SET_PIT,
                        &kpit);
     if (ret < 0) {
-        fprintf(stderr, "%s failed: %s\n",
+        error_report("%s failed: %s",
                 kvm_has_pit_state2() ? "KVM_SET_PIT2" : "KVM_SET_PIT",
                 strerror(ret));
         abort();
diff --git a/hw/i386/kvm/i8259.c b/hw/i386/kvm/i8259.c
index 11d1b726b6..770a934552 100644
--- a/hw/i386/kvm/i8259.c
+++ b/hw/i386/kvm/i8259.c
@@ -10,6 +10,7 @@
  * See the COPYING file in the top-level directory.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/isa/i8259_internal.h"
 #include "hw/i386/apic_internal.h"
 #include "sysemu/kvm.h"
@@ -39,7 +40,7 @@ static void kvm_pic_get(PICCommonState *s)
     chip.chip_id = s->master ? KVM_IRQCHIP_PIC_MASTER : KVM_IRQCHIP_PIC_SLAVE;
     ret = kvm_vm_ioctl(kvm_state, KVM_GET_IRQCHIP, &chip);
     if (ret < 0) {
-        fprintf(stderr, "KVM_GET_IRQCHIP failed: %s\n", strerror(ret));
+        error_report("KVM_GET_IRQCHIP failed: %s", strerror(ret));
         abort();
     }
 
@@ -92,7 +93,7 @@ static void kvm_pic_put(PICCommonState *s)
 
     ret = kvm_vm_ioctl(kvm_state, KVM_SET_IRQCHIP, &chip);
     if (ret < 0) {
-        fprintf(stderr, "KVM_SET_IRQCHIP failed: %s\n", strerror(ret));
+        error_report("KVM_SET_IRQCHIP failed: %s", strerror(ret));
         abort();
     }
 }
diff --git a/hw/i386/kvm/ioapic.c b/hw/i386/kvm/ioapic.c
index 98ca480792..a31bcd2658 100644
--- a/hw/i386/kvm/ioapic.c
+++ b/hw/i386/kvm/ioapic.c
@@ -11,6 +11,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "monitor/monitor.h"
 #include "hw/i386/pc.h"
 #include "hw/i386/ioapic_internal.h"
@@ -74,7 +75,7 @@ static void kvm_ioapic_get(IOAPICCommonState *s)
     chip.chip_id = KVM_IRQCHIP_IOAPIC;
     ret = kvm_vm_ioctl(kvm_state, KVM_GET_IRQCHIP, &chip);
     if (ret < 0) {
-        fprintf(stderr, "KVM_GET_IRQCHIP failed: %s\n", strerror(ret));
+        error_report("KVM_GET_IRQCHIP failed: %s", strerror(ret));
         abort();
     }
 
@@ -107,7 +108,7 @@ static void kvm_ioapic_put(IOAPICCommonState *s)
 
     ret = kvm_vm_ioctl(kvm_state, KVM_SET_IRQCHIP, &chip);
     if (ret < 0) {
-        fprintf(stderr, "KVM_GET_IRQCHIP failed: %s\n", strerror(ret));
+        error_report("KVM_GET_IRQCHIP failed: %s", strerror(ret));
         abort();
     }
 }
diff --git a/hw/i386/multiboot.c b/hw/i386/multiboot.c
index c7b70c91d5..d297a88f9d 100644
--- a/hw/i386/multiboot.c
+++ b/hw/i386/multiboot.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/hw.h"
@@ -184,7 +185,7 @@ int load_multiboot(FWCfgState *fw_cfg,
     memset(&mbs, 0, sizeof(mbs));
 
     if (flags & 0x00000004) { /* MULTIBOOT_HEADER_HAS_VBE */
-        fprintf(stderr, "qemu: multiboot knows VBE. we don't.\n");
+        error_report("qemu: multiboot knows VBE. we don't.");
     }
     if (!(flags & 0x00010000)) { /* MULTIBOOT_HEADER_HAS_ADDR */
         uint64_t elf_entry;
@@ -193,7 +194,7 @@ int load_multiboot(FWCfgState *fw_cfg,
         fclose(f);
 
         if (((struct elf64_hdr*)header)->e_machine == EM_X86_64) {
-            fprintf(stderr, "Cannot load x86-64 image, give a 32bit one.\n");
+            error_report("Cannot load x86-64 image, give a 32bit one.");
             exit(1);
         }
 
@@ -201,7 +202,7 @@ int load_multiboot(FWCfgState *fw_cfg,
                                &elf_low, &elf_high, 0, I386_ELF_MACHINE,
                                0, 0);
         if (kernel_size < 0) {
-            fprintf(stderr, "Error while loading elf kernel\n");
+            error_report("Error while loading elf kernel");
             exit(1);
         }
         mh_load_addr = elf_low;
@@ -210,7 +211,7 @@ int load_multiboot(FWCfgState *fw_cfg,
 
         mbs.mb_buf = g_malloc(mb_kernel_size);
         if (rom_copy(mbs.mb_buf, mh_load_addr, mb_kernel_size) != mb_kernel_size) {
-            fprintf(stderr, "Error while fetching elf kernel from rom\n");
+            error_report("Error while fetching elf kernel from rom");
             exit(1);
         }
 
@@ -224,7 +225,7 @@ int load_multiboot(FWCfgState *fw_cfg,
 
         mh_load_addr = ldl_p(header+i+16);
         if (mh_header_addr < mh_load_addr) {
-            fprintf(stderr, "invalid mh_load_addr address\n");
+            error_report("invalid mh_load_addr address");
             exit(1);
         }
 
@@ -234,19 +235,19 @@ int load_multiboot(FWCfgState *fw_cfg,
 
         if (mh_load_end_addr) {
             if (mh_bss_end_addr < mh_load_addr) {
-                fprintf(stderr, "invalid mh_bss_end_addr address\n");
+                error_report("invalid mh_bss_end_addr address");
                 exit(1);
             }
             mb_kernel_size = mh_bss_end_addr - mh_load_addr;
 
             if (mh_load_end_addr < mh_load_addr) {
-                fprintf(stderr, "invalid mh_load_end_addr address\n");
+                error_report("invalid mh_load_end_addr address");
                 exit(1);
             }
             mb_load_size = mh_load_end_addr - mh_load_addr;
         } else {
             if (kernel_file_size < mb_kernel_text_offset) {
-                fprintf(stderr, "invalid kernel_file_size\n");
+                error_report("invalid kernel_file_size");
                 exit(1);
             }
             mb_kernel_size = kernel_file_size - mb_kernel_text_offset;
@@ -269,7 +270,7 @@ int load_multiboot(FWCfgState *fw_cfg,
         mbs.mb_buf = g_malloc(mb_kernel_size);
         fseek(f, mb_kernel_text_offset, SEEK_SET);
         if (fread(mbs.mb_buf, 1, mb_load_size, f) != mb_load_size) {
-            fprintf(stderr, "fread() failed\n");
+            error_report("fread() failed");
             exit(1);
         }
         memset(mbs.mb_buf + mb_load_size, 0, mb_kernel_size - mb_load_size);
@@ -326,7 +327,7 @@ int load_multiboot(FWCfgState *fw_cfg,
             mb_debug("multiboot loading module: %s\n", tmpbuf);
             mb_mod_length = get_image_size(tmpbuf);
             if (mb_mod_length < 0) {
-                fprintf(stderr, "Failed to open file '%s'\n", tmpbuf);
+                error_report("Failed to open file '%s'", tmpbuf);
                 exit(1);
             }
 
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 05985d4927..ca25424c09 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -856,14 +856,14 @@ static void load_linux(PCMachineState *pcms,
     if (!f || !(kernel_size = get_file_size(f)) ||
         fread(header, 1, MIN(ARRAY_SIZE(header), kernel_size), f) !=
         MIN(ARRAY_SIZE(header), kernel_size)) {
-        fprintf(stderr, "qemu: could not load kernel '%s': %s\n",
+        error_report("qemu: could not load kernel '%s': %s",
                 kernel_filename, strerror(errno));
         exit(1);
     }
 
     /* kernel protocol version */
 #if 0
-    fprintf(stderr, "header magic: %#x\n", ldl_p(header+0x202));
+    error_report("header magic: %#x", ldl_p(header + 0x202));
 #endif
     if (ldl_p(header+0x202) == 0x53726448) {
         protocol = lduw_p(header+0x206);
@@ -960,13 +960,13 @@ static void load_linux(PCMachineState *pcms,
     /* load initrd */
     if (initrd_filename) {
         if (protocol < 0x200) {
-            fprintf(stderr, "qemu: linux kernel too old to load a ram disk\n");
+            error_report("qemu: linux kernel too old to load a ram disk");
             exit(1);
         }
 
         initrd_size = get_image_size(initrd_filename);
         if (initrd_size < 0) {
-            fprintf(stderr, "qemu: error reading initrd %s: %s\n",
+            error_report("qemu: error reading initrd %s: %s",
                     initrd_filename, strerror(errno));
             exit(1);
         }
@@ -991,7 +991,7 @@ static void load_linux(PCMachineState *pcms,
     }
     setup_size = (setup_size+1)*512;
     if (setup_size > kernel_size) {
-        fprintf(stderr, "qemu: invalid kernel header\n");
+        error_report("qemu: invalid kernel header");
         exit(1);
     }
     kernel_size -= setup_size;
@@ -1000,11 +1000,11 @@ static void load_linux(PCMachineState *pcms,
     kernel = g_malloc(kernel_size);
     fseek(f, 0, SEEK_SET);
     if (fread(setup, 1, setup_size, f) != setup_size) {
-        fprintf(stderr, "fread() failed\n");
+        error_report("fread() failed");
         exit(1);
     }
     if (fread(kernel, 1, kernel_size, f) != kernel_size) {
-        fprintf(stderr, "fread() failed\n");
+        error_report("fread() failed");
         exit(1);
     }
     fclose(f);
@@ -1012,13 +1012,13 @@ static void load_linux(PCMachineState *pcms,
     /* append dtb to kernel */
     if (dtb_filename) {
         if (protocol < 0x209) {
-            fprintf(stderr, "qemu: Linux kernel too old to load a dtb\n");
+            error_report("qemu: Linux kernel too old to load a dtb");
             exit(1);
         }
 
         dtb_size = get_image_size(dtb_filename);
         if (dtb_size <= 0) {
-            fprintf(stderr, "qemu: error reading dtb %s: %s\n",
+            error_report("qemu: error reading dtb %s: %s",
                     dtb_filename, strerror(errno));
             exit(1);
         }
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 9ff79b1fd9..1796db1e36 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -1090,7 +1090,7 @@ void igd_passthrough_isa_bridge_create(PCIBus *bus, uint16_t gpu_dev_id)
      * Note that vendor id is always PCI_VENDOR_ID_INTEL.
      */
     if (!bridge_dev) {
-        fprintf(stderr, "set igd-passthrough-isa-bridge failed!\n");
+        error_report("set igd-passthrough-isa-bridge failed!");
         return;
     }
     pci_config_set_device_id(bridge_dev->config, pch_dev_id);
diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
index 6b183747fc..b6c10a509f 100644
--- a/hw/i386/pc_sysfw.c
+++ b/hw/i386/pc_sysfw.c
@@ -201,7 +201,7 @@ static void old_pc_system_rom_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
     ret = rom_add_file_fixed(bios_name, (uint32_t)(-bios_size), -1);
     if (ret != 0) {
     bios_error:
-        fprintf(stderr, "qemu: could not load PC BIOS '%s'\n", bios_name);
+        error_report("qemu: could not load PC BIOS '%s'", bios_name);
         exit(1);
     }
     g_free(filename);
@@ -243,7 +243,8 @@ void pc_system_firmware_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
     if (kvm_enabled() && !kvm_readonly_mem_enabled()) {
         /* Older KVM cannot execute from device memory. So, flash memory
          * cannot be used unless the readonly memory kvm capability is present. */
-        fprintf(stderr, "qemu: pflash with kvm requires KVM readonly memory support\n");
+        error_report("qemu: pflash with kvm requires KVM readonly memory"
+                     " support");
         exit(1);
     }
 
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index d9ccd5d0d6..f8e3e0507b 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -246,9 +246,10 @@ void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, MemoryRegion *mr,
 
     if (runstate_check(RUN_STATE_INMIGRATE)) {
         /* RAM already populated in Xen */
-        fprintf(stderr, "%s: do not alloc "RAM_ADDR_FMT
-                " bytes of ram at "RAM_ADDR_FMT" when runstate is INMIGRATE\n",
-                __func__, size, ram_addr); 
+        error_report("%s: do not alloc "RAM_ADDR_FMT
+                     " bytes of ram at "RAM_ADDR_FMT" when runstate is "
+                     " INMIGRATE",
+                     __func__, size, ram_addr);
         return;
     }
 
@@ -444,8 +445,9 @@ static int xen_remove_from_physmap(XenIOState *state,
 
         rc = xen_xc_domain_add_to_physmap(xen_xc, xen_domid, XENMAPSPACE_gmfn, idx, gpfn);
         if (rc) {
-            fprintf(stderr, "add_to_physmap MFN %"PRI_xen_pfn" to PFN %"
-                    PRI_xen_pfn" failed: %d (errno: %d)\n", idx, gpfn, rc, errno);
+            error_report("add_to_physmap MFN %"PRI_xen_pfn" to PFN %"
+                         PRI_xen_pfn" failed: %d (errno: %d)", idx,
+                         gpfn, rc, errno);
             return -rc;
         }
     }
@@ -1090,11 +1092,11 @@ static void cpu_handle_ioreq(void *opaque)
         req->data = copy.data;
 
         if (req->state != STATE_IOREQ_INPROCESS) {
-            fprintf(stderr, "Badness in I/O request ... not in service?!: "
-                    "%x, ptr: %x, port: %"PRIx64", "
-                    "data: %"PRIx64", count: %u, size: %u, type: %u\n",
-                    req->state, req->data_is_ptr, req->addr,
-                    req->data, req->count, req->size, req->type);
+            error_report("Badness in I/O request ... not in service?!: "
+                         "%x, ptr: %x, port: %"PRIx64", "
+                         "data: %"PRIx64", count: %u, size: %u, type: %u",
+                         req->state, req->data_is_ptr, req->addr,
+                         req->data, req->count, req->size, req->type);
             destroy_hvm_domain(false);
             return;
         }
@@ -1397,16 +1399,16 @@ void destroy_hvm_domain(bool reboot)
 
     xc_handle = xc_interface_open(0, 0, 0);
     if (xc_handle == NULL) {
-        fprintf(stderr, "Cannot acquire xenctrl handle\n");
+        error_report("Cannot acquire xenctrl handle");
     } else {
         sts = xc_domain_shutdown(xc_handle, xen_domid,
                                  reboot ? SHUTDOWN_reboot : SHUTDOWN_poweroff);
         if (sts != 0) {
-            fprintf(stderr, "xc_domain_shutdown failed to issue %s, "
-                    "sts %d, %s\n", reboot ? "reboot" : "poweroff",
+            error_report("xc_domain_shutdown failed to issue %s, "
+                    "sts %d, %s", reboot ? "reboot" : "poweroff",
                     sts, strerror(errno));
         } else {
-            fprintf(stderr, "Issued domain %d %s\n", xen_domid,
+            error_report("Issued domain %d %s", xen_domid,
                     reboot ? "reboot" : "poweroff");
         }
         xc_interface_close(xc_handle);
@@ -1425,7 +1427,7 @@ void xen_shutdown_fatal_error(const char *fmt, ...)
     va_start(ap, fmt);
     vfprintf(stderr, fmt, ap);
     va_end(ap);
-    fprintf(stderr, "Will destroy the domain.\n");
+    error_report("Will destroy the domain.");
     /* destroy the domain */
     qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_ERROR);
 }
diff --git a/hw/i386/xen/xen-mapcache.c b/hw/i386/xen/xen-mapcache.c
index baab93b614..4062af0900 100644
--- a/hw/i386/xen/xen-mapcache.c
+++ b/hw/i386/xen/xen-mapcache.c
@@ -377,7 +377,7 @@ ram_addr_t xen_ram_addr_from_mapcache(void *ptr)
         }
     }
     if (!found) {
-        fprintf(stderr, "%s, could not find %p\n", __func__, ptr);
+        error_report("%s, could not find %p", __func__, ptr);
         QTAILQ_FOREACH(reventry, &mapcache->locked_entries, next) {
             DPRINTF("   "TARGET_FMT_plx" -> %p is present\n", reventry->paddr_index,
                     reventry->vaddr_req);
@@ -477,9 +477,9 @@ void xen_invalidate_map_cache(void)
         if (!reventry->dma) {
             continue;
         }
-        fprintf(stderr, "Locked DMA mapping while invalidating mapcache!"
-                " "TARGET_FMT_plx" -> %p is present\n",
-                reventry->paddr_index, reventry->vaddr_req);
+        error_report("Locked DMA mapping while invalidating mapcache!"
+                     " "TARGET_FMT_plx" -> %p is present",
+                     reventry->paddr_index, reventry->vaddr_req);
     }
 
     for (i = 0; i < mapcache->nr_buckets; i++) {
@@ -545,8 +545,8 @@ static uint8_t *xen_replace_cache_entry_unlocked(hwaddr old_phys_addr,
     address_index  = new_phys_addr >> MCACHE_BUCKET_SHIFT;
     address_offset = new_phys_addr & (MCACHE_BUCKET_SIZE - 1);
 
-    fprintf(stderr, "Replacing a dummy mapcache entry for "TARGET_FMT_plx \
-            " with "TARGET_FMT_plx"\n", old_phys_addr, new_phys_addr);
+    error_report("Replacing a dummy mapcache entry for "TARGET_FMT_plx \
+                 " with "TARGET_FMT_plx"", old_phys_addr, new_phys_addr);
 
     xen_remap_bucket(entry, entry->vaddr_base,
                      cache_size, address_index, false);
diff --git a/hw/i386/xen/xen_apic.c b/hw/i386/xen/xen_apic.c
index 55769eba7e..9e19ef94a2 100644
--- a/hw/i386/xen/xen_apic.c
+++ b/hw/i386/xen/xen_apic.c
@@ -24,7 +24,7 @@ static void xen_apic_mem_write(void *opaque, hwaddr addr,
                                uint64_t data, unsigned size)
 {
     if (size != sizeof(uint32_t)) {
-        fprintf(stderr, "Xen: APIC write data size = %d, invalid\n", size);
+        error_report("Xen: APIC write data size = %d, invalid", size);
         return;
     }
 
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index c25e293d88..2ed015285a 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -410,8 +410,8 @@ static void ahci_mem_write(void *opaque, hwaddr addr,
 
     /* Only aligned reads are allowed on AHCI */
     if (addr & 3) {
-        fprintf(stderr, "ahci: Mis-aligned write to addr 0x"
-                TARGET_FMT_plx "\n", addr);
+        error_report("ahci: Mis-aligned write to addr 0x"
+                     TARGET_FMT_plx "", addr);
         return;
     }
 
@@ -1053,7 +1053,7 @@ static void process_ncq_command(AHCIState *s, int port, uint8_t *cmd_fis,
     g_assert(is_ncq(ncq_fis->command));
     if (ncq_tfs->used) {
         /* error - already in use */
-        fprintf(stderr, "%s: tag %d already used\n", __func__, tag);
+        error_report("%s: tag %d already used", __func__, tag);
         return;
     }
 
diff --git a/hw/ide/core.c b/hw/ide/core.c
index d63eb4a72e..d46936193a 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -2762,7 +2762,7 @@ static void ide_drive_pio_pre_save(void *opaque)
 
     idx = transfer_end_table_idx(s->end_transfer_func);
     if (idx == -1) {
-        fprintf(stderr, "%s: invalid end_transfer_func for DRQ_STAT\n",
+        error_report("%s: invalid end_transfer_func for DRQ_STAT",
                         __func__);
         s->end_transfer_fn_idx = 2;
     } else {
diff --git a/hw/input/lm832x.c b/hw/input/lm832x.c
index d39953126b..caeeda47f2 100644
--- a/hw/input/lm832x.c
+++ b/hw/input/lm832x.c
@@ -239,7 +239,7 @@ static uint8_t lm_kbd_read(LM823KbdState *s, int reg, int byte)
 
     default:
         lm_kbd_error(s, ERR_CMDUNK);
-        fprintf(stderr, "%s: unknown command %02x\n", __func__, reg);
+        error_report("%s: unknown command %02x", __func__, reg);
         return 0x00;
     }
 
@@ -330,7 +330,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value)
         s->reg = LM832x_GENERAL_ERROR;
         if ((value & 3) && (value & 3) != 3) {
             lm_kbd_error(s, ERR_BADPAR);
-            fprintf(stderr, "%s: invalid clock setting in RCPWM\n",
+            error_report("%s: invalid clock setting in RCPWM",
                             __func__);
         }
         /* TODO: Validate that the command is only issued once */
@@ -378,7 +378,7 @@ static void lm_kbd_write(LM823KbdState *s, int reg, int byte, uint8_t value)
         break;
     default:
         lm_kbd_error(s, ERR_CMDUNK);
-        fprintf(stderr, "%s: unknown command %02x\n", __func__, reg);
+        error_report("%s: unknown command %02x", __func__, reg);
         break;
     }
 }
diff --git a/hw/input/pckbd.c b/hw/input/pckbd.c
index c479f827b6..ff4f03e4c3 100644
--- a/hw/input/pckbd.c
+++ b/hw/input/pckbd.c
@@ -22,6 +22,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/isa/isa.h"
 #include "hw/i386/pc.h"
@@ -307,7 +308,7 @@ static void kbd_write_command(void *opaque, hwaddr addr,
         /* ignore that */
         break;
     default:
-        fprintf(stderr, "qemu: unsupported keyboard cmd=0x%02x\n", (int)val);
+        error_report("qemu: unsupported keyboard cmd=0x%02x", (int)val);
         break;
     }
 }
diff --git a/hw/input/pxa2xx_keypad.c b/hw/input/pxa2xx_keypad.c
index 93db9ed25b..0a594c30fc 100644
--- a/hw/input/pxa2xx_keypad.c
+++ b/hw/input/pxa2xx_keypad.c
@@ -326,7 +326,7 @@ void pxa27x_register_keypad(PXA2xxKeyPadState *kp,
                             const struct keymap *map, int size)
 {
     if(!map || size < 0x80) {
-        fprintf(stderr, "%s - No PXA keypad map defined\n", __func__);
+        error_report("%s - No PXA keypad map defined", __func__);
         exit(-1);
     }
 
diff --git a/hw/input/tsc2005.c b/hw/input/tsc2005.c
index 7990954b6c..f5057e8eeb 100644
--- a/hw/input/tsc2005.c
+++ b/hw/input/tsc2005.c
@@ -200,17 +200,17 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data)
         s->host_mode = (data >> 15) != 0;
         if (s->enabled != !(data & 0x4000)) {
             s->enabled = !(data & 0x4000);
-            fprintf(stderr, "%s: touchscreen sense %sabled\n",
-                            __func__, s->enabled ? "en" : "dis");
+            error_report("%s: touchscreen sense %sabled",
+                         __func__, s->enabled ? "en" : "dis");
             if (s->busy && !s->enabled)
                 timer_del(s->timer);
             s->busy = s->busy && s->enabled;
         }
         s->nextprecision = (data >> 13) & 1;
         s->timing[0] = data & 0x1fff;
-        if ((s->timing[0] >> 11) == 3)
-            fprintf(stderr, "%s: illegal conversion clock setting\n",
-                            __func__);
+        if ((s->timing[0] >> 11) == 3) {
+            error_report("%s: illegal conversion clock setting", __func__);
+        }
         break;
     case 0xd:	/* CFR1 */
         s->timing[1] = data & 0xf07;
@@ -221,8 +221,7 @@ static void tsc2005_write(TSC2005State *s, int reg, uint16_t data)
         break;
 
     default:
-        fprintf(stderr, "%s: write into read-only register %x\n",
-                        __func__, reg);
+        error_report("%s: write into read-only register %x", __func__, reg);
     }
 }
 
@@ -337,8 +336,8 @@ static uint8_t tsc2005_txrx_word(void *opaque, uint8_t value)
                 s->nextprecision = (value >> 2) & 1;
                 if (s->enabled != !(value & 1)) {
                     s->enabled = !(value & 1);
-                    fprintf(stderr, "%s: touchscreen sense %sabled\n",
-                                    __func__, s->enabled ? "en" : "dis");
+                    error_report("%s: touchscreen sense %sabled",
+                                 __func__, s->enabled ? "en" : "dis");
                     if (s->busy && !s->enabled)
                         timer_del(s->timer);
                     s->busy = s->busy && s->enabled;
diff --git a/hw/input/tsc210x.c b/hw/input/tsc210x.c
index d4b19c1825..c685221842 100644
--- a/hw/input/tsc210x.c
+++ b/hw/input/tsc210x.c
@@ -396,8 +396,8 @@ static uint16_t tsc2102_data_register_read(TSC210xState *s, int reg)
 
     default:
 #ifdef TSC_VERBOSE
-        fprintf(stderr, "tsc2102_data_register_read: "
-                        "no such register: 0x%02x\n", reg);
+        error_report("tsc2102_data_register_read: "
+                     "no such register: 0x%02x", reg);
 #endif
         return 0xffff;
     }
@@ -447,8 +447,8 @@ static uint16_t tsc2102_control_register_read(
     default:
     bad_reg:
 #ifdef TSC_VERBOSE
-        fprintf(stderr, "tsc2102_control_register_read: "
-                        "no such register: 0x%02x\n", reg);
+        error_report("tsc2102_control_register_read: "
+                     "no such register: 0x%02x", reg);
 #endif
         return 0xffff;
     }
@@ -528,8 +528,8 @@ static uint16_t tsc2102_audio_register_read(TSC210xState *s, int reg)
 
     default:
 #ifdef TSC_VERBOSE
-        fprintf(stderr, "tsc2102_audio_register_read: "
-                        "no such register: 0x%02x\n", reg);
+        error_report("tsc2102_audio_register_read: "
+                     "no such register: 0x%02x", reg);
 #endif
         return 0xffff;
     }
@@ -553,8 +553,8 @@ static void tsc2102_data_register_write(
 
     default:
 #ifdef TSC_VERBOSE
-        fprintf(stderr, "tsc2102_data_register_write: "
-                        "no such register: 0x%02x\n", reg);
+        error_report("tsc2102_data_register_write: "
+                     "no such register: 0x%02x", reg);
 #endif
     }
 }
@@ -606,8 +606,8 @@ static void tsc2102_control_register_write(
             tsc210x_reset(s);
 #ifdef TSC_VERBOSE
         } else {
-            fprintf(stderr, "tsc2102_control_register_write: "
-                            "wrong value written into RESET\n");
+            error_report("tsc2102_control_register_write: "
+                         "wrong value written into RESET");
 #endif
         }
         return;
@@ -616,8 +616,8 @@ static void tsc2102_control_register_write(
         s->timing = value & 0x3f;
 #ifdef TSC_VERBOSE
         if (value & ~0x3f)
-            fprintf(stderr, "tsc2102_control_register_write: "
-                            "wrong value written into CONFIG\n");
+            error_report("tsc2102_control_register_write: "
+                         "wrong value written into CONFIG");
 #endif
         return;
 
@@ -637,8 +637,8 @@ static void tsc2102_control_register_write(
     default:
     bad_reg:
 #ifdef TSC_VERBOSE
-        fprintf(stderr, "tsc2102_control_register_write: "
-                        "no such register: 0x%02x\n", reg);
+        error_report("tsc2102_control_register_write: "
+                     "no such register: 0x%02x", reg);
 #endif
     }
 }
@@ -651,8 +651,8 @@ static void tsc2102_audio_register_write(
         s->audio_ctrl1 = value & 0x0f3f;
 #ifdef TSC_VERBOSE
         if ((value & ~0x0f3f) || ((value & 7) != ((value >> 3) & 7)))
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into Audio 1\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into Audio 1");
 #endif
         tsc2102_audio_rate_update(s);
         tsc2102_audio_output_update(s);
@@ -661,8 +661,8 @@ static void tsc2102_audio_register_write(
     case 0x01:
 #ifdef TSC_VERBOSE
         if (value != 0xff00)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into reg 0x01\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into reg 0x01");
 #endif
         return;
 
@@ -674,8 +674,8 @@ static void tsc2102_audio_register_write(
     case 0x03:
 #ifdef TSC_VERBOSE
         if (value != 0x8b00)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into reg 0x03\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into reg 0x03");
 #endif
         return;
 
@@ -683,8 +683,8 @@ static void tsc2102_audio_register_write(
         s->audio_ctrl2 = value & 0xf7f2;
 #ifdef TSC_VERBOSE
         if (value & ~0xf7fd)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into Audio 2\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into Audio 2");
 #endif
         return;
 
@@ -695,8 +695,8 @@ static void tsc2102_audio_register_write(
         s->dac_power = value & 0x9543;
 #ifdef TSC_VERBOSE
         if ((value & ~0x9543) != 0x2aa0)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into Power\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into Power");
 #endif
         tsc2102_audio_rate_update(s);
         tsc2102_audio_output_update(s);
@@ -707,8 +707,8 @@ static void tsc2102_audio_register_write(
         s->audio_ctrl3 |= value & 0xf800;
 #ifdef TSC_VERBOSE
         if (value & ~0xf8c7)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into Audio 3\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into Audio 3");
 #endif
         tsc2102_audio_output_update(s);
         return;
@@ -740,8 +740,8 @@ static void tsc2102_audio_register_write(
         s->pll[0] = value & 0xfffc;
 #ifdef TSC_VERBOSE
         if (value & ~0xfffc)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into PLL 1\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into PLL 1");
 #endif
         return;
 
@@ -749,8 +749,8 @@ static void tsc2102_audio_register_write(
         s->pll[1] = value & 0xfffc;
 #ifdef TSC_VERBOSE
         if (value & ~0xfffc)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into PLL 2\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into PLL 2");
 #endif
         return;
 
@@ -758,15 +758,15 @@ static void tsc2102_audio_register_write(
         s->softstep = !(value & 0x4000);
 #ifdef TSC_VERBOSE
         if (value & ~0x4000)
-            fprintf(stderr, "tsc2102_audio_register_write: "
-                            "wrong value written into Audio 4\n");
+            error_report("tsc2102_audio_register_write: "
+                         "wrong value written into Audio 4");
 #endif
         return;
 
     default:
 #ifdef TSC_VERBOSE
-        fprintf(stderr, "tsc2102_audio_register_write: "
-                        "no such register: 0x%02x\n", reg);
+        error_report("tsc2102_audio_register_write: "
+                     "no such register: 0x%02x", reg);
 #endif
     }
 }
@@ -847,7 +847,7 @@ static uint16_t tsc210x_read(TSC210xState *s)
     uint16_t ret = 0x0000;
 
     if (!s->command)
-        fprintf(stderr, "tsc210x_read: SPI underrun!\n");
+        error_report("tsc210x_read: SPI underrun!");
 
     switch (s->page) {
     case TSC_DATA_REGISTERS_PAGE:
@@ -886,7 +886,7 @@ static void tsc210x_write(TSC210xState *s, uint16_t value)
         s->state = true;
     } else {
         if (s->command)
-            fprintf(stderr, "tsc210x_write: SPI overrun!\n");
+            error_report("tsc210x_write: SPI overrun!");
         else
             switch (s->page) {
             case TSC_DATA_REGISTERS_PAGE:
diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c
index 4d3afc1b14..bf1ed7b18e 100644
--- a/hw/input/virtio-input-hid.c
+++ b/hw/input/virtio-input-hid.c
@@ -208,8 +208,8 @@ static void virtio_input_handle_event(DeviceState *dev, QemuConsole *src,
             virtio_input_send(vinput, &event);
         } else {
             if (key->down) {
-                fprintf(stderr, "%s: unmapped key: %d [%s]\n", __func__,
-                        qcode, QKeyCode_str(qcode));
+                error_report("%s: unmapped key: %d [%s]", __func__,
+                             qcode, QKeyCode_str(qcode));
             }
         }
         break;
@@ -222,9 +222,9 @@ static void virtio_input_handle_event(DeviceState *dev, QemuConsole *src,
             virtio_input_send(vinput, &event);
         } else {
             if (btn->down) {
-                fprintf(stderr, "%s: unmapped button: %d [%s]\n", __func__,
-                        btn->button,
-                        InputButton_str(btn->button));
+                error_report("%s: unmapped button: %d [%s]", __func__,
+                             btn->button,
+                             InputButton_str(btn->button));
             }
         }
         break;
@@ -310,8 +310,8 @@ static void virtio_input_hid_handle_status(VirtIOInput *vinput,
         kbd_put_ledstate(vhid->ledstate);
         break;
     default:
-        fprintf(stderr, "%s: unknown type %d\n", __func__,
-                le16_to_cpu(event->type));
+        error_report("%s: unknown type %d", __func__,
+                     le16_to_cpu(event->type));
         break;
     }
 }
diff --git a/hw/input/virtio-input.c b/hw/input/virtio-input.c
index 0e42f0d02c..fb5fa0a280 100644
--- a/hw/input/virtio-input.c
+++ b/hw/input/virtio-input.c
@@ -5,6 +5,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu/iov.h"
 #include "trace.h"
@@ -121,8 +122,8 @@ void virtio_input_add_config(VirtIOInput *vinput,
 
     if (virtio_input_find_config(vinput, config->select, config->subsel)) {
         /* should not happen */
-        fprintf(stderr, "%s: duplicate config: %d/%d\n",
-                __func__, config->select, config->subsel);
+        error_report("%s: duplicate config: %d/%d",
+                     __func__, config->select, config->subsel);
         abort();
     }
 
diff --git a/hw/intc/arm_gic_kvm.c b/hw/intc/arm_gic_kvm.c
index ae095d08a3..a5478d3e20 100644
--- a/hw/intc/arm_gic_kvm.c
+++ b/hw/intc/arm_gic_kvm.c
@@ -316,12 +316,12 @@ static void kvm_arm_gic_put(GICState *s)
     num_cpu = ((reg & 0xe0) >> 5) + 1;
 
     if (num_irq < s->num_irq) {
-            fprintf(stderr, "Restoring %u IRQs, but kernel supports max %d\n",
-                    s->num_irq, num_irq);
+            error_report("Restoring %u IRQs, but kernel supports max %d",
+                         s->num_irq, num_irq);
             abort();
     } else if (num_cpu != s->num_cpu) {
-            fprintf(stderr, "Restoring %u CPU interfaces, kernel only has %d\n",
-                    s->num_cpu, num_cpu);
+            error_report("Restoring %u CPU interfaces, kernel only has %d",
+                         s->num_cpu, num_cpu);
             /* Did we not create the VCPUs in the kernel yet? */
             abort();
     }
@@ -411,8 +411,8 @@ static void kvm_arm_gic_get(GICState *s)
     s->num_cpu = ((reg & 0xe0) >> 5) + 1;
 
     if (s->num_irq > GIC_MAXIRQ) {
-            fprintf(stderr, "Too many IRQs reported from the kernel: %d\n",
-                    s->num_irq);
+            error_report("Too many IRQs reported from the kernel: %d",
+                         s->num_irq);
             abort();
     }
 
diff --git a/hw/intc/omap_intc.c b/hw/intc/omap_intc.c
index 6844c1aa83..7fc239715a 100644
--- a/hw/intc/omap_intc.c
+++ b/hw/intc/omap_intc.c
@@ -539,8 +539,8 @@ static void omap2_inth_write(void *opaque, hwaddr addr,
         /* TODO: Make a bitmap (or sizeof(char)map) of access privileges
          * for every register, see Chapter 3 and 4 for privileged mode.  */
         if (value & 1)
-            fprintf(stderr, "%s: protection mode enable attempt\n",
-                            __func__);
+            error_report("%s: protection mode enable attempt",
+                          __func__);
         return;
 
     case 0x50:	/* INTC_IDLE */
diff --git a/hw/intc/openpic.c b/hw/intc/openpic.c
index 9dd285b923..dfaefbf575 100644
--- a/hw/intc/openpic.c
+++ b/hw/intc/openpic.c
@@ -34,6 +34,7 @@
  *
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/ppc/mac.h"
 #include "hw/pci/pci.h"
@@ -162,7 +163,7 @@ static int inttgt_to_output(int inttgt)
         }
     }
 
-    fprintf(stderr, "%s: unsupported inttgt %d\n", __func__, inttgt);
+    error_report("%s: unsupported inttgt %d", __func__, inttgt);
     return OPENPIC_OUTPUT_INT;
 }
 
@@ -534,7 +535,7 @@ static void openpic_set_irq(void *opaque, int n_IRQ, int level)
     IRQSource *src;
 
     if (n_IRQ >= OPENPIC_MAX_IRQ) {
-        fprintf(stderr, "%s: IRQ %d out of range\n", __func__, n_IRQ);
+        error_report("%s: IRQ %d out of range", __func__, n_IRQ);
         abort();
     }
 
@@ -1208,7 +1209,7 @@ static uint32_t openpic_iack(OpenPICState *opp, IRQDest *dst, int cpu)
     src = &opp->src[irq];
     if (!(src->ivpr & IVPR_ACTIVITY_MASK) ||
             !(IVPR_PRIORITY(src->ivpr) > dst->ctpr)) {
-        fprintf(stderr, "%s: bad raised IRQ %d ctpr %d ivpr 0x%08x\n",
+        error_report("%s: bad raised IRQ %d ctpr %d ivpr 0x%08x",
                 __func__, irq, dst->ctpr, src->ivpr);
         openpic_update_irq(opp, irq);
         retval = opp->spve;
diff --git a/hw/intc/openpic_kvm.c b/hw/intc/openpic_kvm.c
index fa83420254..60c784ae86 100644
--- a/hw/intc/openpic_kvm.c
+++ b/hw/intc/openpic_kvm.c
@@ -150,8 +150,8 @@ static void kvm_openpic_region_add(MemoryListener *listener,
 
     ret = ioctl(opp->fd, KVM_SET_DEVICE_ATTR, &attr);
     if (ret < 0) {
-        fprintf(stderr, "%s: %s %" PRIx64 "\n", __func__,
-                strerror(errno), reg_base);
+        error_report("%s: %s %" PRIx64 "", __func__,
+                     strerror(errno), reg_base);
     }
 }
 
@@ -184,8 +184,8 @@ static void kvm_openpic_region_del(MemoryListener *listener,
 
     ret = ioctl(opp->fd, KVM_SET_DEVICE_ATTR, &attr);
     if (ret < 0) {
-        fprintf(stderr, "%s: %s %" PRIx64 "\n", __func__,
-                strerror(errno), reg_base);
+        error_report("%s: %s %" PRIx64 "", __func__,
+                     strerror(errno), reg_base);
     }
 }
 
diff --git a/hw/intc/s390_flic_kvm.c b/hw/intc/s390_flic_kvm.c
index 7ead17ac3e..3774b1a2f0 100644
--- a/hw/intc/s390_flic_kvm.c
+++ b/hw/intc/s390_flic_kvm.c
@@ -83,7 +83,7 @@ static void flic_enable_pfault(KVMS390FLICState *flic)
     rc = ioctl(flic->fd, KVM_SET_DEVICE_ATTR, &attr);
 
     if (rc) {
-        fprintf(stderr, "flic: couldn't enable pfault\n");
+        error_report("flic: couldn't enable pfault");
     }
 }
 
@@ -97,7 +97,7 @@ static void flic_disable_wait_pfault(KVMS390FLICState *flic)
     rc = ioctl(flic->fd, KVM_SET_DEVICE_ATTR, &attr);
 
     if (rc) {
-        fprintf(stderr, "flic: couldn't disable pfault\n");
+        error_report("flic: couldn't disable pfault");
     }
 }
 
diff --git a/hw/ipmi/ipmi.c b/hw/ipmi/ipmi.c
index b27babd504..81c62920de 100644
--- a/hw/ipmi/ipmi.c
+++ b/hw/ipmi/ipmi.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/ipmi/ipmi.h"
 #include "sysemu/sysemu.h"
diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
index abab3bba4f..8c0535d3dd 100644
--- a/hw/ipmi/ipmi_bmc_extern.c
+++ b/hw/ipmi/ipmi_bmc_extern.c
@@ -28,6 +28,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu/timer.h"
 #include "chardev/char-fe.h"
@@ -194,8 +195,8 @@ static void ipmi_bmc_extern_handle_command(IPMIBmc *b,
 
     if (ibe->outlen) {
         /* We already have a command queued.  Shouldn't ever happen. */
-        fprintf(stderr, "IPMI KCS: Got command when not finished with the"
-                " previous command\n");
+        error_report("IPMI KCS: Got command when not finished with the"
+                     " previous command");
         abort();
     }
 
diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c
index 348e0eab9d..0f2e426d02 100644
--- a/hw/isa/isa-bus.c
+++ b/hw/isa/isa-bus.c
@@ -17,6 +17,7 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "hw/hw.h"
 #include "monitor/monitor.h"
@@ -186,15 +187,15 @@ ISADevice *isa_vga_init(ISABus *bus)
     case VGA_CIRRUS:
         return isa_create_simple(bus, "isa-cirrus-vga");
     case VGA_QXL:
-        fprintf(stderr, "%s: qxl: no PCI bus\n", __func__);
+        error_report("%s: qxl: no PCI bus", __func__);
         return NULL;
     case VGA_STD:
         return isa_create_simple(bus, "isa-vga");
     case VGA_VMWARE:
-        fprintf(stderr, "%s: vmware_vga: no PCI bus\n", __func__);
+        error_report("%s: vmware_vga: no PCI bus", __func__);
         return NULL;
     case VGA_VIRTIO:
-        fprintf(stderr, "%s: virtio-vga: no PCI bus\n", __func__);
+        error_report("%s: virtio-vga: no PCI bus", __func__);
         return NULL;
     case VGA_NONE:
     default:
diff --git a/hw/lm32/lm32_boards.c b/hw/lm32/lm32_boards.c
index b0bb3ef58a..d739acf476 100644
--- a/hw/lm32/lm32_boards.c
+++ b/hw/lm32/lm32_boards.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/sysbus.h"
@@ -152,7 +153,7 @@ static void lm32_evr_init(MachineState *machine)
         }
 
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
@@ -250,7 +251,7 @@ static void lm32_uclinux_init(MachineState *machine)
         }
 
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
diff --git a/hw/lm32/milkymist.c b/hw/lm32/milkymist.c
index 4db4d2d533..caa6cf4e0f 100644
--- a/hw/lm32/milkymist.c
+++ b/hw/lm32/milkymist.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/sysbus.h"
@@ -149,7 +150,7 @@ milkymist_init(MachineState *machine)
 
     /* if no kernel is given no valid bios rom is a fatal error */
     if (!kernel_filename && !dinfo && !bios_filename && !qtest_enabled()) {
-        fprintf(stderr, "qemu: could not load Milkymist One bios '%s'\n",
+        error_report("qemu: could not load Milkymist One bios '%s'",
                 bios_name);
         exit(1);
     }
@@ -188,7 +189,7 @@ milkymist_init(MachineState *machine)
         }
 
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
diff --git a/hw/m68k/an5206.c b/hw/m68k/an5206.c
index 9002c460e5..bdab620a02 100644
--- a/hw/m68k/an5206.c
+++ b/hw/m68k/an5206.c
@@ -66,7 +66,7 @@ static void an5206_init(MachineState *machine)
         if (qtest_enabled()) {
             return;
         }
-        fprintf(stderr, "Kernel image must be specified\n");
+        error_report("Kernel image must be specified");
         exit(1);
     }
 
@@ -83,7 +83,7 @@ static void an5206_init(MachineState *machine)
         entry = KERNEL_LOAD_ADDR;
     }
     if (kernel_size < 0) {
-        fprintf(stderr, "qemu: could not load kernel '%s'\n", kernel_filename);
+        error_report("qemu: could not load kernel '%s'", kernel_filename);
         exit(1);
     }
 
diff --git a/hw/m68k/mcf5206.c b/hw/m68k/mcf5206.c
index b81901fdfd..fbf3f0f074 100644
--- a/hw/m68k/mcf5206.c
+++ b/hw/m68k/mcf5206.c
@@ -6,6 +6,7 @@
  * This code is licensed under the GPL
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/hw.h"
@@ -220,7 +221,7 @@ static void m5206_mbar_update(m5206_mbar_state *s)
                 break;
             default:
                 /* Unknown vector.  */
-                fprintf(stderr, "Unhandled vector for IRQ %d\n", irq);
+                error_report("Unhandled vector for IRQ %d", irq);
                 vector = 0xf;
                 break;
             }
diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c
index b9dde75106..2fb5037b72 100644
--- a/hw/m68k/mcf5208.c
+++ b/hw/m68k/mcf5208.c
@@ -6,6 +6,7 @@
  * This code is licensed under the GPL
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -257,7 +258,7 @@ static void mcf5208evb_init(MachineState *machine)
     mcf5208_sys_init(address_space_mem, pic);
 
     if (nb_nics > 1) {
-        fprintf(stderr, "Too many NICs\n");
+        error_report("Too many NICs");
         exit(1);
     }
     if (nd_table[0].used) {
@@ -292,7 +293,7 @@ static void mcf5208evb_init(MachineState *machine)
         if (qtest_enabled()) {
             return;
         }
-        fprintf(stderr, "Kernel image must be specified\n");
+        error_report("Kernel image must be specified");
         exit(1);
     }
 
@@ -309,7 +310,7 @@ static void mcf5208evb_init(MachineState *machine)
         entry = 0x40000000;
     }
     if (kernel_size < 0) {
-        fprintf(stderr, "qemu: could not load kernel '%s'\n", kernel_filename);
+        error_report("qemu: could not load kernel '%s'", kernel_filename);
         exit(1);
     }
 
diff --git a/hw/microblaze/boot.c b/hw/microblaze/boot.c
index 457a08a2fe..31466050de 100644
--- a/hw/microblaze/boot.c
+++ b/hw/microblaze/boot.c
@@ -86,7 +86,7 @@ static int microblaze_load_dtb(hwaddr addr,
         r = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs",
                                     kernel_cmdline);
         if (r < 0) {
-            fprintf(stderr, "couldn't set /chosen/bootargs\n");
+            error_report("couldn't set /chosen/bootargs");
         }
     }
 
diff --git a/hw/mips/boston.c b/hw/mips/boston.c
index 776ee283e1..ee82968ea7 100644
--- a/hw/mips/boston.c
+++ b/hw/mips/boston.c
@@ -353,7 +353,7 @@ static const void *boston_fdt_filter(void *opaque, const void *fdt_orig,
 
     err = fdt_open_into(fdt_orig, fdt, fdt_sz);
     if (err) {
-        fprintf(stderr, "unable to open FDT\n");
+        error_report("unable to open FDT");
         return NULL;
     }
 
@@ -361,7 +361,7 @@ static const void *boston_fdt_filter(void *opaque, const void *fdt_orig,
             ? machine->kernel_cmdline : " ";
     err = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", cmdline);
     if (err < 0) {
-        fprintf(stderr, "couldn't set /chosen/bootargs\n");
+        error_report("couldn't set /chosen/bootargs");
         return NULL;
     }
 
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index 75318680e1..34710a466c 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -143,7 +143,7 @@ static int64_t load_kernel (CPUMIPSState *env)
                                      initrd_offset, ram_size - initrd_offset);
         }
         if (initrd_size == (target_ulong) -1) {
-            fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
+            error_report("qemu: could not load initial ram disk '%s'",
                     loaderparams.initrd_filename);
             exit(1);
         }
@@ -342,7 +342,7 @@ static void mips_fulong2e_init(MachineState *machine)
 
     isa_bus = vt82c686b_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 0));
     if (!isa_bus) {
-        fprintf(stderr, "vt82c686b_init error\n");
+        error_report("vt82c686b_init error");
         exit(1);
     }
 
diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
index 7e6626dc88..6c91a940be 100644
--- a/hw/mips/mips_jazz.c
+++ b/hw/mips/mips_jazz.c
@@ -271,10 +271,10 @@ static void mips_jazz_init(MachineState *machine,
             sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(rc4030, 4));
             break;
         } else if (is_help_option(nd->model)) {
-            fprintf(stderr, "qemu: Supported NICs: dp83932\n");
+            error_report("qemu: Supported NICs: dp83932");
             exit(1);
         } else {
-            fprintf(stderr, "qemu: Unsupported NIC: %s\n", nd->model);
+            error_report("qemu: Unsupported NIC: %s", nd->model);
             exit(1);
         }
     }
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 2adb9bcf89..d457adfa69 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -856,8 +856,8 @@ static int64_t load_kernel (void)
                                               ram_size - initrd_offset);
         }
         if (initrd_size == (target_ulong) -1) {
-            fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                    loaderparams.initrd_filename);
+            error_report("qemu: could not load initial ram disk '%s'",
+                         loaderparams.initrd_filename);
             exit(1);
         }
     }
diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c
index a092072e2a..a3d9406610 100644
--- a/hw/mips/mips_mipssim.c
+++ b/hw/mips/mips_mipssim.c
@@ -101,8 +101,8 @@ static int64_t load_kernel(void)
                 initrd_offset, loaderparams.ram_size - initrd_offset);
         }
         if (initrd_size == (target_ulong) -1) {
-            fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                    loaderparams.initrd_filename);
+            error_report("qemu: could not load initial ram disk '%s'",
+                         loaderparams.initrd_filename);
             exit(1);
         }
     }
diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c
index 1272d4ef9d..e54ce918a7 100644
--- a/hw/mips/mips_r4k.c
+++ b/hw/mips/mips_r4k.c
@@ -121,8 +121,8 @@ static int64_t load_kernel(void)
                                               ram_size - initrd_offset);
         }
         if (initrd_size == (target_ulong) -1) {
-            fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                    loaderparams.initrd_filename);
+            error_report("qemu: could not load initial ram disk '%s'",
+                         loaderparams.initrd_filename);
             exit(1);
         }
     }
@@ -246,7 +246,7 @@ void mips_r4k_init(MachineState *machine)
                                    blk_by_legacy_dinfo(dinfo),
                                    sector_len, mips_rom / sector_len,
                                    4, 0, 0, 0, 0, be)) {
-            fprintf(stderr, "qemu: Error registering flash memory.\n");
+            error_report("qemu: Error registering flash memory.");
 	}
     } else if (!qtest_enabled()) {
         /* not fatal */
diff --git a/hw/misc/a9scu.c b/hw/misc/a9scu.c
index 3e8ad8cd73..21b8e49b6c 100644
--- a/hw/misc/a9scu.c
+++ b/hw/misc/a9scu.c
@@ -9,6 +9,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/misc/a9scu.h"
 
 static uint64_t a9_scu_read(void *opaque, hwaddr offset,
@@ -59,7 +60,7 @@ static void a9_scu_write(void *opaque, hwaddr offset,
         mask = 0xffffffff;
         break;
     default:
-        fprintf(stderr, "Invalid size %u in write to a9 scu register %x\n",
+        error_report("Invalid size %u in write to a9 scu register %x",
                 size, (unsigned)offset);
         return;
     }
diff --git a/hw/misc/omap_gpmc.c b/hw/misc/omap_gpmc.c
index 84f9e4c612..e3b30e90ea 100644
--- a/hw/misc/omap_gpmc.c
+++ b/hw/misc/omap_gpmc.c
@@ -19,6 +19,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/block/flash.h"
 #include "hw/arm/omap.h"
@@ -408,7 +409,7 @@ static void omap_gpmc_cs_map(struct omap_gpmc_s *s, int cs)
     /* TODO: check for overlapping regions and report access errors */
     if (mask != 0x8 && mask != 0xc && mask != 0xe && mask != 0xf
          && !(s->accept_256 && !mask)) {
-        fprintf(stderr, "%s: invalid chip-select mask address (0x%x)\n",
+        error_report("%s: invalid chip-select mask address (0x%x)",
                  __func__, mask);
     }
 
@@ -642,7 +643,7 @@ static void omap_gpmc_write(void *opaque, hwaddr addr,
 
     case 0x010:	/* GPMC_SYSCONFIG */
         if ((value >> 3) == 0x3)
-            fprintf(stderr, "%s: bad SDRAM idle mode %"PRIi64"\n",
+            error_report("%s: bad SDRAM idle mode %"PRIi64"",
                             __func__, value >> 3);
         if (value & 2)
             omap_gpmc_reset(s);
@@ -806,7 +807,7 @@ static void omap_gpmc_write(void *opaque, hwaddr addr,
         break;
     case 0x230:	/* GPMC_TESTMODE_CTRL */
         if (value & 7)
-            fprintf(stderr, "%s: test mode enable attempt\n", __func__);
+            error_report("%s: test mode enable attempt", __func__);
         break;
 
     default:
@@ -864,7 +865,7 @@ void omap_gpmc_attach(struct omap_gpmc_s *s, int cs, MemoryRegion *iomem)
     assert(iomem);
 
     if (cs < 0 || cs >= 8) {
-        fprintf(stderr, "%s: bad chip-select %i\n", __func__, cs);
+        error_report("%s: bad chip-select %i", __func__, cs);
         exit(-1);
     }
     f = &s->cs_file[cs];
@@ -881,7 +882,7 @@ void omap_gpmc_attach_nand(struct omap_gpmc_s *s, int cs, DeviceState *nand)
     assert(nand);
 
     if (cs < 0 || cs >= 8) {
-        fprintf(stderr, "%s: bad chip-select %i\n", __func__, cs);
+        error_report("%s: bad chip-select %i", __func__, cs);
         exit(-1);
     }
     f = &s->cs_file[cs];
diff --git a/hw/misc/omap_l4.c b/hw/misc/omap_l4.c
index 96fc057b4e..47d9c10aeb 100644
--- a/hw/misc/omap_l4.c
+++ b/hw/misc/omap_l4.c
@@ -18,6 +18,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/arm/omap.h"
 
@@ -126,7 +127,7 @@ struct omap_target_agent_s *omap_l4ta_get(struct omap_l4_s *bus,
             break;
         }
     if (!ta) {
-        fprintf(stderr, "%s: bad target agent (%i)\n", __func__, cs);
+        error_report("%s: bad target agent (%i)", __func__, cs);
         exit(-1);
     }
 
@@ -151,7 +152,7 @@ hwaddr omap_l4_attach(struct omap_target_agent_s *ta,
     hwaddr base;
 
     if (region < 0 || region >= ta->regions) {
-        fprintf(stderr, "%s: bad io region (%i)\n", __func__, region);
+        error_report("%s: bad io region (%i)", __func__, region);
         exit(-1);
     }
 
diff --git a/hw/misc/omap_sdrc.c b/hw/misc/omap_sdrc.c
index 7b38c5568c..3dcabc1e00 100644
--- a/hw/misc/omap_sdrc.c
+++ b/hw/misc/omap_sdrc.c
@@ -18,6 +18,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/arm/omap.h"
 
@@ -108,7 +109,7 @@ static void omap_sdrc_write(void *opaque, hwaddr addr,
 
     case 0x10:	/* SDRC_SYSCONFIG */
         if ((value >> 3) != 0x2)
-            fprintf(stderr, "%s: bad SDRAM idle mode %i\n",
+            error_report("%s: bad SDRAM idle mode %i",
                     __func__, (unsigned)value >> 3);
         if (value & 2)
             omap_sdrc_reset(s);
diff --git a/hw/misc/vmport.c b/hw/misc/vmport.c
index 165500223f..55369bd180 100644
--- a/hw/misc/vmport.c
+++ b/hw/misc/vmport.c
@@ -80,7 +80,7 @@ static uint64_t vmport_ioport_read(void *opaque, hwaddr addr,
     if (!s->func[command])
     {
 #ifdef VMPORT_DEBUG
-        fprintf(stderr, "vmport: unknown command %x\n", command);
+        error_report("vmport: unknown command %x", command);
 #endif
         return eax;
     }
diff --git a/hw/moxie/moxiesim.c b/hw/moxie/moxiesim.c
index 5ea8dd3a93..5916f86c68 100644
--- a/hw/moxie/moxiesim.c
+++ b/hw/moxie/moxiesim.c
@@ -25,6 +25,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -61,7 +62,7 @@ static void load_kernel(MoxieCPU *cpu, LoaderParams *loader_params)
                            0, 0);
 
     if (kernel_size <= 0) {
-        fprintf(stderr, "qemu: could not load kernel '%s'\n",
+        error_report("qemu: could not load kernel '%s'",
                 loader_params->kernel_filename);
         exit(1);
     }
@@ -85,8 +86,8 @@ static void load_kernel(MoxieCPU *cpu, LoaderParams *loader_params)
                                               ram_size);
         }
         if (initrd_size == (target_ulong)-1) {
-            fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                    loader_params->initrd_filename);
+            error_report("qemu: could not load initial ram disk '%s'",
+                         loader_params->initrd_filename);
             exit(1);
         }
     }
diff --git a/hw/net/fsl_etsec/etsec.c b/hw/net/fsl_etsec/etsec.c
index 9da1932970..965effa314 100644
--- a/hw/net/fsl_etsec/etsec.c
+++ b/hw/net/fsl_etsec/etsec.c
@@ -347,7 +347,7 @@ static ssize_t etsec_receive(NetClientState *nc,
     eTSEC *etsec = qemu_get_nic_opaque(nc);
 
 #if defined(HEX_DUMP)
-    fprintf(stderr, "%s receive size:%zd\n", nc->name, size);
+    error_report("%s receive size:%zd", nc->name, size);
     qemu_hexdump((void *)buf, stderr, "", size);
 #endif
     /* Flush is unnecessary as are already in receiving path */
diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c
index 654455355f..5f2b5fe046 100644
--- a/hw/net/pcnet.c
+++ b/hw/net/pcnet.c
@@ -1070,7 +1070,7 @@ ssize_t pcnet_receive(NetClientState *nc, const uint8_t *buf, size_t size_)
             if (!s->looptest) {
                 if (size > 4092) {
 #ifdef PCNET_DEBUG_RMD
-                    fprintf(stderr, "pcnet: truncates rx packet.\n");
+                    error_report("pcnet: truncates rx packet.");
 #endif
                     size = 4092;
                 }
diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c
index 3b16dcf5a1..ae40fd6e6e 100644
--- a/hw/net/smc91c111.c
+++ b/hw/net/smc91c111.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/sysbus.h"
 #include "net/net.h"
 #include "hw/devices.h"
@@ -362,9 +363,9 @@ static void smc91c111_writeb(void *opaque, hwaddr offset,
             return;
         case 12: /* Control */
             if (value & 1)
-                fprintf(stderr, "smc91c111:EEPROM store not implemented\n");
+                error_report("smc91c111:EEPROM store not implemented");
             if (value & 2)
-                fprintf(stderr, "smc91c111:EEPROM reload not implemented\n");
+                error_report("smc91c111:EEPROM reload not implemented");
             value &= ~3;
             SET_LOW(ctr, value);
             return;
diff --git a/hw/net/vhost_net.c b/hw/net/vhost_net.c
index e037db63a3..37d0cce560 100644
--- a/hw/net/vhost_net.c
+++ b/hw/net/vhost_net.c
@@ -135,7 +135,7 @@ static int vhost_net_get_fd(NetClientState *backend)
     case NET_CLIENT_DRIVER_TAP:
         return tap_get_fd(backend);
     default:
-        fprintf(stderr, "vhost-net requires tap backend\n");
+        error_report("vhost-net requires tap backend");
         return -EBADFD;
     }
 }
@@ -148,7 +148,7 @@ struct vhost_net *vhost_net_init(VhostNetOptions *options)
     uint64_t features = 0;
 
     if (!options->net_backend) {
-        fprintf(stderr, "vhost-net requires net backend to be setup\n");
+        error_report("vhost-net requires net backend to be setup");
         goto fail;
     }
     net->nc = options->net_backend;
@@ -186,8 +186,8 @@ struct vhost_net *vhost_net_init(VhostNetOptions *options)
             net->dev.features &= ~(1ULL << VIRTIO_NET_F_MRG_RXBUF);
         }
         if (~net->dev.features & net->dev.backend_features) {
-            fprintf(stderr, "vhost lacks feature mask %" PRIu64
-                   " for backend\n",
+            error_report("vhost lacks feature mask %" PRIu64
+                   " for backend",
                    (uint64_t)(~net->dev.features & net->dev.backend_features));
             goto fail;
         }
@@ -197,8 +197,8 @@ struct vhost_net *vhost_net_init(VhostNetOptions *options)
     if (net->nc->info->type == NET_CLIENT_DRIVER_VHOST_USER) {
         features = vhost_user_get_acked_features(net->nc);
         if (~net->dev.features & features) {
-            fprintf(stderr, "vhost lacks feature mask %" PRIu64
-                    " for backend\n",
+            error_report("vhost lacks feature mask %" PRIu64
+                    " for backend",
                     (uint64_t)(~net->dev.features & features));
             goto fail;
         }
@@ -349,7 +349,7 @@ err_start:
     }
     e = k->set_guest_notifiers(qbus->parent, total_queues * 2, false);
     if (e < 0) {
-        fprintf(stderr, "vhost guest notifier cleanup failed: %d\n", e);
+        error_report("vhost guest notifier cleanup failed: %d", e);
         fflush(stderr);
     }
 err:
@@ -370,7 +370,7 @@ void vhost_net_stop(VirtIODevice *dev, NetClientState *ncs,
 
     r = k->set_guest_notifiers(qbus->parent, total_queues * 2, false);
     if (r < 0) {
-        fprintf(stderr, "vhost guest notifier cleanup failed: %d\n", r);
+        error_report("vhost guest notifier cleanup failed: %d", r);
         fflush(stderr);
     }
     assert(r >= 0);
diff --git a/hw/nios2/boot.c b/hw/nios2/boot.c
index 2b31f5b844..c896e8007b 100644
--- a/hw/nios2/boot.c
+++ b/hw/nios2/boot.c
@@ -96,7 +96,7 @@ static int nios2_load_dtb(struct nios2_boot_info bi, const uint32_t ramsize,
         r = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs",
                                     kernel_cmdline);
         if (r < 0) {
-            fprintf(stderr, "couldn't set /chosen/bootargs\n");
+            error_report("couldn't set /chosen/bootargs");
         }
     }
 
diff --git a/hw/nvram/eeprom93xx.c b/hw/nvram/eeprom93xx.c
index 2fd0e3c29f..5cad031eba 100644
--- a/hw/nvram/eeprom93xx.c
+++ b/hw/nvram/eeprom93xx.c
@@ -36,6 +36,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/nvram/eeprom93xx.h"
 
@@ -105,8 +106,8 @@ static int get_uint16_from_uint8(QEMUFile *f, void *pv, size_t size,
 static int put_unused(QEMUFile *f, void *pv, size_t size, VMStateField *field,
                       QJSON *vmdesc)
 {
-    fprintf(stderr, "uint16_from_uint8 is used only for backwards compatibility.\n");
-    fprintf(stderr, "Never should be used to write a new state.\n");
+    error_report("uint16_from_uint8 is used only for backwards compatibility.");
+    error_report("Never should be used to write a new state.");
     exit(0);
 
     return 0;
diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c
index e3bd626b8c..cf9a816c0e 100644
--- a/hw/nvram/fw_cfg.c
+++ b/hw/nvram/fw_cfg.c
@@ -515,8 +515,8 @@ static int get_uint32_as_uint16(QEMUFile *f, void *pv, size_t size,
 static int put_unused(QEMUFile *f, void *pv, size_t size, VMStateField *field,
                       QJSON *vmdesc)
 {
-    fprintf(stderr, "uint32_as_uint16 is only used for backward compatibility.\n");
-    fprintf(stderr, "This functions shouldn't be called.\n");
+    error_report("uint32_as_uint16 is only used for backward compatibility.");
+    error_report("This functions shouldn't be called.");
 
     return 0;
 }
diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c
index 86bf2849c4..44a6d115dd 100644
--- a/hw/openrisc/openrisc_sim.c
+++ b/hw/openrisc/openrisc_sim.c
@@ -19,6 +19,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -87,7 +88,7 @@ static void cpu_openrisc_load_kernel(ram_addr_t ram_size,
         }
 
         if (kernel_size < 0) {
-            fprintf(stderr, "QEMU: couldn't load the kernel '%s'\n",
+            error_report("QEMU: couldn't load the kernel '%s'",
                     kernel_filename);
             exit(1);
         }
diff --git a/hw/pci-host/bonito.c b/hw/pci-host/bonito.c
index 1767d2af61..48fef86c05 100644
--- a/hw/pci-host/bonito.c
+++ b/hw/pci-host/bonito.c
@@ -38,7 +38,7 @@
  */
 
 #include "qemu/osdep.h"
-
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
 #include "hw/i386/pc.h"
@@ -449,8 +449,8 @@ static uint32_t bonito_sbridge_pciaddr(void *opaque, hwaddr addr)
     regno = (cfgaddr & BONITO_PCICONF_REG_MASK) >> BONITO_PCICONF_REG_OFFSET;
 
     if (idsel == 0) {
-        fprintf(stderr, "error in bonito pci config address " TARGET_FMT_plx
-            ",pcimap_cfg=%x\n", addr, s->regs[BONITO_PCIMAP_CFG]);
+        error_report("error in bonito pci config address " TARGET_FMT_plx
+            ",pcimap_cfg=%x", addr, s->regs[BONITO_PCIMAP_CFG]);
         exit(1);
     }
     pciaddr = PCI_ADDR(pci_bus_num(phb->bus), devno, funno, regno);
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 1e6fb88eba..1c8395d319 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -515,7 +515,7 @@ static int get_pci_irq_state(QEMUFile *f, void *pv, size_t size,
     for (i = 0; i < PCI_NUM_PINS; ++i) {
         irq_state[i] = qemu_get_be32(f);
         if (irq_state[i] != 0x1 && irq_state[i] != 0) {
-            fprintf(stderr, "irq state %d: must be 0 or 1.\n",
+            error_report("irq state %d: must be 0 or 1.",
                     irq_state[i]);
             return -EINVAL;
         }
@@ -678,7 +678,7 @@ static PCIBus *pci_get_bus_devfn(int *devfnp, PCIBus *root,
     unsigned slot;
 
     if (!root) {
-        fprintf(stderr, "No primary PCI bus\n");
+        error_report("No primary PCI bus");
         return NULL;
     }
 
@@ -694,7 +694,7 @@ static PCIBus *pci_get_bus_devfn(int *devfnp, PCIBus *root,
     }
 
     if (dom != 0) {
-        fprintf(stderr, "No support for non-zero PCI domains\n");
+        error_report("No support for non-zero PCI domains");
         return NULL;
     }
 
@@ -1118,8 +1118,8 @@ void pci_register_bar(PCIDevice *pci_dev, int region_num,
     assert(region_num >= 0);
     assert(region_num < PCI_NUM_REGIONS);
     if (size & (size-1)) {
-        fprintf(stderr, "ERROR: PCI region size must be pow2 "
-                    "type=0x%x, size=0x%"FMT_PCIBUS"\n", type, size);
+        error_report("ERROR: PCI region size must be pow2 "
+                    "type=0x%x, size=0x%"FMT_PCIBUS"", type, size);
         exit(1);
     }
 
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index db0e49ab8f..8a5350161f 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -333,13 +333,13 @@ static int ppce500_load_device_tree(MachineState *machine,
         ret = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-start",
                                     initrd_base);
         if (ret < 0) {
-            fprintf(stderr, "couldn't set /chosen/linux,initrd-start\n");
+            error_report("couldn't set /chosen/linux,initrd-start");
         }
 
         ret = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-end",
                                     (initrd_base + initrd_size));
         if (ret < 0) {
-            fprintf(stderr, "couldn't set /chosen/linux,initrd-end\n");
+            error_report("couldn't set /chosen/linux,initrd-end");
         }
 
     }
@@ -353,7 +353,7 @@ static int ppce500_load_device_tree(MachineState *machine,
     ret = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs",
                                       machine->kernel_cmdline);
     if (ret < 0)
-        fprintf(stderr, "couldn't set /chosen/bootargs\n");
+        error_report("couldn't set /chosen/bootargs");
 
     if (kvm_enabled()) {
         /* Read out host's frequencies */
@@ -720,7 +720,7 @@ static DeviceState *ppce500_init_mpic_kvm(PPCE500Params *params,
 
     CPU_FOREACH(cs) {
         if (kvm_openpic_connect_vcpu(dev, cs)) {
-            fprintf(stderr, "%s: failed to connect vcpu to irqchip\n",
+            error_report("%s: failed to connect vcpu to irqchip",
                     __func__);
             abort();
         }
@@ -821,7 +821,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
         cs = CPU(cpu);
 
         if (env->mmu_model != POWERPC_MMU_BOOKE206) {
-            fprintf(stderr, "MMU model %i not supported by this machine.\n",
+            error_report("MMU model %i not supported by this machine.",
                 env->mmu_model);
             exit(1);
         }
@@ -967,7 +967,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
                                           cur_base,
                                           ram_size - cur_base);
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     machine->kernel_filename);
             exit(1);
         }
@@ -982,8 +982,8 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
                                           ram_size - initrd_base);
 
         if (initrd_size < 0) {
-            fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                    machine->initrd_filename);
+            error_report("qemu: could not load initial ram disk '%s'",
+                         machine->initrd_filename);
             exit(1);
         }
 
@@ -1024,7 +1024,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
         kernel_size = load_uimage(filename, &bios_entry, &loadaddr, NULL,
                                   NULL, NULL);
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load firmware '%s'\n", filename);
+            error_report("qemu: could not load firmware '%s'", filename);
             exit(1);
         }
     }
@@ -1037,7 +1037,7 @@ void ppce500_init(MachineState *machine, PPCE500Params *params)
                                        initrd_base, initrd_size,
                                        kernel_base, kernel_size);
     if (dt_size < 0) {
-        fprintf(stderr, "couldn't load device tree\n");
+        error_report("couldn't load device tree");
         exit(1);
     }
     assert(dt_size < DTB_MAX_SIZE);
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 33b46cb50b..c0edf22352 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -283,7 +283,7 @@ static void ppc_core99_init(MachineState *machine)
             }
         }
         if (ppc_boot_device == '\0') {
-            fprintf(stderr, "No valid boot device for Mac99 machine\n");
+            error_report("No valid boot device for Mac99 machine");
             exit(1);
         }
     }
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index 193b9047d9..02f03650af 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -226,7 +226,7 @@ static void ppc_heathrow_init(MachineState *machine)
 #endif
         }
         if (ppc_boot_device == '\0') {
-            fprintf(stderr, "No valid boot device for G3 Beige machine\n");
+            error_report("No valid boot device for G3 Beige machine");
             exit(1);
         }
     }
diff --git a/hw/ppc/mpc8544_guts.c b/hw/ppc/mpc8544_guts.c
index ce1254b5d4..3a2c49e3fd 100644
--- a/hw/ppc/mpc8544_guts.c
+++ b/hw/ppc/mpc8544_guts.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/hw.h"
@@ -83,7 +84,7 @@ static uint64_t mpc8544_guts_read(void *opaque, hwaddr addr,
         value = env->spr[SPR_E500_SVR];
         break;
     default:
-        fprintf(stderr, "guts: Unknown register read: %x\n", (int)addr);
+        error_report("guts: Unknown register read: %x", (int)addr);
         break;
     }
 
@@ -102,7 +103,7 @@ static void mpc8544_guts_write(void *opaque, hwaddr addr,
         }
         break;
     default:
-        fprintf(stderr, "guts: Unknown register write: %x = %x\n",
+        error_report("guts: Unknown register write: %x = %x",
                 (int)addr, (unsigned)value);
         break;
     }
diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c
index e92db2c66a..0a31a1c116 100644
--- a/hw/ppc/ppc405_boards.c
+++ b/hw/ppc/ppc405_boards.c
@@ -324,7 +324,7 @@ static void ref405ep_init(MachineState *machine)
         kernel_size = load_image_targphys(kernel_filename, kernel_base,
                                           ram_size - kernel_base);
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
@@ -336,8 +336,8 @@ static void ref405ep_init(MachineState *machine)
             initrd_size = load_image_targphys(initrd_filename, initrd_base,
                                               ram_size - initrd_base);
             if (initrd_size < 0) {
-                fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                        initrd_filename);
+                error_report("qemu: could not load initial ram disk '%s'",
+                             initrd_filename);
                 exit(1);
             }
         } else {
@@ -607,7 +607,7 @@ static void taihu_405ep_init(MachineState *machine)
         kernel_size = load_image_targphys(kernel_filename, kernel_base,
                                           ram_size - kernel_base);
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
index f92d47f28d..77b74dfe9e 100644
--- a/hw/ppc/ppc440_bamboo.c
+++ b/hw/ppc/ppc440_bamboo.c
@@ -12,6 +12,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "net/net.h"
 #include "hw/hw.h"
@@ -80,22 +81,22 @@ static int bamboo_load_device_tree(hwaddr addr,
     ret = qemu_fdt_setprop(fdt, "/memory", "reg", mem_reg_property,
                            sizeof(mem_reg_property));
     if (ret < 0)
-        fprintf(stderr, "couldn't set /memory/reg\n");
+        error_report("couldn't set /memory/reg");
 
     ret = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-start",
                                 initrd_base);
     if (ret < 0)
-        fprintf(stderr, "couldn't set /chosen/linux,initrd-start\n");
+        error_report("couldn't set /chosen/linux,initrd-start");
 
     ret = qemu_fdt_setprop_cell(fdt, "/chosen", "linux,initrd-end",
                                 (initrd_base + initrd_size));
     if (ret < 0)
-        fprintf(stderr, "couldn't set /chosen/linux,initrd-end\n");
+        error_report("couldn't set /chosen/linux,initrd-end");
 
     ret = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs",
                                   kernel_cmdline);
     if (ret < 0)
-        fprintf(stderr, "couldn't set /chosen/bootargs\n");
+        error_report("couldn't set /chosen/bootargs");
 
     /* Copy data from the host device tree into the guest. Since the guest can
      * directly access the timebase without host involvement, we must expose
@@ -190,7 +191,7 @@ static void bamboo_init(MachineState *machine)
     env = &cpu->env;
 
     if (env->mmu_model != POWERPC_MMU_BOOKE) {
-        fprintf(stderr, "MMU model %i not supported by this machine.\n",
+        error_report("MMU model %i not supported by this machine.",
             env->mmu_model);
         exit(1);
     }
@@ -224,7 +225,7 @@ static void bamboo_init(MachineState *machine)
                                 NULL);
     pcibus = (PCIBus *)qdev_get_child_bus(dev, "pci.0");
     if (!pcibus) {
-        fprintf(stderr, "couldn't create PCI controller!\n");
+        error_report("couldn't create PCI controller!");
         exit(1);
     }
 
@@ -265,7 +266,7 @@ static void bamboo_init(MachineState *machine)
         }
         /* XXX try again as binary */
         if (success < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
@@ -277,7 +278,7 @@ static void bamboo_init(MachineState *machine)
                                           ram_size - RAMDISK_ADDR);
 
         if (initrd_size < 0) {
-            fprintf(stderr, "qemu: could not load ram disk '%s' at %x\n",
+            error_report("qemu: could not load ram disk '%s' at %x",
                     initrd_filename, RAMDISK_ADDR);
             exit(1);
         }
@@ -287,7 +288,7 @@ static void bamboo_init(MachineState *machine)
     if (kernel_filename) {
         if (bamboo_load_device_tree(FDT_ADDR, ram_size, RAMDISK_ADDR,
                                     initrd_size, kernel_cmdline) < 0) {
-            fprintf(stderr, "couldn't load device tree\n");
+            error_report("couldn't load device tree");
             exit(1);
         }
     }
diff --git a/hw/ppc/ppc4xx_pci.c b/hw/ppc/ppc4xx_pci.c
index 6953f8b9ac..0b91d22253 100644
--- a/hw/ppc/ppc4xx_pci.c
+++ b/hw/ppc/ppc4xx_pci.c
@@ -20,6 +20,7 @@
  * 4xx SoCs, such as the 440EP. */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/ppc/ppc.h"
 #include "hw/ppc/ppc4xx.h"
@@ -254,7 +255,7 @@ static void ppc4xx_pci_set_irq(void *opaque, int irq_num, int level)
 
     trace_ppc4xx_pci_set_irq(irq_num);
     if (irq_num < 0) {
-        fprintf(stderr, "%s: PCI irq %d\n", __func__, irq_num);
+        error_report("%s: PCI irq %d", __func__, irq_num);
         return;
     }
     qemu_set_irq(pci_irqs[irq_num], level);
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 94138a4e8c..7551d53fa5 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -576,7 +576,7 @@ static void ppc_prep_init(MachineState *machine)
             }
         }
         if (ppc_boot_device == '\0') {
-            fprintf(stderr, "No valid boot device for Mac99 machine\n");
+            error_report("No valid boot device for Mac99 machine");
             exit(1);
         }
     }
@@ -597,7 +597,7 @@ static void ppc_prep_init(MachineState *machine)
     qdev_init_nofail(dev);
     pci_bus = (PCIBus *)qdev_get_child_bus(dev, "pci.0");
     if (pci_bus == NULL) {
-        fprintf(stderr, "Couldn't create PCI host controller.\n");
+        error_report("Couldn't create PCI host controller.");
         exit(1);
     }
     sysctrl->contiguous_map_irq = qdev_get_gpio_in(dev, 0);
diff --git a/hw/ppc/virtex_ml507.c b/hw/ppc/virtex_ml507.c
index ed9b406fd3..7641737f81 100644
--- a/hw/ppc/virtex_ml507.c
+++ b/hw/ppc/virtex_ml507.c
@@ -187,7 +187,7 @@ static int xilinx_load_device_tree(hwaddr addr,
 
     r = qemu_fdt_setprop_string(fdt, "/chosen", "bootargs", kernel_cmdline);
     if (r < 0)
-        fprintf(stderr, "couldn't set /chosen/bootargs\n");
+        error_report("couldn't set /chosen/bootargs");
     cpu_physical_memory_write(addr, fdt, fdt_size);
     return fdt_size;
 }
@@ -219,7 +219,7 @@ static void virtex_init(MachineState *machine)
     env = &cpu->env;
 
     if (env->mmu_model != POWERPC_MMU_BOOKE) {
-        fprintf(stderr, "MMU model %i not supported by this machine.\n",
+        error_report("MMU model %i not supported by this machine.",
             env->mmu_model);
         exit(1);
     }
diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index ff1bb1534c..d3c46bc01f 100644
--- a/hw/s390x/virtio-ccw.c
+++ b/hw/s390x/virtio-ccw.c
@@ -466,7 +466,7 @@ static int virtio_ccw_cb(SubchDev *sch, CCW1 ccw)
                  * passes us zeroes for those we don't support.
                  */
                 if (features.features) {
-                    fprintf(stderr, "Guest bug: features[%i]=%x (expected 0)\n",
+                    error_report("Guest bug: features[%i]=%x (expected 0)",
                             features.index, features.features);
                     /* XXX: do a unit check here? */
                 }
diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index 3e56ab267c..3e2b24e67d 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -14,7 +14,7 @@
  */
 
 #include "qemu/osdep.h"
-
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/pci/pci.h"
 #include "hw/scsi/scsi.h"
@@ -1501,7 +1501,7 @@ again:
            This is apparently sufficient to beat the drivers into submission.
          */
         if (!(s->sien0 & LSI_SIST0_UDC))
-            fprintf(stderr, "inf. loop with UDC masked\n");
+            error_report("inf. loop with UDC masked");
         lsi_script_scsi_interrupt(s, LSI_SIST0_UDC, 0);
         lsi_disconnect(s);
     } else if (s->istat1 & LSI_ISTAT1_SRUN && !s->waiting) {
diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c
index 360db53ac8..8c4eabcf3d 100644
--- a/hw/scsi/spapr_vscsi.c
+++ b/hw/scsi/spapr_vscsi.c
@@ -32,6 +32,7 @@
  *  - Maybe do autosense (PAPR seems to mandate it, linux doesn't care)
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "cpu.h"
 #include "hw/hw.h"
@@ -179,7 +180,7 @@ static int vscsi_send_iu(VSCSIState *s, vscsi_req *req,
     rc = spapr_vio_dma_write(&s->vdev, req->crq.s.IU_data_ptr,
                              &req->iu, length);
     if (rc) {
-        fprintf(stderr, "vscsi_send_iu: DMA write failure !\n");
+        error_report("vscsi_send_iu: DMA write failure !");
     }
 
     req->crq.s.valid = 0x80;
@@ -197,7 +198,7 @@ static int vscsi_send_iu(VSCSIState *s, vscsi_req *req,
 
     rc1 = spapr_vio_send_crq(&s->vdev, req->crq.raw);
     if (rc1) {
-        fprintf(stderr, "vscsi_send_iu: Error sending response\n");
+        error_report("vscsi_send_iu: Error sending response");
         return rc1;
     }
 
@@ -330,7 +331,7 @@ static int vscsi_fetch_desc(VSCSIState *s, struct vscsi_req *req,
         break;
     }
     default:
-        fprintf(stderr, "VSCSI:   Unknown format %x\n", req->dma_fmt);
+        error_report("VSCSI:   Unknown format %x", req->dma_fmt);
         return -1;
     }
 
@@ -518,7 +519,7 @@ static void vscsi_transfer_data(SCSIRequest *sreq, uint32_t len)
 
     trace_spapr_vscsi_transfer_data(sreq->tag, len, req);
     if (req == NULL) {
-        fprintf(stderr, "VSCSI: Can't find request for tag 0x%x\n", sreq->tag);
+        error_report("VSCSI: Can't find request for tag 0x%x", sreq->tag);
         return;
     }
 
@@ -527,7 +528,7 @@ static void vscsi_transfer_data(SCSIRequest *sreq, uint32_t len)
         rc = vscsi_srp_transfer_data(s, req, req->writing, buf, len);
     }
     if (rc < 0) {
-        fprintf(stderr, "VSCSI: RDMA error rc=%d!\n", rc);
+        error_report("VSCSI: RDMA error rc=%d!", rc);
         req->dma_error = true;
         scsi_req_cancel(req->sreq);
         return;
@@ -547,7 +548,7 @@ static void vscsi_command_complete(SCSIRequest *sreq, uint32_t status, size_t re
 
     trace_spapr_vscsi_command_complete(sreq->tag, status, req);
     if (req == NULL) {
-        fprintf(stderr, "VSCSI: Can't find request for tag 0x%x\n", sreq->tag);
+        error_report("VSCSI: Can't find request for tag 0x%x", sreq->tag);
         return;
     }
 
@@ -639,7 +640,7 @@ static void *vscsi_load_request(QEMUFile *f, SCSIRequest *sreq)
     memset(req, 0, sizeof(*req));
     rc = vmstate_load_state(f, &vmstate_spapr_vscsi_req, req, 1);
     if (rc) {
-        fprintf(stderr, "VSCSI: failed loading request tag#%u\n", sreq->tag);
+        error_report("VSCSI: failed loading request tag#%u", sreq->tag);
         return NULL;
     }
     assert(req->active);
@@ -827,7 +828,7 @@ static int vscsi_process_tsk_mgmt(VSCSIState *s, vscsi_req *req)
     uint64_t tag = iu->srp.rsp.tag;
     uint8_t sol_not = iu->srp.cmd.sol_not;
 
-    fprintf(stderr, "vscsi_process_tsk_mgmt %02x\n",
+    error_report("vscsi_process_tsk_mgmt %02x",
             iu->srp.tsk_mgmt.tsk_mgmt_func);
 
     d = vscsi_device_find(&s->bus, be64_to_cpu(req->iu.srp.tsk_mgmt.lun), &lun);
@@ -932,10 +933,10 @@ static int vscsi_handle_srp_req(VSCSIState *s, vscsi_req *req)
     case SRP_CRED_RSP:
     case SRP_AER_REQ:
     case SRP_AER_RSP:
-        fprintf(stderr, "VSCSI: Unsupported opcode %02x\n", opcode);
+        error_report("VSCSI: Unsupported opcode %02x", opcode);
         break;
     default:
-        fprintf(stderr, "VSCSI: Unknown type %02x\n", opcode);
+        error_report("VSCSI: Unknown type %02x", opcode);
     }
 
     return done;
@@ -953,7 +954,7 @@ static int vscsi_send_adapter_info(VSCSIState *s, vscsi_req *req)
     rc = spapr_vio_dma_read(&s->vdev, be64_to_cpu(sinfo->buffer),
                             &info, be16_to_cpu(sinfo->common.length));
     if (rc) {
-        fprintf(stderr, "vscsi_send_adapter_info: DMA read failure !\n");
+        error_report("vscsi_send_adapter_info: DMA read failure !");
     }
 #endif
     memset(&info, 0, sizeof(info));
@@ -967,7 +968,7 @@ static int vscsi_send_adapter_info(VSCSIState *s, vscsi_req *req)
     rc = spapr_vio_dma_write(&s->vdev, be64_to_cpu(sinfo->buffer),
                              &info, be16_to_cpu(sinfo->common.length));
     if (rc)  {
-        fprintf(stderr, "vscsi_send_adapter_info: DMA write failure !\n");
+        error_report("vscsi_send_adapter_info: DMA write failure !");
     }
 
     sinfo->common.status = rc ? cpu_to_be32(1) : 0;
@@ -987,7 +988,7 @@ static int vscsi_send_capabilities(VSCSIState *s, vscsi_req *req)
     req_len = len = be16_to_cpu(vcap->common.length);
     buffer = be64_to_cpu(vcap->buffer);
     if (len > sizeof(cap)) {
-        fprintf(stderr, "vscsi_send_capabilities: capabilities size mismatch !\n");
+        error_report("vscsi_send_capabilities: capabilities size mismatch !");
 
         /*
          * Just read and populate the structure that is known.
@@ -997,7 +998,7 @@ static int vscsi_send_capabilities(VSCSIState *s, vscsi_req *req)
     }
     rc = spapr_vio_dma_read(&s->vdev, buffer, &cap, len);
     if (rc)  {
-        fprintf(stderr, "vscsi_send_capabilities: DMA read failure !\n");
+        error_report("vscsi_send_capabilities: DMA read failure !");
     }
 
     /*
@@ -1013,7 +1014,7 @@ static int vscsi_send_capabilities(VSCSIState *s, vscsi_req *req)
 
     rc = spapr_vio_dma_write(&s->vdev, buffer, &cap, len);
     if (rc)  {
-        fprintf(stderr, "vscsi_send_capabilities: DMA write failure !\n");
+        error_report("vscsi_send_capabilities: DMA write failure !");
     }
     if (req_len > len) {
         /*
@@ -1034,11 +1035,11 @@ static int vscsi_handle_mad_req(VSCSIState *s, vscsi_req *req)
 
     switch (be32_to_cpu(mad->empty_iu.common.type)) {
     case VIOSRP_EMPTY_IU_TYPE:
-        fprintf(stderr, "Unsupported EMPTY MAD IU\n");
+        error_report("Unsupported EMPTY MAD IU");
         retlen = sizeof(mad->empty_iu);
         break;
     case VIOSRP_ERROR_LOG_TYPE:
-        fprintf(stderr, "Unsupported ERROR LOG MAD IU\n");
+        error_report("Unsupported ERROR LOG MAD IU");
         retlen = sizeof(mad->error_log);
         break;
     case VIOSRP_ADAPTER_INFO_TYPE:
@@ -1053,7 +1054,7 @@ static int vscsi_handle_mad_req(VSCSIState *s, vscsi_req *req)
         request_handled = true;
         break;
     default:
-        fprintf(stderr, "VSCSI: Unknown MAD type %02x\n",
+        error_report("VSCSI: Unknown MAD type %02x",
                 be32_to_cpu(mad->empty_iu.common.type));
         /*
          * PAPR+ says that "The length field is set to the length
@@ -1078,7 +1079,7 @@ static void vscsi_got_payload(VSCSIState *s, vscsi_crq *crq)
 
     req = vscsi_get_req(s);
     if (req == NULL) {
-        fprintf(stderr, "VSCSI: Failed to get a request !\n");
+        error_report("VSCSI: Failed to get a request !");
         return;
     }
 
@@ -1088,7 +1089,7 @@ static void vscsi_got_payload(VSCSIState *s, vscsi_crq *crq)
      * of the structure.
      */
     if (crq->s.IU_length > sizeof(union viosrp_iu)) {
-        fprintf(stderr, "VSCSI: SRP IU too long (%d bytes) !\n",
+        error_report("VSCSI: SRP IU too long (%d bytes) !",
                 crq->s.IU_length);
         vscsi_put_req(req);
         return;
@@ -1097,7 +1098,7 @@ static void vscsi_got_payload(VSCSIState *s, vscsi_crq *crq)
     /* XXX Handle failure differently ? */
     if (spapr_vio_dma_read(&s->vdev, crq->s.IU_data_ptr, &req->iu,
                            crq->s.IU_length)) {
-        fprintf(stderr, "vscsi_got_payload: DMA read failure !\n");
+        error_report("vscsi_got_payload: DMA read failure !");
         vscsi_put_req(req);
         return;
     }
@@ -1158,16 +1159,16 @@ static int vscsi_do_crq(struct VIOsPAPRDevice *dev, uint8_t *crq_data)
         case VIOSRP_AIX_FORMAT:
         case VIOSRP_LINUX_FORMAT:
         case VIOSRP_INLINE_FORMAT:
-            fprintf(stderr, "vscsi_do_srq: Unsupported payload format %02x\n",
+            error_report("vscsi_do_srq: Unsupported payload format %02x",
                     crq.s.format);
             break;
         default:
-            fprintf(stderr, "vscsi_do_srq: Unknown payload format %02x\n",
+            error_report("vscsi_do_srq: Unknown payload format %02x",
                     crq.s.format);
         }
         break;
     default:
-        fprintf(stderr, "vscsi_do_crq: unknown CRQ %02x %02x ...\n",
+        error_report("vscsi_do_crq: unknown CRQ %02x %02x ...",
                 crq.raw[0], crq.raw[1]);
     };
 
diff --git a/hw/scsi/virtio-scsi-dataplane.c b/hw/scsi/virtio-scsi-dataplane.c
index add4b3f4a4..e047361310 100644
--- a/hw/scsi/virtio-scsi-dataplane.c
+++ b/hw/scsi/virtio-scsi-dataplane.c
@@ -97,7 +97,7 @@ static int virtio_scsi_vring_init(VirtIOSCSI *s, VirtQueue *vq, int n,
     /* Set up virtqueue notify */
     rc = virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), n, true);
     if (rc != 0) {
-        fprintf(stderr, "virtio-scsi: Failed to set host notifier (%d)\n",
+        error_report("virtio-scsi: Failed to set host notifier (%d)",
                 rc);
         s->dataplane_fenced = true;
         return rc;
@@ -141,8 +141,8 @@ int virtio_scsi_dataplane_start(VirtIODevice *vdev)
     /* Set up guest notifier (irq) */
     rc = k->set_guest_notifiers(qbus->parent, vs->conf.num_queues + 2, true);
     if (rc != 0) {
-        fprintf(stderr, "virtio-scsi: Failed to set guest notifiers (%d), "
-                "ensure -enable-kvm is set\n", rc);
+        error_report("virtio-scsi: Failed to set guest notifiers (%d), "
+                "ensure -enable-kvm is set", rc);
         goto fail_guest_notifiers;
     }
 
diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c
index 55c8098ecd..2b878a0c5e 100644
--- a/hw/sd/pl181.c
+++ b/hw/sd/pl181.c
@@ -8,6 +8,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "sysemu/block-backend.h"
 #include "sysemu/blockdev.h"
 #include "hw/sysbus.h"
@@ -146,7 +147,7 @@ static void pl181_fifo_push(PL181State *s, uint32_t value)
     int n;
 
     if (s->fifo_len == PL181_FIFO_LEN) {
-        fprintf(stderr, "pl181: FIFO overflow\n");
+        error_report("pl181: FIFO overflow");
         return;
     }
     n = (s->fifo_pos + s->fifo_len) & (PL181_FIFO_LEN - 1);
@@ -160,7 +161,7 @@ static uint32_t pl181_fifo_pop(PL181State *s)
     uint32_t value;
 
     if (s->fifo_len == 0) {
-        fprintf(stderr, "pl181: FIFO underflow\n");
+        error_report("pl181: FIFO underflow");
         return 0;
     }
     value = s->fifo[s->fifo_pos];
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index ba47bff4db..e467d74fc8 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -700,7 +700,7 @@ static void sd_lock_command(SDState *sd)
         sd->card_status &= ~CARD_IS_LOCKED;
         sd->pwd_len = 0;
         /* Erasing the entire card here! */
-        fprintf(stderr, "SD: Card force-erased by CMD42\n");
+        error_report("SD: Card force-erased by CMD42");
         return;
     }
 
@@ -1282,7 +1282,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
         return sd_r1;
 
     case 56:	/* CMD56:  GEN_CMD */
-        fprintf(stderr, "SD: GEN_CMD 0x%08x\n", req.arg);
+        error_report("SD: GEN_CMD 0x%08x", req.arg);
 
         switch (sd->state) {
         case sd_transfer_state:
@@ -1565,10 +1565,10 @@ send_response:
         int i;
         DPRINTF("Response:");
         for (i = 0; i < rsplen; i++)
-            fprintf(stderr, " %02x", response[i]);
-        fprintf(stderr, " state %d\n", sd->state);
+            error_report(" %02x", response[i]);
+        error_report(" state %d", sd->state);
     } else {
-        DPRINTF("No response %d\n", sd->state);
+        DPRINTF("No response %d", sd->state);
     }
 #endif
 
@@ -1580,14 +1580,14 @@ static void sd_blk_read(SDState *sd, uint64_t addr, uint32_t len)
     DPRINTF("sd_blk_read: addr = 0x%08llx, len = %d\n",
             (unsigned long long) addr, len);
     if (!sd->blk || blk_pread(sd->blk, addr, sd->data, len) < 0) {
-        fprintf(stderr, "sd_blk_read: read error on host side\n");
+        error_report("sd_blk_read: read error on host side");
     }
 }
 
 static void sd_blk_write(SDState *sd, uint64_t addr, uint32_t len)
 {
     if (!sd->blk || blk_pwrite(sd->blk, addr, sd->data, len, 0) < 0) {
-        fprintf(stderr, "sd_blk_write: write error on host side\n");
+        error_report("sd_blk_write: write error on host side");
     }
 }
 
diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c
index 16b9ed2db2..a010f559e2 100644
--- a/hw/sh4/r2d.c
+++ b/hw/sh4/r2d.c
@@ -24,6 +24,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -319,8 +320,8 @@ static void r2d_init(MachineState *machine)
                                           SDRAM_BASE + LINUX_LOAD_OFFSET,
                                           INITRD_LOAD_OFFSET - LINUX_LOAD_OFFSET);
         if (kernel_size < 0) {
-          fprintf(stderr, "qemu: could not load kernel '%s'\n", kernel_filename);
-          exit(1);
+            error_report("qemu: could not load kernel '%s'", kernel_filename);
+            exit(1);
         }
 
         /* initialization which should be done by firmware */
@@ -339,8 +340,8 @@ static void r2d_init(MachineState *machine)
                                           SDRAM_SIZE - INITRD_LOAD_OFFSET);
 
         if (initrd_size < 0) {
-          fprintf(stderr, "qemu: could not load initrd '%s'\n", initrd_filename);
-          exit(1);
+            error_report("qemu: could not load initrd '%s'", initrd_filename);
+            exit(1);
         }
 
         /* initialization which should be done by firmware */
diff --git a/hw/sh4/sh7750.c b/hw/sh4/sh7750.c
index 166e4bd947..64ffc4c1d2 100644
--- a/hw/sh4/sh7750.c
+++ b/hw/sh4/sh7750.c
@@ -23,6 +23,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/sh4/sh.h"
 #include "sysemu/sysemu.h"
@@ -147,9 +148,9 @@ static void porta_changed(SH7750State * s, uint16_t prev)
     int i, r = 0;
 
 #if 0
-    fprintf(stderr, "porta changed from 0x%04x to 0x%04x\n",
+    error_report("porta changed from 0x%04x to 0x%04x",
 	    prev, porta_lines(s));
-    fprintf(stderr, "pdtra=0x%04x, pctra=0x%08x\n", s->pdtra, s->pctra);
+    error_report("pdtra=0x%04x, pctra=0x%08x", s->pdtra, s->pctra);
 #endif
     currenta = porta_lines(s);
     if (currenta == prev)
@@ -200,13 +201,13 @@ static void portb_changed(SH7750State * s, uint16_t prev)
 
 static void error_access(const char *kind, hwaddr addr)
 {
-    fprintf(stderr, "%s to %s (0x" TARGET_FMT_plx ") not supported\n",
+    error_report("%s to %s (0x" TARGET_FMT_plx ") not supported",
 	    kind, regname(addr), addr);
 }
 
 static void ignore_access(const char *kind, hwaddr addr)
 {
-    fprintf(stderr, "%s to %s (0x" TARGET_FMT_plx ") ignored\n",
+    error_report("%s to %s (0x" TARGET_FMT_plx ") ignored",
 	    kind, regname(addr), addr);
 }
 
@@ -326,47 +327,48 @@ static void sh7750_mem_writew(void *opaque, hwaddr addr,
     uint16_t temp;
 
     switch (addr) {
-	/* SDRAM controller */
+    /* SDRAM controller */
     case SH7750_BCR2_A7:
         s->bcr2 = mem_value;
         return;
     case SH7750_BCR3_A7:
-	if(!has_bcr3_and_bcr4(s))
-	    error_access("word write", addr);
-	s->bcr3 = mem_value;
-	return;
+        if (!has_bcr3_and_bcr4(s)) {
+            error_access("word write", addr);
+        }
+        s->bcr3 = mem_value;
+        return;
     case SH7750_PCR_A7:
-	s->pcr = mem_value;
-	return;
+        s->pcr = mem_value;
+        return;
     case SH7750_RTCNT_A7:
     case SH7750_RTCOR_A7:
     case SH7750_RTCSR_A7:
-	ignore_access("word write", addr);
-	return;
-	/* IO ports */
+        ignore_access("word write", addr);
+        return;
+        /* IO ports */
     case SH7750_PDTRA_A7:
-	temp = porta_lines(s);
-	s->pdtra = mem_value;
-	porta_changed(s, temp);
-	return;
+        temp = porta_lines(s);
+        s->pdtra = mem_value;
+        porta_changed(s, temp);
+        return;
     case SH7750_PDTRB_A7:
-	temp = portb_lines(s);
-	s->pdtrb = mem_value;
-	portb_changed(s, temp);
-	return;
+        temp = portb_lines(s);
+        s->pdtrb = mem_value;
+        portb_changed(s, temp);
+        return;
     case SH7750_RFCR_A7:
-	fprintf(stderr, "Write access to refresh count register\n");
-	s->rfcr = mem_value;
-	return;
+        error_report("Write access to refresh count register");
+        s->rfcr = mem_value;
+        return;
     case SH7750_GPIOIC_A7:
-	s->gpioic = mem_value;
-	if (mem_value != 0) {
-	    fprintf(stderr, "I/O interrupts not implemented\n");
+        s->gpioic = mem_value;
+        if (mem_value != 0) {
+            error_report("I/O interrupts not implemented");
             abort();
-	}
-	return;
+        }
+        return;
     default:
-	error_access("word write", addr);
+        error_access("word write", addr);
         abort();
     }
 }
diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
index ec2816bf94..d434edec92 100644
--- a/hw/sparc/leon3.c
+++ b/hw/sparc/leon3.c
@@ -22,6 +22,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -172,7 +173,7 @@ static void leon3_generic_hw_init(MachineState *machine)
     }
 
     if (bios_size > prom_size) {
-        fprintf(stderr, "qemu: could not load prom '%s': file too big\n",
+        error_report("qemu: could not load prom '%s': file too big",
                 filename);
         exit(1);
     }
@@ -180,11 +181,11 @@ static void leon3_generic_hw_init(MachineState *machine)
     if (bios_size > 0) {
         ret = load_image_targphys(filename, 0x00000000, bios_size);
         if (ret < 0 || ret > prom_size) {
-            fprintf(stderr, "qemu: could not load prom '%s'\n", filename);
+            error_report("qemu: could not load prom '%s'", filename);
             exit(1);
         }
     } else if (kernel_filename == NULL && !qtest_enabled()) {
-        fprintf(stderr, "Can't read bios image %s\n", filename);
+        error_report("Can't read bios image %s", filename);
         exit(1);
     }
     g_free(filename);
@@ -197,7 +198,7 @@ static void leon3_generic_hw_init(MachineState *machine)
         kernel_size = load_elf(kernel_filename, NULL, NULL, &entry, NULL, NULL,
                                1 /* big endian */, EM_SPARC, 0, 0);
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index e1bdd4828d..7a2812aaa4 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -261,7 +261,7 @@ static unsigned long sun4m_load_kernel(const char *kernel_filename,
                                               KERNEL_LOAD_ADDR,
                                               RAM_size - KERNEL_LOAD_ADDR);
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
@@ -273,8 +273,8 @@ static unsigned long sun4m_load_kernel(const char *kernel_filename,
                                               INITRD_LOAD_ADDR,
                                               RAM_size - INITRD_LOAD_ADDR);
             if (initrd_size < 0) {
-                fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                        initrd_filename);
+                error_report("qemu: could not load initial ram disk '%s'",
+                             initrd_filename);
                 exit(1);
             }
         }
@@ -688,7 +688,7 @@ static void prom_init(hwaddr addr, const char *bios_name)
         ret = -1;
     }
     if (ret < 0 || ret > PROM_SIZE_MAX) {
-        fprintf(stderr, "qemu: could not load prom '%s'\n", bios_name);
+        error_report("qemu: could not load prom '%s'", bios_name);
         exit(1);
     }
 }
diff --git a/hw/sparc64/niagara.c b/hw/sparc64/niagara.c
index 9a8d6109d4..60799220f3 100644
--- a/hw/sparc64/niagara.c
+++ b/hw/sparc64/niagara.c
@@ -153,7 +153,7 @@ static void niagara_init(MachineState *machine)
             dinfo->is_default = 1;
             rom_add_file_fixed(blk_bs(blk)->filename, NIAGARA_VDISK_BASE, -1);
         } else {
-            fprintf(stderr, "qemu: could not load ram disk '%s'\n",
+            error_report("qemu: could not load ram disk '%s'",
                     blk_bs(blk)->filename);
             exit(1);
         }
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index c3280aaf38..070d9b94f9 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -22,6 +22,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "cpu.h"
@@ -165,7 +166,7 @@ static uint64_t sun4u_load_kernel(const char *kernel_filename,
                                               RAM_size - KERNEL_LOAD_ADDR);
         }
         if (kernel_size < 0) {
-            fprintf(stderr, "qemu: could not load kernel '%s'\n",
+            error_report("qemu: could not load kernel '%s'",
                     kernel_filename);
             exit(1);
         }
@@ -178,8 +179,8 @@ static uint64_t sun4u_load_kernel(const char *kernel_filename,
                                                *initrd_addr,
                                                RAM_size - *initrd_addr);
             if ((int)*initrd_size < 0) {
-                fprintf(stderr, "qemu: could not load initial ram disk '%s'\n",
-                        initrd_filename);
+                error_report("qemu: could not load initial ram disk '%s'",
+                             initrd_filename);
                 exit(1);
             }
         }
@@ -322,7 +323,7 @@ static void prom_init(hwaddr addr, const char *bios_name)
         ret = -1;
     }
     if (ret < 0 || ret > PROM_SIZE_MAX) {
-        fprintf(stderr, "qemu: could not load prom '%s'\n", bios_name);
+        error_report("qemu: could not load prom '%s'", bios_name);
         exit(1);
     }
 }
diff --git a/hw/ssi/omap_spi.c b/hw/ssi/omap_spi.c
index 34163e5646..98242d1e8b 100644
--- a/hw/ssi/omap_spi.c
+++ b/hw/ssi/omap_spi.c
@@ -20,6 +20,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "hw/arm/omap.h"
 
@@ -295,9 +296,9 @@ static void omap_mcspi_write(void *opaque, hwaddr addr,
         if ((value ^ s->ch[ch].config) & (3 << 14))	/* DMAR | DMAW */
             omap_mcspi_dmarequest_update(s->ch + ch);
         if (((value >> 12) & 3) == 3)			/* TRM */
-            fprintf(stderr, "%s: invalid TRM value (3)\n", __func__);
+            error_report("%s: invalid TRM value (3)", __func__);
         if (((value >> 7) & 0x1f) < 3)			/* WL */
-            fprintf(stderr, "%s: invalid WL value (%" PRIx64 ")\n",
+            error_report("%s: invalid WL value (%" PRIx64 ")",
                             __func__, (value >> 7) & 0x1f);
         s->ch[ch].config = value & 0x7fffff;
         break;
diff --git a/hw/timer/omap_gptimer.c b/hw/timer/omap_gptimer.c
index ae2dc99832..0f064241d3 100644
--- a/hw/timer/omap_gptimer.c
+++ b/hw/timer/omap_gptimer.c
@@ -18,6 +18,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "hw/arm/omap.h"
@@ -356,7 +357,7 @@ static void omap_gp_timer_write(void *opaque, hwaddr addr,
     case 0x10:	/* TIOCP_CFG */
         s->config = value & 0x33d;
         if (((value >> 3) & 3) == 3)				/* IDLEMODE */
-            fprintf(stderr, "%s: illegal IDLEMODE value in TIOCP_CFG\n",
+            error_report("%s: illegal IDLEMODE value in TIOCP_CFG",
                             __func__);
         if (value & 2)						/* SOFTRESET */
             omap_gp_timer_reset(s);
@@ -394,11 +395,11 @@ static void omap_gp_timer_write(void *opaque, hwaddr addr,
         s->ar = (value >> 1) & 1;
         s->st = (value >> 0) & 1;
         if (s->inout && s->trigger != gpt_trigger_none)
-            fprintf(stderr, "%s: GP timer pin must be an output "
-                            "for this trigger mode\n", __func__);
+            error_report("%s: GP timer pin must be an output "
+                         "for this trigger mode", __func__);
         if (!s->inout && s->capture != gpt_capture_none)
-            fprintf(stderr, "%s: GP timer pin must be an input "
-                            "for this capture mode\n", __func__);
+            error_report("%s: GP timer pin must be an input "
+                         "for this capture mode", __func__);
         if (s->trigger == gpt_trigger_none)
             omap_gp_timer_out(s, s->scpwm);
         /* TODO: make sure this doesn't overflow 32-bits */
diff --git a/hw/timer/twl92230.c b/hw/timer/twl92230.c
index 87e334af24..3ade0ba929 100644
--- a/hw/timer/twl92230.c
+++ b/hw/timer/twl92230.c
@@ -614,7 +614,7 @@ static void menelaus_write(void *opaque, uint8_t addr, uint8_t value)
             break;
         rtc_badness:
         default:
-            fprintf(stderr, "%s: bad RTC_UPDATE value %02x\n",
+            error_report("%s: bad RTC_UPDATE value %02x",
                             __func__, value);
             s->status |= 1 << 10;				/* RTCERR */
             menelaus_update(s);
diff --git a/hw/timer/xilinx_timer.c b/hw/timer/xilinx_timer.c
index 59439c05be..a80bba846b 100644
--- a/hw/timer/xilinx_timer.c
+++ b/hw/timer/xilinx_timer.c
@@ -127,7 +127,7 @@ timer_read(void *opaque, hwaddr addr, unsigned int size)
             break;
 
     }
-    D(fprintf(stderr, "%s timer=%d %x=%x\n", __func__, timer, addr * 4, r));
+    D(error_report("%s timer=%d %x=%x", __func__, timer, addr * 4, r));
     return r;
 }
 
@@ -135,7 +135,7 @@ static void timer_enable(struct xlx_timer *xt)
 {
     uint64_t count;
 
-    D(fprintf(stderr, "%s timer=%d down=%d\n", __func__,
+    D(error_report("%s timer=%d down=%d", __func__,
               xt->nr, xt->regs[R_TCSR] & TCSR_UDT));
 
     ptimer_stop(xt->ptimer);
@@ -160,7 +160,7 @@ timer_write(void *opaque, hwaddr addr,
     addr >>= 2;
     timer = timer_from_addr(addr);
     xt = &t->timers[timer];
-    D(fprintf(stderr, "%s addr=%x val=%x (timer=%d off=%d)\n",
+    D(error_report("%s addr=%x val=%x (timer=%d off=%d)",
              __func__, addr * 4, value, timer, addr & 3));
     /* Further decoding to address a specific timers reg.  */
     addr &= 3;
@@ -197,7 +197,7 @@ static void timer_hit(void *opaque)
 {
     struct xlx_timer *xt = opaque;
     struct timerblock *t = xt->parent;
-    D(fprintf(stderr, "%s %d\n", __func__, xt->nr));
+    D(error_report("%s %d", __func__, xt->nr));
     xt->regs[R_TCSR] |= TCSR_TINT;
 
     if (xt->regs[R_TCSR] & TCSR_ARHT)
diff --git a/hw/usb/core.c b/hw/usb/core.c
index 241ae66b15..9ffdef055c 100644
--- a/hw/usb/core.c
+++ b/hw/usb/core.c
@@ -24,6 +24,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "hw/usb.h"
 #include "qemu/iov.h"
@@ -599,7 +600,7 @@ void usb_packet_copy(USBPacket *p, void *ptr, size_t bytes)
         iov_from_buf(iov->iov, iov->niov, p->actual_length, ptr, bytes);
         break;
     default:
-        fprintf(stderr, "%s: invalid pid: %x\n", __func__, p->pid);
+        error_report("%s: invalid pid: %x", __func__, p->pid);
         abort();
     }
     p->actual_length += bytes;
@@ -681,7 +682,7 @@ void usb_ep_dump(USBDevice *dev)
     };
     int ifnum, ep, first;
 
-    fprintf(stderr, "Device \"%s\", config %d\n",
+    error_report("Device \"%s\", config %d",
             dev->product_desc, dev->configuration);
     for (ifnum = 0; ifnum < 16; ifnum++) {
         first = 1;
@@ -690,10 +691,10 @@ void usb_ep_dump(USBDevice *dev)
                 dev->ep_in[ep].ifnum == ifnum) {
                 if (first) {
                     first = 0;
-                    fprintf(stderr, "  Interface %d, alternative %d\n",
+                    error_report("  Interface %d, alternative %d",
                             ifnum, dev->altsetting[ifnum]);
                 }
-                fprintf(stderr, "    Endpoint %d, IN, %s, %d max\n", ep,
+                error_report("    Endpoint %d, IN, %s, %d max", ep,
                         tname[dev->ep_in[ep].type],
                         dev->ep_in[ep].max_packet_size);
             }
@@ -701,16 +702,16 @@ void usb_ep_dump(USBDevice *dev)
                 dev->ep_out[ep].ifnum == ifnum) {
                 if (first) {
                     first = 0;
-                    fprintf(stderr, "  Interface %d, alternative %d\n",
+                    error_report("  Interface %d, alternative %d",
                             ifnum, dev->altsetting[ifnum]);
                 }
-                fprintf(stderr, "    Endpoint %d, OUT, %s, %d max\n", ep,
+                error_report("    Endpoint %d, OUT, %s, %d max", ep,
                         tname[dev->ep_out[ep].type],
                         dev->ep_out[ep].max_packet_size);
             }
         }
     }
-    fprintf(stderr, "--\n");
+    error_report("--");
 }
 
 struct USBEndpoint *usb_ep_get(USBDevice *dev, int pid, int ep)
diff --git a/hw/usb/desc.c b/hw/usb/desc.c
index 85c15addc5..afae910f8e 100644
--- a/hw/usb/desc.c
+++ b/hw/usb/desc.c
@@ -1,5 +1,5 @@
 #include "qemu/osdep.h"
-
+#include "qemu/error-report.h"
 #include "hw/usb.h"
 #include "hw/usb/desc.h"
 #include "trace.h"
@@ -688,7 +688,7 @@ int usb_desc_get_descriptor(USBDevice *dev, USBPacket *p,
         break;
 
     default:
-        fprintf(stderr, "%s: %d unknown type %d (len %zd)\n", __func__,
+        error_report("%s: %d unknown type %d (len %zd)", __func__,
                 dev->addr, type, len);
         break;
     }
diff --git a/hw/usb/dev-audio.c b/hw/usb/dev-audio.c
index 343345235c..43fc20469a 100644
--- a/hw/usb/dev-audio.c
+++ b/hw/usb/dev-audio.c
@@ -30,6 +30,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "hw/usb.h"
 #include "hw/usb/desc.h"
@@ -398,7 +399,7 @@ static int usb_audio_set_output_altset(USBAudioState *s, int altset)
     }
 
     if (s->debug) {
-        fprintf(stderr, "usb-audio: set interface %d\n", altset);
+        error_report("usb-audio: set interface %d", altset);
     }
     s->out.altset = altset;
     return 0;
@@ -478,7 +479,7 @@ static int usb_audio_set_control(USBAudioState *s, uint8_t attrib,
             uint16_t vol = data[0] + (data[1] << 8);
 
             if (s->debug) {
-                fprintf(stderr, "usb-audio: vol %04x\n", (uint16_t)vol);
+                error_report("usb-audio: vol %04x", (uint16_t)vol);
             }
 
             vol -= 0x8000;
@@ -496,7 +497,7 @@ static int usb_audio_set_control(USBAudioState *s, uint8_t attrib,
 
     if (set_vol) {
         if (s->debug) {
-            fprintf(stderr, "usb-audio: mute %d, lvol %3d, rvol %3d\n",
+            error_report("usb-audio: mute %d, lvol %3d, rvol %3d",
                     s->out.mute, s->out.vol[0], s->out.vol[1]);
         }
         AUD_set_volume_out(s->out.voice, s->out.mute,
@@ -514,8 +515,8 @@ static void usb_audio_handle_control(USBDevice *dev, USBPacket *p,
     int ret = 0;
 
     if (s->debug) {
-        fprintf(stderr, "usb-audio: control transaction: "
-                "request 0x%04x value 0x%04x index 0x%04x length 0x%04x\n",
+        error_report("usb-audio: control transaction: "
+                "request 0x%04x value 0x%04x index 0x%04x length 0x%04x",
                 request, value, index, length);
     }
 
@@ -533,7 +534,7 @@ static void usb_audio_handle_control(USBDevice *dev, USBPacket *p,
                                     length, data);
         if (ret < 0) {
             if (s->debug) {
-                fprintf(stderr, "usb-audio: fail: get control\n");
+                error_report("usb-audio: fail: get control");
             }
             goto fail;
         }
@@ -548,7 +549,7 @@ static void usb_audio_handle_control(USBDevice *dev, USBPacket *p,
                                     length, data);
         if (ret < 0) {
             if (s->debug) {
-                fprintf(stderr, "usb-audio: fail: set control\n");
+                error_report("usb-audio: fail: set control");
             }
             goto fail;
         }
@@ -557,8 +558,8 @@ static void usb_audio_handle_control(USBDevice *dev, USBPacket *p,
     default:
 fail:
         if (s->debug) {
-            fprintf(stderr, "usb-audio: failed control transaction: "
-                    "request 0x%04x value 0x%04x index 0x%04x length 0x%04x\n",
+            error_report("usb-audio: failed control transaction: "
+                    "request 0x%04x value 0x%04x index 0x%04x length 0x%04x",
                     request, value, index, length);
         }
         p->status = USB_RET_STALL;
@@ -581,7 +582,7 @@ static void usb_audio_handle_reset(USBDevice *dev)
     USBAudioState *s = USB_AUDIO(dev);
 
     if (s->debug) {
-        fprintf(stderr, "usb-audio: reset\n");
+        error_report("usb-audio: reset");
     }
     usb_audio_set_output_altset(s, ALTSET_OFF);
 }
@@ -595,7 +596,7 @@ static void usb_audio_handle_dataout(USBAudioState *s, USBPacket *p)
 
     streambuf_put(&s->out.buf, p);
     if (p->actual_length < p->iov.size && s->debug > 1) {
-        fprintf(stderr, "usb-audio: output overrun (%zd bytes)\n",
+        error_report("usb-audio: output overrun (%zd bytes)",
                 p->iov.size - p->actual_length);
     }
 }
@@ -611,8 +612,8 @@ static void usb_audio_handle_data(USBDevice *dev, USBPacket *p)
 
     p->status = USB_RET_STALL;
     if (s->debug) {
-        fprintf(stderr, "usb-audio: failed data transaction: "
-                        "pid 0x%x ep 0x%x len 0x%zx\n",
+        error_report("usb-audio: failed data transaction: "
+                        "pid 0x%x ep 0x%x len 0x%zx",
                         p->pid, p->ep->nr, p->iov.size);
     }
 }
@@ -622,7 +623,7 @@ static void usb_audio_unrealize(USBDevice *dev, Error **errp)
     USBAudioState *s = USB_AUDIO(dev);
 
     if (s->debug) {
-        fprintf(stderr, "usb-audio: destroy\n");
+        error_report("usb-audio: destroy");
     }
 
     usb_audio_set_output_altset(s, ALTSET_OFF);
diff --git a/hw/usb/dev-bluetooth.c b/hw/usb/dev-bluetooth.c
index 0bbceaea0b..dfef258dca 100644
--- a/hw/usb/dev-bluetooth.c
+++ b/hw/usb/dev-bluetooth.c
@@ -274,13 +274,13 @@ static void usb_bt_fifo_enqueue(struct usb_hci_in_fifo_s *fifo,
     if (off <= DFIFO_LEN_MASK) {
         if (off + len > DFIFO_LEN_MASK + 1 &&
                         (fifo->dsize = off + len) > (DFIFO_LEN_MASK + 1) * 2) {
-            fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
+            error_report("%s: can't alloc %i bytes", __func__, len);
             exit(-1);
         }
         buf = fifo->data + off;
     } else {
         if (fifo->dlen > fifo->dsize) {
-            fprintf(stderr, "%s: can't alloc %i bytes\n", __func__, len);
+            error_report("%s: can't alloc %i bytes", __func__, len);
             exit(-1);
         }
         buf = fifo->data + off - fifo->dsize;
diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c
index 94c2e94f10..7e1782b8fc 100644
--- a/hw/usb/dev-mtp.c
+++ b/hw/usb/dev-mtp.c
@@ -10,6 +10,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include <wchar.h>
 #include <dirent.h>
@@ -546,7 +547,7 @@ static void inotify_watchfn(void *arg)
                 break;
 
             default:
-                fprintf(stderr, "usb-mtp: failed to parse inotify event\n");
+                error_report("usb-mtp: failed to parse inotify event");
                 continue;
             }
 
@@ -617,7 +618,7 @@ static void usb_mtp_object_readdir(MTPState *s, MTPObject *o)
 #ifdef CONFIG_INOTIFY1
     int watchfd = usb_mtp_add_watch(s->inotifyfd, o->path);
     if (watchfd == -1) {
-        fprintf(stderr, "usb-mtp: failed to add watch for %s\n", o->path);
+        error_report("usb-mtp: failed to add watch for %s", o->path);
     } else {
         trace_usb_mtp_inotify_event(s->dev.addr, o->path,
                                     0, "Watch Added");
@@ -1144,7 +1145,7 @@ static void usb_mtp_command(MTPState *s, MTPControl *c)
         usb_mtp_object_alloc(s, s->next_handle++, NULL, s->root);
 #ifdef CONFIG_INOTIFY1
         if (usb_mtp_inotify_init(s)) {
-            fprintf(stderr, "usb-mtp: file monitoring init failed\n");
+            error_report("usb-mtp: file monitoring init failed");
         }
 #endif
         break;
@@ -1348,7 +1349,7 @@ static void usb_mtp_handle_control(USBDevice *dev, USBPacket *p,
 static void usb_mtp_cancel_packet(USBDevice *dev, USBPacket *p)
 {
     /* we don't use async packets, so this should never be called */
-    fprintf(stderr, "%s\n", __func__);
+    error_report("%s", __func__);
 }
 
 static void usb_mtp_handle_data(USBDevice *dev, USBPacket *p)
diff --git a/hw/usb/dev-network.c b/hw/usb/dev-network.c
index 85fc81bf43..9dd4af5e34 100644
--- a/hw/usb/dev-network.c
+++ b/hw/usb/dev-network.c
@@ -815,7 +815,7 @@ static int ndis_query(USBNetState *s, uint32_t oid,
         return sizeof(le32);
 
     default:
-        fprintf(stderr, "usbnet: unknown OID 0x%08x\n", oid);
+        error_report("usbnet: unknown OID 0x%08x", oid);
         return 0;
     }
     return -1;
@@ -1084,9 +1084,9 @@ static void usb_net_handle_control(USBDevice *dev, USBPacket *p,
             for (i = 0; i < length; i++) {
                 if (!(i & 15))
                     fprintf(stderr, "\n%04x:", i);
-                fprintf(stderr, " %02x", data[i]);
+                error_report(" %02x", data[i]);
             }
-            fprintf(stderr, "\n\n");
+            fprintf(stderr, "\n");
         }
 #endif
         ret = rndis_parse(s, data, length);
@@ -1111,17 +1111,17 @@ static void usb_net_handle_control(USBDevice *dev, USBPacket *p,
             for (i = 0; i < p->actual_length; i++) {
                 if (!(i & 15))
                     fprintf(stderr, "\n%04x:", i);
-                fprintf(stderr, " %02x", data[i]);
+                error_report(" %02x", data[i]);
             }
-            fprintf(stderr, "\n\n");
+            fprintf(stderr, "\n");
         }
 #endif
         break;
 
     default:
     fail:
-        fprintf(stderr, "usbnet: failed control transaction: "
-                        "request 0x%x value 0x%x index 0x%x length 0x%x\n",
+        error_report("usbnet: failed control transaction: "
+                        "request 0x%x value 0x%x index 0x%x length 0x%x",
                         request, value, index, length);
         p->status = USB_RET_STALL;
         break;
@@ -1190,7 +1190,7 @@ static void usb_net_handle_dataout(USBNetState *s, USBPacket *p)
     uint32_t len;
 
 #ifdef TRAFFIC_DEBUG
-    fprintf(stderr, "usbnet: data out len %zu\n", p->iov.size);
+    error_report("usbnet: data out len %zu", p->iov.size);
     iov_hexdump(p->iov.iov, p->iov.niov, stderr, "usbnet", p->iov.size);
 #endif
 
@@ -1260,8 +1260,8 @@ static void usb_net_handle_data(USBDevice *dev, USBPacket *p)
     }
 
     if (p->status == USB_RET_STALL) {
-        fprintf(stderr, "usbnet: failed data transaction: "
-                        "pid 0x%x ep 0x%x len 0x%zx\n",
+        error_report("usbnet: failed data transaction: "
+                        "pid 0x%x ep 0x%x len 0x%zx",
                         p->pid, p->ep->nr, p->iov.size);
     }
 }
diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
index 46fd30b075..d6c8a56aec 100644
--- a/hw/usb/hcd-ehci.c
+++ b/hw/usb/hcd-ehci.c
@@ -419,7 +419,7 @@ static int ehci_get_pid(EHCIqtd *qtd)
     case 2:
         return USB_TOKEN_SETUP;
     default:
-        fprintf(stderr, "bad token\n");
+        error_report("bad token");
         return 0;
     }
 }
@@ -1033,7 +1033,7 @@ static void ehci_opreg_write(void *ptr, hwaddr addr,
 
         /* not supporting dynamic frame list size at the moment */
         if ((val & USBCMD_FLS) && !(s->usbcmd & USBCMD_FLS)) {
-            fprintf(stderr, "attempt to set frame list size -- value %d\n",
+            error_report("attempt to set frame list size -- value %d",
                     (int)val & USBCMD_FLS);
             val &= ~USBCMD_FLS;
         }
@@ -1190,7 +1190,7 @@ static int ehci_init_transfer(EHCIPacket *p)
 
     while (bytes > 0) {
         if (cpage > 4) {
-            fprintf(stderr, "cpage out of range (%d)\n", cpage);
+            error_report("cpage out of range (%d)", cpage);
             qemu_sglist_destroy(&p->sgl);
             return -1;
         }
@@ -1296,7 +1296,7 @@ static void ehci_execute_complete(EHCIQueue *q)
         break;
     default:
         /* should not be triggerable */
-        fprintf(stderr, "USB invalid response %d\n", p->packet.status);
+        error_report("USB invalid response %d", p->packet.status);
         g_assert_not_reached();
         break;
     }
@@ -1345,7 +1345,7 @@ static int ehci_execute(EHCIPacket *p, const char *action)
            p->async == EHCI_ASYNC_INITIALIZED);
 
     if (!(p->qtd.token & QTD_TOKEN_ACTIVE)) {
-        fprintf(stderr, "Attempting to execute inactive qtd\n");
+        error_report("Attempting to execute inactive qtd");
         return -1;
     }
 
@@ -1383,7 +1383,7 @@ static int ehci_execute(EHCIPacket *p, const char *action)
             p->packet.actual_length);
 
     if (p->packet.actual_length > BUFF_SIZE) {
-        fprintf(stderr, "ret from usb_handle_packet > BUFF_SIZE\n");
+        error_report("ret from usb_handle_packet > BUFF_SIZE");
         return -1;
     }
 
@@ -1461,7 +1461,7 @@ static int ehci_process_itd(EHCIState *ehci,
             case USB_RET_SUCCESS:
                 break;
             default:
-                fprintf(stderr, "Unexpected iso usb result: %d\n",
+                error_report("Unexpected iso usb result: %d",
                         ehci->ipacket.status);
                 /* Fall through */
             case USB_RET_IOERROR:
@@ -1564,7 +1564,7 @@ static int ehci_state_fetchentry(EHCIState *ehci, int async)
 
     /* section 4.8, only QH in async schedule */
     if (async && (NLPTR_TYPE_GET(entry) != NLPTR_TYPE_QH)) {
-        fprintf(stderr, "non queue head request in async schedule\n");
+        error_report("non queue head request in async schedule");
         return -1;
     }
 
@@ -1586,8 +1586,8 @@ static int ehci_state_fetchentry(EHCIState *ehci, int async)
 
     default:
         /* TODO: handle FSTN type */
-        fprintf(stderr, "FETCHENTRY: entry at %X is of type %d "
-                "which is not supported yet\n", entry, NLPTR_TYPE_GET(entry));
+        error_report("FETCHENTRY: entry at %X is of type %d "
+                "which is not supported yet", entry, NLPTR_TYPE_GET(entry));
         return -1;
     }
 
@@ -2086,7 +2086,7 @@ static void ehci_advance_state(EHCIState *ehci, int async)
             break;
 
         default:
-            fprintf(stderr, "Bad state!\n");
+            error_report("Bad state!");
             again = -1;
             g_assert_not_reached();
             break;
@@ -2094,7 +2094,7 @@ static void ehci_advance_state(EHCIState *ehci, int async)
 
         if (again < 0 || itd_count > 16) {
             /* TODO: notify guest (raise HSE irq?) */
-            fprintf(stderr, "processing error - resetting ehci HC\n");
+            error_report("processing error - resetting ehci HC");
             ehci_reset(ehci);
             again = 0;
         }
@@ -2151,8 +2151,8 @@ static void ehci_advance_async_state(EHCIState *ehci)
 
     default:
         /* this should only be due to a developer mistake */
-        fprintf(stderr, "ehci: Bad asynchronous state %d. "
-                "Resetting to active\n", ehci->astate);
+        error_report("ehci: Bad asynchronous state %d. "
+                "Resetting to active", ehci->astate);
         g_assert_not_reached();
     }
 }
@@ -2201,8 +2201,8 @@ static void ehci_advance_periodic_state(EHCIState *ehci)
 
     default:
         /* this should only be due to a developer mistake */
-        fprintf(stderr, "ehci: Bad periodic state %d. "
-                "Resetting to active\n", ehci->pstate);
+        error_report("ehci: Bad periodic state %d. "
+                "Resetting to active", ehci->pstate);
         g_assert_not_reached();
     }
 }
diff --git a/hw/usb/hcd-musb.c b/hw/usb/hcd-musb.c
index d70a91a58c..4729926124 100644
--- a/hw/usb/hcd-musb.c
+++ b/hw/usb/hcd-musb.c
@@ -253,8 +253,8 @@
 /* #define MUSB_DEBUG */
 
 #ifdef MUSB_DEBUG
-#define TRACE(fmt, ...) fprintf(stderr, "%s@%d: " fmt "\n", __func__, \
-                                __LINE__, ##__VA_ARGS__)
+#define TRACE(fmt, ...) error_report("%s@%d: " fmt "", __func__, \
+                                     __LINE__, ##__VA_ARGS__)
 #else
 #define TRACE(...)
 #endif
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index d75c085d94..6cc1be09a2 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -19,6 +19,7 @@
  * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "hw/hw.h"
 #include "qemu/timer.h"
 #include "qemu/queue.h"
@@ -39,7 +40,7 @@
 #else
 #define DPRINTF(...) do {} while (0)
 #endif
-#define FIXME(_msg) do { fprintf(stderr, "FIXME %s:%d %s\n", \
+#define FIXME(_msg) do { error_report("FIXME %s:%d %s", \
                                  __func__, __LINE__, _msg); abort(); } while (0)
 
 #define TRB_LINK_LIMIT  32
diff --git a/hw/usb/host-legacy.c b/hw/usb/host-legacy.c
index 3b57e21b52..f0c81e5309 100644
--- a/hw/usb/host-legacy.c
+++ b/hw/usb/host-legacy.c
@@ -86,7 +86,7 @@ static int parse_filter(const char *spec, struct USBAutoFilter *f)
     }
 
     if (i < DEV) {
-        fprintf(stderr, "husb: invalid auto filter spec %s\n", spec);
+        error_report("husb: invalid auto filter spec %s", spec);
         return -1;
     }
 
diff --git a/hw/watchdog/watchdog.c b/hw/watchdog/watchdog.c
index 0c5c9cde1c..76ae5d2fe5 100644
--- a/hw/watchdog/watchdog.c
+++ b/hw/watchdog/watchdog.c
@@ -20,6 +20,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu/option.h"
 #include "qemu/config-file.h"
 #include "qemu/queue.h"
@@ -51,7 +52,7 @@ int select_watchdog(const char *p)
     /* -watchdog ? lists available devices and exits cleanly. */
     if (is_help_option(p)) {
         QLIST_FOREACH(model, &watchdog_list, entry) {
-            fprintf(stderr, "\t%s\t%s\n",
+            error_report("\t%s\t%s",
                      model->wdt_name, model->wdt_description);
         }
         return 2;
@@ -67,9 +68,9 @@ int select_watchdog(const char *p)
         }
     }
 
-    fprintf(stderr, "Unknown -watchdog device. Supported devices are:\n");
+    error_report("Unknown -watchdog device. Supported devices are:");
     QLIST_FOREACH(model, &watchdog_list, entry) {
-        fprintf(stderr, "\t%s\t%s\n",
+        error_report("\t%s\t%s",
                  model->wdt_name, model->wdt_description);
     }
     return 1;
@@ -133,7 +134,7 @@ void watchdog_perform_action(void)
 
     case WDT_DEBUG:
         qapi_event_send_watchdog(WATCHDOG_EXPIRATION_ACTION_DEBUG, &error_abort);
-        fprintf(stderr, "watchdog: timer fired\n");
+        error_report("watchdog: timer fired");
         break;
 
     case WDT_NONE:
diff --git a/hw/watchdog/wdt_i6300esb.c b/hw/watchdog/wdt_i6300esb.c
index 49b3cd188a..f596f70a3b 100644
--- a/hw/watchdog/wdt_i6300esb.c
+++ b/hw/watchdog/wdt_i6300esb.c
@@ -20,7 +20,7 @@
  */
 
 #include "qemu/osdep.h"
-
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "qemu/timer.h"
 #include "sysemu/watchdog.h"
@@ -186,10 +186,12 @@ static void i6300esb_timer_expired(void *vp)
         /* What to do at the end of stage 1? */
         switch (d->int_type) {
         case INT_TYPE_IRQ:
-            fprintf(stderr, "i6300esb_timer_expired: I would send APIC 1 INT 10 here if I knew how (XXX)\n");
+            error_report("i6300esb_timer_expired: I would send APIC 1 INT 10"
+                          "here if I knew how (XXX)");
             break;
         case INT_TYPE_SMI:
-            fprintf(stderr, "i6300esb_timer_expired: I would send SMI here if I knew how (XXX)\n");
+            error_report("i6300esb_timer_expired: I would send SMI here if I"
+                         "knew how (XXX)");
             break;
         }
 
diff --git a/hw/xen/xen-common.c b/hw/xen/xen-common.c
index 632a938dcc..a7c821cfcf 100644
--- a/hw/xen/xen-common.c
+++ b/hw/xen/xen-common.c
@@ -47,19 +47,19 @@ static int store_dev_info(int domid, Chardev *cs, const char *string)
     /* We now have everything we need to set the xenstore entry. */
     xs = xs_open(0);
     if (xs == NULL) {
-        fprintf(stderr, "Could not contact XenStore\n");
+        error_report("Could not contact XenStore");
         goto out;
     }
 
     path = xs_get_domain_path(xs, domid);
     if (path == NULL) {
-        fprintf(stderr, "xs_get_domain_path() error\n");
+        error_report("xs_get_domain_path() error");
         goto out;
     }
     newpath = realloc(path, (strlen(path) + strlen(string) +
                 strlen("/tty") + 1));
     if (newpath == NULL) {
-        fprintf(stderr, "realloc error\n");
+        error_report("realloc error");
         goto out;
     }
     path = newpath;
@@ -96,13 +96,13 @@ static void xenstore_record_dm_state(struct xs_handle *xs, const char *state)
     char path[50];
 
     if (xs == NULL) {
-        fprintf(stderr, "xenstore connection not initialized\n");
+        error_report("xenstore connection not initialized");
         exit(1);
     }
 
     snprintf(path, sizeof (path), "device-model/%u/state", xen_domid);
     if (!xs_write(xs, XBT_NULL, path, state, strlen(state))) {
-        fprintf(stderr, "error recording dm state\n");
+        error_report("error recording dm state");
         exit(1);
     }
 }
diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
index 375efa68f6..e86d380d02 100644
--- a/hw/xen/xen_pt.c
+++ b/hw/xen/xen_pt.c
@@ -73,7 +73,7 @@ void xen_pt_log(const PCIDevice *d, const char *f, ...)
 
     va_start(ap, f);
     if (d) {
-        fprintf(stderr, "[%02x:%02x.%d] ", pci_bus_num(d->bus),
+        error_report("[%02x:%02x.%d] ", pci_bus_num(d->bus),
                 PCI_SLOT(d->devfn), PCI_FUNC(d->devfn));
     }
     vfprintf(stderr, f, ap);
@@ -87,7 +87,7 @@ static int xen_pt_pci_config_access_check(PCIDevice *d, uint32_t addr, int len)
     /* check offset range */
     if (addr > 0xFF) {
         XEN_PT_ERR(d, "Failed to access register with offset exceeding 0xFF. "
-                   "(addr: 0x%02x, len: %d)\n", addr, len);
+                   "(addr: 0x%02x, len: %d)", addr, len);
         return -1;
     }
 
diff --git a/hw/xenpv/xen_domainbuild.c b/hw/xenpv/xen_domainbuild.c
index 027f76fad1..f5514ffec2 100644
--- a/hw/xenpv/xen_domainbuild.c
+++ b/hw/xenpv/xen_domainbuild.c
@@ -25,22 +25,22 @@ static int xenstore_domain_mkdir(char *path)
     int i;
 
     if (!xs_mkdir(xenstore, 0, path)) {
-        fprintf(stderr, "%s: xs_mkdir %s: failed\n", __func__, path);
-	return -1;
+        error_report("%s: xs_mkdir %s: failed", __func__, path);
+        return -1;
     }
     if (!xs_set_permissions(xenstore, 0, path, perms_ro, 2)) {
-        fprintf(stderr, "%s: xs_set_permissions failed\n", __func__);
-	return -1;
+        error_report("%s: xs_set_permissions failed", __func__);
+        return -1;
     }
 
     for (i = 0; writable[i]; i++) {
         snprintf(subpath, sizeof(subpath), "%s/%s", path, writable[i]);
         if (!xs_mkdir(xenstore, 0, subpath)) {
-            fprintf(stderr, "%s: xs_mkdir %s: failed\n", __func__, subpath);
+            error_report("%s: xs_mkdir %s: failed", __func__, subpath);
             return -1;
         }
         if (!xs_set_permissions(xenstore, 0, subpath, perms_rw, 2)) {
-            fprintf(stderr, "%s: xs_set_permissions failed\n", __func__);
+            error_report("%s: xs_set_permissions failed", __func__);
             return -1;
         }
     }
@@ -235,7 +235,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,
     memcpy(uuid, &qemu_uuid, sizeof(uuid));
     rc = xen_domain_create(xen_xc, ssidref, uuid, flags, &xen_domid);
     if (rc < 0) {
-        fprintf(stderr, "xen: xc_domain_create() failed\n");
+        error_report("xen: xc_domain_create() failed");
         goto err;
     }
     qemu_log("xen: created domain %d\n", xen_domid);
@@ -248,21 +248,21 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,
 
     rc = xc_domain_max_vcpus(xen_xc, xen_domid, smp_cpus);
     if (rc < 0) {
-        fprintf(stderr, "xen: xc_domain_max_vcpus() failed\n");
+        error_report("xen: xc_domain_max_vcpus() failed");
         goto err;
     }
 
 #if 0
     rc = xc_domain_setcpuweight(xen_xc, xen_domid, 256);
     if (rc < 0) {
-        fprintf(stderr, "xen: xc_domain_setcpuweight() failed\n");
+        error_report("xen: xc_domain_setcpuweight() failed");
         goto err;
     }
 #endif
 
     rc = xc_domain_setmaxmem(xen_xc, xen_domid, ram_size >> 10);
     if (rc < 0) {
-        fprintf(stderr, "xen: xc_domain_setmaxmem() failed\n");
+        error_report("xen: xc_domain_setmaxmem() failed");
         goto err;
     }
 
@@ -275,7 +275,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,
                         xenstore_port, &xenstore_mfn,
                         console_port, &console_mfn);
     if (rc < 0) {
-        fprintf(stderr, "xen: xc_linux_build() failed\n");
+        error_report("xen: xc_linux_build() failed");
         goto err;
     }
 
@@ -285,7 +285,7 @@ int xen_domain_build_pv(const char *kernel, const char *ramdisk,
     qemu_log("xen: unpausing domain %d\n", xen_domid);
     rc = xc_domain_unpause(xen_xc, xen_domid);
     if (rc < 0) {
-        fprintf(stderr, "xen: xc_domain_unpause() failed\n");
+        error_report("xen: xc_domain_unpause() failed");
         goto err;
     }
 
diff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c
index 69a52a9f93..ac419e164b 100644
--- a/hw/xenpv/xen_machine_pv.c
+++ b/hw/xenpv/xen_machine_pv.c
@@ -36,7 +36,7 @@ static void xen_init_pv(MachineState *machine)
 
     /* Initialize backend core & drivers */
     if (xen_be_init() != 0) {
-        fprintf(stderr, "%s: xen backend core setup failed\n", __func__);
+        error_report("%s: xen backend core setup failed", __func__);
         exit(1);
     }
 
@@ -51,18 +51,18 @@ static void xen_init_pv(MachineState *machine)
         const char *initrd_filename = machine->initrd_filename;
         if (xen_domain_build_pv(kernel_filename, initrd_filename,
                                 kernel_cmdline) < 0) {
-            fprintf(stderr, "xen pv domain creation failed\n");
+            error_report("xen pv domain creation failed");
             exit(1);
         }
         break;
     }
 #endif
     case XEN_EMULATE:
-        fprintf(stderr, "xen emulation not implemented (yet)\n");
+        error_report("xen emulation not implemented (yet)");
         exit(1);
         break;
     default:
-        fprintf(stderr, "unhandled xen_mode %d\n", xen_mode);
+        error_report("unhandled xen_mode %d", xen_mode);
         exit(1);
         break;
     }
-- 
2.11.0


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Qemu-devel] [PATCH v1 4/8] block: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:08 [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* Alistair Francis
                   ` (2 preceding siblings ...)
  2017-09-26  0:08   ` Alistair Francis
@ 2017-09-26  0:08 ` Alistair Francis
  2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 5/8] util: " Alistair Francis
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-26  0:08 UTC (permalink / raw)
  To: qemu-devel
  Cc: alistair.francis, alistair23, armbru, Stefan Weil,
	Stefan Hajnoczi, Denis V. Lunev, Alberto Garcia,
	Richard W.M. Jones, Jeff Cody, qemu-block

Replace a large number of the fprintf(stderr, "*\n" calls with
error_report(). The functions were renamed with these commands and then
compiler issues where manually fixed.

find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Cc: Stefan Weil <sw@weilnetz.de>
Cc: Stefan Hajnoczi <stefanha@redhat.com>
Cc: "Denis V. Lunev" <den@openvz.org>
Cc: Alberto Garcia <berto@igalia.com>
Cc: "Richard W.M. Jones" <rjones@redhat.com>
Cc: Jeff Cody <jcody@redhat.com>
Cc: qemu-block@nongnu.org
---

 block/file-posix.c     |  6 +--
 block/file-win32.c     |  3 +-
 block/linux-aio.c      |  5 ++-
 block/parallels.c      |  7 ++--
 block/qcow2-cluster.c  |  2 +-
 block/qcow2-refcount.c | 95 ++++++++++++++++++++++++------------------------
 block/qcow2.c          |  8 ++--
 block/quorum.c         |  5 ++-
 block/ssh.c            |  4 +-
 block/vdi.c            | 14 ++++---
 block/vpc.c            |  5 ++-
 block/vvfat.c          | 99 ++++++++++++++++++++++++++++----------------------
 12 files changed, 136 insertions(+), 117 deletions(-)

diff --git a/block/file-posix.c b/block/file-posix.c
index ab12a2b591..2ea7a689cd 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -198,7 +198,7 @@ static int raw_normalize_devicepath(const char **filename)
     fname = *filename;
     dp = strrchr(fname, '/');
     if (lstat(fname, &sb) < 0) {
-        fprintf(stderr, "%s: stat failed: %s\n",
+        error_report("%s: stat failed: %s",
             fname, strerror(errno));
         return -errno;
     }
@@ -215,7 +215,7 @@ static int raw_normalize_devicepath(const char **filename)
     }
     fprintf(stderr, "%s is a block device", fname);
     *filename = namebuf;
-    fprintf(stderr, ", using %s\n", *filename);
+    error_report(", using %s", *filename);
 
     return 0;
 }
@@ -1499,7 +1499,7 @@ static int aio_worker(void *arg)
         ret = handle_aiocb_write_zeroes(aiocb);
         break;
     default:
-        fprintf(stderr, "invalid aio request (0x%x)\n", aiocb->aio_type);
+        error_report("invalid aio request (0x%x)", aiocb->aio_type);
         ret = -EINVAL;
         break;
     }
diff --git a/block/file-win32.c b/block/file-win32.c
index 9e02214a69..a2ed9d2e55 100644
--- a/block/file-win32.c
+++ b/block/file-win32.c
@@ -22,6 +22,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu/cutils.h"
 #include "block/block_int.h"
@@ -131,7 +132,7 @@ static int aio_worker(void *arg)
         }
         break;
     default:
-        fprintf(stderr, "invalid aio request (0x%x)\n", aiocb->aio_type);
+        error_report("invalid aio request (0x%x)", aiocb->aio_type);
         ret = -EINVAL;
         break;
     }
diff --git a/block/linux-aio.c b/block/linux-aio.c
index 88b8d55ec7..435c2ae47e 100644
--- a/block/linux-aio.c
+++ b/block/linux-aio.c
@@ -8,6 +8,7 @@
  * See the COPYING file in the top-level directory.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "block/aio.h"
 #include "qemu/queue.h"
@@ -389,7 +390,7 @@ static int laio_do_submit(int fd, struct qemu_laiocb *laiocb, off_t offset,
 	break;
     /* Currently Linux kernel does not support other operations */
     default:
-        fprintf(stderr, "%s: invalid AIO request type 0x%x.\n",
+        error_report("%s: invalid AIO request type 0x%x.",
                         __func__, type);
         return -EIO;
     }
@@ -499,7 +500,7 @@ void laio_cleanup(LinuxAioState *s)
     event_notifier_cleanup(&s->e);
 
     if (io_destroy(s->ctx) != 0) {
-        fprintf(stderr, "%s: destroy AIO context %p failed\n",
+        error_report("%s: destroy AIO context %p failed",
                         __func__, &s->ctx);
     }
     g_free(s);
diff --git a/block/parallels.c b/block/parallels.c
index 2b6c6e5709..30056f943a 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -28,6 +28,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "block/block_int.h"
@@ -397,7 +398,7 @@ static int parallels_check(BlockDriverState *bs, BdrvCheckResult *res,
     }
 
     if (s->header_unclean) {
-        fprintf(stderr, "%s image was not closed correctly\n",
+        error_report("%s image was not closed correctly",
                 fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR");
         res->corruptions++;
         if (fix & BDRV_FIX_ERRORS) {
@@ -421,7 +422,7 @@ static int parallels_check(BlockDriverState *bs, BdrvCheckResult *res,
 
         /* cluster outside the image */
         if (off > size) {
-            fprintf(stderr, "%s cluster %u is outside image\n",
+            error_report("%s cluster %u is outside image",
                     fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR", i);
             res->corruptions++;
             if (fix & BDRV_FIX_ERRORS) {
@@ -456,7 +457,7 @@ static int parallels_check(BlockDriverState *bs, BdrvCheckResult *res,
     if (size > res->image_end_offset) {
         int64_t count;
         count = DIV_ROUND_UP(size - res->image_end_offset, cluster_size);
-        fprintf(stderr, "%s space leaked at the end of the image %" PRId64 "\n",
+        error_report("%s space leaked at the end of the image %" PRId64 "",
                 fix & BDRV_FIX_LEAKS ? "Repairing" : "ERROR",
                 size - res->image_end_offset);
         res->leaks += count;
diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index 0d4824993c..894f57b4f9 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -71,7 +71,7 @@ int qcow2_grow_l1_table(BlockDriverState *bs, uint64_t min_size,
     }
 
 #ifdef DEBUG_ALLOC2
-    fprintf(stderr, "grow l1_table from %d to %" PRId64 "\n",
+    error_report("grow l1_table from %d to %" PRId64 "",
             s->l1_size, new_l1_size);
 #endif
 
diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
index 168fc32e7b..2a8d1210c8 100644
--- a/block/qcow2-refcount.c
+++ b/block/qcow2-refcount.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "block/block_int.h"
@@ -367,8 +368,8 @@ static int alloc_refcount_block(BlockDriverState *bs,
     }
 
 #ifdef DEBUG_ALLOC2
-    fprintf(stderr, "qcow2: Allocate refcount block %d for %" PRIx64
-        " at %" PRIx64 "\n",
+    error_report("qcow2: Allocate refcount block %d for %" PRIx64
+        " at %" PRIx64 "",
         refcount_table_index, cluster_index << s->cluster_bits, new_block);
 #endif
 
@@ -800,8 +801,8 @@ static int QEMU_WARN_UNUSED_RESULT update_refcount(BlockDriverState *bs,
     int ret;
 
 #ifdef DEBUG_ALLOC2
-    fprintf(stderr, "update_refcount: offset=%" PRId64 " size=%" PRId64
-            " addend=%s%" PRIu64 "\n", offset, length, decrease ? "-" : "",
+    error_report("update_refcount: offset=%" PRId64 " size=%" PRId64
+            " addend=%s%" PRIu64 "", offset, length, decrease ? "-" : "",
             addend);
 #endif
     if (length < 0) {
@@ -957,7 +958,7 @@ retry:
     }
 
 #ifdef DEBUG_ALLOC2
-    fprintf(stderr, "alloc_clusters: size=%" PRId64 " -> %" PRId64 "\n",
+    error_report("alloc_clusters: size=%" PRId64 " -> %" PRId64 "",
             size,
             (s->free_cluster_index - nb_clusters) << s->cluster_bits);
 #endif
@@ -1097,7 +1098,7 @@ void qcow2_free_clusters(BlockDriverState *bs,
     BLKDBG_EVENT(bs->file, BLKDBG_CLUSTER_FREE);
     ret = update_refcount(bs, offset, size, 1, true, type);
     if (ret < 0) {
-        fprintf(stderr, "qcow2_free_clusters failed: %s\n", strerror(-ret));
+        error_report("qcow2_free_clusters failed: %s", strerror(-ret));
         /* TODO Remember the clusters to free them later and avoid leaking */
     }
 }
@@ -1447,11 +1448,11 @@ int qcow2_inc_refcounts_imrt(BlockDriverState *bs, BdrvCheckResult *res,
 
         refcount = s->get_refcount(*refcount_table, k);
         if (refcount == s->refcount_max) {
-            fprintf(stderr, "ERROR: overflow cluster offset=0x%" PRIx64
-                    "\n", cluster_offset);
-            fprintf(stderr, "Use qemu-img amend to increase the refcount entry "
+            error_report("ERROR: overflow cluster offset=0x%" PRIx64
+                    "", cluster_offset);
+            error_report("Use qemu-img amend to increase the refcount entry "
                     "width or qemu-img convert to create a clean copy if the "
-                    "image cannot be opened for writing\n");
+                    "image cannot be opened for writing");
             res->corruptions++;
             continue;
         }
@@ -1490,7 +1491,7 @@ static int check_refcounts_l2(BlockDriverState *bs, BdrvCheckResult *res,
 
     ret = bdrv_pread(bs->file, l2_offset, l2_table, l2_size);
     if (ret < 0) {
-        fprintf(stderr, "ERROR: I/O error in check_refcounts_l2\n");
+        error_report("ERROR: I/O error in check_refcounts_l2");
         res->check_errors++;
         goto fail;
     }
@@ -1503,9 +1504,9 @@ static int check_refcounts_l2(BlockDriverState *bs, BdrvCheckResult *res,
         case QCOW2_CLUSTER_COMPRESSED:
             /* Compressed clusters don't have QCOW_OFLAG_COPIED */
             if (l2_entry & QCOW_OFLAG_COPIED) {
-                fprintf(stderr, "ERROR: cluster %" PRId64 ": "
+                error_report("ERROR: cluster %" PRId64 ": "
                     "copied flag must never be set for compressed "
-                    "clusters\n", l2_entry >> s->cluster_bits);
+                    "clusters", l2_entry >> s->cluster_bits);
                 l2_entry &= ~QCOW_OFLAG_COPIED;
                 res->corruptions++;
             }
@@ -1558,8 +1559,8 @@ static int check_refcounts_l2(BlockDriverState *bs, BdrvCheckResult *res,
 
             /* Correct offsets are cluster aligned */
             if (offset_into_cluster(s, offset)) {
-                fprintf(stderr, "ERROR offset=%" PRIx64 ": Cluster is not "
-                    "properly aligned; L2 entry corrupted.\n", offset);
+                error_report("ERROR offset=%" PRIx64 ": Cluster is not "
+                    "properly aligned; L2 entry corrupted.", offset);
                 res->corruptions++;
             }
             break;
@@ -1620,7 +1621,7 @@ static int check_refcounts_l1(BlockDriverState *bs,
         }
         ret = bdrv_pread(bs->file, l1_table_offset, l1_table, l1_size2);
         if (ret < 0) {
-            fprintf(stderr, "ERROR: I/O error in check_refcounts_l1\n");
+            error_report("ERROR: I/O error in check_refcounts_l1");
             res->check_errors++;
             goto fail;
         }
@@ -1643,8 +1644,8 @@ static int check_refcounts_l1(BlockDriverState *bs,
 
             /* L2 tables are cluster aligned */
             if (offset_into_cluster(s, l2_offset)) {
-                fprintf(stderr, "ERROR l2_offset=%" PRIx64 ": Table is not "
-                    "cluster aligned; L1 entry corrupted\n", l2_offset);
+                error_report("ERROR l2_offset=%" PRIx64 ": Table is not "
+                    "cluster aligned; L1 entry corrupted", l2_offset);
                 res->corruptions++;
             }
 
@@ -1697,8 +1698,8 @@ static int check_oflag_copied(BlockDriverState *bs, BdrvCheckResult *res,
             continue;
         }
         if ((refcount == 1) != ((l1_entry & QCOW_OFLAG_COPIED) != 0)) {
-            fprintf(stderr, "%s OFLAG_COPIED L2 cluster: l1_index=%d "
-                    "l1_entry=%" PRIx64 " refcount=%" PRIu64 "\n",
+            error_report("%s OFLAG_COPIED L2 cluster: l1_index=%d "
+                    "l1_entry=%" PRIx64 " refcount=%" PRIu64 "",
                     fix & BDRV_FIX_ERRORS ? "Repairing" :
                                             "ERROR",
                     i, l1_entry, refcount);
@@ -1720,7 +1721,7 @@ static int check_oflag_copied(BlockDriverState *bs, BdrvCheckResult *res,
         ret = bdrv_pread(bs->file, l2_offset, l2_table,
                          s->l2_size * sizeof(uint64_t));
         if (ret < 0) {
-            fprintf(stderr, "ERROR: Could not read L2 table: %s\n",
+            error_report("ERROR: Could not read L2 table: %s",
                     strerror(-ret));
             res->check_errors++;
             goto fail;
@@ -1741,8 +1742,8 @@ static int check_oflag_copied(BlockDriverState *bs, BdrvCheckResult *res,
                     continue;
                 }
                 if ((refcount == 1) != ((l2_entry & QCOW_OFLAG_COPIED) != 0)) {
-                    fprintf(stderr, "%s OFLAG_COPIED data cluster: "
-                            "l2_entry=%" PRIx64 " refcount=%" PRIu64 "\n",
+                    error_report("%s OFLAG_COPIED data cluster: "
+                            "l2_entry=%" PRIx64 " refcount=%" PRIu64 "",
                             fix & BDRV_FIX_ERRORS ? "Repairing" :
                                                     "ERROR",
                             l2_entry, refcount);
@@ -1763,8 +1764,8 @@ static int check_oflag_copied(BlockDriverState *bs, BdrvCheckResult *res,
             ret = qcow2_pre_write_overlap_check(bs, QCOW2_OL_ACTIVE_L2,
                                                 l2_offset, s->cluster_size);
             if (ret < 0) {
-                fprintf(stderr, "ERROR: Could not write L2 table; metadata "
-                        "overlap check failed: %s\n", strerror(-ret));
+                error_report("ERROR: Could not write L2 table; metadata "
+                        "overlap check failed: %s", strerror(-ret));
                 res->check_errors++;
                 goto fail;
             }
@@ -1772,7 +1773,7 @@ static int check_oflag_copied(BlockDriverState *bs, BdrvCheckResult *res,
             ret = bdrv_pwrite(bs->file, l2_offset, l2_table,
                               s->cluster_size);
             if (ret < 0) {
-                fprintf(stderr, "ERROR: Could not write L2 table: %s\n",
+                error_report("ERROR: Could not write L2 table: %s",
                         strerror(-ret));
                 res->check_errors++;
                 goto fail;
@@ -1806,15 +1807,15 @@ static int check_refblocks(BlockDriverState *bs, BdrvCheckResult *res,
 
         /* Refcount blocks are cluster aligned */
         if (offset_into_cluster(s, offset)) {
-            fprintf(stderr, "ERROR refcount block %" PRId64 " is not "
-                "cluster aligned; refcount table entry corrupted\n", i);
+            error_report("ERROR refcount block %" PRId64 " is not "
+                "cluster aligned; refcount table entry corrupted", i);
             res->corruptions++;
             *rebuild = true;
             continue;
         }
 
         if (cluster >= *nb_clusters) {
-            fprintf(stderr, "%s refcount block %" PRId64 " is outside image\n",
+            error_report("%s refcount block %" PRId64 " is outside image",
                     fix & BDRV_FIX_ERRORS ? "Repairing" : "ERROR", i);
 
             if (fix & BDRV_FIX_ERRORS) {
@@ -1868,7 +1869,7 @@ static int check_refblocks(BlockDriverState *bs, BdrvCheckResult *res,
 resize_fail:
                 res->corruptions++;
                 *rebuild = true;
-                fprintf(stderr, "ERROR could not resize image: %s\n",
+                error_report("ERROR could not resize image: %s",
                         strerror(-ret));
             } else {
                 res->corruptions++;
@@ -1883,8 +1884,8 @@ resize_fail:
                 return ret;
             }
             if (s->get_refcount(*refcount_table, cluster) != 1) {
-                fprintf(stderr, "ERROR refcount block %" PRId64
-                        " refcount=%" PRIu64 "\n", i,
+                error_report("ERROR refcount block %" PRId64
+                        " refcount=%" PRIu64 "", i,
                         s->get_refcount(*refcount_table, cluster));
                 res->corruptions++;
                 *rebuild = true;
@@ -1990,7 +1991,7 @@ static void compare_refcounts(BlockDriverState *bs, BdrvCheckResult *res,
     for (i = 0, *highest_cluster = 0; i < nb_clusters; i++) {
         ret = qcow2_get_refcount(bs, i, &refcount1);
         if (ret < 0) {
-            fprintf(stderr, "Can't get refcount for cluster %" PRId64 ": %s\n",
+            error_report("Can't get refcount for cluster %" PRId64 ": %s",
                     i, strerror(-ret));
             res->check_errors++;
             continue;
@@ -2013,8 +2014,8 @@ static void compare_refcounts(BlockDriverState *bs, BdrvCheckResult *res,
                 num_fixed = &res->corruptions_fixed;
             }
 
-            fprintf(stderr, "%s cluster %" PRId64 " refcount=%" PRIu64
-                    " reference=%" PRIu64 "\n",
+            error_report("%s cluster %" PRId64 " refcount=%" PRIu64
+                    " reference=%" PRIu64 "",
                    num_fixed != NULL     ? "Repairing" :
                    refcount1 < refcount2 ? "ERROR" :
                                            "Leaked",
@@ -2159,7 +2160,7 @@ write_refblocks:
         refblock_offset = alloc_clusters_imrt(bs, 1, refcount_table,
                                               nb_clusters, &first_free_cluster);
         if (refblock_offset < 0) {
-            fprintf(stderr, "ERROR allocating refblock: %s\n",
+            error_report("ERROR allocating refblock: %s",
                     strerror(-refblock_offset));
             res->check_errors++;
             ret = refblock_offset;
@@ -2205,7 +2206,7 @@ write_refblocks:
                                                   refcount_table, nb_clusters,
                                                   &first_free_cluster);
             if (reftable_offset < 0) {
-                fprintf(stderr, "ERROR allocating reftable: %s\n",
+                error_report("ERROR allocating reftable: %s",
                         strerror(-reftable_offset));
                 res->check_errors++;
                 ret = reftable_offset;
@@ -2216,7 +2217,7 @@ write_refblocks:
         ret = qcow2_pre_write_overlap_check(bs, 0, refblock_offset,
                                             s->cluster_size);
         if (ret < 0) {
-            fprintf(stderr, "ERROR writing refblock: %s\n", strerror(-ret));
+            error_report("ERROR writing refblock: %s", strerror(-ret));
             goto fail;
         }
 
@@ -2228,7 +2229,7 @@ write_refblocks:
         ret = bdrv_write(bs->file, refblock_offset / BDRV_SECTOR_SIZE,
                          on_disk_refblock, s->cluster_sectors);
         if (ret < 0) {
-            fprintf(stderr, "ERROR writing refblock: %s\n", strerror(-ret));
+            error_report("ERROR writing refblock: %s", strerror(-ret));
             goto fail;
         }
 
@@ -2250,7 +2251,7 @@ write_refblocks:
                                               refcount_table, nb_clusters,
                                               &first_free_cluster);
         if (reftable_offset < 0) {
-            fprintf(stderr, "ERROR allocating reftable: %s\n",
+            error_report("ERROR allocating reftable: %s",
                     strerror(-reftable_offset));
             res->check_errors++;
             ret = reftable_offset;
@@ -2267,7 +2268,7 @@ write_refblocks:
     ret = qcow2_pre_write_overlap_check(bs, 0, reftable_offset,
                                         reftable_size * sizeof(uint64_t));
     if (ret < 0) {
-        fprintf(stderr, "ERROR writing reftable: %s\n", strerror(-ret));
+        error_report("ERROR writing reftable: %s", strerror(-ret));
         goto fail;
     }
 
@@ -2275,7 +2276,7 @@ write_refblocks:
     ret = bdrv_pwrite(bs->file, reftable_offset, on_disk_reftable,
                       reftable_size * sizeof(uint64_t));
     if (ret < 0) {
-        fprintf(stderr, "ERROR writing reftable: %s\n", strerror(-ret));
+        error_report("ERROR writing reftable: %s", strerror(-ret));
         goto fail;
     }
 
@@ -2288,7 +2289,7 @@ write_refblocks:
                            &reftable_offset_and_clusters,
                            sizeof(reftable_offset_and_clusters));
     if (ret < 0) {
-        fprintf(stderr, "ERROR setting reftable: %s\n", strerror(-ret));
+        error_report("ERROR setting reftable: %s", strerror(-ret));
         goto fail;
     }
 
@@ -2355,7 +2356,7 @@ int qcow2_check_refcounts(BlockDriverState *bs, BdrvCheckResult *res,
         BdrvCheckResult old_res = *res;
         int fresh_leaks = 0;
 
-        fprintf(stderr, "Rebuilding refcount structure\n");
+        error_report("Rebuilding refcount structure");
         ret = rebuild_refcount_structure(bs, res, &refcount_table,
                                          &nb_clusters);
         if (ret < 0) {
@@ -2385,8 +2386,8 @@ int qcow2_check_refcounts(BlockDriverState *bs, BdrvCheckResult *res,
             compare_refcounts(bs, res, BDRV_FIX_LEAKS, &rebuild,
                               &highest_cluster, refcount_table, nb_clusters);
             if (rebuild) {
-                fprintf(stderr, "ERROR rebuilt refcount structure is still "
-                        "broken\n");
+                error_report("ERROR rebuilt refcount structure is still "
+                        "broken");
             }
 
             /* Any leaks accounted for here were introduced by
@@ -2405,7 +2406,7 @@ int qcow2_check_refcounts(BlockDriverState *bs, BdrvCheckResult *res,
         res->leaks += fresh_leaks;
     } else if (fix) {
         if (rebuild) {
-            fprintf(stderr, "ERROR need to rebuild refcount structures\n");
+            error_report("ERROR need to rebuild refcount structures");
             res->check_errors++;
             ret = -EIO;
             goto fail;
diff --git a/block/qcow2.c b/block/qcow2.c
index d33fb3ecdd..06a131d287 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -4162,11 +4162,11 @@ void qcow2_signal_corruption(BlockDriverState *bs, bool fatal, int64_t offset,
     va_end(ap);
 
     if (fatal) {
-        fprintf(stderr, "qcow2: Marking image as corrupt: %s; further "
-                "corruption events will be suppressed\n", message);
+        error_report("qcow2: Marking image as corrupt: %s; further "
+                "corruption events will be suppressed", message);
     } else {
-        fprintf(stderr, "qcow2: Image is corrupt: %s; further non-fatal "
-                "corruption events will be suppressed\n", message);
+        error_report("qcow2: Image is corrupt: %s; further non-fatal "
+                "corruption events will be suppressed", message);
     }
 
     node_name = bdrv_get_node_name(bs);
diff --git a/block/quorum.c b/block/quorum.c
index 272f9a5b77..a55f1fe6a0 100644
--- a/block/quorum.c
+++ b/block/quorum.c
@@ -14,6 +14,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu/cutils.h"
 #include "block/block_int.h"
 #include "qapi/qmp/qbool.h"
@@ -927,8 +928,8 @@ static int quorum_open(BlockDriverState *bs, QDict *options, int flags,
             s->num_children == 2 && s->threshold == 2) {
             s->is_blkverify = true;
         } else if (qemu_opt_get_bool(opts, QUORUM_OPT_BLKVERIFY, false)) {
-            fprintf(stderr, "blkverify mode is set by setting blkverify=on "
-                    "and using two files with vote_threshold=2\n");
+            error_report("blkverify mode is set by setting blkverify=on "
+                    "and using two files with vote_threshold=2");
         }
 
         s->rewrite_corrupted = qemu_opt_get_bool(opts, QUORUM_OPT_REWRITE,
diff --git a/block/ssh.c b/block/ssh.c
index b049a16eb9..903b797a55 100644
--- a/block/ssh.c
+++ b/block/ssh.c
@@ -53,7 +53,7 @@
 #define DPRINTF(fmt, ...)                           \
     do {                                            \
         if (DEBUG_SSH) {                            \
-            fprintf(stderr, "ssh: %-15s " fmt "\n", \
+            error_report("ssh: %-15s " fmt "", \
                     __func__, ##__VA_ARGS__);       \
         }                                           \
     } while (0)
@@ -1217,7 +1217,7 @@ static void bdrv_ssh_init(void)
 
     r = libssh2_init(0);
     if (r != 0) {
-        fprintf(stderr, "libssh2 initialization failed, %d\n", r);
+        error_report("libssh2 initialization failed, %d", r);
         exit(EXIT_FAILURE);
     }
 
diff --git a/block/vdi.c b/block/vdi.c
index 8da5dfc897..0d9440d36e 100644
--- a/block/vdi.c
+++ b/block/vdi.c
@@ -50,6 +50,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "block/block_int.h"
 #include "sysemu/block-backend.h"
@@ -289,20 +290,21 @@ static int vdi_check(BlockDriverState *bs, BdrvCheckResult *res,
                 if (!VDI_IS_ALLOCATED(bmap[bmap_entry])) {
                     bmap[bmap_entry] = bmap_entry;
                 } else {
-                    fprintf(stderr, "ERROR: block index %" PRIu32
-                            " also used by %" PRIu32 "\n", bmap[bmap_entry], bmap_entry);
+                    error_report("block index %" PRIu32
+                                 " also used by %" PRIu32 "",
+                                 bmap[bmap_entry], bmap_entry);
                     res->corruptions++;
                 }
             } else {
-                fprintf(stderr, "ERROR: block index %" PRIu32
-                        " too large, is %" PRIu32 "\n", block, bmap_entry);
+                error_report("block index %" PRIu32
+                             " too large, is %" PRIu32 "", block, bmap_entry);
                 res->corruptions++;
             }
         }
     }
     if (blocks_allocated != s->header.blocks_allocated) {
-        fprintf(stderr, "ERROR: allocated blocks mismatch, is %" PRIu32
-               ", should be %" PRIu32 "\n",
+        error_report("allocated blocks mismatch, is %" PRIu32
+                     ", should be %" PRIu32 "",
                blocks_allocated, s->header.blocks_allocated);
         res->corruptions++;
     }
diff --git a/block/vpc.c b/block/vpc.c
index 1576d7b595..f033bde29e 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -23,6 +23,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "block/block_int.h"
@@ -278,8 +279,8 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
     checksum = be32_to_cpu(footer->checksum);
     footer->checksum = 0;
     if (vpc_checksum(s->footer_buf, HEADER_SIZE) != checksum)
-        fprintf(stderr, "block-vpc: The header checksum of '%s' is "
-            "incorrect.\n", bs->filename);
+        error_report("block-vpc: The header checksum of '%s' is "
+            "incorrect.", bs->filename);
 
     /* Write 'checksum' back to footer, or else will leave it with zero. */
     footer->checksum = cpu_to_be32(checksum);
diff --git a/block/vvfat.c b/block/vvfat.c
index cbabb36f62..e339e1f97e 100644
--- a/block/vvfat.c
+++ b/block/vvfat.c
@@ -59,7 +59,7 @@ static void checkpoint(void);
 
 #ifdef __MINGW32__
 void nonono(const char* file, int line, const char* msg) {
-    fprintf(stderr, "Nonono! %s:%d %s\n", file, line, msg);
+    error_report("Nonono! %s:%d %s", file, line, msg);
     exit(-5);
 }
 #undef assert
@@ -446,7 +446,7 @@ static direntry_t *create_long_filename(BDRVVVFATState *s, const char *filename)
 
     gunichar2 *longname = g_utf8_to_utf16(filename, -1, NULL, &length, NULL);
     if (!longname) {
-        fprintf(stderr, "vvfat: invalid UTF-8 name: %s\n", filename);
+        error_report("vvfat: invalid UTF-8 name: %s", filename);
         return NULL;
     }
 
@@ -803,7 +803,7 @@ static int read_directory(BDRVVVFATState* s, int mapping_index)
         int is_dotdot=!strcmp(entry->d_name,"..");
 
         if (first_cluster == 0 && s->directory.next >= s->root_entries - 1) {
-            fprintf(stderr, "Too many entries in root directory\n");
+            error_report("Too many entries in root directory");
             closedir(dir);
             return -2;
         }
@@ -840,7 +840,7 @@ static int read_directory(BDRVVVFATState* s, int mapping_index)
         else
             direntry->begin=0; /* do that later */
         if (st.st_size > 0x7fffffff) {
-            fprintf(stderr, "File %s is larger than 2GB\n", buffer);
+            error_report("File %s is larger than 2GB", buffer);
             g_free(buffer);
             closedir(dir);
             return -2;
@@ -1251,8 +1251,7 @@ static int vvfat_open(BlockDriverState *bs, QDict *options, int flags,
     s->fat2 = NULL;
     s->downcase_short_names = 1;
 
-    fprintf(stderr, "vvfat %s chs %d,%d,%d\n",
-            dirname, cyls, heads, secs);
+    error_report("vvfat %s chs %d,%d,%d", dirname, cyls, heads, secs);
 
     s->sector_count = cyls * heads * secs - s->offset_to_bootsector;
 
@@ -1458,7 +1457,7 @@ static void print_direntry(const direntry_t* direntry)
         for(i=28;i<32 && c[i] && c[i]!=0xff;i+=2)
             ADD_CHAR(c[i]);
         buffer[j] = 0;
-        fprintf(stderr, "%s\n", buffer);
+        error_report("%s", buffer);
     } else {
         int i;
         for(i=0;i<11;i++)
@@ -1479,9 +1478,11 @@ static void print_mapping(const mapping_t* mapping)
         mapping->first_mapping_index, mapping->path, mapping->mode);
 
     if (mapping->mode & MODE_DIRECTORY)
-        fprintf(stderr, "parent_mapping_index = %d, first_dir_index = %d\n", mapping->info.dir.parent_mapping_index, mapping->info.dir.first_dir_index);
+        error_report("parent_mapping_index = %d, first_dir_index = %d",
+                     mapping->info.dir.parent_mapping_index,
+                     mapping->info.dir.first_dir_index);
     else
-        fprintf(stderr, "offset = %d\n", mapping->info.file.offset);
+        error_report("offset = %d", mapping->info.file.offset);
 }
 #endif
 
@@ -1503,9 +1504,9 @@ static int vvfat_read(BlockDriverState *bs, int64_t sector_num,
                 return ret;
             }
             if (ret) {
-                DLOG(fprintf(stderr, "sectors %" PRId64 "+%" PRId64
-                             " allocated\n", sector_num,
-                             n >> BDRV_SECTOR_BITS));
+                DLOG(error_report("sectors %" PRId64 "+%" PRId64
+                                  " allocated", sector_num,
+                                  n >> BDRV_SECTOR_BITS));
                 if (bdrv_read(s->qcow, sector_num, buf + i * 0x200,
                               n >> BDRV_SECTOR_BITS)) {
                     return -1;
@@ -1514,8 +1515,8 @@ static int vvfat_read(BlockDriverState *bs, int64_t sector_num,
                 sector_num += (n >> BDRV_SECTOR_BITS) - 1;
                 continue;
             }
-            DLOG(fprintf(stderr, "sector %" PRId64 " not allocated\n",
-                         sector_num));
+            DLOG(error_report("sector %" PRId64 " not allocated",
+                              sector_num));
         }
         if (sector_num < s->offset_to_root_dir) {
             if (sector_num < s->offset_to_fat) {
@@ -1615,7 +1616,7 @@ typedef struct commit_t {
 static void clear_commits(BDRVVVFATState* s)
 {
     int i;
-DLOG(fprintf(stderr, "clear_commits (%d commits)\n", s->commits.next));
+DLOG(error_report("clear_commits (%d commits)", s->commits.next));
     for (i = 0; i < s->commits.next; i++) {
         commit_t* commit = array_get(&(s->commits), i);
         assert(commit->path || commit->action == ACTION_WRITEOUT);
@@ -2065,16 +2066,17 @@ static int check_directory_consistency(BDRVVVFATState *s,
         ret++;
 
         if (s->used_clusters[cluster_num] & USED_ANY) {
-            fprintf(stderr, "cluster %d used more than once\n", (int)cluster_num);
+            error_report("cluster %d used more than once", (int)cluster_num);
             goto fail;
         }
         s->used_clusters[cluster_num] = USED_DIRECTORY;
 
-DLOG(fprintf(stderr, "read cluster %d (sector %d)\n", (int)cluster_num, (int)cluster2sector(s, cluster_num)));
+DLOG(error_report("read cluster %d (sector %d)",
+                  (int)cluster_num, (int)cluster2sector(s, cluster_num)));
         subret = vvfat_read(s->bs, cluster2sector(s, cluster_num), cluster,
                 s->sectors_per_cluster);
         if (subret) {
-            fprintf(stderr, "Error fetching direntries\n");
+            error_report("Error fetching direntries");
         fail:
             g_free(cluster);
             return 0;
@@ -2083,14 +2085,14 @@ DLOG(fprintf(stderr, "read cluster %d (sector %d)\n", (int)cluster_num, (int)clu
         for (i = 0; i < 0x10 * s->sectors_per_cluster; i++) {
             int cluster_count = 0;
 
-DLOG(fprintf(stderr, "check direntry %d:\n", i); print_direntry(direntries + i));
+DLOG(error_report("check direntry %d:", i); print_direntry(direntries + i));
             if (is_volume_label(direntries + i) || is_dot(direntries + i) ||
                     is_free(direntries + i))
                 continue;
 
             subret = parse_long_name(&lfn, direntries + i);
             if (subret < 0) {
-                fprintf(stderr, "Error in long name\n");
+                error_report("Error in long name");
                 goto fail;
             }
             if (subret == 0 || is_free(direntries + i))
@@ -2099,7 +2101,7 @@ DLOG(fprintf(stderr, "check direntry %d:\n", i); print_direntry(direntries + i))
             if (fat_chksum(direntries+i) != lfn.checksum) {
                 subret = parse_short_name(s, &lfn, direntries + i);
                 if (subret < 0) {
-                    fprintf(stderr, "Error in short name (%d)\n", subret);
+                    error_report("Error in short name (%d)", subret);
                     goto fail;
                 }
                 if (subret > 0 || !strcmp((char*)lfn.name, ".")
@@ -2109,7 +2111,7 @@ DLOG(fprintf(stderr, "check direntry %d:\n", i); print_direntry(direntries + i))
             lfn.checksum = 0x100; /* cannot use long name twice */
 
             if (path_len + 1 + lfn.len >= PATH_MAX) {
-                fprintf(stderr, "Name too long: %s/%s\n", path, lfn.name);
+                error_report("Name too long: %s/%s", path, lfn.name);
                 goto fail;
             }
             pstrcpy(path2 + path_len + 1, sizeof(path2) - path_len - 1,
@@ -2117,13 +2119,15 @@ DLOG(fprintf(stderr, "check direntry %d:\n", i); print_direntry(direntries + i))
 
             if (is_directory(direntries + i)) {
                 if (begin_of_direntry(direntries + i) == 0) {
-                    DLOG(fprintf(stderr, "invalid begin for directory: %s\n", path2); print_direntry(direntries + i));
+                    DLOG(error_report("invalid begin for directory: %s", path2);
+                         print_direntry(direntries + i));
                     goto fail;
                 }
                 cluster_count = check_directory_consistency(s,
                         begin_of_direntry(direntries + i), path2);
                 if (cluster_count == 0) {
-                    DLOG(fprintf(stderr, "problem in directory %s:\n", path2); print_direntry(direntries + i));
+                    DLOG(error_report("problem in directory %s:", path2);
+                         print_direntry(direntries + i));
                     goto fail;
                 }
             } else if (is_file(direntries + i)) {
@@ -2131,7 +2135,7 @@ DLOG(fprintf(stderr, "check direntry %d:\n", i); print_direntry(direntries + i))
                 cluster_count = get_cluster_count_for_direntry(s, direntries + i, path2);
                 if (cluster_count !=
             DIV_ROUND_UP(le32_to_cpu(direntries[i].size), s->cluster_size)) {
-                    DLOG(fprintf(stderr, "Cluster count mismatch\n"));
+                    DLOG(error_report("Cluster count mismatch"));
                     goto fail;
                 }
             } else
@@ -2175,7 +2179,7 @@ DLOG(checkpoint());
     check = vvfat_read(s->bs,
             s->offset_to_fat, s->fat2, s->sectors_per_fat);
     if (check) {
-        fprintf(stderr, "Could not copy fat\n");
+        error_report("Could not copy fat");
         return 0;
     }
     assert (s->used_clusters);
@@ -2195,7 +2199,7 @@ DLOG(checkpoint());
 
     used_clusters_count = check_directory_consistency(s, 0, s->path);
     if (used_clusters_count <= 0) {
-        DLOG(fprintf(stderr, "problem in directory\n"));
+        DLOG(error_report("problem in directory"));
         return 0;
     }
 
@@ -2203,7 +2207,8 @@ DLOG(checkpoint());
     for (i = check; i < sector2cluster(s, s->sector_count); i++) {
         if (modified_fat_get(s, i)) {
             if(!s->used_clusters[i]) {
-                DLOG(fprintf(stderr, "FAT was modified (%d), but cluster is not used?\n", i));
+                DLOG(error_report("FAT was modified (%d), but cluster"
+                                  " is not used?", i));
                 return 0;
             }
             check++;
@@ -2211,7 +2216,7 @@ DLOG(checkpoint());
 
         if (s->used_clusters[i] == USED_ALLOCATED) {
             /* allocated, but not used... */
-            DLOG(fprintf(stderr, "unused, modified cluster: %d\n", i));
+            DLOG(error_report("unused, modified cluster: %d", i));
             return 0;
         }
     }
@@ -2438,7 +2443,8 @@ static int commit_direntries(BDRVVVFATState* s,
     int ret, i;
     uint32_t c;
 
-DLOG(fprintf(stderr, "commit_direntries for %s, parent_mapping_index %d\n", mapping->path, parent_mapping_index));
+DLOG(error_report("commit_direntries for %s, parent_mapping_index %d",
+                  mapping->path, parent_mapping_index));
 
     assert(direntry);
     assert(mapping);
@@ -2529,8 +2535,8 @@ static int commit_one_file(BDRVVVFATState* s,
 
     fd = qemu_open(mapping->path, O_RDWR | O_CREAT | O_BINARY, 0666);
     if (fd < 0) {
-        fprintf(stderr, "Could not open %s... (%s, %d)\n", mapping->path,
-                strerror(errno), errno);
+        error_report("Could not open %s... (%s, %d)", mapping->path,
+                     strerror(errno), errno);
         g_free(cluster);
         return fd;
     }
@@ -2592,7 +2598,7 @@ static void check1(BDRVVVFATState* s)
     for (i = 0; i < s->mapping.next; i++) {
         mapping_t* mapping = array_get(&(s->mapping), i);
         if (mapping->mode & MODE_DELETED) {
-            fprintf(stderr, "deleted\n");
+            error_report("deleted");
             continue;
         }
         assert(mapping->dir_index < s->directory.next);
@@ -2658,10 +2664,12 @@ static int handle_renames_and_mkdirs(BDRVVVFATState* s)
     int i;
 
 #ifdef DEBUG
-    fprintf(stderr, "handle_renames\n");
+    error_report("handle_renames");
     for (i = 0; i < s->commits.next; i++) {
         commit_t* commit = array_get(&(s->commits), i);
-        fprintf(stderr, "%d, %s (%d, %d)\n", i, commit->path ? commit->path : "(null)", commit->param.rename.cluster, commit->action);
+        error_report("%d, %s (%d, %d)", i,
+                     commit->path ? commit->path : "(null)",
+                     commit->param.rename.cluster, commit->action);
     }
 #endif
 
@@ -2893,7 +2901,9 @@ static int handle_deletes(BDRVVVFATState* s)
                         return -4;
                     deleted++;
                 }
-                DLOG(fprintf(stderr, "DELETE (%d)\n", i); print_mapping(mapping); print_direntry(entry));
+                DLOG(error_report("DELETE (%d)", i);
+                     print_mapping(mapping);
+                     print_direntry(entry));
                 remove_mapping(s, i);
             }
         }
@@ -2922,7 +2932,7 @@ static int do_commit(BDRVVVFATState* s)
 
     ret = handle_renames_and_mkdirs(s);
     if (ret) {
-        fprintf(stderr, "Error handling renames (%d)\n", ret);
+        error_report("Error handling renames (%d)", ret);
         abort();
         return ret;
     }
@@ -2933,21 +2943,21 @@ static int do_commit(BDRVVVFATState* s)
     /* recurse direntries from root (using bs->bdrv_read) */
     ret = commit_direntries(s, 0, -1);
     if (ret) {
-        fprintf(stderr, "Fatal: error while committing (%d)\n", ret);
+        error_report("Fatal: error while committing (%d)", ret);
         abort();
         return ret;
     }
 
     ret = handle_commits(s);
     if (ret) {
-        fprintf(stderr, "Error handling commits (%d)\n", ret);
+        error_report("Error handling commits (%d)", ret);
         abort();
         return ret;
     }
 
     ret = handle_deletes(s);
     if (ret) {
-        fprintf(stderr, "Error deleting\n");
+        error_report("Error deleting");
         abort();
         return ret;
     }
@@ -2999,7 +3009,7 @@ DLOG(checkpoint());
         mapping_t* mapping = find_mapping_for_cluster(s, i);
         if (mapping) {
             if (mapping->read_only) {
-                fprintf(stderr, "Tried to write to write-protected file %s\n",
+                error_report("Tried to write to write-protected file %s",
                         mapping->path);
                 return -1;
             }
@@ -3043,10 +3053,11 @@ DLOG(checkpoint());
     /*
      * Use qcow backend. Commit later.
      */
-DLOG(fprintf(stderr, "Write to qcow backend: %d + %d\n", (int)sector_num, nb_sectors));
+DLOG(error_report("Write to qcow backend: %d + %d",
+                  (int)sector_num, nb_sectors));
     ret = bdrv_write(s->qcow, sector_num, buf, nb_sectors);
     if (ret < 0) {
-        fprintf(stderr, "Error writing to qcow backend\n");
+        error_report("Error writing to qcow backend");
         return ret;
     }
 
@@ -3277,7 +3288,7 @@ static void checkpoint(void) {
     assert(!vvv->current_mapping || vvv->current_fd || (vvv->current_mapping->mode & MODE_DIRECTORY));
 #if 0
     if (((direntry_t*)vvv->directory.pointer)[1].attributes != 0xf)
-        fprintf(stderr, "Nonono!\n");
+        error_report("Nonono!");
     mapping_t* mapping;
     direntry_t* direntry;
     assert(vvv->mapping.size >= vvv->mapping.item_size * vvv->mapping.next);
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Qemu-devel] [PATCH v1 5/8] util: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:08 [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* Alistair Francis
                   ` (3 preceding siblings ...)
  2017-09-26  0:08 ` [Qemu-devel] [PATCH v1 4/8] block: " Alistair Francis
@ 2017-09-26  0:09 ` Alistair Francis
  2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 6/8] ui: " Alistair Francis
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-26  0:09 UTC (permalink / raw)
  To: qemu-devel
  Cc: alistair.francis, alistair23, armbru, Kevin Wolf, Paolo Bonzini,
	Stefan Weil, qemu-block

Replace a large number of the fprintf(stderr, "*\n" calls with
error_report(). The functions were renamed with these commands and then
compiler issues where manually fixed.

find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Cc: Kevin Wolf <kwolf@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Stefan Weil <sw@weilnetz.de>
Cc: qemu-block@nongnu.org
---

 util/aio-posix.c             | 5 +++--
 util/coroutine-sigaltstack.c | 2 +-
 util/error.c                 | 2 +-
 util/main-loop.c             | 2 +-
 util/mmap-alloc.c            | 3 ++-
 util/module.c                | 6 +++---
 util/osdep.c                 | 4 ++--
 util/oslib-posix.c           | 3 ++-
 util/oslib-win32.c           | 3 ++-
 util/qemu-coroutine.c        | 5 +++--
 util/qemu-progress.c         | 3 ++-
 util/qemu-thread-posix.c     | 5 +++--
 util/qemu-thread-win32.c     | 5 +++--
 util/qemu-timer-common.c     | 3 ++-
 util/qht.c                   | 2 +-
 15 files changed, 31 insertions(+), 22 deletions(-)

diff --git a/util/aio-posix.c b/util/aio-posix.c
index 2d51239ec6..fe4772b4a9 100644
--- a/util/aio-posix.c
+++ b/util/aio-posix.c
@@ -15,6 +15,7 @@
 
 #include "qemu/osdep.h"
 #include "qemu-common.h"
+#include "qemu/error-report.h"
 #include "block/block.h"
 #include "qemu/rcu_queue.h"
 #include "qemu/sockets.h"
@@ -696,8 +697,8 @@ void aio_context_setup(AioContext *ctx)
 {
     /* TODO remove this in final patch submission */
     if (getenv("QEMU_AIO_POLL_MAX_NS")) {
-        fprintf(stderr, "The QEMU_AIO_POLL_MAX_NS environment variable has "
-                "been replaced with -object iothread,poll-max-ns=NUM\n");
+        error_report("The QEMU_AIO_POLL_MAX_NS environment variable has "
+                "been replaced with -object iothread,poll-max-ns=NUM");
         exit(1);
     }
 
diff --git a/util/coroutine-sigaltstack.c b/util/coroutine-sigaltstack.c
index f6fc49a0e5..96a01c2c88 100644
--- a/util/coroutine-sigaltstack.c
+++ b/util/coroutine-sigaltstack.c
@@ -80,7 +80,7 @@ static void __attribute__((constructor)) coroutine_init(void)
 
     ret = pthread_key_create(&thread_state_key, qemu_coroutine_thread_cleanup);
     if (ret != 0) {
-        fprintf(stderr, "unable to create leader key: %s\n", strerror(errno));
+        error_report("unable to create leader key: %s", strerror(errno));
         abort();
     }
 }
diff --git a/util/error.c b/util/error.c
index 3efdd69162..e423368ca0 100644
--- a/util/error.c
+++ b/util/error.c
@@ -32,7 +32,7 @@ Error *error_fatal;
 static void error_handle_fatal(Error **errp, Error *err)
 {
     if (errp == &error_abort) {
-        fprintf(stderr, "Unexpected error in %s() at %s:%d:\n",
+        error_report("Unexpected error in %s() at %s:%d:",
                 err->func, err->src, err->line);
         error_report_err(err);
         abort();
diff --git a/util/main-loop.c b/util/main-loop.c
index 7558eb5f53..d8369716b2 100644
--- a/util/main-loop.c
+++ b/util/main-loop.c
@@ -95,7 +95,7 @@ static int qemu_signal_init(void)
     sigdelset(&set, SIG_IPI);
     sigfd = qemu_signalfd(&set);
     if (sigfd == -1) {
-        fprintf(stderr, "failed to create signalfd\n");
+        error_report("failed to create signalfd");
         return -errno;
     }
 
diff --git a/util/mmap-alloc.c b/util/mmap-alloc.c
index 3ec029a9ea..11887aac69 100644
--- a/util/mmap-alloc.c
+++ b/util/mmap-alloc.c
@@ -11,6 +11,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu/mmap-alloc.h"
 #include "qemu/host-utils.h"
 
@@ -51,7 +52,7 @@ size_t qemu_mempath_getpagesize(const char *mem_path)
     } while (ret != 0 && errno == EINTR);
 
     if (ret != 0) {
-        fprintf(stderr, "Couldn't statfs() memory path: %s\n",
+        error_report("Couldn't statfs() memory path: %s",
                 strerror(errno));
         exit(1);
     }
diff --git a/util/module.c b/util/module.c
index c90973721f..1153e3ebb0 100644
--- a/util/module.c
+++ b/util/module.c
@@ -124,13 +124,13 @@ static int module_load_file(const char *fname)
 
     g_module = g_module_open(fname, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
     if (!g_module) {
-        fprintf(stderr, "Failed to open module: %s\n",
+        error_report("Failed to open module: %s",
                 g_module_error());
         ret = -EINVAL;
         goto out;
     }
     if (!g_module_symbol(g_module, DSO_STAMP_FUN_STR, (gpointer *)&sym)) {
-        fprintf(stderr, "Failed to initialize module: %s\n",
+        error_report("Failed to initialize module: %s",
                 fname);
         /* Print some info if this is a QEMU module (but from different build),
          * this will make debugging user problems easier. */
@@ -169,7 +169,7 @@ void module_load_one(const char *prefix, const char *lib_name)
     static GHashTable *loaded_modules;
 
     if (!g_module_supported()) {
-        fprintf(stderr, "Module is not supported by system.\n");
+        error_report("Module is not supported by system.");
         return;
     }
 
diff --git a/util/osdep.c b/util/osdep.c
index a479fedc4a..62d92c9560 100644
--- a/util/osdep.c
+++ b/util/osdep.c
@@ -425,7 +425,7 @@ void fips_set_state(bool requested)
 #endif /* __linux__ */
 
 #ifdef _FIPS_DEBUG
-    fprintf(stderr, "FIPS mode %s (requested %s)\n",
+    error_report("FIPS mode %s (requested %s)",
 	    (fips_enabled ? "enabled" : "disabled"),
 	    (requested ? "enabled" : "disabled"));
 #endif
@@ -452,7 +452,7 @@ int socket_init(void)
     ret = WSAStartup(MAKEWORD(2, 2), &Data);
     if (ret != 0) {
         err = WSAGetLastError();
-        fprintf(stderr, "WSAStartup: %d\n", err);
+        error_report("WSAStartup: %d", err);
         return -1;
     }
     atexit(socket_cleanup);
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index 80086c549f..d840692dd7 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -34,6 +34,7 @@
 #include "sysemu/sysemu.h"
 #include "trace.h"
 #include "qapi/error.h"
+#include "qemu/error-report.h"
 #include "qemu/sockets.h"
 #include <libgen.h>
 #include <sys/signal.h>
@@ -87,7 +88,7 @@ int qemu_daemon(int nochdir, int noclose)
 void *qemu_oom_check(void *ptr)
 {
     if (ptr == NULL) {
-        fprintf(stderr, "Failed to allocate memory: %s\n", strerror(errno));
+        error_report("Failed to allocate memory: %s", strerror(errno));
         abort();
     }
     return ptr;
diff --git a/util/oslib-win32.c b/util/oslib-win32.c
index 69a6286d50..2197a6a4fc 100644
--- a/util/oslib-win32.c
+++ b/util/oslib-win32.c
@@ -30,6 +30,7 @@
  * see the license comment there.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include <windows.h>
 #include "qapi/error.h"
 #include "sysemu/sysemu.h"
@@ -44,7 +45,7 @@
 void *qemu_oom_check(void *ptr)
 {
     if (ptr == NULL) {
-        fprintf(stderr, "Failed to allocate memory: %lu\n", GetLastError());
+        error_report("Failed to allocate memory: %lu", GetLastError());
         abort();
     }
     return ptr;
diff --git a/util/qemu-coroutine.c b/util/qemu-coroutine.c
index d6095c1d5a..1f7cce6706 100644
--- a/util/qemu-coroutine.c
+++ b/util/qemu-coroutine.c
@@ -13,6 +13,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "trace.h"
 #include "qemu-common.h"
 #include "qemu/thread.h"
@@ -110,7 +111,7 @@ void qemu_aio_coroutine_enter(AioContext *ctx, Coroutine *co)
     trace_qemu_aio_coroutine_enter(ctx, self, co, co->entry_arg);
 
     if (co->caller) {
-        fprintf(stderr, "Co-routine re-entered recursively\n");
+        error_report("Co-routine re-entered recursively");
         abort();
     }
 
@@ -164,7 +165,7 @@ void coroutine_fn qemu_coroutine_yield(void)
     trace_qemu_coroutine_yield(self, to);
 
     if (!to) {
-        fprintf(stderr, "Co-routine is yielding to no one\n");
+        error_report("Co-routine is yielding to no one");
         abort();
     }
 
diff --git a/util/qemu-progress.c b/util/qemu-progress.c
index 3c2223c1a2..84598f0fbb 100644
--- a/util/qemu-progress.c
+++ b/util/qemu-progress.c
@@ -23,6 +23,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 
 struct progress_state {
@@ -68,7 +69,7 @@ static void sigusr_print(int signal)
 static void progress_dummy_print(void)
 {
     if (print_pending) {
-        fprintf(stderr, "    (%3.2f/100%%)\n", state.current);
+        error_report("    (%3.2f/100%%)", state.current);
         print_pending = 0;
     }
 }
diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c
index 4e95d272dc..4861b1fefc 100644
--- a/util/qemu-thread-posix.c
+++ b/util/qemu-thread-posix.c
@@ -11,6 +11,7 @@
  *
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu/thread.h"
 #include "qemu/atomic.h"
 #include "qemu/notify.h"
@@ -25,14 +26,14 @@ void qemu_thread_naming(bool enable)
 #ifndef CONFIG_THREAD_SETNAME_BYTHREAD
     /* This is a debugging option, not fatal */
     if (enable) {
-        fprintf(stderr, "qemu: thread naming not supported on this host\n");
+        error_report("qemu: thread naming not supported on this host");
     }
 #endif
 }
 
 static void error_exit(int err, const char *msg)
 {
-    fprintf(stderr, "qemu: %s: %s\n", msg, strerror(err));
+    error_report("qemu: %s: %s", msg, strerror(err));
     abort();
 }
 
diff --git a/util/qemu-thread-win32.c b/util/qemu-thread-win32.c
index 94f3491a87..46b5dac159 100644
--- a/util/qemu-thread-win32.c
+++ b/util/qemu-thread-win32.c
@@ -16,6 +16,7 @@
 #endif
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu-common.h"
 #include "qemu/thread.h"
 #include "qemu/notify.h"
@@ -29,7 +30,7 @@ void qemu_thread_naming(bool enable)
     /* But note we don't actually name them on Windows yet */
     name_threads = enable;
 
-    fprintf(stderr, "qemu: thread naming not supported on this host\n");
+    error_report("qemu: thread naming not supported on this host");
 }
 
 static void error_exit(int err, const char *msg)
@@ -38,7 +39,7 @@ static void error_exit(int err, const char *msg)
 
     FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER,
                   NULL, err, 0, (LPTSTR)&pstr, 2, NULL);
-    fprintf(stderr, "qemu: %s: %s\n", msg, pstr);
+    error_report("qemu: %s: %s", msg, pstr);
     LocalFree(pstr);
     abort();
 }
diff --git a/util/qemu-timer-common.c b/util/qemu-timer-common.c
index 06d084d364..ab7b702c4f 100644
--- a/util/qemu-timer-common.c
+++ b/util/qemu-timer-common.c
@@ -22,6 +22,7 @@
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qemu/timer.h"
 
 /***********************************************************/
@@ -37,7 +38,7 @@ static void __attribute__((constructor)) init_get_clock(void)
     int ret;
     ret = QueryPerformanceFrequency(&freq);
     if (ret == 0) {
-        fprintf(stderr, "Could not calibrate ticks\n");
+        error_report("Could not calibrate ticks");
         exit(1);
     }
     clock_freq = freq.QuadPart;
diff --git a/util/qht.c b/util/qht.c
index ff4d2e6974..bfab5c7e5e 100644
--- a/util/qht.c
+++ b/util/qht.c
@@ -154,7 +154,7 @@ static void qht_bucket_debug__locked(struct qht_bucket *b)
                 continue;
             }
             if (seen_empty) {
-                fprintf(stderr, "%s: b: %p, pos: %i, hash: 0x%x, p: %p\n",
+                error_report("%s: b: %p, pos: %i, hash: 0x%x, p: %p",
                         __func__, b, i, b->hashes[i], b->pointers[i]);
                 corrupt = true;
             }
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Qemu-devel] [PATCH v1 6/8] ui: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:08 [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* Alistair Francis
                   ` (4 preceding siblings ...)
  2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 5/8] util: " Alistair Francis
@ 2017-09-26  0:09 ` Alistair Francis
  2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 7/8] tcg: " Alistair Francis
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-26  0:09 UTC (permalink / raw)
  To: qemu-devel
  Cc: alistair.francis, alistair23, armbru, Peter Maydell, Gerd Hoffmann

Replace a large number of the fprintf(stderr, "*\n" calls with
error_report(). The functions were renamed with these commands and then
compiler issues where manually fixed.

find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: Gerd Hoffmann <kraxel@redhat.com>
---

 ui/cocoa.m         |  6 +++---
 ui/console.c       |  2 +-
 ui/curses.c        |  2 +-
 ui/cursor.c        | 10 +++++-----
 ui/gtk.c           | 10 +++++-----
 ui/input-linux.c   |  3 ++-
 ui/keymaps.c       |  4 ++--
 ui/sdl.c           | 14 +++++++-------
 ui/sdl2.c          |  8 ++++----
 ui/sdl_zoom.c      |  3 ++-
 ui/shader.c        |  8 ++++----
 ui/spice-display.c | 10 +++++-----
 ui/vnc-enc-tight.c |  4 ++--
 ui/vnc-enc-zlib.c  |  4 ++--
 ui/vnc-enc-zrle.c  |  4 ++--
 ui/vnc.c           |  2 +-
 16 files changed, 48 insertions(+), 46 deletions(-)

diff --git a/ui/cocoa.m b/ui/cocoa.m
index 93e56d0518..62c021c5d3 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -235,7 +235,7 @@ const int mac_to_qkeycode_map[] = {
 static int cocoa_keycode_to_qemu(int keycode)
 {
     if (ARRAY_SIZE(mac_to_qkeycode_map) <= keycode) {
-        fprintf(stderr, "(cocoa) warning unknown keycode 0x%x\n", keycode);
+        error_report("(cocoa) warning unknown keycode 0x%x", keycode);
         return 0;
     }
     return mac_to_qkeycode_map[keycode];
@@ -908,7 +908,7 @@ QemuCocoaView *cocoaView;
         // create a view and add it to the window
         cocoaView = [[QemuCocoaView alloc] initWithFrame:NSMakeRect(0.0, 0.0, 640.0, 480.0)];
         if(!cocoaView) {
-            fprintf(stderr, "(cocoa) can't create a view\n");
+            error_report("(cocoa) can't create a view");
             exit(1);
         }
 
@@ -917,7 +917,7 @@ QemuCocoaView *cocoaView;
             styleMask:NSWindowStyleMaskTitled|NSWindowStyleMaskMiniaturizable|NSWindowStyleMaskClosable
             backing:NSBackingStoreBuffered defer:NO];
         if(!normalWindow) {
-            fprintf(stderr, "(cocoa) can't create window\n");
+            error_report("(cocoa) can't create window");
             exit(1);
         }
         [normalWindow setAcceptsMouseMovedEvents:YES];
diff --git a/ui/console.c b/ui/console.c
index b82c27960a..56d0ebcb50 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -1417,7 +1417,7 @@ void register_displaychangelistener(DisplayChangeListener *dcl)
         /* display has opengl support */
         assert(dcl->con);
         if (dcl->con->gl) {
-            fprintf(stderr, "can't register two opengl displays (%s, %s)\n",
+            error_report("can't register two opengl displays (%s, %s)",
                     dcl->ops->dpy_name, dcl->con->gl->ops->dpy_name);
             exit(1);
         }
diff --git a/ui/curses.c b/ui/curses.c
index 03cefdf470..06784ec7f0 100644
--- a/ui/curses.c
+++ b/ui/curses.c
@@ -423,7 +423,7 @@ void curses_display_init(DisplayState *ds, int full_screen)
 {
 #ifndef _WIN32
     if (!isatty(1)) {
-        fprintf(stderr, "We need a terminal output\n");
+        error_report("We need a terminal output");
         exit(1);
     }
 #endif
diff --git a/ui/cursor.c b/ui/cursor.c
index f3da0cee79..9d847031ec 100644
--- a/ui/cursor.c
+++ b/ui/cursor.c
@@ -18,12 +18,12 @@ static QEMUCursor *cursor_parse_xpm(const char *xpm[])
     /* parse header line: width, height, #colors, #chars */
     if (sscanf(xpm[line], "%u %u %u %u",
                &width, &height, &colors, &chars) != 4) {
-        fprintf(stderr, "%s: header parse error: \"%s\"\n",
-                __func__, xpm[line]);
+        error_report("%s: header parse error: \"%s\"",
+                     __func__, xpm[line]);
         return NULL;
     }
     if (chars != 1) {
-        fprintf(stderr, "%s: chars != 1 not supported\n", __func__);
+        error_report("%s: chars != 1 not supported", __func__);
         return NULL;
     }
     line++;
@@ -40,7 +40,7 @@ static QEMUCursor *cursor_parse_xpm(const char *xpm[])
                 continue;
             }
         }
-        fprintf(stderr, "%s: color parse error: \"%s\"\n",
+        error_report("%s: color parse error: \"%s\"",
                 __func__, xpm[line]);
         return NULL;
     }
@@ -75,7 +75,7 @@ void cursor_print_ascii_art(QEMUCursor *c, const char *prefix)
                 fprintf(stderr, "o"); /* other */
             }
         }
-        fprintf(stderr, "|\n");
+        error_report("|");
     }
 }
 
diff --git a/ui/gtk.c b/ui/gtk.c
index 5bd87c265a..99477ea6e6 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -1254,7 +1254,7 @@ static gboolean gd_win_grab(void *opaque)
 {
     VirtualConsole *vc = opaque;
 
-    fprintf(stderr, "%s: %s\n", __func__, vc->label);
+    error_report("%s: %s", __func__, vc->label);
     if (vc->s->ptr_owner) {
         gd_ungrab_pointer(vc->s);
     } else {
@@ -2210,12 +2210,12 @@ static void gd_set_keycode_type(GtkDisplayState *s)
             keycodes = XGetAtomName(x11_display, desc->names->keycodes);
         }
         if (keycodes == NULL) {
-            fprintf(stderr, "could not lookup keycode name\n");
+            error_report("could not lookup keycode name");
         } else if (strstart(keycodes, "evdev", NULL)) {
             s->has_evdev = true;
         } else if (!strstart(keycodes, "xfree86", NULL)) {
-            fprintf(stderr, "unknown keycodes `%s', please report to "
-                    "qemu-devel@nongnu.org\n", keycodes);
+            error_report("unknown keycodes `%s', please report to "
+                    "qemu-devel@nongnu.org", keycodes);
         }
 
         if (desc) {
@@ -2239,7 +2239,7 @@ void gtk_display_init(DisplayState *ds, bool full_screen, bool grab_on_hover)
     GdkDisplay *window_display;
 
     if (!gtkinit) {
-        fprintf(stderr, "gtk initialization failed\n");
+        error_report("gtk initialization failed");
         exit(1);
     }
 
diff --git a/ui/input-linux.c b/ui/input-linux.c
index 9720333b2c..edc5273476 100644
--- a/ui/input-linux.c
+++ b/ui/input-linux.c
@@ -5,6 +5,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "qapi/error.h"
 #include "qemu-common.h"
 #include "qemu/config-file.h"
@@ -241,7 +242,7 @@ static void input_linux_event(void *opaque)
         rc = read(il->fd, &p[il->read_offset], read_size);
         if (rc != read_size) {
             if (rc < 0 && errno != EAGAIN) {
-                fprintf(stderr, "%s: read: %s\n", __func__, strerror(errno));
+                error_report("%s: read: %s", __func__, strerror(errno));
                 qemu_set_fd_handler(il->fd, NULL, NULL, NULL);
                 close(il->fd);
             } else if (rc > 0) {
diff --git a/ui/keymaps.c b/ui/keymaps.c
index f9762d1497..41c5e42553 100644
--- a/ui/keymaps.c
+++ b/ui/keymaps.c
@@ -105,7 +105,7 @@ static kbd_layout_t *parse_keyboard_layout(const name2keysym_t *table,
     f = filename ? fopen(filename, "r") : NULL;
     g_free(filename);
     if (!f) {
-        fprintf(stderr, "Could not read keymap file: '%s'\n", language);
+        error_report("Could not read keymap file: '%s'", language);
         return NULL;
     }
 
@@ -150,7 +150,7 @@ static kbd_layout_t *parse_keyboard_layout(const name2keysym_t *table,
                     if (strstr(rest, "numlock")) {
                         add_to_key_range(&k->keypad_range, keycode);
                         add_to_key_range(&k->numlock_range, keysym);
-                        /* fprintf(stderr, "keypad keysym %04x keycode %d\n",
+                        /* error_report("keypad keysym %04x keycode %d",
                                    keysym, keycode); */
                     }
 
diff --git a/ui/sdl.c b/ui/sdl.c
index 7b71a9ac58..29db4c68ad 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -91,7 +91,7 @@ static void sdl_update(DisplayChangeListener *dcl,
             SDL_BlitSurface(guest_screen, &rec, real_screen, &rec);
         } else {
             if (sdl_zoom_blit(guest_screen, real_screen, SMOOTHING_ON, &rec) < 0) {
-                fprintf(stderr, "Zoom blit failed\n");
+                error_report("Zoom blit failed");
                 exit(1);
             }
         }
@@ -120,7 +120,7 @@ static void do_sdl_resize(int width, int height, int bpp)
     tmp_screen = SDL_SetVideoMode(width, height, bpp, flags);
     if (!real_screen) {
         if (!tmp_screen) {
-            fprintf(stderr, "Could not open SDL display (%dx%dx%d): %s\n",
+            error_report("Could not open SDL display (%dx%dx%d): %s",
                     width, height, bpp, SDL_GetError());
             exit(1);
         }
@@ -130,7 +130,7 @@ static void do_sdl_resize(int width, int height, int bpp)
          * resolution failed.
          */
         if (!tmp_screen) {
-            fprintf(stderr, "Failed to set SDL display (%dx%dx%d): %s\n",
+            error_report("Failed to set SDL display (%dx%dx%d): %s",
                     width, height, bpp, SDL_GetError());
             return;
         }
@@ -241,12 +241,12 @@ static int check_for_evdev(void)
                      XkbKeycodesNameMask, desc) == Success)) {
         keycodes = XGetAtomName(info.info.x11.display, desc->names->keycodes);
         if (keycodes == NULL) {
-            fprintf(stderr, "could not lookup keycode name\n");
+            error_report("could not lookup keycode name");
         } else if (strstart(keycodes, "evdev", NULL)) {
             has_evdev = 1;
         } else if (!strstart(keycodes, "xfree86", NULL)) {
-            fprintf(stderr, "unknown keycodes `%s', please report to "
-                    "qemu-devel@nongnu.org\n", keycodes);
+            error_report("unknown keycodes `%s', please report to "
+                    "qemu-devel@nongnu.org", keycodes);
         }
     }
 
@@ -988,7 +988,7 @@ void sdl_display_init(DisplayState *ds, int full_screen, int no_frame)
 
     flags = SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE;
     if (SDL_Init (flags)) {
-        fprintf(stderr, "Could not initialize SDL(%s) - exiting\n",
+        error_report("Could not initialize SDL(%s) - exiting",
                 SDL_GetError());
         exit(1);
     }
diff --git a/ui/sdl2.c b/ui/sdl2.c
index 53dd447fd2..f6700e70f5 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -400,7 +400,7 @@ static void handle_keydown(SDL_Event *ev)
                             160);
                 height = (surface_height(scon->surface) * width) /
                     surface_width(scon->surface);
-                fprintf(stderr, "%s: scale to %dx%d\n",
+                error_report("%s: scale to %dx%d",
                         __func__, width, height);
                 sdl_scale(scon, width, height);
                 sdl2_redraw(scon);
@@ -686,13 +686,13 @@ static void sdl_mouse_define(DisplayChangeListener *dcl,
                                  0xff0000, 0x00ff00, 0xff, 0xff000000);
 
     if (!guest_sprite_surface) {
-        fprintf(stderr, "Failed to make rgb surface from %p\n", c);
+        error_report("Failed to make rgb surface from %p", c);
         return;
     }
     guest_sprite = SDL_CreateColorCursor(guest_sprite_surface,
                                          c->hot_x, c->hot_y);
     if (!guest_sprite) {
-        fprintf(stderr, "Failed to make color cursor from %p\n", c);
+        error_report("Failed to make color cursor from %p", c);
         return;
     }
     if (guest_cursor &&
@@ -783,7 +783,7 @@ void sdl_display_init(DisplayState *ds, int full_screen, int no_frame)
 
     flags = SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE;
     if (SDL_Init(flags)) {
-        fprintf(stderr, "Could not initialize SDL(%s) - exiting\n",
+        error_report("Could not initialize SDL(%s) - exiting",
                 SDL_GetError());
         exit(1);
     }
diff --git a/ui/sdl_zoom.c b/ui/sdl_zoom.c
index b96196bac5..bf73d1f1f9 100644
--- a/ui/sdl_zoom.c
+++ b/ui/sdl_zoom.c
@@ -12,6 +12,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "sdl_zoom.h"
 
 static void sdl_zoom_rgb16(SDL_Surface *src, SDL_Surface *dst, int smooth,
@@ -81,7 +82,7 @@ int sdl_zoom_blit(SDL_Surface *src_sfc, SDL_Surface *dst_sfc, int smooth,
     else if (src_sfc->format->BitsPerPixel == 16)
         sdl_zoom_rgb16(src_sfc, dst_sfc, smooth, &zoom);
     else {
-        fprintf(stderr, "pixel format not supported\n");
+        error_report("pixel format not supported");
         return -1;
     }
 
diff --git a/ui/shader.c b/ui/shader.c
index 1ffddbef3b..5c6fafe55d 100644
--- a/ui/shader.c
+++ b/ui/shader.c
@@ -85,9 +85,9 @@ GLuint qemu_gl_create_compile_shader(GLenum type, const GLchar *src)
         glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &length);
         errmsg = g_malloc(length);
         glGetShaderInfoLog(shader, length, &length, errmsg);
-        fprintf(stderr, "%s: compile %s error\n%s\n", __func__,
-                (type == GL_VERTEX_SHADER) ? "vertex" : "fragment",
-                errmsg);
+        error_report("%s: compile %s error: %s", __func__,
+                     (type == GL_VERTEX_SHADER) ? "vertex" : "fragment",
+                     errmsg);
         g_free(errmsg);
         return 0;
     }
@@ -110,7 +110,7 @@ GLuint qemu_gl_create_link_program(GLuint vert, GLuint frag)
         glGetProgramiv(program, GL_INFO_LOG_LENGTH, &length);
         errmsg = g_malloc(length);
         glGetProgramInfoLog(program, length, &length, errmsg);
-        fprintf(stderr, "%s: link program: %s\n", __func__, errmsg);
+        error_report("%s: link program: %s", __func__, errmsg);
         g_free(errmsg);
         return 0;
     }
diff --git a/ui/spice-display.c b/ui/spice-display.c
index 346fff44f4..8cf126e7b0 100644
--- a/ui/spice-display.c
+++ b/ui/spice-display.c
@@ -630,13 +630,13 @@ static int interface_req_cursor_notification(QXLInstance *sin)
 
 static void interface_notify_update(QXLInstance *sin, uint32_t update_id)
 {
-    fprintf(stderr, "%s: abort()\n", __func__);
+    error_report("%s: abort()", __func__);
     abort();
 }
 
 static int interface_flush_resources(QXLInstance *sin)
 {
-    fprintf(stderr, "%s: abort()\n", __func__);
+    error_report("%s: abort()", __func__);
     abort();
     return 0;
 }
@@ -646,7 +646,7 @@ static void interface_update_area_complete(QXLInstance *sin,
         QXLRect *dirty, uint32_t num_updated_rects)
 {
     /* should never be called, used in qxl native mode only */
-    fprintf(stderr, "%s: abort()\n", __func__);
+    error_report("%s: abort()", __func__);
     abort();
 }
 
@@ -671,7 +671,7 @@ static void interface_async_complete(QXLInstance *sin, uint64_t cookie_token)
 #endif
     default:
         /* should never be called, used in qxl native mode only */
-        fprintf(stderr, "%s: abort()\n", __func__);
+        error_report("%s: abort()", __func__);
         abort();
     }
     g_free(cookie);
@@ -955,7 +955,7 @@ static void qemu_spice_gl_scanout_texture(DisplayChangeListener *dcl,
     assert(tex_id);
     fd = egl_get_fd_for_texture(tex_id, &stride, &fourcc);
     if (fd < 0) {
-        fprintf(stderr, "%s: failed to get fd for texture\n", __func__);
+        error_report("%s: failed to get fd for texture", __func__);
         return;
     }
     dprint(1, "%s: %dx%d (stride %d, fourcc 0x%x)\n", __func__,
diff --git a/ui/vnc-enc-tight.c b/ui/vnc-enc-tight.c
index f38aceb4da..7ac957057d 100644
--- a/ui/vnc-enc-tight.c
+++ b/ui/vnc-enc-tight.c
@@ -800,7 +800,7 @@ static int tight_init_stream(VncState *vs, int stream_id,
                            MAX_MEM_LEVEL, strategy);
 
         if (err != Z_OK) {
-            fprintf(stderr, "VNC: error initializing zlib\n");
+            error_report("VNC: error initializing zlib");
             return -1;
         }
 
@@ -865,7 +865,7 @@ static int tight_compress_data(VncState *vs, int stream_id, size_t bytes,
 
     /* start encoding */
     if (deflate(zstream, Z_SYNC_FLUSH) != Z_OK) {
-        fprintf(stderr, "VNC: error during tight compression\n");
+        error_report("VNC: error during tight compression");
         return -1;
     }
 
diff --git a/ui/vnc-enc-zlib.c b/ui/vnc-enc-zlib.c
index 33e9df2f6a..437cfb1307 100644
--- a/ui/vnc-enc-zlib.c
+++ b/ui/vnc-enc-zlib.c
@@ -80,7 +80,7 @@ static int vnc_zlib_stop(VncState *vs)
                            MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY);
 
         if (err != Z_OK) {
-            fprintf(stderr, "VNC: error initializing zlib\n");
+            error_report("VNC: error initializing zlib");
             return -1;
         }
 
@@ -109,7 +109,7 @@ static int vnc_zlib_stop(VncState *vs)
 
     // start encoding
     if (deflate(zstream, Z_SYNC_FLUSH) != Z_OK) {
-        fprintf(stderr, "VNC: error during zlib compression\n");
+        error_report("VNC: error during zlib compression");
         return -1;
     }
 
diff --git a/ui/vnc-enc-zrle.c b/ui/vnc-enc-zrle.c
index fd63d4f688..a3af8a1c5d 100644
--- a/ui/vnc-enc-zrle.c
+++ b/ui/vnc-enc-zrle.c
@@ -85,7 +85,7 @@ static int zrle_compress_data(VncState *vs, int level)
                            MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY);
 
         if (err != Z_OK) {
-            fprintf(stderr, "VNC: error initializing zlib\n");
+            error_report("VNC: error initializing zlib");
             return -1;
         }
 
@@ -104,7 +104,7 @@ static int zrle_compress_data(VncState *vs, int level)
 
     /* start encoding */
     if (deflate(zstream, Z_SYNC_FLUSH) != Z_OK) {
-        fprintf(stderr, "VNC: error during zrle compression\n");
+        error_report("VNC: error during zrle compression");
         return -1;
     }
 
diff --git a/ui/vnc.c b/ui/vnc.c
index 0b5dbc62e4..2bad9ab971 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -71,7 +71,7 @@ static void vnc_set_share_mode(VncState *vs, VncShareMode mode)
         [VNC_SHARE_MODE_EXCLUSIVE]    = "exclusive",
         [VNC_SHARE_MODE_DISCONNECTED] = "disconnected",
     };
-    fprintf(stderr, "%s/%p: %s -> %s\n", __func__,
+    error_report("%s/%p: %s -> %s", __func__,
             vs->ioc, mn[vs->share_mode], mn[mode]);
 #endif
 
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Qemu-devel] [PATCH v1 7/8] tcg: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:08 [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* Alistair Francis
                   ` (5 preceding siblings ...)
  2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 6/8] ui: " Alistair Francis
@ 2017-09-26  0:09 ` Alistair Francis
  2017-09-26 15:05   ` Richard Henderson
  2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 8/8] target: " Alistair Francis
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 35+ messages in thread
From: Alistair Francis @ 2017-09-26  0:09 UTC (permalink / raw)
  To: qemu-devel
  Cc: alistair.francis, alistair23, armbru, Paolo Bonzini,
	Peter Crosthwaite, Richard Henderson, Stefan Weil

Replace a large number of the fprintf(stderr, "*\n" calls with
error_report(). The functions were renamed with these commands and then
compiler issues where manually fixed.

find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Stefan Weil <sw@weilnetz.de>
---

 cpus.c                   |  8 ++++----
 exec.c                   | 14 +++++++-------
 tcg/optimize.c           |  8 ++++----
 tcg/tcg.c                |  2 +-
 tcg/tcg.h                |  3 ++-
 tcg/tci.c                |  2 +-
 tcg/tci/tcg-target.inc.c |  4 ++--
 vl.c                     |  2 +-
 8 files changed, 22 insertions(+), 21 deletions(-)

diff --git a/cpus.c b/cpus.c
index c9a624003a..784cee4848 100644
--- a/cpus.c
+++ b/cpus.c
@@ -258,7 +258,7 @@ int64_t cpu_get_icount_raw(void)
 
     if (cpu && cpu->running) {
         if (!cpu->can_do_io) {
-            fprintf(stderr, "Bad icount read\n");
+            error_report("Bad icount read");
             exit(1);
         }
         /* Take into account what has run */
@@ -1113,7 +1113,7 @@ static void *qemu_kvm_cpu_thread_fn(void *arg)
 
     r = kvm_init_vcpu(cpu);
     if (r < 0) {
-        fprintf(stderr, "kvm_init_vcpu failed: %s\n", strerror(-r));
+        error_report("kvm_init_vcpu failed: %s", strerror(-r));
         exit(1);
     }
 
@@ -1143,7 +1143,7 @@ static void *qemu_kvm_cpu_thread_fn(void *arg)
 static void *qemu_dummy_cpu_thread_fn(void *arg)
 {
 #ifdef _WIN32
-    fprintf(stderr, "qtest is not supported under Windows\n");
+    error_report("qtest is not supported under Windows");
     exit(1);
 #else
     CPUState *cpu = arg;
@@ -1525,7 +1525,7 @@ static void qemu_cpu_kick_thread(CPUState *cpu)
 #else /* _WIN32 */
     if (!qemu_cpu_is_self(cpu)) {
         if (!QueueUserAPC(dummy_apc_func, cpu->hThread, 0)) {
-            fprintf(stderr, "%s: QueueUserAPC failed with error %lu\n",
+            error_report("%s: QueueUserAPC failed with error %lu",
                     __func__, GetLastError());
             exit(1);
         }
diff --git a/exec.c b/exec.c
index 7a80460725..f71b714b10 100644
--- a/exec.c
+++ b/exec.c
@@ -1045,7 +1045,7 @@ static RAMBlock *qemu_get_ram_block(ram_addr_t addr)
         }
     }
 
-    fprintf(stderr, "Bad ram offset %" PRIx64 "\n", (uint64_t)addr);
+    error_report("Bad ram offset %" PRIx64 "", (uint64_t)addr);
     abort();
 
 found:
@@ -1658,7 +1658,7 @@ static ram_addr_t find_ram_offset(ram_addr_t size)
     }
 
     if (offset == RAM_ADDR_MAX) {
-        fprintf(stderr, "Failed to find gap of requested size: %" PRIu64 "\n",
+        error_report("Failed to find gap of requested size: %" PRIu64 "",
                 (uint64_t)size);
         abort();
     }
@@ -1688,8 +1688,8 @@ static void qemu_ram_setup_dump(void *addr, ram_addr_t size)
         ret = qemu_madvise(addr, size, QEMU_MADV_DONTDUMP);
         if (ret) {
             perror("qemu_madvise");
-            fprintf(stderr, "madvise doesn't support MADV_DONTDUMP, "
-                            "but dump_guest_core=off specified\n");
+            error_report("madvise doesn't support MADV_DONTDUMP, "
+                            "but dump_guest_core=off specified");
         }
     }
 }
@@ -1725,7 +1725,7 @@ void qemu_ram_set_idstr(RAMBlock *new_block, const char *name, DeviceState *dev)
     RAMBLOCK_FOREACH(block) {
         if (block != new_block &&
             !strcmp(block->idstr, new_block->idstr)) {
-            fprintf(stderr, "RAMBlock \"%s\" already registered, abort!\n",
+            error_report("RAMBlock \"%s\" already registered, abort!",
                     new_block->idstr);
             abort();
         }
@@ -2153,8 +2153,8 @@ void qemu_ram_remap(ram_addr_t addr, ram_addr_t length)
                                 flags, -1, 0);
                 }
                 if (area != vaddr) {
-                    fprintf(stderr, "Could not remap addr: "
-                            RAM_ADDR_FMT "@" RAM_ADDR_FMT "\n",
+                    error_report("Could not remap addr: "
+                            RAM_ADDR_FMT "@" RAM_ADDR_FMT "",
                             length, addr);
                     exit(1);
                 }
diff --git a/tcg/optimize.c b/tcg/optimize.c
index adfc56ce62..31b15b508d 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -96,8 +96,8 @@ static TCGOpcode op_to_mov(TCGOpcode op)
     case 64:
         return INDEX_op_mov_i64;
     default:
-        fprintf(stderr, "op_to_mov: unexpected return value of "
-                "function op_bits.\n");
+        error_report("op_to_mov: unexpected return value of "
+                "function op_bits.");
         tcg_abort();
     }
 }
@@ -110,8 +110,8 @@ static TCGOpcode op_to_movi(TCGOpcode op)
     case 64:
         return INDEX_op_movi_i64;
     default:
-        fprintf(stderr, "op_to_movi: unexpected return value of "
-                "function op_bits.\n");
+        error_report("op_to_movi: unexpected return value of "
+                "function op_bits.");
         tcg_abort();
     }
 }
diff --git a/tcg/tcg.c b/tcg/tcg.c
index dff9999bc6..2bbd20fc28 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -673,7 +673,7 @@ static void tcg_temp_free_internal(int idx)
 #if defined(CONFIG_DEBUG_TCG)
     s->temps_in_use--;
     if (s->temps_in_use < 0) {
-        fprintf(stderr, "More temporaries freed than allocated!\n");
+        error_report("More temporaries freed than allocated!");
     }
 #endif
 
diff --git a/tcg/tcg.h b/tcg/tcg.h
index 25662c36d4..1ac0f817bc 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -29,6 +29,7 @@
 #include "cpu.h"
 #include "exec/tb-context.h"
 #include "qemu/bitops.h"
+#include "qemu/error-report.h"
 #include "tcg-mo.h"
 #include "tcg-target.h"
 
@@ -897,7 +898,7 @@ typedef struct TCGTargetOpDef {
 
 #define tcg_abort() \
 do {\
-    fprintf(stderr, "%s:%d: tcg fatal error\n", __FILE__, __LINE__);\
+    error_report("%s:%d: tcg fatal error", __FILE__, __LINE__);\
     abort();\
 } while (0)
 
diff --git a/tcg/tci.c b/tcg/tci.c
index f39bfb95c0..10b88f7308 100644
--- a/tcg/tci.c
+++ b/tcg/tci.c
@@ -35,7 +35,7 @@
 /* Marker for missing code. */
 #define TODO() \
     do { \
-        fprintf(stderr, "TODO %s:%u: %s()\n", \
+        error_report("TODO %s:%u: %s()", \
                 __FILE__, __LINE__, __func__); \
         tcg_abort(); \
     } while (0)
diff --git a/tcg/tci/tcg-target.inc.c b/tcg/tci/tcg-target.inc.c
index 913c3802a3..2f4b56d3ba 100644
--- a/tcg/tci/tcg-target.inc.c
+++ b/tcg/tci/tcg-target.inc.c
@@ -29,7 +29,7 @@
 /* Marker for missing code. */
 #define TODO() \
     do { \
-        fprintf(stderr, "TODO %s:%u: %s()\n", \
+        error_report("TODO %s:%u: %s()", \
                 __FILE__, __LINE__, __func__); \
         tcg_abort(); \
     } while (0)
@@ -403,7 +403,7 @@ static const char *target_parse_constraint(TCGArgConstraint *ct,
 void tci_disas(uint8_t opc)
 {
     const TCGOpDef *def = &tcg_op_defs[opc];
-    fprintf(stderr, "TCG %s %u, %u, %u\n",
+    error_report("TCG %s %u, %u, %u",
             def->name, def->nb_oargs, def->nb_iargs, def->nb_cargs);
 }
 #endif
diff --git a/vl.c b/vl.c
index 4fd01fda91..c9d28bf79e 100644
--- a/vl.c
+++ b/vl.c
@@ -2232,7 +2232,7 @@ static DisplayType select_display(const char *p)
         display_opengl = 1;
         display = DT_EGL;
 #else
-        fprintf(stderr, "egl support is disabled\n");
+        error_report("egl support is disabled");
         exit(1);
 #endif
     } else if (strstart(p, "curses", &opts)) {
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* [Qemu-devel] [PATCH v1 8/8] target: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:08 [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* Alistair Francis
                   ` (6 preceding siblings ...)
  2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 7/8] tcg: " Alistair Francis
@ 2017-09-26  0:09 ` Alistair Francis
  2017-09-26  4:08   ` Thomas Huth
  2017-09-26 15:21   ` Richard Henderson
  2017-09-26  0:27 ` [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* no-reply
                   ` (2 subsequent siblings)
  10 siblings, 2 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-26  0:09 UTC (permalink / raw)
  To: qemu-devel
  Cc: alistair.francis, alistair23, armbru, Edgar E. Iglesias,
	Paolo Bonzini, Richard Henderson, Eduardo Habkost,
	Marcelo Tosatti, Michael Walle, Aurelien Jarno, Yongbok Kim,
	Christian Borntraeger, Cornelia Huck, Guan Xuetao, qemu-arm,
	qemu-ppc

Replace a large number of the fprintf(stderr, "*\n" calls with
error_report(). The functions were renamed with these commands and then
compiler issues where manually fixed.

find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +
find ./* -type f -exec sed -i \
    'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
    {} +

Some lines where then manually tweaked to pass checkpatch.

Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Michael Walle <michael@walle.cc>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: Yongbok Kim <yongbok.kim@imgtec.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Cornelia Huck <cohuck@redhat.com>
Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
Cc: qemu-arm@nongnu.org
Cc: qemu-ppc@nongnu.org
---

 target/arm/arm-powerctl.c    |  5 +++--
 target/arm/arm-semi.c        |  3 ++-
 target/arm/helper.c          |  4 ++--
 target/arm/kvm.c             | 16 ++++++-------
 target/arm/kvm32.c           |  2 +-
 target/arm/kvm64.c           |  2 +-
 target/arm/translate-a64.c   |  4 ++--
 target/arm/translate.c       |  2 +-
 target/cris/helper.c         |  2 +-
 target/cris/translate.c      |  2 +-
 target/i386/hax-all.c        | 52 +++++++++++++++++++++----------------------
 target/i386/hax-darwin.c     | 26 +++++++++++-----------
 target/i386/hax-mem.c        |  4 ++--
 target/i386/hax-windows.c    | 42 +++++++++++++++++------------------
 target/i386/kvm.c            | 38 +++++++++++++++----------------
 target/i386/misc_helper.c    | 12 +++++-----
 target/lm32/op_helper.c      |  4 ++--
 target/mips/mips-semi.c      |  3 ++-
 target/mips/translate.c      |  2 +-
 target/ppc/excp_helper.c     |  4 ++--
 target/ppc/kvm.c             | 36 +++++++++++++++---------------
 target/ppc/mmu-hash64.c      |  2 +-
 target/ppc/mmu_helper.c      |  2 +-
 target/ppc/translate.c       | 20 ++++++++---------
 target/ppc/translate_init.c  | 53 ++++++++++++++++++++++----------------------
 target/s390x/kvm.c           | 20 ++++++++---------
 target/s390x/misc_helper.c   |  2 +-
 target/sh4/translate.c       |  4 ++--
 target/unicore32/translate.c |  4 ++--
 29 files changed, 188 insertions(+), 184 deletions(-)

diff --git a/target/arm/arm-powerctl.c b/target/arm/arm-powerctl.c
index 25207cb850..2d56d5d579 100644
--- a/target/arm/arm-powerctl.c
+++ b/target/arm/arm-powerctl.c
@@ -9,6 +9,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "cpu.h"
 #include "cpu-qom.h"
 #include "internals.h"
@@ -24,7 +25,7 @@
 #define DPRINTF(fmt, args...) \
     do { \
         if (DEBUG_ARM_POWERCTL) { \
-            fprintf(stderr, "[ARM]%s: " fmt , __func__, ##args); \
+            error_report("[ARM]%s: " fmt , __func__, ##args); \
         } \
     } while (0)
 
@@ -32,7 +33,7 @@ CPUState *arm_get_cpu_by_id(uint64_t id)
 {
     CPUState *cpu;
 
-    DPRINTF("cpu %" PRId64 "\n", id);
+    DPRINTF("cpu %" PRId64 "", id);
 
     CPU_FOREACH(cpu) {
         ARMCPU *armcpu = ARM_CPU(cpu);
diff --git a/target/arm/arm-semi.c b/target/arm/arm-semi.c
index 7cac8734c7..f8f12102f1 100644
--- a/target/arm/arm-semi.c
+++ b/target/arm/arm-semi.c
@@ -19,6 +19,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 
 #include "cpu.h"
 #include "exec/semihost.h"
@@ -649,7 +650,7 @@ target_ulong do_arm_semihosting(CPUARMState *env)
         }
         /* fall through -- invalid for A32/T32 */
     default:
-        fprintf(stderr, "qemu: Unsupported SemiHosting SWI 0x%02x\n", nr);
+        error_report("qemu: Unsupported SemiHosting SWI 0x%02x", nr);
         cpu_dump_state(cs, stderr, fprintf, 0);
         abort();
     }
diff --git a/target/arm/helper.c b/target/arm/helper.c
index 8be78ea2f8..881afc3382 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -5460,9 +5460,9 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, const ARMCPRegInfo *r,
         ARMCPRegInfo *oldreg;
         oldreg = g_hash_table_lookup(cpu->cp_regs, key);
         if (oldreg && !(oldreg->type & ARM_CP_OVERRIDE)) {
-            fprintf(stderr, "Register redefined: cp=%d %d bit "
+            error_report("Register redefined: cp=%d %d bit "
                     "crn=%d crm=%d opc1=%d opc2=%d, "
-                    "was %s, now %s\n", r2->cp, 32 + 32 * is64,
+                    "was %s, now %s", r2->cp, 32 + 32 * is64,
                     r2->crn, r2->crm, r2->opc1, r2->opc2,
                     oldreg->name, r2->name);
             g_assert_not_reached();
diff --git a/target/arm/kvm.c b/target/arm/kvm.c
index 211a7bf7be..0165960405 100644
--- a/target/arm/kvm.c
+++ b/target/arm/kvm.c
@@ -139,7 +139,7 @@ static void kvm_arm_host_cpu_class_init(ObjectClass *oc, void *data)
      * TCG CPUs.
      */
     if (!kvm_arm_get_host_cpu_features(ahcc)) {
-        fprintf(stderr, "Failed to retrieve host CPU features!\n");
+        error_report("Failed to retrieve host CPU features!");
         abort();
     }
 }
@@ -256,7 +256,7 @@ static void kvm_arm_set_device_addr(KVMDevice *kd)
     }
 
     if (ret < 0) {
-        fprintf(stderr, "Failed to set device address: %s\n",
+        error_report("Failed to set device address: %s",
                 strerror(-ret));
         abort();
     }
@@ -352,7 +352,7 @@ int kvm_arm_init_cpreg_list(ARMCPU *cpu)
         case KVM_REG_SIZE_U64:
             break;
         default:
-            fprintf(stderr, "Can't handle size of register in kernel list\n");
+            error_report("Can't handle size of register in kernel list");
             ret = -EINVAL;
             goto out;
         }
@@ -383,7 +383,7 @@ int kvm_arm_init_cpreg_list(ARMCPU *cpu)
         /* Shouldn't happen unless kernel is inconsistent about
          * what registers exist.
          */
-        fprintf(stderr, "Initial read of kernel register state failed\n");
+        error_report("Initial read of kernel register state failed");
         ret = -EINVAL;
         goto out;
     }
@@ -478,11 +478,11 @@ void kvm_arm_reset_vcpu(ARMCPU *cpu)
      */
     ret = kvm_arm_vcpu_init(CPU(cpu));
     if (ret < 0) {
-        fprintf(stderr, "kvm_arm_vcpu_init failed: %s\n", strerror(-ret));
+        error_report("kvm_arm_vcpu_init failed: %s", strerror(-ret));
         abort();
     }
     if (!write_kvmstate_to_list(cpu)) {
-        fprintf(stderr, "write_kvmstate_to_list failed\n");
+        error_report("write_kvmstate_to_list failed");
         abort();
     }
 }
@@ -499,7 +499,7 @@ int kvm_arm_sync_mpstate_to_kvm(ARMCPU *cpu)
         };
         int ret = kvm_vcpu_ioctl(CPU(cpu), KVM_SET_MP_STATE, &mp_state);
         if (ret) {
-            fprintf(stderr, "%s: failed to set MP_STATE %d/%s\n",
+            error_report("%s: failed to set MP_STATE %d/%s",
                     __func__, ret, strerror(-ret));
             return -1;
         }
@@ -517,7 +517,7 @@ int kvm_arm_sync_mpstate_to_qemu(ARMCPU *cpu)
         struct kvm_mp_state mp_state;
         int ret = kvm_vcpu_ioctl(CPU(cpu), KVM_GET_MP_STATE, &mp_state);
         if (ret) {
-            fprintf(stderr, "%s: failed to get MP_STATE %d/%s\n",
+            error_report("%s: failed to get MP_STATE %d/%s",
                     __func__, ret, strerror(-ret));
             abort();
         }
diff --git a/target/arm/kvm32.c b/target/arm/kvm32.c
index f925a21481..97d36a174d 100644
--- a/target/arm/kvm32.c
+++ b/target/arm/kvm32.c
@@ -191,7 +191,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
     ARMCPU *cpu = ARM_CPU(cs);
 
     if (cpu->kvm_target == QEMU_KVM_ARM_TARGET_NONE) {
-        fprintf(stderr, "KVM is not supported for this guest CPU type\n");
+        error_report("KVM is not supported for this guest CPU type");
         return -EINVAL;
     }
 
diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c
index 6554c30007..b3e1484069 100644
--- a/target/arm/kvm64.c
+++ b/target/arm/kvm64.c
@@ -502,7 +502,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
 
     if (cpu->kvm_target == QEMU_KVM_ARM_TARGET_NONE ||
         !object_dynamic_cast(OBJECT(cpu), TYPE_AARCH64_CPU)) {
-        fprintf(stderr, "KVM is not supported for this guest CPU type\n");
+        error_report("KVM is not supported for this guest CPU type");
         return -EINVAL;
     }
 
diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
index 899ffb96fc..eac76a0747 100644
--- a/target/arm/translate-a64.c
+++ b/target/arm/translate-a64.c
@@ -505,8 +505,8 @@ static inline void assert_fp_access_checked(DisasContext *s)
 {
 #ifdef CONFIG_DEBUG_TCG
     if (unlikely(!s->fp_access_checked || s->fp_excp_el)) {
-        fprintf(stderr, "target-arm: FP access check missing for "
-                "instruction 0x%08x\n", s->insn);
+        error_report("target-arm: FP access check missing for "
+                "instruction 0x%08x", s->insn);
         abort();
     }
 #endif
diff --git a/target/arm/translate.c b/target/arm/translate.c
index ab1a12a1b8..d484381aef 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -857,7 +857,7 @@ void arm_test_cc(DisasCompare *cmp, int cc)
         goto no_invert;
 
     default:
-        fprintf(stderr, "Bad condition code 0x%x\n", cc);
+        error_report("Bad condition code 0x%x", cc);
         abort();
     }
 
diff --git a/target/cris/helper.c b/target/cris/helper.c
index af78cca8b9..ba9ce538c3 100644
--- a/target/cris/helper.c
+++ b/target/cris/helper.c
@@ -282,7 +282,7 @@ hwaddr cris_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
     if (!miss) {
         phy = res.phy;
     }
-    D(fprintf(stderr, "%s %x -> %x\n", __func__, addr, phy));
+    D(error_report("%s %x -> %x", __func__, addr, phy));
     return phy;
 }
 #endif
diff --git a/target/cris/translate.c b/target/cris/translate.c
index 38a999e6f1..8847005984 100644
--- a/target/cris/translate.c
+++ b/target/cris/translate.c
@@ -138,7 +138,7 @@ typedef struct DisasContext {
 
 static void gen_BUG(DisasContext *dc, const char *file, int line)
 {
-    fprintf(stderr, "BUG: pc=%x %s %d\n", dc->pc, file, line);
+    error_report("BUG: pc=%x %s %d", dc->pc, file, line);
     if (qemu_log_separate()) {
         qemu_log("BUG: pc=%x %s %d\n", dc->pc, file, line);
     }
diff --git a/target/i386/hax-all.c b/target/i386/hax-all.c
index 3ce6950296..b0462c8b4c 100644
--- a/target/i386/hax-all.c
+++ b/target/i386/hax-all.c
@@ -100,13 +100,13 @@ static int hax_get_capability(struct hax_state *hax)
     }
 
     if (!(cap->winfo & HAX_CAP_UG)) {
-        fprintf(stderr, "UG mode is not supported by the hardware.\n");
+        error_report("UG mode is not supported by the hardware.");
         return -ENOTSUP;
     }
 
     if (cap->wstatus & HAX_CAP_MEMQUOTA) {
         if (cap->mem_quota < hax->mem_quota) {
-            fprintf(stderr, "The VM memory needed exceeds the driver limit.\n");
+            error_report("The VM memory needed exceeds the driver limit.");
             return -ENOSPC;
         }
     }
@@ -126,13 +126,13 @@ static int hax_version_support(struct hax_state *hax)
     if (hax_min_version > version.cur_version) {
         fprintf(stderr, "Incompatible HAX module version %d,",
                 version.cur_version);
-        fprintf(stderr, "requires minimum version %d\n", hax_min_version);
+        error_report("requires minimum version %d", hax_min_version);
         return 0;
     }
     if (hax_cur_version < version.compat_version) {
         fprintf(stderr, "Incompatible QEMU HAX API version %x,",
                 hax_cur_version);
-        fprintf(stderr, "requires minimum HAX API version %x\n",
+        error_report("requires minimum HAX API version %x",
                 version.compat_version);
         return 0;
     }
@@ -146,18 +146,18 @@ int hax_vcpu_create(int id)
     int ret;
 
     if (!hax_global.vm) {
-        fprintf(stderr, "vcpu %x created failed, vm is null\n", id);
+        error_report("vcpu %x created failed, vm is null", id);
         return -1;
     }
 
     if (hax_global.vm->vcpus[id]) {
-        fprintf(stderr, "vcpu %x allocated already\n", id);
+        error_report("vcpu %x allocated already", id);
         return 0;
     }
 
     vcpu = g_malloc(sizeof(struct hax_vcpu_state));
     if (!vcpu) {
-        fprintf(stderr, "Failed to alloc vcpu state\n");
+        error_report("Failed to alloc vcpu state");
         return -ENOMEM;
     }
 
@@ -165,14 +165,14 @@ int hax_vcpu_create(int id)
 
     ret = hax_host_create_vcpu(hax_global.vm->fd, id);
     if (ret) {
-        fprintf(stderr, "Failed to create vcpu %x\n", id);
+        error_report("Failed to create vcpu %x", id);
         goto error;
     }
 
     vcpu->vcpu_id = id;
     vcpu->fd = hax_host_open_vcpu(hax_global.vm->id, id);
     if (hax_invalid_fd(vcpu->fd)) {
-        fprintf(stderr, "Failed to open the vcpu\n");
+        error_report("Failed to open the vcpu");
         ret = -ENODEV;
         goto error;
     }
@@ -181,7 +181,7 @@ int hax_vcpu_create(int id)
 
     ret = hax_host_setup_vcpu_channel(vcpu);
     if (ret) {
-        fprintf(stderr, "Invalid hax tunnel size\n");
+        error_report("Invalid hax tunnel size");
         ret = -EINVAL;
         goto error;
     }
@@ -203,7 +203,7 @@ int hax_vcpu_destroy(CPUState *cpu)
     struct hax_vcpu_state *vcpu = cpu->hax_vcpu;
 
     if (!hax_global.vm) {
-        fprintf(stderr, "vcpu %x destroy failed, vm is null\n", vcpu->vcpu_id);
+        error_report("vcpu %x destroy failed, vm is null", vcpu->vcpu_id);
         return -1;
     }
 
@@ -227,7 +227,7 @@ int hax_init_vcpu(CPUState *cpu)
 
     ret = hax_vcpu_create(cpu->cpu_index);
     if (ret < 0) {
-        fprintf(stderr, "Failed to create HAX vcpu\n");
+        error_report("Failed to create HAX vcpu");
         exit(-1);
     }
 
@@ -258,13 +258,13 @@ struct hax_vm *hax_vm_create(struct hax_state *hax)
     memset(vm, 0, sizeof(struct hax_vm));
     ret = hax_host_create_vm(hax, &vm_id);
     if (ret) {
-        fprintf(stderr, "Failed to create vm %x\n", ret);
+        error_report("Failed to create vm %x", ret);
         goto error;
     }
     vm->id = vm_id;
     vm->fd = hax_host_open_vm(hax, vm_id);
     if (hax_invalid_fd(vm->fd)) {
-        fprintf(stderr, "Failed to open vm %d\n", vm_id);
+        error_report("Failed to open vm %d", vm_id);
         goto error;
     }
 
@@ -283,7 +283,7 @@ int hax_vm_destroy(struct hax_vm *vm)
 
     for (i = 0; i < HAX_MAX_VCPU; i++)
         if (vm->vcpus[i]) {
-            fprintf(stderr, "VCPU should be cleaned before vm clean\n");
+            error_report("VCPU should be cleaned before vm clean");
             return -1;
         }
     hax_close_fd(vm->fd);
@@ -335,7 +335,7 @@ static int hax_init(ram_addr_t ram_size)
 
     hax->vm = hax_vm_create(hax);
     if (!hax->vm) {
-        fprintf(stderr, "Failed to create HAX VM\n");
+        error_report("Failed to create HAX VM");
         ret = -EINVAL;
         goto error;
     }
@@ -364,7 +364,7 @@ static int hax_accel_init(MachineState *ms)
     int ret = hax_init(ms->ram_size);
 
     if (ret && (ret != -ENOSPC)) {
-        fprintf(stderr, "No accelerator found.\n");
+        error_report("No accelerator found.");
     } else {
         fprintf(stdout, "HAX is %s and emulator runs in %s mode.\n",
                 !ret ? "working" : "not working",
@@ -526,7 +526,7 @@ static int hax_vcpu_hax_exec(CPUArchState *env)
         }
 
         if (hax_ret < 0) {
-            fprintf(stderr, "vcpu run failed for vcpu  %x\n", vcpu->vcpu_id);
+            error_report("vcpu run failed for vcpu  %x", vcpu->vcpu_id);
             abort();
         }
         switch (ht->_exit_status) {
@@ -546,7 +546,7 @@ static int hax_vcpu_hax_exec(CPUArchState *env)
             ret = 1;
             break;
         case HAX_EXIT_UNKNOWN_VMEXIT:
-            fprintf(stderr, "Unknown VMX exit %x from guest\n",
+            error_report("Unknown VMX exit %x from guest",
                     ht->_exit_reason);
             qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);
             hax_vcpu_sync_state(env, 0);
@@ -569,16 +569,16 @@ static int hax_vcpu_hax_exec(CPUArchState *env)
             break;
         case HAX_EXIT_MMIO:
             /* Should not happen on UG system */
-            fprintf(stderr, "HAX: unsupported MMIO emulation\n");
+            error_report("HAX: unsupported MMIO emulation");
             ret = -1;
             break;
         case HAX_EXIT_REAL:
             /* Should not happen on UG system */
-            fprintf(stderr, "HAX: unimplemented real mode emulation\n");
+            error_report("HAX: unimplemented real mode emulation");
             ret = -1;
             break;
         default:
-            fprintf(stderr, "Unknown exit %x from HAX\n", ht->_exit_status);
+            error_report("Unknown exit %x from HAX", ht->_exit_status);
             qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);
             hax_vcpu_sync_state(env, 0);
             cpu_dump_state(cpu, stderr, fprintf, 0);
@@ -662,7 +662,7 @@ int hax_smp_cpu_exec(CPUState *cpu)
         fatal = hax_vcpu_hax_exec(env);
 
         if (fatal) {
-            fprintf(stderr, "Unsupported HAX vcpu return\n");
+            error_report("Unsupported HAX vcpu return");
             abort();
         }
     }
@@ -1079,17 +1079,17 @@ static int hax_arch_set_registers(CPUArchState *env)
     ret = hax_sync_vcpu_register(env, 1);
 
     if (ret < 0) {
-        fprintf(stderr, "Failed to sync vcpu reg\n");
+        error_report("Failed to sync vcpu reg");
         return ret;
     }
     ret = hax_set_fpu(env);
     if (ret < 0) {
-        fprintf(stderr, "FPU failed\n");
+        error_report("FPU failed");
         return ret;
     }
     ret = hax_set_msrs(env);
     if (ret < 0) {
-        fprintf(stderr, "MSR failed\n");
+        error_report("MSR failed");
         return ret;
     }
 
diff --git a/target/i386/hax-darwin.c b/target/i386/hax-darwin.c
index 1c5bbd0a2d..768521b6d0 100644
--- a/target/i386/hax-darwin.c
+++ b/target/i386/hax-darwin.c
@@ -24,7 +24,7 @@ hax_fd hax_mod_open(void)
 {
     int fd = open("/dev/HAX", O_RDWR);
     if (fd == -1) {
-        fprintf(stderr, "Failed to open the hax module\n");
+        error_report("Failed to open the hax module");
     }
 
     fcntl(fd, F_SETFD, FD_CLOEXEC);
@@ -38,7 +38,7 @@ int hax_populate_ram(uint64_t va, uint32_t size)
     struct hax_alloc_ram_info info;
 
     if (!hax_global.vm || !hax_global.vm->fd) {
-        fprintf(stderr, "Allocate memory before vm create?\n");
+        error_report("Allocate memory before vm create?");
         return -EINVAL;
     }
 
@@ -46,7 +46,7 @@ int hax_populate_ram(uint64_t va, uint32_t size)
     info.va = va;
     ret = ioctl(hax_global.vm->fd, HAX_VM_IOCTL_ALLOC_RAM, &info);
     if (ret < 0) {
-        fprintf(stderr, "Failed to allocate %x memory\n", size);
+        error_report("Failed to allocate %x memory", size);
         return ret;
     }
     return 0;
@@ -75,7 +75,7 @@ int hax_capability(struct hax_state *hax, struct hax_capabilityinfo *cap)
 
     ret = ioctl(hax->fd, HAX_IOCTL_CAPABILITY, cap);
     if (ret == -1) {
-        fprintf(stderr, "Failed to get HAX capability\n");
+        error_report("Failed to get HAX capability");
         return -errno;
     }
 
@@ -88,7 +88,7 @@ int hax_mod_version(struct hax_state *hax, struct hax_module_version *version)
 
     ret = ioctl(hax->fd, HAX_IOCTL_VERSION, version);
     if (ret == -1) {
-        fprintf(stderr, "Failed to get HAX version\n");
+        error_report("Failed to get HAX version");
         return -errno;
     }
 
@@ -100,7 +100,7 @@ static char *hax_vm_devfs_string(int vm_id)
     char *name;
 
     if (vm_id > MAX_VM_ID) {
-        fprintf(stderr, "Too big VM id\n");
+        error_report("Too big VM id");
         return NULL;
     }
 
@@ -119,7 +119,7 @@ static char *hax_vcpu_devfs_string(int vm_id, int vcpu_id)
     char *name;
 
     if (vm_id > MAX_VM_ID || vcpu_id > MAX_VCPU_ID) {
-        fprintf(stderr, "Too big vm id %x or vcpu id %x\n", vm_id, vcpu_id);
+        error_report("Too big vm id %x or vcpu id %x", vm_id, vcpu_id);
         return NULL;
     }
 
@@ -181,7 +181,7 @@ int hax_notify_qemu_version(hax_fd vm_fd, struct hax_qemu_version *qversion)
     ret = ioctl(vm_fd, HAX_VM_IOCTL_NOTIFY_QEMU_VERSION, qversion);
 
     if (ret < 0) {
-        fprintf(stderr, "Failed to notify qemu API version\n");
+        error_report("Failed to notify qemu API version");
         return ret;
     }
     return 0;
@@ -196,7 +196,7 @@ int hax_host_create_vcpu(hax_fd vm_fd, int vcpuid)
 
     ret = ioctl(vm_fd, HAX_VM_IOCTL_VCPU_CREATE, &vcpuid);
     if (ret < 0) {
-        fprintf(stderr, "Failed to create vcpu %x\n", vcpuid);
+        error_report("Failed to create vcpu %x", vcpuid);
     }
 
     return ret;
@@ -209,14 +209,14 @@ hax_fd hax_host_open_vcpu(int vmid, int vcpuid)
 
     devfs_path = hax_vcpu_devfs_string(vmid, vcpuid);
     if (!devfs_path) {
-        fprintf(stderr, "Failed to get the devfs\n");
+        error_report("Failed to get the devfs");
         return -EINVAL;
     }
 
     fd = open(devfs_path, O_RDWR);
     g_free(devfs_path);
     if (fd < 0) {
-        fprintf(stderr, "Failed to open the vcpu devfs\n");
+        error_report("Failed to open the vcpu devfs");
     }
     fcntl(fd, F_SETFD, FD_CLOEXEC);
     return fd;
@@ -229,12 +229,12 @@ int hax_host_setup_vcpu_channel(struct hax_vcpu_state *vcpu)
 
     ret = ioctl(vcpu->fd, HAX_VCPU_IOCTL_SETUP_TUNNEL, &info);
     if (ret) {
-        fprintf(stderr, "Failed to setup the hax tunnel\n");
+        error_report("Failed to setup the hax tunnel");
         return ret;
     }
 
     if (!valid_hax_tunnel_size(info.size)) {
-        fprintf(stderr, "Invalid hax tunnel size %x\n", info.size);
+        error_report("Invalid hax tunnel size %x", info.size);
         ret = -EINVAL;
         return ret;
     }
diff --git a/target/i386/hax-mem.c b/target/i386/hax-mem.c
index 27a0d214f2..e1388bb003 100644
--- a/target/i386/hax-mem.c
+++ b/target/i386/hax-mem.c
@@ -247,8 +247,8 @@ static void hax_transaction_commit(MemoryListener *listener)
             }
             if (hax_set_ram(entry->start_pa, entry->size,
                             entry->host_va, entry->flags)) {
-                fprintf(stderr, "%s: Failed mapping @0x%016" PRIx64 "+0x%"
-                        PRIx32 " flags %02x\n", __func__, entry->start_pa,
+                error_report("%s: Failed mapping @0x%016" PRIx64 "+0x%"
+                        PRIx32 " flags %02x", __func__, entry->start_pa,
                         entry->size, entry->flags);
             }
             QTAILQ_REMOVE(&mappings, entry, entry);
diff --git a/target/i386/hax-windows.c b/target/i386/hax-windows.c
index 15a180b646..8d724d21ad 100644
--- a/target/i386/hax-windows.c
+++ b/target/i386/hax-windows.c
@@ -33,7 +33,7 @@ static int hax_open_device(hax_fd *fd)
                          0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 
     if (hDevice == INVALID_HANDLE_VALUE) {
-        fprintf(stderr, "Failed to open the HAX device!\n");
+        error_report("Failed to open the HAX device!");
         errNum = GetLastError();
         if (errNum == ERROR_FILE_NOT_FOUND) {
             return -1;
@@ -52,7 +52,7 @@ static int hax_open_device(hax_fd *fd)
 
     ret = hax_open_device(&fd);
     if (ret != 0) {
-        fprintf(stderr, "Open HAX device failed\n");
+        error_report("Open HAX device failed");
     }
 
     return fd;
@@ -66,7 +66,7 @@ int hax_populate_ram(uint64_t va, uint32_t size)
     DWORD dSize = 0;
 
     if (!hax_global.vm || !hax_global.vm->fd) {
-        fprintf(stderr, "Allocate memory before vm create?\n");
+        error_report("Allocate memory before vm create?");
         return -EINVAL;
     }
 
@@ -81,7 +81,7 @@ int hax_populate_ram(uint64_t va, uint32_t size)
                           (LPOVERLAPPED) NULL);
 
     if (!ret) {
-        fprintf(stderr, "Failed to allocate %x memory\n", size);
+        error_report("Failed to allocate %x memory", size);
         return ret;
     }
 
@@ -119,7 +119,7 @@ int hax_capability(struct hax_state *hax, struct hax_capabilityinfo *cap)
     DWORD err = 0;
 
     if (hax_invalid_fd(hDevice)) {
-        fprintf(stderr, "Invalid fd for hax device!\n");
+        error_report("Invalid fd for hax device!");
         return -ENODEV;
     }
 
@@ -129,9 +129,9 @@ int hax_capability(struct hax_state *hax, struct hax_capabilityinfo *cap)
     if (!ret) {
         err = GetLastError();
         if (err == ERROR_INSUFFICIENT_BUFFER || err == ERROR_MORE_DATA) {
-            fprintf(stderr, "hax capability is too long to hold.\n");
+            error_report("hax capability is too long to hold.");
         }
-        fprintf(stderr, "Failed to get Hax capability:%luu\n", err);
+        error_report("Failed to get Hax capability:%luu", err);
         return -EFAULT;
     } else {
         return 0;
@@ -146,7 +146,7 @@ int hax_mod_version(struct hax_state *hax, struct hax_module_version *version)
     DWORD err = 0;
 
     if (hax_invalid_fd(hDevice)) {
-        fprintf(stderr, "Invalid fd for hax device!\n");
+        error_report("Invalid fd for hax device!");
         return -ENODEV;
     }
 
@@ -159,9 +159,9 @@ int hax_mod_version(struct hax_state *hax, struct hax_module_version *version)
     if (!ret) {
         err = GetLastError();
         if (err == ERROR_INSUFFICIENT_BUFFER || err == ERROR_MORE_DATA) {
-            fprintf(stderr, "hax module verion is too long to hold.\n");
+            error_report("hax module verion is too long to hold.");
         }
-        fprintf(stderr, "Failed to get Hax module version:%lu\n", err);
+        error_report("Failed to get Hax module version:%lu", err);
         return -EFAULT;
     } else {
         return 0;
@@ -173,7 +173,7 @@ static char *hax_vm_devfs_string(int vm_id)
     char *name;
 
     if (vm_id > MAX_VM_ID) {
-        fprintf(stderr, "Too big VM id\n");
+        error_report("Too big VM id");
         return NULL;
     }
 
@@ -192,7 +192,7 @@ static char *hax_vcpu_devfs_string(int vm_id, int vcpu_id)
     char *name;
 
     if (vm_id > MAX_VM_ID || vcpu_id > MAX_VCPU_ID) {
-        fprintf(stderr, "Too big vm id %x or vcpu id %x\n", vm_id, vcpu_id);
+        error_report("Too big vm id %x or vcpu id %x", vm_id, vcpu_id);
         return NULL;
     }
 
@@ -226,7 +226,7 @@ int hax_host_create_vm(struct hax_state *hax, int *vmid)
                           NULL, 0, &vm_id, sizeof(vm_id), &dSize,
                           (LPOVERLAPPED) NULL);
     if (!ret) {
-        fprintf(stderr, "Failed to create VM. Error code: %lu\n",
+        error_report("Failed to create VM. Error code: %lu",
                 GetLastError());
         return -1;
     }
@@ -241,7 +241,7 @@ hax_fd hax_host_open_vm(struct hax_state *hax, int vm_id)
 
     vm_name = hax_vm_devfs_string(vm_id);
     if (!vm_name) {
-        fprintf(stderr, "Failed to open VM. VM name is null\n");
+        error_report("Failed to open VM. VM name is null");
         return INVALID_HANDLE_VALUE;
     }
 
@@ -249,7 +249,7 @@ hax_fd hax_host_open_vm(struct hax_state *hax, int vm_id)
                            GENERIC_READ | GENERIC_WRITE,
                            0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     if (hDeviceVM == INVALID_HANDLE_VALUE) {
-        fprintf(stderr, "Open the vm device error:%s, ec:%lu\n",
+        error_report("Open the vm device error:%s, ec:%lu",
                 vm_name, GetLastError());
     }
 
@@ -269,7 +269,7 @@ int hax_notify_qemu_version(hax_fd vm_fd, struct hax_qemu_version *qversion)
                           qversion, sizeof(struct hax_qemu_version),
                           NULL, 0, &dSize, (LPOVERLAPPED) NULL);
     if (!ret) {
-        fprintf(stderr, "Failed to notify qemu API version\n");
+        error_report("Failed to notify qemu API version");
         return -1;
     }
     return 0;
@@ -285,7 +285,7 @@ int hax_host_create_vcpu(hax_fd vm_fd, int vcpuid)
                           &vcpuid, sizeof(vcpuid), NULL, 0, &dSize,
                           (LPOVERLAPPED) NULL);
     if (!ret) {
-        fprintf(stderr, "Failed to create vcpu %x\n", vcpuid);
+        error_report("Failed to create vcpu %x", vcpuid);
         return -1;
     }
 
@@ -299,7 +299,7 @@ hax_fd hax_host_open_vcpu(int vmid, int vcpuid)
 
     devfs_path = hax_vcpu_devfs_string(vmid, vcpuid);
     if (!devfs_path) {
-        fprintf(stderr, "Failed to get the devfs\n");
+        error_report("Failed to get the devfs");
         return INVALID_HANDLE_VALUE;
     }
 
@@ -309,7 +309,7 @@ hax_fd hax_host_open_vcpu(int vmid, int vcpuid)
                              NULL);
 
     if (hDeviceVCPU == INVALID_HANDLE_VALUE) {
-        fprintf(stderr, "Failed to open the vcpu devfs\n");
+        error_report("Failed to open the vcpu devfs");
     }
     g_free(devfs_path);
     return hDeviceVCPU;
@@ -327,12 +327,12 @@ int hax_host_setup_vcpu_channel(struct hax_vcpu_state *vcpu)
                           NULL, 0, &info, sizeof(info), &dSize,
                           (LPOVERLAPPED) NULL);
     if (!ret) {
-        fprintf(stderr, "Failed to setup the hax tunnel\n");
+        error_report("Failed to setup the hax tunnel");
         return -1;
     }
 
     if (!valid_hax_tunnel_size(info.size)) {
-        fprintf(stderr, "Invalid hax tunnel size %x\n", info.size);
+        error_report("Invalid hax tunnel size %x", info.size);
         ret = -EINVAL;
         return ret;
     }
diff --git a/target/i386/kvm.c b/target/i386/kvm.c
index b1e32e95d3..d7cf10ae11 100644
--- a/target/i386/kvm.c
+++ b/target/i386/kvm.c
@@ -219,7 +219,7 @@ static struct kvm_cpuid2 *try_get_cpuid(KVMState *s, int max)
             g_free(cpuid);
             return NULL;
         } else {
-            fprintf(stderr, "KVM_GET_SUPPORTED_CPUID failed: %s\n",
+            error_report("KVM_GET_SUPPORTED_CPUID failed: %s",
                     strerror(-r));
             exit(1);
         }
@@ -470,7 +470,7 @@ static void kvm_mce_inject(X86CPU *cpu, hwaddr paddr, int code)
 
 static void hardware_memory_error(void)
 {
-    fprintf(stderr, "Hardware memory error!\n");
+    error_report("Hardware memory error!");
     exit(1);
 }
 
@@ -497,8 +497,8 @@ void kvm_arch_on_sigbus_vcpu(CPUState *c, int code, void *addr)
             return;
         }
 
-        fprintf(stderr, "Hardware memory error for memory used by "
-                "QEMU itself instead of guest system!\n");
+        error_report("Hardware memory error for memory used by "
+                "QEMU itself instead of guest system!");
     }
 
     if (code == BUS_MCEERR_AR) {
@@ -666,7 +666,7 @@ static int hyperv_handle_properties(CPUState *cs)
 
         if (!has_msr_hv_synic ||
             kvm_vcpu_enable_cap(cs, KVM_CAP_HYPERV_SYNIC, 0)) {
-            fprintf(stderr, "Hyper-V SynIC is not supported by kernel\n");
+            error_report("Hyper-V SynIC is not supported by kernel");
             return -ENOSYS;
         }
 
@@ -678,7 +678,7 @@ static int hyperv_handle_properties(CPUState *cs)
     }
     if (cpu->hyperv_stimer) {
         if (!has_msr_hv_stimer) {
-            fprintf(stderr, "Hyper-V timers aren't supported by kernel\n");
+            error_report("Hyper-V timers aren't supported by kernel");
             return -ENOSYS;
         }
         env->features[FEAT_HYPERV_EAX] |= HV_SYNTIMERS_AVAILABLE;
@@ -811,7 +811,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
 
     for (i = 0; i <= limit; i++) {
         if (cpuid_i == KVM_MAX_CPUID_ENTRIES) {
-            fprintf(stderr, "unsupported level value: 0x%x\n", limit);
+            error_report("unsupported level value: 0x%x", limit);
             abort();
         }
         c = &cpuid_data.entries[cpuid_i++];
@@ -829,8 +829,8 @@ int kvm_arch_init_vcpu(CPUState *cs)
 
             for (j = 1; j < times; ++j) {
                 if (cpuid_i == KVM_MAX_CPUID_ENTRIES) {
-                    fprintf(stderr, "cpuid_data is full, no space for "
-                            "cpuid(eax:2):eax & 0xf = 0x%x\n", times);
+                    error_report("cpuid_data is full, no space for "
+                            "cpuid(eax:2):eax & 0xf = 0x%x", times);
                     abort();
                 }
                 c = &cpuid_data.entries[cpuid_i++];
@@ -862,8 +862,8 @@ int kvm_arch_init_vcpu(CPUState *cs)
                     continue;
                 }
                 if (cpuid_i == KVM_MAX_CPUID_ENTRIES) {
-                    fprintf(stderr, "cpuid_data is full, no space for "
-                            "cpuid(eax:0x%x,ecx:0x%x)\n", i, j);
+                    error_report("cpuid_data is full, no space for "
+                            "cpuid(eax:0x%x,ecx:0x%x)", i, j);
                     abort();
                 }
                 c = &cpuid_data.entries[cpuid_i++];
@@ -899,7 +899,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
 
     for (i = 0x80000000; i <= limit; i++) {
         if (cpuid_i == KVM_MAX_CPUID_ENTRIES) {
-            fprintf(stderr, "unsupported xlevel value: 0x%x\n", limit);
+            error_report("unsupported xlevel value: 0x%x", limit);
             abort();
         }
         c = &cpuid_data.entries[cpuid_i++];
@@ -915,7 +915,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
 
         for (i = 0xC0000000; i <= limit; i++) {
             if (cpuid_i == KVM_MAX_CPUID_ENTRIES) {
-                fprintf(stderr, "unsupported xlevel2 value: 0x%x\n", limit);
+                error_report("unsupported xlevel2 value: 0x%x", limit);
                 abort();
             }
             c = &cpuid_data.entries[cpuid_i++];
@@ -1245,7 +1245,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
     /* Tell fw_cfg to notify the BIOS to reserve the range. */
     ret = e820_add_entry(identity_base, 0x4000, E820_RESERVED);
     if (ret < 0) {
-        fprintf(stderr, "e820_add_entry() table is full\n");
+        error_report("e820_add_entry() table is full");
         return ret;
     }
     qemu_register_reset(kvm_unpoison_all, NULL);
@@ -2733,7 +2733,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run)
             DPRINTF("injected NMI\n");
             ret = kvm_vcpu_ioctl(cpu, KVM_NMI);
             if (ret < 0) {
-                fprintf(stderr, "KVM: injection failed, NMI lost (%s)\n",
+                error_report("KVM: injection failed, NMI lost (%s)",
                         strerror(-ret));
             }
         }
@@ -2744,7 +2744,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run)
             DPRINTF("injected SMI\n");
             ret = kvm_vcpu_ioctl(cpu, KVM_SMI);
             if (ret < 0) {
-                fprintf(stderr, "KVM: injection failed, SMI lost (%s)\n",
+                error_report("KVM: injection failed, SMI lost (%s)",
                         strerror(-ret));
             }
         }
@@ -3141,7 +3141,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
         break;
     case KVM_EXIT_FAIL_ENTRY:
         code = run->fail_entry.hardware_entry_failure_reason;
-        fprintf(stderr, "KVM: entry failed, hardware error 0x%" PRIx64 "\n",
+        error_report("KVM: entry failed, hardware error 0x%" PRIx64 "",
                 code);
         if (host_supports_vmx() && code == VMX_INVALID_GUEST_STATE) {
             fprintf(stderr,
@@ -3157,7 +3157,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
         ret = -1;
         break;
     case KVM_EXIT_EXCEPTION:
-        fprintf(stderr, "KVM: exception %d exit (error code 0x%x)\n",
+        error_report("KVM: exception %d exit (error code 0x%x)",
                 run->ex.exception, run->ex.error_code);
         ret = -1;
         break;
@@ -3175,7 +3175,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
         ret = 0;
         break;
     default:
-        fprintf(stderr, "KVM: unknown exit reason %d\n", run->exit_reason);
+        error_report("KVM: unknown exit reason %d", run->exit_reason);
         ret = -1;
         break;
     }
diff --git a/target/i386/misc_helper.c b/target/i386/misc_helper.c
index 628f64aad5..115e80217e 100644
--- a/target/i386/misc_helper.c
+++ b/target/i386/misc_helper.c
@@ -28,7 +28,7 @@
 void helper_outb(CPUX86State *env, uint32_t port, uint32_t data)
 {
 #ifdef CONFIG_USER_ONLY
-    fprintf(stderr, "outb: port=0x%04x, data=%02x\n", port, data);
+    error_report("outb: port=0x%04x, data=%02x", port, data);
 #else
     address_space_stb(&address_space_io, port, data,
                       cpu_get_mem_attrs(env), NULL);
@@ -38,7 +38,7 @@ void helper_outb(CPUX86State *env, uint32_t port, uint32_t data)
 target_ulong helper_inb(CPUX86State *env, uint32_t port)
 {
 #ifdef CONFIG_USER_ONLY
-    fprintf(stderr, "inb: port=0x%04x\n", port);
+    error_report("inb: port=0x%04x", port);
     return 0;
 #else
     return address_space_ldub(&address_space_io, port,
@@ -49,7 +49,7 @@ target_ulong helper_inb(CPUX86State *env, uint32_t port)
 void helper_outw(CPUX86State *env, uint32_t port, uint32_t data)
 {
 #ifdef CONFIG_USER_ONLY
-    fprintf(stderr, "outw: port=0x%04x, data=%04x\n", port, data);
+    error_report("outw: port=0x%04x, data=%04x", port, data);
 #else
     address_space_stw(&address_space_io, port, data,
                       cpu_get_mem_attrs(env), NULL);
@@ -59,7 +59,7 @@ void helper_outw(CPUX86State *env, uint32_t port, uint32_t data)
 target_ulong helper_inw(CPUX86State *env, uint32_t port)
 {
 #ifdef CONFIG_USER_ONLY
-    fprintf(stderr, "inw: port=0x%04x\n", port);
+    error_report("inw: port=0x%04x", port);
     return 0;
 #else
     return address_space_lduw(&address_space_io, port,
@@ -70,7 +70,7 @@ target_ulong helper_inw(CPUX86State *env, uint32_t port)
 void helper_outl(CPUX86State *env, uint32_t port, uint32_t data)
 {
 #ifdef CONFIG_USER_ONLY
-    fprintf(stderr, "outw: port=0x%04x, data=%08x\n", port, data);
+    error_report("outw: port=0x%04x, data=%08x", port, data);
 #else
     address_space_stl(&address_space_io, port, data,
                       cpu_get_mem_attrs(env), NULL);
@@ -80,7 +80,7 @@ void helper_outl(CPUX86State *env, uint32_t port, uint32_t data)
 target_ulong helper_inl(CPUX86State *env, uint32_t port)
 {
 #ifdef CONFIG_USER_ONLY
-    fprintf(stderr, "inl: port=0x%04x\n", port);
+    error_report("inl: port=0x%04x", port);
     return 0;
 #else
     return address_space_ldl(&address_space_io, port,
diff --git a/target/lm32/op_helper.c b/target/lm32/op_helper.c
index 2177c8ad12..34bfc3fb3b 100644
--- a/target/lm32/op_helper.c
+++ b/target/lm32/op_helper.c
@@ -40,9 +40,9 @@ void HELPER(ill)(CPULM32State *env)
 {
 #ifndef CONFIG_USER_ONLY
     CPUState *cs = CPU(lm32_env_get_cpu(env));
-    fprintf(stderr, "VM paused due to illegal instruction. "
+    error_report("VM paused due to illegal instruction. "
             "Connect a debugger or switch to the monitor console "
-            "to find out more.\n");
+            "to find out more.");
     vm_stop(RUN_STATE_PAUSED);
     cs->halted = 1;
     raise_exception(env, EXCP_HALTED);
diff --git a/target/mips/mips-semi.c b/target/mips/mips-semi.c
index a7aefbaefc..c1f35f8f5a 100644
--- a/target/mips/mips-semi.c
+++ b/target/mips/mips-semi.c
@@ -18,6 +18,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/error-report.h"
 #include "cpu.h"
 #include "qemu/log.h"
 #include "exec/helper-proto.h"
@@ -366,7 +367,7 @@ void helper_do_semihosting(CPUMIPSState *env)
         break;
 #endif
     default:
-        fprintf(stderr, "Unknown UHI operation %d\n", op);
+        error_report("Unknown UHI operation %d", op);
         abort();
     }
 uhi_done:
diff --git a/target/mips/translate.c b/target/mips/translate.c
index d16d879df7..32a5920259 100644
--- a/target/mips/translate.c
+++ b/target/mips/translate.c
@@ -10886,7 +10886,7 @@ static void gen_branch(DisasContext *ctx, int insn_bytes)
             tcg_gen_lookup_and_goto_ptr(cpu_PC);
             break;
         default:
-            fprintf(stderr, "unknown branch 0x%x\n", proc_hflags);
+            error_report("unknown branch 0x%x", proc_hflags);
             abort();
         }
     }
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
index e6009e70e5..a142e81a0f 100644
--- a/target/ppc/excp_helper.c
+++ b/target/ppc/excp_helper.c
@@ -200,8 +200,8 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp)
             /* Machine check exception is not enabled.
              * Enter checkstop state.
              */
-            fprintf(stderr, "Machine check while not allowed. "
-                    "Entering checkstop state\n");
+            error_report("Machine check while not allowed. "
+                    "Entering checkstop state");
             if (qemu_log_separate()) {
                 qemu_log("Machine check while not allowed. "
                         "Entering checkstop state\n");
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 1deaf106d2..136b5a0c69 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -159,8 +159,8 @@ int kvm_arch_init(MachineState *ms, KVMState *s)
     cap_ppc_pvr_compat = false;
 
     if (!cap_interrupt_level) {
-        fprintf(stderr, "KVM: Couldn't find level irq capability. Expect the "
-                        "VM to stall at times!\n");
+        error_report("KVM: Couldn't find level irq capability. Expect the "
+                        "VM to stall at times!");
     }
 
     kvm_ppc_register_host_cpu_type();
@@ -188,7 +188,7 @@ static int kvm_arch_sync_sregs(PowerPCCPU *cpu)
         return 0;
     } else {
         if (!cap_segstate) {
-            fprintf(stderr, "kvm error: missing PVR setting capability\n");
+            error_report("kvm error: missing PVR setting capability");
             return -ENOSYS;
         }
     }
@@ -237,7 +237,7 @@ static int kvm_booke206_tlb_init(PowerPCCPU *cpu)
 
     ret = kvm_vcpu_enable_cap(cs, KVM_CAP_SW_TLB, 0, (uintptr_t)&cfg);
     if (ret < 0) {
-        fprintf(stderr, "%s: couldn't enable KVM_CAP_SW_TLB: %s\n",
+        error_report("%s: couldn't enable KVM_CAP_SW_TLB: %s",
                 __func__, strerror(-ret));
         return ret;
     }
@@ -552,7 +552,7 @@ static void kvmppc_hw_debug_points_init(CPUPPCState *cenv)
     }
 
     if ((max_hw_breakpoint + max_hw_watchpoint) > MAX_HW_BKPTS) {
-        fprintf(stderr, "Error initializing h/w breakpoints\n");
+        error_report("Error initializing h/w breakpoints");
         return;
     }
 }
@@ -623,7 +623,7 @@ static void kvm_sw_tlb_put(PowerPCCPU *cpu)
 
     ret = kvm_vcpu_ioctl(cs, KVM_DIRTY_TLB, &dirty_tlb);
     if (ret) {
-        fprintf(stderr, "%s: KVM_DIRTY_TLB: %s\n",
+        error_report("%s: KVM_DIRTY_TLB: %s",
                 __func__, strerror(-ret));
     }
 
@@ -1474,7 +1474,7 @@ static int kvmppc_handle_halt(PowerPCCPU *cpu)
 static int kvmppc_handle_dcr_read(CPUPPCState *env, uint32_t dcrn, uint32_t *data)
 {
     if (ppc_dcr_read(env->dcr_env, dcrn, data) < 0)
-        fprintf(stderr, "Read to unhandled DCR (0x%x)\n", dcrn);
+        error_report("Read to unhandled DCR (0x%x)", dcrn);
 
     return 0;
 }
@@ -1482,7 +1482,7 @@ static int kvmppc_handle_dcr_read(CPUPPCState *env, uint32_t dcrn, uint32_t *dat
 static int kvmppc_handle_dcr_write(CPUPPCState *env, uint32_t dcrn, uint32_t data)
 {
     if (ppc_dcr_write(env->dcr_env, dcrn, data) < 0)
-        fprintf(stderr, "Write to unhandled DCR (0x%x)\n", dcrn);
+        error_report("Write to unhandled DCR (0x%x)", dcrn);
 
     return 0;
 }
@@ -1793,7 +1793,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
         break;
 
     default:
-        fprintf(stderr, "KVM: unknown exit reason %d\n", run->exit_reason);
+        error_report("KVM: unknown exit reason %d", run->exit_reason);
         ret = -1;
         break;
     }
@@ -1857,7 +1857,7 @@ int kvmppc_booke_watchdog_enable(PowerPCCPU *cpu)
 
     ret = kvm_vcpu_enable_cap(cs, KVM_CAP_PPC_BOOKE_WATCHDOG, 0);
     if (ret < 0) {
-        fprintf(stderr, "%s: couldn't enable KVM_CAP_PPC_BOOKE_WATCHDOG: %s\n",
+        error_report("%s: couldn't enable KVM_CAP_PPC_BOOKE_WATCHDOG: %s",
                 __func__, strerror(-ret));
         return ret;
     }
@@ -2192,7 +2192,7 @@ off_t kvmppc_alloc_rma(void **rma)
 
     fd = kvm_vm_ioctl(kvm_state, KVM_ALLOCATE_RMA, &ret);
     if (fd < 0) {
-        fprintf(stderr, "KVM: Error on KVM_ALLOCATE_RMA: %s\n",
+        error_report("KVM: Error on KVM_ALLOCATE_RMA: %s",
                 strerror(errno));
         return -1;
     }
@@ -2201,7 +2201,7 @@ off_t kvmppc_alloc_rma(void **rma)
 
     *rma = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
     if (*rma == MAP_FAILED) {
-        fprintf(stderr, "KVM: Error mapping RMA: %s\n", strerror(errno));
+        error_report("KVM: Error mapping RMA: %s", strerror(errno));
         return -1;
     };
 
@@ -2303,7 +2303,7 @@ void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t page_shift,
         }
         fd = kvm_vm_ioctl(kvm_state, KVM_CREATE_SPAPR_TCE, &args);
         if (fd < 0) {
-            fprintf(stderr, "KVM: Failed to create TCE table for liobn 0x%x\n",
+            error_report("KVM: Failed to create TCE table for liobn 0x%x",
                     liobn);
             return NULL;
         }
@@ -2316,7 +2316,7 @@ void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t page_shift,
 
     table = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
     if (table == MAP_FAILED) {
-        fprintf(stderr, "KVM: Failed to map TCE table for liobn 0x%x\n",
+        error_report("KVM: Failed to map TCE table for liobn 0x%x",
                 liobn);
         close(fd);
         return NULL;
@@ -2563,7 +2563,7 @@ int kvmppc_get_htab_fd(bool write)
     };
 
     if (!cap_htab_fd) {
-        fprintf(stderr, "KVM version doesn't support saving the hash table\n");
+        error_report("KVM version doesn't support saving the hash table");
         return -1;
     }
 
@@ -2579,7 +2579,7 @@ int kvmppc_save_htab(QEMUFile *f, int fd, size_t bufsize, int64_t max_ns)
     do {
         rc = read(fd, buf, bufsize);
         if (rc < 0) {
-            fprintf(stderr, "Error reading data from KVM HTAB fd: %s\n",
+            error_report("Error reading data from KVM HTAB fd: %s",
                     strerror(errno));
             return rc;
         } else if (rc) {
@@ -2624,13 +2624,13 @@ int kvmppc_load_htab_chunk(QEMUFile *f, int fd, uint32_t index,
 
     rc = write(fd, buf, chunksize);
     if (rc < 0) {
-        fprintf(stderr, "Error writing KVM hash table: %s\n",
+        error_report("Error writing KVM hash table: %s",
                 strerror(errno));
         return rc;
     }
     if (rc != chunksize) {
         /* We should never get a short write on a single chunk */
-        fprintf(stderr, "Short write, restoring KVM hash table\n");
+        error_report("Short write, restoring KVM hash table");
         return -1;
     }
     return 0;
diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c
index 14d34e512f..8713ed6682 100644
--- a/target/ppc/mmu-hash64.c
+++ b/target/ppc/mmu-hash64.c
@@ -377,7 +377,7 @@ static int ppc_hash64_amr_prot(PowerPCCPU *cpu, ppc_hash_pte64_t pte)
     key = HPTE64_R_KEY(pte.pte1);
     amrbits = (env->spr[SPR_AMR] >> 2*(31 - key)) & 0x3;
 
-    /* fprintf(stderr, "AMR protection: key=%d AMR=0x%" PRIx64 "\n", key, */
+    /* error_report("AMR protection: key=%d AMR=0x%" PRIx64 "", key, */
     /*         env->spr[SPR_AMR]); */
 
     /*
diff --git a/target/ppc/mmu_helper.c b/target/ppc/mmu_helper.c
index 2a1f9902c9..cbf5187ff8 100644
--- a/target/ppc/mmu_helper.c
+++ b/target/ppc/mmu_helper.c
@@ -2600,7 +2600,7 @@ void helper_booke206_tlbwe(CPUPPCState *env)
     if (((env->spr[SPR_BOOKE_MAS0] & MAS0_ATSEL) == MAS0_ATSEL_LRAT) &&
         !msr_gs) {
         /* XXX we don't support direct LRAT setting yet */
-        fprintf(stderr, "cpu: don't support LRAT setting yet\n");
+        error_report("cpu: don't support LRAT setting yet");
         return;
     }
 
diff --git a/target/ppc/translate.c b/target/ppc/translate.c
index 606b605ba0..a3da22580e 100644
--- a/target/ppc/translate.c
+++ b/target/ppc/translate.c
@@ -3943,8 +3943,8 @@ static inline void gen_op_mfspr(DisasContext *ctx)
              * allowing userland application to read the PVR
              */
             if (sprn != SPR_PVR) {
-                fprintf(stderr, "Trying to read privileged spr %d (0x%03x) at "
-                        TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+                error_report("Trying to read privileged spr %d (0x%03x) at "
+                        TARGET_FMT_lx "", sprn, sprn, ctx->nip - 4);
                 if (qemu_log_separate()) {
                     qemu_log("Trying to read privileged spr %d (0x%03x) at "
                              TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
@@ -3960,8 +3960,8 @@ static inline void gen_op_mfspr(DisasContext *ctx)
             return;
         }
         /* Not defined */
-        fprintf(stderr, "Trying to read invalid spr %d (0x%03x) at "
-                TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+        error_report("Trying to read invalid spr %d (0x%03x) at "
+                TARGET_FMT_lx "", sprn, sprn, ctx->nip - 4);
         if (qemu_log_separate()) {
             qemu_log("Trying to read invalid spr %d (0x%03x) at "
                      TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
@@ -4106,8 +4106,8 @@ static void gen_mtspr(DisasContext *ctx)
             (*write_cb)(ctx, sprn, rS(ctx->opcode));
         } else {
             /* Privilege exception */
-            fprintf(stderr, "Trying to write privileged spr %d (0x%03x) at "
-                    TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+            error_report("Trying to write privileged spr %d (0x%03x) at "
+                    TARGET_FMT_lx "", sprn, sprn, ctx->nip - 4);
             if (qemu_log_separate()) {
                 qemu_log("Trying to write privileged spr %d (0x%03x) at "
                          TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
@@ -4127,8 +4127,8 @@ static void gen_mtspr(DisasContext *ctx)
             qemu_log("Trying to write invalid spr %d (0x%03x) at "
                      TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
         }
-        fprintf(stderr, "Trying to write invalid spr %d (0x%03x) at "
-                TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+        error_report("Trying to write invalid spr %d (0x%03x) at "
+                TARGET_FMT_lx "", sprn, sprn, ctx->nip - 4);
 
 
         /* The behaviour depends on MSR:PR and SPR# bit 0x10,
@@ -7370,8 +7370,8 @@ void gen_intermediate_code(CPUState *cs, struct TranslationBlock *tb)
             break;
         }
         if (tcg_check_temp_count()) {
-            fprintf(stderr, "Opcode %02x %02x %02x %02x (%08x) leaked "
-                    "temporaries\n", opc1(ctx.opcode), opc2(ctx.opcode),
+            error_report("Opcode %02x %02x %02x %02x (%08x) leaked "
+                    "temporaries", opc1(ctx.opcode), opc2(ctx.opcode),
                     opc3(ctx.opcode), opc4(ctx.opcode), ctx.opcode);
             exit(1);
         }
diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c
index 466bf97347..a44444ebc9 100644
--- a/target/ppc/translate_init.c
+++ b/target/ppc/translate_init.c
@@ -1778,7 +1778,7 @@ static void gen_spr_BookE(CPUPPCState *env, uint64_t ivor_mask)
     for (i = 0; i < 64; i++) {
         if (ivor_mask & (1ULL << i)) {
             if (ivor_sprn[i] == SPR_BOOKE_IVORxx) {
-                fprintf(stderr, "ERROR: IVOR %d SPR is not defined\n", i);
+                error_report("ERROR: IVOR %d SPR is not defined", i);
                 exit(1);
             }
             spr_register(env, ivor_sprn[i], ivor_names[i],
@@ -9216,13 +9216,13 @@ static void init_ppc_proc(PowerPCCPU *cpu)
         case POWERPC_FLAG_VRE:
             break;
         default:
-            fprintf(stderr, "PowerPC MSR definition inconsistency\n"
-                    "Should define POWERPC_FLAG_SPE or POWERPC_FLAG_VRE\n");
+            error_report("PowerPC MSR definition inconsistency");
+            error_printf("Should define POWERPC_FLAG_SPE or POWERPC_FLAG_VRE");
             exit(1);
         }
     } else if (env->flags & (POWERPC_FLAG_SPE | POWERPC_FLAG_VRE)) {
-        fprintf(stderr, "PowerPC MSR definition inconsistency\n"
-                "Should not define POWERPC_FLAG_SPE nor POWERPC_FLAG_VRE\n");
+        error_report("PowerPC MSR definition inconsistency");
+        error_printf("Should not define POWERPC_FLAG_SPE nor POWERPC_FLAG_VRE");
         exit(1);
     }
     if (env->msr_mask & (1 << 17)) {
@@ -9231,13 +9231,13 @@ static void init_ppc_proc(PowerPCCPU *cpu)
         case POWERPC_FLAG_CE:
             break;
         default:
-            fprintf(stderr, "PowerPC MSR definition inconsistency\n"
-                    "Should define POWERPC_FLAG_TGPR or POWERPC_FLAG_CE\n");
+            error_report("PowerPC MSR definition inconsistency");
+            error_printf("Should define POWERPC_FLAG_TGPR or POWERPC_FLAG_CE");
             exit(1);
         }
     } else if (env->flags & (POWERPC_FLAG_TGPR | POWERPC_FLAG_CE)) {
-        fprintf(stderr, "PowerPC MSR definition inconsistency\n"
-                "Should not define POWERPC_FLAG_TGPR nor POWERPC_FLAG_CE\n");
+        error_report("PowerPC MSR definition inconsistency");
+        error_printf("Should not define POWERPC_FLAG_TGPR nor POWERPC_FLAG_CE");
         exit(1);
     }
     if (env->msr_mask & (1 << 10)) {
@@ -9248,16 +9248,16 @@ static void init_ppc_proc(PowerPCCPU *cpu)
         case POWERPC_FLAG_UBLE:
             break;
         default:
-            fprintf(stderr, "PowerPC MSR definition inconsistency\n"
-                    "Should define POWERPC_FLAG_SE or POWERPC_FLAG_DWE or "
-                    "POWERPC_FLAG_UBLE\n");
+            error_report("PowerPC MSR definition inconsistency");
+            error_printf("Should define POWERPC_FLAG_SE or POWERPC_FLAG_DWE or "
+                         "POWERPC_FLAG_UBLE");
             exit(1);
         }
     } else if (env->flags & (POWERPC_FLAG_SE | POWERPC_FLAG_DWE |
                              POWERPC_FLAG_UBLE)) {
-        fprintf(stderr, "PowerPC MSR definition inconsistency\n"
-                "Should not define POWERPC_FLAG_SE nor POWERPC_FLAG_DWE nor "
-                "POWERPC_FLAG_UBLE\n");
+        error_report("PowerPC MSR definition inconsistency");
+        error_printf("Should not define POWERPC_FLAG_SE nor POWERPC_FLAG_DWE"
+                     " nor POWERPC_FLAG_UBLE");
             exit(1);
     }
     if (env->msr_mask & (1 << 9)) {
@@ -9266,13 +9266,13 @@ static void init_ppc_proc(PowerPCCPU *cpu)
         case POWERPC_FLAG_DE:
             break;
         default:
-            fprintf(stderr, "PowerPC MSR definition inconsistency\n"
-                    "Should define POWERPC_FLAG_BE or POWERPC_FLAG_DE\n");
+            error_report("PowerPC MSR definition inconsistency");
+            error_printf("Should define POWERPC_FLAG_BE or POWERPC_FLAG_DE");
             exit(1);
         }
     } else if (env->flags & (POWERPC_FLAG_BE | POWERPC_FLAG_DE)) {
-        fprintf(stderr, "PowerPC MSR definition inconsistency\n"
-                "Should not define POWERPC_FLAG_BE nor POWERPC_FLAG_DE\n");
+        error_report("PowerPC MSR definition inconsistency");
+        error_printf("Should not define POWERPC_FLAG_BE nor POWERPC_FLAG_DE");
         exit(1);
     }
     if (env->msr_mask & (1 << 2)) {
@@ -9281,18 +9281,19 @@ static void init_ppc_proc(PowerPCCPU *cpu)
         case POWERPC_FLAG_PMM:
             break;
         default:
-            fprintf(stderr, "PowerPC MSR definition inconsistency\n"
-                    "Should define POWERPC_FLAG_PX or POWERPC_FLAG_PMM\n");
+            error_report("PowerPC MSR definition inconsistency");
+            error_printf("Should define POWERPC_FLAG_PX or POWERPC_FLAG_PMM");
             exit(1);
         }
     } else if (env->flags & (POWERPC_FLAG_PX | POWERPC_FLAG_PMM)) {
-        fprintf(stderr, "PowerPC MSR definition inconsistency\n"
-                "Should not define POWERPC_FLAG_PX nor POWERPC_FLAG_PMM\n");
+        error_report("PowerPC MSR definition inconsistency");
+        error_printf("Should not define POWERPC_FLAG_PX nor POWERPC_FLAG_PMM");
         exit(1);
     }
     if ((env->flags & (POWERPC_FLAG_RTC_CLK | POWERPC_FLAG_BUS_CLK)) == 0) {
-        fprintf(stderr, "PowerPC flags inconsistency\n"
-                "Should define the time-base and decrementer clock source\n");
+        error_report("PowerPC MSR definition inconsistency");
+        error_printf("Should define the time-base and decrementer clock"
+                     " source");
         exit(1);
     }
     /* Allocate TLBs buffer when needed */
@@ -10496,7 +10497,7 @@ static void ppc_cpu_reset(CPUState *s)
 #if !defined(TARGET_WORDS_BIGENDIAN)
     msr |= (target_ulong)1 << MSR_LE; /* Little-endian user mode */
     if (!((env->msr_mask >> MSR_LE) & 1)) {
-        fprintf(stderr, "Selected CPU does not support little-endian.\n");
+        error_report("Selected CPU does not support little-endian.");
         exit(1);
     }
 #endif
diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
index ebb75cafaa..6f7ebd1c98 100644
--- a/target/s390x/kvm.c
+++ b/target/s390x/kvm.c
@@ -967,13 +967,13 @@ static void inject_vcpu_irq_legacy(CPUState *cs, struct kvm_s390_irq *irq)
 
     r = s390_kvm_irq_to_interrupt(irq, &kvmint);
     if (r < 0) {
-        fprintf(stderr, "%s called with bogus interrupt\n", __func__);
+        error_report("%s called with bogus interrupt", __func__);
         exit(1);
     }
 
     r = kvm_vcpu_ioctl(cs, KVM_S390_INTERRUPT, &kvmint);
     if (r < 0) {
-        fprintf(stderr, "KVM failed to inject interrupt\n");
+        error_report("KVM failed to inject interrupt");
         exit(1);
     }
 }
@@ -1002,13 +1002,13 @@ static void __kvm_s390_floating_interrupt(struct kvm_s390_irq *irq)
 
     r = s390_kvm_irq_to_interrupt(irq, &kvmint);
     if (r < 0) {
-        fprintf(stderr, "%s called with bogus interrupt\n", __func__);
+        error_report("%s called with bogus interrupt", __func__);
         exit(1);
     }
 
     r = kvm_vm_ioctl(kvm_state, KVM_S390_INTERRUPT, &kvmint);
     if (r < 0) {
-        fprintf(stderr, "KVM failed to inject interrupt\n");
+        error_report("KVM failed to inject interrupt");
         exit(1);
     }
 }
@@ -1116,14 +1116,14 @@ static int handle_b2(S390CPU *cpu, struct kvm_run *run, uint8_t ipa1)
         break;
     case PRIV_B2_TSCH:
         /* We should only get tsch via KVM_EXIT_S390_TSCH. */
-        fprintf(stderr, "Spurious tsch intercept\n");
+        error_report("Spurious tsch intercept");
         break;
     case PRIV_B2_CHSC:
         ioinst_handle_chsc(cpu, run->s390_sieic.ipb);
         break;
     case PRIV_B2_TPI:
         /* This should have been handled by kvm already. */
-        fprintf(stderr, "Spurious tpi intercept\n");
+        error_report("Spurious tpi intercept");
         break;
     case PRIV_B2_SCHM:
         ioinst_handle_schm(cpu, env->regs[1], env->regs[2],
@@ -2050,15 +2050,15 @@ static int handle_intercept(S390CPU *cpu)
             }
             break;
         case ICPT_SOFT_INTERCEPT:
-            fprintf(stderr, "KVM unimplemented icpt SOFT\n");
+            error_report("KVM unimplemented icpt SOFT");
             exit(1);
             break;
         case ICPT_IO:
-            fprintf(stderr, "KVM unimplemented icpt IO\n");
+            error_report("KVM unimplemented icpt IO");
             exit(1);
             break;
         default:
-            fprintf(stderr, "Unknown intercept code: %d\n", icpt_code);
+            error_report("Unknown intercept code: %d", icpt_code);
             exit(1);
             break;
     }
@@ -2215,7 +2215,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
             ret = kvm_arch_handle_debug_exit(cpu);
             break;
         default:
-            fprintf(stderr, "Unknown KVM exit: %d\n", run->exit_reason);
+            error_report("Unknown KVM exit: %d", run->exit_reason);
             break;
     }
     qemu_mutex_unlock_iothread();
diff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c
index 293fc8428a..395872af45 100644
--- a/target/s390x/misc_helper.c
+++ b/target/s390x/misc_helper.c
@@ -354,7 +354,7 @@ uint32_t HELPER(sigp)(CPUS390XState *env, uint64_t order_code, uint32_t r1,
 #endif
     default:
         /* unknown sigp */
-        fprintf(stderr, "XXX unknown sigp: 0x%" PRIx64 "\n", order_code);
+        error_report("XXX unknown sigp: 0x%" PRIx64 "", order_code);
         cc = SIGP_CC_NOT_OPERATIONAL;
     }
 
diff --git a/target/sh4/translate.c b/target/sh4/translate.c
index 10191073b2..9f95410e53 100644
--- a/target/sh4/translate.c
+++ b/target/sh4/translate.c
@@ -438,7 +438,7 @@ static void _decode_opc(DisasContext * ctx)
 	}
 
 #if 0
-    fprintf(stderr, "Translating opcode 0x%04x\n", ctx->opcode);
+    error_report("Translating opcode 0x%04x", ctx->opcode);
 #endif
 
     switch (ctx->opcode) {
@@ -1799,7 +1799,7 @@ static void _decode_opc(DisasContext * ctx)
         break;
     }
 #if 0
-    fprintf(stderr, "unknown instruction 0x%04x at pc 0x%08x\n",
+    error_report("unknown instruction 0x%04x at pc 0x%08x",
 	    ctx->opcode, ctx->pc);
     fflush(stderr);
 #endif
diff --git a/target/unicore32/translate.c b/target/unicore32/translate.c
index 6c094d59d7..a74d5d12a3 100644
--- a/target/unicore32/translate.c
+++ b/target/unicore32/translate.c
@@ -515,7 +515,7 @@ static void gen_test_cc(int cc, TCGLabel *label)
         tcg_gen_brcondi_i32(TCG_COND_LT, tmp, 0, label);
         break;
     default:
-        fprintf(stderr, "Bad condition code 0x%x\n", cc);
+        error_report("Bad condition code 0x%x", cc);
         abort();
     }
     dead_tmp(tmp);
@@ -1940,7 +1940,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb)
         disas_uc32_insn(env, dc);
 
         if (num_temps) {
-            fprintf(stderr, "Internal resource leak before %08x\n", dc->pc);
+            error_report("Internal resource leak before %08x", dc->pc);
             num_temps = 0;
         }
 
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 0/8]  Remove some of the fprintf(stderr, "*
  2017-09-26  0:08 [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* Alistair Francis
                   ` (7 preceding siblings ...)
  2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 8/8] target: " Alistair Francis
@ 2017-09-26  0:27 ` no-reply
  2017-09-26  0:42 ` no-reply
  2017-09-26  9:05 ` Stefan Hajnoczi
  10 siblings, 0 replies; 35+ messages in thread
From: no-reply @ 2017-09-26  0:27 UTC (permalink / raw)
  To: alistair.francis; +Cc: famz, qemu-devel, alistair23, armbru

Hi,

This series failed build test on s390x host. Please find the details below.

Type: series
Subject: [Qemu-devel] [PATCH v1 0/8]  Remove some of the fprintf(stderr, "*
Message-id: cover.1506384414.git.alistair.francis@xilinx.com

=== TEST SCRIPT BEGIN ===
#!/bin/bash
# Testing script will be invoked under the git checkout with
# HEAD pointing to a commit that has the patches applied on top of "base"
# branch
set -e
echo "=== ENV ==="
env
echo "=== PACKAGES ==="
rpm -qa
echo "=== TEST BEGIN ==="
CC=$HOME/bin/cc
INSTALL=$PWD/install
BUILD=$PWD/build
echo -n "Using CC: "
realpath $CC
mkdir -p $BUILD $INSTALL
SRC=$PWD
cd $BUILD
$SRC/configure --cc=$CC --prefix=$INSTALL
make -j4
# XXX: we need reliable clean up
# make check -j4 V=1
make install
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 - [tag update]      patchew/20170913160333.23622-1-eblake@redhat.com -> patchew/20170913160333.23622-1-eblake@redhat.com
 - [tag update]      patchew/20170919150313.10833-1-richard.henderson@linaro.org -> patchew/20170919150313.10833-1-richard.henderson@linaro.org
 - [tag update]      patchew/20170925082913.22089-1-famz@redhat.com -> patchew/20170925082913.22089-1-famz@redhat.com
 - [tag update]      patchew/20170925145526.32690-1-eblake@redhat.com -> patchew/20170925145526.32690-1-eblake@redhat.com
 * [new tag]         patchew/cover.1506384414.git.alistair.francis@xilinx.com -> patchew/cover.1506384414.git.alistair.francis@xilinx.com
Switched to a new branch 'test'
8d5b2ea target: Replace fprintf(stderr, "*\n" with error_report()
d8106c7 tcg: Replace fprintf(stderr, "*\n" with error_report()
ce4a0a7 ui: Replace fprintf(stderr, "*\n" with error_report()
05fbef2 util: Replace fprintf(stderr, "*\n" with error_report()
79f557c block: Replace fprintf(stderr, "*\n" with error_report()
b6097a9 hw: Replace fprintf(stderr, "*\n" with error_report()
2149242 tests: Replace fprintf(stderr, "*\n" with error_report()
e646215 Replace all occurances of __FUNCTION__ with __func__

=== OUTPUT BEGIN ===
=== ENV ===
XDG_SESSION_ID=19724
SHELL=/bin/sh
USER=fam
PATCHEW=/home/fam/patchew/patchew-cli -s http://patchew.org --nodebug
PATH=/usr/bin:/bin
PWD=/var/tmp/patchew-tester-tmp-lzr53l_5/src
LANG=en_US.UTF-8
HOME=/home/fam
SHLVL=2
LOGNAME=fam
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1012/bus
XDG_RUNTIME_DIR=/run/user/1012
_=/usr/bin/env
=== PACKAGES ===
gpg-pubkey-873529b8-54e386ff
xz-libs-5.2.2-2.fc24.s390x
libxshmfence-1.2-3.fc24.s390x
giflib-4.1.6-15.fc24.s390x
trousers-lib-0.3.13-6.fc24.s390x
ncurses-base-6.0-6.20160709.fc25.noarch
gmp-6.1.1-1.fc25.s390x
libidn-1.33-1.fc25.s390x
slang-2.3.0-7.fc25.s390x
pkgconfig-0.29.1-1.fc25.s390x
alsa-lib-1.1.1-2.fc25.s390x
yum-metadata-parser-1.1.4-17.fc25.s390x
python3-slip-dbus-0.6.4-4.fc25.noarch
python2-cssselect-0.9.2-1.fc25.noarch
createrepo_c-libs-0.10.0-6.fc25.s390x
initscripts-9.69-1.fc25.s390x
parted-3.2-21.fc25.s390x
flex-2.6.0-3.fc25.s390x
colord-libs-1.3.4-1.fc25.s390x
python-osbs-client-0.33-3.fc25.noarch
perl-Pod-Simple-3.35-1.fc25.noarch
python2-simplejson-3.10.0-1.fc25.s390x
brltty-5.4-2.fc25.s390x
librados2-10.2.4-2.fc25.s390x
tcp_wrappers-7.6-83.fc25.s390x
libcephfs_jni1-10.2.4-2.fc25.s390x
nettle-devel-3.3-1.fc25.s390x
bzip2-devel-1.0.6-21.fc25.s390x
libuuid-2.28.2-2.fc25.s390x
python3-dnf-1.1.10-6.fc25.noarch
texlive-kpathsea-doc-svn41139-33.fc25.1.noarch
openssh-7.4p1-4.fc25.s390x
texlive-kpathsea-bin-svn40473-33.20160520.fc25.1.s390x
texlive-graphics-svn41015-33.fc25.1.noarch
texlive-dvipdfmx-def-svn40328-33.fc25.1.noarch
texlive-mfware-svn40768-33.fc25.1.noarch
texlive-texlive-scripts-svn41433-33.fc25.1.noarch
texlive-euro-svn22191.1.1-33.fc25.1.noarch
texlive-etex-svn37057.0-33.fc25.1.noarch
texlive-iftex-svn29654.0.2-33.fc25.1.noarch
texlive-palatino-svn31835.0-33.fc25.1.noarch
texlive-texlive-docindex-svn41430-33.fc25.1.noarch
texlive-xunicode-svn30466.0.981-33.fc25.1.noarch
texlive-koma-script-svn41508-33.fc25.1.noarch
texlive-pst-grad-svn15878.1.06-33.fc25.1.noarch
texlive-pst-blur-svn15878.2.0-33.fc25.1.noarch
texlive-jknapltx-svn19440.0-33.fc25.1.noarch
texinfo-6.1-4.fc25.s390x
openssl-devel-1.0.2k-1.fc25.s390x
jansson-2.10-2.fc25.s390x
fedora-repos-25-4.noarch
perl-Errno-1.25-387.fc25.s390x
acl-2.2.52-13.fc25.s390x
systemd-pam-231-17.fc25.s390x
NetworkManager-libnm-1.4.4-5.fc25.s390x
poppler-0.45.0-5.fc25.s390x
ccache-3.3.4-1.fc25.s390x
valgrind-3.12.0-9.fc25.s390x
perl-open-1.10-387.fc25.noarch
libgcc-6.4.1-1.fc25.s390x
libsoup-2.56.1-1.fc25.s390x
libstdc++-devel-6.4.1-1.fc25.s390x
libobjc-6.4.1-1.fc25.s390x
python2-rpm-4.13.0.1-2.fc25.s390x
python2-gluster-3.10.5-1.fc25.s390x
rpm-build-4.13.0.1-2.fc25.s390x
glibc-static-2.24-10.fc25.s390x
lz4-1.8.0-1.fc25.s390x
xapian-core-libs-1.2.24-1.fc25.s390x
elfutils-libelf-devel-0.169-1.fc25.s390x
nss-softokn-3.32.0-1.2.fc25.s390x
pango-1.40.9-1.fc25.s390x
glibc-debuginfo-common-2.24-10.fc25.s390x
libaio-0.3.110-6.fc24.s390x
libfontenc-1.1.3-3.fc24.s390x
lzo-2.08-8.fc24.s390x
isl-0.14-5.fc24.s390x
libXau-1.0.8-6.fc24.s390x
linux-atm-libs-2.5.1-14.fc24.s390x
libXext-1.3.3-4.fc24.s390x
libXxf86vm-1.1.4-3.fc24.s390x
bison-3.0.4-4.fc24.s390x
perl-srpm-macros-1-20.fc25.noarch
gawk-4.1.3-8.fc25.s390x
libwayland-client-1.12.0-1.fc25.s390x
perl-Exporter-5.72-366.fc25.noarch
perl-version-0.99.17-1.fc25.s390x
fftw-libs-double-3.3.5-3.fc25.s390x
libssh2-1.8.0-1.fc25.s390x
ModemManager-glib-1.6.4-1.fc25.s390x
newt-python3-0.52.19-2.fc25.s390x
python-munch-2.0.4-3.fc25.noarch
python-bugzilla-1.2.2-4.fc25.noarch
libedit-3.1-16.20160618cvs.fc25.s390x
createrepo_c-0.10.0-6.fc25.s390x
device-mapper-multipath-libs-0.4.9-83.fc25.s390x
yum-3.4.3-510.fc25.noarch
mozjs17-17.0.0-16.fc25.s390x
libselinux-2.5-13.fc25.s390x
python2-pyparsing-2.1.10-1.fc25.noarch
cairo-gobject-1.14.8-1.fc25.s390x
xorg-x11-proto-devel-7.7-20.fc25.noarch
brlapi-0.6.5-2.fc25.s390x
librados-devel-10.2.4-2.fc25.s390x
libXinerama-devel-1.1.3-6.fc24.s390x
lua-posix-33.3.1-3.fc25.s390x
usbredir-devel-0.7.1-2.fc24.s390x
python3-dnf-plugins-core-0.1.21-5.fc25.noarch
texlive-pdftex-doc-svn41149-33.fc25.1.noarch
openssh-clients-7.4p1-4.fc25.s390x
iptables-1.6.0-3.fc25.s390x
texlive-texlive.infra-svn41280-33.fc25.1.noarch
texlive-graphics-cfg-svn40269-33.fc25.1.noarch
texlive-bibtex-svn40768-33.fc25.1.noarch
texlive-mfware-bin-svn40473-33.20160520.fc25.1.s390x
texlive-texlive-scripts-bin-svn29741.0-33.20160520.fc25.1.noarch
texlive-sauerj-svn15878.0-33.fc25.1.noarch
texlive-enctex-svn34957.0-33.fc25.1.noarch
texlive-ifetex-svn24853.1.2-33.fc25.1.noarch
texlive-ntgclass-svn15878.2.1a-33.fc25.1.noarch
texlive-tex-gyre-math-svn41264-33.fc25.1.noarch
texlive-bera-svn20031.0-33.fc25.1.noarch
texlive-ms-svn29849.0-33.fc25.1.noarch
texlive-pst-fill-svn15878.1.01-33.fc25.1.noarch
texlive-ctable-svn38672-33.fc25.1.noarch
texlive-extsizes-svn17263.1.4a-33.fc25.1.noarch
texlive-collection-latexrecommended-svn35765.0-33.20160520.fc25.1.noarch
perl-Filter-1.57-1.fc25.s390x
python2-rpm-macros-3-12.fc25.noarch
gdbm-1.13-1.fc25.s390x
libtasn1-4.12-1.fc25.s390x
fedora-release-25-2.noarch
gdb-headless-7.12.1-48.fc25.s390x
perl-macros-5.24.2-387.fc25.s390x
pcre-devel-8.41-1.fc25.s390x
libX11-1.6.5-1.fc25.s390x
coreutils-8.25-17.fc25.s390x
python2-openidc-client-0-3.20170523git77cb3ee.fc25.noarch
systemtap-client-3.1-5.fc25.s390x
firewalld-0.4.4.5-1.fc25.noarch
glibc-2.24-10.fc25.s390x
libglvnd-egl-0.2.999-24.20170818git8d4d03f.fc25.s390x
libkadm5-1.14.4-8.fc25.s390x
glusterfs-fuse-3.10.5-1.fc25.s390x
libgfortran-6.4.1-1.fc25.s390x
python3-rpm-4.13.0.1-2.fc25.s390x
glusterfs-extra-xlators-3.10.5-1.fc25.s390x
dracut-config-rescue-046-2.git20170811.fc25.s390x
python2-sphinx-theme-alabaster-0.7.9-1.fc25.noarch
elfutils-devel-0.169-1.fc25.s390x
nss-3.32.0-1.1.fc25.s390x
pango-devel-1.40.9-1.fc25.s390x
glibc-debuginfo-2.24-10.fc25.s390x
gpg-pubkey-efe550f5-5220ba41
gpg-pubkey-81b46521-55b3ca9a
filesystem-3.2-37.fc24.s390x
libffi-3.1-9.fc24.s390x
keyutils-libs-1.5.9-8.fc24.s390x
libnfnetlink-1.0.1-8.fc24.s390x
libtheora-1.1.1-14.fc24.s390x
xml-common-0.6.3-44.fc24.noarch
autoconf-2.69-22.fc24.noarch
libXt-1.1.5-3.fc24.s390x
kbd-legacy-2.0.3-3.fc24.noarch
ghostscript-fonts-5.50-35.fc24.noarch
libXevie-1.0.3-11.fc24.s390x
libcap-2.25-2.fc25.s390x
mpfr-3.1.5-1.fc25.s390x
perl-Carp-1.40-365.fc25.noarch
libmnl-1.0.4-1.fc25.s390x
perl-Unicode-EastAsianWidth-1.33-8.fc25.noarch
libwayland-cursor-1.12.0-1.fc25.s390x
python-krbV-1.0.90-12.fc25.s390x
python2-urllib3-1.15.1-3.fc25.noarch
fipscheck-1.4.1-11.fc25.s390x
libndp-1.6-1.fc25.s390x
gnupg2-2.1.13-2.fc25.s390x
libXfixes-5.0.3-1.fc25.s390x
adwaita-icon-theme-3.22.0-1.fc25.noarch
dconf-0.26.0-1.fc25.s390x
ncurses-devel-6.0-6.20160709.fc25.s390x
dejagnu-1.6-1.fc25.noarch
device-mapper-1.02.136-3.fc25.s390x
libevent-2.0.22-1.fc25.s390x
atk-devel-2.22.0-1.fc25.s390x
libev-4.24-1.fc25.s390x
xorg-x11-fonts-Type1-7.5-16.fc24.noarch
brlapi-devel-0.6.5-2.fc25.s390x
pulseaudio-libs-10.0-2.fc25.s390x
glib2-2.50.3-1.fc25.s390x
dnf-1.1.10-6.fc25.noarch
texlive-metafont-bin-svn40987-33.20160520.fc25.1.s390x
texlive-xkeyval-svn35741.2.7a-33.fc25.1.noarch
texlive-euler-svn17261.2.5-33.fc25.1.noarch
texlive-mptopdf-svn41282-33.fc25.1.noarch
texlive-wasy-svn35831.0-33.fc25.1.noarch
texlive-avantgar-svn31835.0-33.fc25.1.noarch
texlive-eurosym-svn17265.1.4_subrfix-33.fc25.1.noarch
texlive-knuth-lib-svn35820.0-33.fc25.1.noarch
texlive-parallel-svn15878.0-33.fc25.1.noarch
texlive-texlive-msg-translations-svn41431-33.fc25.1.noarch
texlive-latex-svn40218-33.fc25.1.noarch
texlive-lualatex-math-svn40621-33.fc25.1.noarch
texlive-auto-pst-pdf-svn23723.0.6-33.fc25.1.noarch
texlive-powerdot-svn38984-33.fc25.1.noarch
texlive-wasysym-svn15878.2.0-33.fc25.1.noarch
ImageMagick-libs-6.9.3.0-6.fc25.s390x
geoclue2-2.4.5-1.fc25.s390x
perl-IO-Socket-IP-0.39-1.fc25.noarch
python2-pyasn1-0.2.3-1.fc25.noarch
at-spi2-core-devel-2.22.1-1.fc25.s390x
libacl-2.2.52-13.fc25.s390x
perl-libs-5.24.2-387.fc25.s390x
mesa-libglapi-17.0.5-3.fc25.s390x
python3-rpmconf-1.0.19-1.fc25.noarch
pcre-utf32-8.41-1.fc25.s390x
libX11-common-1.6.5-1.fc25.noarch
coreutils-common-8.25-17.fc25.s390x
mesa-libEGL-17.0.5-3.fc25.s390x
systemtap-runtime-3.1-5.fc25.s390x
NetworkManager-glib-1.4.4-5.fc25.s390x
audit-2.7.7-1.fc25.s390x
glibc-all-langpacks-2.24-10.fc25.s390x
libglvnd-glx-0.2.999-24.20170818git8d4d03f.fc25.s390x
glusterfs-api-3.10.5-1.fc25.s390x
libepoxy-devel-1.4.3-1.fc25.1.s390x
gtk3-3.22.17-2.fc25.s390x
rpm-4.13.0.1-2.fc25.s390x
net-snmp-agent-libs-5.7.3-15.fc25.s390x
pcre2-devel-10.23-9.fc25.s390x
subversion-1.9.7-1.fc25.s390x
libsndfile-1.0.28-6.fc25.s390x
lasi-1.1.2-6.fc24.s390x
python2-snowballstemmer-1.2.1-1.fc25.noarch
nss-util-devel-3.32.0-1.0.fc25.s390x
vim-common-8.0.1030-1.fc25.s390x
gd-2.2.5-1.fc25.s390x
gpg-pubkey-34ec9cba-54e38751
gpg-pubkey-030d5aed-55b577f0
basesystem-11-2.fc24.noarch
libmpc-1.0.2-5.fc24.s390x
libunistring-0.9.4-3.fc24.s390x
libmodman-2.0.1-12.fc24.s390x
lsscsi-0.28-3.fc24.s390x
kbd-misc-2.0.3-3.fc24.noarch
kmod-23-1.fc25.s390x
newt-0.52.19-2.fc25.s390x
perl-Text-Unidecode-1.27-3.fc25.noarch
plymouth-core-libs-0.9.3-0.6.20160620git0e65b86c.fc25.s390x
which-2.21-1.fc25.s390x
python3-slip-0.6.4-4.fc25.noarch
python3-systemd-232-1.fc25.s390x
python-lockfile-0.11.0-4.fc25.noarch
python2-requests-2.10.0-4.fc25.noarch
libnghttp2-1.13.0-2.fc25.s390x
python-urlgrabber-3.10.1-9.fc25.noarch
iputils-20161105-1.fc25.s390x
rest-0.8.0-1.fc25.s390x
adwaita-cursor-theme-3.22.0-1.fc25.noarch
authconfig-6.2.10-14.fc25.s390x
automake-1.15-7.fc25.noarch
shared-mime-info-1.8-1.fc25.s390x
pigz-2.3.4-1.fc25.s390x
device-mapper-libs-1.02.136-3.fc25.s390x
dnsmasq-2.76-2.fc25.s390x
fedora-packager-0.6.0.1-1.fc25.noarch
libwebp-0.5.2-1.fc25.s390x
boost-system-1.60.0-10.fc25.s390x
libasyncns-0.8-10.fc24.s390x
libXau-devel-1.0.8-6.fc24.s390x
libverto-libev-0.2.6-6.fc24.s390x
python3-html5lib-0.999-9.fc25.noarch
ttmkfdir-3.0.9-48.fc24.s390x
pulseaudio-libs-glib2-10.0-2.fc25.s390x
texlive-lib-2016-33.20160520.fc25.s390x
libXi-devel-1.7.9-1.fc25.s390x
python3-distro-1.0.3-1.fc25.noarch
texlive-texlive-common-doc-svn40682-33.fc25.1.noarch
packagedb-cli-2.14.1-1.fc25.noarch
texlive-metafont-svn40793-33.fc25.1.noarch
texlive-tools-svn40934-33.fc25.1.noarch
texlive-enumitem-svn24146.3.5.2-33.fc25.1.noarch
texlive-mptopdf-bin-svn18674.0-33.20160520.fc25.1.noarch
texlive-underscore-svn18261.0-33.fc25.1.noarch
texlive-anysize-svn15878.0-33.fc25.1.noarch
texlive-euenc-svn19795.0.1h-33.fc25.1.noarch
texlive-kastrup-svn15878.0-33.fc25.1.noarch
texlive-paralist-svn39247-33.fc25.1.noarch
texlive-texlive-en-svn41185-33.fc25.1.noarch
texlive-tipa-svn29349.1.3-33.fc25.1.noarch
texlive-currfile-svn40725-33.fc25.1.noarch
texlive-pst-node-svn40743-33.fc25.1.noarch
texlive-pst-slpe-svn24391.1.31-33.fc25.1.noarch
texlive-typehtml-svn17134.0-33.fc25.1.noarch
SDL2-devel-2.0.5-3.fc25.s390x
libcroco-0.6.11-3.fc25.s390x
bluez-libs-devel-5.44-1.fc25.s390x
firewalld-filesystem-0.4.4.5-1.fc25.noarch
pcre-cpp-8.41-1.fc25.s390x
python3-firewall-0.4.4.5-1.fc25.noarch
freetype-devel-2.6.5-9.fc25.s390x
pcre-utf16-8.41-1.fc25.s390x
linux-firmware-20170605-74.git37857004.fc25.noarch
kernel-modules-4.11.10-200.fc25.s390x
systemtap-devel-3.1-5.fc25.s390x
polkit-0.113-8.fc25.s390x
perl-SelfLoader-1.23-387.fc25.noarch
libdb-utils-5.3.28-24.fc25.s390x
glibc-common-2.24-10.fc25.s390x
libglvnd-0.2.999-24.20170818git8d4d03f.fc25.s390x
webkitgtk4-2.16.6-1.fc25.s390x
rpm-build-libs-4.13.0.1-2.fc25.s390x
libglvnd-core-devel-0.2.999-24.20170818git8d4d03f.fc25.s390x
rpm-devel-4.13.0.1-2.fc25.s390x
kernel-4.12.9-200.fc25.s390x
libtool-ltdl-2.4.6-14.fc25.s390x
gts-0.7.6-29.20121130.fc24.s390x
python2-imagesize-0.7.1-2.fc25.noarch
nss-softokn-freebl-3.32.0-1.2.fc25.s390x
selinux-policy-3.13.1-225.22.fc25.noarch
kernel-devel-4.12.11-200.fc25.s390x
fontpackages-filesystem-1.44-17.fc24.noarch
groff-base-1.22.3-8.fc24.s390x
ilmbase-2.2.0-5.fc24.s390x
OpenEXR-libs-2.2.0-5.fc24.s390x
hesiod-3.2.1-6.fc24.s390x
sysfsutils-2.1.0-19.fc24.s390x
ocaml-srpm-macros-2-4.fc24.noarch
mailx-12.5-19.fc24.s390x
ncurses-libs-6.0-6.20160709.fc25.s390x
ipset-libs-6.29-1.fc25.s390x
gmp-devel-6.1.1-1.fc25.s390x
python-pip-8.1.2-2.fc25.noarch
harfbuzz-1.3.2-1.fc25.s390x
python2-iniparse-0.4-20.fc25.noarch
python3-iniparse-0.4-20.fc25.noarch
python3-kickstart-2.32-1.fc25.noarch
perl-Net-SSLeay-1.78-1.fc25.s390x
drpm-0.3.0-3.fc25.s390x
glib-networking-2.50.0-1.fc25.s390x
webkitgtk3-2.4.11-3.fc25.s390x
libXaw-1.0.13-4.fc25.s390x
xorg-x11-font-utils-7.5-32.fc25.s390x
hardlink-1.1-1.fc25.s390x
libcom_err-1.43.3-1.fc25.s390x
python2-dateutil-2.6.0-1.fc25.noarch
libXpm-3.5.12-1.fc25.s390x
poppler-data-0.4.7-6.fc25.noarch
librbd1-10.2.4-2.fc25.s390x
perl-Digest-MD5-2.55-2.fc25.s390x
wayland-protocols-devel-1.7-1.fc25.noarch
texi2html-5.0-4.fc24.noarch
libxkbcommon-0.7.1-1.fc25.s390x
libuuid-devel-2.28.2-2.fc25.s390x
libcacard-2.5.3-1.fc25.s390x
libwmf-lite-0.2.8.4-50.fc25.s390x
texlive-tetex-svn41059-33.fc25.1.noarch
texlive-thumbpdf-svn34621.3.16-33.fc25.1.noarch
texlive-carlisle-svn18258.0-33.fc25.1.noarch
texlive-makeindex-bin-svn40473-33.20160520.fc25.1.s390x
texlive-pdftex-svn41149-33.fc25.1.noarch
texlive-csquotes-svn39538-33.fc25.1.noarch
texlive-courier-svn35058.0-33.fc25.1.noarch
texlive-helvetic-svn31835.0-33.fc25.1.noarch
texlive-mfnfss-svn19410.0-33.fc25.1.noarch
texlive-sepnum-svn20186.2.0-33.fc25.1.noarch
texlive-utopia-svn15878.0-33.fc25.1.noarch
texlive-luatexbase-svn38550-33.fc25.1.noarch
texlive-pst-3d-svn17257.1.10-33.fc25.1.noarch
texlive-latex-bin-bin-svn14050.0-33.20160520.fc25.1.noarch
texlive-l3experimental-svn41163-33.fc25.1.noarch
net-tools-2.0-0.40.20160329git.fc25.s390x
perl-Pod-Perldoc-3.28-1.fc25.noarch
openssl-1.0.2k-1.fc25.s390x
man-pages-4.06-4.fc25.noarch
libxml2-2.9.4-2.fc25.s390x
python3-dateutil-2.6.0-1.fc25.noarch
perl-threads-shared-1.57-1.fc25.s390x
libnotify-0.7.7-1.fc25.s390x
unzip-6.0-32.fc25.s390x
python-beautifulsoup4-4.6.0-1.fc25.noarch
dhcp-client-4.3.5-3.fc25.s390x
python2-fedora-0.9.0-6.fc25.noarch
gdb-7.12.1-48.fc25.s390x
sqlite-libs-3.14.2-3.fc25.s390x
webkitgtk4-jsc-2.16.6-1.fc25.s390x
libgomp-6.4.1-1.fc25.s390x
p11-kit-trust-0.23.8-1.fc25.s390x
gdk-pixbuf2-devel-2.36.9-1.fc25.s390x
rpm-plugin-selinux-4.13.0.1-2.fc25.s390x
mariadb-common-10.1.25-1.fc25.s390x
dbus-devel-1.11.16-1.fc25.s390x
lz4-libs-1.8.0-1.fc25.s390x
python2-jinja2-2.8.1-1.fc25.noarch
system-python-libs-3.5.4-1.fc25.s390x
python2-rpkg-1.50-2.fc25.noarch
libsolv-0.6.29-1.fc25.s390x
gpg-pubkey-95a43f54-5284415a
dejavu-fonts-common-2.35-3.fc24.noarch
libSM-1.2.2-4.fc24.s390x
diffutils-3.3-13.fc24.s390x
libogg-1.3.2-5.fc24.s390x
hunspell-en-US-0.20140811.1-5.fc24.noarch
libdaemon-0.14-10.fc24.s390x
patch-2.7.5-3.fc24.s390x
libsysfs-2.1.0-19.fc24.s390x
procmail-3.22-39.fc24.s390x
libXdamage-1.1.4-8.fc24.s390x
libotf-0.9.13-7.fc24.s390x
urw-fonts-2.4-22.fc24.noarch
crontabs-1.11-12.20150630git.fc24.noarch
ppp-2.4.7-9.fc24.s390x
cyrus-sasl-2.1.26-26.2.fc24.s390x
zlib-devel-1.2.8-10.fc24.s390x
time-1.7-49.fc24.s390x
gpg-pubkey-fdb19c98-56fd6333
libcap-ng-0.7.8-1.fc25.s390x
binutils-2.26.1-1.fc25.s390x
lcms2-2.8-2.fc25.s390x
libcomps-0.1.7-5.fc25.s390x
perl-constant-1.33-367.fc25.noarch
perl-Data-Dumper-2.161-1.fc25.s390x
ipcalc-0.1.8-1.fc25.s390x
gmp-c++-6.1.1-1.fc25.s390x
fontconfig-2.12.1-1.fc25.s390x
enchant-1.6.0-14.fc25.s390x
pyliblzma-0.5.3-16.fc25.s390x
libsepol-devel-2.5-10.fc25.s390x
python3-ordered-set-2.0.0-4.fc25.noarch
python-ipaddress-1.0.16-3.fc25.noarch
python2-kerberos-1.2.5-1.fc25.s390x
python2-pysocks-1.5.6-5.fc25.noarch
fipscheck-lib-1.4.1-11.fc25.s390x
libatomic_ops-7.4.4-1.fc25.s390x
python2-pygpgme-0.3-18.fc25.s390x
orc-0.4.26-1.fc25.s390x
yum-utils-1.1.31-511.fc25.noarch
libXrender-0.9.10-1.fc25.s390x
libXrandr-1.5.1-1.fc25.s390x
go-srpm-macros-2-7.fc25.noarch
gnupg2-smime-2.1.13-2.fc25.s390x
guile-devel-2.0.13-1.fc25.s390x
uboot-tools-2016.09.01-2.fc25.s390x
pykickstart-2.32-1.fc25.noarch
python-bunch-1.0.1-9.fc25.noarch
perl-generators-1.10-1.fc25.noarch
perl-Mozilla-CA-20160104-3.fc25.noarch
bzip2-libs-1.0.6-21.fc25.s390x
libpng-1.6.27-1.fc25.s390x
desktop-file-utils-0.23-2.fc25.s390x
python2-cccolutils-1.4-1.fc25.s390x
python2-lxml-3.7.2-1.fc25.s390x
redhat-rpm-config-45-1.fc25.noarch
device-mapper-event-libs-1.02.136-3.fc25.s390x
lvm2-libs-2.02.167-3.fc25.s390x
libselinux-python-2.5-13.fc25.s390x
boost-thread-1.60.0-10.fc25.s390x
librbd-devel-10.2.4-2.fc25.s390x
libXcursor-devel-1.1.14-6.fc24.s390x
latex2html-2012-7.fc24.noarch
lksctp-tools-1.0.16-5.fc24.s390x
libfdt-1.4.2-1.fc25.s390x
libXft-devel-2.3.2-4.fc24.s390x
libattr-devel-2.4.47-16.fc24.s390x
libiscsi-devel-1.15.0-2.fc24.s390x
gettext-0.19.8.1-3.fc25.s390x
libjpeg-turbo-devel-1.5.1-0.fc25.s390x
pulseaudio-libs-devel-10.0-2.fc25.s390x
libmount-2.28.2-2.fc25.s390x
python3-decorator-4.0.11-1.fc25.noarch
tzdata-java-2017b-1.fc25.noarch
python-srpm-macros-3-12.fc25.noarch
libsmartcols-2.28.2-2.fc25.s390x
texlive-kpathsea-svn41139-33.fc25.1.noarch
texlive-amsmath-svn41561-33.fc25.1.noarch
texlive-thumbpdf-bin-svn6898.0-33.20160520.fc25.1.noarch
texlive-psnfss-svn33946.9.2a-33.fc25.1.noarch
texlive-subfig-svn15878.1.3-33.fc25.1.noarch
texlive-fancybox-svn18304.1.4-33.fc25.1.noarch
texlive-lua-alt-getopt-svn29349.0.7.0-33.fc25.1.noarch
texlive-natbib-svn20668.8.31b-33.fc25.1.noarch
texlive-pdftex-bin-svn40987-33.20160520.fc25.1.s390x
texlive-xdvi-svn40768-33.fc25.1.noarch
texlive-crop-svn15878.1.5-33.fc25.1.noarch
texlive-babel-english-svn30264.3.3p-33.fc25.1.noarch
texlive-cmextra-svn32831.0-33.fc25.1.noarch
texlive-fancyhdr-svn15878.3.1-33.fc25.1.noarch
texlive-luatex-svn40963-33.fc25.1.noarch
texlive-knuth-local-svn38627-33.fc25.1.noarch
texlive-mflogo-font-svn36898.1.002-33.fc25.1.noarch
texlive-parskip-svn19963.2.0-33.fc25.1.noarch
texlive-section-svn20180.0-33.fc25.1.noarch
texlive-textcase-svn15878.0-33.fc25.1.noarch
texlive-updmap-map-svn41159-33.fc25.1.noarch
texlive-attachfile-svn38830-33.fc25.1.noarch
libtiff-4.0.8-1.fc25.s390x
libdb-5.3.28-24.fc25.s390x
bind-license-9.10.5-2.P2.fc25.noarch
mesa-libGLES-17.0.5-3.fc25.s390x
python3-requests-kerberos-0.10.0-2.fc25.noarch
python3-pyOpenSSL-16.2.0-1.fc25.noarch
perl-threads-2.16-1.fc25.s390x
cryptsetup-libs-1.7.5-1.fc25.s390x
netpbm-10.79.00-1.fc25.s390x
qrencode-libs-3.4.4-1.fc25.s390x
gstreamer1-plugins-base-1.10.5-1.fc25.s390x
elfutils-default-yama-scope-0.169-1.fc25.noarch
systemd-udev-231-17.fc25.s390x
python2-koji-1.13.0-2.fc25.noarch
unbound-libs-1.6.3-1.fc25.s390x
openldap-2.4.44-11.fc25.s390x
koji-1.13.0-2.fc25.noarch
bind99-libs-9.9.10-2.P3.fc25.s390x
mesa-libGL-devel-17.0.5-3.fc25.s390x
graphite2-devel-1.3.10-1.fc25.s390x
systemtap-sdt-devel-3.1-5.fc25.s390x
iproute-tc-4.11.0-1.fc25.s390x
libarchive-3.2.2-2.fc25.s390x
publicsuffix-list-dafsa-20170424-1.fc25.noarch
expat-2.2.3-1.fc25.s390x
p11-kit-0.23.8-1.fc25.s390x
kernel-core-4.12.9-200.fc25.s390x
emacs-filesystem-25.2-3.fc25.noarch
ca-certificates-2017.2.16-1.0.fc25.noarch
librsvg2-2.40.18-1.fc25.s390x
gtk-update-icon-cache-3.22.17-2.fc25.s390x
libidn2-2.0.4-1.fc25.s390x
rpm-libs-4.13.0.1-2.fc25.s390x
mariadb-libs-10.1.25-1.fc25.s390x
java-1.8.0-openjdk-headless-1.8.0.144-5.b01.fc25.s390x
gcc-objc-6.4.1-1.fc25.s390x
p11-kit-devel-0.23.8-1.fc25.s390x
ethtool-4.11-1.fc25.s390x
python2-sssdconfig-1.15.3-1.fc25.noarch
xorg-x11-fonts-ISO8859-1-100dpi-7.5-16.fc24.noarch
lato-fonts-2.015-2.fc24.noarch
python-sphinx-locale-1.5.2-2.fc25.noarch
dpkg-1.17.27-1.fc25.s390x
gnutls-3.5.15-1.fc25.s390x
nss-softokn-freebl-devel-3.32.0-1.2.fc25.s390x
vim-filesystem-8.0.1030-1.fc25.s390x
gnutls-devel-3.5.15-1.fc25.s390x
kernel-headers-4.12.11-200.fc25.s390x
texlive-luaotfload-svn40902-33.fc25.1.noarch
texlive-unicode-math-svn38462-33.fc25.1.noarch
texlive-fancyvrb-svn18492.2.8-33.fc25.1.noarch
texlive-pst-pdf-bin-svn7838.0-33.20160520.fc25.1.noarch
texlive-amscls-svn36804.0-33.fc25.1.noarch
texlive-ltxmisc-svn21927.0-33.fc25.1.noarch
texlive-breqn-svn38099.0.98d-33.fc25.1.noarch
texlive-xetex-def-svn40327-33.fc25.1.noarch
openssh-server-7.4p1-4.fc25.s390x
sendmail-8.15.2-8.fc25.s390x
tzdata-2017b-1.fc25.noarch
hunspell-1.4.1-2.fc25.s390x
gpg-pubkey-8e1431d5-53bcbac7
zlib-1.2.8-10.fc24.s390x
sed-4.2.2-15.fc24.s390x
psmisc-22.21-8.fc24.s390x
gpm-libs-1.20.7-9.fc24.s390x
zip-3.0-16.fc24.s390x
libyubikey-1.13-2.fc24.s390x
sg3_utils-libs-1.41-3.fc24.s390x
polkit-pkla-compat-0.1-7.fc24.s390x
passwd-0.79-8.fc24.s390x
trousers-0.3.13-6.fc24.s390x
grubby-8.40-3.fc24.s390x
rootfiles-8.1-19.fc24.noarch
nettle-3.3-1.fc25.s390x
libksba-1.3.5-1.fc25.s390x
perl-Text-ParseWords-3.30-365.fc25.noarch
perl-PathTools-3.63-366.fc25.s390x
perl-File-Temp-0.23.04-365.fc25.noarch
fuse-libs-2.9.7-1.fc25.s390x
perl-Pod-Escapes-1.07-365.fc25.noarch
perl-Term-ANSIColor-4.05-2.fc25.noarch
perl-URI-1.71-5.fc25.noarch
libXfont-1.5.2-1.fc25.s390x
python-six-1.10.0-3.fc25.noarch
dbus-glib-0.108-1.fc25.s390x
gobject-introspection-1.50.0-1.fc25.s390x
libpwquality-1.3.0-6.fc25.s390x
python-gobject-base-3.22.0-1.fc25.s390x
python-html5lib-0.999-9.fc25.noarch
python3-dbus-1.2.4-2.fc25.s390x
python3-chardet-2.3.0-1.fc25.noarch
python3-urllib3-1.15.1-3.fc25.noarch
python-offtrac-0.1.0-7.fc25.noarch
python2-cryptography-1.5.3-3.fc25.s390x
python2-requests-kerberos-0.10.0-2.fc25.noarch
libserf-1.3.9-1.fc25.s390x
libdatrie-0.2.9-3.fc25.s390x
s390utils-base-1.36.0-1.fc25.s390x
kpartx-0.4.9-83.fc25.s390x
s390utils-cpuplugd-1.36.0-1.fc25.s390x
s390utils-osasnmpd-1.36.0-1.fc25.s390x
python-dnf-plugins-extras-common-0.0.12-4.fc25.noarch
fpc-srpm-macros-1.0-1.fc25.noarch
libuser-0.62-4.fc25.s390x
man-db-2.7.5-3.fc25.s390x
python-systemd-doc-232-1.fc25.s390x
bodhi-client-0.9.12.2-6.fc25.noarch
cairo-1.14.8-1.fc25.s390x
cracklib-dicts-2.9.6-4.fc25.s390x
libselinux-python3-2.5-13.fc25.s390x
python2-enchant-1.6.8-1.fc25.noarch
boost-iostreams-1.60.0-10.fc25.s390x
userspace-rcu-0.9.2-2.fc25.s390x
libXext-devel-1.3.3-4.fc24.s390x
libXrandr-devel-1.5.1-1.fc25.s390x
python3-lxml-3.7.2-1.fc25.s390x
libiscsi-1.15.0-2.fc24.s390x
fontconfig-devel-2.12.1-1.fc25.s390x
libfdt-devel-1.4.2-1.fc25.s390x
ceph-devel-compat-10.2.4-2.fc25.s390x
zlib-static-1.2.8-10.fc24.s390x
chrpath-0.16-3.fc24.s390x
info-6.1-4.fc25.s390x
iptables-libs-1.6.0-3.fc25.s390x
libfdisk-2.28.2-2.fc25.s390x
dnf-plugins-core-0.1.21-5.fc25.noarch
perl-Storable-2.56-368.fc25.s390x
python2-decorator-4.0.11-1.fc25.noarch
libnetfilter_conntrack-1.0.6-2.fc25.s390x
texlive-texlive.infra-bin-svn40312-33.20160520.fc25.1.s390x
texlive-ifluatex-svn41346-33.fc25.1.noarch
texlive-fp-svn15878.0-33.fc25.1.noarch
texlive-latex-fonts-svn28888.0-33.fc25.1.noarch
texlive-bibtex-bin-svn40473-33.20160520.fc25.1.s390x
texlive-glyphlist-svn28576.0-33.fc25.1.noarch
texlive-marvosym-svn29349.2.2a-33.fc25.1.noarch
texlive-tex-bin-svn40987-33.20160520.fc25.1.s390x
texlive-texconfig-svn40768-33.fc25.1.noarch
texlive-wasy2-ps-svn35830.0-33.fc25.1.noarch
texlive-psfrag-svn15878.3.04-33.fc25.1.noarch
texlive-charter-svn15878.0-33.fc25.1.noarch
texlive-ec-svn25033.1.0-33.fc25.1.noarch
texlive-lineno-svn21442.4.41-33.fc25.1.noarch
texlive-hyphen-base-svn41138-33.fc25.1.noarch
texlive-manfnt-font-svn35799.0-33.fc25.1.noarch
texlive-ncntrsbk-svn31835.0-33.fc25.1.noarch
texlive-pst-math-svn34786.0.63-33.fc25.1.noarch
texlive-symbol-svn31835.0-33.fc25.1.noarch
texlive-environ-svn33821.0.3-33.fc25.1.noarch
texlive-algorithms-svn38085.0.1-33.fc25.1.noarch
python3-hawkey-0.6.4-3.fc25.s390x
freetype-2.6.5-9.fc25.s390x
mesa-libwayland-egl-17.0.5-3.fc25.s390x
libicu-57.1-5.fc25.s390x
libnl3-cli-3.2.29-3.fc25.s390x
cups-libs-2.2.0-9.fc25.s390x
bind-libs-lite-9.10.5-2.P2.fc25.s390x
python3-kerberos-1.2.5-1.fc25.s390x
python3-cryptography-1.5.3-3.fc25.s390x
perl-IO-1.36-387.fc25.s390x
dhcp-libs-4.3.5-3.fc25.s390x
rsync-3.1.2-4.fc25.s390x
make-4.1-6.fc25.s390x
quota-4.03-8.fc25.s390x
libX11-devel-1.6.5-1.fc25.s390x
ghostscript-9.20-9.fc25.s390x
rpcbind-0.2.4-6.rc2.fc25.s390x
pyOpenSSL-16.2.0-1.fc25.noarch
python3-pycurl-7.43.0-6.fc25.s390x
bind99-license-9.9.10-2.P3.fc25.noarch
python-firewall-0.4.4.5-1.fc25.noarch
netpbm-progs-10.79.00-1.fc25.s390x
wget-1.18-3.fc25.s390x
libsemanage-2.5-9.fc25.s390x
telnet-0.17-68.fc25.s390x
gdk-pixbuf2-2.36.9-1.fc25.s390x
dbus-libs-1.11.16-1.fc25.s390x
glusterfs-client-xlators-3.10.5-1.fc25.s390x
libepoxy-1.4.3-1.fc25.1.s390x
dracut-046-2.git20170811.fc25.s390x
net-snmp-libs-5.7.3-15.fc25.s390x
libgo-devel-6.4.1-1.fc25.s390x
libglvnd-opengl-0.2.999-24.20170818git8d4d03f.fc25.s390x
sqlite-devel-3.14.2-3.fc25.s390x
cpp-6.4.1-1.fc25.s390x
git-2.9.5-1.fc25.s390x
pcre2-10.23-9.fc25.s390x
python2-GitPython-2.1.5-1.fc25.noarch
glusterfs-devel-3.10.5-1.fc25.s390x
net-snmp-5.7.3-15.fc25.s390x
rpm-plugin-systemd-inhibit-4.13.0.1-2.fc25.s390x
emacs-25.2-3.fc25.s390x
libstdc++-static-6.4.1-1.fc25.s390x
expat-devel-2.2.3-1.fc25.s390x
perl-Time-HiRes-1.9744-1.fc25.s390x
fontawesome-fonts-4.7.0-1.fc25.noarch
python-markupsafe-0.23-10.fc25.s390x
pytz-2016.6.1-1.fc25.noarch
python2-sphinx-1.5.2-2.fc25.noarch
nss-util-3.32.0-1.0.fc25.s390x
nss-sysinit-3.32.0-1.1.fc25.s390x
python3-3.5.4-1.fc25.s390x
selinux-policy-targeted-3.13.1-225.22.fc25.noarch
vim-minimal-8.0.1030-1.fc25.s390x
texlive-ifplatform-svn21156.0.4-33.fc25.1.noarch
texlive-eso-pic-svn37925.2.0g-33.fc25.1.noarch
texlive-xcolor-svn41044-33.fc25.1.noarch
texlive-pst-eps-svn15878.1.0-33.fc25.1.noarch
texlive-pst-text-svn15878.1.00-33.fc25.1.noarch
texlive-rotating-svn16832.2.16b-33.fc25.1.noarch
texlive-pdfpages-svn40638-33.fc25.1.noarch
texlive-cm-super-svn15878.0-33.fc25.1.noarch
texlive-xetex-svn41438-33.fc25.1.noarch
dnf-yum-1.1.10-6.fc25.noarch
libseccomp-devel-2.3.2-1.fc25.s390x
gpgme-1.8.0-10.fc25.s390x
apr-util-1.5.4-3.fc24.s390x
jbigkit-libs-2.1-5.fc24.s390x
pixman-0.34.0-2.fc24.s390x
dwz-0.12-2.fc24.s390x
expect-5.45-22.fc24.s390x
libsigsegv-2.10-10.fc24.s390x
fakeroot-libs-1.20.2-4.fc24.s390x
m17n-lib-1.7.0-5.fc24.s390x
libverto-0.2.6-6.fc24.s390x
libXmu-1.1.2-4.fc24.s390x
libXcursor-1.1.14-6.fc24.s390x
python-kitchen-1.2.4-2.fc24.noarch
fakeroot-1.20.2-4.fc24.s390x
blktrace-1.1.0-3.fc24.s390x
usermode-1.111-8.fc24.s390x
kbd-2.0.3-3.fc24.s390x
libaio-devel-0.3.110-6.fc24.s390x
web-assets-filesystem-5-4.fc24.noarch
libgpg-error-1.24-1.fc25.s390x
findutils-4.6.0-8.fc25.s390x
libassuan-2.4.3-1.fc25.s390x
libusbx-1.0.21-1.fc25.s390x
libxslt-1.1.28-13.fc25.s390x
libmetalink-0.1.3-1.fc25.s390x
perl-MIME-Base64-3.15-365.fc25.s390x
ncurses-6.0-6.20160709.fc25.s390x
libwayland-server-1.12.0-1.fc25.s390x
perl-Fedora-VSP-0.001-4.fc25.noarch
perl-libintl-perl-1.26-1.fc25.s390x
shadow-utils-4.2.1-11.fc25.s390x
atk-2.22.0-1.fc25.s390x
pam-1.3.0-1.fc25.s390x
harfbuzz-icu-1.3.2-1.fc25.s390x
libsecret-0.18.5-2.fc25.s390x
s390utils-iucvterm-1.36.0-1.fc25.s390x
python3-requests-2.10.0-4.fc25.noarch
pyusb-1.0.0-2.fc25.noarch
python-enum34-1.0.4-6.fc25.noarch
pyxattr-0.5.3-8.fc25.s390x
libbabeltrace-1.4.0-3.fc25.s390x
libthai-0.1.25-1.fc25.s390x
deltarpm-3.6-17.fc25.s390x
s390utils-mon_statd-1.36.0-1.fc25.s390x
device-mapper-multipath-0.4.9-83.fc25.s390x
python3-pygpgme-0.3-18.fc25.s390x
libreport-filesystem-2.8.0-1.fc25.s390x
ghc-srpm-macros-1.4.2-4.fc25.noarch
rpmdevtools-8.9-1.fc25.noarch
python-dnf-plugins-extras-migrate-0.0.12-4.fc25.noarch
perl-IO-Socket-SSL-2.038-1.fc25.noarch
perl-File-ShareDir-1.102-7.fc25.noarch
tcl-8.6.6-1.fc25.s390x
bzip2-1.0.6-21.fc25.s390x
libss-1.43.3-1.fc25.s390x
libselinux-utils-2.5-13.fc25.s390x
python3-enchant-1.6.8-1.fc25.noarch
python2-dockerfile-parse-0.0.5-7.fc25.noarch
systemd-bootchart-231-2.fc25.s390x
e2fsprogs-1.43.3-1.fc25.s390x
libpng-devel-1.6.27-1.fc25.s390x
perl-XML-Parser-2.44-5.fc25.s390x
lttng-ust-2.8.1-2.fc25.s390x
libXfixes-devel-5.0.3-1.fc25.s390x
libXcomposite-devel-0.4.4-8.fc24.s390x
python3-javapackages-4.7.0-6.1.fc25.noarch
libcephfs_jni-devel-10.2.4-2.fc25.s390x
keyutils-libs-devel-1.5.9-8.fc24.s390x
harfbuzz-devel-1.3.2-1.fc25.s390x
libidn-devel-1.33-1.fc25.s390x
libnfs-1.9.8-2.fc24.s390x
libssh2-devel-1.8.0-1.fc25.s390x
qemu-sanity-check-nodeps-1.1.5-5.fc24.s390x
alsa-lib-devel-1.1.1-2.fc25.s390x
libpsl-0.17.0-1.fc25.s390x
libseccomp-2.3.2-1.fc25.s390x
json-glib-1.2.6-1.fc25.s390x
python2-dnf-1.1.10-6.fc25.noarch
texlive-tetex-bin-svn36770.0-33.20160520.fc25.1.noarch
texlive-amsfonts-svn29208.3.04-33.fc25.1.noarch
texlive-babel-svn40706-33.fc25.1.noarch
texlive-colortbl-svn29803.v1.0a-33.fc25.1.noarch
texlive-babelbib-svn25245.1.31-33.fc25.1.noarch
texlive-footmisc-svn23330.5.5b-33.fc25.1.noarch
texlive-makeindex-svn40768-33.fc25.1.noarch
texlive-plain-svn40274-33.fc25.1.noarch
texlive-texconfig-bin-svn29741.0-33.20160520.fc25.1.noarch
texlive-zapfding-svn31835.0-33.fc25.1.noarch
texlive-microtype-svn41127-33.fc25.1.noarch
texlive-bookman-svn31835.0-33.fc25.1.noarch
texlive-dvisvgm-def-svn41011-33.fc25.1.noarch
texlive-finstrut-svn21719.0.5-33.fc25.1.noarch
texlive-hyph-utf8-svn41189-33.fc25.1.noarch
texlive-lualibs-svn40370-33.fc25.1.noarch
python2-hawkey-0.6.4-3.fc25.s390x
elfutils-libelf-0.169-1.fc25.s390x
libnl3-3.2.29-3.fc25.s390x
gstreamer1-1.10.5-1.fc25.s390x
polkit-libs-0.113-8.fc25.s390x
libtirpc-1.0.2-0.fc25.s390x
libteam-1.27-1.fc25.s390x
python3-pyasn1-0.2.3-1.fc25.noarch
perl-File-Path-2.12-366.fc25.noarch
mesa-libwayland-egl-devel-17.0.5-3.fc25.s390x
libacl-devel-2.2.52-13.fc25.s390x
lua-libs-5.3.4-3.fc25.s390x
quota-nls-4.03-8.fc25.noarch
ghostscript-x11-9.20-9.fc25.s390x
systemd-231-17.fc25.s390x
dhcp-common-4.3.5-3.fc25.noarch
vte291-devel-0.46.2-1.fc25.s390x
python-devel-2.7.13-2.fc25.s390x
elfutils-0.169-1.fc25.s390x
lua-5.3.4-3.fc25.s390x
python3-beautifulsoup4-4.6.0-1.fc25.noarch
libmicrohttpd-0.9.55-1.fc25.s390x
screen-4.6.1-1.fc25.s390x
strace-4.18-1.fc25.s390x
libstdc++-6.4.1-1.fc25.s390x
glusterfs-3.10.5-1.fc25.s390x
file-5.29-9.fc25.s390x
libgo-6.4.1-1.fc25.s390x
tar-1.29-4.fc25.s390x
subversion-libs-1.9.7-1.fc25.s390x
libglvnd-gles-0.2.999-24.20170818git8d4d03f.fc25.s390x
gdk-pixbuf2-modules-2.36.9-1.fc25.s390x
gcc-6.4.1-1.fc25.s390x
curl-7.51.0-9.fc25.s390x
pcre2-utf16-10.23-9.fc25.s390x
mariadb-config-10.1.25-1.fc25.s390x
distribution-gpg-keys-1.14-1.fc25.noarch
libcurl-devel-7.51.0-9.fc25.s390x
gtk3-devel-3.22.17-2.fc25.s390x
krb5-devel-1.14.4-8.fc25.s390x
wpa_supplicant-2.6-3.fc25.s390x
fontawesome-fonts-web-4.7.0-1.fc25.noarch
python2-pygments-2.2.0-7.fc25.noarch
python2-babel-2.3.4-2.fc25.noarch
doxygen-1.8.13-9.fc25.s390x
nspr-devel-4.16.0-1.fc25.s390x
kernel-core-4.12.11-200.fc25.s390x
rpmlint-1.10-3.fc25.noarch
vim-enhanced-8.0.1030-1.fc25.s390x
openjpeg2-2.2.0-3.fc25.s390x
texlive-mparhack-svn15878.1.4-33.fc25.1.noarch
texlive-pspicture-svn15878.0-33.fc25.1.noarch
texlive-soul-svn15878.2.4-33.fc25.1.noarch
texlive-trimspaces-svn15878.1.1-33.fc25.1.noarch
texlive-varwidth-svn24104.0.92-33.fc25.1.noarch
texlive-geometry-svn19716.5.6-33.fc25.1.noarch
texlive-memoir-svn41203-33.fc25.1.noarch
texlive-pgf-svn40966-33.fc25.1.noarch
texlive-pst-coil-svn37377.1.07-33.fc25.1.noarch
texlive-pst-plot-svn41242-33.fc25.1.noarch
texlive-latex-bin-svn41438-33.fc25.1.noarch
texlive-ucs-svn35853.2.2-33.fc25.1.noarch
texlive-ae-svn15878.1.4-33.fc25.1.noarch
texlive-xetex-bin-svn41091-33.20160520.fc25.1.s390x
fedora-upgrade-26.1-1.fc25.noarch
perl-Thread-Queue-3.12-1.fc25.noarch
cdparanoia-libs-10.2-21.fc24.s390x
ustr-1.0.4-21.fc24.s390x
libusb-0.1.5-7.fc24.s390x
readline-devel-6.3-8.fc24.s390x
chkconfig-1.8-1.fc25.s390x
avahi-libs-0.6.32-4.fc25.s390x
perl-Unicode-Normalize-1.25-365.fc25.s390x
perl-libnet-3.10-1.fc25.noarch
perl-podlators-4.09-1.fc25.noarch
dbus-python-1.2.4-2.fc25.s390x
libgnome-keyring-3.12.0-7.fc25.s390x
python-backports-1.0-8.fc25.s390x
python-pycparser-2.14-7.fc25.noarch
plymouth-scripts-0.9.3-0.6.20160620git0e65b86c.fc25.s390x
cronie-1.5.1-2.fc25.s390x
python2-librepo-1.7.18-3.fc25.s390x
libXv-1.0.11-1.fc25.s390x
python2-ndg_httpsclient-0.4.0-4.fc25.noarch
btrfs-progs-4.6.1-1.fc25.s390x
perl-Encode-2.88-5.fc25.s390x
cracklib-2.9.6-4.fc25.s390x
python3-dnf-plugin-system-upgrade-0.7.1-4.fc25.noarch
boost-random-1.60.0-10.fc25.s390x
libref_array-0.1.5-29.fc25.s390x
libXrender-devel-0.9.10-1.fc25.s390x
javapackages-tools-4.7.0-6.1.fc25.noarch
keyutils-1.5.9-8.fc24.s390x
libcom_err-devel-1.43.3-1.fc25.s390x
lzo-minilzo-2.08-8.fc24.s390x
libusbx-devel-1.0.21-1.fc25.s390x
virglrenderer-devel-0.5.0-1.20160411git61846f92f.fc25.s390x
acpica-tools-20160831-1.fc25.s390x
grep-2.27-2.fc25.s390x
dnf-conf-1.1.10-6.fc25.noarch
crypto-policies-20160921-4.gitf3018dd.fc25.noarch
libnfsidmap-0.27-1.fc25.s390x
SDL2-2.0.5-3.fc25.s390x
texlive-etex-pkg-svn39355-33.fc25.1.noarch
texlive-multido-svn18302.1.42-33.fc25.1.noarch
texlive-gsftopk-svn40768-33.fc25.1.noarch
texlive-pst-ovl-svn40873-33.fc25.1.noarch
texlive-ltabptch-svn17533.1.74d-33.fc25.1.noarch
texlive-cite-svn36428.5.5-33.fc25.1.noarch
texlive-fpl-svn15878.1.002-33.fc25.1.noarch
texlive-mathpazo-svn15878.1.003-33.fc25.1.noarch
texlive-rcs-svn15878.0-33.fc25.1.noarch
texlive-type1cm-svn21820.0-33.fc25.1.noarch
texlive-l3kernel-svn41246-33.fc25.1.noarch
texlive-hyperref-svn41396-33.fc25.1.noarch
texlive-pst-tree-svn24142.1.12-33.fc25.1.noarch
texlive-sansmathaccent-svn30187.0-33.fc25.1.noarch
texlive-dvipdfmx-bin-svn40273-33.20160520.fc25.1.s390x
texlive-zapfchan-svn31835.0-33.fc25.1.noarch
glib2-static-2.50.3-1.fc25.s390x
bash-completion-2.5-1.fc25.noarch
hyphen-2.8.8-4.fc24.s390x
python3-idna-2.5-1.fc25.noarch
less-481-7.fc25.s390x
rpmconf-base-1.0.19-1.fc25.noarch
gtk2-2.24.31-2.fc25.s390x
mesa-libgbm-17.0.5-3.fc25.s390x
nfs-utils-2.1.1-5.rc4.fc25.s390x
mc-4.8.19-5.fc25.s390x
pcre-static-8.41-1.fc25.s390x
bind-libs-9.10.5-2.P2.fc25.s390x
libproxy-0.4.15-2.fc25.s390x
file-libs-5.29-9.fc25.s390x
glibc-devel-2.24-10.fc25.s390x
glusterfs-server-3.10.5-1.fc25.s390x
git-core-doc-2.9.5-1.fc25.s390x
python2-smmap-2.0.3-1.fc25.noarch
glusterfs-api-devel-3.10.5-1.fc25.s390x
gcc-gdb-plugin-6.4.1-1.fc25.s390x
python3-magic-5.29-9.fc25.noarch
GeoIP-GeoLite-data-2017.07-1.fc25.noarch
python2-funcsigs-1.0.2-2.fc25.noarch
dos2unix-7.3.4-1.fc25.s390x
gnutls-c++-3.5.15-1.fc25.s390x
nss-tools-3.32.0-1.1.fc25.s390x
gpg-pubkey-a29cb19c-53bcbba6
m4-1.4.17-9.fc24.s390x
liblockfile-1.09-4.fc24.s390x
sg3_utils-1.41-3.fc24.s390x
libXinerama-1.1.3-6.fc24.s390x
libXft-2.3.2-4.fc24.s390x
tcp_wrappers-libs-7.6-83.fc25.s390x
perl-Text-Tabs+Wrap-2013.0523-365.fc25.noarch
perl-Error-0.17024-7.fc25.noarch
perl-Term-Cap-1.17-365.fc25.noarch
perl-Pod-Usage-1.69-1.fc25.noarch
device-mapper-persistent-data-0.6.3-1.fc25.s390x
python3-six-1.10.0-3.fc25.noarch
python3-pysocks-1.5.6-5.fc25.noarch
python-chardet-2.3.0-1.fc25.noarch
python2-cffi-1.7.0-2.fc25.s390x
gc-devel-7.4.4-1.fc25.s390x
plymouth-0.9.3-0.6.20160620git0e65b86c.fc25.s390x
ebtables-2.0.10-21.fc25.s390x
python3-librepo-1.7.18-3.fc25.s390x
at-spi2-atk-2.22.0-1.fc25.s390x
avahi-autoipd-0.6.32-4.fc25.s390x
pyparsing-2.1.10-1.fc25.noarch
python3-pyparsing-2.1.10-1.fc25.noarch
libcollection-0.7.0-29.fc25.s390x
libcephfs-devel-10.2.4-2.fc25.s390x
libXdamage-devel-1.1.4-8.fc24.s390x
libverto-devel-0.2.6-6.fc24.s390x
snappy-1.1.3-2.fc24.s390x
cairo-gobject-devel-1.14.8-1.fc25.s390x
cyrus-sasl-devel-2.1.26-26.2.fc24.s390x
libXi-1.7.9-1.fc25.s390x
texlive-base-2016-33.20160520.fc25.noarch
texlive-booktabs-svn40846-33.fc25.1.noarch
texlive-lm-svn28119.2.004-33.fc25.1.noarch
texlive-gsftopk-bin-svn40473-33.20160520.fc25.1.s390x
texlive-tex-svn40793-33.fc25.1.noarch
texlive-fancyref-svn15878.0.9c-33.fc25.1.noarch
texlive-chngcntr-svn17157.1.0a-33.fc25.1.noarch
texlive-fix2col-svn38770-33.fc25.1.noarch
texlive-marginnote-svn41382-33.fc25.1.noarch
texlive-pxfonts-svn15878.0-33.fc25.1.noarch
texlive-txfonts-svn15878.0-33.fc25.1.noarch
texlive-l3packages-svn41246-33.fc25.1.noarch
texlive-oberdiek-svn41346-33.fc25.1.noarch
texlive-pst-tools-svn34067.0.05-33.fc25.1.noarch
texlive-tex-gyre-svn18651.2.004-33.fc25.1.noarch
texlive-dvipdfmx-svn41149-33.fc25.1.noarch
texlive-collection-fontsrecommended-svn35830.0-33.20160520.fc25.1.noarch
libcacard-devel-2.5.3-1.fc25.s390x
ykpers-1.18.0-2.fc25.s390x
python2-idna-2.5-1.fc25.noarch
policycoreutils-2.5-20.fc25.s390x
libgcrypt-1.7.8-1.fc25.s390x
pcre-8.41-1.fc25.s390x
GeoIP-1.6.11-1.fc25.s390x
ghostscript-core-9.20-9.fc25.s390x
python3-cffi-1.7.0-2.fc25.s390x
json-c-0.12.1-2.fc25.s390x
vte291-0.46.2-1.fc25.s390x
gssproxy-0.7.0-9.fc25.s390x
systemtap-3.1-5.fc25.s390x
mesa-libgbm-devel-17.0.5-3.fc25.s390x
libgusb-0.2.10-1.fc25.s390x
kernel-modules-4.12.9-200.fc25.s390x
sqlite-3.14.2-3.fc25.s390x
perl-Git-2.9.5-1.fc25.noarch
python2-gitdb-2.0.2-1.fc25.noarch
libglvnd-devel-0.2.999-24.20170818git8d4d03f.fc25.s390x
gcc-c++-6.4.1-1.fc25.s390x
python-magic-5.29-9.fc25.noarch
kernel-devel-4.12.9-200.fc25.s390x
python2-mock-2.0.0-2.fc25.noarch
nspr-4.16.0-1.fc25.s390x
python3-libs-3.5.4-1.fc25.s390x
system-python-3.5.4-1.fc25.s390x
python-async-0.6.1-9.fc22.s390x
dejavu-sans-mono-fonts-2.35-3.fc24.noarch
popt-1.16-7.fc24.s390x
cyrus-sasl-lib-2.1.26-26.2.fc24.s390x
xz-5.2.2-2.fc24.s390x
libpipeline-1.4.1-2.fc24.s390x
pinentry-0.9.7-2.fc24.s390x
pth-2.0.7-27.fc24.s390x
libsepol-2.5-10.fc25.s390x
libxcb-1.12-1.fc25.s390x
perl-Getopt-Long-2.49.1-1.fc25.noarch
avahi-glib-0.6.32-4.fc25.s390x
python3-pip-8.1.2-2.fc25.noarch
python3-libcomps-0.1.7-5.fc25.s390x
python-slip-0.6.4-4.fc25.noarch
python2-libcomps-0.1.7-5.fc25.s390x
gc-7.4.4-1.fc25.s390x
s390utils-cmsfs-1.36.0-1.fc25.s390x
newt-python-0.52.19-2.fc25.s390x
qt5-srpm-macros-5.7.1-1.fc25.noarch
device-mapper-event-1.02.136-3.fc25.s390x
perl-Class-Inspector-1.31-2.fc25.noarch
libbasicobjects-0.1.1-29.fc25.s390x
libradosstriper1-10.2.4-2.fc25.s390x
libXxf86vm-devel-1.1.4-3.fc24.s390x
zziplib-0.13.62-7.fc24.s390x
libpaper-1.1.24-12.fc24.s390x
libini_config-1.3.0-29.fc25.s390x
snappy-devel-1.1.3-2.fc24.s390x
libcap-ng-devel-0.7.8-1.fc25.s390x
libxkbcommon-devel-0.7.1-1.fc25.s390x
openssl-libs-1.0.2k-1.fc25.s390x
util-linux-2.28.2-2.fc25.s390x
texlive-etoolbox-svn38031.2.2a-33.fc25.1.noarch
texlive-dvips-svn41149-33.fc25.1.noarch
texlive-latexconfig-svn40274-33.fc25.1.noarch
texlive-tex-ini-files-svn40533-33.fc25.1.noarch
texlive-qstest-svn15878.0-33.fc25.1.noarch
texlive-cmap-svn41168-33.fc25.1.noarch
texlive-luatex-bin-svn41091-33.20160520.fc25.1.s390x
texlive-mflogo-svn38628-33.fc25.1.noarch
texlive-sansmath-svn17997.1.1-33.fc25.1.noarch
texlive-unicode-data-svn39808-33.fc25.1.noarch
texlive-luaotfload-bin-svn34647.0-33.20160520.fc25.1.noarch
texlive-listings-svn37534.1.6-33.fc25.1.noarch
texlive-pstricks-svn41321-33.fc25.1.noarch
texlive-metalogo-svn18611.0.12-33.fc25.1.noarch
texlive-collection-latex-svn41011-33.20160520.fc25.1.noarch
python2-dnf-plugins-core-0.1.21-5.fc25.noarch
xkeyboard-config-2.20-2.fc25.noarch
perl-Test-Harness-3.39-1.fc25.noarch
systemd-libs-231-17.fc25.s390x
python3-pycparser-2.14-7.fc25.noarch
kernel-devel-4.11.10-200.fc25.s390x
gsm-1.0.17-1.fc25.s390x
python-2.7.13-2.fc25.s390x
kernel-4.11.10-200.fc25.s390x
rpmconf-1.0.19-1.fc25.noarch
teamd-1.27-1.fc25.s390x
jasper-libs-1.900.13-4.fc25.s390x
glusterfs-libs-3.10.5-1.fc25.s390x
libcrypt-nss-2.24-10.fc25.s390x
emacs-common-25.2-3.fc25.s390x
libcurl-7.51.0-9.fc25.s390x
java-1.8.0-openjdk-1.8.0.144-5.b01.fc25.s390x
gcc-go-6.4.1-1.fc25.s390x
perl-XML-XPath-1.39-2.fc25.noarch
python2-sphinx_rtd_theme-0.1.9-2.fc24.noarch
libxml2-devel-2.9.4-2.fc25.s390x
nss-softokn-devel-3.32.0-1.2.fc25.s390x
nss-devel-3.32.0-1.1.fc25.s390x
libattr-2.4.47-16.fc24.s390x
libvisual-0.4.0-20.fc24.s390x
libpcap-1.7.4-2.fc24.s390x
libutempter-1.1.6-8.fc24.s390x
libgudev-230-3.fc24.s390x
popt-devel-1.16-7.fc24.s390x
hicolor-icon-theme-0.15-3.fc24.noarch
setup-2.10.4-1.fc25.noarch
bash-4.3.43-4.fc25.s390x
libjpeg-turbo-1.5.1-0.fc25.s390x
perl-Socket-2.024-1.fc25.s390x
perl-HTTP-Tiny-0.070-1.fc25.noarch
ipset-6.29-1.fc25.s390x
python2-setuptools-25.1.1-1.fc25.noarch
gsettings-desktop-schemas-3.22.0-1.fc25.s390x
python3-setuptools-25.1.1-1.fc25.noarch
python-slip-dbus-0.6.4-4.fc25.noarch
python2-ply-3.8-2.fc25.noarch
dtc-1.4.2-1.fc25.s390x
guile-2.0.13-1.fc25.s390x
cronie-anacron-1.5.1-2.fc25.s390x
libXtst-1.2.3-1.fc25.s390x
iso-codes-3.70-1.fc25.noarch
s390utils-1.36.0-1.fc25.s390x
python-backports-ssl_match_hostname-3.5.0.1-3.fc25.noarch
fedora-cert-0.6.0.1-1.fc25.noarch
dnf-plugin-system-upgrade-0.7.1-4.fc25.noarch
lvm2-2.02.167-3.fc25.s390x
libselinux-devel-2.5-13.fc25.s390x
perl-Time-Local-1.250-1.fc25.noarch
libradosstriper-devel-10.2.4-2.fc25.s390x
flac-libs-1.3.2-1.fc25.s390x
perl-Digest-1.17-366.fc25.noarch
teckit-2.5.1-15.fc24.s390x
libpath_utils-0.2.1-29.fc25.s390x
attr-2.4.47-16.fc24.s390x
usbredir-0.7.1-2.fc24.s390x
cairo-devel-1.14.8-1.fc25.s390x
lzo-devel-2.08-8.fc24.s390x
libcap-devel-2.25-2.fc25.s390x
libbsd-0.8.3-1.fc25.s390x
texlive-url-svn32528.3.4-33.fc25.1.noarch
texlive-dvips-bin-svn40987-33.20160520.fc25.1.s390x
texlive-index-svn24099.4.1beta-33.fc25.1.noarch
texlive-setspace-svn24881.6.7a-33.fc25.1.noarch
texlive-mathtools-svn38833-33.fc25.1.noarch
texlive-cm-svn32865.0-33.fc25.1.noarch
texlive-graphics-def-svn41879-33.fc25.1.noarch
texlive-mdwtools-svn15878.1.05.4-33.fc25.1.noarch
texlive-rsfs-svn15878.0-33.fc25.1.noarch
texlive-ucharcat-svn38907-33.fc25.1.noarch
texlive-fontspec-svn41262-33.fc25.1.noarch
texlive-showexpl-svn32737.v0.3l-33.fc25.1.noarch
texlive-pstricks-add-svn40744-33.fc25.1.noarch
texlive-beamer-svn36461.3.36-33.fc25.1.noarch
texlive-collection-basic-svn41149-33.20160520.fc25.1.noarch
xemacs-filesystem-21.5.34-20.20170124hgf412e9f093d4.fc25.noarch
hawkey-0.6.4-3.fc25.s390x
bluez-libs-5.44-1.fc25.s390x
audit-libs-2.7.7-1.fc25.s390x
iproute-4.11.0-1.fc25.s390x
libICE-1.0.9-9.fc25.s390x
python3-ply-3.8-2.fc25.noarch
perl-5.24.2-387.fc25.s390x
graphite2-1.3.10-1.fc25.s390x
vte-profile-0.46.2-1.fc25.s390x
python-libs-2.7.13-2.fc25.s390x
mesa-libGL-17.0.5-3.fc25.s390x
python2-pycurl-7.43.0-6.fc25.s390x
NetworkManager-1.4.4-5.fc25.s390x
mesa-libEGL-devel-17.0.5-3.fc25.s390x
mesa-libGLES-devel-17.0.5-3.fc25.s390x
hostname-3.15-8.fc25.s390x
glibc-headers-2.24-10.fc25.s390x
glusterfs-cli-3.10.5-1.fc25.s390x
git-core-2.9.5-1.fc25.s390x
mock-1.4.3-1.fc25.noarch
gcc-gfortran-6.4.1-1.fc25.s390x
webkitgtk4-plugin-process-gtk2-2.16.6-1.fc25.s390x
perl-Module-CoreList-5.20170821-1.fc25.noarch
python2-pbr-1.10.0-1.fc25.noarch
libtool-2.4.6-14.fc25.s390x
gnutls-dane-3.5.15-1.fc25.s390x
kernel-4.12.11-200.fc25.s390x
gpg-pubkey-a0a7badb-52844296
readline-6.3-8.fc24.s390x
cpio-2.12-3.fc24.s390x
libXcomposite-0.4.4-8.fc24.s390x
procps-ng-3.3.10-11.fc24.s390x
GConf2-3.2.6-16.fc24.s390x
xz-devel-5.2.2-2.fc24.s390x
fedora-logos-22.0.0-3.fc24.s390x
gpg-pubkey-e372e838-56fd7943
kmod-libs-23-1.fc25.s390x
perl-parent-0.236-1.fc25.noarch
perl-TermReadKey-2.37-1.fc25.s390x
ncurses-c++-libs-6.0-6.20160709.fc25.s390x
gzip-1.8-1.fc25.s390x
python3-gobject-base-3.22.0-1.fc25.s390x
python2-yubico-1.3.2-3.fc25.noarch
s390utils-ziomon-1.36.0-1.fc25.s390x
librepo-1.7.18-3.fc25.s390x
gnat-srpm-macros-4-1.fc25.noarch
python-decoratortools-1.8-12.fc25.noarch
m17n-db-1.7.0-7.fc25.noarch
e2fsprogs-libs-1.43.3-1.fc25.s390x
libvorbis-1.3.5-1.fc25.s390x
npth-1.3-1.fc25.s390x
libcephfs1-10.2.4-2.fc25.s390x
wayland-devel-1.12.0-1.fc25.s390x
libxcb-devel-1.12-1.fc25.s390x
perl-encoding-2.19-5.fc25.s390x
python3-cssselect-0.9.2-1.fc25.noarch
gettext-libs-0.19.8.1-3.fc25.s390x
at-spi2-atk-devel-2.22.0-1.fc25.s390x
virglrenderer-0.5.0-1.20160411git61846f92f.fc25.s390x
pixman-devel-0.34.0-2.fc24.s390x
libnfs-devel-1.9.8-2.fc24.s390x
libblkid-2.28.2-2.fc25.s390x
glib2-devel-2.50.3-1.fc25.s390x
texlive-ifxetex-svn19685.0.5-33.fc25.1.noarch
texlive-caption-svn41409-33.fc25.1.noarch
texlive-float-svn15878.1.3d-33.fc25.1.noarch
texlive-pdftex-def-svn22653.0.06d-33.fc25.1.noarch
texlive-xdvi-bin-svn40750-33.20160520.fc25.1.s390x
texlive-beton-svn15878.0-33.fc25.1.noarch
texlive-filecontents-svn24250.1.3-33.fc25.1.noarch
texlive-lm-math-svn36915.1.959-33.fc25.1.noarch
texlive-pslatex-svn16416.0-33.fc25.1.noarch
texlive-times-svn35058.0-33.fc25.1.noarch
texlive-breakurl-svn29901.1.40-33.fc25.1.noarch
texlive-filehook-svn24280.0.5d-33.fc25.1.noarch
texlive-pst-pdf-svn31660.1.1v-33.fc25.1.noarch
texlive-seminar-svn34011.1.62-33.fc25.1.noarch
texlive-xetexconfig-svn41133-33.fc25.1.noarch
python-rpm-macros-3-12.fc25.noarch
nss-pem-1.0.3-3.fc25.s390x
at-spi2-core-2.22.1-1.fc25.s390x
perl-Scalar-List-Utils-1.48-1.fc25.s390x
libtasn1-devel-4.12-1.fc25.s390x
python3-koji-1.13.0-2.fc25.noarch
opus-1.1.5-1.fc25.s390x
elfutils-libs-0.169-1.fc25.s390x
kernel-core-4.11.10-200.fc25.s390x
systemd-container-231-17.fc25.s390x
sudo-1.8.20p2-1.fc25.s390x
libicu-devel-57.1-5.fc25.s390x
js-jquery-2.2.4-3.fc25.noarch
krb5-libs-1.14.4-8.fc25.s390x
apr-1.6.2-1.fc25.s390x
dbus-1.11.16-1.fc25.s390x
libdrm-2.4.82-1.fc25.s390x
pcre2-utf32-10.23-9.fc25.s390x
copy-jdk-configs-2.3-1.fc25.noarch
libdrm-devel-2.4.82-1.fc25.s390x
krb5-workstation-1.14.4-8.fc25.s390x
python3-sssdconfig-1.15.3-1.fc25.noarch
python2-docutils-0.13.1-3.fc25.noarch
graphviz-2.38.0-39.fc25.s390x
kernel-modules-4.12.11-200.fc25.s390x
fedpkg-1.29-3.fc25.noarch
=== TEST BEGIN ===
Using CC: /home/fam/bin/cc
Install prefix    /var/tmp/patchew-tester-tmp-lzr53l_5/src/install
BIOS directory    /var/tmp/patchew-tester-tmp-lzr53l_5/src/install/share/qemu
binary directory  /var/tmp/patchew-tester-tmp-lzr53l_5/src/install/bin
library directory /var/tmp/patchew-tester-tmp-lzr53l_5/src/install/lib
module directory  /var/tmp/patchew-tester-tmp-lzr53l_5/src/install/lib/qemu
libexec directory /var/tmp/patchew-tester-tmp-lzr53l_5/src/install/libexec
include directory /var/tmp/patchew-tester-tmp-lzr53l_5/src/install/include
config directory  /var/tmp/patchew-tester-tmp-lzr53l_5/src/install/etc
local state directory   /var/tmp/patchew-tester-tmp-lzr53l_5/src/install/var
Manual directory  /var/tmp/patchew-tester-tmp-lzr53l_5/src/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /var/tmp/patchew-tester-tmp-lzr53l_5/src
C compiler        /home/fam/bin/cc
Host C compiler   cc
C++ compiler      c++
Objective-C compiler /home/fam/bin/cc
ARFLAGS           rv
CFLAGS            -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -I/usr/include/pixman-1  -Werror -DHAS_LIBSSH2_SFTP_FSYNC -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -DNCURSES_WIDECHAR -D_GNU_SOURCE -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong -I/usr/include/p11-kit-1    -I/usr/include/libpng16 -I/usr/include/libdrm 
LDFLAGS           -Wl,--warn-common -m64 -g 
make              make
install           install
python            python -B
smbd              /usr/sbin/smbd
module support    no
host CPU          s390x
host big endian   yes
target list       aarch64-softmmu alpha-softmmu arm-softmmu cris-softmmu i386-softmmu lm32-softmmu m68k-softmmu microblazeel-softmmu microblaze-softmmu mips64el-softmmu mips64-softmmu mipsel-softmmu mips-softmmu moxie-softmmu nios2-softmmu or1k-softmmu ppc64-softmmu ppcemb-softmmu ppc-softmmu s390x-softmmu sh4eb-softmmu sh4-softmmu sparc64-softmmu sparc-softmmu tricore-softmmu unicore32-softmmu x86_64-softmmu xtensaeb-softmmu xtensa-softmmu aarch64-linux-user alpha-linux-user armeb-linux-user arm-linux-user cris-linux-user hppa-linux-user i386-linux-user m68k-linux-user microblazeel-linux-user microblaze-linux-user mips64el-linux-user mips64-linux-user mipsel-linux-user mips-linux-user mipsn32el-linux-user mipsn32-linux-user nios2-linux-user or1k-linux-user ppc64abi32-linux-user ppc64le-linux-user ppc64-linux-user ppc-linux-user s390x-linux-user sh4eb-linux-user sh4-linux-user sparc32plus-linux-user sparc64-linux-user sparc-linux-user tilegx-linux-user x86_64-linux-user
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
SDL support       yes (2.0.5)
GTK support       yes (3.22.17)
GTK GL support    yes
VTE support       yes (0.46.2)
TLS priority      NORMAL
GNUTLS support    yes
GNUTLS rnd        yes
libgcrypt         no
libgcrypt kdf     no
nettle            yes (3.3)
nettle kdf        yes
libtasn1          yes
curses support    yes
virgl support     yes
curl support      yes
mingw32 support   no
Audio drivers     oss
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    yes
Multipath support no
VNC support       yes
VNC SASL support  yes
VNC JPEG support  yes
VNC PNG support   yes
xen support       no
brlapi support    yes
bluez  support    yes
Documentation     yes
PIE               no
vde support       no
netmap support    no
Linux AIO support yes
ATTR/XATTR support yes
Install blobs     yes
KVM support       yes
HAX support       no
TCG support       yes
TCG debug enabled no
TCG interpreter   no
RDMA support      no
fdt support       yes
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
libcap-ng support yes
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends    log
spice support     no 
rbd support       yes
xfsctl support    no
smartcard support yes
libusb            yes
usb net redir     yes
OpenGL support    yes
OpenGL dmabufs    yes
libiscsi support  yes
libnfs support    yes
build guest agent yes
QGA VSS support   no
QGA w32 disk info no
QGA MSI support   no
seccomp support   yes
coroutine backend ucontext
coroutine pool    yes
debug stack usage no
crypto afalg      no
GlusterFS support yes
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   yes
TPM passthrough   no
QOM debugging     yes
Live block migration yes
lzo support       yes
snappy support    yes
bzip2 support     yes
NUMA host support no
tcmalloc support  no
jemalloc support  no
avx2 optimization no
replication support yes
VxHS block device no
  GEN     aarch64-softmmu/config-devices.mak.tmp
  GEN     alpha-softmmu/config-devices.mak.tmp
  GEN     cris-softmmu/config-devices.mak.tmp
  GEN     arm-softmmu/config-devices.mak.tmp
  GEN     cris-softmmu/config-devices.mak
  GEN     i386-softmmu/config-devices.mak.tmp
  GEN     alpha-softmmu/config-devices.mak
  GEN     arm-softmmu/config-devices.mak
  GEN     aarch64-softmmu/config-devices.mak
  GEN     i386-softmmu/config-devices.mak
  GEN     lm32-softmmu/config-devices.mak.tmp
  GEN     m68k-softmmu/config-devices.mak.tmp
  GEN     microblazeel-softmmu/config-devices.mak.tmp
  GEN     m68k-softmmu/config-devices.mak
  GEN     microblaze-softmmu/config-devices.mak.tmp
  GEN     mips64el-softmmu/config-devices.mak.tmp
  GEN     microblazeel-softmmu/config-devices.mak
  GEN     lm32-softmmu/config-devices.mak
  GEN     mips64-softmmu/config-devices.mak.tmp
  GEN     mipsel-softmmu/config-devices.mak.tmp
  GEN     microblaze-softmmu/config-devices.mak
  GEN     mips-softmmu/config-devices.mak.tmp
  GEN     mips64el-softmmu/config-devices.mak
  GEN     moxie-softmmu/config-devices.mak.tmp
  GEN     mips64-softmmu/config-devices.mak
  GEN     mipsel-softmmu/config-devices.mak
  GEN     nios2-softmmu/config-devices.mak.tmp
  GEN     or1k-softmmu/config-devices.mak.tmp
  GEN     moxie-softmmu/config-devices.mak
  GEN     or1k-softmmu/config-devices.mak
  GEN     ppc64-softmmu/config-devices.mak.tmp
  GEN     ppcemb-softmmu/config-devices.mak.tmp
  GEN     nios2-softmmu/config-devices.mak
  GEN     mips-softmmu/config-devices.mak
  GEN     s390x-softmmu/config-devices.mak.tmp
  GEN     ppc-softmmu/config-devices.mak.tmp
  GEN     s390x-softmmu/config-devices.mak
  GEN     sh4eb-softmmu/config-devices.mak.tmp
  GEN     ppc64-softmmu/config-devices.mak
  GEN     sh4-softmmu/config-devices.mak.tmp
  GEN     ppc-softmmu/config-devices.mak
  GEN     ppcemb-softmmu/config-devices.mak
  GEN     sparc64-softmmu/config-devices.mak.tmp
  GEN     sh4eb-softmmu/config-devices.mak
  GEN     sparc-softmmu/config-devices.mak.tmp
  GEN     tricore-softmmu/config-devices.mak.tmp
  GEN     sparc-softmmu/config-devices.mak
  GEN     tricore-softmmu/config-devices.mak
  GEN     unicore32-softmmu/config-devices.mak.tmp
  GEN     sh4-softmmu/config-devices.mak
  GEN     x86_64-softmmu/config-devices.mak.tmp
  GEN     sparc64-softmmu/config-devices.mak
  GEN     xtensaeb-softmmu/config-devices.mak.tmp
  GEN     xtensa-softmmu/config-devices.mak.tmp
  GEN     unicore32-softmmu/config-devices.mak
  GEN     aarch64-linux-user/config-devices.mak.tmp
  GEN     x86_64-softmmu/config-devices.mak
  GEN     xtensaeb-softmmu/config-devices.mak
  GEN     alpha-linux-user/config-devices.mak.tmp
  GEN     armeb-linux-user/config-devices.mak.tmp
  GEN     xtensa-softmmu/config-devices.mak
  GEN     alpha-linux-user/config-devices.mak
  GEN     aarch64-linux-user/config-devices.mak
  GEN     arm-linux-user/config-devices.mak.tmp
  GEN     cris-linux-user/config-devices.mak.tmp
  GEN     hppa-linux-user/config-devices.mak.tmp
  GEN     armeb-linux-user/config-devices.mak
  GEN     hppa-linux-user/config-devices.mak
  GEN     arm-linux-user/config-devices.mak
  GEN     i386-linux-user/config-devices.mak.tmp
  GEN     cris-linux-user/config-devices.mak
  GEN     microblazeel-linux-user/config-devices.mak.tmp
  GEN     m68k-linux-user/config-devices.mak.tmp
  GEN     microblaze-linux-user/config-devices.mak.tmp
  GEN     i386-linux-user/config-devices.mak
  GEN     microblazeel-linux-user/config-devices.mak
  GEN     m68k-linux-user/config-devices.mak
  GEN     mips64el-linux-user/config-devices.mak.tmp
  GEN     mips64-linux-user/config-devices.mak.tmp
  GEN     mipsel-linux-user/config-devices.mak.tmp
  GEN     microblaze-linux-user/config-devices.mak
  GEN     mips64el-linux-user/config-devices.mak
  GEN     mipsel-linux-user/config-devices.mak
  GEN     mips-linux-user/config-devices.mak.tmp
  GEN     mipsn32el-linux-user/config-devices.mak.tmp
  GEN     mipsn32-linux-user/config-devices.mak.tmp
  GEN     mipsn32-linux-user/config-devices.mak
  GEN     mips64-linux-user/config-devices.mak
  GEN     or1k-linux-user/config-devices.mak.tmp
  GEN     mipsn32el-linux-user/config-devices.mak
  GEN     nios2-linux-user/config-devices.mak.tmp
  GEN     mips-linux-user/config-devices.mak
  GEN     ppc64abi32-linux-user/config-devices.mak.tmp
  GEN     or1k-linux-user/config-devices.mak
  GEN     ppc64le-linux-user/config-devices.mak.tmp
  GEN     ppc64-linux-user/config-devices.mak.tmp
  GEN     nios2-linux-user/config-devices.mak
  GEN     ppc64abi32-linux-user/config-devices.mak
  GEN     ppc64le-linux-user/config-devices.mak
  GEN     s390x-linux-user/config-devices.mak.tmp
  GEN     sh4eb-linux-user/config-devices.mak.tmp
  GEN     ppc-linux-user/config-devices.mak.tmp
  GEN     ppc64-linux-user/config-devices.mak
  GEN     sh4-linux-user/config-devices.mak.tmp
  GEN     sh4eb-linux-user/config-devices.mak
  GEN     sh4-linux-user/config-devices.mak
  GEN     ppc-linux-user/config-devices.mak
  GEN     sparc32plus-linux-user/config-devices.mak.tmp
  GEN     s390x-linux-user/config-devices.mak
  GEN     sparc64-linux-user/config-devices.mak.tmp
  GEN     sparc-linux-user/config-devices.mak.tmp
  GEN     tilegx-linux-user/config-devices.mak.tmp
  GEN     sparc32plus-linux-user/config-devices.mak
  GEN     sparc64-linux-user/config-devices.mak
  GEN     sparc-linux-user/config-devices.mak
  GEN     x86_64-linux-user/config-devices.mak.tmp
  GEN     tilegx-linux-user/config-devices.mak
  GEN     config-host.h
  GEN     x86_64-linux-user/config-devices.mak
  GEN     qemu-options.def
  GEN     qmp-commands.h
  GEN     qapi-types.h
  GEN     qapi-visit.h
  GEN     qapi-event.h
  GEN     qapi-types.c
  GEN     qmp-marshal.c
  GEN     qapi-visit.c
  GEN     qapi-event.c
  GEN     qmp-introspect.h
  GEN     qmp-introspect.c
  GEN     trace/generated-tcg-tracers.h
  GEN     trace/generated-helpers-wrappers.h
  GEN     trace/generated-helpers.h
  GEN     trace/generated-helpers.c
  GEN     module_block.h
  GEN     tests/test-qapi-types.h
  GEN     tests/test-qapi-visit.h
  GEN     tests/test-qmp-commands.h
  GEN     tests/test-qapi-event.h
  GEN     tests/test-qmp-introspect.h
  GEN     trace-root.h
  GEN     util/trace.h
  GEN     crypto/trace.h
  GEN     io/trace.h
  GEN     migration/trace.h
  GEN     block/trace.h
  GEN     chardev/trace.h
  GEN     hw/block/trace.h
  GEN     hw/block/dataplane/trace.h
  GEN     hw/char/trace.h
  GEN     hw/intc/trace.h
  GEN     hw/net/trace.h
  GEN     hw/virtio/trace.h
  GEN     hw/audio/trace.h
  GEN     hw/misc/trace.h
  GEN     hw/scsi/trace.h
  GEN     hw/usb/trace.h
  GEN     hw/nvram/trace.h
  GEN     hw/display/trace.h
  GEN     hw/input/trace.h
  GEN     hw/dma/trace.h
  GEN     hw/timer/trace.h
  GEN     hw/sparc/trace.h
  GEN     hw/sd/trace.h
  GEN     hw/isa/trace.h
  GEN     hw/mem/trace.h
  GEN     hw/i386/xen/trace.h
  GEN     hw/i386/trace.h
  GEN     hw/9pfs/trace.h
  GEN     hw/ppc/trace.h
  GEN     hw/pci/trace.h
  GEN     hw/s390x/trace.h
  GEN     hw/vfio/trace.h
  GEN     hw/acpi/trace.h
  GEN     hw/arm/trace.h
  GEN     hw/alpha/trace.h
  GEN     hw/xen/trace.h
  GEN     hw/ide/trace.h
  GEN     ui/trace.h
  GEN     audio/trace.h
  GEN     net/trace.h
  GEN     target/arm/trace.h
  GEN     target/i386/trace.h
  GEN     target/mips/trace.h
  GEN     target/sparc/trace.h
  GEN     target/s390x/trace.h
  GEN     target/ppc/trace.h
  GEN     qom/trace.h
  GEN     linux-user/trace.h
  GEN     qapi/trace.h
  GEN     accel/kvm/trace.h
  GEN     accel/tcg/trace.h
  GEN     nbd/trace.h
  GEN     scsi/trace.h
  GEN     trace-root.c
  GEN     util/trace.c
  GEN     crypto/trace.c
  GEN     io/trace.c
  GEN     migration/trace.c
  GEN     chardev/trace.c
  GEN     block/trace.c
  GEN     hw/block/trace.c
  GEN     hw/block/dataplane/trace.c
  GEN     hw/char/trace.c
  GEN     hw/intc/trace.c
  GEN     hw/net/trace.c
  GEN     hw/virtio/trace.c
  GEN     hw/audio/trace.c
  GEN     hw/misc/trace.c
  GEN     hw/usb/trace.c
  GEN     hw/scsi/trace.c
  GEN     hw/nvram/trace.c
  GEN     hw/display/trace.c
  GEN     hw/input/trace.c
  GEN     hw/timer/trace.c
  GEN     hw/dma/trace.c
  GEN     hw/sparc/trace.c
  GEN     hw/sd/trace.c
  GEN     hw/isa/trace.c
  GEN     hw/mem/trace.c
  GEN     hw/i386/trace.c
  GEN     hw/i386/xen/trace.c
  GEN     hw/9pfs/trace.c
  GEN     hw/ppc/trace.c
  GEN     hw/pci/trace.c
  GEN     hw/s390x/trace.c
  GEN     hw/vfio/trace.c
  GEN     hw/acpi/trace.c
  GEN     hw/arm/trace.c
  GEN     hw/alpha/trace.c
  GEN     hw/xen/trace.c
  GEN     hw/ide/trace.c
  GEN     ui/trace.c
  GEN     audio/trace.c
  GEN     net/trace.c
  GEN     target/arm/trace.c
  GEN     target/i386/trace.c
  GEN     target/mips/trace.c
  GEN     target/sparc/trace.c
  GEN     target/s390x/trace.c
  GEN     target/ppc/trace.c
  GEN     qom/trace.c
  GEN     linux-user/trace.c
  GEN     qapi/trace.c
  GEN     accel/tcg/trace.c
  GEN     accel/kvm/trace.c
  GEN     nbd/trace.c
  GEN     scsi/trace.c
  GEN     config-all-devices.mak
  CC      tests/qemu-iotests/socket_scm_helper.o
  CC      qmp-introspect.o
  CC      qapi-visit.o
  CC      qapi-types.o
  CC      qapi-event.o
  CC      qapi/qapi-visit-core.o
  CC      qapi/qapi-dealloc-visitor.o
  CC      qapi/qobject-input-visitor.o
  CC      qapi/qobject-output-visitor.o
  CC      qapi/qmp-registry.o
  CC      qapi/qmp-dispatch.o
  CC      qapi/string-input-visitor.o
  CC      qapi/string-output-visitor.o
  CC      qapi/opts-visitor.o
  CC      qapi/qapi-clone-visitor.o
  CC      qapi/qapi-util.o
  CC      qapi/qmp-event.o
  CC      qobject/qnull.o
  CC      qobject/qnum.o
  CC      qobject/qstring.o
  CC      qobject/qdict.o
  CC      qobject/qlist.o
  CC      qobject/qbool.o
  CC      qobject/qlit.o
  CC      qobject/qjson.o
  CC      qobject/qobject.o
  CC      qobject/json-lexer.o
  CC      qobject/json-streamer.o
  CC      qobject/json-parser.o
  CC      trace/control.o
  CC      trace/qmp.o
  CC      util/osdep.o
  CC      util/cutils.o
  CC      util/unicode.o
  CC      util/qemu-timer-common.o
  CC      util/lockcnt.o
  CC      util/bufferiszero.o
  CC      util/aiocb.o
  CC      util/async.o
  CC      util/thread-pool.o
  CC      util/qemu-timer.o
  CC      util/main-loop.o
  CC      util/iohandler.o
  CC      util/aio-posix.o
  CC      util/compatfd.o
  CC      util/event_notifier-posix.o
  CC      util/mmap-alloc.o
  CC      util/oslib-posix.o
  CC      util/qemu-openpty.o
  CC      util/qemu-thread-posix.o
  CC      util/memfd.o
  CC      util/envlist.o
  CC      util/path.o
  CC      util/module.o
  CC      util/host-utils.o
  CC      util/bitmap.o
  CC      util/hbitmap.o
  CC      util/bitops.o
  CC      util/fifo8.o
  CC      util/acl.o
  CC      util/cacheinfo.o
  CC      util/error.o
  CC      util/id.o
  CC      util/qemu-error.o
  CC      util/iov.o
  CC      util/qemu-sockets.o
  CC      util/qemu-config.o
  CC      util/uri.o
  CC      util/notify.o
  CC      util/qemu-option.o
  CC      util/qemu-progress.o
  CC      util/keyval.o
  CC      util/hexdump.o
  CC      util/crc32c.o
  CC      util/uuid.o
  CC      util/throttle.o
  CC      util/getauxval.o
  CC      util/readline.o
  CC      util/rcu.o
  CC      util/qemu-coroutine.o
  CC      util/qemu-coroutine-lock.o
  CC      util/qemu-coroutine-io.o
  CC      util/qemu-coroutine-sleep.o
  CC      util/coroutine-ucontext.o
  CC      util/buffer.o
  CC      util/timed-average.o
  CC      util/base64.o
  CC      util/log.o
  CC      util/qdist.o
  CC      util/qht.o
  CC      util/range.o
  CC      util/stats64.o
  CC      util/systemd.o
  CC      trace-root.o
  CC      util/trace.o
  CC      crypto/trace.o
  CC      io/trace.o
  CC      migration/trace.o
  CC      block/trace.o
  CC      chardev/trace.o
  CC      hw/block/trace.o
  CC      hw/block/dataplane/trace.o
  CC      hw/char/trace.o
  CC      hw/intc/trace.o
  CC      hw/net/trace.o
  CC      hw/virtio/trace.o
  CC      hw/audio/trace.o
  CC      hw/misc/trace.o
  CC      hw/scsi/trace.o
  CC      hw/usb/trace.o
  CC      hw/nvram/trace.o
  CC      hw/display/trace.o
  CC      hw/input/trace.o
  CC      hw/timer/trace.o
  CC      hw/dma/trace.o
  CC      hw/sparc/trace.o
  CC      hw/sd/trace.o
  CC      hw/isa/trace.o
  CC      hw/mem/trace.o
  CC      hw/i386/trace.o
  CC      hw/i386/xen/trace.o
  CC      hw/9pfs/trace.o
  CC      hw/ppc/trace.o
  CC      hw/s390x/trace.o
  CC      hw/pci/trace.o
  CC      hw/vfio/trace.o
  CC      hw/acpi/trace.o
  CC      hw/arm/trace.o
  CC      hw/alpha/trace.o
  CC      hw/xen/trace.o
  CC      hw/ide/trace.o
  CC      ui/trace.o
  CC      audio/trace.o
  CC      net/trace.o
  CC      target/arm/trace.o
  CC      target/i386/trace.o
  CC      target/mips/trace.o
  CC      target/sparc/trace.o
  CC      target/s390x/trace.o
  CC      target/ppc/trace.o
  CC      qom/trace.o
  CC      linux-user/trace.o
  CC      qapi/trace.o
  CC      accel/tcg/trace.o
  CC      accel/kvm/trace.o
  CC      nbd/trace.o
  CC      scsi/trace.o
  CC      crypto/pbkdf-stub.o
  CC      stubs/arch-query-cpu-def.o
  CC      stubs/arch-query-cpu-model-expansion.o
  CC      stubs/arch-query-cpu-model-comparison.o
  CC      stubs/bdrv-next-monitor-owned.o
  CC      stubs/arch-query-cpu-model-baseline.o
  CC      stubs/blockdev-close-all-bdrv-states.o
  CC      stubs/blk-commit-all.o
  CC      stubs/clock-warp.o
  CC      stubs/cpu-get-clock.o
  CC      stubs/cpu-get-icount.o
  CC      stubs/dump.o
  CC      stubs/error-printf.o
  CC      stubs/fdset.o
  CC      stubs/gdbstub.o
  CC      stubs/get-vm-name.o
  CC      stubs/iothread.o
  CC      stubs/iothread-lock.o
  CC      stubs/is-daemonized.o
  CC      stubs/linux-aio.o
  CC      stubs/machine-init-done.o
  CC      stubs/change-state-handler.o
  CC      stubs/migr-blocker.o
  CC      stubs/monitor.o
  CC      stubs/notify-event.o
  CC      stubs/qtest.o
  CC      stubs/replay.o
  CC      stubs/runstate-check.o
  CC      stubs/slirp.o
  CC      stubs/set-fd-handler.o
  CC      stubs/sysbus.o
  CC      stubs/trace-control.o
  CC      stubs/uuid.o
  CC      stubs/vmstate.o
  CC      stubs/vm-stop.o
  CC      stubs/qmp_pc_dimm.o
  CC      stubs/target-monitor-defs.o
  CC      stubs/target-get-monitor-def.o
  CC      stubs/pc_madt_cpu_entry.o
  CC      stubs/vmgenid.o
  CC      stubs/xen-common.o
  CC      stubs/xen-hvm.o
  CC      stubs/pci-host-piix.o
  GEN     qemu-options.texi
  GEN     docs/version.texi
  GEN     qemu-monitor.texi
  GEN     qemu-img-cmds.texi
  GEN     qemu-monitor-info.texi
  GEN     qemu-img.1
  GEN     qemu-nbd.8
  GEN     qemu-ga.8
  GEN     docs/interop/qemu-qmp-qapi.texi
  GEN     docs/interop/qemu-ga-qapi.texi
  GEN     fsdev/virtfs-proxy-helper.1
  GEN     qga/qapi-generated/qga-qapi-types.h
  GEN     qga/qapi-generated/qga-qapi-visit.h
  GEN     qga/qapi-generated/qga-qmp-commands.h
  GEN     qga/qapi-generated/qga-qapi-types.c
  GEN     qga/qapi-generated/qga-qapi-visit.c
  GEN     qga/qapi-generated/qga-qmp-marshal.c
  CC      contrib/ivshmem-client/ivshmem-client.o
  CC      contrib/ivshmem-client/main.o
  CC      contrib/ivshmem-server/ivshmem-server.o
  CC      contrib/ivshmem-server/main.o
  CC      qemu-nbd.o
  CC      block.o
  CC      blockjob.o
  CC      qemu-io-cmds.o
  CC      replication.o
  CC      block/raw-format.o
  CC      block/qcow.o
  CC      block/vdi.o
  CC      block/vmdk.o
  CC      block/cloop.o
  CC      block/bochs.o
  CC      block/vpc.o
  CC      block/vvfat.o
  CC      block/dmg.o
  CC      block/qcow2.o
  CC      block/qcow2-refcount.o
  CC      block/qcow2-cluster.o
  CC      block/qcow2-snapshot.o
  CC      block/qcow2-cache.o
  CC      block/qcow2-bitmap.o
  CC      block/qed.o
  CC      block/qed-l2-cache.o
  CC      block/qed-table.o
  CC      block/qed-cluster.o
  CC      block/qed-check.o
  CC      block/vhdx.o
  CC      block/vhdx-endian.o
  CC      block/vhdx-log.o
  CC      block/quorum.o
  CC      block/parallels.o
  CC      block/blkdebug.o
  CC      block/blkverify.o
  CC      block/blkreplay.o
  CC      block/block-backend.o
  CC      block/snapshot.o
  CC      block/qapi.o
  CC      block/file-posix.o
  CC      block/linux-aio.o
  CC      block/mirror.o
  CC      block/null.o
  CC      block/commit.o
  CC      block/io.o
  CC      block/throttle-groups.o
  CC      block/nbd.o
  CC      block/nbd-client.o
  CC      block/sheepdog.o
  CC      block/iscsi-opts.o
  CC      block/accounting.o
  CC      block/dirty-bitmap.o
  CC      block/write-threshold.o
  CC      block/backup.o
  CC      block/replication.o
  CC      block/throttle.o
  CC      nbd/server.o
  CC      block/crypto.o
  CC      nbd/client.o
  CC      nbd/common.o
  CC      scsi/utils.o
  CC      scsi/pr-manager.o
  CC      scsi/pr-manager-helper.o
  CC      block/iscsi.o
  CC      block/nfs.o
  CC      block/curl.o
  CC      block/rbd.o
  CC      block/ssh.o
  CC      block/gluster.o
  CC      block/dmg-bz2.o
  CC      crypto/init.o
  CC      crypto/hash.o
  CC      crypto/hash-nettle.o
  CC      crypto/hmac.o
  CC      crypto/hmac-nettle.o
  CC      crypto/aes.o
  CC      crypto/desrfb.o
  CC      crypto/cipher.o
  CC      crypto/tlscreds.o
  CC      crypto/tlscredsanon.o
  CC      crypto/tlscredsx509.o
  CC      crypto/tlssession.o
  CC      crypto/secret.o
  CC      crypto/random-gnutls.o
  CC      crypto/pbkdf.o
  CC      crypto/pbkdf-nettle.o
  CC      crypto/ivgen-essiv.o
  CC      crypto/ivgen.o
  CC      crypto/ivgen-plain.o
  CC      crypto/ivgen-plain64.o
  CC      crypto/afsplit.o
  CC      crypto/xts.o
  CC      crypto/block.o
  CC      crypto/block-qcow.o
  CC      crypto/block-luks.o
  CC      io/channel.o
  CC      io/channel-buffer.o
  CC      io/channel-command.o
  CC      io/channel-file.o
  CC      io/channel-socket.o
  CC      io/channel-tls.o
  CC      io/channel-watch.o
  CC      io/channel-websock.o
  CC      io/channel-util.o
  CC      io/dns-resolver.o
  CC      io/task.o
  CC      qom/object.o
  CC      qom/container.o
  CC      qom/qom-qobject.o
  CC      qom/object_interfaces.o
  GEN     qemu-img-cmds.h
  CC      qemu-io.o
  CC      fsdev/virtfs-proxy-helper.o
  CC      fsdev/9p-iov-marshal.o
  CC      fsdev/9p-marshal.o
  CC      scsi/qemu-pr-helper.o
  CC      qemu-bridge-helper.o
  CC      blockdev.o
  CC      blockdev-nbd.o
  CC      bootdevice.o
  CC      iothread.o
  CC      qdev-monitor.o
  CC      device-hotplug.o
  CC      os-posix.o
  CC      bt-host.o
  CC      bt-vhci.o
  CC      dma-helpers.o
  CC      tpm.o
  CC      vl.o
  CC      qemu-seccomp.o
  CC      device_tree.o
  CC      qmp-marshal.o
  CC      qmp.o
  CC      hmp.o
  CC      cpus-common.o
  CC      audio/audio.o
  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
  CC      audio/sdlaudio.o
  CC      audio/ossaudio.o
  CC      audio/wavcapture.o
  CC      backends/rng.o
  CC      backends/rng-egd.o
  CC      backends/rng-random.o
  CC      backends/tpm.o
  CC      backends/hostmem.o
  CC      backends/hostmem-file.o
  CC      backends/hostmem-ram.o
  CC      backends/cryptodev.o
  CC      backends/cryptodev-builtin.o
  CC      block/stream.o
  CC      chardev/msmouse.o
  CC      chardev/wctablet.o
  CC      chardev/testdev.o
  CC      disas/alpha.o
  CC      chardev/baum.o
  CC      disas/arm.o
  CXX     disas/arm-a64.o
  CC      disas/cris.o
  CC      disas/hppa.o
  CC      disas/i386.o
  CC      disas/m68k.o
  CC      disas/microblaze.o
  CC      disas/mips.o
  CC      disas/nios2.o
  CC      disas/moxie.o
  CC      disas/s390.o
  CC      disas/ppc.o
  CC      disas/sh4.o
  CC      disas/sparc.o
  CC      disas/lm32.o
  CXX     disas/libvixl/vixl/utils.o
  CXX     disas/libvixl/vixl/compiler-intrinsics.o
  CXX     disas/libvixl/vixl/a64/instructions-a64.o
  CXX     disas/libvixl/vixl/a64/decoder-a64.o
  CXX     disas/libvixl/vixl/a64/disasm-a64.o
  CC      fsdev/qemu-fsdev.o
  CC      fsdev/qemu-fsdev-opts.o
  CC      fsdev/qemu-fsdev-throttle.o
  CC      fsdev/qemu-fsdev-dummy.o
  CC      hw/9pfs/9p-util.o
  CC      hw/9pfs/9p.o
  CC      hw/9pfs/9p-local.o
  CC      hw/9pfs/9p-xattr.o
  CC      hw/9pfs/9p-xattr-user.o
  CC      hw/9pfs/9p-posix-acl.o
  CC      hw/9pfs/coth.o
  CC      hw/9pfs/cofs.o
  CC      hw/9pfs/codir.o
  CC      hw/9pfs/cofile.o
  CC      hw/9pfs/coxattr.o
  CC      hw/9pfs/9p-synth.o
  CC      hw/9pfs/9p-handle.o
  CC      hw/9pfs/9p-proxy.o
  CC      hw/acpi/core.o
  CC      hw/acpi/piix4.o
  CC      hw/acpi/pcihp.o
  CC      hw/acpi/ich9.o
  CC      hw/acpi/tco.o
  CC      hw/acpi/cpu_hotplug.o
  CC      hw/acpi/memory_hotplug.o
  CC      hw/acpi/cpu.o
  CC      hw/acpi/nvdimm.o
  CC      hw/acpi/vmgenid.o
  CC      hw/acpi/acpi_interface.o
  CC      hw/acpi/bios-linker-loader.o
  CC      hw/acpi/aml-build.o
  CC      hw/acpi/ipmi.o
  CC      hw/acpi/acpi-stub.o
  CC      hw/acpi/ipmi-stub.o
  CC      hw/audio/sb16.o
  CC      hw/audio/es1370.o
  CC      hw/audio/ac97.o
  CC      hw/audio/fmopl.o
  CC      hw/audio/adlib.o
  CC      hw/audio/gus.o
  CC      hw/audio/gusemu_hal.o
  CC      hw/audio/gusemu_mixer.o
  CC      hw/audio/cs4231a.o
  CC      hw/audio/intel-hda.o
  CC      hw/audio/hda-codec.o
  CC      hw/audio/pcspk.o
  CC      hw/audio/wm8750.o
  CC      hw/audio/pl041.o
  CC      hw/audio/lm4549.o
  CC      hw/audio/cs4231.o
  CC      hw/audio/marvell_88w8618.o
  CC      hw/audio/soundhw.o
  CC      hw/audio/milkymist-ac97.o
  CC      hw/block/block.o
  CC      hw/block/cdrom.o
  CC      hw/block/hd-geometry.o
  CC      hw/block/fdc.o
  CC      hw/block/m25p80.o
  CC      hw/block/nand.o
  CC      hw/block/pflash_cfi01.o
  CC      hw/block/ecc.o
  CC      hw/block/pflash_cfi02.o
  CC      hw/block/onenand.o
  CC      hw/bt/core.o
  CC      hw/block/nvme.o
  CC      hw/bt/l2cap.o
  CC      hw/bt/sdp.o
  CC      hw/bt/hci.o
  CC      hw/bt/hid.o
  CC      hw/bt/hci-csr.o
  CC      hw/char/ipoctal232.o
  CC      hw/char/escc.o
  CC      hw/char/parallel.o
  CC      hw/char/pl011.o
  CC      hw/char/serial.o
  CC      hw/char/serial-isa.o
  CC      hw/char/serial-pci.o
  CC      hw/char/virtio-console.o
  CC      hw/char/xilinx_uartlite.o
  CC      hw/char/cadence_uart.o
  CC      hw/char/etraxfs_ser.o
  CC      hw/char/cmsdk-apb-uart.o
  CC      hw/char/grlib_apbuart.o
  CC      hw/char/debugcon.o
  CC      hw/char/imx_serial.o
  CC      hw/char/lm32_juart.o
  CC      hw/char/lm32_uart.o
  CC      hw/char/milkymist-uart.o
  CC      hw/char/sclpconsole.o
  CC      hw/char/sclpconsole-lm.o
  CC      hw/core/qdev.o
  CC      hw/core/qdev-properties.o
  CC      hw/core/bus.o
  CC      hw/core/reset.o
  CC      hw/core/fw-path-provider.o
  CC      hw/core/irq.o
  CC      hw/core/hotplug.o
  CC      hw/core/nmi.o
  CC      hw/core/empty_slot.o
  CC      hw/core/stream.o
  CC      hw/core/ptimer.o
  CC      hw/core/sysbus.o
  CC      hw/core/machine.o
  CC      hw/core/loader.o
  CC      hw/core/loader-fit.o
  CC      hw/core/qdev-properties-system.o
  CC      hw/core/register.o
  CC      hw/core/or-irq.o
  CC      hw/core/platform-bus.o
  CC      hw/cpu/core.o
  CC      hw/display/ads7846.o
  CC      hw/display/cirrus_vga.o
  CC      hw/display/g364fb.o
  CC      hw/display/jazz_led.o
  CC      hw/display/pl110.o
  CC      hw/display/ssd0303.o
  CC      hw/display/ssd0323.o
  CC      hw/display/vga-pci.o
  CC      hw/display/vga-isa.o
  CC      hw/display/vga-isa-mm.o
  CC      hw/display/vmware_vga.o
  CC      hw/display/blizzard.o
  CC      hw/display/exynos4210_fimd.o
  CC      hw/display/framebuffer.o
  CC      hw/display/milkymist-vgafb.o
  CC      hw/display/tc6393xb.o
  CC      hw/display/milkymist-tmu2.o
  CC      hw/dma/puv3_dma.o
  CC      hw/dma/rc4030.o
  CC      hw/dma/pl080.o
  CC      hw/dma/pl330.o
  CC      hw/dma/i82374.o
  CC      hw/dma/i8257.o
  CC      hw/dma/xilinx_axidma.o
  CC      hw/dma/xlnx-zynq-devcfg.o
  CC      hw/dma/etraxfs_dma.o
  CC      hw/dma/sparc32_dma.o
  CC      hw/dma/sun4m_iommu.o
  CC      hw/gpio/max7310.o
  CC      hw/gpio/pl061.o
  CC      hw/gpio/puv3_gpio.o
  CC      hw/gpio/zaurus.o
  CC      hw/gpio/mpc8xxx.o
  CC      hw/gpio/gpio_key.o
  CC      hw/i2c/core.o
  CC      hw/i2c/smbus.o
  CC      hw/i2c/smbus_eeprom.o
  CC      hw/i2c/i2c-ddc.o
  CC      hw/i2c/versatile_i2c.o
  CC      hw/i2c/smbus_ich9.o
  CC      hw/i2c/pm_smbus.o
  CC      hw/i2c/bitbang_i2c.o
  CC      hw/i2c/exynos4210_i2c.o
  CC      hw/i2c/imx_i2c.o
  CC      hw/i2c/aspeed_i2c.o
  CC      hw/ide/core.o
  CC      hw/ide/atapi.o
  CC      hw/ide/qdev.o
  CC      hw/ide/pci.o
  CC      hw/ide/isa.o
  CC      hw/ide/piix.o
  CC      hw/ide/cmd646.o
  CC      hw/ide/macio.o
  CC      hw/ide/via.o
  CC      hw/ide/mmio.o
  CC      hw/ide/microdrive.o
  CC      hw/ide/ahci.o
  CC      hw/ide/ich.o
  CC      hw/input/adb.o
  CC      hw/input/hid.o
  CC      hw/input/lm832x.o
  CC      hw/input/pckbd.o
  CC      hw/input/pl050.o
  CC      hw/input/ps2.o
  CC      hw/input/stellaris_input.o
  CC      hw/input/tsc2005.o
  CC      hw/input/vmmouse.o
  CC      hw/input/virtio-input.o
  CC      hw/input/virtio-input-hid.o
  CC      hw/input/virtio-input-host.o
  CC      hw/intc/heathrow_pic.o
  CC      hw/intc/i8259_common.o
  CC      hw/intc/pl190.o
  CC      hw/intc/i8259.o
  CC      hw/intc/puv3_intc.o
  CC      hw/intc/xilinx_intc.o
  CC      hw/intc/etraxfs_pic.o
  CC      hw/intc/imx_avic.o
  CC      hw/intc/lm32_pic.o
  CC      hw/intc/realview_gic.o
  CC      hw/intc/slavio_intctl.o
  CC      hw/intc/arm_gic_common.o
  CC      hw/intc/ioapic_common.o
  CC      hw/intc/arm_gic.o
  CC      hw/intc/arm_gicv2m.o
  CC      hw/intc/arm_gicv3_common.o
  CC      hw/intc/arm_gicv3.o
  CC      hw/intc/arm_gicv3_dist.o
  CC      hw/intc/arm_gicv3_redist.o
  CC      hw/intc/arm_gicv3_its_common.o
  CC      hw/intc/openpic.o
  CC      hw/intc/intc.o
  CC      hw/ipack/ipack.o
  CC      hw/ipack/tpci200.o
  CC      hw/ipmi/ipmi.o
  CC      hw/ipmi/ipmi_bmc_sim.o
  CC      hw/ipmi/ipmi_bmc_extern.o
  CC      hw/ipmi/isa_ipmi_kcs.o
  CC      hw/ipmi/isa_ipmi_bt.o
  CC      hw/isa/isa-bus.o
  CC      hw/isa/apm.o
  CC      hw/isa/i82378.o
  CC      hw/isa/pc87312.o
  CC      hw/isa/piix4.o
  CC      hw/isa/vt82c686.o
  CC      hw/mem/pc-dimm.o
  CC      hw/mem/nvdimm.o
  CC      hw/misc/applesmc.o
  CC      hw/misc/max111x.o
  CC      hw/misc/tmp105.o
  CC      hw/misc/tmp421.o
  CC      hw/misc/debugexit.o
  CC      hw/misc/sga.o
  CC      hw/misc/pc-testdev.o
  CC      hw/misc/pci-testdev.o
  CC      hw/misc/unimp.o
  CC      hw/misc/edu.o
  CC      hw/misc/arm_l2x0.o
  CC      hw/misc/arm_integrator_debug.o
  CC      hw/misc/a9scu.o
  CC      hw/misc/arm11scu.o
  CC      hw/misc/puv3_pm.o
  CC      hw/misc/macio/cuda.o
  CC      hw/misc/macio/macio.o
  CC      hw/misc/macio/mac_dbdma.o
  CC      hw/net/dp8393x.o
  CC      hw/net/ne2000.o
  CC      hw/net/eepro100.o
  CC      hw/net/pcnet-pci.o
  CC      hw/net/pcnet.o
  CC      hw/net/e1000.o
  CC      hw/net/e1000x_common.o
  CC      hw/net/net_tx_pkt.o
  CC      hw/net/net_rx_pkt.o
  CC      hw/net/e1000e_core.o
  CC      hw/net/e1000e.o
  CC      hw/net/rtl8139.o
  CC      hw/net/vmxnet3.o
  CC      hw/net/smc91c111.o
  CC      hw/net/lan9118.o
  CC      hw/net/ne2000-isa.o
  CC      hw/net/opencores_eth.o
  CC      hw/net/xgmac.o
  CC      hw/net/mipsnet.o
  CC      hw/net/xilinx_axienet.o
  CC      hw/net/allwinner_emac.o
  CC      hw/net/imx_fec.o
  CC      hw/net/cadence_gem.o
  CC      hw/net/stellaris_enet.o
  CC      hw/net/lance.o
  CC      hw/net/sunhme.o
  CC      hw/net/ftgmac100.o
  CC      hw/net/sungem.o
  CC      hw/net/rocker/rocker.o
  CC      hw/net/rocker/rocker_fp.o
  CC      hw/net/rocker/rocker_desc.o
  CC      hw/net/rocker/rocker_world.o
  CC      hw/net/rocker/rocker_of_dpa.o
  CC      hw/nvram/ds1225y.o
  CC      hw/nvram/eeprom93xx.o
  CC      hw/nvram/fw_cfg.o
  CC      hw/nvram/chrp_nvram.o
  CC      hw/nvram/mac_nvram.o
  CC      hw/pci-bridge/pci_bridge_dev.o
  CC      hw/pci-bridge/pcie_pci_bridge.o
  CC      hw/pci-bridge/pcie_root_port.o
  CC      hw/pci-bridge/gen_pcie_root_port.o
  CC      hw/pci-bridge/pci_expander_bridge.o
  CC      hw/pci-bridge/xio3130_upstream.o
  CC      hw/pci-bridge/xio3130_downstream.o
  CC      hw/pci-bridge/ioh3420.o
  CC      hw/pci-bridge/i82801b11.o
  CC      hw/pci-bridge/dec.o
  CC      hw/pci-host/prep.o
  CC      hw/pci-host/pam.o
  CC      hw/pci-host/grackle.o
  CC      hw/pci-host/uninorth.o
  CC      hw/pci-host/ppce500.o
  CC      hw/pci-host/versatile.o
  CC      hw/pci-host/apb.o
  CC      hw/pci-host/bonito.o
  CC      hw/pci-host/piix.o
  CC      hw/pci-host/q35.o
  CC      hw/pci-host/gpex.o
  CC      hw/pci-host/xilinx-pcie.o
  CC      hw/pci/pci.o
  CC      hw/pci/pci_bridge.o
  CC      hw/pci/msix.o
  CC      hw/pci/msi.o
  CC      hw/pci/shpc.o
  CC      hw/pci/slotid_cap.o
  CC      hw/pci/pci_host.o
  CC      hw/pci/pcie_host.o
  CC      hw/pci/pcie_aer.o
  CC      hw/pci/pcie.o
  CC      hw/pci/pcie_port.o
  CC      hw/pci/pci-stub.o
  CC      hw/pcmcia/pcmcia.o
  CC      hw/scsi/scsi-disk.o
  CC      hw/scsi/scsi-generic.o
  CC      hw/scsi/scsi-bus.o
  CC      hw/scsi/lsi53c895a.o
  CC      hw/scsi/mptsas.o
  CC      hw/scsi/mptconfig.o
  CC      hw/scsi/mptendian.o
  CC      hw/scsi/megasas.o
  CC      hw/scsi/vmw_pvscsi.o
  CC      hw/scsi/esp.o
  CC      hw/scsi/esp-pci.o
  CC      hw/sd/pl181.o
  CC      hw/sd/ssi-sd.o
  CC      hw/sd/sd.o
  CC      hw/sd/sdhci.o
  CC      hw/sd/core.o
  CC      hw/smbios/smbios.o
  CC      hw/smbios/smbios_type_38.o
  CC      hw/smbios/smbios-stub.o
  CC      hw/smbios/smbios_type_38-stub.o
  CC      hw/ssi/pl022.o
  CC      hw/ssi/ssi.o
  CC      hw/ssi/xilinx_spi.o
  CC      hw/ssi/xilinx_spips.o
  CC      hw/ssi/stm32f2xx_spi.o
  CC      hw/ssi/aspeed_smc.o
  CC      hw/ssi/mss-spi.o
  CC      hw/timer/arm_mptimer.o
  CC      hw/timer/arm_timer.o
  CC      hw/timer/armv7m_systick.o
  CC      hw/timer/a9gtimer.o
  CC      hw/timer/cadence_ttc.o
  CC      hw/timer/ds1338.o
  CC      hw/timer/hpet.o
  CC      hw/timer/i8254.o
  CC      hw/timer/i8254_common.o
  CC      hw/timer/m48t59.o
  CC      hw/timer/m48t59-isa.o
  CC      hw/timer/pl031.o
  CC      hw/timer/puv3_ost.o
  CC      hw/timer/twl92230.o
  CC      hw/timer/xilinx_timer.o
  CC      hw/timer/slavio_timer.o
  CC      hw/timer/etraxfs_timer.o
  CC      hw/timer/grlib_gptimer.o
  CC      hw/timer/imx_epit.o
  CC      hw/timer/imx_gpt.o
  CC      hw/timer/lm32_timer.o
  CC      hw/timer/stm32f2xx_timer.o
  CC      hw/timer/milkymist-sysctl.o
  CC      hw/timer/aspeed_timer.o
  CC      hw/timer/sun4v-rtc.o
  CC      hw/timer/cmsdk-apb-timer.o
  CC      hw/timer/mss-timer.o
  CC      hw/tpm/tpm_tis.o
  CC      hw/usb/core.o
  CC      hw/usb/combined-packet.o
  CC      hw/usb/bus.o
  CC      hw/usb/libhw.o
  CC      hw/usb/desc.o
  CC      hw/usb/desc-msos.o
  CC      hw/usb/hcd-uhci.o
  CC      hw/usb/hcd-ohci.o
  CC      hw/usb/hcd-ehci.o
  CC      hw/usb/hcd-ehci-pci.o
  CC      hw/usb/hcd-ehci-sysbus.o
  CC      hw/usb/hcd-xhci.o
  CC      hw/usb/hcd-xhci-nec.o
  CC      hw/usb/hcd-musb.o
  CC      hw/usb/dev-hub.o
  CC      hw/usb/dev-hid.o
  CC      hw/usb/dev-wacom.o
  CC      hw/usb/dev-storage.o
  CC      hw/usb/dev-uas.o
  CC      hw/usb/dev-audio.o
  CC      hw/usb/dev-serial.o
  CC      hw/usb/dev-network.o
  CC      hw/usb/dev-bluetooth.o
  CC      hw/usb/dev-smartcard-reader.o
  CC      hw/usb/ccid-card-passthru.o
  CC      hw/usb/dev-mtp.o
  CC      hw/usb/ccid-card-emulated.o
  CC      hw/usb/redirect.o
  CC      hw/usb/quirks.o
  CC      hw/usb/host-stub.o
  CC      hw/virtio/virtio-rng.o
  CC      hw/virtio/virtio-pci.o
  CC      hw/virtio/virtio-bus.o
  CC      hw/virtio/virtio-mmio.o
  CC      hw/virtio/vhost-stub.o
  CC      hw/watchdog/watchdog.o
  CC      hw/watchdog/wdt_i6300esb.o
  CC      hw/watchdog/wdt_ib700.o
  CC      hw/watchdog/wdt_diag288.o
  CC      hw/watchdog/wdt_aspeed.o
  CC      migration/migration.o
  CC      migration/fd.o
  CC      migration/socket.o
  CC      migration/exec.o
  CC      migration/tls.o
  CC      migration/channel.o
  CC      migration/savevm.o
  CC      migration/colo-comm.o
  CC      migration/colo.o
  CC      migration/colo-failover.o
  CC      migration/vmstate.o
  CC      migration/page_cache.o
  CC      migration/vmstate-types.o
  CC      migration/qemu-file.o
  CC      migration/global_state.o
  CC      migration/qemu-file-channel.o
  CC      migration/xbzrle.o
  CC      migration/postcopy-ram.o
  CC      migration/qjson.o
  CC      migration/block.o
  CC      net/net.o
  CC      net/queue.o
  CC      net/checksum.o
  CC      net/util.o
  CC      net/hub.o
  CC      net/socket.o
  CC      net/dump.o
  CC      net/eth.o
  CC      net/l2tpv3.o
  CC      net/vhost-user.o
  CC      net/slirp.o
  CC      net/filter.o
  CC      net/filter-buffer.o
  CC      net/filter-mirror.o
  CC      net/colo.o
  CC      net/colo-compare.o
  CC      net/filter-rewriter.o
  CC      net/filter-replay.o
  CC      net/tap.o
  CC      net/tap-linux.o
  CC      qom/cpu.o
  CC      replay/replay.o
  CC      replay/replay-internal.o
  CC      replay/replay-events.o
  CC      replay/replay-input.o
  CC      replay/replay-time.o
  CC      replay/replay-char.o
  CC      replay/replay-snapshot.o
  CC      replay/replay-net.o
  CC      replay/replay-audio.o
  CC      slirp/cksum.o
  CC      slirp/if.o
  CC      slirp/ip_icmp.o
  CC      slirp/ip6_icmp.o
  CC      slirp/ip6_input.o
  CC      slirp/ip6_output.o
  CC      slirp/ip_input.o
  CC      slirp/ip_output.o
  CC      slirp/dnssearch.o
  CC      slirp/dhcpv6.o
  CC      slirp/slirp.o
  CC      slirp/mbuf.o
  CC      slirp/misc.o
  CC      slirp/sbuf.o
  CC      slirp/socket.o
  CC      slirp/tcp_input.o
  CC      slirp/tcp_output.o
  CC      slirp/tcp_subr.o
  CC      slirp/tcp_timer.o
  CC      slirp/udp.o
  CC      slirp/udp6.o
  CC      slirp/bootp.o
  CC      slirp/tftp.o
  CC      slirp/ndp_table.o
  CC      slirp/arp_table.o
  CC      slirp/ncsi.o
  CC      ui/keymaps.o
  CC      ui/console.o
  CC      ui/cursor.o
  CC      ui/qemu-pixman.o
  CC      ui/input.o
  CC      ui/input-keymap.o
  CC      ui/input-legacy.o
  CC      ui/input-linux.o
  CC      ui/sdl2.o
  CC      ui/sdl2-input.o
  CC      ui/sdl2-2d.o
  CC      ui/sdl2-gl.o
  CC      ui/x_keymap.o
  CC      ui/curses.o
  CC      ui/vnc.o
  CC      ui/vnc-enc-zlib.o
  CC      ui/vnc-enc-hextile.o
  CC      ui/vnc-enc-tight.o
  CC      ui/vnc-palette.o
  CC      ui/vnc-enc-zrle.o
  CC      ui/vnc-auth-vencrypt.o
  CC      ui/vnc-auth-sasl.o
  CC      ui/vnc-ws.o
  CC      ui/vnc-jobs.o
  CC      ui/gtk.o
  CC      ui/shader.o
  VERT    ui/shader/texture-blit-vert.h
  FRAG    ui/shader/texture-blit-frag.h
  CC      ui/egl-helpers.o
/var/tmp/patchew-tester-tmp-lzr53l_5/src/ui/shader.c: In function ‘qemu_gl_create_compile_shader’:
/var/tmp/patchew-tester-tmp-lzr53l_5/src/ui/shader.c:88:9: error: implicit declaration of function ‘error_report’ [-Werror=implicit-function-declaration]
         error_report("%s: compile %s error: %s", __func__,
         ^~~~~~~~~~~~
/var/tmp/patchew-tester-tmp-lzr53l_5/src/ui/shader.c:88:9: error: nested extern declaration of ‘error_report’ [-Werror=nested-externs]
cc1: all warnings being treated as errors
/var/tmp/patchew-tester-tmp-lzr53l_5/src/rules.mak:66: recipe for target 'ui/shader.o' failed
make: *** [ui/shader.o] Error 1
make: *** Waiting for unfinished jobs....
=== OUTPUT END ===

Test command exited with code: 2


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 0/8]  Remove some of the fprintf(stderr, "*
  2017-09-26  0:08 [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* Alistair Francis
                   ` (8 preceding siblings ...)
  2017-09-26  0:27 ` [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* no-reply
@ 2017-09-26  0:42 ` no-reply
  2017-09-26  9:05 ` Stefan Hajnoczi
  10 siblings, 0 replies; 35+ messages in thread
From: no-reply @ 2017-09-26  0:42 UTC (permalink / raw)
  To: alistair.francis; +Cc: famz, qemu-devel, alistair23, armbru

Hi,

This series failed automatic build test. Please find the testing commands and
their output below. If you have docker installed, you can probably reproduce it
locally.

Type: series
Message-id: cover.1506384414.git.alistair.francis@xilinx.com
Subject: [Qemu-devel] [PATCH v1 0/8]  Remove some of the fprintf(stderr, "*

=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=8
time make docker-test-quick@centos6
time make docker-test-build@min-glib
time make docker-test-mingw@fedora
time make docker-test-block@fedora
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 t [tag update]            patchew/20170913160333.23622-1-eblake@redhat.com -> patchew/20170913160333.23622-1-eblake@redhat.com
 t [tag update]            patchew/20170919150313.10833-1-richard.henderson@linaro.org -> patchew/20170919150313.10833-1-richard.henderson@linaro.org
 t [tag update]            patchew/20170925082913.22089-1-famz@redhat.com -> patchew/20170925082913.22089-1-famz@redhat.com
 * [new tag]               patchew/cover.1506384414.git.alistair.francis@xilinx.com -> patchew/cover.1506384414.git.alistair.francis@xilinx.com
Switched to a new branch 'test'
8d5b2ea39b target: Replace fprintf(stderr, "*\n" with error_report()
d8106c795e tcg: Replace fprintf(stderr, "*\n" with error_report()
ce4a0a7d95 ui: Replace fprintf(stderr, "*\n" with error_report()
05fbef23a5 util: Replace fprintf(stderr, "*\n" with error_report()
79f557c4f7 block: Replace fprintf(stderr, "*\n" with error_report()
b6097a9830 hw: Replace fprintf(stderr, "*\n" with error_report()
2149242c5e tests: Replace fprintf(stderr, "*\n" with error_report()
e646215e77 Replace all occurances of __FUNCTION__ with __func__

=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-wtm44c4r/src/dtc'...
Submodule path 'dtc': checked out '558cd81bdd432769b59bff01240c44f82cfb1a9d'
  BUILD   centos6
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-wtm44c4r/src'
  GEN     docker-src.2017-09-25-20.24.32.4356/qemu.tar
  COPY    RUNNER
    RUN test-quick in qemu:centos6 
Packages installed:
SDL-devel-1.2.14-7.el6_7.1.x86_64
bison-2.4.1-5.el6.x86_64
bzip2-devel-1.0.5-7.el6_0.x86_64
ccache-3.1.6-2.el6.x86_64
csnappy-devel-0-6.20150729gitd7bc683.el6.x86_64
flex-2.5.35-9.el6.x86_64
gcc-4.4.7-18.el6.x86_64
git-1.7.1-8.el6.x86_64
glib2-devel-2.28.8-9.el6.x86_64
libepoxy-devel-1.2-3.el6.x86_64
libfdt-devel-1.4.0-1.el6.x86_64
librdmacm-devel-1.0.21-0.el6.x86_64
lzo-devel-2.03-3.1.el6_5.1.x86_64
make-3.81-23.el6.x86_64
mesa-libEGL-devel-11.0.7-4.el6.x86_64
mesa-libgbm-devel-11.0.7-4.el6.x86_64
package g++ is not installed
pixman-devel-0.32.8-1.el6.x86_64
spice-glib-devel-0.26-8.el6.x86_64
spice-server-devel-0.12.4-16.el6.x86_64
tar-1.23-15.el6_8.x86_64
vte-devel-0.25.1-9.el6.x86_64
xen-devel-4.6.3-15.el6.x86_64
zlib-devel-1.2.3-29.el6.x86_64

Environment variables:
PACKAGES=bison     bzip2-devel     ccache     csnappy-devel     flex     g++     gcc     git     glib2-devel     libepoxy-devel     libfdt-devel     librdmacm-devel     lzo-devel     make     mesa-libEGL-devel     mesa-libgbm-devel     pixman-devel     SDL-devel     spice-glib-devel     spice-server-devel     tar     vte-devel     xen-devel     zlib-devel
HOSTNAME=066a7ca4dad6
TERM=xterm
MAKEFLAGS= -j8
HISTSIZE=1000
J=8
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
LANG=en_US.UTF-8
TARGET_LIST=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
DEBUG=
G_BROKEN_FILENAMES=1
CCACHE_HASHDIR=
_=/usr/bin/env

Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/tmp/qemu-test/install
No C++ compiler available; disabling C++ specific optional code
Install prefix    /tmp/qemu-test/install
BIOS directory    /tmp/qemu-test/install/share/qemu
binary directory  /tmp/qemu-test/install/bin
library directory /tmp/qemu-test/install/lib
module directory  /tmp/qemu-test/install/lib/qemu
libexec directory /tmp/qemu-test/install/libexec
include directory /tmp/qemu-test/install/include
config directory  /tmp/qemu-test/install/etc
local state directory   /tmp/qemu-test/install/var
Manual directory  /tmp/qemu-test/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /tmp/qemu-test/src
C compiler        cc
Host C compiler   cc
C++ compiler      
Objective-C compiler cc
ARFLAGS           rv
CFLAGS            -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -I/usr/include/pixman-1   -I$(SRC_PATH)/dtc/libfdt -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include   -DNCURSES_WIDECHAR   -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all  -I/usr/include/libpng12   -I/usr/include/libdrm     -I/usr/include/spice-server -I/usr/include/cacard -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/spice-1  
LDFLAGS           -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g 
make              make
install           install
python            python -B
smbd              /usr/sbin/smbd
module support    no
host CPU          x86_64
host big endian   no
target list       x86_64-softmmu aarch64-softmmu
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
SDL support       yes (1.2.14)
GTK support       yes (2.24.23)
GTK GL support    no
VTE support       yes (0.25.1)
TLS priority      NORMAL
GNUTLS support    no
GNUTLS rnd        no
libgcrypt         no
libgcrypt kdf     no
nettle            no 
nettle kdf        no
libtasn1          no
curses support    yes
virgl support     no
curl support      no
mingw32 support   no
Audio drivers     oss
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    no
Multipath support no
VNC support       yes
VNC SASL support  no
VNC JPEG support  yes
VNC PNG support   yes
xen support       yes
xen ctrl version  40600
pv dom build      no
brlapi support    no
bluez  support    no
Documentation     no
PIE               yes
vde support       no
netmap support    no
Linux AIO support no
ATTR/XATTR support yes
Install blobs     yes
KVM support       yes
HAX support       no
TCG support       yes
TCG debug enabled no
TCG interpreter   no
RDMA support      yes
fdt support       yes
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends    log
spice support     yes (0.12.6/0.12.4)
rbd support       no
xfsctl support    no
smartcard support yes
libusb            no
usb net redir     no
OpenGL support    yes
OpenGL dmabufs    no
libiscsi support  no
libnfs support    no
build guest agent yes
QGA VSS support   no
QGA w32 disk info no
QGA MSI support   no
seccomp support   no
coroutine backend ucontext
coroutine pool    yes
debug stack usage no
crypto afalg      no
GlusterFS support no
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   no
TPM passthrough   yes
QOM debugging     yes
Live block migration yes
lzo support       yes
snappy support    no
bzip2 support     yes
NUMA host support no
tcmalloc support  no
jemalloc support  no
avx2 optimization no
replication support yes
VxHS block device no
mkdir -p dtc/libfdt
mkdir -p dtc/tests
  GEN     x86_64-softmmu/config-devices.mak.tmp
  GEN     aarch64-softmmu/config-devices.mak.tmp
  GEN     config-host.h
  GEN     qemu-options.def
  GEN     qapi-visit.h
  GEN     qmp-commands.h
  GEN     qapi-types.h
  GEN     qapi-event.h
  GEN     x86_64-softmmu/config-devices.mak
  GEN     qmp-marshal.c
  GEN     aarch64-softmmu/config-devices.mak
  GEN     qapi-types.c
  GEN     qapi-visit.c
  GEN     qapi-event.c
  GEN     qmp-introspect.h
  GEN     qmp-introspect.c
  GEN     trace/generated-tcg-tracers.h
  GEN     trace/generated-helpers-wrappers.h
  GEN     trace/generated-helpers.h
  GEN     trace/generated-helpers.c
  GEN     module_block.h
  GEN     tests/test-qapi-types.h
  GEN     tests/test-qapi-visit.h
  GEN     tests/test-qmp-commands.h
  GEN     tests/test-qapi-event.h
  GEN     tests/test-qmp-introspect.h
  GEN     trace-root.h
  GEN     util/trace.h
  GEN     crypto/trace.h
  GEN     io/trace.h
  GEN     migration/trace.h
  GEN     block/trace.h
  GEN     chardev/trace.h
  GEN     hw/block/trace.h
  GEN     hw/block/dataplane/trace.h
  GEN     hw/char/trace.h
  GEN     hw/intc/trace.h
  GEN     hw/net/trace.h
  GEN     hw/virtio/trace.h
  GEN     hw/audio/trace.h
  GEN     hw/misc/trace.h
  GEN     hw/usb/trace.h
  GEN     hw/scsi/trace.h
  GEN     hw/nvram/trace.h
  GEN     hw/display/trace.h
  GEN     hw/input/trace.h
  GEN     hw/timer/trace.h
  GEN     hw/dma/trace.h
  GEN     hw/sparc/trace.h
  GEN     hw/sd/trace.h
  GEN     hw/isa/trace.h
  GEN     hw/mem/trace.h
  GEN     hw/i386/trace.h
  GEN     hw/i386/xen/trace.h
  GEN     hw/9pfs/trace.h
  GEN     hw/ppc/trace.h
  GEN     hw/pci/trace.h
  GEN     hw/s390x/trace.h
  GEN     hw/vfio/trace.h
  GEN     hw/acpi/trace.h
  GEN     hw/arm/trace.h
  GEN     hw/alpha/trace.h
  GEN     hw/xen/trace.h
  GEN     hw/ide/trace.h
  GEN     ui/trace.h
  GEN     audio/trace.h
  GEN     net/trace.h
  GEN     target/arm/trace.h
  GEN     target/i386/trace.h
  GEN     target/mips/trace.h
  GEN     target/sparc/trace.h
  GEN     target/s390x/trace.h
  GEN     target/ppc/trace.h
  GEN     qom/trace.h
  GEN     linux-user/trace.h
  GEN     qapi/trace.h
  GEN     accel/tcg/trace.h
  GEN     accel/kvm/trace.h
  GEN     nbd/trace.h
  GEN     scsi/trace.h
  GEN     trace-root.c
  GEN     util/trace.c
  GEN     crypto/trace.c
  GEN     io/trace.c
  GEN     migration/trace.c
  GEN     block/trace.c
  GEN     chardev/trace.c
  GEN     hw/block/trace.c
  GEN     hw/block/dataplane/trace.c
  GEN     hw/char/trace.c
  GEN     hw/intc/trace.c
  GEN     hw/net/trace.c
  GEN     hw/virtio/trace.c
  GEN     hw/audio/trace.c
  GEN     hw/misc/trace.c
  GEN     hw/usb/trace.c
  GEN     hw/scsi/trace.c
  GEN     hw/nvram/trace.c
  GEN     hw/display/trace.c
  GEN     hw/input/trace.c
  GEN     hw/timer/trace.c
  GEN     hw/dma/trace.c
  GEN     hw/sparc/trace.c
  GEN     hw/sd/trace.c
  GEN     hw/isa/trace.c
  GEN     hw/mem/trace.c
  GEN     hw/i386/trace.c
  GEN     hw/i386/xen/trace.c
  GEN     hw/9pfs/trace.c
  GEN     hw/ppc/trace.c
  GEN     hw/pci/trace.c
  GEN     hw/s390x/trace.c
  GEN     hw/vfio/trace.c
  GEN     hw/acpi/trace.c
  GEN     hw/arm/trace.c
  GEN     hw/alpha/trace.c
  GEN     hw/xen/trace.c
  GEN     hw/ide/trace.c
  GEN     ui/trace.c
  GEN     audio/trace.c
  GEN     net/trace.c
  GEN     target/arm/trace.c
  GEN     target/i386/trace.c
  GEN     target/mips/trace.c
  GEN     target/sparc/trace.c
  GEN     target/s390x/trace.c
  GEN     target/ppc/trace.c
  GEN     qom/trace.c
  GEN     linux-user/trace.c
  GEN     qapi/trace.c
  GEN     accel/tcg/trace.c
  GEN     accel/kvm/trace.c
  GEN     nbd/trace.c
  GEN     config-all-devices.mak
  GEN     scsi/trace.c
	 DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
	 DEP /tmp/qemu-test/src/dtc/tests/trees.S
	 DEP /tmp/qemu-test/src/dtc/tests/testutils.c
	 DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
	 DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
	 DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/check_path.c
	 DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
	 DEP /tmp/qemu-test/src/dtc/tests/overlay.c
	 DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
	 DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
	 DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
	 DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
	 DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
	 DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
	 DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
	 DEP /tmp/qemu-test/src/dtc/tests/incbin.c
	 DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
	 DEP /tmp/qemu-test/src/dtc/tests/path-references.c
	 DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
	 DEP /tmp/qemu-test/src/dtc/tests/references.c
	 DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
	 DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
	 DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
	 DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
	 DEP /tmp/qemu-test/src/dtc/tests/del_node.c
	 DEP /tmp/qemu-test/src/dtc/tests/del_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/setprop.c
	 DEP /tmp/qemu-test/src/dtc/tests/set_name.c
	 DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
	 DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
	 DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
	 DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
	 DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
	 DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
	 DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
	 DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
	 DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
	 DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
	 DEP /tmp/qemu-test/src/dtc/tests/notfound.c
	 DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
	 DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
	 DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_path.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_name.c
	 DEP /tmp/qemu-test/src/dtc/tests/getprop.c
	 DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/find_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/root_node.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
	 DEP /tmp/qemu-test/src/dtc/util.c
	 DEP /tmp/qemu-test/src/dtc/fdtput.c
	 DEP /tmp/qemu-test/src/dtc/fdtget.c
	 DEP /tmp/qemu-test/src/dtc/fdtdump.c
	 LEX convert-dtsv0-lexer.lex.c
	 DEP /tmp/qemu-test/src/dtc/srcpos.c
	 BISON dtc-parser.tab.c
	 LEX dtc-lexer.lex.c
	 DEP /tmp/qemu-test/src/dtc/treesource.c
	 DEP /tmp/qemu-test/src/dtc/livetree.c
	 DEP /tmp/qemu-test/src/dtc/fstree.c
	 DEP /tmp/qemu-test/src/dtc/flattree.c
	 DEP /tmp/qemu-test/src/dtc/dtc.c
	 DEP /tmp/qemu-test/src/dtc/data.c
	 DEP /tmp/qemu-test/src/dtc/checks.c
	 DEP convert-dtsv0-lexer.lex.c
	 DEP dtc-lexer.lex.c
	 DEP dtc-parser.tab.c
	CHK version_gen.h
	UPD version_gen.h
	 DEP /tmp/qemu-test/src/dtc/util.c
	 CC libfdt/fdt.o
	 CC libfdt/fdt_wip.o
	 CC libfdt/fdt_ro.o
	 CC libfdt/fdt_strerror.o
	 CC libfdt/fdt_rw.o
	 CC libfdt/fdt_sw.o
	 CC libfdt/fdt_empty_tree.o
	 CC libfdt/fdt_addresses.o
	 CC libfdt/fdt_overlay.o
	 AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
  CC      tests/qemu-iotests/socket_scm_helper.o
  CC      qmp-introspect.o
  CC      qapi-event.o
  CC      qapi/qapi-visit-core.o
  CC      qapi-visit.o
  CC      qapi/qapi-dealloc-visitor.o
  CC      qapi-types.o
  CC      qapi/qobject-input-visitor.o
  CC      qapi/qobject-output-visitor.o
  CC      qapi/qmp-registry.o
  CC      qapi/qmp-dispatch.o
  CC      qapi/string-input-visitor.o
  CC      qapi/string-output-visitor.o
  CC      qapi/opts-visitor.o
  CC      qapi/qapi-clone-visitor.o
  CC      qapi/qmp-event.o
  CC      qapi/qapi-util.o
  CC      qobject/qnull.o
  CC      qobject/qnum.o
  CC      qobject/qstring.o
  CC      qobject/qdict.o
  CC      qobject/qlist.o
  CC      qobject/qbool.o
  CC      qobject/qlit.o
  CC      qobject/qobject.o
  CC      qobject/qjson.o
  CC      qobject/json-streamer.o
  CC      qobject/json-lexer.o
  CC      qobject/json-parser.o
  CC      trace/control.o
  CC      util/osdep.o
  CC      trace/qmp.o
  CC      util/unicode.o
  CC      util/cutils.o
  CC      util/qemu-timer-common.o
  CC      util/bufferiszero.o
  CC      util/lockcnt.o
  CC      util/aiocb.o
  CC      util/async.o
  CC      util/thread-pool.o
  CC      util/qemu-timer.o
  CC      util/main-loop.o
  CC      util/iohandler.o
  CC      util/aio-posix.o
  CC      util/compatfd.o
  CC      util/event_notifier-posix.o
  CC      util/mmap-alloc.o
  CC      util/oslib-posix.o
  CC      util/qemu-openpty.o
  CC      util/qemu-thread-posix.o
  CC      util/memfd.o
  CC      util/envlist.o
  CC      util/path.o
  CC      util/module.o
  CC      util/host-utils.o
  CC      util/bitmap.o
  CC      util/bitops.o
  CC      util/hbitmap.o
  CC      util/fifo8.o
  CC      util/acl.o
  CC      util/cacheinfo.o
  CC      util/error.o
  CC      util/qemu-error.o
  CC      util/id.o
  CC      util/iov.o
  CC      util/qemu-config.o
  CC      util/qemu-sockets.o
  CC      util/uri.o
  CC      util/notify.o
  CC      util/qemu-option.o
  CC      util/qemu-progress.o
  CC      util/keyval.o
  CC      util/hexdump.o
  CC      util/crc32c.o
  CC      util/uuid.o
  CC      util/throttle.o
  CC      util/getauxval.o
  CC      util/readline.o
  CC      util/rcu.o
  CC      util/qemu-coroutine.o
  CC      util/qemu-coroutine-lock.o
  CC      util/qemu-coroutine-io.o
  CC      util/qemu-coroutine-sleep.o
  CC      util/coroutine-ucontext.o
  CC      util/buffer.o
  CC      util/timed-average.o
  CC      util/base64.o
  CC      util/log.o
  CC      util/qdist.o
  CC      util/qht.o
  CC      util/range.o
  CC      util/stats64.o
  CC      util/systemd.o
  CC      trace-root.o
  CC      util/trace.o
  CC      crypto/trace.o
  CC      io/trace.o
  CC      migration/trace.o
  CC      block/trace.o
  CC      chardev/trace.o
  CC      hw/block/trace.o
  CC      hw/block/dataplane/trace.o
  CC      hw/char/trace.o
  CC      hw/net/trace.o
  CC      hw/virtio/trace.o
  CC      hw/intc/trace.o
  CC      hw/audio/trace.o
  CC      hw/misc/trace.o
  CC      hw/usb/trace.o
  CC      hw/scsi/trace.o
  CC      hw/nvram/trace.o
  CC      hw/display/trace.o
  CC      hw/input/trace.o
  CC      hw/timer/trace.o
  CC      hw/dma/trace.o
  CC      hw/sparc/trace.o
  CC      hw/sd/trace.o
  CC      hw/isa/trace.o
  CC      hw/mem/trace.o
  CC      hw/i386/trace.o
  CC      hw/i386/xen/trace.o
  CC      hw/9pfs/trace.o
  CC      hw/ppc/trace.o
  CC      hw/pci/trace.o
  CC      hw/s390x/trace.o
  CC      hw/vfio/trace.o
  CC      hw/acpi/trace.o
  CC      hw/arm/trace.o
  CC      hw/alpha/trace.o
  CC      hw/ide/trace.o
  CC      hw/xen/trace.o
  CC      ui/trace.o
  CC      audio/trace.o
  CC      net/trace.o
  CC      target/arm/trace.o
  CC      target/i386/trace.o
  CC      target/mips/trace.o
  CC      target/sparc/trace.o
  CC      target/s390x/trace.o
  CC      target/ppc/trace.o
  CC      qom/trace.o
  CC      linux-user/trace.o
  CC      qapi/trace.o
  CC      accel/tcg/trace.o
  CC      accel/kvm/trace.o
  CC      nbd/trace.o
  CC      scsi/trace.o
  CC      crypto/pbkdf-stub.o
  CC      stubs/arch-query-cpu-def.o
  CC      stubs/arch-query-cpu-model-expansion.o
  CC      stubs/arch-query-cpu-model-comparison.o
  CC      stubs/arch-query-cpu-model-baseline.o
  CC      stubs/bdrv-next-monitor-owned.o
  CC      stubs/blockdev-close-all-bdrv-states.o
  CC      stubs/blk-commit-all.o
  CC      stubs/clock-warp.o
  CC      stubs/cpu-get-clock.o
  CC      stubs/cpu-get-icount.o
  CC      stubs/dump.o
  CC      stubs/error-printf.o
  CC      stubs/fdset.o
  CC      stubs/get-vm-name.o
  CC      stubs/gdbstub.o
  CC      stubs/iothread.o
  CC      stubs/iothread-lock.o
  CC      stubs/is-daemonized.o
  CC      stubs/machine-init-done.o
  CC      stubs/migr-blocker.o
  CC      stubs/change-state-handler.o
  CC      stubs/monitor.o
  CC      stubs/notify-event.o
  CC      stubs/qtest.o
  CC      stubs/replay.o
  CC      stubs/runstate-check.o
  CC      stubs/set-fd-handler.o
  CC      stubs/slirp.o
  CC      stubs/sysbus.o
  CC      stubs/trace-control.o
  CC      stubs/uuid.o
  CC      stubs/vm-stop.o
  CC      stubs/vmstate.o
  CC      stubs/qmp_pc_dimm.o
  CC      stubs/target-monitor-defs.o
  CC      stubs/target-get-monitor-def.o
  CC      stubs/pc_madt_cpu_entry.o
  CC      stubs/xen-common.o
  CC      stubs/vmgenid.o
  CC      stubs/xen-hvm.o
  CC      stubs/pci-host-piix.o
  GEN     qga/qapi-generated/qga-qapi-types.h
  GEN     qga/qapi-generated/qga-qapi-visit.h
  GEN     qga/qapi-generated/qga-qmp-commands.h
  GEN     qga/qapi-generated/qga-qapi-types.c
  GEN     qga/qapi-generated/qga-qapi-visit.c
  GEN     qga/qapi-generated/qga-qmp-marshal.c
  CC      contrib/ivshmem-client/ivshmem-client.o
  CC      contrib/ivshmem-client/main.o
  CC      contrib/ivshmem-server/ivshmem-server.o
  CC      contrib/ivshmem-server/main.o
  CC      qemu-nbd.o
  CC      block.o
  CC      blockjob.o
  CC      qemu-io-cmds.o
  CC      replication.o
  CC      block/raw-format.o
  CC      block/qcow.o
  CC      block/vdi.o
  CC      block/vmdk.o
  CC      block/cloop.o
  CC      block/bochs.o
  CC      block/vpc.o
  CC      block/vvfat.o
  CC      block/dmg.o
  CC      block/qcow2.o
  CC      block/qcow2-refcount.o
  CC      block/qcow2-cluster.o
  CC      block/qcow2-snapshot.o
  CC      block/qcow2-cache.o
  CC      block/qcow2-bitmap.o
  CC      block/qed.o
  CC      block/qed-l2-cache.o
  CC      block/qed-table.o
  CC      block/qed-cluster.o
  CC      block/qed-check.o
  CC      block/vhdx.o
  CC      block/vhdx-endian.o
  CC      block/vhdx-log.o
  CC      block/quorum.o
  CC      block/parallels.o
  CC      block/blkdebug.o
  CC      block/blkverify.o
  CC      block/blkreplay.o
  CC      block/block-backend.o
  CC      block/snapshot.o
  CC      block/qapi.o
  CC      block/file-posix.o
  CC      block/null.o
  CC      block/mirror.o
  CC      block/commit.o
  CC      block/io.o
  CC      block/throttle-groups.o
  CC      block/nbd.o
  CC      block/nbd-client.o
  CC      block/sheepdog.o
  CC      block/accounting.o
  CC      block/dirty-bitmap.o
  CC      block/write-threshold.o
  CC      block/backup.o
  CC      block/replication.o
  CC      block/throttle.o
  CC      block/crypto.o
  CC      nbd/server.o
  CC      nbd/client.o
  CC      nbd/common.o
  CC      scsi/utils.o
  CC      scsi/pr-manager.o
  CC      scsi/pr-manager-helper.o
  CC      block/dmg-bz2.o
  CC      crypto/init.o
  CC      crypto/hash.o
  CC      crypto/hash-glib.o
  CC      crypto/hmac.o
  CC      crypto/hmac-glib.o
  CC      crypto/aes.o
  CC      crypto/desrfb.o
  CC      crypto/tlscreds.o
  CC      crypto/cipher.o
  CC      crypto/tlscredsanon.o
  CC      crypto/tlscredsx509.o
  CC      crypto/tlssession.o
  CC      crypto/secret.o
  CC      crypto/random-platform.o
  CC      crypto/pbkdf.o
  CC      crypto/ivgen.o
  CC      crypto/ivgen-essiv.o
  CC      crypto/ivgen-plain.o
  CC      crypto/ivgen-plain64.o
  CC      crypto/afsplit.o
  CC      crypto/xts.o
  CC      crypto/block.o
  CC      crypto/block-qcow.o
  CC      crypto/block-luks.o
  CC      io/channel.o
  CC      io/channel-buffer.o
  CC      io/channel-command.o
  CC      io/channel-file.o
  CC      io/channel-socket.o
  CC      io/channel-tls.o
  CC      io/channel-watch.o
  CC      io/channel-websock.o
  CC      io/channel-util.o
  CC      io/dns-resolver.o
  CC      io/task.o
  CC      qom/object.o
  CC      qom/container.o
  CC      qom/qom-qobject.o
  CC      qom/object_interfaces.o
  GEN     qemu-img-cmds.h
  CC      qemu-io.o
  CC      scsi/qemu-pr-helper.o
  CC      qemu-bridge-helper.o
  CC      blockdev.o
  CC      blockdev-nbd.o
  CC      bootdevice.o
  CC      iothread.o
  CC      qdev-monitor.o
  CC      device-hotplug.o
  CC      os-posix.o
  CC      bt-host.o
  CC      bt-vhci.o
  CC      dma-helpers.o
  CC      vl.o
  CC      tpm.o
  CC      device_tree.o
  CC      qmp-marshal.o
  CC      qmp.o
  CC      hmp.o
  CC      cpus-common.o
  CC      audio/audio.o
  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
  CC      audio/sdlaudio.o
  CC      audio/ossaudio.o
  CC      audio/spiceaudio.o
  CC      audio/wavcapture.o
  CC      backends/rng.o
  CC      backends/rng-egd.o
  CC      backends/rng-random.o
  CC      backends/tpm.o
  CC      backends/hostmem.o
  CC      backends/hostmem-ram.o
  CC      backends/hostmem-file.o
  CC      backends/cryptodev.o
  CC      backends/cryptodev-builtin.o
  CC      block/stream.o
  CC      chardev/msmouse.o
  CC      chardev/wctablet.o
  CC      chardev/testdev.o
  CC      chardev/spice.o
  CC      disas/arm.o
  CC      disas/i386.o
  CC      fsdev/qemu-fsdev-dummy.o
  CC      fsdev/qemu-fsdev-opts.o
  CC      hw/acpi/core.o
  CC      fsdev/qemu-fsdev-throttle.o
  CC      hw/acpi/piix4.o
  CC      hw/acpi/pcihp.o
  CC      hw/acpi/ich9.o
  CC      hw/acpi/tco.o
  CC      hw/acpi/cpu_hotplug.o
  CC      hw/acpi/memory_hotplug.o
  CC      hw/acpi/cpu.o
  CC      hw/acpi/nvdimm.o
  CC      hw/acpi/vmgenid.o
  CC      hw/acpi/acpi_interface.o
  CC      hw/acpi/bios-linker-loader.o
  CC      hw/acpi/aml-build.o
  CC      hw/acpi/ipmi.o
  CC      hw/acpi/acpi-stub.o
  CC      hw/acpi/ipmi-stub.o
  CC      hw/audio/sb16.o
  CC      hw/audio/es1370.o
  CC      hw/audio/fmopl.o
  CC      hw/audio/ac97.o
  CC      hw/audio/adlib.o
  CC      hw/audio/gus.o
  CC      hw/audio/gusemu_hal.o
  CC      hw/audio/gusemu_mixer.o
  CC      hw/audio/cs4231a.o
  CC      hw/audio/intel-hda.o
  CC      hw/audio/hda-codec.o
  CC      hw/audio/pcspk.o
  CC      hw/audio/wm8750.o
  CC      hw/audio/pl041.o
  CC      hw/audio/lm4549.o
  CC      hw/audio/marvell_88w8618.o
  CC      hw/audio/soundhw.o
  CC      hw/block/block.o
  CC      hw/block/hd-geometry.o
  CC      hw/block/cdrom.o
  CC      hw/block/fdc.o
  CC      hw/block/m25p80.o
  CC      hw/block/nand.o
  CC      hw/block/pflash_cfi01.o
  CC      hw/block/pflash_cfi02.o
  CC      hw/block/xen_disk.o
  CC      hw/block/ecc.o
  CC      hw/block/onenand.o
  CC      hw/block/nvme.o
  CC      hw/bt/core.o
  CC      hw/bt/l2cap.o
  CC      hw/bt/sdp.o
  CC      hw/bt/hci.o
  CC      hw/bt/hid.o
  CC      hw/bt/hci-csr.o
  CC      hw/char/ipoctal232.o
  CC      hw/char/parallel.o
  CC      hw/char/pl011.o
  CC      hw/char/serial.o
  CC      hw/char/serial-isa.o
  CC      hw/char/serial-pci.o
  CC      hw/char/virtio-console.o
  CC      hw/char/xen_console.o
  CC      hw/char/cadence_uart.o
  CC      hw/char/cmsdk-apb-uart.o
  CC      hw/char/debugcon.o
  CC      hw/char/imx_serial.o
  CC      hw/core/qdev.o
  CC      hw/core/qdev-properties.o
  CC      hw/core/bus.o
  CC      hw/core/reset.o
  CC      hw/core/fw-path-provider.o
  CC      hw/core/irq.o
  CC      hw/core/nmi.o
  CC      hw/core/ptimer.o
  CC      hw/core/hotplug.o
  CC      hw/core/sysbus.o
  CC      hw/core/machine.o
  CC      hw/core/loader.o
  CC      hw/core/qdev-properties-system.o
  CC      hw/core/register.o
  CC      hw/core/platform-bus.o
  CC      hw/core/or-irq.o
  CC      hw/cpu/core.o
  CC      hw/display/ads7846.o
  CC      hw/display/cirrus_vga.o
  CC      hw/display/pl110.o
  CC      hw/display/ssd0303.o
  CC      hw/display/ssd0323.o
  CC      hw/display/xenfb.o
  CC      hw/display/vga-pci.o
  CC      hw/display/vga-isa.o
  CC      hw/display/vmware_vga.o
  CC      hw/display/blizzard.o
  CC      hw/display/exynos4210_fimd.o
  CC      hw/display/framebuffer.o
  CC      hw/display/tc6393xb.o
  CC      hw/display/qxl.o
  CC      hw/display/qxl-logger.o
  CC      hw/display/qxl-render.o
  CC      hw/dma/pl080.o
  CC      hw/dma/pl330.o
  CC      hw/dma/i8257.o
  CC      hw/dma/xlnx-zynq-devcfg.o
  CC      hw/gpio/max7310.o
  CC      hw/gpio/pl061.o
  CC      hw/gpio/zaurus.o
  CC      hw/gpio/gpio_key.o
  CC      hw/i2c/core.o
  CC      hw/i2c/smbus.o
  CC      hw/i2c/smbus_eeprom.o
  CC      hw/i2c/i2c-ddc.o
  CC      hw/i2c/versatile_i2c.o
  CC      hw/i2c/smbus_ich9.o
  CC      hw/i2c/pm_smbus.o
  CC      hw/i2c/bitbang_i2c.o
  CC      hw/i2c/exynos4210_i2c.o
  CC      hw/i2c/imx_i2c.o
  CC      hw/i2c/aspeed_i2c.o
  CC      hw/ide/core.o
  CC      hw/ide/atapi.o
  CC      hw/ide/qdev.o
  CC      hw/ide/pci.o
  CC      hw/ide/isa.o
  CC      hw/ide/piix.o
  CC      hw/ide/microdrive.o
  CC      hw/ide/ahci.o
  CC      hw/ide/ich.o
  CC      hw/input/hid.o
  CC      hw/input/lm832x.o
  CC      hw/input/pckbd.o
  CC      hw/input/pl050.o
  CC      hw/input/ps2.o
  CC      hw/input/stellaris_input.o
  CC      hw/input/tsc2005.o
  CC      hw/input/vmmouse.o
  CC      hw/input/virtio-input.o
  CC      hw/input/virtio-input-hid.o
  CC      hw/input/virtio-input-host.o
  CC      hw/intc/i8259_common.o
  CC      hw/intc/i8259.o
  CC      hw/intc/pl190.o
  CC      hw/intc/imx_avic.o
  CC      hw/intc/realview_gic.o
  CC      hw/intc/ioapic_common.o
  CC      hw/intc/arm_gic_common.o
  CC      hw/intc/arm_gic.o
  CC      hw/intc/arm_gicv2m.o
  CC      hw/intc/arm_gicv3_common.o
  CC      hw/intc/arm_gicv3.o
  CC      hw/intc/arm_gicv3_dist.o
  CC      hw/intc/arm_gicv3_redist.o
  CC      hw/intc/arm_gicv3_its_common.o
  CC      hw/intc/intc.o
  CC      hw/ipack/ipack.o
  CC      hw/ipack/tpci200.o
  CC      hw/ipmi/ipmi.o
  CC      hw/ipmi/ipmi_bmc_extern.o
  CC      hw/ipmi/ipmi_bmc_sim.o
  CC      hw/ipmi/isa_ipmi_kcs.o
  CC      hw/ipmi/isa_ipmi_bt.o
  CC      hw/isa/isa-bus.o
  CC      hw/isa/apm.o
  CC      hw/mem/pc-dimm.o
  CC      hw/mem/nvdimm.o
  CC      hw/misc/applesmc.o
  CC      hw/misc/max111x.o
  CC      hw/misc/tmp421.o
  CC      hw/misc/tmp105.o
  CC      hw/misc/debugexit.o
  CC      hw/misc/sga.o
  CC      hw/misc/pc-testdev.o
  CC      hw/misc/pci-testdev.o
  CC      hw/misc/edu.o
  CC      hw/misc/unimp.o
  CC      hw/misc/arm_l2x0.o
  CC      hw/misc/arm_integrator_debug.o
  CC      hw/misc/a9scu.o
  CC      hw/misc/arm11scu.o
  CC      hw/net/xen_nic.o
  CC      hw/net/ne2000.o
  CC      hw/net/eepro100.o
  CC      hw/net/pcnet-pci.o
  CC      hw/net/pcnet.o
  CC      hw/net/e1000.o
  CC      hw/net/e1000x_common.o
  CC      hw/net/net_tx_pkt.o
  CC      hw/net/net_rx_pkt.o
  CC      hw/net/e1000e.o
  CC      hw/net/e1000e_core.o
  CC      hw/net/rtl8139.o
  CC      hw/net/vmxnet3.o
  CC      hw/net/smc91c111.o
  CC      hw/net/lan9118.o
  CC      hw/net/ne2000-isa.o
  CC      hw/net/xgmac.o
  CC      hw/net/allwinner_emac.o
  CC      hw/net/imx_fec.o
  CC      hw/net/cadence_gem.o
  CC      hw/net/stellaris_enet.o
  CC      hw/net/ftgmac100.o
  CC      hw/net/rocker/rocker.o
  CC      hw/net/rocker/rocker_fp.o
  CC      hw/net/rocker/rocker_desc.o
  CC      hw/net/rocker/rocker_world.o
  CC      hw/net/rocker/rocker_of_dpa.o
  CC      hw/nvram/eeprom93xx.o
  CC      hw/nvram/fw_cfg.o
  CC      hw/nvram/chrp_nvram.o
  CC      hw/pci-bridge/pci_bridge_dev.o
  CC      hw/pci-bridge/pcie_pci_bridge.o
  CC      hw/pci-bridge/pcie_root_port.o
  CC      hw/pci-bridge/gen_pcie_root_port.o
  CC      hw/pci-bridge/pci_expander_bridge.o
  CC      hw/pci-bridge/xio3130_upstream.o
  CC      hw/pci-bridge/xio3130_downstream.o
  CC      hw/pci-bridge/ioh3420.o
  CC      hw/pci-bridge/i82801b11.o
  CC      hw/pci-host/pam.o
  CC      hw/pci-host/versatile.o
  CC      hw/pci-host/piix.o
  CC      hw/pci-host/q35.o
  CC      hw/pci-host/gpex.o
  CC      hw/pci/pci.o
  CC      hw/pci/pci_bridge.o
  CC      hw/pci/msix.o
  CC      hw/pci/msi.o
  CC      hw/pci/shpc.o
  CC      hw/pci/slotid_cap.o
  CC      hw/pci/pci_host.o
  CC      hw/pci/pcie_host.o
  CC      hw/pci/pcie.o
  CC      hw/pci/pcie_port.o
  CC      hw/pci/pcie_aer.o
  CC      hw/pci/pci-stub.o
  CC      hw/pcmcia/pcmcia.o
  CC      hw/scsi/scsi-generic.o
  CC      hw/scsi/scsi-disk.o
  CC      hw/scsi/scsi-bus.o
  CC      hw/scsi/lsi53c895a.o
  CC      hw/scsi/mptsas.o
  CC      hw/scsi/mptconfig.o
  CC      hw/scsi/mptendian.o
  CC      hw/scsi/megasas.o
  CC      hw/scsi/vmw_pvscsi.o
  CC      hw/scsi/esp.o
  CC      hw/scsi/esp-pci.o
  CC      hw/sd/pl181.o
  CC      hw/sd/ssi-sd.o
  CC      hw/sd/sd.o
  CC      hw/sd/core.o
  CC      hw/sd/sdhci.o
  CC      hw/smbios/smbios.o
  CC      hw/smbios/smbios_type_38.o
  CC      hw/smbios/smbios-stub.o
  CC      hw/smbios/smbios_type_38-stub.o
  CC      hw/ssi/pl022.o
  CC      hw/ssi/ssi.o
  CC      hw/ssi/xilinx_spips.o
  CC      hw/ssi/aspeed_smc.o
  CC      hw/ssi/stm32f2xx_spi.o
  CC      hw/ssi/mss-spi.o
  CC      hw/timer/arm_timer.o
  CC      hw/timer/arm_mptimer.o
  CC      hw/timer/armv7m_systick.o
  CC      hw/timer/a9gtimer.o
  CC      hw/timer/cadence_ttc.o
  CC      hw/timer/ds1338.o
  CC      hw/timer/hpet.o
  CC      hw/timer/i8254_common.o
  CC      hw/timer/i8254.o
  CC      hw/timer/pl031.o
  CC      hw/timer/imx_epit.o
  CC      hw/timer/twl92230.o
  CC      hw/timer/imx_gpt.o
  CC      hw/timer/stm32f2xx_timer.o
  CC      hw/timer/aspeed_timer.o
  CC      hw/timer/cmsdk-apb-timer.o
  CC      hw/timer/mss-timer.o
  CC      hw/tpm/tpm_tis.o
  CC      hw/tpm/tpm_passthrough.o
  CC      hw/tpm/tpm_util.o
  CC      hw/usb/core.o
  CC      hw/usb/combined-packet.o
  CC      hw/usb/bus.o
  CC      hw/usb/libhw.o
  CC      hw/usb/desc.o
  CC      hw/usb/desc-msos.o
  CC      hw/usb/hcd-uhci.o
  CC      hw/usb/hcd-ohci.o
  CC      hw/usb/hcd-ehci.o
  CC      hw/usb/hcd-ehci-pci.o
  CC      hw/usb/hcd-ehci-sysbus.o
  CC      hw/usb/hcd-xhci.o
  CC      hw/usb/hcd-xhci-nec.o
  CC      hw/usb/hcd-musb.o
  CC      hw/usb/dev-hub.o
  CC      hw/usb/dev-hid.o
  CC      hw/usb/dev-wacom.o
  CC      hw/usb/dev-storage.o
  CC      hw/usb/dev-uas.o
  CC      hw/usb/dev-audio.o
  CC      hw/usb/dev-serial.o
  CC      hw/usb/dev-network.o
  CC      hw/usb/dev-bluetooth.o
  CC      hw/usb/dev-smartcard-reader.o
  CC      hw/usb/ccid-card-passthru.o
  CC      hw/usb/ccid-card-emulated.o
  CC      hw/usb/dev-mtp.o
  CC      hw/usb/host-stub.o
  CC      hw/virtio/virtio-rng.o
  CC      hw/virtio/virtio-pci.o
  CC      hw/virtio/virtio-bus.o
  CC      hw/virtio/virtio-mmio.o
  CC      hw/virtio/vhost-stub.o
  CC      hw/watchdog/watchdog.o
  CC      hw/watchdog/wdt_i6300esb.o
  CC      hw/watchdog/wdt_ib700.o
  CC      hw/watchdog/wdt_aspeed.o
  CC      hw/xen/xen_backend.o
  CC      hw/xen/xen_devconfig.o
  CC      hw/xen/xen_pvdev.o
  CC      hw/xen/xen-common.o
  CC      migration/migration.o
  CC      migration/socket.o
  CC      migration/fd.o
  CC      migration/exec.o
  CC      migration/tls.o
  CC      migration/channel.o
  CC      migration/savevm.o
  CC      migration/colo-comm.o
  CC      migration/colo.o
  CC      migration/colo-failover.o
  CC      migration/vmstate.o
  CC      migration/vmstate-types.o
  CC      migration/page_cache.o
  CC      migration/qemu-file.o
  CC      migration/qemu-file-channel.o
  CC      migration/global_state.o
  CC      migration/xbzrle.o
  CC      migration/postcopy-ram.o
  CC      migration/qjson.o
  CC      migration/rdma.o
  CC      migration/block.o
  CC      net/net.o
  CC      net/queue.o
  CC      net/checksum.o
  CC      net/util.o
  CC      net/hub.o
  CC      net/socket.o
  CC      net/dump.o
  CC      net/eth.o
  CC      net/l2tpv3.o
  CC      net/vhost-user.o
  CC      net/slirp.o
  CC      net/filter.o
  CC      net/filter-buffer.o
  CC      net/filter-mirror.o
  CC      net/colo-compare.o
  CC      net/colo.o
  CC      net/filter-rewriter.o
  CC      net/filter-replay.o
  CC      net/tap.o
  CC      net/tap-linux.o
  CC      qom/cpu.o
/tmp/qemu-test/src/hw/xen/xen-common.c: In function ‘store_dev_info’:
/tmp/qemu-test/src/hw/xen/xen-common.c:50: warning: implicit declaration of function ‘error_report’
/tmp/qemu-test/src/hw/xen/xen-common.c:50: warning: nested extern declaration of ‘error_report’
  CC      replay/replay.o
  CC      replay/replay-internal.o
  CC      replay/replay-events.o
  CC      replay/replay-time.o
  CC      replay/replay-input.o
/tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’:
/tmp/qemu-test/src/replay/replay-internal.c:65: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
  CC      replay/replay-char.o
  CC      replay/replay-snapshot.o
  CC      replay/replay-net.o
  CC      replay/replay-audio.o
  CC      slirp/cksum.o
  CC      slirp/if.o
  CC      slirp/ip_icmp.o
  CC      slirp/ip6_icmp.o
  CC      slirp/ip6_output.o
  CC      slirp/ip6_input.o
  CC      slirp/ip_input.o
  CC      slirp/ip_output.o
  CC      slirp/dnssearch.o
  CC      slirp/dhcpv6.o
  CC      slirp/slirp.o
  CC      slirp/mbuf.o
  CC      slirp/misc.o
  CC      slirp/sbuf.o
  CC      slirp/socket.o
  CC      slirp/tcp_input.o
  CC      slirp/tcp_output.o
  CC      slirp/tcp_subr.o
  CC      slirp/tcp_timer.o
  CC      slirp/udp.o
  CC      slirp/udp6.o
  CC      slirp/bootp.o
  CC      slirp/tftp.o
/tmp/qemu-test/src/slirp/tcp_input.c: In function ‘tcp_input’:
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_p’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_len’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_tos’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_id’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_off’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_ttl’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_sum’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_src.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_dst.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:220: warning: ‘save_ip6.ip_nh’ may be used uninitialized in this function
  CC      slirp/ndp_table.o
  CC      slirp/arp_table.o
  CC      slirp/ncsi.o
  CC      ui/keymaps.o
  CC      ui/console.o
  CC      ui/cursor.o
  CC      ui/qemu-pixman.o
  CC      ui/input.o
  CC      ui/input-keymap.o
  CC      ui/input-legacy.o
  CC      ui/input-linux.o
  CC      ui/spice-core.o
  CC      ui/spice-input.o
  CC      ui/spice-display.o
  CC      ui/sdl.o
  CC      ui/sdl_zoom.o
  CC      ui/x_keymap.o
  CC      ui/curses.o
  CC      ui/vnc.o
  CC      ui/vnc-enc-zlib.o
  CC      ui/vnc-enc-hextile.o
  CC      ui/vnc-enc-tight.o
  CC      ui/vnc-palette.o
  CC      ui/vnc-enc-zrle.o
  CC      ui/vnc-auth-vencrypt.o
  CC      ui/vnc-ws.o
  CC      ui/vnc-jobs.o
  CC      ui/gtk.o
  CC      ui/shader.o
  VERT    ui/shader/texture-blit-vert.h
  FRAG    ui/shader/texture-blit-frag.h
  CC      ui/egl-helpers.o
  CC      ui/egl-context.o
  CC      ui/gtk-egl.o
  CC      chardev/char.o
  CC      chardev/char-fd.o
  CC      chardev/char-fe.o
  CC      chardev/char-file.o
  CC      chardev/char-io.o
In file included from /usr/include/gtk-2.0/gtk/gtk.h:235,
                 from /tmp/qemu-test/src/include/ui/gtk.h:10,
                 from /tmp/qemu-test/src/ui/gtk-egl.c:21:
/usr/include/gtk-2.0/gtk/gtkitemfactory.h:47: warning: function declaration isn’t a prototype
  CC      chardev/char-mux.o
  CC      chardev/char-null.o
  CC      chardev/char-parallel.o
  CC      chardev/char-pipe.o
  CC      chardev/char-pty.o
  CC      chardev/char-ringbuf.o
  CC      chardev/char-serial.o
  CC      chardev/char-socket.o
  CC      chardev/char-stdio.o
  CC      chardev/char-udp.o
  AR      libqemuutil.a
  CC      qga/commands.o
  CC      qga/guest-agent-command-state.o
  CC      qga/main.o
/tmp/qemu-test/src/ui/shader.c: In function ‘qemu_gl_create_compile_shader’:
/tmp/qemu-test/src/ui/shader.c:88: warning: implicit declaration of function ‘error_report’
/tmp/qemu-test/src/ui/shader.c:88: warning: nested extern declaration of ‘error_report’
  CC      qga/commands-posix.o
  CC      qga/channel-posix.o
  CC      qga/qapi-generated/qga-qapi-types.o
  CC      qga/qapi-generated/qga-qapi-visit.o
  AS      optionrom/multiboot.o
  CC      qga/qapi-generated/qga-qmp-marshal.o
  AS      optionrom/linuxboot.o
  CC      optionrom/linuxboot_dma.o
cc: unrecognized option '-no-integrated-as'
cc: unrecognized option '-no-integrated-as'
  LINK    ivshmem-client
  BUILD   optionrom/multiboot.img
  AS      optionrom/kvmvapic.o
  BUILD   optionrom/linuxboot.img
  BUILD   optionrom/linuxboot_dma.img
  BUILD   optionrom/linuxboot.raw
  BUILD   optionrom/multiboot.raw
  BUILD   optionrom/linuxboot_dma.raw
  SIGN    optionrom/linuxboot.bin
  SIGN    optionrom/linuxboot_dma.bin
  SIGN    optionrom/multiboot.bin
  BUILD   optionrom/kvmvapic.img
  BUILD   optionrom/kvmvapic.raw
  LINK    ivshmem-server
  SIGN    optionrom/kvmvapic.bin
  LINK    qemu-nbd
  CC      qemu-img.o
  LINK    qemu-io
  LINK    scsi/qemu-pr-helper
  LINK    qemu-bridge-helper
  CC      ui/console-gl.o
  LINK    tests/qemu-iotests/socket_scm_helper
  LINK    qemu-ga
  LINK    qemu-img
In file included from /usr/include/gtk-2.0/gtk/gtk.h:235,
                 from /tmp/qemu-test/src/include/ui/gtk.h:10,
                 from /tmp/qemu-test/src/ui/gtk.c:43:
/usr/include/gtk-2.0/gtk/gtkitemfactory.h:47: warning: function declaration isn’t a prototype
  GEN     aarch64-softmmu/hmp-commands.h
  GEN     aarch64-softmmu/hmp-commands-info.h
  GEN     aarch64-softmmu/config-target.h
  GEN     x86_64-softmmu/hmp-commands.h
  GEN     x86_64-softmmu/hmp-commands-info.h
  GEN     x86_64-softmmu/config-target.h
  CC      aarch64-softmmu/tcg/tcg.o
  CC      aarch64-softmmu/exec.o
  CC      aarch64-softmmu/tcg/tcg-op.o
  CC      aarch64-softmmu/tcg/optimize.o
  CC      aarch64-softmmu/tcg/tcg-common.o
  CC      aarch64-softmmu/disas.o
  CC      aarch64-softmmu/fpu/softfloat.o
  CC      x86_64-softmmu/exec.o
  CC      x86_64-softmmu/tcg/tcg.o
  CC      x86_64-softmmu/tcg/tcg-op.o
  GEN     aarch64-softmmu/gdbstub-xml.c
  CC      x86_64-softmmu/tcg/optimize.o
  CC      aarch64-softmmu/arch_init.o
  CC      x86_64-softmmu/tcg/tcg-common.o
  CC      x86_64-softmmu/fpu/softfloat.o
  CC      x86_64-softmmu/disas.o
  GEN     x86_64-softmmu/gdbstub-xml.c
  CC      x86_64-softmmu/arch_init.o
  CC      x86_64-softmmu/cpus.o
  CC      x86_64-softmmu/monitor.o
  CC      x86_64-softmmu/gdbstub.o
  CC      x86_64-softmmu/balloon.o
  CC      x86_64-softmmu/ioport.o
  CC      x86_64-softmmu/numa.o
  CC      aarch64-softmmu/cpus.o
  CC      x86_64-softmmu/qtest.o
  CC      x86_64-softmmu/memory.o
  CC      x86_64-softmmu/memory_mapping.o
  CC      x86_64-softmmu/dump.o
  CC      x86_64-softmmu/migration/ram.o
  CC      x86_64-softmmu/accel/accel.o
  CC      x86_64-softmmu/accel/kvm/kvm-all.o
  CC      x86_64-softmmu/accel/stubs/hax-stub.o
  CC      aarch64-softmmu/monitor.o
  CC      x86_64-softmmu/accel/tcg/tcg-all.o
  CC      x86_64-softmmu/accel/tcg/cputlb.o
  CC      x86_64-softmmu/accel/tcg/tcg-runtime.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec-common.o
  CC      aarch64-softmmu/gdbstub.o
  CC      x86_64-softmmu/accel/tcg/translate-all.o
  CC      x86_64-softmmu/accel/tcg/translator.o
  CC      x86_64-softmmu/hw/block/virtio-blk.o
  CC      x86_64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      aarch64-softmmu/balloon.o
  CC      x86_64-softmmu/hw/char/virtio-serial-bus.o
  CC      aarch64-softmmu/ioport.o
  CC      x86_64-softmmu/hw/core/generic-loader.o
  CC      aarch64-softmmu/numa.o
  CC      aarch64-softmmu/qtest.o
  CC      aarch64-softmmu/memory.o
  CC      x86_64-softmmu/hw/core/null-machine.o
  CC      x86_64-softmmu/hw/display/vga.o
  CC      x86_64-softmmu/hw/display/virtio-gpu.o
  CC      aarch64-softmmu/memory_mapping.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-pci.o
  CC      x86_64-softmmu/hw/display/virtio-vga.o
  CC      aarch64-softmmu/dump.o
  CC      x86_64-softmmu/hw/intc/apic.o
  CC      x86_64-softmmu/hw/intc/apic_common.o
  CC      x86_64-softmmu/hw/intc/ioapic.o
  CC      aarch64-softmmu/migration/ram.o
  CC      x86_64-softmmu/hw/isa/lpc_ich9.o
  CC      aarch64-softmmu/accel/accel.o
  CC      aarch64-softmmu/accel/stubs/hax-stub.o
  CC      aarch64-softmmu/accel/stubs/kvm-stub.o
  CC      x86_64-softmmu/hw/misc/vmport.o
  CC      x86_64-softmmu/hw/misc/ivshmem.o
  CC      x86_64-softmmu/hw/misc/pvpanic.o
  CC      aarch64-softmmu/accel/tcg/tcg-all.o
  CC      x86_64-softmmu/hw/misc/hyperv_testdev.o
  CC      x86_64-softmmu/hw/misc/mmio_interface.o
  CC      aarch64-softmmu/accel/tcg/cputlb.o
  CC      x86_64-softmmu/hw/net/virtio-net.o
  CC      aarch64-softmmu/accel/tcg/tcg-runtime.o
  CC      x86_64-softmmu/hw/net/vhost_net.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      x86_64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec-common.o
  CC      x86_64-softmmu/hw/scsi/vhost-scsi.o
  CC      aarch64-softmmu/accel/tcg/translate-all.o
  CC      x86_64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      aarch64-softmmu/accel/tcg/translator.o
  CC      x86_64-softmmu/hw/timer/mc146818rtc.o
  CC      x86_64-softmmu/hw/vfio/common.o
  CC      x86_64-softmmu/hw/vfio/pci.o
  CC      x86_64-softmmu/hw/vfio/pci-quirks.o
  CC      aarch64-softmmu/hw/adc/stm32f2xx_adc.o
  CC      x86_64-softmmu/hw/vfio/platform.o
  CC      aarch64-softmmu/hw/block/virtio-blk.o
  CC      aarch64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      aarch64-softmmu/hw/char/exynos4210_uart.o
  CC      x86_64-softmmu/hw/vfio/spapr.o
  CC      x86_64-softmmu/hw/virtio/virtio.o
  CC      x86_64-softmmu/hw/virtio/virtio-balloon.o
  CC      x86_64-softmmu/hw/virtio/vhost.o
  CC      aarch64-softmmu/hw/char/omap_uart.o
  CC      x86_64-softmmu/hw/virtio/vhost-backend.o
  CC      x86_64-softmmu/hw/virtio/vhost-user.o
  CC      aarch64-softmmu/hw/char/digic-uart.o
  CC      aarch64-softmmu/hw/char/stm32f2xx_usart.o
  CC      x86_64-softmmu/hw/virtio/vhost-vsock.o
  CC      aarch64-softmmu/hw/char/bcm2835_aux.o
  CC      aarch64-softmmu/hw/char/virtio-serial-bus.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/core/generic-loader.o
  CC      aarch64-softmmu/hw/core/null-machine.o
  CC      x86_64-softmmu/hw/xen/xen-host-pci-device.o
  CC      x86_64-softmmu/hw/xen/xen_pt.o
  CC      aarch64-softmmu/hw/cpu/arm11mpcore.o
  CC      aarch64-softmmu/hw/cpu/realview_mpcore.o
  CC      aarch64-softmmu/hw/cpu/a9mpcore.o
  CC      aarch64-softmmu/hw/cpu/a15mpcore.o
  CC      aarch64-softmmu/hw/display/omap_dss.o
  CC      x86_64-softmmu/hw/xen/xen_pt_config_init.o
  CC      x86_64-softmmu/hw/xen/xen_pt_graphics.o
  CC      aarch64-softmmu/hw/display/omap_lcdc.o
  CC      x86_64-softmmu/hw/xen/xen_pt_msi.o
  CC      x86_64-softmmu/hw/i386/multiboot.o
  CC      x86_64-softmmu/hw/i386/pc.o
  CC      aarch64-softmmu/hw/display/pxa2xx_lcd.o
  CC      x86_64-softmmu/hw/i386/pc_piix.o
  CC      x86_64-softmmu/hw/i386/pc_q35.o
/tmp/qemu-test/src/hw/xen/xen_pt.c: In function ‘xen_pt_log’:
/tmp/qemu-test/src/hw/xen/xen_pt.c:76: warning: implicit declaration of function ‘error_report’
/tmp/qemu-test/src/hw/xen/xen_pt.c:76: warning: nested extern declaration of ‘error_report’
  CC      x86_64-softmmu/hw/i386/pc_sysfw.o
  CC      x86_64-softmmu/hw/i386/x86-iommu.o
  CC      x86_64-softmmu/hw/i386/intel_iommu.o
  CC      x86_64-softmmu/hw/i386/amd_iommu.o
  CC      x86_64-softmmu/hw/i386/kvmvapic.o
  CC      aarch64-softmmu/hw/display/bcm2835_fb.o
  CC      aarch64-softmmu/hw/display/vga.o
  CC      aarch64-softmmu/hw/display/virtio-gpu.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-3d.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-pci.o
  CC      aarch64-softmmu/hw/display/dpcd.o
  CC      aarch64-softmmu/hw/display/xlnx_dp.o
  CC      x86_64-softmmu/hw/i386/acpi-build.o
  CC      aarch64-softmmu/hw/dma/xlnx_dpdma.o
/tmp/qemu-test/src/hw/i386/pc_piix.c: In function ‘igd_passthrough_isa_bridge_create’:
/tmp/qemu-test/src/hw/i386/pc_piix.c:1071: warning: ‘pch_rev_id’ may be used uninitialized in this function
  CC      aarch64-softmmu/hw/dma/omap_dma.o
  CC      aarch64-softmmu/hw/dma/soc_dma.o
/tmp/qemu-test/src/hw/i386/acpi-build.c: In function ‘build_append_pci_bus_devices’:
/tmp/qemu-test/src/hw/i386/acpi-build.c:509: warning: ‘notify_method’ may be used uninitialized in this function
  CC      aarch64-softmmu/hw/dma/pxa2xx_dma.o
  CC      x86_64-softmmu/hw/i386/pci-assign-load-rom.o
  CC      aarch64-softmmu/hw/dma/bcm2835_dma.o
  CC      aarch64-softmmu/hw/gpio/omap_gpio.o
  CC      aarch64-softmmu/hw/gpio/imx_gpio.o
  CC      aarch64-softmmu/hw/gpio/bcm2835_gpio.o
  CC      x86_64-softmmu/hw/i386/../xenpv/xen_machine_pv.o
  CC      aarch64-softmmu/hw/i2c/omap_i2c.o
  CC      aarch64-softmmu/hw/input/pxa2xx_keypad.o
  CC      x86_64-softmmu/hw/i386/kvm/clock.o
  CC      aarch64-softmmu/hw/input/tsc210x.o
  CC      aarch64-softmmu/hw/intc/armv7m_nvic.o
  CC      x86_64-softmmu/hw/i386/kvm/apic.o
  CC      x86_64-softmmu/hw/i386/kvm/i8259.o
  CC      x86_64-softmmu/hw/i386/kvm/ioapic.o
/tmp/qemu-test/src/hw/i386/../xenpv/xen_machine_pv.c: In function ‘xen_init_pv’:
/tmp/qemu-test/src/hw/i386/../xenpv/xen_machine_pv.c:39: warning: implicit declaration of function ‘error_report’
/tmp/qemu-test/src/hw/i386/../xenpv/xen_machine_pv.c:39: warning: nested extern declaration of ‘error_report’
  CC      aarch64-softmmu/hw/intc/exynos4210_gic.o
  CC      x86_64-softmmu/hw/i386/kvm/i8254.o
  CC      x86_64-softmmu/hw/i386/kvm/pci-assign.o
  CC      x86_64-softmmu/hw/i386/xen/xen_platform.o
  CC      aarch64-softmmu/hw/intc/exynos4210_combiner.o
  CC      x86_64-softmmu/hw/i386/xen/xen_apic.o
  CC      x86_64-softmmu/hw/i386/xen/xen_pvdevice.o
  CC      x86_64-softmmu/hw/i386/xen/xen-hvm.o
  CC      aarch64-softmmu/hw/intc/omap_intc.o
  CC      x86_64-softmmu/hw/i386/xen/xen-mapcache.o
  CC      x86_64-softmmu/target/i386/helper.o
  CC      x86_64-softmmu/target/i386/cpu.o
  CC      x86_64-softmmu/target/i386/gdbstub.o
  CC      x86_64-softmmu/target/i386/xsave_helper.o
  CC      x86_64-softmmu/target/i386/translate.o
  CC      x86_64-softmmu/target/i386/bpt_helper.o
  CC      x86_64-softmmu/target/i386/cc_helper.o
  CC      aarch64-softmmu/hw/intc/bcm2835_ic.o
/tmp/qemu-test/src/hw/i386/xen/xen_apic.c: In function ‘xen_apic_mem_write’:
/tmp/qemu-test/src/hw/i386/xen/xen_apic.c:27: warning: implicit declaration of function ‘error_report’
/tmp/qemu-test/src/hw/i386/xen/xen_apic.c:27: warning: nested extern declaration of ‘error_report’
  CC      aarch64-softmmu/hw/intc/bcm2836_control.o
  CC      x86_64-softmmu/target/i386/excp_helper.o
  CC      x86_64-softmmu/target/i386/fpu_helper.o
  CC      x86_64-softmmu/target/i386/int_helper.o
  CC      x86_64-softmmu/target/i386/mem_helper.o
  CC      aarch64-softmmu/hw/intc/allwinner-a10-pic.o
  CC      x86_64-softmmu/target/i386/misc_helper.o
  CC      x86_64-softmmu/target/i386/mpx_helper.o
  CC      aarch64-softmmu/hw/intc/aspeed_vic.o
  CC      aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
  CC      aarch64-softmmu/hw/misc/ivshmem.o
  CC      aarch64-softmmu/hw/misc/arm_sysctl.o
  CC      x86_64-softmmu/target/i386/seg_helper.o
  CC      aarch64-softmmu/hw/misc/cbus.o
  CC      aarch64-softmmu/hw/misc/exynos4210_pmu.o
  CC      x86_64-softmmu/target/i386/smm_helper.o
  CC      aarch64-softmmu/hw/misc/exynos4210_clk.o
  CC      aarch64-softmmu/hw/misc/exynos4210_rng.o
  CC      x86_64-softmmu/target/i386/svm_helper.o
  CC      aarch64-softmmu/hw/misc/imx_ccm.o
  CC      x86_64-softmmu/target/i386/machine.o
  CC      aarch64-softmmu/hw/misc/imx31_ccm.o
  CC      x86_64-softmmu/target/i386/arch_memory_mapping.o
  CC      x86_64-softmmu/target/i386/arch_dump.o
  CC      x86_64-softmmu/target/i386/monitor.o
  CC      x86_64-softmmu/target/i386/kvm.o
  CC      aarch64-softmmu/hw/misc/imx25_ccm.o
  CC      aarch64-softmmu/hw/misc/imx6_ccm.o
  CC      x86_64-softmmu/target/i386/hyperv.o
  CC      aarch64-softmmu/hw/misc/imx6_src.o
  CC      aarch64-softmmu/hw/misc/mst_fpga.o
  CC      aarch64-softmmu/hw/misc/omap_clk.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/trace/control-target.o
  CC      aarch64-softmmu/hw/misc/omap_gpmc.o
  CC      x86_64-softmmu/gdbstub-xml.o
  CC      aarch64-softmmu/hw/misc/omap_l4.o
  CC      aarch64-softmmu/hw/misc/omap_sdrc.o
  CC      aarch64-softmmu/hw/misc/omap_tap.o
  CC      x86_64-softmmu/trace/generated-helpers.o
  CC      aarch64-softmmu/hw/misc/bcm2835_mbox.o
  CC      aarch64-softmmu/hw/misc/bcm2835_property.o
  CC      aarch64-softmmu/hw/misc/bcm2835_rng.o
  CC      aarch64-softmmu/hw/misc/zynq_slcr.o
  CC      aarch64-softmmu/hw/misc/zynq-xadc.o
  CC      aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC      aarch64-softmmu/hw/misc/mps2-scc.o
  CC      aarch64-softmmu/hw/misc/auxbus.o
  CC      aarch64-softmmu/hw/misc/aspeed_scu.o
  CC      aarch64-softmmu/hw/misc/aspeed_sdmc.o
  CC      aarch64-softmmu/hw/misc/mmio_interface.o
  CC      aarch64-softmmu/hw/misc/msf2-sysreg.o
  CC      aarch64-softmmu/hw/net/virtio-net.o
  CC      aarch64-softmmu/hw/net/vhost_net.o
  CC      aarch64-softmmu/hw/pcmcia/pxa2xx.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      aarch64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      aarch64-softmmu/hw/scsi/vhost-scsi.o
  CC      aarch64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      aarch64-softmmu/hw/sd/omap_mmc.o
  CC      aarch64-softmmu/hw/sd/pxa2xx_mmci.o
  CC      aarch64-softmmu/hw/sd/bcm2835_sdhost.o
  CC      aarch64-softmmu/hw/ssi/omap_spi.o
  CC      aarch64-softmmu/hw/ssi/imx_spi.o
  CC      aarch64-softmmu/hw/timer/exynos4210_mct.o
  CC      aarch64-softmmu/hw/timer/exynos4210_pwm.o
  CC      aarch64-softmmu/hw/timer/exynos4210_rtc.o
  CC      aarch64-softmmu/hw/timer/omap_gptimer.o
  CC      aarch64-softmmu/hw/timer/omap_synctimer.o
  CC      aarch64-softmmu/hw/timer/pxa2xx_timer.o
  CC      aarch64-softmmu/hw/timer/digic-timer.o
  CC      aarch64-softmmu/hw/timer/allwinner-a10-pit.o
  CC      aarch64-softmmu/hw/usb/tusb6010.o
  CC      aarch64-softmmu/hw/vfio/common.o
  CC      aarch64-softmmu/hw/vfio/pci.o
  CC      aarch64-softmmu/hw/vfio/pci-quirks.o
  CC      aarch64-softmmu/hw/vfio/platform.o
  CC      aarch64-softmmu/hw/vfio/calxeda-xgmac.o
  CC      aarch64-softmmu/hw/vfio/amd-xgbe.o
  CC      aarch64-softmmu/hw/vfio/spapr.o
  CC      aarch64-softmmu/hw/virtio/virtio.o
  CC      aarch64-softmmu/hw/virtio/virtio-balloon.o
  CC      aarch64-softmmu/hw/virtio/vhost.o
  CC      aarch64-softmmu/hw/virtio/vhost-backend.o
  CC      aarch64-softmmu/hw/virtio/vhost-user.o
  CC      aarch64-softmmu/hw/virtio/vhost-vsock.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/arm/boot.o
  CC      aarch64-softmmu/hw/arm/collie.o
  CC      aarch64-softmmu/hw/arm/exynos4_boards.o
  CC      aarch64-softmmu/hw/arm/gumstix.o
  CC      aarch64-softmmu/hw/arm/highbank.o
  CC      aarch64-softmmu/hw/arm/digic_boards.o
  CC      aarch64-softmmu/hw/arm/integratorcp.o
  CC      aarch64-softmmu/hw/arm/mainstone.o
  CC      aarch64-softmmu/hw/arm/musicpal.o
  CC      aarch64-softmmu/hw/arm/nseries.o
  CC      aarch64-softmmu/hw/arm/omap_sx1.o
  CC      aarch64-softmmu/hw/arm/palm.o
  CC      aarch64-softmmu/hw/arm/realview.o
  CC      aarch64-softmmu/hw/arm/spitz.o
  CC      aarch64-softmmu/hw/arm/stellaris.o
  CC      aarch64-softmmu/hw/arm/tosa.o
  CC      aarch64-softmmu/hw/arm/versatilepb.o
  CC      aarch64-softmmu/hw/arm/vexpress.o
  CC      aarch64-softmmu/hw/arm/virt.o
  CC      aarch64-softmmu/hw/arm/xilinx_zynq.o
  CC      aarch64-softmmu/hw/arm/z2.o
  CC      aarch64-softmmu/hw/arm/virt-acpi-build.o
  CC      aarch64-softmmu/hw/arm/netduino2.o
  CC      aarch64-softmmu/hw/arm/sysbus-fdt.o
  CC      aarch64-softmmu/hw/arm/armv7m.o
  CC      aarch64-softmmu/hw/arm/exynos4210.o
  CC      aarch64-softmmu/hw/arm/pxa2xx.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_gpio.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_pic.o
  CC      aarch64-softmmu/hw/arm/digic.o
  CC      aarch64-softmmu/hw/arm/omap1.o
  CC      aarch64-softmmu/hw/arm/omap2.o
  CC      aarch64-softmmu/hw/arm/strongarm.o
  CC      aarch64-softmmu/hw/arm/allwinner-a10.o
  CC      aarch64-softmmu/hw/arm/cubieboard.o
  CC      aarch64-softmmu/hw/arm/bcm2835_peripherals.o
  CC      aarch64-softmmu/hw/arm/bcm2836.o
  CC      aarch64-softmmu/hw/arm/raspi.o
  CC      aarch64-softmmu/hw/arm/stm32f205_soc.o
  CC      aarch64-softmmu/hw/arm/xlnx-zynqmp.o
  CC      aarch64-softmmu/hw/arm/xlnx-zcu102.o
  CC      aarch64-softmmu/hw/arm/fsl-imx25.o
  CC      aarch64-softmmu/hw/arm/imx25_pdk.o
  CC      aarch64-softmmu/hw/arm/fsl-imx31.o
  CC      aarch64-softmmu/hw/arm/kzm.o
  CC      aarch64-softmmu/hw/arm/fsl-imx6.o
  CC      aarch64-softmmu/hw/arm/sabrelite.o
  CC      aarch64-softmmu/hw/arm/aspeed_soc.o
  CC      aarch64-softmmu/hw/arm/aspeed.o
  CC      aarch64-softmmu/hw/arm/mps2.o
  CC      aarch64-softmmu/hw/arm/msf2-soc.o
  CC      aarch64-softmmu/hw/arm/msf2-som.o
  CC      aarch64-softmmu/target/arm/arm-semi.o
  CC      aarch64-softmmu/target/arm/machine.o
  CC      aarch64-softmmu/target/arm/psci.o
  CC      aarch64-softmmu/target/arm/arch_dump.o
  CC      aarch64-softmmu/target/arm/monitor.o
  CC      aarch64-softmmu/target/arm/kvm-stub.o
  CC      aarch64-softmmu/target/arm/translate.o
  CC      aarch64-softmmu/target/arm/op_helper.o
  CC      aarch64-softmmu/target/arm/helper.o
  CC      aarch64-softmmu/target/arm/cpu.o
  LINK    x86_64-softmmu/qemu-system-x86_64
  CC      aarch64-softmmu/target/arm/neon_helper.o
  CC      aarch64-softmmu/target/arm/iwmmxt_helper.o
  CC      aarch64-softmmu/target/arm/gdbstub.o
  CC      aarch64-softmmu/target/arm/cpu64.o
  CC      aarch64-softmmu/target/arm/translate-a64.o
  CC      aarch64-softmmu/target/arm/helper-a64.o
  CC      aarch64-softmmu/target/arm/gdbstub64.o
  CC      aarch64-softmmu/target/arm/crypto_helper.o
  CC      aarch64-softmmu/target/arm/arm-powerctl.o
  GEN     trace/generated-helpers.c
  CC      aarch64-softmmu/trace/control-target.o
  CC      aarch64-softmmu/gdbstub-xml.o
  CC      aarch64-softmmu/trace/generated-helpers.o
/tmp/qemu-test/src/target/arm/translate-a64.c: In function ‘handle_shri_with_rndacc’:
/tmp/qemu-test/src/target/arm/translate-a64.c:6370: warning: ‘tcg_src_hi’ may be used uninitialized in this function
/tmp/qemu-test/src/target/arm/translate-a64.c: In function ‘disas_simd_scalar_two_reg_misc’:
/tmp/qemu-test/src/target/arm/translate-a64.c:8097: warning: ‘rmode’ may be used uninitialized in this function
  LINK    aarch64-softmmu/qemu-system-aarch64
  TEST    tests/qapi-schema/alternate-any.out
  TEST    tests/qapi-schema/alternate-base.out
  TEST    tests/qapi-schema/alternate-array.out
  TEST    tests/qapi-schema/alternate-clash.out
  TEST    tests/qapi-schema/alternate-conflict-enum-bool.out
  TEST    tests/qapi-schema/alternate-conflict-dict.out
  TEST    tests/qapi-schema/alternate-conflict-enum-int.out
  TEST    tests/qapi-schema/alternate-conflict-string.out
  TEST    tests/qapi-schema/alternate-conflict-bool-string.out
  TEST    tests/qapi-schema/alternate-conflict-num-string.out
  TEST    tests/qapi-schema/alternate-empty.out
  TEST    tests/qapi-schema/alternate-nested.out
  TEST    tests/qapi-schema/alternate-unknown.out
  TEST    tests/qapi-schema/args-alternate.out
  TEST    tests/qapi-schema/args-any.out
  TEST    tests/qapi-schema/args-array-empty.out
  TEST    tests/qapi-schema/args-array-unknown.out
  TEST    tests/qapi-schema/args-bad-boxed.out
  TEST    tests/qapi-schema/args-boxed-anon.out
  TEST    tests/qapi-schema/args-boxed-empty.out
  TEST    tests/qapi-schema/args-boxed-string.out
  TEST    tests/qapi-schema/args-int.out
  TEST    tests/qapi-schema/args-invalid.out
  TEST    tests/qapi-schema/args-member-array-bad.out
  TEST    tests/qapi-schema/args-member-case.out
  TEST    tests/qapi-schema/args-member-unknown.out
  TEST    tests/qapi-schema/args-name-clash.out
  TEST    tests/qapi-schema/args-union.out
  TEST    tests/qapi-schema/args-unknown.out
  TEST    tests/qapi-schema/bad-base.out
  TEST    tests/qapi-schema/bad-data.out
  TEST    tests/qapi-schema/bad-type-bool.out
  TEST    tests/qapi-schema/bad-ident.out
  TEST    tests/qapi-schema/bad-type-dict.out
  TEST    tests/qapi-schema/bad-type-int.out
  TEST    tests/qapi-schema/base-cycle-direct.out
  TEST    tests/qapi-schema/base-cycle-indirect.out
  TEST    tests/qapi-schema/command-int.out
  TEST    tests/qapi-schema/comments.out
  TEST    tests/qapi-schema/doc-bad-alternate-member.out
  TEST    tests/qapi-schema/doc-bad-command-arg.out
  TEST    tests/qapi-schema/doc-bad-symbol.out
  TEST    tests/qapi-schema/doc-bad-union-member.out
  TEST    tests/qapi-schema/doc-before-pragma.out
  TEST    tests/qapi-schema/doc-before-include.out
  TEST    tests/qapi-schema/doc-duplicated-arg.out
  TEST    tests/qapi-schema/doc-duplicated-return.out
  TEST    tests/qapi-schema/doc-duplicated-since.out
  TEST    tests/qapi-schema/doc-empty-arg.out
  TEST    tests/qapi-schema/doc-empty-section.out
  TEST    tests/qapi-schema/doc-empty-symbol.out
  TEST    tests/qapi-schema/doc-good.out
  TEST    tests/qapi-schema/doc-interleaved-section.out
  TEST    tests/qapi-schema/doc-invalid-end.out
  TEST    tests/qapi-schema/doc-invalid-end2.out
  TEST    tests/qapi-schema/doc-invalid-return.out
  TEST    tests/qapi-schema/doc-invalid-section.out
  TEST    tests/qapi-schema/doc-invalid-start.out
  TEST    tests/qapi-schema/doc-missing.out
  TEST    tests/qapi-schema/doc-missing-colon.out
  TEST    tests/qapi-schema/doc-missing-expr.out
  TEST    tests/qapi-schema/doc-missing-space.out
  TEST    tests/qapi-schema/doc-no-symbol.out
  TEST    tests/qapi-schema/double-data.out
  TEST    tests/qapi-schema/double-type.out
  TEST    tests/qapi-schema/duplicate-key.out
  TEST    tests/qapi-schema/empty.out
  TEST    tests/qapi-schema/enum-bad-name.out
  TEST    tests/qapi-schema/enum-bad-prefix.out
  TEST    tests/qapi-schema/enum-clash-member.out
  TEST    tests/qapi-schema/enum-dict-member.out
  TEST    tests/qapi-schema/enum-int-member.out
  TEST    tests/qapi-schema/enum-member-case.out
  TEST    tests/qapi-schema/enum-missing-data.out
  TEST    tests/qapi-schema/enum-wrong-data.out
  TEST    tests/qapi-schema/escape-outside-string.out
  TEST    tests/qapi-schema/escape-too-big.out
  TEST    tests/qapi-schema/escape-too-short.out
  TEST    tests/qapi-schema/event-boxed-empty.out
  TEST    tests/qapi-schema/event-case.out
  TEST    tests/qapi-schema/event-nest-struct.out
  TEST    tests/qapi-schema/flat-union-array-branch.out
  TEST    tests/qapi-schema/flat-union-bad-base.out
  TEST    tests/qapi-schema/flat-union-bad-discriminator.out
  TEST    tests/qapi-schema/flat-union-base-any.out
  TEST    tests/qapi-schema/flat-union-base-union.out
  TEST    tests/qapi-schema/flat-union-clash-member.out
  TEST    tests/qapi-schema/flat-union-empty.out
  TEST    tests/qapi-schema/flat-union-incomplete-branch.out
  TEST    tests/qapi-schema/flat-union-inline.out
  TEST    tests/qapi-schema/flat-union-int-branch.out
  TEST    tests/qapi-schema/flat-union-invalid-branch-key.out
  TEST    tests/qapi-schema/flat-union-invalid-discriminator.out
  TEST    tests/qapi-schema/flat-union-no-base.out
  TEST    tests/qapi-schema/flat-union-optional-discriminator.out
  TEST    tests/qapi-schema/flat-union-string-discriminator.out
  TEST    tests/qapi-schema/funny-char.out
  TEST    tests/qapi-schema/ident-with-escape.out
  TEST    tests/qapi-schema/include-before-err.out
  TEST    tests/qapi-schema/include-cycle.out
  TEST    tests/qapi-schema/include-extra-junk.out
  TEST    tests/qapi-schema/include-format-err.out
  TEST    tests/qapi-schema/include-nested-err.out
  TEST    tests/qapi-schema/include-no-file.out
  TEST    tests/qapi-schema/include-non-file.out
  TEST    tests/qapi-schema/include-relpath.out
  TEST    tests/qapi-schema/include-repetition.out
  TEST    tests/qapi-schema/include-self-cycle.out
  TEST    tests/qapi-schema/include-simple.out
  TEST    tests/qapi-schema/leading-comma-list.out
  TEST    tests/qapi-schema/indented-expr.out
  TEST    tests/qapi-schema/leading-comma-object.out
  TEST    tests/qapi-schema/missing-colon.out
  TEST    tests/qapi-schema/missing-comma-list.out
  TEST    tests/qapi-schema/missing-comma-object.out
  TEST    tests/qapi-schema/missing-type.out
  TEST    tests/qapi-schema/nested-struct-data.out
  TEST    tests/qapi-schema/non-objects.out
  TEST    tests/qapi-schema/pragma-doc-required-crap.out
  TEST    tests/qapi-schema/pragma-name-case-whitelist-crap.out
  TEST    tests/qapi-schema/pragma-non-dict.out
  TEST    tests/qapi-schema/pragma-extra-junk.out
  TEST    tests/qapi-schema/pragma-returns-whitelist-crap.out
  TEST    tests/qapi-schema/qapi-schema-test.out
  TEST    tests/qapi-schema/quoted-structural-chars.out
  TEST    tests/qapi-schema/redefined-builtin.out
  TEST    tests/qapi-schema/redefined-command.out
  TEST    tests/qapi-schema/redefined-event.out
  TEST    tests/qapi-schema/redefined-type.out
  TEST    tests/qapi-schema/reserved-command-q.out
  TEST    tests/qapi-schema/reserved-enum-q.out
  TEST    tests/qapi-schema/reserved-member-has.out
  TEST    tests/qapi-schema/reserved-member-q.out
  TEST    tests/qapi-schema/reserved-member-u.out
  TEST    tests/qapi-schema/reserved-member-underscore.out
  TEST    tests/qapi-schema/reserved-type-kind.out
  TEST    tests/qapi-schema/reserved-type-list.out
  TEST    tests/qapi-schema/returns-alternate.out
  TEST    tests/qapi-schema/returns-array-bad.out
  TEST    tests/qapi-schema/returns-dict.out
  TEST    tests/qapi-schema/returns-unknown.out
  TEST    tests/qapi-schema/returns-whitelist.out
  TEST    tests/qapi-schema/struct-base-clash-deep.out
  TEST    tests/qapi-schema/struct-base-clash.out
  TEST    tests/qapi-schema/struct-data-invalid.out
  TEST    tests/qapi-schema/struct-member-invalid.out
  TEST    tests/qapi-schema/trailing-comma-list.out
  TEST    tests/qapi-schema/trailing-comma-object.out
  TEST    tests/qapi-schema/type-bypass-bad-gen.out
  TEST    tests/qapi-schema/unclosed-list.out
  TEST    tests/qapi-schema/unclosed-object.out
  TEST    tests/qapi-schema/unclosed-string.out
  TEST    tests/qapi-schema/unicode-str.out
  TEST    tests/qapi-schema/union-base-empty.out
  TEST    tests/qapi-schema/union-base-no-discriminator.out
  TEST    tests/qapi-schema/union-branch-case.out
  TEST    tests/qapi-schema/union-clash-branches.out
  TEST    tests/qapi-schema/union-empty.out
  TEST    tests/qapi-schema/union-invalid-base.out
  TEST    tests/qapi-schema/union-unknown.out
  TEST    tests/qapi-schema/union-optional-branch.out
  TEST    tests/qapi-schema/unknown-escape.out
  TEST    tests/qapi-schema/unknown-expr-key.out
  GEN     tests/qapi-schema/doc-good.test.texi
  CC      tests/check-qdict.o
  CC      tests/test-char.o
  CC      tests/check-qnum.o
  CC      tests/check-qstring.o
  CC      tests/check-qlist.o
  CC      tests/check-qnull.o
  CC      tests/check-qjson.o
  CC      tests/check-qlit.o
  CC      tests/test-qobject-output-visitor.o
  GEN     tests/test-qapi-visit.c
  GEN     tests/test-qapi-types.c
  GEN     tests/test-qapi-event.c
  GEN     tests/test-qmp-introspect.c
  CC      tests/test-clone-visitor.o
  CC      tests/test-qobject-input-visitor.o
  CC      tests/test-qmp-commands.o
  GEN     tests/test-qmp-marshal.c
  CC      tests/test-string-input-visitor.o
  CC      tests/test-string-output-visitor.o
  CC      tests/test-qmp-event.o
  CC      tests/test-coroutine.o
  CC      tests/test-opts-visitor.o
  CC      tests/iothread.o
  CC      tests/test-visitor-serialization.o
  CC      tests/test-iov.o
  CC      tests/test-aio.o
  CC      tests/test-aio-multithread.o
  CC      tests/test-thread-pool.o
  CC      tests/test-hbitmap.o
  CC      tests/test-throttle.o
  CC      tests/test-blockjob.o
  CC      tests/test-blockjob-txn.o
  CC      tests/test-x86-cpuid.o
  CC      tests/test-xbzrle.o
  CC      tests/test-vmstate.o
  CC      tests/test-cutils.o
  CC      tests/test-shift128.o
  CC      tests/test-mul64.o
  CC      tests/test-int128.o
  CC      tests/rcutorture.o
  CC      tests/test-rcu-list.o
  CC      tests/test-qdist.o
  CC      tests/test-qht.o
  CC      tests/qht-bench.o
  CC      tests/test-qht-par.o
  CC      tests/test-bitops.o
/tmp/qemu-test/src/tests/test-int128.c:180: warning: ‘__noclone__’ attribute directive ignored
  CC      tests/test-bitcnt.o
  CC      tests/check-qom-proplist.o
  CC      tests/check-qom-interface.o
  CC      tests/test-qemu-opts.o
  CC      tests/test-keyval.o
  CC      tests/test-write-threshold.o
  CC      tests/test-crypto-hash.o
  CC      tests/test-crypto-hmac.o
  CC      tests/test-crypto-cipher.o
  CC      tests/test-crypto-secret.o
  CC      tests/test-qga.o
  CC      tests/libqtest.o
  CC      tests/test-timed-average.o
  CC      tests/test-io-task.o
  CC      tests/test-io-channel-socket.o
  CC      tests/test-io-channel-file.o
  CC      tests/io-channel-helpers.o
  CC      tests/test-io-channel-command.o
  CC      tests/test-io-channel-buffer.o
  CC      tests/test-base64.o
  CC      tests/test-crypto-ivgen.o
  CC      tests/test-crypto-afsplit.o
  CC      tests/test-crypto-block.o
  CC      tests/test-logging.o
  CC      tests/test-crypto-xts.o
  CC      tests/test-replication.o
  CC      tests/test-bufferiszero.o
  CC      tests/test-uuid.o
  CC      tests/ptimer-test.o
  CC      tests/test-qapi-util.o
  CC      tests/ptimer-test-stubs.o
  CC      tests/vhost-user-test.o
  CC      tests/libqos/pci.o
  CC      tests/libqos/fw_cfg.o
  CC      tests/libqos/malloc.o
  CC      tests/libqos/i2c.o
  CC      tests/libqos/libqos.o
  CC      tests/libqos/malloc-spapr.o
  CC      tests/libqos/libqos-spapr.o
  CC      tests/libqos/rtas.o
  CC      tests/libqos/pci-spapr.o
  CC      tests/libqos/pci-pc.o
  CC      tests/libqos/malloc-pc.o
  CC      tests/libqos/libqos-pc.o
  CC      tests/libqos/virtio.o
  CC      tests/libqos/ahci.o
  CC      tests/libqos/virtio-pci.o
  CC      tests/libqos/virtio-mmio.o
  CC      tests/libqos/malloc-generic.o
  CC      tests/endianness-test.o
  CC      tests/fdc-test.o
  CC      tests/ide-test.o
  CC      tests/ahci-test.o
  CC      tests/hd-geo-test.o
  CC      tests/boot-order-test.o
  CC      tests/bios-tables-test.o
  CC      tests/boot-sector.o
  CC      tests/acpi-utils.o
  CC      tests/boot-serial-test.o
  CC      tests/pxe-test.o
  CC      tests/rtc-test.o
  CC      tests/ipmi-kcs-test.o
  CC      tests/ipmi-bt-test.o
  CC      tests/i440fx-test.o
  CC      tests/fw_cfg-test.o
  CC      tests/drive_del-test.o
  CC      tests/wdt_ib700-test.o
  CC      tests/tco-test.o
  CC      tests/e1000-test.o
  CC      tests/e1000e-test.o
  CC      tests/rtl8139-test.o
  CC      tests/pcnet-test.o
  CC      tests/eepro100-test.o
  CC      tests/ne2000-test.o
  CC      tests/nvme-test.o
  CC      tests/ac97-test.o
  CC      tests/es1370-test.o
  CC      tests/virtio-net-test.o
  CC      tests/virtio-balloon-test.o
  CC      tests/virtio-blk-test.o
  CC      tests/virtio-rng-test.o
  CC      tests/virtio-scsi-test.o
  CC      tests/virtio-serial-test.o
  CC      tests/virtio-console-test.o
  CC      tests/tpci200-test.o
  CC      tests/ipoctal232-test.o
  CC      tests/display-vga-test.o
  CC      tests/intel-hda-test.o
  CC      tests/ivshmem-test.o
  CC      tests/megasas-test.o
  CC      tests/vmxnet3-test.o
  CC      tests/pvpanic-test.o
  CC      tests/i82801b11-test.o
  CC      tests/ioh3420-test.o
  CC      tests/usb-hcd-ohci-test.o
  CC      tests/libqos/usb.o
  CC      tests/usb-hcd-uhci-test.o
  CC      tests/usb-hcd-ehci-test.o
  CC      tests/pc-cpu-test.o
  CC      tests/usb-hcd-xhci-test.o
  CC      tests/q35-test.o
  CC      tests/vmgenid-test.o
  CC      tests/test-netfilter.o
  CC      tests/test-filter-mirror.o
  CC      tests/test-filter-redirector.o
  CC      tests/postcopy-test.o
  CC      tests/test-x86-cpuid-compat.o
  CC      tests/numa-test.o
  CC      tests/qmp-test.o
  CC      tests/device-introspect-test.o
  CC      tests/qom-test.o
  CC      tests/test-hmp.o
  LINK    tests/check-qdict
  LINK    tests/test-char
  LINK    tests/check-qnum
  LINK    tests/check-qstring
  LINK    tests/check-qlist
  LINK    tests/check-qnull
  LINK    tests/check-qjson
  LINK    tests/check-qlit
  CC      tests/test-qapi-visit.o
  CC      tests/test-qapi-event.o
  CC      tests/test-qapi-types.o
  CC      tests/test-qmp-marshal.o
  CC      tests/test-qmp-introspect.o
  LINK    tests/test-coroutine
  LINK    tests/test-visitor-serialization
  LINK    tests/test-iov
  LINK    tests/test-aio
  LINK    tests/test-aio-multithread
  LINK    tests/test-throttle
  LINK    tests/test-thread-pool
  LINK    tests/test-hbitmap
  LINK    tests/test-blockjob
  LINK    tests/test-blockjob-txn
  LINK    tests/test-x86-cpuid
  LINK    tests/test-xbzrle
  LINK    tests/test-vmstate
  LINK    tests/test-cutils
  LINK    tests/test-shift128
  LINK    tests/test-mul64
  LINK    tests/test-int128
  LINK    tests/rcutorture
  LINK    tests/test-rcu-list
  LINK    tests/test-qdist
  LINK    tests/test-qht
  LINK    tests/qht-bench
  LINK    tests/test-bitops
  LINK    tests/test-bitcnt
  LINK    tests/check-qom-interface
  LINK    tests/check-qom-proplist
  LINK    tests/test-qemu-opts
  LINK    tests/test-keyval
  LINK    tests/test-write-threshold
  LINK    tests/test-crypto-hash
  LINK    tests/test-crypto-hmac
  LINK    tests/test-crypto-cipher
  LINK    tests/test-crypto-secret
  LINK    tests/test-qga
  LINK    tests/test-timed-average
  LINK    tests/test-io-task
  LINK    tests/test-io-channel-socket
  LINK    tests/test-io-channel-file
  LINK    tests/test-io-channel-command
  LINK    tests/test-io-channel-buffer
  LINK    tests/test-base64
  LINK    tests/test-crypto-ivgen
  LINK    tests/test-crypto-afsplit
  LINK    tests/test-crypto-xts
  LINK    tests/test-crypto-block
  LINK    tests/test-logging
  LINK    tests/test-replication
  LINK    tests/test-bufferiszero
  LINK    tests/test-uuid
  LINK    tests/ptimer-test
  LINK    tests/test-qapi-util
  LINK    tests/vhost-user-test
  LINK    tests/endianness-test
  LINK    tests/fdc-test
  LINK    tests/ide-test
  LINK    tests/ahci-test
  LINK    tests/hd-geo-test
  LINK    tests/boot-order-test
  LINK    tests/bios-tables-test
  LINK    tests/boot-serial-test
  LINK    tests/pxe-test
  LINK    tests/rtc-test
  LINK    tests/ipmi-kcs-test
  LINK    tests/ipmi-bt-test
  LINK    tests/i440fx-test
  LINK    tests/fw_cfg-test
  LINK    tests/drive_del-test
  LINK    tests/wdt_ib700-test
  LINK    tests/tco-test
  LINK    tests/e1000-test
  LINK    tests/e1000e-test
  LINK    tests/rtl8139-test
  LINK    tests/pcnet-test
  LINK    tests/eepro100-test
  LINK    tests/ne2000-test
  LINK    tests/nvme-test
  LINK    tests/ac97-test
  LINK    tests/es1370-test
  LINK    tests/virtio-net-test
  LINK    tests/virtio-balloon-test
  LINK    tests/virtio-blk-test
  LINK    tests/virtio-rng-test
  LINK    tests/virtio-scsi-test
  LINK    tests/virtio-serial-test
  LINK    tests/virtio-console-test
  LINK    tests/tpci200-test
  LINK    tests/ipoctal232-test
  LINK    tests/display-vga-test
  LINK    tests/intel-hda-test
  LINK    tests/ivshmem-test
  LINK    tests/megasas-test
  LINK    tests/vmxnet3-test
  LINK    tests/pvpanic-test
  LINK    tests/i82801b11-test
  LINK    tests/ioh3420-test
  LINK    tests/usb-hcd-ohci-test
  LINK    tests/usb-hcd-uhci-test
  LINK    tests/usb-hcd-ehci-test
  LINK    tests/usb-hcd-xhci-test
  LINK    tests/pc-cpu-test
  LINK    tests/q35-test
  LINK    tests/vmgenid-test
  LINK    tests/test-netfilter
  LINK    tests/test-filter-mirror
  LINK    tests/test-filter-redirector
  LINK    tests/postcopy-test
  LINK    tests/test-x86-cpuid-compat
  LINK    tests/numa-test
  LINK    tests/qmp-test
  LINK    tests/device-introspect-test
  LINK    tests/qom-test
  LINK    tests/test-hmp
  GTESTER tests/test-char
  GTESTER tests/check-qdict
  GTESTER tests/check-qnum
  GTESTER tests/check-qstring
  GTESTER tests/check-qlist
  GTESTER tests/check-qnull
  GTESTER tests/check-qjson
  GTESTER tests/check-qlit
  LINK    tests/test-qobject-output-visitor
  LINK    tests/test-clone-visitor
  LINK    tests/test-qobject-input-visitor
  LINK    tests/test-qmp-commands
  LINK    tests/test-string-input-visitor
  LINK    tests/test-string-output-visitor
  LINK    tests/test-qmp-event
  LINK    tests/test-opts-visitor
  GTESTER tests/test-coroutine
  GTESTER tests/test-visitor-serialization
  GTESTER tests/test-iov
  GTESTER tests/test-aio
  GTESTER tests/test-throttle
  GTESTER tests/test-aio-multithread
  GTESTER tests/test-thread-pool
  GTESTER tests/test-hbitmap
  GTESTER tests/test-blockjob
  GTESTER tests/test-blockjob-txn
  GTESTER tests/test-x86-cpuid
  GTESTER tests/test-xbzrle
  GTESTER tests/test-vmstate
Failed to load simple/primitive:b_1
Failed to load simple/primitive:i64_2
Failed to load simple/primitive:i32_1
Failed to load simple/primitive:i32_1
Failed to load test/with_tmp:a
Failed to load test/tmp_child_parent:f
Failed to load test/tmp_child:parent
Failed to load test/with_tmp:tmp
Failed to load test/tmp_child:diff
Failed to load test/with_tmp:tmp
Failed to load test/tmp_child:diff
Failed to load test/with_tmp:tmp
  GTESTER tests/test-cutils
  GTESTER tests/test-shift128
  GTESTER tests/test-mul64
  GTESTER tests/test-int128
  GTESTER tests/rcutorture
  GTESTER tests/test-rcu-list
  GTESTER tests/test-qdist
  GTESTER tests/test-qht
  LINK    tests/test-qht-par
  GTESTER tests/test-bitops
  GTESTER tests/test-bitcnt
  GTESTER tests/check-qom-interface
  GTESTER tests/check-qom-proplist
  GTESTER tests/test-qemu-opts
  GTESTER tests/test-keyval
  GTESTER tests/test-write-threshold
  GTESTER tests/test-crypto-hash
  GTESTER tests/test-crypto-hmac
  GTESTER tests/test-crypto-cipher
  GTESTER tests/test-crypto-secret
  GTESTER tests/test-qga
  GTESTER tests/test-timed-average
  GTESTER tests/test-io-task
  GTESTER tests/test-io-channel-socket
  GTESTER tests/test-io-channel-file
  GTESTER tests/test-io-channel-command
  GTESTER tests/test-io-channel-buffer
  GTESTER tests/test-base64
  GTESTER tests/test-crypto-ivgen
  GTESTER tests/test-crypto-afsplit
  GTESTER tests/test-crypto-xts
  GTESTER tests/test-crypto-block
  GTESTER tests/test-logging
  GTESTER tests/test-replication
  GTESTER tests/test-bufferiszero
  GTESTER tests/test-uuid
  GTESTER tests/ptimer-test
  GTESTER tests/test-qapi-util
  GTESTER check-qtest-x86_64
  GTESTER check-qtest-aarch64
  GTESTER tests/test-qobject-output-visitor
  GTESTER tests/test-clone-visitor
  GTESTER tests/test-qmp-commands
  GTESTER tests/test-qobject-input-visitor
  GTESTER tests/test-string-input-visitor
  GTESTER tests/test-string-output-visitor
  GTESTER tests/test-qmp-event
  GTESTER tests/test-opts-visitor
  GTESTER tests/test-qht-par
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory
qemu-system-x86_64: Back to tcg accelerator
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-wtm44c4r/src'

real	7m57.605s
user	0m1.680s
sys	0m1.796s
  BUILD   min-glib
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-wtm44c4r/src'
  GEN     docker-src.2017-09-25-20.32.29.17471/qemu.tar
  COPY    RUNNER
    RUN test-build in qemu:min-glib 
Environment variables:
HOSTNAME=1f151160d8d8
TERM=xterm
MAKEFLAGS= -j8
HISTSIZE=1000
J=8
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
LANG=en_US.UTF-8
TARGET_LIST=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
DEBUG=
G_BROKEN_FILENAMES=1
CCACHE_HASHDIR=
_=/usr/bin/env

Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/tmp/qemu-test/install
No C++ compiler available; disabling C++ specific optional code
Install prefix    /tmp/qemu-test/install
BIOS directory    /tmp/qemu-test/install/share/qemu
binary directory  /tmp/qemu-test/install/bin
library directory /tmp/qemu-test/install/lib
module directory  /tmp/qemu-test/install/lib/qemu
libexec directory /tmp/qemu-test/install/libexec
include directory /tmp/qemu-test/install/include
config directory  /tmp/qemu-test/install/etc
local state directory   /tmp/qemu-test/install/var
Manual directory  /tmp/qemu-test/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /tmp/qemu-test/src
C compiler        cc
Host C compiler   cc
C++ compiler      
Objective-C compiler cc
ARFLAGS           rv
CFLAGS            -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -I/usr/include/pixman-1   -I$(SRC_PATH)/dtc/libfdt -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include   -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all
LDFLAGS           -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g 
make              make
install           install
python            python -B
smbd              /usr/sbin/smbd
module support    no
host CPU          x86_64
host big endian   no
target list       x86_64-softmmu aarch64-softmmu
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
SDL support       yes (1.2.14)
GTK support       no 
GTK GL support    no
VTE support       no 
TLS priority      NORMAL
GNUTLS support    no
GNUTLS rnd        no
libgcrypt         no
libgcrypt kdf     no
nettle            no 
nettle kdf        no
libtasn1          no
curses support    no
virgl support     no
curl support      no
mingw32 support   no
Audio drivers     oss
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    no
Multipath support no
VNC support       yes
VNC SASL support  no
VNC JPEG support  no
VNC PNG support   no
xen support       no
brlapi support    no
bluez  support    no
Documentation     no
PIE               yes
vde support       no
netmap support    no
Linux AIO support no
ATTR/XATTR support yes
Install blobs     yes
KVM support       yes
HAX support       no
TCG support       yes
TCG debug enabled no
TCG interpreter   no
RDMA support      no
fdt support       yes
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends    log
spice support     no 
rbd support       no
xfsctl support    no
smartcard support no
libusb            no
usb net redir     no
OpenGL support    no
OpenGL dmabufs    no
libiscsi support  no
libnfs support    no
build guest agent yes
QGA VSS support   no
QGA w32 disk info no
QGA MSI support   no
seccomp support   no
coroutine backend ucontext
coroutine pool    yes
debug stack usage no
crypto afalg      no
GlusterFS support no
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   no
TPM passthrough   yes
QOM debugging     yes
Live block migration yes
lzo support       no
snappy support    no
bzip2 support     no
NUMA host support no
tcmalloc support  no
jemalloc support  no
avx2 optimization no
replication support yes
VxHS block device no
mkdir -p dtc/libfdt
mkdir -p dtc/tests
  GEN     x86_64-softmmu/config-devices.mak.tmp
  GEN     aarch64-softmmu/config-devices.mak.tmp
  GEN     qemu-options.def
  GEN     config-host.h
  GEN     qapi-types.h
  GEN     qapi-visit.h
  GEN     qmp-commands.h
  GEN     qapi-event.h
  GEN     x86_64-softmmu/config-devices.mak
  GEN     aarch64-softmmu/config-devices.mak
  GEN     qmp-marshal.c
  GEN     qapi-types.c
  GEN     qapi-visit.c
  GEN     qapi-event.c
  GEN     qmp-introspect.h
  GEN     qmp-introspect.c
  GEN     trace/generated-tcg-tracers.h
  GEN     trace/generated-helpers-wrappers.h
  GEN     trace/generated-helpers.h
  GEN     trace/generated-helpers.c
  GEN     module_block.h
  GEN     tests/test-qapi-types.h
  GEN     tests/test-qapi-visit.h
  GEN     tests/test-qmp-commands.h
  GEN     tests/test-qapi-event.h
  GEN     tests/test-qmp-introspect.h
  GEN     trace-root.h
  GEN     util/trace.h
  GEN     crypto/trace.h
  GEN     io/trace.h
  GEN     migration/trace.h
  GEN     block/trace.h
  GEN     chardev/trace.h
  GEN     hw/block/trace.h
  GEN     hw/block/dataplane/trace.h
  GEN     hw/char/trace.h
  GEN     hw/intc/trace.h
  GEN     hw/net/trace.h
  GEN     hw/virtio/trace.h
  GEN     hw/audio/trace.h
  GEN     hw/misc/trace.h
  GEN     hw/usb/trace.h
  GEN     hw/scsi/trace.h
  GEN     hw/nvram/trace.h
  GEN     hw/display/trace.h
  GEN     hw/input/trace.h
  GEN     hw/timer/trace.h
  GEN     hw/dma/trace.h
  GEN     hw/sparc/trace.h
  GEN     hw/sd/trace.h
  GEN     hw/isa/trace.h
  GEN     hw/mem/trace.h
  GEN     hw/i386/trace.h
  GEN     hw/i386/xen/trace.h
  GEN     hw/9pfs/trace.h
  GEN     hw/ppc/trace.h
  GEN     hw/pci/trace.h
  GEN     hw/s390x/trace.h
  GEN     hw/vfio/trace.h
  GEN     hw/acpi/trace.h
  GEN     hw/arm/trace.h
  GEN     hw/alpha/trace.h
  GEN     hw/xen/trace.h
  GEN     hw/ide/trace.h
  GEN     ui/trace.h
  GEN     audio/trace.h
  GEN     net/trace.h
  GEN     target/arm/trace.h
  GEN     target/i386/trace.h
  GEN     target/mips/trace.h
  GEN     target/sparc/trace.h
  GEN     target/s390x/trace.h
  GEN     target/ppc/trace.h
  GEN     qom/trace.h
  GEN     linux-user/trace.h
  GEN     qapi/trace.h
  GEN     accel/tcg/trace.h
  GEN     accel/kvm/trace.h
  GEN     nbd/trace.h
  GEN     scsi/trace.h
  GEN     trace-root.c
  GEN     util/trace.c
  GEN     crypto/trace.c
  GEN     io/trace.c
  GEN     migration/trace.c
  GEN     block/trace.c
  GEN     chardev/trace.c
  GEN     hw/block/trace.c
  GEN     hw/block/dataplane/trace.c
  GEN     hw/char/trace.c
  GEN     hw/intc/trace.c
  GEN     hw/net/trace.c
  GEN     hw/virtio/trace.c
  GEN     hw/audio/trace.c
  GEN     hw/misc/trace.c
  GEN     hw/usb/trace.c
  GEN     hw/scsi/trace.c
  GEN     hw/nvram/trace.c
  GEN     hw/display/trace.c
  GEN     hw/input/trace.c
  GEN     hw/timer/trace.c
  GEN     hw/dma/trace.c
  GEN     hw/sparc/trace.c
  GEN     hw/sd/trace.c
  GEN     hw/isa/trace.c
  GEN     hw/mem/trace.c
  GEN     hw/i386/trace.c
  GEN     hw/i386/xen/trace.c
  GEN     hw/9pfs/trace.c
  GEN     hw/ppc/trace.c
  GEN     hw/pci/trace.c
  GEN     hw/s390x/trace.c
  GEN     hw/vfio/trace.c
  GEN     hw/acpi/trace.c
  GEN     hw/arm/trace.c
  GEN     hw/alpha/trace.c
  GEN     hw/xen/trace.c
  GEN     hw/ide/trace.c
  GEN     ui/trace.c
  GEN     audio/trace.c
  GEN     net/trace.c
  GEN     target/arm/trace.c
  GEN     target/i386/trace.c
  GEN     target/mips/trace.c
  GEN     target/sparc/trace.c
  GEN     target/s390x/trace.c
  GEN     target/ppc/trace.c
  GEN     qom/trace.c
  GEN     linux-user/trace.c
  GEN     qapi/trace.c
  GEN     accel/tcg/trace.c
  GEN     accel/kvm/trace.c
  GEN     nbd/trace.c
  GEN     scsi/trace.c
  GEN     config-all-devices.mak
	 DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
	 DEP /tmp/qemu-test/src/dtc/tests/testutils.c
	 DEP /tmp/qemu-test/src/dtc/tests/trees.S
	 DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
	 DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
	 DEP /tmp/qemu-test/src/dtc/tests/check_path.c
	 DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
	 DEP /tmp/qemu-test/src/dtc/tests/overlay.c
	 DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
	 DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
	 DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
	 DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
	 DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
	 DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
	 DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
	 DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
	 DEP /tmp/qemu-test/src/dtc/tests/incbin.c
	 DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
	 DEP /tmp/qemu-test/src/dtc/tests/path-references.c
	 DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
	 DEP /tmp/qemu-test/src/dtc/tests/references.c
	 DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
	 DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
	 DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
	 DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
	 DEP /tmp/qemu-test/src/dtc/tests/del_node.c
	 DEP /tmp/qemu-test/src/dtc/tests/del_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/setprop.c
	 DEP /tmp/qemu-test/src/dtc/tests/set_name.c
	 DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
	 DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
	 DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
	 DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
	 DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
	 DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
	 DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
	 DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
	 DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
	 DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
	 DEP /tmp/qemu-test/src/dtc/tests/notfound.c
	 DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
	 DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
	 DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
	 DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_path.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
	 DEP /tmp/qemu-test/src/dtc/tests/getprop.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_name.c
	 DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
	 DEP /tmp/qemu-test/src/dtc/tests/find_property.c
	 DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
	 DEP /tmp/qemu-test/src/dtc/tests/root_node.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
	 DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
	 DEP /tmp/qemu-test/src/dtc/util.c
	 DEP /tmp/qemu-test/src/dtc/fdtget.c
	 DEP /tmp/qemu-test/src/dtc/fdtput.c
	 DEP /tmp/qemu-test/src/dtc/fdtdump.c
	 LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
	 DEP /tmp/qemu-test/src/dtc/srcpos.c
	 BISON dtc-parser.tab.c
make[1]: bison: Command not found
	 DEP /tmp/qemu-test/src/dtc/treesource.c
	 LEX dtc-lexer.lex.c
make[1]: flex: Command not found
	 DEP /tmp/qemu-test/src/dtc/livetree.c
	 DEP /tmp/qemu-test/src/dtc/fstree.c
	 DEP /tmp/qemu-test/src/dtc/flattree.c
	 DEP /tmp/qemu-test/src/dtc/data.c
	 DEP /tmp/qemu-test/src/dtc/dtc.c
	 DEP /tmp/qemu-test/src/dtc/checks.c
	CHK version_gen.h
	 BISON dtc-parser.tab.c
make[1]: bison: Command not found
	 LEX convert-dtsv0-lexer.lex.c
	 LEX dtc-lexer.lex.c
make[1]: flex: Command not found
make[1]: flex: Command not found
	UPD version_gen.h
	 DEP /tmp/qemu-test/src/dtc/util.c
	 LEX convert-dtsv0-lexer.lex.c
make[1]: flex: Command not found
	 BISON dtc-parser.tab.c
make[1]: bison: Command not found
	 LEX dtc-lexer.lex.c
make[1]: flex: Command not found
	 CC libfdt/fdt_ro.o
	 CC libfdt/fdt.o
	 CC libfdt/fdt_wip.o
	 CC libfdt/fdt_sw.o
	 CC libfdt/fdt_rw.o
	 CC libfdt/fdt_empty_tree.o
	 CC libfdt/fdt_strerror.o
	 CC libfdt/fdt_addresses.o
	 CC libfdt/fdt_overlay.o
	 AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
	 LEX convert-dtsv0-lexer.lex.c
	 BISON dtc-parser.tab.c
make[1]: flex: Command not found
make[1]: bison: Command not found
	 LEX dtc-lexer.lex.c
make[1]: flex: Command not found
  CC      tests/qemu-iotests/socket_scm_helper.o
  CC      qmp-introspect.o
  CC      qapi-types.o
  CC      qapi/qapi-visit-core.o
  CC      qapi-visit.o
  CC      qapi/qapi-dealloc-visitor.o
  CC      qapi-event.o
  CC      qapi/qobject-input-visitor.o
  CC      qapi/qobject-output-visitor.o
  CC      qapi/qmp-registry.o
  CC      qapi/qmp-dispatch.o
  CC      qapi/string-input-visitor.o
  CC      qapi/string-output-visitor.o
  CC      qapi/opts-visitor.o
  CC      qapi/qapi-clone-visitor.o
  CC      qapi/qmp-event.o
  CC      qapi/qapi-util.o
  CC      qobject/qnull.o
  CC      qobject/qnum.o
  CC      qobject/qstring.o
  CC      qobject/qdict.o
  CC      qobject/qlist.o
  CC      qobject/qbool.o
  CC      qobject/qlit.o
  CC      qobject/qjson.o
  CC      qobject/qobject.o
  CC      qobject/json-lexer.o
  CC      qobject/json-streamer.o
  CC      qobject/json-parser.o
  CC      trace/control.o
  CC      trace/qmp.o
  CC      util/osdep.o
  CC      util/cutils.o
  CC      util/unicode.o
  CC      util/qemu-timer-common.o
  CC      util/bufferiszero.o
  CC      util/lockcnt.o
  CC      util/aiocb.o
  CC      util/async.o
  CC      util/thread-pool.o
  CC      util/qemu-timer.o
  CC      util/main-loop.o
  CC      util/iohandler.o
  CC      util/aio-posix.o
  CC      util/compatfd.o
  CC      util/event_notifier-posix.o
  CC      util/mmap-alloc.o
  CC      util/oslib-posix.o
  CC      util/qemu-openpty.o
  CC      util/qemu-thread-posix.o
  CC      util/memfd.o
  CC      util/envlist.o
  CC      util/path.o
  CC      util/module.o
  CC      util/host-utils.o
  CC      util/bitmap.o
  CC      util/bitops.o
  CC      util/hbitmap.o
  CC      util/fifo8.o
  CC      util/acl.o
  CC      util/cacheinfo.o
  CC      util/error.o
  CC      util/qemu-error.o
  CC      util/id.o
  CC      util/iov.o
  CC      util/qemu-config.o
  CC      util/qemu-sockets.o
  CC      util/uri.o
  CC      util/notify.o
  CC      util/qemu-progress.o
  CC      util/qemu-option.o
  CC      util/keyval.o
  CC      util/hexdump.o
  CC      util/crc32c.o
  CC      util/uuid.o
  CC      util/throttle.o
  CC      util/getauxval.o
  CC      util/readline.o
  CC      util/rcu.o
  CC      util/qemu-coroutine.o
  CC      util/qemu-coroutine-lock.o
  CC      util/qemu-coroutine-io.o
  CC      util/qemu-coroutine-sleep.o
  CC      util/coroutine-ucontext.o
  CC      util/buffer.o
  CC      util/timed-average.o
  CC      util/base64.o
  CC      util/log.o
  CC      util/qdist.o
  CC      util/qht.o
  CC      util/range.o
  CC      util/stats64.o
  CC      util/systemd.o
  CC      trace-root.o
  CC      util/trace.o
  CC      crypto/trace.o
  CC      io/trace.o
  CC      migration/trace.o
  CC      block/trace.o
  CC      chardev/trace.o
  CC      hw/block/trace.o
  CC      hw/block/dataplane/trace.o
  CC      hw/char/trace.o
  CC      hw/intc/trace.o
  CC      hw/net/trace.o
  CC      hw/virtio/trace.o
  CC      hw/audio/trace.o
  CC      hw/misc/trace.o
  CC      hw/usb/trace.o
  CC      hw/scsi/trace.o
  CC      hw/nvram/trace.o
  CC      hw/display/trace.o
  CC      hw/input/trace.o
  CC      hw/dma/trace.o
  CC      hw/timer/trace.o
  CC      hw/sparc/trace.o
  CC      hw/sd/trace.o
  CC      hw/isa/trace.o
  CC      hw/mem/trace.o
  CC      hw/i386/trace.o
  CC      hw/9pfs/trace.o
  CC      hw/i386/xen/trace.o
  CC      hw/ppc/trace.o
  CC      hw/pci/trace.o
  CC      hw/s390x/trace.o
  CC      hw/vfio/trace.o
  CC      hw/acpi/trace.o
  CC      hw/arm/trace.o
  CC      hw/alpha/trace.o
  CC      hw/xen/trace.o
  CC      hw/ide/trace.o
  CC      ui/trace.o
  CC      audio/trace.o
  CC      net/trace.o
  CC      target/arm/trace.o
  CC      target/i386/trace.o
  CC      target/mips/trace.o
  CC      target/sparc/trace.o
  CC      target/s390x/trace.o
  CC      target/ppc/trace.o
  CC      qom/trace.o
  CC      linux-user/trace.o
  CC      qapi/trace.o
  CC      accel/tcg/trace.o
  CC      accel/kvm/trace.o
  CC      nbd/trace.o
  CC      scsi/trace.o
  CC      crypto/pbkdf-stub.o
  CC      stubs/arch-query-cpu-def.o
  CC      stubs/arch-query-cpu-model-expansion.o
  CC      stubs/arch-query-cpu-model-comparison.o
  CC      stubs/arch-query-cpu-model-baseline.o
  CC      stubs/bdrv-next-monitor-owned.o
  CC      stubs/blk-commit-all.o
  CC      stubs/blockdev-close-all-bdrv-states.o
  CC      stubs/clock-warp.o
  CC      stubs/cpu-get-clock.o
  CC      stubs/cpu-get-icount.o
  CC      stubs/dump.o
  CC      stubs/error-printf.o
  CC      stubs/fdset.o
  CC      stubs/gdbstub.o
  CC      stubs/get-vm-name.o
  CC      stubs/iothread.o
  CC      stubs/iothread-lock.o
  CC      stubs/is-daemonized.o
  CC      stubs/machine-init-done.o
  CC      stubs/migr-blocker.o
  CC      stubs/change-state-handler.o
  CC      stubs/monitor.o
  CC      stubs/notify-event.o
  CC      stubs/qtest.o
  CC      stubs/replay.o
  CC      stubs/runstate-check.o
  CC      stubs/set-fd-handler.o
  CC      stubs/slirp.o
  CC      stubs/sysbus.o
  CC      stubs/trace-control.o
  CC      stubs/uuid.o
  CC      stubs/vm-stop.o
  CC      stubs/vmstate.o
  CC      stubs/qmp_pc_dimm.o
  CC      stubs/target-monitor-defs.o
  CC      stubs/target-get-monitor-def.o
  CC      stubs/pc_madt_cpu_entry.o
  CC      stubs/vmgenid.o
  CC      stubs/xen-common.o
  CC      stubs/xen-hvm.o
  CC      stubs/pci-host-piix.o
  GEN     qga/qapi-generated/qga-qapi-types.h
  GEN     qga/qapi-generated/qga-qapi-visit.h
  GEN     qga/qapi-generated/qga-qmp-commands.h
  GEN     qga/qapi-generated/qga-qapi-types.c
  GEN     qga/qapi-generated/qga-qapi-visit.c
  GEN     qga/qapi-generated/qga-qmp-marshal.c
  CC      contrib/ivshmem-client/ivshmem-client.o
  CC      contrib/ivshmem-client/main.o
  CC      contrib/ivshmem-server/ivshmem-server.o
  CC      contrib/ivshmem-server/main.o
  CC      qemu-nbd.o
  CC      block.o
  CC      blockjob.o
  CC      qemu-io-cmds.o
  CC      replication.o
  CC      block/raw-format.o
  CC      block/qcow.o
  CC      block/vdi.o
  CC      block/vmdk.o
  CC      block/cloop.o
  CC      block/bochs.o
  CC      block/vpc.o
  CC      block/vvfat.o
  CC      block/dmg.o
  CC      block/qcow2.o
  CC      block/qcow2-refcount.o
  CC      block/qcow2-cluster.o
  CC      block/qcow2-snapshot.o
  CC      block/qcow2-cache.o
  CC      block/qcow2-bitmap.o
  CC      block/qed.o
  CC      block/qed-l2-cache.o
  CC      block/qed-table.o
  CC      block/qed-cluster.o
  CC      block/qed-check.o
  CC      block/vhdx.o
  CC      block/vhdx-endian.o
  CC      block/vhdx-log.o
  CC      block/quorum.o
  CC      block/parallels.o
  CC      block/blkdebug.o
  CC      block/blkverify.o
  CC      block/blkreplay.o
  CC      block/block-backend.o
  CC      block/snapshot.o
  CC      block/qapi.o
  CC      block/null.o
  CC      block/file-posix.o
  CC      block/mirror.o
  CC      block/commit.o
  CC      block/io.o
  CC      block/throttle-groups.o
  CC      block/nbd.o
  CC      block/nbd-client.o
  CC      block/sheepdog.o
  CC      block/accounting.o
  CC      block/dirty-bitmap.o
  CC      block/write-threshold.o
  CC      block/backup.o
  CC      block/replication.o
  CC      block/throttle.o
  CC      block/crypto.o
  CC      nbd/server.o
  CC      nbd/client.o
  CC      nbd/common.o
  CC      scsi/pr-manager.o
  CC      scsi/utils.o
  CC      scsi/pr-manager-helper.o
  CC      crypto/init.o
  CC      crypto/hash.o
  CC      crypto/hash-glib.o
  CC      crypto/hmac.o
  CC      crypto/hmac-glib.o
  CC      crypto/aes.o
  CC      crypto/desrfb.o
  CC      crypto/cipher.o
  CC      crypto/tlscreds.o
  CC      crypto/tlscredsanon.o
  CC      crypto/tlssession.o
  CC      crypto/tlscredsx509.o
  CC      crypto/secret.o
  CC      crypto/random-platform.o
  CC      crypto/pbkdf.o
  CC      crypto/ivgen-essiv.o
  CC      crypto/ivgen.o
  CC      crypto/ivgen-plain.o
  CC      crypto/ivgen-plain64.o
  CC      crypto/afsplit.o
  CC      crypto/xts.o
  CC      crypto/block.o
  CC      crypto/block-qcow.o
  CC      crypto/block-luks.o
  CC      io/channel.o
  CC      io/channel-buffer.o
  CC      io/channel-command.o
  CC      io/channel-file.o
  CC      io/channel-socket.o
  CC      io/channel-tls.o
  CC      io/channel-watch.o
  CC      io/channel-websock.o
  CC      io/channel-util.o
  CC      io/dns-resolver.o
  CC      io/task.o
  CC      qom/container.o
  CC      qom/object.o
  CC      qom/qom-qobject.o
  CC      qom/object_interfaces.o
  GEN     qemu-img-cmds.h
  CC      qemu-io.o
  CC      scsi/qemu-pr-helper.o
  CC      qemu-bridge-helper.o
  CC      blockdev.o
  CC      blockdev-nbd.o
  CC      bootdevice.o
  CC      iothread.o
  CC      qdev-monitor.o
  CC      device-hotplug.o
  CC      os-posix.o
  CC      bt-host.o
  CC      bt-vhci.o
  CC      dma-helpers.o
  CC      vl.o
  CC      tpm.o
  CC      device_tree.o
  CC      qmp-marshal.o
  CC      qmp.o
  CC      hmp.o
  CC      cpus-common.o
  CC      audio/audio.o
  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
  CC      audio/sdlaudio.o
  CC      audio/ossaudio.o
  CC      audio/wavcapture.o
  CC      backends/rng.o
  CC      backends/rng-egd.o
  CC      backends/rng-random.o
  CC      backends/tpm.o
  CC      backends/hostmem.o
  CC      backends/hostmem-ram.o
  CC      backends/hostmem-file.o
  CC      backends/cryptodev.o
  CC      backends/cryptodev-builtin.o
  CC      block/stream.o
  CC      chardev/msmouse.o
  CC      chardev/wctablet.o
  CC      chardev/testdev.o
  CC      disas/arm.o
  CC      disas/i386.o
  CC      fsdev/qemu-fsdev-dummy.o
  CC      fsdev/qemu-fsdev-opts.o
  CC      fsdev/qemu-fsdev-throttle.o
  CC      hw/acpi/core.o
  CC      hw/acpi/piix4.o
  CC      hw/acpi/pcihp.o
  CC      hw/acpi/ich9.o
  CC      hw/acpi/tco.o
  CC      hw/acpi/cpu_hotplug.o
  CC      hw/acpi/memory_hotplug.o
  CC      hw/acpi/cpu.o
  CC      hw/acpi/nvdimm.o
  CC      hw/acpi/vmgenid.o
  CC      hw/acpi/acpi_interface.o
  CC      hw/acpi/bios-linker-loader.o
  CC      hw/acpi/aml-build.o
  CC      hw/acpi/acpi-stub.o
  CC      hw/acpi/ipmi.o
  CC      hw/acpi/ipmi-stub.o
  CC      hw/audio/sb16.o
  CC      hw/audio/es1370.o
  CC      hw/audio/ac97.o
  CC      hw/audio/fmopl.o
  CC      hw/audio/adlib.o
  CC      hw/audio/gus.o
  CC      hw/audio/gusemu_hal.o
  CC      hw/audio/gusemu_mixer.o
  CC      hw/audio/cs4231a.o
  CC      hw/audio/intel-hda.o
  CC      hw/audio/pcspk.o
  CC      hw/audio/hda-codec.o
  CC      hw/audio/wm8750.o
  CC      hw/audio/pl041.o
  CC      hw/audio/lm4549.o
  CC      hw/audio/marvell_88w8618.o
  CC      hw/audio/soundhw.o
  CC      hw/block/block.o
  CC      hw/block/cdrom.o
  CC      hw/block/hd-geometry.o
  CC      hw/block/fdc.o
  CC      hw/block/m25p80.o
  CC      hw/block/nand.o
  CC      hw/block/pflash_cfi01.o
  CC      hw/block/pflash_cfi02.o
  CC      hw/block/onenand.o
  CC      hw/block/ecc.o
  CC      hw/block/nvme.o
  CC      hw/bt/core.o
  CC      hw/bt/l2cap.o
  CC      hw/bt/sdp.o
  CC      hw/bt/hci.o
  CC      hw/bt/hid.o
  CC      hw/bt/hci-csr.o
  CC      hw/char/ipoctal232.o
  CC      hw/char/parallel.o
  CC      hw/char/pl011.o
  CC      hw/char/serial.o
  CC      hw/char/serial-isa.o
  CC      hw/char/serial-pci.o
  CC      hw/char/virtio-console.o
  CC      hw/char/cadence_uart.o
  CC      hw/char/debugcon.o
  CC      hw/char/cmsdk-apb-uart.o
  CC      hw/char/imx_serial.o
  CC      hw/core/qdev.o
  CC      hw/core/qdev-properties.o
  CC      hw/core/bus.o
  CC      hw/core/reset.o
  CC      hw/core/fw-path-provider.o
  CC      hw/core/irq.o
  CC      hw/core/hotplug.o
  CC      hw/core/nmi.o
  CC      hw/core/ptimer.o
  CC      hw/core/sysbus.o
  CC      hw/core/machine.o
  CC      hw/core/loader.o
  CC      hw/core/qdev-properties-system.o
  CC      hw/core/or-irq.o
  CC      hw/core/register.o
  CC      hw/core/platform-bus.o
  CC      hw/cpu/core.o
  CC      hw/display/ads7846.o
  CC      hw/display/cirrus_vga.o
  CC      hw/display/pl110.o
  CC      hw/display/ssd0303.o
  CC      hw/display/ssd0323.o
  CC      hw/display/vga-pci.o
  CC      hw/display/vga-isa.o
  CC      hw/display/vmware_vga.o
  CC      hw/display/blizzard.o
  CC      hw/display/exynos4210_fimd.o
  CC      hw/display/framebuffer.o
  CC      hw/display/tc6393xb.o
  CC      hw/dma/pl080.o
  CC      hw/dma/pl330.o
  CC      hw/dma/i8257.o
  CC      hw/dma/xlnx-zynq-devcfg.o
  CC      hw/gpio/max7310.o
  CC      hw/gpio/pl061.o
  CC      hw/gpio/zaurus.o
  CC      hw/gpio/gpio_key.o
  CC      hw/i2c/core.o
  CC      hw/i2c/smbus.o
  CC      hw/i2c/smbus_eeprom.o
  CC      hw/i2c/i2c-ddc.o
  CC      hw/i2c/versatile_i2c.o
  CC      hw/i2c/smbus_ich9.o
  CC      hw/i2c/pm_smbus.o
  CC      hw/i2c/bitbang_i2c.o
  CC      hw/i2c/exynos4210_i2c.o
  CC      hw/i2c/imx_i2c.o
  CC      hw/i2c/aspeed_i2c.o
  CC      hw/ide/core.o
  CC      hw/ide/atapi.o
  CC      hw/ide/qdev.o
  CC      hw/ide/pci.o
  CC      hw/ide/isa.o
  CC      hw/ide/piix.o
  CC      hw/ide/microdrive.o
  CC      hw/ide/ahci.o
  CC      hw/ide/ich.o
  CC      hw/input/hid.o
  CC      hw/input/lm832x.o
  CC      hw/input/pckbd.o
  CC      hw/input/pl050.o
  CC      hw/input/ps2.o
  CC      hw/input/stellaris_input.o
  CC      hw/input/tsc2005.o
  CC      hw/input/vmmouse.o
  CC      hw/input/virtio-input.o
  CC      hw/input/virtio-input-hid.o
  CC      hw/input/virtio-input-host.o
  CC      hw/intc/i8259_common.o
  CC      hw/intc/i8259.o
  CC      hw/intc/pl190.o
  CC      hw/intc/imx_avic.o
  CC      hw/intc/realview_gic.o
  CC      hw/intc/ioapic_common.o
  CC      hw/intc/arm_gic_common.o
  CC      hw/intc/arm_gic.o
  CC      hw/intc/arm_gicv2m.o
  CC      hw/intc/arm_gicv3_common.o
  CC      hw/intc/arm_gicv3.o
  CC      hw/intc/arm_gicv3_dist.o
  CC      hw/intc/arm_gicv3_redist.o
  CC      hw/intc/arm_gicv3_its_common.o
  CC      hw/intc/intc.o
  CC      hw/ipack/ipack.o
  CC      hw/ipack/tpci200.o
  CC      hw/ipmi/ipmi.o
  CC      hw/ipmi/ipmi_bmc_extern.o
  CC      hw/ipmi/ipmi_bmc_sim.o
  CC      hw/ipmi/isa_ipmi_kcs.o
  CC      hw/ipmi/isa_ipmi_bt.o
  CC      hw/isa/isa-bus.o
  CC      hw/isa/apm.o
  CC      hw/mem/pc-dimm.o
  CC      hw/mem/nvdimm.o
  CC      hw/misc/applesmc.o
  CC      hw/misc/max111x.o
  CC      hw/misc/tmp105.o
  CC      hw/misc/tmp421.o
  CC      hw/misc/debugexit.o
  CC      hw/misc/sga.o
  CC      hw/misc/pc-testdev.o
  CC      hw/misc/pci-testdev.o
  CC      hw/misc/edu.o
  CC      hw/misc/unimp.o
  CC      hw/misc/arm_l2x0.o
  CC      hw/misc/arm_integrator_debug.o
  CC      hw/misc/a9scu.o
  CC      hw/misc/arm11scu.o
  CC      hw/net/ne2000.o
  CC      hw/net/eepro100.o
  CC      hw/net/pcnet-pci.o
  CC      hw/net/pcnet.o
  CC      hw/net/e1000.o
  CC      hw/net/e1000x_common.o
  CC      hw/net/net_tx_pkt.o
  CC      hw/net/net_rx_pkt.o
  CC      hw/net/e1000e.o
  CC      hw/net/e1000e_core.o
  CC      hw/net/vmxnet3.o
  CC      hw/net/rtl8139.o
  CC      hw/net/smc91c111.o
  CC      hw/net/lan9118.o
  CC      hw/net/ne2000-isa.o
  CC      hw/net/xgmac.o
  CC      hw/net/allwinner_emac.o
  CC      hw/net/imx_fec.o
  CC      hw/net/cadence_gem.o
  CC      hw/net/stellaris_enet.o
  CC      hw/net/ftgmac100.o
  CC      hw/net/rocker/rocker.o
  CC      hw/net/rocker/rocker_fp.o
  CC      hw/net/rocker/rocker_desc.o
  CC      hw/net/rocker/rocker_world.o
  CC      hw/net/rocker/rocker_of_dpa.o
  CC      hw/nvram/eeprom93xx.o
  CC      hw/nvram/fw_cfg.o
  CC      hw/nvram/chrp_nvram.o
  CC      hw/pci-bridge/pci_bridge_dev.o
  CC      hw/pci-bridge/pcie_pci_bridge.o
  CC      hw/pci-bridge/pcie_root_port.o
  CC      hw/pci-bridge/gen_pcie_root_port.o
  CC      hw/pci-bridge/pci_expander_bridge.o
  CC      hw/pci-bridge/xio3130_upstream.o
  CC      hw/pci-bridge/xio3130_downstream.o
  CC      hw/pci-bridge/ioh3420.o
  CC      hw/pci-bridge/i82801b11.o
  CC      hw/pci-host/pam.o
  CC      hw/pci-host/versatile.o
  CC      hw/pci-host/piix.o
  CC      hw/pci-host/q35.o
  CC      hw/pci-host/gpex.o
  CC      hw/pci/pci.o
  CC      hw/pci/pci_bridge.o
  CC      hw/pci/msix.o
  CC      hw/pci/msi.o
  CC      hw/pci/shpc.o
  CC      hw/pci/slotid_cap.o
  CC      hw/pci/pci_host.o
  CC      hw/pci/pcie_host.o
  CC      hw/pci/pcie.o
  CC      hw/pci/pcie_aer.o
  CC      hw/pci/pcie_port.o
  CC      hw/pci/pci-stub.o
  CC      hw/pcmcia/pcmcia.o
  CC      hw/scsi/scsi-generic.o
  CC      hw/scsi/scsi-disk.o
  CC      hw/scsi/scsi-bus.o
  CC      hw/scsi/lsi53c895a.o
  CC      hw/scsi/mptsas.o
  CC      hw/scsi/mptconfig.o
  CC      hw/scsi/mptendian.o
  CC      hw/scsi/vmw_pvscsi.o
  CC      hw/scsi/megasas.o
  CC      hw/scsi/esp.o
  CC      hw/scsi/esp-pci.o
  CC      hw/sd/pl181.o
  CC      hw/sd/ssi-sd.o
  CC      hw/sd/sd.o
  CC      hw/sd/core.o
  CC      hw/sd/sdhci.o
  CC      hw/smbios/smbios.o
  CC      hw/smbios/smbios_type_38.o
  CC      hw/smbios/smbios-stub.o
  CC      hw/smbios/smbios_type_38-stub.o
  CC      hw/ssi/pl022.o
  CC      hw/ssi/ssi.o
  CC      hw/ssi/xilinx_spips.o
  CC      hw/ssi/aspeed_smc.o
  CC      hw/ssi/stm32f2xx_spi.o
  CC      hw/timer/arm_timer.o
  CC      hw/ssi/mss-spi.o
  CC      hw/timer/arm_mptimer.o
  CC      hw/timer/armv7m_systick.o
  CC      hw/timer/cadence_ttc.o
  CC      hw/timer/a9gtimer.o
  CC      hw/timer/ds1338.o
  CC      hw/timer/hpet.o
  CC      hw/timer/i8254_common.o
  CC      hw/timer/i8254.o
  CC      hw/timer/pl031.o
  CC      hw/timer/twl92230.o
  CC      hw/timer/imx_epit.o
  CC      hw/timer/imx_gpt.o
  CC      hw/timer/stm32f2xx_timer.o
  CC      hw/timer/aspeed_timer.o
  CC      hw/timer/cmsdk-apb-timer.o
  CC      hw/timer/mss-timer.o
  CC      hw/tpm/tpm_tis.o
  CC      hw/tpm/tpm_passthrough.o
  CC      hw/tpm/tpm_util.o
  CC      hw/usb/core.o
  CC      hw/usb/combined-packet.o
  CC      hw/usb/bus.o
  CC      hw/usb/libhw.o
  CC      hw/usb/desc.o
  CC      hw/usb/desc-msos.o
  CC      hw/usb/hcd-uhci.o
  CC      hw/usb/hcd-ohci.o
  CC      hw/usb/hcd-ehci.o
  CC      hw/usb/hcd-ehci-pci.o
  CC      hw/usb/hcd-ehci-sysbus.o
  CC      hw/usb/hcd-xhci.o
  CC      hw/usb/hcd-xhci-nec.o
  CC      hw/usb/hcd-musb.o
  CC      hw/usb/dev-hub.o
  CC      hw/usb/dev-hid.o
  CC      hw/usb/dev-wacom.o
  CC      hw/usb/dev-storage.o
  CC      hw/usb/dev-uas.o
  CC      hw/usb/dev-audio.o
  CC      hw/usb/dev-serial.o
  CC      hw/usb/dev-network.o
  CC      hw/usb/dev-bluetooth.o
  CC      hw/usb/dev-smartcard-reader.o
  CC      hw/usb/dev-mtp.o
  CC      hw/usb/host-stub.o
  CC      hw/virtio/virtio-rng.o
  CC      hw/virtio/virtio-pci.o
  CC      hw/virtio/virtio-bus.o
  CC      hw/virtio/virtio-mmio.o
  CC      hw/virtio/vhost-stub.o
  CC      hw/watchdog/wdt_i6300esb.o
  CC      hw/watchdog/watchdog.o
  CC      hw/watchdog/wdt_ib700.o
  CC      migration/migration.o
  CC      hw/watchdog/wdt_aspeed.o
  CC      migration/socket.o
  CC      migration/fd.o
  CC      migration/exec.o
  CC      migration/tls.o
  CC      migration/channel.o
  CC      migration/savevm.o
  CC      migration/colo-comm.o
  CC      migration/colo.o
  CC      migration/vmstate.o
  CC      migration/vmstate-types.o
  CC      migration/colo-failover.o
  CC      migration/page_cache.o
  CC      migration/qemu-file.o
  CC      migration/global_state.o
  CC      migration/qemu-file-channel.o
  CC      migration/xbzrle.o
  CC      migration/postcopy-ram.o
  CC      migration/qjson.o
  CC      migration/block.o
  CC      net/net.o
  CC      net/queue.o
  CC      net/checksum.o
  CC      net/util.o
  CC      net/hub.o
  CC      net/socket.o
  CC      net/dump.o
  CC      net/eth.o
  CC      net/l2tpv3.o
  CC      net/vhost-user.o
  CC      net/filter.o
  CC      net/slirp.o
  CC      net/filter-buffer.o
  CC      net/filter-mirror.o
  CC      net/colo-compare.o
  CC      net/colo.o
  CC      net/filter-rewriter.o
  CC      net/filter-replay.o
  CC      net/tap.o
  CC      net/tap-linux.o
  CC      qom/cpu.o
  CC      replay/replay-internal.o
  CC      replay/replay.o
  CC      replay/replay-events.o
  CC      replay/replay-time.o
  CC      replay/replay-input.o
  CC      replay/replay-char.o
  CC      replay/replay-snapshot.o
/tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’:
/tmp/qemu-test/src/replay/replay-internal.c:65: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
  CC      replay/replay-net.o
  CC      replay/replay-audio.o
  CC      slirp/cksum.o
  CC      slirp/if.o
  CC      slirp/ip_icmp.o
  CC      slirp/ip6_icmp.o
  CC      slirp/ip6_input.o
  CC      slirp/ip6_output.o
  CC      slirp/ip_input.o
  CC      slirp/ip_output.o
  CC      slirp/dnssearch.o
  CC      slirp/dhcpv6.o
  CC      slirp/slirp.o
  CC      slirp/mbuf.o
  CC      slirp/misc.o
  CC      slirp/sbuf.o
  CC      slirp/socket.o
  CC      slirp/tcp_input.o
  CC      slirp/tcp_output.o
  CC      slirp/tcp_subr.o
  CC      slirp/tcp_timer.o
  CC      slirp/udp.o
  CC      slirp/udp6.o
  CC      slirp/bootp.o
  CC      slirp/tftp.o
  CC      slirp/arp_table.o
  CC      slirp/ndp_table.o
/tmp/qemu-test/src/slirp/tcp_input.c: In function ‘tcp_input’:
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_p’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_len’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_tos’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_id’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_off’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_ttl’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_sum’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_src.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_dst.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:220: warning: ‘save_ip6.ip_nh’ may be used uninitialized in this function
  CC      ui/keymaps.o
  CC      slirp/ncsi.o
  CC      ui/console.o
  CC      ui/cursor.o
  CC      ui/qemu-pixman.o
  CC      ui/input.o
  CC      ui/input-keymap.o
  CC      ui/input-legacy.o
  CC      ui/input-linux.o
  CC      ui/sdl.o
  CC      ui/sdl_zoom.o
  CC      ui/x_keymap.o
  CC      ui/vnc.o
  CC      ui/vnc-enc-zlib.o
  CC      ui/vnc-enc-hextile.o
  CC      ui/vnc-enc-tight.o
  CC      ui/vnc-palette.o
  CC      ui/vnc-enc-zrle.o
  CC      ui/vnc-auth-vencrypt.o
  CC      ui/vnc-ws.o
  CC      ui/vnc-jobs.o
  CC      chardev/char.o
  CC      chardev/char-fd.o
  CC      chardev/char-fe.o
  CC      chardev/char-file.o
  CC      chardev/char-io.o
  CC      chardev/char-null.o
  CC      chardev/char-mux.o
  CC      chardev/char-parallel.o
  CC      chardev/char-pipe.o
  CC      chardev/char-pty.o
  CC      chardev/char-ringbuf.o
  CC      chardev/char-serial.o
  CC      chardev/char-socket.o
  CC      chardev/char-stdio.o
  CC      chardev/char-udp.o
  CC      qga/commands.o
  AR      libqemuutil.a
  CC      qga/guest-agent-command-state.o
  CC      qga/main.o
  CC      qga/commands-posix.o
  CC      qga/channel-posix.o
  CC      qga/qapi-generated/qga-qapi-types.o
  CC      qga/qapi-generated/qga-qapi-visit.o
  CC      qga/qapi-generated/qga-qmp-marshal.o
  AS      optionrom/multiboot.o
  CC      qemu-img.o
  AS      optionrom/linuxboot.o
  CC      optionrom/linuxboot_dma.o
cc: unrecognized option '-no-integrated-as'
cc: unrecognized option '-no-integrated-as'
  AS      optionrom/kvmvapic.o
  BUILD   optionrom/multiboot.img
  BUILD   optionrom/linuxboot.img
  BUILD   optionrom/linuxboot_dma.img
  BUILD   optionrom/multiboot.raw
  BUILD   optionrom/linuxboot.raw
  BUILD   optionrom/kvmvapic.img
  BUILD   optionrom/linuxboot_dma.raw
  SIGN    optionrom/linuxboot.bin
  SIGN    optionrom/linuxboot_dma.bin
  SIGN    optionrom/multiboot.bin
  BUILD   optionrom/kvmvapic.raw
  SIGN    optionrom/kvmvapic.bin
  LINK    tests/qemu-iotests/socket_scm_helper
  LINK    qemu-ga
  LINK    ivshmem-client
  LINK    ivshmem-server
  LINK    qemu-nbd
  LINK    qemu-img
  LINK    qemu-io
  LINK    scsi/qemu-pr-helper
  LINK    qemu-bridge-helper
  GEN     x86_64-softmmu/hmp-commands.h
  GEN     x86_64-softmmu/hmp-commands-info.h
  GEN     x86_64-softmmu/config-target.h
  GEN     aarch64-softmmu/hmp-commands-info.h
  GEN     aarch64-softmmu/hmp-commands.h
  GEN     aarch64-softmmu/config-target.h
  CC      x86_64-softmmu/tcg/tcg.o
  CC      x86_64-softmmu/exec.o
  CC      x86_64-softmmu/tcg/tcg-op.o
  CC      x86_64-softmmu/tcg/tcg-common.o
  CC      x86_64-softmmu/fpu/softfloat.o
  CC      x86_64-softmmu/tcg/optimize.o
  CC      x86_64-softmmu/disas.o
  CC      aarch64-softmmu/exec.o
  GEN     x86_64-softmmu/gdbstub-xml.c
  CC      x86_64-softmmu/arch_init.o
  CC      x86_64-softmmu/cpus.o
  CC      x86_64-softmmu/monitor.o
  CC      aarch64-softmmu/tcg/tcg.o
  CC      aarch64-softmmu/tcg/tcg-op.o
  CC      aarch64-softmmu/tcg/optimize.o
  CC      aarch64-softmmu/tcg/tcg-common.o
  CC      x86_64-softmmu/gdbstub.o
  CC      aarch64-softmmu/fpu/softfloat.o
  CC      aarch64-softmmu/disas.o
  CC      x86_64-softmmu/balloon.o
  GEN     aarch64-softmmu/gdbstub-xml.c
  CC      x86_64-softmmu/ioport.o
  CC      aarch64-softmmu/arch_init.o
  CC      aarch64-softmmu/cpus.o
  CC      aarch64-softmmu/monitor.o
  CC      aarch64-softmmu/gdbstub.o
  CC      aarch64-softmmu/balloon.o
  CC      aarch64-softmmu/ioport.o
  CC      x86_64-softmmu/numa.o
  CC      x86_64-softmmu/qtest.o
  CC      x86_64-softmmu/memory.o
  CC      x86_64-softmmu/memory_mapping.o
  CC      x86_64-softmmu/dump.o
  CC      x86_64-softmmu/migration/ram.o
  CC      aarch64-softmmu/numa.o
  CC      x86_64-softmmu/accel/accel.o
  CC      x86_64-softmmu/accel/kvm/kvm-all.o
  CC      aarch64-softmmu/qtest.o
  CC      aarch64-softmmu/memory.o
  CC      x86_64-softmmu/accel/stubs/hax-stub.o
  CC      aarch64-softmmu/memory_mapping.o
  CC      x86_64-softmmu/accel/tcg/tcg-all.o
  CC      x86_64-softmmu/accel/tcg/cputlb.o
  CC      aarch64-softmmu/dump.o
  CC      aarch64-softmmu/migration/ram.o
  CC      aarch64-softmmu/accel/accel.o
  CC      aarch64-softmmu/accel/stubs/hax-stub.o
  CC      aarch64-softmmu/accel/stubs/kvm-stub.o
  CC      x86_64-softmmu/accel/tcg/tcg-runtime.o
  CC      aarch64-softmmu/accel/tcg/tcg-all.o
  CC      aarch64-softmmu/accel/tcg/cputlb.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec-common.o
  CC      x86_64-softmmu/accel/tcg/translate-all.o
  CC      x86_64-softmmu/accel/tcg/translator.o
  CC      aarch64-softmmu/accel/tcg/tcg-runtime.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec.o
  CC      x86_64-softmmu/hw/block/virtio-blk.o
  CC      aarch64-softmmu/accel/tcg/cpu-exec-common.o
  CC      aarch64-softmmu/accel/tcg/translate-all.o
  CC      x86_64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      x86_64-softmmu/hw/char/virtio-serial-bus.o
  CC      aarch64-softmmu/accel/tcg/translator.o
  CC      aarch64-softmmu/hw/adc/stm32f2xx_adc.o
  CC      x86_64-softmmu/hw/core/generic-loader.o
  CC      x86_64-softmmu/hw/core/null-machine.o
  CC      aarch64-softmmu/hw/block/virtio-blk.o
  CC      x86_64-softmmu/hw/display/vga.o
  CC      x86_64-softmmu/hw/display/virtio-gpu.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-pci.o
  CC      x86_64-softmmu/hw/display/virtio-vga.o
  CC      x86_64-softmmu/hw/intc/apic.o
  CC      x86_64-softmmu/hw/intc/apic_common.o
  CC      aarch64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      x86_64-softmmu/hw/intc/ioapic.o
  CC      aarch64-softmmu/hw/char/exynos4210_uart.o
  CC      aarch64-softmmu/hw/char/omap_uart.o
  CC      aarch64-softmmu/hw/char/digic-uart.o
  CC      aarch64-softmmu/hw/char/stm32f2xx_usart.o
  CC      aarch64-softmmu/hw/char/bcm2835_aux.o
  CC      aarch64-softmmu/hw/char/virtio-serial-bus.o
  CC      aarch64-softmmu/hw/core/generic-loader.o
  CC      x86_64-softmmu/hw/isa/lpc_ich9.o
  CC      x86_64-softmmu/hw/misc/vmport.o
  CC      aarch64-softmmu/hw/core/null-machine.o
  CC      x86_64-softmmu/hw/misc/ivshmem.o
  CC      x86_64-softmmu/hw/misc/pvpanic.o
  CC      aarch64-softmmu/hw/cpu/arm11mpcore.o
  CC      x86_64-softmmu/hw/misc/hyperv_testdev.o
  CC      x86_64-softmmu/hw/misc/mmio_interface.o
  CC      x86_64-softmmu/hw/net/virtio-net.o
  CC      aarch64-softmmu/hw/cpu/realview_mpcore.o
  CC      x86_64-softmmu/hw/net/vhost_net.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      x86_64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      x86_64-softmmu/hw/scsi/vhost-scsi.o
  CC      aarch64-softmmu/hw/cpu/a9mpcore.o
  CC      aarch64-softmmu/hw/cpu/a15mpcore.o
  CC      x86_64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      aarch64-softmmu/hw/display/omap_dss.o
  CC      x86_64-softmmu/hw/timer/mc146818rtc.o
  CC      x86_64-softmmu/hw/vfio/common.o
  CC      aarch64-softmmu/hw/display/omap_lcdc.o
  CC      x86_64-softmmu/hw/vfio/pci.o
  CC      x86_64-softmmu/hw/vfio/pci-quirks.o
  CC      x86_64-softmmu/hw/vfio/platform.o
  CC      x86_64-softmmu/hw/vfio/spapr.o
  CC      aarch64-softmmu/hw/display/pxa2xx_lcd.o
  CC      x86_64-softmmu/hw/virtio/virtio.o
  CC      x86_64-softmmu/hw/virtio/virtio-balloon.o
  CC      x86_64-softmmu/hw/virtio/vhost.o
  CC      aarch64-softmmu/hw/display/bcm2835_fb.o
  CC      aarch64-softmmu/hw/display/vga.o
  CC      x86_64-softmmu/hw/virtio/vhost-backend.o
  CC      aarch64-softmmu/hw/display/virtio-gpu.o
  CC      x86_64-softmmu/hw/virtio/vhost-user.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/virtio/vhost-vsock.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto.o
  CC      aarch64-softmmu/hw/display/virtio-gpu-pci.o
  CC      aarch64-softmmu/hw/display/dpcd.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      x86_64-softmmu/hw/i386/multiboot.o
  CC      aarch64-softmmu/hw/display/xlnx_dp.o
  CC      x86_64-softmmu/hw/i386/pc.o
  CC      aarch64-softmmu/hw/dma/xlnx_dpdma.o
  CC      aarch64-softmmu/hw/dma/omap_dma.o
  CC      x86_64-softmmu/hw/i386/pc_piix.o
  CC      aarch64-softmmu/hw/dma/soc_dma.o
  CC      aarch64-softmmu/hw/dma/pxa2xx_dma.o
  CC      x86_64-softmmu/hw/i386/pc_q35.o
  CC      x86_64-softmmu/hw/i386/pc_sysfw.o
  CC      aarch64-softmmu/hw/dma/bcm2835_dma.o
  CC      aarch64-softmmu/hw/gpio/omap_gpio.o
  CC      aarch64-softmmu/hw/gpio/imx_gpio.o
  CC      x86_64-softmmu/hw/i386/x86-iommu.o
  CC      aarch64-softmmu/hw/gpio/bcm2835_gpio.o
  CC      x86_64-softmmu/hw/i386/intel_iommu.o
  CC      x86_64-softmmu/hw/i386/amd_iommu.o
  CC      aarch64-softmmu/hw/i2c/omap_i2c.o
  CC      aarch64-softmmu/hw/input/pxa2xx_keypad.o
  CC      x86_64-softmmu/hw/i386/kvmvapic.o
  CC      aarch64-softmmu/hw/input/tsc210x.o
  CC      aarch64-softmmu/hw/intc/armv7m_nvic.o
  CC      aarch64-softmmu/hw/intc/exynos4210_combiner.o
  CC      aarch64-softmmu/hw/intc/exynos4210_gic.o
  CC      aarch64-softmmu/hw/intc/omap_intc.o
  CC      aarch64-softmmu/hw/intc/bcm2835_ic.o
  CC      x86_64-softmmu/hw/i386/acpi-build.o
  CC      x86_64-softmmu/hw/i386/pci-assign-load-rom.o
/tmp/qemu-test/src/hw/i386/acpi-build.c: In function ‘build_append_pci_bus_devices’:
/tmp/qemu-test/src/hw/i386/acpi-build.c:509: warning: ‘notify_method’ may be used uninitialized in this function
  CC      aarch64-softmmu/hw/intc/bcm2836_control.o
  CC      aarch64-softmmu/hw/intc/allwinner-a10-pic.o
/tmp/qemu-test/src/hw/i386/pc_piix.c: In function ‘igd_passthrough_isa_bridge_create’:
/tmp/qemu-test/src/hw/i386/pc_piix.c:1071: warning: ‘pch_rev_id’ may be used uninitialized in this function
  CC      x86_64-softmmu/hw/i386/kvm/clock.o
  CC      x86_64-softmmu/hw/i386/kvm/apic.o
  CC      aarch64-softmmu/hw/intc/aspeed_vic.o
  CC      aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
  CC      aarch64-softmmu/hw/misc/ivshmem.o
  CC      aarch64-softmmu/hw/misc/arm_sysctl.o
  CC      aarch64-softmmu/hw/misc/cbus.o
  CC      x86_64-softmmu/hw/i386/kvm/i8259.o
  CC      aarch64-softmmu/hw/misc/exynos4210_pmu.o
  CC      aarch64-softmmu/hw/misc/exynos4210_clk.o
  CC      x86_64-softmmu/hw/i386/kvm/ioapic.o
  CC      aarch64-softmmu/hw/misc/exynos4210_rng.o
  CC      aarch64-softmmu/hw/misc/imx_ccm.o
  CC      aarch64-softmmu/hw/misc/imx31_ccm.o
  CC      x86_64-softmmu/hw/i386/kvm/i8254.o
  CC      x86_64-softmmu/hw/i386/kvm/pci-assign.o
  CC      x86_64-softmmu/target/i386/helper.o
  CC      x86_64-softmmu/target/i386/cpu.o
  CC      aarch64-softmmu/hw/misc/imx25_ccm.o
  CC      x86_64-softmmu/target/i386/gdbstub.o
  CC      aarch64-softmmu/hw/misc/imx6_ccm.o
  CC      aarch64-softmmu/hw/misc/imx6_src.o
  CC      x86_64-softmmu/target/i386/xsave_helper.o
  CC      aarch64-softmmu/hw/misc/mst_fpga.o
  CC      x86_64-softmmu/target/i386/translate.o
  CC      aarch64-softmmu/hw/misc/omap_clk.o
  CC      aarch64-softmmu/hw/misc/omap_gpmc.o
  CC      x86_64-softmmu/target/i386/bpt_helper.o
  CC      x86_64-softmmu/target/i386/cc_helper.o
  CC      x86_64-softmmu/target/i386/excp_helper.o
  CC      aarch64-softmmu/hw/misc/omap_l4.o
  CC      aarch64-softmmu/hw/misc/omap_sdrc.o
  CC      aarch64-softmmu/hw/misc/omap_tap.o
  CC      aarch64-softmmu/hw/misc/bcm2835_mbox.o
  CC      aarch64-softmmu/hw/misc/bcm2835_property.o
  CC      aarch64-softmmu/hw/misc/bcm2835_rng.o
  CC      aarch64-softmmu/hw/misc/zynq_slcr.o
  CC      aarch64-softmmu/hw/misc/zynq-xadc.o
  CC      aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
  CC      x86_64-softmmu/target/i386/fpu_helper.o
  CC      x86_64-softmmu/target/i386/int_helper.o
  CC      aarch64-softmmu/hw/misc/mps2-scc.o
  CC      aarch64-softmmu/hw/misc/auxbus.o
  CC      x86_64-softmmu/target/i386/mem_helper.o
  CC      x86_64-softmmu/target/i386/misc_helper.o
  CC      x86_64-softmmu/target/i386/mpx_helper.o
  CC      x86_64-softmmu/target/i386/seg_helper.o
  CC      x86_64-softmmu/target/i386/smm_helper.o
  CC      x86_64-softmmu/target/i386/svm_helper.o
  CC      aarch64-softmmu/hw/misc/aspeed_scu.o
  CC      aarch64-softmmu/hw/misc/aspeed_sdmc.o
  CC      aarch64-softmmu/hw/misc/mmio_interface.o
  CC      aarch64-softmmu/hw/misc/msf2-sysreg.o
  CC      aarch64-softmmu/hw/net/virtio-net.o
  CC      aarch64-softmmu/hw/net/vhost_net.o
  CC      x86_64-softmmu/target/i386/machine.o
  CC      x86_64-softmmu/target/i386/arch_memory_mapping.o
  CC      x86_64-softmmu/target/i386/arch_dump.o
  CC      aarch64-softmmu/hw/pcmcia/pxa2xx.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi.o
  CC      x86_64-softmmu/target/i386/monitor.o
  CC      aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      aarch64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      x86_64-softmmu/target/i386/kvm.o
  CC      aarch64-softmmu/hw/scsi/vhost-scsi.o
  CC      x86_64-softmmu/target/i386/hyperv.o
  CC      aarch64-softmmu/hw/scsi/vhost-user-scsi.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/trace/control-target.o
  CC      aarch64-softmmu/hw/sd/omap_mmc.o
  CC      x86_64-softmmu/gdbstub-xml.o
  CC      aarch64-softmmu/hw/sd/pxa2xx_mmci.o
  CC      aarch64-softmmu/hw/sd/bcm2835_sdhost.o
  CC      aarch64-softmmu/hw/ssi/omap_spi.o
  CC      aarch64-softmmu/hw/ssi/imx_spi.o
  CC      aarch64-softmmu/hw/timer/exynos4210_mct.o
  CC      aarch64-softmmu/hw/timer/exynos4210_pwm.o
  CC      aarch64-softmmu/hw/timer/exynos4210_rtc.o
  CC      x86_64-softmmu/trace/generated-helpers.o
  CC      aarch64-softmmu/hw/timer/omap_gptimer.o
  CC      aarch64-softmmu/hw/timer/omap_synctimer.o
  CC      aarch64-softmmu/hw/timer/pxa2xx_timer.o
  CC      aarch64-softmmu/hw/timer/digic-timer.o
  CC      aarch64-softmmu/hw/timer/allwinner-a10-pit.o
  CC      aarch64-softmmu/hw/usb/tusb6010.o
  CC      aarch64-softmmu/hw/vfio/common.o
  CC      aarch64-softmmu/hw/vfio/pci.o
  CC      aarch64-softmmu/hw/vfio/pci-quirks.o
  CC      aarch64-softmmu/hw/vfio/platform.o
  CC      aarch64-softmmu/hw/vfio/calxeda-xgmac.o
  CC      aarch64-softmmu/hw/vfio/amd-xgbe.o
  CC      aarch64-softmmu/hw/vfio/spapr.o
  CC      aarch64-softmmu/hw/virtio/virtio.o
  CC      aarch64-softmmu/hw/virtio/virtio-balloon.o
  CC      aarch64-softmmu/hw/virtio/vhost.o
  CC      aarch64-softmmu/hw/virtio/vhost-backend.o
  CC      aarch64-softmmu/hw/virtio/vhost-user.o
  CC      aarch64-softmmu/hw/virtio/vhost-vsock.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto.o
  CC      aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      aarch64-softmmu/hw/arm/boot.o
  CC      aarch64-softmmu/hw/arm/collie.o
  CC      aarch64-softmmu/hw/arm/exynos4_boards.o
  CC      aarch64-softmmu/hw/arm/gumstix.o
  CC      aarch64-softmmu/hw/arm/highbank.o
  CC      aarch64-softmmu/hw/arm/digic_boards.o
  CC      aarch64-softmmu/hw/arm/integratorcp.o
  CC      aarch64-softmmu/hw/arm/mainstone.o
  CC      aarch64-softmmu/hw/arm/musicpal.o
  CC      aarch64-softmmu/hw/arm/nseries.o
  CC      aarch64-softmmu/hw/arm/omap_sx1.o
  CC      aarch64-softmmu/hw/arm/palm.o
  CC      aarch64-softmmu/hw/arm/realview.o
  CC      aarch64-softmmu/hw/arm/spitz.o
  CC      aarch64-softmmu/hw/arm/stellaris.o
  CC      aarch64-softmmu/hw/arm/tosa.o
  CC      aarch64-softmmu/hw/arm/versatilepb.o
  CC      aarch64-softmmu/hw/arm/vexpress.o
  CC      aarch64-softmmu/hw/arm/virt.o
  CC      aarch64-softmmu/hw/arm/xilinx_zynq.o
  CC      aarch64-softmmu/hw/arm/z2.o
  CC      aarch64-softmmu/hw/arm/virt-acpi-build.o
  CC      aarch64-softmmu/hw/arm/netduino2.o
  CC      aarch64-softmmu/hw/arm/sysbus-fdt.o
  CC      aarch64-softmmu/hw/arm/armv7m.o
  CC      aarch64-softmmu/hw/arm/exynos4210.o
  CC      aarch64-softmmu/hw/arm/pxa2xx.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_gpio.o
  CC      aarch64-softmmu/hw/arm/pxa2xx_pic.o
  CC      aarch64-softmmu/hw/arm/digic.o
  CC      aarch64-softmmu/hw/arm/omap1.o
  CC      aarch64-softmmu/hw/arm/omap2.o
  CC      aarch64-softmmu/hw/arm/strongarm.o
  CC      aarch64-softmmu/hw/arm/allwinner-a10.o
  CC      aarch64-softmmu/hw/arm/cubieboard.o
  CC      aarch64-softmmu/hw/arm/bcm2835_peripherals.o
  CC      aarch64-softmmu/hw/arm/bcm2836.o
  CC      aarch64-softmmu/hw/arm/raspi.o
  CC      aarch64-softmmu/hw/arm/stm32f205_soc.o
  CC      aarch64-softmmu/hw/arm/xlnx-zynqmp.o
  CC      aarch64-softmmu/hw/arm/xlnx-zcu102.o
  CC      aarch64-softmmu/hw/arm/fsl-imx25.o
  CC      aarch64-softmmu/hw/arm/imx25_pdk.o
  CC      aarch64-softmmu/hw/arm/kzm.o
  CC      aarch64-softmmu/hw/arm/fsl-imx31.o
  CC      aarch64-softmmu/hw/arm/fsl-imx6.o
  CC      aarch64-softmmu/hw/arm/sabrelite.o
  CC      aarch64-softmmu/hw/arm/aspeed_soc.o
  CC      aarch64-softmmu/hw/arm/aspeed.o
  CC      aarch64-softmmu/hw/arm/mps2.o
  CC      aarch64-softmmu/hw/arm/msf2-soc.o
  CC      aarch64-softmmu/hw/arm/msf2-som.o
  CC      aarch64-softmmu/target/arm/arm-semi.o
  CC      aarch64-softmmu/target/arm/machine.o
  CC      aarch64-softmmu/target/arm/psci.o
  CC      aarch64-softmmu/target/arm/arch_dump.o
  CC      aarch64-softmmu/target/arm/monitor.o
  CC      aarch64-softmmu/target/arm/kvm-stub.o
  CC      aarch64-softmmu/target/arm/translate.o
  CC      aarch64-softmmu/target/arm/op_helper.o
  CC      aarch64-softmmu/target/arm/helper.o
  CC      aarch64-softmmu/target/arm/cpu.o
  CC      aarch64-softmmu/target/arm/neon_helper.o
  CC      aarch64-softmmu/target/arm/iwmmxt_helper.o
  CC      aarch64-softmmu/target/arm/gdbstub.o
  CC      aarch64-softmmu/target/arm/cpu64.o
  CC      aarch64-softmmu/target/arm/translate-a64.o
  CC      aarch64-softmmu/target/arm/helper-a64.o
  CC      aarch64-softmmu/target/arm/gdbstub64.o
  CC      aarch64-softmmu/target/arm/crypto_helper.o
  CC      aarch64-softmmu/target/arm/arm-powerctl.o
  GEN     trace/generated-helpers.c
  CC      aarch64-softmmu/trace/control-target.o
  CC      aarch64-softmmu/gdbstub-xml.o
  CC      aarch64-softmmu/trace/generated-helpers.o
  LINK    x86_64-softmmu/qemu-system-x86_64
/tmp/qemu-test/src/target/arm/translate-a64.c: In function ‘handle_shri_with_rndacc’:
/tmp/qemu-test/src/target/arm/translate-a64.c:6370: warning: ‘tcg_src_hi’ may be used uninitialized in this function
/tmp/qemu-test/src/target/arm/translate-a64.c: In function ‘disas_simd_scalar_two_reg_misc’:
/tmp/qemu-test/src/target/arm/translate-a64.c:8097: warning: ‘rmode’ may be used uninitialized in this function
  LINK    aarch64-softmmu/qemu-system-aarch64
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-wtm44c4r/src'

real	1m55.049s
user	0m1.558s
sys	0m1.810s
  BUILD   fedora
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-wtm44c4r/src'
  GEN     docker-src.2017-09-25-20.34.24.24834/qemu.tar
  COPY    RUNNER
    RUN test-mingw in qemu:fedora 
Packages installed:
PyYAML-3.11-13.fc25.x86_64
SDL-devel-1.2.15-21.fc24.x86_64
bc-1.06.95-16.fc24.x86_64
bison-3.0.4-4.fc24.x86_64
bzip2-1.0.6-21.fc25.x86_64
ccache-3.3.4-1.fc25.x86_64
clang-3.9.1-2.fc25.x86_64
findutils-4.6.0-8.fc25.x86_64
flex-2.6.0-3.fc25.x86_64
gcc-6.4.1-1.fc25.x86_64
gcc-c++-6.4.1-1.fc25.x86_64
git-2.9.5-1.fc25.x86_64
glib2-devel-2.50.3-1.fc25.x86_64
hostname-3.15-8.fc25.x86_64
libaio-devel-0.3.110-6.fc24.x86_64
libfdt-devel-1.4.2-1.fc25.x86_64
make-4.1-6.fc25.x86_64
mingw32-SDL-1.2.15-7.fc24.noarch
mingw32-bzip2-1.0.6-7.fc24.noarch
mingw32-curl-7.47.0-1.fc24.noarch
mingw32-glib2-2.50.3-1.fc25.noarch
mingw32-gmp-6.1.1-1.fc25.noarch
mingw32-gnutls-3.5.5-2.fc25.noarch
mingw32-gtk2-2.24.31-2.fc25.noarch
mingw32-gtk3-3.22.17-1.fc25.noarch
mingw32-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw32-libpng-1.6.27-1.fc25.noarch
mingw32-libssh2-1.4.3-5.fc24.noarch
mingw32-libtasn1-4.9-1.fc25.noarch
mingw32-nettle-3.3-1.fc25.noarch
mingw32-pixman-0.34.0-1.fc25.noarch
mingw32-pkg-config-0.28-6.fc24.x86_64
mingw64-SDL-1.2.15-7.fc24.noarch
mingw64-bzip2-1.0.6-7.fc24.noarch
mingw64-curl-7.47.0-1.fc24.noarch
mingw64-glib2-2.50.3-1.fc25.noarch
mingw64-gmp-6.1.1-1.fc25.noarch
mingw64-gnutls-3.5.5-2.fc25.noarch
mingw64-gtk2-2.24.31-2.fc25.noarch
mingw64-gtk3-3.22.17-1.fc25.noarch
mingw64-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw64-libpng-1.6.27-1.fc25.noarch
mingw64-libssh2-1.4.3-5.fc24.noarch
mingw64-libtasn1-4.9-1.fc25.noarch
mingw64-nettle-3.3-1.fc25.noarch
mingw64-pixman-0.34.0-1.fc25.noarch
mingw64-pkg-config-0.28-6.fc24.x86_64
nettle-devel-3.3-1.fc25.x86_64
package python2 is not installed
perl-5.24.2-387.fc25.x86_64
pixman-devel-0.34.0-2.fc24.x86_64
sparse-0.5.0-10.fc25.x86_64
tar-1.29-3.fc25.x86_64
which-2.21-1.fc25.x86_64
zlib-devel-1.2.8-10.fc24.x86_64

Environment variables:
PACKAGES=ccache git tar PyYAML sparse flex bison python2 bzip2 hostname     glib2-devel pixman-devel zlib-devel SDL-devel libfdt-devel     gcc gcc-c++ clang make perl which bc findutils libaio-devel     nettle-devel     mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL mingw32-pkg-config     mingw32-gtk2 mingw32-gtk3 mingw32-gnutls mingw32-nettle mingw32-libtasn1     mingw32-libjpeg-turbo mingw32-libpng mingw32-curl mingw32-libssh2     mingw32-bzip2     mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL mingw64-pkg-config     mingw64-gtk2 mingw64-gtk3 mingw64-gnutls mingw64-nettle mingw64-libtasn1     mingw64-libjpeg-turbo mingw64-libpng mingw64-curl mingw64-libssh2     mingw64-bzip2
HOSTNAME=c2a841829142
TERM=xterm
MAKEFLAGS= -j8
HISTSIZE=1000
J=8
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
TARGET_LIST=
HISTCONTROL=ignoredups
FGC=f25
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
DISTTAG=f25container
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
FEATURES=mingw clang pyyaml
DEBUG=
_=/usr/bin/env

Prerequisite 'dtc' not present, skip
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-wtm44c4r/src'

real	0m28.179s
user	0m1.343s
sys	0m1.947s
  BUILD   fedora
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-wtm44c4r/src'
  GEN     docker-src.2017-09-25-20.34.52.25184/qemu.tar
  COPY    RUNNER
    RUN test-block in qemu:fedora 
Packages installed:
PyYAML-3.11-13.fc25.x86_64
SDL-devel-1.2.15-21.fc24.x86_64
bc-1.06.95-16.fc24.x86_64
bison-3.0.4-4.fc24.x86_64
bzip2-1.0.6-21.fc25.x86_64
ccache-3.3.4-1.fc25.x86_64
clang-3.9.1-2.fc25.x86_64
findutils-4.6.0-8.fc25.x86_64
flex-2.6.0-3.fc25.x86_64
gcc-6.4.1-1.fc25.x86_64
gcc-c++-6.4.1-1.fc25.x86_64
git-2.9.5-1.fc25.x86_64
glib2-devel-2.50.3-1.fc25.x86_64
hostname-3.15-8.fc25.x86_64
libaio-devel-0.3.110-6.fc24.x86_64
libfdt-devel-1.4.2-1.fc25.x86_64
make-4.1-6.fc25.x86_64
mingw32-SDL-1.2.15-7.fc24.noarch
mingw32-bzip2-1.0.6-7.fc24.noarch
mingw32-curl-7.47.0-1.fc24.noarch
mingw32-glib2-2.50.3-1.fc25.noarch
mingw32-gmp-6.1.1-1.fc25.noarch
mingw32-gnutls-3.5.5-2.fc25.noarch
mingw32-gtk2-2.24.31-2.fc25.noarch
mingw32-gtk3-3.22.17-1.fc25.noarch
mingw32-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw32-libpng-1.6.27-1.fc25.noarch
mingw32-libssh2-1.4.3-5.fc24.noarch
mingw32-libtasn1-4.9-1.fc25.noarch
mingw32-nettle-3.3-1.fc25.noarch
mingw32-pixman-0.34.0-1.fc25.noarch
mingw32-pkg-config-0.28-6.fc24.x86_64
mingw64-SDL-1.2.15-7.fc24.noarch
mingw64-bzip2-1.0.6-7.fc24.noarch
mingw64-curl-7.47.0-1.fc24.noarch
mingw64-glib2-2.50.3-1.fc25.noarch
mingw64-gmp-6.1.1-1.fc25.noarch
mingw64-gnutls-3.5.5-2.fc25.noarch
mingw64-gtk2-2.24.31-2.fc25.noarch
mingw64-gtk3-3.22.17-1.fc25.noarch
mingw64-libjpeg-turbo-1.5.1-1.fc25.noarch
mingw64-libpng-1.6.27-1.fc25.noarch
mingw64-libssh2-1.4.3-5.fc24.noarch
mingw64-libtasn1-4.9-1.fc25.noarch
mingw64-nettle-3.3-1.fc25.noarch
mingw64-pixman-0.34.0-1.fc25.noarch
mingw64-pkg-config-0.28-6.fc24.x86_64
nettle-devel-3.3-1.fc25.x86_64
package python2 is not installed
perl-5.24.2-387.fc25.x86_64
pixman-devel-0.34.0-2.fc24.x86_64
sparse-0.5.0-10.fc25.x86_64
tar-1.29-3.fc25.x86_64
which-2.21-1.fc25.x86_64
zlib-devel-1.2.8-10.fc24.x86_64

Environment variables:
PACKAGES=ccache git tar PyYAML sparse flex bison python2 bzip2 hostname     glib2-devel pixman-devel zlib-devel SDL-devel libfdt-devel     gcc gcc-c++ clang make perl which bc findutils libaio-devel     nettle-devel     mingw32-pixman mingw32-glib2 mingw32-gmp mingw32-SDL mingw32-pkg-config     mingw32-gtk2 mingw32-gtk3 mingw32-gnutls mingw32-nettle mingw32-libtasn1     mingw32-libjpeg-turbo mingw32-libpng mingw32-curl mingw32-libssh2     mingw32-bzip2     mingw64-pixman mingw64-glib2 mingw64-gmp mingw64-SDL mingw64-pkg-config     mingw64-gtk2 mingw64-gtk3 mingw64-gnutls mingw64-nettle mingw64-libtasn1     mingw64-libjpeg-turbo mingw64-libpng mingw64-curl mingw64-libssh2     mingw64-bzip2
HOSTNAME=a4863c26c2fa
TERM=xterm
MAKEFLAGS= -j8
HISTSIZE=1000
J=8
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
TARGET_LIST=
HISTCONTROL=ignoredups
FGC=f25
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
DISTTAG=f25container
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
FEATURES=mingw clang pyyaml
DEBUG=
_=/usr/bin/env

Configure options:
--enable-werror --prefix=/tmp/qemu-test/install --target-list=x86_64-softmmu
Install prefix    /tmp/qemu-test/install
BIOS directory    /tmp/qemu-test/install/share/qemu
binary directory  /tmp/qemu-test/install/bin
library directory /tmp/qemu-test/install/lib
module directory  /tmp/qemu-test/install/lib/qemu
libexec directory /tmp/qemu-test/install/libexec
include directory /tmp/qemu-test/install/include
config directory  /tmp/qemu-test/install/etc
local state directory   /tmp/qemu-test/install/var
Manual directory  /tmp/qemu-test/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /tmp/qemu-test/src
C compiler        cc
Host C compiler   cc
C++ compiler      c++
Objective-C compiler clang
ARFLAGS           rv
CFLAGS            -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g 
QEMU_CFLAGS       -I/usr/include/pixman-1  -Werror -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv  -Wendif-labels -Wno-shift-negative-value -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-strong 
LDFLAGS           -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g 
make              make
install           install
python            python -B
smbd              /usr/sbin/smbd
module support    no
host CPU          x86_64
host big endian   no
target list       x86_64-softmmu
gprof enabled     no
sparse enabled    no
strip binaries    yes
profiler          no
static build      no
SDL support       yes (1.2.15)
GTK support       no 
GTK GL support    no
VTE support       no 
TLS priority      NORMAL
GNUTLS support    no
GNUTLS rnd        no
libgcrypt         no
libgcrypt kdf     no
nettle            yes (3.3)
nettle kdf        yes
libtasn1          no
curses support    no
virgl support     no
curl support      no
mingw32 support   no
Audio drivers     oss
Block whitelist (rw) 
Block whitelist (ro) 
VirtFS support    no
Multipath support no
VNC support       yes
VNC SASL support  no
VNC JPEG support  no
VNC PNG support   no
xen support       no
brlapi support    no
bluez  support    no
Documentation     no
PIE               yes
vde support       no
netmap support    no
Linux AIO support yes
ATTR/XATTR support yes
Install blobs     yes
KVM support       yes
HAX support       no
TCG support       yes
TCG debug enabled no
TCG interpreter   no
RDMA support      no
fdt support       yes
preadv support    yes
fdatasync         yes
madvise           yes
posix_madvise     yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends    log
spice support     no 
rbd support       no
xfsctl support    no
smartcard support no
libusb            no
usb net redir     no
OpenGL support    no
OpenGL dmabufs    no
libiscsi support  no
libnfs support    no
build guest agent yes
QGA VSS support   no
QGA w32 disk info no
QGA MSI support   no
seccomp support   no
coroutine backend ucontext
coroutine pool    yes
debug stack usage no
crypto afalg      no
GlusterFS support no
gcov              gcov
gcov enabled      no
TPM support       yes
libssh2 support   no
TPM passthrough   yes
QOM debugging     yes
Live block migration yes
lzo support       no
snappy support    no
bzip2 support     no
NUMA host support no
tcmalloc support  no
jemalloc support  no
avx2 optimization yes
replication support yes
VxHS block device no
  GEN     x86_64-softmmu/config-devices.mak.tmp
  GEN     qemu-options.def
  GEN     qapi-types.h
  GEN     qapi-visit.h
  GEN     qapi-event.h
  GEN     qmp-commands.h
  GEN     config-host.h
  GEN     qmp-marshal.c
  GEN     x86_64-softmmu/config-devices.mak
  GEN     qapi-types.c
  GEN     qapi-visit.c
  GEN     qapi-event.c
  GEN     qmp-introspect.h
  GEN     qmp-introspect.c
  GEN     trace/generated-helpers-wrappers.h
  GEN     trace/generated-tcg-tracers.h
  GEN     trace/generated-helpers.h
  GEN     trace/generated-helpers.c
  GEN     module_block.h
  GEN     tests/test-qapi-types.h
  GEN     tests/test-qapi-visit.h
  GEN     tests/test-qmp-commands.h
  GEN     tests/test-qapi-event.h
  GEN     tests/test-qmp-introspect.h
  GEN     trace-root.h
  GEN     util/trace.h
  GEN     crypto/trace.h
  GEN     io/trace.h
  GEN     migration/trace.h
  GEN     block/trace.h
  GEN     chardev/trace.h
  GEN     hw/block/trace.h
  GEN     hw/block/dataplane/trace.h
  GEN     hw/char/trace.h
  GEN     hw/intc/trace.h
  GEN     hw/net/trace.h
  GEN     hw/virtio/trace.h
  GEN     hw/audio/trace.h
  GEN     hw/misc/trace.h
  GEN     hw/usb/trace.h
  GEN     hw/scsi/trace.h
  GEN     hw/nvram/trace.h
  GEN     hw/display/trace.h
  GEN     hw/input/trace.h
  GEN     hw/timer/trace.h
  GEN     hw/dma/trace.h
  GEN     hw/sparc/trace.h
  GEN     hw/sd/trace.h
  GEN     hw/isa/trace.h
  GEN     hw/mem/trace.h
  GEN     hw/i386/trace.h
  GEN     hw/i386/xen/trace.h
  GEN     hw/9pfs/trace.h
  GEN     hw/ppc/trace.h
  GEN     hw/pci/trace.h
  GEN     hw/s390x/trace.h
  GEN     hw/vfio/trace.h
  GEN     hw/acpi/trace.h
  GEN     hw/arm/trace.h
  GEN     hw/alpha/trace.h
  GEN     hw/xen/trace.h
  GEN     hw/ide/trace.h
  GEN     ui/trace.h
  GEN     audio/trace.h
  GEN     net/trace.h
  GEN     target/arm/trace.h
  GEN     target/i386/trace.h
  GEN     target/mips/trace.h
  GEN     target/sparc/trace.h
  GEN     target/s390x/trace.h
  GEN     target/ppc/trace.h
  GEN     qom/trace.h
  GEN     linux-user/trace.h
  GEN     qapi/trace.h
  GEN     accel/tcg/trace.h
  GEN     accel/kvm/trace.h
  GEN     nbd/trace.h
  GEN     trace-root.c
  GEN     scsi/trace.h
  GEN     util/trace.c
  GEN     crypto/trace.c
  GEN     io/trace.c
  GEN     migration/trace.c
  GEN     block/trace.c
  GEN     chardev/trace.c
  GEN     hw/block/trace.c
  GEN     hw/block/dataplane/trace.c
  GEN     hw/char/trace.c
  GEN     hw/intc/trace.c
  GEN     hw/net/trace.c
  GEN     hw/virtio/trace.c
  GEN     hw/audio/trace.c
  GEN     hw/misc/trace.c
  GEN     hw/usb/trace.c
  GEN     hw/scsi/trace.c
  GEN     hw/nvram/trace.c
  GEN     hw/display/trace.c
  GEN     hw/input/trace.c
  GEN     hw/timer/trace.c
  GEN     hw/dma/trace.c
  GEN     hw/sparc/trace.c
  GEN     hw/sd/trace.c
  GEN     hw/isa/trace.c
  GEN     hw/mem/trace.c
  GEN     hw/i386/trace.c
  GEN     hw/i386/xen/trace.c
  GEN     hw/9pfs/trace.c
  GEN     hw/ppc/trace.c
  GEN     hw/pci/trace.c
  GEN     hw/s390x/trace.c
  GEN     hw/vfio/trace.c
  GEN     hw/acpi/trace.c
  GEN     hw/arm/trace.c
  GEN     hw/alpha/trace.c
  GEN     hw/xen/trace.c
  GEN     hw/ide/trace.c
  GEN     ui/trace.c
  GEN     audio/trace.c
  GEN     net/trace.c
  GEN     target/arm/trace.c
  GEN     target/i386/trace.c
  GEN     target/mips/trace.c
  GEN     target/sparc/trace.c
  GEN     target/s390x/trace.c
  GEN     target/ppc/trace.c
  GEN     qom/trace.c
  GEN     linux-user/trace.c
  GEN     qapi/trace.c
  GEN     accel/tcg/trace.c
  GEN     accel/kvm/trace.c
  GEN     nbd/trace.c
  GEN     scsi/trace.c
  GEN     config-all-devices.mak
  CC      tests/qemu-iotests/socket_scm_helper.o
  CC      qmp-introspect.o
  CC      qapi-visit.o
  CC      qapi-event.o
  CC      qapi/qapi-visit-core.o
  CC      qapi/qobject-input-visitor.o
  CC      qapi-types.o
  CC      qapi/qapi-dealloc-visitor.o
  CC      qapi/qobject-output-visitor.o
  CC      qapi/qmp-registry.o
  CC      qapi/qmp-dispatch.o
  CC      qapi/string-input-visitor.o
  CC      qapi/string-output-visitor.o
  CC      qapi/opts-visitor.o
  CC      qapi/qapi-clone-visitor.o
  CC      qapi/qapi-util.o
  CC      qapi/qmp-event.o
  CC      qobject/qnull.o
  CC      qobject/qnum.o
  CC      qobject/qstring.o
  CC      qobject/qdict.o
  CC      qobject/qlist.o
  CC      qobject/qbool.o
  CC      qobject/qjson.o
  CC      qobject/qlit.o
  CC      qobject/qobject.o
  CC      qobject/json-lexer.o
  CC      qobject/json-streamer.o
  CC      qobject/json-parser.o
  CC      trace/control.o
  CC      trace/qmp.o
  CC      util/osdep.o
  CC      util/cutils.o
  CC      util/unicode.o
  CC      util/qemu-timer-common.o
  CC      util/bufferiszero.o
  CC      util/lockcnt.o
  CC      util/aiocb.o
  CC      util/async.o
  CC      util/thread-pool.o
  CC      util/qemu-timer.o
  CC      util/main-loop.o
  CC      util/iohandler.o
  CC      util/aio-posix.o
  CC      util/compatfd.o
  CC      util/event_notifier-posix.o
  CC      util/mmap-alloc.o
  CC      util/oslib-posix.o
  CC      util/qemu-openpty.o
  CC      util/qemu-thread-posix.o
  CC      util/memfd.o
  CC      util/envlist.o
  CC      util/path.o
  CC      util/module.o
  CC      util/host-utils.o
  CC      util/bitmap.o
  CC      util/bitops.o
  CC      util/hbitmap.o
  CC      util/fifo8.o
  CC      util/acl.o
  CC      util/cacheinfo.o
  CC      util/error.o
  CC      util/qemu-error.o
  CC      util/id.o
  CC      util/iov.o
  CC      util/qemu-config.o
  CC      util/qemu-sockets.o
  CC      util/uri.o
  CC      util/notify.o
  CC      util/qemu-option.o
  CC      util/qemu-progress.o
  CC      util/keyval.o
  CC      util/hexdump.o
  CC      util/crc32c.o
  CC      util/uuid.o
  CC      util/throttle.o
  CC      util/getauxval.o
  CC      util/readline.o
  CC      util/rcu.o
  CC      util/qemu-coroutine.o
  CC      util/qemu-coroutine-lock.o
  CC      util/qemu-coroutine-io.o
  CC      util/qemu-coroutine-sleep.o
  CC      util/coroutine-ucontext.o
  CC      util/buffer.o
  CC      util/timed-average.o
  CC      util/base64.o
  CC      util/log.o
  CC      util/qdist.o
  CC      util/qht.o
  CC      util/range.o
  CC      util/stats64.o
  CC      util/systemd.o
  CC      trace-root.o
  CC      util/trace.o
  CC      crypto/trace.o
  CC      io/trace.o
  CC      migration/trace.o
  CC      block/trace.o
  CC      chardev/trace.o
  CC      hw/block/trace.o
  CC      hw/block/dataplane/trace.o
  CC      hw/intc/trace.o
  CC      hw/char/trace.o
  CC      hw/net/trace.o
  CC      hw/virtio/trace.o
  CC      hw/audio/trace.o
  CC      hw/misc/trace.o
  CC      hw/usb/trace.o
  CC      hw/scsi/trace.o
  CC      hw/nvram/trace.o
  CC      hw/display/trace.o
  CC      hw/timer/trace.o
  CC      hw/input/trace.o
  CC      hw/dma/trace.o
  CC      hw/sparc/trace.o
  CC      hw/sd/trace.o
  CC      hw/isa/trace.o
  CC      hw/mem/trace.o
  CC      hw/i386/trace.o
  CC      hw/9pfs/trace.o
  CC      hw/ppc/trace.o
  CC      hw/i386/xen/trace.o
  CC      hw/pci/trace.o
  CC      hw/s390x/trace.o
  CC      hw/vfio/trace.o
  CC      hw/acpi/trace.o
  CC      hw/arm/trace.o
  CC      hw/alpha/trace.o
  CC      hw/xen/trace.o
  CC      hw/ide/trace.o
  CC      ui/trace.o
  CC      audio/trace.o
  CC      net/trace.o
  CC      target/arm/trace.o
  CC      target/i386/trace.o
  CC      target/sparc/trace.o
  CC      target/mips/trace.o
  CC      target/s390x/trace.o
  CC      target/ppc/trace.o
  CC      qom/trace.o
  CC      linux-user/trace.o
  CC      qapi/trace.o
  CC      accel/tcg/trace.o
  CC      nbd/trace.o
  CC      accel/kvm/trace.o
  CC      scsi/trace.o
  CC      crypto/pbkdf-stub.o
  CC      stubs/arch-query-cpu-def.o
  CC      stubs/arch-query-cpu-model-expansion.o
  CC      stubs/arch-query-cpu-model-comparison.o
  CC      stubs/arch-query-cpu-model-baseline.o
  CC      stubs/bdrv-next-monitor-owned.o
  CC      stubs/blk-commit-all.o
  CC      stubs/clock-warp.o
  CC      stubs/blockdev-close-all-bdrv-states.o
  CC      stubs/cpu-get-clock.o
  CC      stubs/cpu-get-icount.o
  CC      stubs/dump.o
  CC      stubs/error-printf.o
  CC      stubs/fdset.o
  CC      stubs/get-vm-name.o
  CC      stubs/gdbstub.o
  CC      stubs/iothread.o
  CC      stubs/iothread-lock.o
  CC      stubs/is-daemonized.o
  CC      stubs/linux-aio.o
  CC      stubs/migr-blocker.o
  CC      stubs/machine-init-done.o
  CC      stubs/change-state-handler.o
  CC      stubs/monitor.o
  CC      stubs/notify-event.o
  CC      stubs/qtest.o
  CC      stubs/replay.o
  CC      stubs/runstate-check.o
  CC      stubs/set-fd-handler.o
  CC      stubs/slirp.o
  CC      stubs/sysbus.o
  CC      stubs/trace-control.o
  CC      stubs/uuid.o
  CC      stubs/vm-stop.o
  CC      stubs/vmstate.o
  CC      stubs/qmp_pc_dimm.o
  CC      stubs/target-monitor-defs.o
  CC      stubs/target-get-monitor-def.o
  CC      stubs/pc_madt_cpu_entry.o
  CC      stubs/xen-common.o
  CC      stubs/vmgenid.o
  CC      stubs/xen-hvm.o
  CC      stubs/pci-host-piix.o
  GEN     qga/qapi-generated/qga-qapi-types.h
  GEN     qga/qapi-generated/qga-qapi-visit.h
  GEN     qga/qapi-generated/qga-qmp-commands.h
  GEN     qga/qapi-generated/qga-qapi-types.c
  GEN     qga/qapi-generated/qga-qapi-visit.c
  GEN     qga/qapi-generated/qga-qmp-marshal.c
  CC      contrib/ivshmem-client/ivshmem-client.o
  CC      contrib/ivshmem-client/main.o
  CC      contrib/ivshmem-server/ivshmem-server.o
  CC      contrib/ivshmem-server/main.o
  CC      qemu-nbd.o
  CC      block.o
  CC      blockjob.o
  CC      qemu-io-cmds.o
  CC      block/raw-format.o
  CC      replication.o
  CC      block/qcow.o
  CC      block/vdi.o
  CC      block/vmdk.o
  CC      block/cloop.o
  CC      block/bochs.o
  CC      block/vpc.o
  CC      block/vvfat.o
  CC      block/qcow2.o
  CC      block/qcow2-refcount.o
  CC      block/dmg.o
  CC      block/qcow2-cluster.o
  CC      block/qcow2-snapshot.o
  CC      block/qcow2-cache.o
  CC      block/qcow2-bitmap.o
  CC      block/qed.o
  CC      block/qed-l2-cache.o
  CC      block/qed-table.o
  CC      block/qed-cluster.o
  CC      block/qed-check.o
  CC      block/vhdx.o
  CC      block/vhdx-endian.o
  CC      block/vhdx-log.o
  CC      block/quorum.o
  CC      block/parallels.o
  CC      block/blkdebug.o
  CC      block/blkverify.o
  CC      block/blkreplay.o
  CC      block/block-backend.o
  CC      block/snapshot.o
  CC      block/qapi.o
  CC      block/file-posix.o
  CC      block/linux-aio.o
  CC      block/null.o
  CC      block/mirror.o
  CC      block/commit.o
  CC      block/io.o
  CC      block/throttle-groups.o
  CC      block/nbd.o
  CC      block/nbd-client.o
  CC      block/sheepdog.o
  CC      block/accounting.o
  CC      block/dirty-bitmap.o
  CC      block/write-threshold.o
  CC      block/backup.o
  CC      block/replication.o
  CC      block/throttle.o
  CC      block/crypto.o
  CC      nbd/server.o
  CC      nbd/client.o
  CC      nbd/common.o
  CC      scsi/utils.o
  CC      scsi/pr-manager.o
  CC      scsi/pr-manager-helper.o
  CC      crypto/init.o
  CC      crypto/hash.o
  CC      crypto/hash-nettle.o
  CC      crypto/hmac.o
  CC      crypto/hmac-nettle.o
  CC      crypto/aes.o
  CC      crypto/desrfb.o
  CC      crypto/cipher.o
  CC      crypto/tlscreds.o
  CC      crypto/tlscredsanon.o
  CC      crypto/tlssession.o
  CC      crypto/tlscredsx509.o
  CC      crypto/secret.o
  CC      crypto/random-platform.o
  CC      crypto/pbkdf.o
  CC      crypto/pbkdf-nettle.o
  CC      crypto/ivgen.o
  CC      crypto/ivgen-plain.o
  CC      crypto/ivgen-essiv.o
  CC      crypto/ivgen-plain64.o
  CC      crypto/afsplit.o
  CC      crypto/block.o
  CC      crypto/xts.o
  CC      crypto/block-luks.o
  CC      crypto/block-qcow.o
  CC      io/channel.o
  CC      io/channel-buffer.o
  CC      io/channel-command.o
  CC      io/channel-file.o
  CC      io/channel-socket.o
  CC      io/channel-tls.o
  CC      io/channel-watch.o
  CC      io/channel-websock.o
  CC      io/dns-resolver.o
  CC      io/channel-util.o
  CC      qom/object.o
  CC      io/task.o
  CC      qom/container.o
  CC      qom/qom-qobject.o
  CC      qom/object_interfaces.o
  CC      qemu-io.o
  GEN     qemu-img-cmds.h
  CC      scsi/qemu-pr-helper.o
  CC      qemu-bridge-helper.o
  CC      blockdev.o
  CC      blockdev-nbd.o
  CC      bootdevice.o
  CC      iothread.o
  CC      qdev-monitor.o
  CC      device-hotplug.o
  CC      bt-host.o
  CC      os-posix.o
  CC      bt-vhci.o
  CC      dma-helpers.o
  CC      vl.o
  CC      tpm.o
  CC      qmp-marshal.o
  CC      device_tree.o
  CC      hmp.o
  CC      qmp.o
  CC      audio/audio.o
  CC      cpus-common.o
  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
  CC      audio/sdlaudio.o
  CC      audio/wavcapture.o
  CC      audio/ossaudio.o
  CC      backends/rng.o
  CC      backends/rng-egd.o
  CC      backends/rng-random.o
  CC      backends/tpm.o
  CC      backends/hostmem.o
  CC      backends/hostmem-ram.o
  CC      backends/hostmem-file.o
  CC      backends/cryptodev.o
  CC      backends/cryptodev-builtin.o
  CC      block/stream.o
  CC      chardev/msmouse.o
  CC      chardev/testdev.o
  CC      chardev/wctablet.o
  CC      disas/i386.o
  CC      fsdev/qemu-fsdev-dummy.o
  CC      fsdev/qemu-fsdev-opts.o
  CC      hw/acpi/core.o
  CC      fsdev/qemu-fsdev-throttle.o
  CC      hw/acpi/pcihp.o
  CC      hw/acpi/piix4.o
  CC      hw/acpi/ich9.o
  CC      hw/acpi/tco.o
  CC      hw/acpi/cpu_hotplug.o
  CC      hw/acpi/memory_hotplug.o
  CC      hw/acpi/cpu.o
  CC      hw/acpi/vmgenid.o
  CC      hw/acpi/nvdimm.o
  CC      hw/acpi/acpi_interface.o
  CC      hw/acpi/bios-linker-loader.o
  CC      hw/acpi/aml-build.o
  CC      hw/acpi/ipmi.o
  CC      hw/acpi/acpi-stub.o
  CC      hw/acpi/ipmi-stub.o
  CC      hw/audio/sb16.o
  CC      hw/audio/es1370.o
  CC      hw/audio/ac97.o
  CC      hw/audio/fmopl.o
  CC      hw/audio/adlib.o
  CC      hw/audio/gus.o
  CC      hw/audio/gusemu_hal.o
  CC      hw/audio/gusemu_mixer.o
  CC      hw/audio/cs4231a.o
  CC      hw/audio/intel-hda.o
  CC      hw/audio/hda-codec.o
  CC      hw/audio/pcspk.o
  CC      hw/audio/soundhw.o
  CC      hw/block/block.o
  CC      hw/block/hd-geometry.o
  CC      hw/block/cdrom.o
  CC      hw/block/fdc.o
  CC      hw/block/pflash_cfi01.o
  CC      hw/block/nvme.o
  CC      hw/bt/core.o
  CC      hw/bt/l2cap.o
  CC      hw/bt/sdp.o
  CC      hw/bt/hci.o
  CC      hw/bt/hid.o
  CC      hw/bt/hci-csr.o
  CC      hw/char/ipoctal232.o
  CC      hw/char/parallel.o
  CC      hw/char/serial.o
  CC      hw/char/serial-pci.o
  CC      hw/char/serial-isa.o
  CC      hw/char/virtio-console.o
  CC      hw/core/qdev.o
  CC      hw/char/debugcon.o
  CC      hw/core/qdev-properties.o
  CC      hw/core/bus.o
  CC      hw/core/reset.o
  CC      hw/core/fw-path-provider.o
  CC      hw/core/irq.o
  CC      hw/core/hotplug.o
  CC      hw/core/nmi.o
  CC      hw/core/sysbus.o
  CC      hw/core/machine.o
  CC      hw/core/loader.o
  CC      hw/core/qdev-properties-system.o
  CC      hw/core/register.o
  CC      hw/core/or-irq.o
  CC      hw/cpu/core.o
  CC      hw/display/cirrus_vga.o
  CC      hw/display/vga-pci.o
  CC      hw/display/vga-isa.o
  CC      hw/display/vmware_vga.o
  CC      hw/dma/i8257.o
  CC      hw/i2c/core.o
  CC      hw/i2c/smbus.o
  CC      hw/i2c/smbus_eeprom.o
  CC      hw/i2c/smbus_ich9.o
  CC      hw/i2c/pm_smbus.o
  CC      hw/ide/core.o
  CC      hw/ide/atapi.o
  CC      hw/ide/qdev.o
  CC      hw/ide/pci.o
  CC      hw/ide/isa.o
  CC      hw/ide/piix.o
  CC      hw/ide/ahci.o
  CC      hw/ide/ich.o
  CC      hw/input/hid.o
  CC      hw/input/pckbd.o
  CC      hw/input/ps2.o
  CC      hw/input/vmmouse.o
  CC      hw/input/virtio-input.o
  CC      hw/input/virtio-input-hid.o
  CC      hw/input/virtio-input-host.o
  CC      hw/intc/i8259_common.o
  CC      hw/intc/i8259.o
  CC      hw/intc/ioapic_common.o
  CC      hw/intc/intc.o
  CC      hw/ipack/ipack.o
  CC      hw/ipack/tpci200.o
  CC      hw/ipmi/ipmi.o
  CC      hw/ipmi/ipmi_bmc_sim.o
  CC      hw/ipmi/ipmi_bmc_extern.o
  CC      hw/ipmi/isa_ipmi_kcs.o
  CC      hw/ipmi/isa_ipmi_bt.o
  CC      hw/isa/isa-bus.o
  CC      hw/isa/apm.o
  CC      hw/mem/pc-dimm.o
  CC      hw/mem/nvdimm.o
  CC      hw/misc/applesmc.o
  CC      hw/misc/debugexit.o
  CC      hw/misc/sga.o
  CC      hw/misc/pc-testdev.o
  CC      hw/misc/pci-testdev.o
  CC      hw/misc/edu.o
  CC      hw/misc/unimp.o
  CC      hw/net/ne2000.o
  CC      hw/net/eepro100.o
  CC      hw/net/pcnet-pci.o
  CC      hw/net/pcnet.o
  CC      hw/net/e1000.o
  CC      hw/net/e1000x_common.o
  CC      hw/net/net_tx_pkt.o
  CC      hw/net/net_rx_pkt.o
  CC      hw/net/e1000e.o
  CC      hw/net/e1000e_core.o
  CC      hw/net/rtl8139.o
  CC      hw/net/vmxnet3.o
  CC      hw/net/ne2000-isa.o
  CC      hw/net/rocker/rocker.o
  CC      hw/net/rocker/rocker_fp.o
  CC      hw/net/rocker/rocker_desc.o
  CC      hw/net/rocker/rocker_world.o
  CC      hw/net/rocker/rocker_of_dpa.o
  CC      hw/nvram/eeprom93xx.o
  CC      hw/nvram/fw_cfg.o
  CC      hw/nvram/chrp_nvram.o
  CC      hw/pci-bridge/pci_bridge_dev.o
  CC      hw/pci-bridge/pcie_pci_bridge.o
  CC      hw/pci-bridge/pcie_root_port.o
  CC      hw/pci-bridge/gen_pcie_root_port.o
  CC      hw/pci-bridge/pci_expander_bridge.o
  CC      hw/pci-bridge/xio3130_upstream.o
  CC      hw/pci-bridge/xio3130_downstream.o
  CC      hw/pci-bridge/ioh3420.o
  CC      hw/pci-host/pam.o
  CC      hw/pci-bridge/i82801b11.o
  CC      hw/pci-host/piix.o
  CC      hw/pci-host/q35.o
  CC      hw/pci/pci.o
  CC      hw/pci/pci_bridge.o
  CC      hw/pci/msix.o
  CC      hw/pci/msi.o
  CC      hw/pci/shpc.o
  CC      hw/pci/slotid_cap.o
  CC      hw/pci/pci_host.o
  CC      hw/pci/pcie_host.o
  CC      hw/pci/pcie.o
  CC      hw/pci/pcie_port.o
  CC      hw/pci/pcie_aer.o
  CC      hw/pcmcia/pcmcia.o
  CC      hw/pci/pci-stub.o
  CC      hw/scsi/scsi-disk.o
  CC      hw/scsi/scsi-generic.o
  CC      hw/scsi/scsi-bus.o
  CC      hw/scsi/lsi53c895a.o
  CC      hw/scsi/mptsas.o
  CC      hw/scsi/mptconfig.o
  CC      hw/scsi/mptendian.o
  CC      hw/scsi/megasas.o
  CC      hw/scsi/vmw_pvscsi.o
  CC      hw/scsi/esp-pci.o
  CC      hw/scsi/esp.o
  CC      hw/sd/core.o
  CC      hw/sd/sd.o
  CC      hw/sd/sdhci.o
  CC      hw/smbios/smbios.o
  CC      hw/smbios/smbios_type_38.o
  CC      hw/smbios/smbios-stub.o
  CC      hw/timer/hpet.o
  CC      hw/smbios/smbios_type_38-stub.o
  CC      hw/timer/i8254_common.o
  CC      hw/timer/i8254.o
  CC      hw/tpm/tpm_tis.o
  CC      hw/tpm/tpm_passthrough.o
  CC      hw/tpm/tpm_util.o
  CC      hw/usb/core.o
  CC      hw/usb/combined-packet.o
  CC      hw/usb/bus.o
  CC      hw/usb/desc.o
  CC      hw/usb/libhw.o
  CC      hw/usb/desc-msos.o
  CC      hw/usb/hcd-uhci.o
  CC      hw/usb/hcd-ohci.o
  CC      hw/usb/hcd-ehci.o
  CC      hw/usb/hcd-ehci-pci.o
  CC      hw/usb/hcd-xhci.o
  CC      hw/usb/hcd-xhci-nec.o
  CC      hw/usb/dev-hub.o
  CC      hw/usb/dev-hid.o
  CC      hw/usb/dev-wacom.o
  CC      hw/usb/dev-storage.o
  CC      hw/usb/dev-uas.o
  CC      hw/usb/dev-audio.o
  CC      hw/usb/dev-serial.o
  CC      hw/usb/dev-network.o
  CC      hw/usb/dev-bluetooth.o
  CC      hw/usb/dev-smartcard-reader.o
  CC      hw/usb/dev-mtp.o
  CC      hw/usb/host-stub.o
  CC      hw/virtio/virtio-rng.o
  CC      hw/virtio/virtio-pci.o
  CC      hw/virtio/virtio-bus.o
  CC      hw/virtio/virtio-mmio.o
  CC      hw/virtio/vhost-stub.o
  CC      hw/watchdog/watchdog.o
  CC      hw/watchdog/wdt_i6300esb.o
  CC      hw/watchdog/wdt_ib700.o
  CC      migration/migration.o
  CC      migration/socket.o
  CC      migration/fd.o
  CC      migration/exec.o
  CC      migration/tls.o
  CC      migration/channel.o
  CC      migration/savevm.o
  CC      migration/colo-comm.o
  CC      migration/colo.o
  CC      migration/colo-failover.o
  CC      migration/vmstate.o
  CC      migration/vmstate-types.o
  CC      migration/page_cache.o
  CC      migration/qemu-file.o
  CC      migration/global_state.o
  CC      migration/qemu-file-channel.o
  CC      migration/postcopy-ram.o
  CC      migration/xbzrle.o
  CC      migration/qjson.o
  CC      migration/block.o
  CC      net/net.o
  CC      net/queue.o
  CC      net/checksum.o
  CC      net/util.o
  CC      net/hub.o
  CC      net/socket.o
  CC      net/dump.o
  CC      net/eth.o
  CC      net/vhost-user.o
  CC      net/l2tpv3.o
  CC      net/slirp.o
  CC      net/filter.o
  CC      net/filter-buffer.o
  CC      net/filter-mirror.o
  CC      net/colo-compare.o
  CC      net/colo.o
  CC      net/filter-rewriter.o
  CC      net/filter-replay.o
  CC      net/tap.o
  CC      net/tap-linux.o
  CC      qom/cpu.o
  CC      replay/replay.o
  CC      replay/replay-internal.o
  CC      replay/replay-events.o
  CC      replay/replay-time.o
  CC      replay/replay-input.o
  CC      replay/replay-char.o
  CC      replay/replay-snapshot.o
  CC      replay/replay-net.o
  CC      replay/replay-audio.o
  CC      slirp/cksum.o
  CC      slirp/if.o
  CC      slirp/ip_icmp.o
  CC      slirp/ip6_icmp.o
  CC      slirp/ip6_input.o
  CC      slirp/ip6_output.o
  CC      slirp/ip_input.o
  CC      slirp/ip_output.o
  CC      slirp/dnssearch.o
  CC      slirp/dhcpv6.o
  CC      slirp/slirp.o
  CC      slirp/mbuf.o
  CC      slirp/misc.o
  CC      slirp/sbuf.o
  CC      slirp/socket.o
  CC      slirp/tcp_input.o
  CC      slirp/tcp_output.o
  CC      slirp/tcp_timer.o
  CC      slirp/tcp_subr.o
  CC      slirp/udp6.o
  CC      slirp/bootp.o
  CC      slirp/udp.o
  CC      slirp/tftp.o
  CC      slirp/arp_table.o
  CC      slirp/ndp_table.o
  CC      slirp/ncsi.o
  CC      ui/keymaps.o
  CC      ui/console.o
  CC      ui/cursor.o
  CC      ui/qemu-pixman.o
  CC      ui/input.o
  CC      ui/input-keymap.o
  CC      ui/input-legacy.o
  CC      ui/input-linux.o
  CC      ui/sdl.o
  CC      ui/sdl_zoom.o
  CC      ui/x_keymap.o
  CC      ui/vnc.o
  CC      ui/vnc-enc-zlib.o
  CC      ui/vnc-enc-hextile.o
  CC      ui/vnc-enc-tight.o
  CC      ui/vnc-palette.o
  CC      ui/vnc-enc-zrle.o
  CC      ui/vnc-auth-vencrypt.o
  CC      ui/vnc-jobs.o
  CC      ui/vnc-ws.o
  CC      chardev/char.o
  CC      chardev/char-fd.o
  CC      chardev/char-fe.o
  CC      chardev/char-file.o
  CC      chardev/char-io.o
  CC      chardev/char-mux.o
  CC      chardev/char-null.o
  CC      chardev/char-parallel.o
  CC      chardev/char-pipe.o
  CC      chardev/char-pty.o
  CC      chardev/char-ringbuf.o
  CC      chardev/char-serial.o
  CC      chardev/char-socket.o
  CC      chardev/char-stdio.o
  CC      chardev/char-udp.o
  AR      libqemuutil.a
  CC      qga/guest-agent-command-state.o
  CC      qga/commands.o
  CC      qga/main.o
  CC      qga/commands-posix.o
  CC      qga/channel-posix.o
  CC      qga/qapi-generated/qga-qapi-types.o
  CC      qga/qapi-generated/qga-qapi-visit.o
  CC      qga/qapi-generated/qga-qmp-marshal.o
  AS      optionrom/multiboot.o
  AS      optionrom/linuxboot.o
  CC      optionrom/linuxboot_dma.o
  CC      qemu-img.o
  AS      optionrom/kvmvapic.o
  BUILD   optionrom/multiboot.img
  BUILD   optionrom/linuxboot.img
  BUILD   optionrom/linuxboot_dma.img
  BUILD   optionrom/multiboot.raw
  BUILD   optionrom/kvmvapic.img
  BUILD   optionrom/linuxboot.raw
  BUILD   optionrom/linuxboot_dma.raw
  LINK    qemu-io
  BUILD   optionrom/kvmvapic.raw
  SIGN    optionrom/multiboot.bin
  SIGN    optionrom/linuxboot_dma.bin
  SIGN    optionrom/linuxboot.bin
  SIGN    optionrom/kvmvapic.bin
  LINK    scsi/qemu-pr-helper
  LINK    qemu-bridge-helper
  LINK    tests/qemu-iotests/socket_scm_helper
  LINK    ivshmem-client
  LINK    ivshmem-server
  LINK    qemu-nbd
  LINK    qemu-img
  LINK    qemu-ga
  GEN     x86_64-softmmu/hmp-commands.h
  GEN     x86_64-softmmu/hmp-commands-info.h
  GEN     x86_64-softmmu/config-target.h
  CC      x86_64-softmmu/exec.o
  CC      x86_64-softmmu/tcg/tcg.o
  CC      x86_64-softmmu/tcg/tcg-op.o
  CC      x86_64-softmmu/tcg/tcg-common.o
  CC      x86_64-softmmu/fpu/softfloat.o
  CC      x86_64-softmmu/tcg/optimize.o
  CC      x86_64-softmmu/disas.o
  GEN     x86_64-softmmu/gdbstub-xml.c
  CC      x86_64-softmmu/arch_init.o
  CC      x86_64-softmmu/cpus.o
  CC      x86_64-softmmu/monitor.o
  CC      x86_64-softmmu/gdbstub.o
  CC      x86_64-softmmu/balloon.o
  CC      x86_64-softmmu/ioport.o
  CC      x86_64-softmmu/numa.o
  CC      x86_64-softmmu/qtest.o
  CC      x86_64-softmmu/memory.o
  CC      x86_64-softmmu/memory_mapping.o
  CC      x86_64-softmmu/dump.o
  CC      x86_64-softmmu/migration/ram.o
  CC      x86_64-softmmu/accel/accel.o
  CC      x86_64-softmmu/accel/kvm/kvm-all.o
  CC      x86_64-softmmu/accel/stubs/hax-stub.o
  CC      x86_64-softmmu/accel/tcg/tcg-all.o
  CC      x86_64-softmmu/accel/tcg/cputlb.o
  CC      x86_64-softmmu/accel/tcg/tcg-runtime.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec.o
  CC      x86_64-softmmu/accel/tcg/cpu-exec-common.o
  CC      x86_64-softmmu/accel/tcg/translate-all.o
  CC      x86_64-softmmu/accel/tcg/translator.o
  CC      x86_64-softmmu/hw/block/virtio-blk.o
  CC      x86_64-softmmu/hw/block/dataplane/virtio-blk.o
  CC      x86_64-softmmu/hw/char/virtio-serial-bus.o
  CC      x86_64-softmmu/hw/core/generic-loader.o
  CC      x86_64-softmmu/hw/core/null-machine.o
  CC      x86_64-softmmu/hw/display/vga.o
  CC      x86_64-softmmu/hw/display/virtio-gpu.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-3d.o
  CC      x86_64-softmmu/hw/display/virtio-gpu-pci.o
  CC      x86_64-softmmu/hw/display/virtio-vga.o
  CC      x86_64-softmmu/hw/intc/apic.o
  CC      x86_64-softmmu/hw/intc/apic_common.o
  CC      x86_64-softmmu/hw/intc/ioapic.o
  CC      x86_64-softmmu/hw/isa/lpc_ich9.o
  CC      x86_64-softmmu/hw/misc/vmport.o
  CC      x86_64-softmmu/hw/misc/ivshmem.o
  CC      x86_64-softmmu/hw/misc/pvpanic.o
  CC      x86_64-softmmu/hw/misc/hyperv_testdev.o
  CC      x86_64-softmmu/hw/misc/mmio_interface.o
  CC      x86_64-softmmu/hw/net/virtio-net.o
  CC      x86_64-softmmu/hw/net/vhost_net.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi.o
  CC      x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
  CC      x86_64-softmmu/hw/scsi/vhost-scsi-common.o
  CC      x86_64-softmmu/hw/scsi/vhost-scsi.o
  CC      x86_64-softmmu/hw/scsi/vhost-user-scsi.o
  CC      x86_64-softmmu/hw/timer/mc146818rtc.o
  CC      x86_64-softmmu/hw/vfio/common.o
  CC      x86_64-softmmu/hw/vfio/pci.o
  CC      x86_64-softmmu/hw/vfio/pci-quirks.o
  CC      x86_64-softmmu/hw/vfio/platform.o
  CC      x86_64-softmmu/hw/vfio/spapr.o
  CC      x86_64-softmmu/hw/virtio/virtio.o
  CC      x86_64-softmmu/hw/virtio/virtio-balloon.o
  CC      x86_64-softmmu/hw/virtio/vhost.o
  CC      x86_64-softmmu/hw/virtio/vhost-backend.o
  CC      x86_64-softmmu/hw/virtio/vhost-user.o
  CC      x86_64-softmmu/hw/virtio/vhost-vsock.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto.o
  CC      x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
  CC      x86_64-softmmu/hw/i386/multiboot.o
  CC      x86_64-softmmu/hw/i386/pc.o
  CC      x86_64-softmmu/hw/i386/pc_piix.o
  CC      x86_64-softmmu/hw/i386/pc_q35.o
  CC      x86_64-softmmu/hw/i386/pc_sysfw.o
  CC      x86_64-softmmu/hw/i386/x86-iommu.o
  CC      x86_64-softmmu/hw/i386/intel_iommu.o
  CC      x86_64-softmmu/hw/i386/amd_iommu.o
  CC      x86_64-softmmu/hw/i386/acpi-build.o
  CC      x86_64-softmmu/hw/i386/kvmvapic.o
  CC      x86_64-softmmu/hw/i386/pci-assign-load-rom.o
  CC      x86_64-softmmu/hw/i386/kvm/clock.o
  CC      x86_64-softmmu/hw/i386/kvm/apic.o
  CC      x86_64-softmmu/hw/i386/kvm/i8259.o
  CC      x86_64-softmmu/hw/i386/kvm/ioapic.o
  CC      x86_64-softmmu/hw/i386/kvm/i8254.o
  CC      x86_64-softmmu/hw/i386/kvm/pci-assign.o
  CC      x86_64-softmmu/target/i386/helper.o
  CC      x86_64-softmmu/target/i386/cpu.o
  CC      x86_64-softmmu/target/i386/gdbstub.o
  CC      x86_64-softmmu/target/i386/xsave_helper.o
  CC      x86_64-softmmu/target/i386/translate.o
  CC      x86_64-softmmu/target/i386/bpt_helper.o
  CC      x86_64-softmmu/target/i386/cc_helper.o
  CC      x86_64-softmmu/target/i386/excp_helper.o
  CC      x86_64-softmmu/target/i386/fpu_helper.o
  CC      x86_64-softmmu/target/i386/int_helper.o
  CC      x86_64-softmmu/target/i386/mem_helper.o
  CC      x86_64-softmmu/target/i386/misc_helper.o
  CC      x86_64-softmmu/target/i386/mpx_helper.o
  CC      x86_64-softmmu/target/i386/seg_helper.o
  CC      x86_64-softmmu/target/i386/smm_helper.o
  CC      x86_64-softmmu/target/i386/svm_helper.o
  CC      x86_64-softmmu/target/i386/machine.o
  CC      x86_64-softmmu/target/i386/arch_memory_mapping.o
  CC      x86_64-softmmu/target/i386/arch_dump.o
  CC      x86_64-softmmu/target/i386/monitor.o
  CC      x86_64-softmmu/target/i386/kvm.o
  CC      x86_64-softmmu/target/i386/hyperv.o
  GEN     trace/generated-helpers.c
  CC      x86_64-softmmu/trace/control-target.o
  CC      x86_64-softmmu/gdbstub-xml.o
  CC      x86_64-softmmu/trace/generated-helpers.o
  LINK    x86_64-softmmu/qemu-system-x86_64
QEMU          -- "/tmp/qemu-test/build/x86_64-softmmu/qemu-system-x86_64" -nodefaults -machine accel=qtest
QEMU_IMG      -- "/tmp/qemu-test/build/qemu-img" 
QEMU_IO       -- "/tmp/qemu-test/build/qemu-io"  --cache writeback -f raw
QEMU_NBD      -- "/tmp/qemu-test/build/qemu-nbd" 
IMGFMT        -- raw
IMGPROTO      -- file
PLATFORM      -- Linux/x86_64 a4863c26c2fa 4.11.10-300.fc26.x86_64
TEST_DIR      -- /tmp/qemu-test
SOCKET_SCM_HELPER -- /tmp/qemu-test/build/tests/qemu-iotests/socket_scm_helper

001        
002        
004        
005        
008        
009        
010        
011        
012        
017         [not run] not suitable for this image format: raw
018         [not run] not suitable for this image format: raw
019         [not run] not suitable for this image format: raw
020         [not run] not suitable for this image format: raw
021        
024         [not run] not suitable for this image format: raw
025        
027         [not run] not suitable for this image format: raw
028         [not run] not suitable for this image format: raw
029         [not run] not suitable for this image format: raw
031         [not run] not suitable for this image format: raw
032        
033        
034         [not run] not suitable for this image format: raw
035         [not run] not suitable for this image format: raw
036         [not run] not suitable for this image format: raw
037         [not run] not suitable for this image format: raw
038         [not run] not suitable for this image format: raw
039         [not run] not suitable for this image format: raw
042         [not run] not suitable for this image format: raw
045        
046         [not run] not suitable for this image format: raw
047         [not run] not suitable for this image format: raw
048        
050         [not run] not suitable for this image format: raw
052        
053         [not run] not suitable for this image format: raw
054         [not run] not suitable for this image format: raw
058         [not run] not suitable for this image format: raw
059         [not run] not suitable for this image format: raw
060         [not run] not suitable for this image format: raw
062         [not run] not suitable for this image format: raw
063        
064         [not run] not suitable for this image format: raw
065         [not run] not suitable for this image format: raw
066         [not run] not suitable for this image format: raw
067         [not run] not suitable for this image format: raw
068         [not run] not suitable for this image format: raw
069         [not run] not suitable for this image format: raw
070         [not run] not suitable for this image format: raw
071         [not run] not suitable for this image format: raw
072         [not run] not suitable for this image format: raw
073         [not run] not suitable for this image format: raw
074         [not run] not suitable for this image format: raw
075         [not run] not suitable for this image format: raw
077        
078         [not run] not suitable for this image format: raw
081        
082         [not run] not suitable for this image format: raw
084         [not run] not suitable for this image format: raw
086        
087         [not run] not suitable for this image format: raw
088         [not run] not suitable for this image format: raw
089         [not run] not suitable for this image format: raw
090         [not run] not suitable for this image format: raw
092         [not run] not suitable for this image format: raw
094         [not run] not suitable for this image protocol: file
095         [not run] not suitable for this image format: raw
096         [not run] not suitable for this image format: raw
098         [not run] not suitable for this image format: raw
099         [not run] not suitable for this image format: raw
101        
102         [not run] not suitable for this image format: raw
103         [not run] not suitable for this image format: raw
105         [not run] not suitable for this image format: raw
106        
107         [not run] not suitable for this image format: raw
108         [not run] not suitable for this image format: raw
110         [not run] not suitable for this image format: raw
111         [not run] not suitable for this image format: raw
113         [not run] not suitable for this image format: raw
114         [not run] not suitable for this image format: raw
116         [not run] not suitable for this image format: raw
119         [not run] not suitable for this image protocol: file
120        
123         [not run] not suitable for this image protocol: file
128         [not run] root privileges required to run dmsetup
129         [not run] not suitable for this image format: raw
130         [not run] not suitable for this image format: raw
131         [not run] not suitable for this image format: raw
132        
133         [not run] not suitable for this image format: raw
134         [not run] not suitable for this image format: raw
138         [not run] not suitable for this image format: raw
139         [not run] not suitable for this image format: raw
140        
141         [not run] not suitable for this image format: raw
143        
144         [not run] not suitable for this image format: raw
145        
146         [not run] not suitable for this image format: raw
148        
150        
152        
153         [not run] not suitable for this image format: raw
154         [not run] not suitable for this image format: raw
156         [not run] not suitable for this image format: raw
158         [not run] not suitable for this image format: raw
159        
160        
162         [not run] ssh support required
165         [not run] not suitable for this image format: raw
170        
171        
175        
177         [not run] not suitable for this image format: raw
179         [not run] not suitable for this image format: raw
182         [not run] not suitable for this image format: raw
184         [not run] not suitable for this image format: raw
188         [not run] not suitable for this image format: raw
190         [not run] not suitable for this image format: raw
192        
194        
Not run: 017 018 019 020 024 027 028 029 031 034 035 036 037 038 039 042 046 047 050 053 054 058 059 060 062 064 065 066 067 068 069 070 071 072 073 074 075 078 082 084 087 088 089 090 092 094 095 096 098 099 102 103 105 107 108 110 111 113 114 116 119 123 128 129 130 131 133 134 138 139 141 144 146 153 154 156 158 162 165 177 179 182 184 188 190
Passed all 37 tests
QEMU          -- "/tmp/qemu-test/build/x86_64-softmmu/qemu-system-x86_64" -nodefaults -machine accel=qtest
QEMU_IMG      -- "/tmp/qemu-test/build/qemu-img" 
QEMU_IO       -- "/tmp/qemu-test/build/qemu-io"  --cache writeback -f qcow2
QEMU_NBD      -- "/tmp/qemu-test/build/qemu-nbd" 
IMGFMT        -- qcow2 (compat=1.1)
IMGPROTO      -- file
PLATFORM      -- Linux/x86_64 a4863c26c2fa 4.11.10-300.fc26.x86_64
TEST_DIR      -- /tmp/qemu-test
SOCKET_SCM_HELPER -- /tmp/qemu-test/build/tests/qemu-iotests/socket_scm_helper

001        
002        
004        
005        
008        
009        
010        
011        
012        
017        
018        
019        
020        
021        
024        
025        
027        
028        
029        
031        
032        
033        
034        
035        
036        
037        
038        
039         - output mismatch (see 039.out.bad)
--- /tmp/qemu-test/src/tests/qemu-iotests/039.out	2017-09-26 00:24:23.000000000 +0000
+++ 039.out.bad	2017-09-26 00:39:23.965655280 +0000
@@ -17,8 +17,8 @@
     exec "$QEMU_IO_PROG" $QEMU_IO_ARGS "$@";
 fi )
 incompatible_features     0x1
-ERROR cluster 5 refcount=0 reference=1
-ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0
+qemu-img: ERROR cluster 5 refcount=0 reference=1
+qemu-img: ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0
 
 2 errors were found on the image.
 Data may be corrupted, or further writes to the image may corrupt it.
@@ -29,10 +29,10 @@
 incompatible_features     0x1
 
 == Repairing the image file must succeed ==
-ERROR cluster 5 refcount=0 reference=1
-Rebuilding refcount structure
-Repairing cluster 1 refcount=1 reference=0
-Repairing cluster 2 refcount=1 reference=0
+qemu-img: ERROR cluster 5 refcount=0 reference=1
+qemu-img: Rebuilding refcount structure
+qemu-img: Repairing cluster 1 refcount=1 reference=0
+qemu-img: Repairing cluster 2 refcount=1 reference=0
 The following inconsistencies were found and repaired:
 
     0 leaked clusters
@@ -97,8 +97,8 @@
     exec "$QEMU_IO_PROG" $QEMU_IO_ARGS "$@";
 fi )
 incompatible_features     0x1
-ERROR cluster 5 refcount=0 reference=1
-ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0
+qemu-img: ERROR cluster 5 refcount=0 reference=1
+qemu-img: ERROR OFLAG_COPIED data cluster: l2_entry=8000000000050000 refcount=0
 
 2 errors were found on the image.
 Data may be corrupted, or further writes to the image may corrupt it.
042        
045         [not run] not suitable for this image format: qcow2
046        
047        
048        
050        
052        
053        
054        
058        
059         [not run] not suitable for this image format: qcow2
060         - output mismatch (see 060.out.bad)
--- /tmp/qemu-test/src/tests/qemu-iotests/060.out	2017-09-26 00:24:25.000000000 +0000
+++ 060.out.bad	2017-09-26 00:39:38.400328042 +0000
@@ -3,7 +3,7 @@
 === Testing L2 reference into L1 ===
 
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
-ERROR cluster 3 refcount=1 reference=3
+qemu-img: ERROR cluster 3 refcount=1 reference=3
 
 1 errors were found on the image.
 Data may be corrupted, or further writes to the image may corrupt it.
@@ -28,8 +28,8 @@
 === Testing cluster data reference into refcount block ===
 
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
-ERROR refcount block 0 refcount=2
-ERROR cluster 2 refcount=1 reference=2
+qemu-img: ERROR refcount block 0 refcount=2
+qemu-img: ERROR cluster 2 refcount=1 reference=2
 
 2 errors were found on the image.
 Data may be corrupted, or further writes to the image may corrupt it.
@@ -37,11 +37,11 @@
 qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with refcount block); further corruption events will be suppressed
 write failed: Input/output error
 incompatible_features     0x2
-ERROR refcount block 0 refcount=2
-ERROR cluster 2 refcount=1 reference=2
-Rebuilding refcount structure
-Repairing cluster 1 refcount=1 reference=0
-Repairing cluster 2 refcount=2 reference=1
+qemu-img: ERROR refcount block 0 refcount=2
+qemu-img: ERROR cluster 2 refcount=1 reference=2
+qemu-img: Rebuilding refcount structure
+qemu-img: Repairing cluster 1 refcount=1 reference=0
+qemu-img: Repairing cluster 2 refcount=2 reference=1
 The following inconsistencies were found and repaired:
 
     0 leaked clusters
@@ -61,8 +61,8 @@
 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 wrote 512/512 bytes at offset 0
 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-ERROR cluster 4 refcount=1 reference=2
-Leaked cluster 9 refcount=1 reference=0
+qemu-img: ERROR cluster 4 refcount=1 reference=2
+qemu-img: Leaked cluster 9 refcount=1 reference=0
 
 1 errors were found on the image.
 Data may be corrupted, or further writes to the image may corrupt it.
@@ -73,11 +73,11 @@
 qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with inactive L2 table); further corruption events will be suppressed
 write failed: Input/output error
 incompatible_features     0x2
-ERROR cluster 4 refcount=1 reference=2
-Leaked cluster 9 refcount=1 reference=0
-Repairing cluster 4 refcount=1 reference=2
-Repairing cluster 9 refcount=1 reference=0
-Repairing OFLAG_COPIED data cluster: l2_entry=8000000000040000 refcount=2
+qemu-img: ERROR cluster 4 refcount=1 reference=2
+qemu-img: Leaked cluster 9 refcount=1 reference=0
+qemu-img: Repairing cluster 4 refcount=1 reference=2
+qemu-img: Repairing cluster 9 refcount=1 reference=0
+qemu-img: Repairing OFLAG_COPIED data cluster: l2_entry=8000000000040000 refcount=2
 The following inconsistencies were found and repaired:
 
     1 leaked clusters
@@ -128,7 +128,7 @@
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 wrote 65536/65536 bytes at offset 0
 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-qcow2: Marking image as corrupt: L2 table offset 0x42a00 unaligned (L1 index: 0); further corruption events will be suppressed
+qemu-img: qcow2: Marking image as corrupt: L2 table offset 0x42a00 unaligned (L1 index: 0); further corruption events will be suppressed
 qemu-img: Error while amending options: Input/output error
 
 === Testing unaligned L2 entry ===
@@ -144,7 +144,7 @@
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 wrote 65536/65536 bytes at offset 0
 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-qcow2: Marking image as corrupt: Cluster allocation offset 0x52a00 unaligned (L2 offset: 0x40000, L2 index: 0); further corruption events will be suppressed
+qemu-img: qcow2: Marking image as corrupt: Cluster allocation offset 0x52a00 unaligned (L2 offset: 0x40000, L2 index: 0); further corruption events will be suppressed
 qemu-img: Error while amending options: Input/output error
 
 === Testing unaligned reftable entry ===
062        
063        
064         [not run] not suitable for this image format: qcow2
065        
066        
067        
068        
069        
070         [not run] not suitable for this image format: qcow2
071        
072        
073        
074        
075         [not run] not suitable for this image format: qcow2
077         [not run] not suitable for this image format: qcow2
078         [not run] not suitable for this image format: qcow2
081         [not run] not suitable for this image format: qcow2
082        
084         [not run] not suitable for this image format: qcow2
086        
087        
088         [not run] not suitable for this image format: qcow2
089        
090        
092         [not run] not suitable for this image format: qcow2
094         [not run] not suitable for this image protocol: file
095        
096        
098        
099        
101         [not run] not suitable for this image format: qcow2
102        
103        
105        
106         [not run] not suitable for this image format: qcow2
107        
108         - output mismatch (see 108.out.bad)
--- /tmp/qemu-test/src/tests/qemu-iotests/108.out	2017-09-26 00:24:23.000000000 +0000
+++ 108.out.bad	2017-09-26 00:40:23.784443274 +0000
@@ -5,11 +5,11 @@
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
 wrote 65536/65536 bytes at offset 0
 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-ERROR cluster 0 refcount=0 reference=1
-ERROR cluster 3 refcount=0 reference=1
-ERROR cluster 4 refcount=0 reference=1
-ERROR cluster 5 refcount=0 reference=1
-Rebuilding refcount structure
+qemu-img: ERROR cluster 0 refcount=0 reference=1
+qemu-img: ERROR cluster 3 refcount=0 reference=1
+qemu-img: ERROR cluster 4 refcount=0 reference=1
+qemu-img: ERROR cluster 5 refcount=0 reference=1
+qemu-img: Rebuilding refcount structure
 The following inconsistencies were found and repaired:
 
     0 leaked clusters
@@ -30,10 +30,10 @@
 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 read 512/512 bytes at offset 111104
 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-ERROR cluster 256 refcount=0 reference=1
-Rebuilding refcount structure
-Repairing cluster 1 refcount=1 reference=0
-Repairing cluster 2 refcount=1 reference=0
+qemu-img: ERROR cluster 256 refcount=0 reference=1
+qemu-img: Rebuilding refcount structure
+qemu-img: Repairing cluster 1 refcount=1 reference=0
+qemu-img: Repairing cluster 2 refcount=1 reference=0
 The following inconsistencies were found and repaired:
 
     0 leaked clusters
@@ -50,7 +50,7 @@
 --- Otherwise clean ---
 
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
-Repairing refcount block 1 is outside image
+qemu-img: Repairing refcount block 1 is outside image
 The following inconsistencies were found and repaired:
 
     0 leaked clusters
@@ -62,12 +62,12 @@
 --- Refblock is unallocated ---
 
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
-Repairing refcount block 1 is outside image
-ERROR cluster 16 refcount=0 reference=1
-Rebuilding refcount structure
-Repairing cluster 1 refcount=1 reference=0
-Repairing cluster 2 refcount=1 reference=0
-Repairing cluster 16 refcount=1 reference=0
+qemu-img: Repairing refcount block 1 is outside image
+qemu-img: ERROR cluster 16 refcount=0 reference=1
+qemu-img: Rebuilding refcount structure
+qemu-img: Repairing cluster 1 refcount=1 reference=0
+qemu-img: Repairing cluster 2 refcount=1 reference=0
+qemu-img: Repairing cluster 16 refcount=1 reference=0
 The following inconsistencies were found and repaired:
 
     0 leaked clusters
@@ -79,11 +79,11 @@
 --- Signed overflow after the refblock ---
 
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
-Repairing refcount block 1 is outside image
-ERROR could not resize image: Invalid argument
-Rebuilding refcount structure
-Repairing cluster 1 refcount=1 reference=0
-Repairing cluster 2 refcount=1 reference=0
+qemu-img: Repairing refcount block 1 is outside image
+qemu-img: ERROR could not resize image: Invalid argument
+qemu-img: Rebuilding refcount structure
+qemu-img: Repairing cluster 1 refcount=1 reference=0
+qemu-img: Repairing cluster 2 refcount=1 reference=0
 The following inconsistencies were found and repaired:
 
     0 leaked clusters
@@ -95,11 +95,11 @@
 --- Unsigned overflow after the refblock ---
 
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
-Repairing refcount block 1 is outside image
-ERROR could not resize image: Invalid argument
-Rebuilding refcount structure
-Repairing cluster 1 refcount=1 reference=0
-Repairing cluster 2 refcount=1 reference=0
+qemu-img: Repairing refcount block 1 is outside image
+qemu-img: ERROR could not resize image: Invalid argument
+qemu-img: Rebuilding refcount structure
+qemu-img: Repairing cluster 1 refcount=1 reference=0
+qemu-img: Repairing cluster 2 refcount=1 reference=0
 The following inconsistencies were found and repaired:
 
     0 leaked clusters
110        
111        
113         [not run] not suitable for this image format: qcow2
114        
116         [not run] not suitable for this image format: qcow2
119         [not run] not suitable for this image format: qcow2
120        
123         [not run] not suitable for this image format: qcow2
128         [not run] not suitable for this image format: qcow2
129        
130        
131         [not run] not suitable for this image format: qcow2
132        
133        
134        
138        
139        
140        
141        
143        
144        
145        
146         [not run] not suitable for this image format: qcow2
148         [not run] not suitable for this image format: qcow2
150        
152        
153        
154        
156        
158        
159        
160         [not run] not suitable for this image format: qcow2
162         [not run] ssh support required
165        
170        
171         [not run] not suitable for this image format: qcow2
175         [not run] not suitable for this image format: qcow2
177        
179        
182        
184        
188        
190        
192        
194        
Not run: 045 059 064 070 075 077 078 081 084 088 092 094 101 106 113 116 119 123 128 131 146 148 160 162 171 175
Failures: 039 060 108
Failed 3 of 96 tests
Test failed: iotests qcow2
Traceback (most recent call last):
  File "./tests/docker/docker.py", line 385, in <module>
    sys.exit(main())
  File "./tests/docker/docker.py", line 382, in main
    return args.cmdobj.run(args, argv)
  File "./tests/docker/docker.py", line 239, in run
    return Docker().run(argv, args.keep, quiet=args.quiet)
  File "./tests/docker/docker.py", line 207, in run
    quiet=quiet)
  File "./tests/docker/docker.py", line 125, in _do_check
    return subprocess.check_call(self._command + cmd, **kwargs)
  File "/usr/lib64/python2.7/subprocess.py", line 186, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['docker', 'run', '--label', 'com.qemu.instance.uuid=834e0a3ca25211e79aa752540069c830', '-u', '0', '-t', '--security-opt', 'seccomp=unconfined', '--rm', '--net=none', '-e', 'TARGET_LIST=', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=8', '-e', 'DEBUG=', '-e', 'SHOW_ENV=1', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/var/tmp/patchew-tester-tmp-wtm44c4r/src/docker-src.2017-09-25-20.34.52.25184:/var/tmp/qemu:z,ro', '-v', '/root/.cache/qemu-docker-ccache:/var/tmp/ccache:z', 'qemu:fedora', '/var/tmp/qemu/run', 'test-block']' returned non-zero exit status 1
make[1]: *** [tests/docker/Makefile.include:129: docker-run] Error 1
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-wtm44c4r/src'
make: *** [tests/docker/Makefile.include:159: docker-run-test-block@fedora] Error 2

real	7m27.620s
user	0m1.591s
sys	0m1.669s
=== OUTPUT END ===

Test command exited with code: 2


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 2/8] tests: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:08 ` [Qemu-devel] [PATCH v1 2/8] tests: Replace fprintf(stderr, "*\n" with error_report() Alistair Francis
@ 2017-09-26  0:55   ` Emilio G. Cota
  2017-09-26 14:03     ` Eric Blake
  2017-09-27 23:08     ` Alistair Francis
  0 siblings, 2 replies; 35+ messages in thread
From: Emilio G. Cota @ 2017-09-26  0:55 UTC (permalink / raw)
  To: Alistair Francis
  Cc: qemu-devel, qemu-block, Michael S. Tsirkin, armbru,
	Dr. David Alan Gilbert, Gerd Hoffmann, Igor Mammedov, alistair23

On Mon, Sep 25, 2017 at 17:08:48 -0700, Alistair Francis wrote:
> diff --git a/tests/atomic_add-bench.c b/tests/atomic_add-bench.c
> index caa1e8e689..41ba1600c0 100644
> --- a/tests/atomic_add-bench.c
> +++ b/tests/atomic_add-bench.c
> @@ -29,7 +29,7 @@ static const char commands_string[] =
>  static void usage_complete(char *argv[])
>  {
>      fprintf(stderr, "Usage: %s [options]\n", argv[0]);
> -    fprintf(stderr, "options:\n%s\n", commands_string);
> +    fprintf(stderr, "options:\n%s", commands_string);
>  }

We do want that trailing \n, unless we move it to commands_string.

Also, I think using error_report here would be confusing -- this is a standalone
test program with as little QEMU-specific knowledge as possible (QemuThreads
are used for portability); using error_report here is confusing (this is not
an error).

> diff --git a/tests/check-qlit b/tests/check-qlit
> new file mode 100755
> index 0000000000000000000000000000000000000000..950429524e3eb07e6daed1fe01caad0f5d554809
> GIT binary patch
> literal 272776
> zcmeEvdwf*Ywf~vPB$){zGeCghJ;($So{10*LNEgfoIs*MKvBRDLV(l&F`3b5QKOS6

? I don't know what this is, I don't seem to have this binary in my
checked out tree.

(snips thousands of lines)

> diff --git a/tests/qht-bench.c b/tests/qht-bench.c
> index 11c1cec766..2637d601a9 100644
> --- a/tests/qht-bench.c
> +++ b/tests/qht-bench.c
> @@ -5,6 +5,7 @@
>   *   See the COPYING file in the top-level directory.
>   */
>  #include "qemu/osdep.h"
> +#include "qemu/error-report.h"
>  #include "qemu/processor.h"
>  #include "qemu/atomic.h"
>  #include "qemu/qht.h"
> @@ -89,7 +90,7 @@ static const char commands_string[] =
>  static void usage_complete(int argc, char *argv[])
>  {
>      fprintf(stderr, "Usage: %s [options]\n", argv[0]);
> -    fprintf(stderr, "options:\n%s\n", commands_string);
> +    fprintf(stderr, "options:\n%s", commands_string);

Same as above: this removes the necessary trailing \n.

>      exit(-1);
>  }
>  
> @@ -328,7 +329,7 @@ static void htable_init(void)
>              retries++;
>          }
>      }
> -    fprintf(stderr, " populated after %zu retries\n", retries);
> +    error_report(" populated after %zu retries", retries);
>  }

ditto -- I'd rather keep fprintf(stderr) here, it's less confusing.

Thanks,

		Emilio

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 3/8] hw: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:08   ` Alistair Francis
  (?)
@ 2017-09-26  3:51   ` Thomas Huth
  2017-09-27 22:41       ` Alistair Francis
  -1 siblings, 1 reply; 35+ messages in thread
From: Thomas Huth @ 2017-09-26  3:51 UTC (permalink / raw)
  To: Alistair Francis, qemu-devel
  Cc: Chris Wulff, Michael S. Tsirkin, Anthony Green, Mark Cave-Ayland,
	armbru, Gerd Hoffmann, Marek Vasut, Stefano Stabellini, Jia Liu,
	qemu-block, Magnus Damm, Alexander Graf, Christian Borntraeger,
	Hervé Poussineau, Anthony Perard, xen-devel, Jason Wang,
	Artyom Tarasenko, Eduardo Habkost, Fabien Chouteau,
	Marcel Apfelbaum, qemu-arm, Jan Kiszka, Stefan Hajnoczi,
	Yongbok Kim, alistair23, Stafford Horne, John Snow,
	Richard Henderson, Paul Burton, Thomas Huth, Cornelia Huck,
	Michael Walle, qemu-ppc, Paolo Bonzini, Aurelien Jarno

On 26.09.2017 02:08, Alistair Francis wrote:
> Replace a large number of the fprintf(stderr, "*\n" calls with
> error_report(). The functions were renamed with these commands and then
> compiler issues where manually fixed.
> 
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> 
> Some lines where then manually tweaked to pass checkpatch.
> 
> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
> Cc: Andrzej Zaborowski <balrogg@gmail.com>
> Cc: Jan Kiszka <jan.kiszka@web.de>
> Cc: Stefan Hajnoczi <stefanha@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Thomas Huth <huth@tuxfamily.org>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: "Michael S. Tsirkin" <mst@redhat.com>
> Cc: Richard Henderson <rth@twiddle.net>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Cc: Stefano Stabellini <sstabellini@kernel.org>
> Cc: Anthony Perard <anthony.perard@citrix.com>
> Cc: John Snow <jsnow@redhat.com>
> Cc: Christian Borntraeger <borntraeger@de.ibm.com>
> Cc: Cornelia Huck <cohuck@redhat.com>
> Cc: Alexander Graf <agraf@suse.de>
> Cc: Michael Walle <michael@walle.cc>
> Cc: Paul Burton <paul.burton@imgtec.com>
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Cc: Yongbok Kim <yongbok.kim@imgtec.com>
> Cc: "Hervé Poussineau" <hpoussin@reactos.org>
> Cc: Anthony Green <green@moxielogic.com>
> Cc: Jason Wang <jasowang@redhat.com>
> Cc: Chris Wulff <crwulff@gmail.com>
> Cc: Marek Vasut <marex@denx.de>
> Cc: Jia Liu <proljc@gmail.com>
> Cc: Stafford Horne <shorne@gmail.com>
> Cc: Marcel Apfelbaum <marcel@redhat.com>
> Cc: Magnus Damm <magnus.damm@gmail.com>
> Cc: Fabien Chouteau <chouteau@adacore.com>
> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Cc: Artyom Tarasenko <atar4qemu@gmail.com>
> Cc: qemu-arm@nongnu.org
> Cc: qemu-block@nongnu.org
> Cc: xen-devel@lists.xenproject.org
> Cc: qemu-ppc@nongnu.org
> ---
> 
>  hw/arm/armv7m.c                 |  2 +-
>  hw/arm/boot.c                   | 34 +++++++++----------
>  hw/arm/gumstix.c                | 13 ++++----
>  hw/arm/mainstone.c              |  7 ++--
>  hw/arm/musicpal.c               |  2 +-
>  hw/arm/omap1.c                  |  5 +--
>  hw/arm/omap2.c                  | 21 ++++++------
>  hw/arm/omap_sx1.c               |  6 ++--
>  hw/arm/palm.c                   | 10 +++---
>  hw/arm/pxa2xx.c                 |  7 ++--
>  hw/arm/stellaris.c              |  3 +-
>  hw/arm/tosa.c                   | 17 +++++-----
>  hw/arm/versatilepb.c            |  2 +-
>  hw/arm/vexpress.c               |  8 ++---
>  hw/arm/z2.c                     |  6 ++--
>  hw/block/dataplane/virtio-blk.c |  6 ++--
>  hw/block/onenand.c              |  8 ++---
>  hw/block/tc58128.c              | 44 ++++++++++++-------------
>  hw/bt/core.c                    | 15 +++++----
>  hw/bt/hci-csr.c                 | 17 +++++-----
>  hw/bt/hci.c                     | 30 ++++++++---------
>  hw/bt/hid.c                     |  2 +-
>  hw/bt/l2cap.c                   | 47 ++++++++++++++-------------
>  hw/bt/sdp.c                     |  7 ++--
>  hw/char/exynos4210_uart.c       |  6 ++--
>  hw/char/mcf_uart.c              |  5 +--
>  hw/char/sh_serial.c             |  9 +++---
>  hw/core/loader.c                | 31 +++++++++---------
>  hw/core/ptimer.c                |  7 ++--
>  hw/cris/axis_dev88.c            |  3 +-
>  hw/cris/boot.c                  |  5 +--
>  hw/display/blizzard.c           | 20 ++++++------
>  hw/display/omap_dss.c           | 14 ++++----
>  hw/display/pl110.c              |  2 +-
>  hw/display/pxa2xx_lcd.c         |  2 +-
>  hw/display/qxl-render.c         |  7 ++--
>  hw/display/qxl.c                | 10 +++---
>  hw/display/tc6393xb.c           | 36 ++++++++++++---------
>  hw/display/virtio-gpu-3d.c      |  4 +--
>  hw/display/vmware_vga.c         | 22 ++++++-------
>  hw/dma/omap_dma.c               | 26 ++++++++-------
>  hw/dma/soc_dma.c                | 37 ++++++++++-----------
>  hw/gpio/omap_gpio.c             |  2 +-
>  hw/i2c/omap_i2c.c               | 10 +++---
>  hw/i386/kvm/apic.c              |  9 +++---
>  hw/i386/kvm/clock.c             |  7 ++--
>  hw/i386/kvm/i8254.c             |  7 ++--
>  hw/i386/kvm/i8259.c             |  5 +--
>  hw/i386/kvm/ioapic.c            |  5 +--
>  hw/i386/multiboot.c             | 21 ++++++------
>  hw/i386/pc.c                    | 18 +++++------
>  hw/i386/pc_piix.c               |  2 +-
>  hw/i386/pc_sysfw.c              |  5 +--
>  hw/i386/xen/xen-hvm.c           | 32 +++++++++---------
>  hw/i386/xen/xen-mapcache.c      | 12 +++----
>  hw/i386/xen/xen_apic.c          |  2 +-
>  hw/ide/ahci.c                   |  6 ++--
>  hw/ide/core.c                   |  2 +-
>  hw/input/lm832x.c               |  6 ++--
>  hw/input/pckbd.c                |  3 +-
>  hw/input/pxa2xx_keypad.c        |  2 +-
>  hw/input/tsc2005.c              | 17 +++++-----
>  hw/input/tsc210x.c              | 72 ++++++++++++++++++++---------------------
>  hw/input/virtio-input-hid.c     | 14 ++++----
>  hw/input/virtio-input.c         |  5 +--
>  hw/intc/arm_gic_kvm.c           | 12 +++----
>  hw/intc/omap_intc.c             |  4 +--
>  hw/intc/openpic.c               |  7 ++--
>  hw/intc/openpic_kvm.c           |  8 ++---
>  hw/intc/s390_flic_kvm.c         |  4 +--
>  hw/ipmi/ipmi.c                  |  1 +
>  hw/ipmi/ipmi_bmc_extern.c       |  5 +--
>  hw/isa/isa-bus.c                |  7 ++--
>  hw/lm32/lm32_boards.c           |  5 +--
>  hw/lm32/milkymist.c             |  5 +--
>  hw/m68k/an5206.c                |  4 +--
>  hw/m68k/mcf5206.c               |  3 +-
>  hw/m68k/mcf5208.c               |  7 ++--
>  hw/microblaze/boot.c            |  2 +-
>  hw/mips/boston.c                |  4 +--
>  hw/mips/mips_fulong2e.c         |  4 +--
>  hw/mips/mips_jazz.c             |  4 +--
>  hw/mips/mips_malta.c            |  4 +--
>  hw/mips/mips_mipssim.c          |  4 +--
>  hw/mips/mips_r4k.c              |  6 ++--
>  hw/misc/a9scu.c                 |  3 +-
>  hw/misc/omap_gpmc.c             | 11 ++++---
>  hw/misc/omap_l4.c               |  5 +--
>  hw/misc/omap_sdrc.c             |  3 +-
>  hw/misc/vmport.c                |  2 +-
>  hw/moxie/moxiesim.c             |  7 ++--
>  hw/net/fsl_etsec/etsec.c        |  2 +-
>  hw/net/pcnet.c                  |  2 +-
>  hw/net/smc91c111.c              |  5 +--
>  hw/net/vhost_net.c              | 16 ++++-----
>  hw/nios2/boot.c                 |  2 +-
>  hw/nvram/eeprom93xx.c           |  5 +--
>  hw/nvram/fw_cfg.c               |  4 +--
>  hw/openrisc/openrisc_sim.c      |  3 +-
>  hw/pci-host/bonito.c            |  6 ++--
>  hw/pci/pci.c                    | 10 +++---
>  hw/ppc/e500.c                   | 20 ++++++------
>  hw/ppc/mac_newworld.c           |  2 +-
>  hw/ppc/mac_oldworld.c           |  2 +-
>  hw/ppc/mpc8544_guts.c           |  5 +--
>  hw/ppc/ppc405_boards.c          |  8 ++---
>  hw/ppc/ppc440_bamboo.c          | 19 +++++------
>  hw/ppc/ppc4xx_pci.c             |  3 +-
>  hw/ppc/prep.c                   |  4 +--
>  hw/ppc/virtex_ml507.c           |  4 +--
>  hw/s390x/virtio-ccw.c           |  2 +-
>  hw/scsi/lsi53c895a.c            |  4 +--
>  hw/scsi/spapr_vscsi.c           | 49 ++++++++++++++--------------
>  hw/scsi/virtio-scsi-dataplane.c |  6 ++--
>  hw/sd/pl181.c                   |  5 +--
>  hw/sd/sd.c                      | 14 ++++----
>  hw/sh4/r2d.c                    |  9 +++---
>  hw/sh4/sh7750.c                 | 64 ++++++++++++++++++------------------
>  hw/sparc/leon3.c                |  9 +++---
>  hw/sparc/sun4m.c                |  8 ++---
>  hw/sparc64/niagara.c            |  2 +-
>  hw/sparc64/sun4u.c              |  9 +++---
>  hw/ssi/omap_spi.c               |  5 +--
>  hw/timer/omap_gptimer.c         | 11 ++++---
>  hw/timer/twl92230.c             |  2 +-
>  hw/timer/xilinx_timer.c         |  8 ++---
>  hw/usb/core.c                   | 15 +++++----
>  hw/usb/desc.c                   |  4 +--
>  hw/usb/dev-audio.c              | 29 +++++++++--------
>  hw/usb/dev-bluetooth.c          |  4 +--
>  hw/usb/dev-mtp.c                |  9 +++---
>  hw/usb/dev-network.c            | 20 ++++++------
>  hw/usb/hcd-ehci.c               | 32 +++++++++---------
>  hw/usb/hcd-musb.c               |  4 +--
>  hw/usb/hcd-xhci.c               |  3 +-
>  hw/usb/host-legacy.c            |  2 +-
>  hw/watchdog/watchdog.c          |  9 +++---
>  hw/watchdog/wdt_i6300esb.c      |  8 +++--
>  hw/xen/xen-common.c             | 10 +++---
>  hw/xen/xen_pt.c                 |  4 +--
>  hw/xenpv/xen_domainbuild.c      | 24 +++++++-------
>  hw/xenpv/xen_machine_pv.c       |  8 ++---
>  142 files changed, 769 insertions(+), 705 deletions(-)

This patch is IMHO way to big! Can you please break this down into the
individual hw/* subsystems, so that people who are familiar with a
certain subsystem have a chance to review just their part? Thanks.

 Thomas

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 3/8] hw: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:08   ` Alistair Francis
  (?)
  (?)
@ 2017-09-26  3:51   ` Thomas Huth
  -1 siblings, 0 replies; 35+ messages in thread
From: Thomas Huth @ 2017-09-26  3:51 UTC (permalink / raw)
  To: Alistair Francis, qemu-devel
  Cc: Cornelia Huck, Michael S. Tsirkin, Anthony Green,
	Mark Cave-Ayland, Alexander Graf, Gerd Hoffmann, Marek Vasut,
	Stefano Stabellini, Jia Liu, qemu-block, Magnus Damm, armbru,
	Christian Borntraeger, Hervé Poussineau, Marcel Apfelbaum,
	xen-devel, Jason Wang, Artyom Tarasenko, Eduardo Habkost,
	Fabien Chouteau, Anthony Perard, qemu-arm, Jan Kiszka,
	Stefan Hajnoczi

On 26.09.2017 02:08, Alistair Francis wrote:
> Replace a large number of the fprintf(stderr, "*\n" calls with
> error_report(). The functions were renamed with these commands and then
> compiler issues where manually fixed.
> 
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> 
> Some lines where then manually tweaked to pass checkpatch.
> 
> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
> Cc: Andrzej Zaborowski <balrogg@gmail.com>
> Cc: Jan Kiszka <jan.kiszka@web.de>
> Cc: Stefan Hajnoczi <stefanha@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Thomas Huth <huth@tuxfamily.org>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: "Michael S. Tsirkin" <mst@redhat.com>
> Cc: Richard Henderson <rth@twiddle.net>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Cc: Stefano Stabellini <sstabellini@kernel.org>
> Cc: Anthony Perard <anthony.perard@citrix.com>
> Cc: John Snow <jsnow@redhat.com>
> Cc: Christian Borntraeger <borntraeger@de.ibm.com>
> Cc: Cornelia Huck <cohuck@redhat.com>
> Cc: Alexander Graf <agraf@suse.de>
> Cc: Michael Walle <michael@walle.cc>
> Cc: Paul Burton <paul.burton@imgtec.com>
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Cc: Yongbok Kim <yongbok.kim@imgtec.com>
> Cc: "Hervé Poussineau" <hpoussin@reactos.org>
> Cc: Anthony Green <green@moxielogic.com>
> Cc: Jason Wang <jasowang@redhat.com>
> Cc: Chris Wulff <crwulff@gmail.com>
> Cc: Marek Vasut <marex@denx.de>
> Cc: Jia Liu <proljc@gmail.com>
> Cc: Stafford Horne <shorne@gmail.com>
> Cc: Marcel Apfelbaum <marcel@redhat.com>
> Cc: Magnus Damm <magnus.damm@gmail.com>
> Cc: Fabien Chouteau <chouteau@adacore.com>
> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Cc: Artyom Tarasenko <atar4qemu@gmail.com>
> Cc: qemu-arm@nongnu.org
> Cc: qemu-block@nongnu.org
> Cc: xen-devel@lists.xenproject.org
> Cc: qemu-ppc@nongnu.org
> ---
> 
>  hw/arm/armv7m.c                 |  2 +-
>  hw/arm/boot.c                   | 34 +++++++++----------
>  hw/arm/gumstix.c                | 13 ++++----
>  hw/arm/mainstone.c              |  7 ++--
>  hw/arm/musicpal.c               |  2 +-
>  hw/arm/omap1.c                  |  5 +--
>  hw/arm/omap2.c                  | 21 ++++++------
>  hw/arm/omap_sx1.c               |  6 ++--
>  hw/arm/palm.c                   | 10 +++---
>  hw/arm/pxa2xx.c                 |  7 ++--
>  hw/arm/stellaris.c              |  3 +-
>  hw/arm/tosa.c                   | 17 +++++-----
>  hw/arm/versatilepb.c            |  2 +-
>  hw/arm/vexpress.c               |  8 ++---
>  hw/arm/z2.c                     |  6 ++--
>  hw/block/dataplane/virtio-blk.c |  6 ++--
>  hw/block/onenand.c              |  8 ++---
>  hw/block/tc58128.c              | 44 ++++++++++++-------------
>  hw/bt/core.c                    | 15 +++++----
>  hw/bt/hci-csr.c                 | 17 +++++-----
>  hw/bt/hci.c                     | 30 ++++++++---------
>  hw/bt/hid.c                     |  2 +-
>  hw/bt/l2cap.c                   | 47 ++++++++++++++-------------
>  hw/bt/sdp.c                     |  7 ++--
>  hw/char/exynos4210_uart.c       |  6 ++--
>  hw/char/mcf_uart.c              |  5 +--
>  hw/char/sh_serial.c             |  9 +++---
>  hw/core/loader.c                | 31 +++++++++---------
>  hw/core/ptimer.c                |  7 ++--
>  hw/cris/axis_dev88.c            |  3 +-
>  hw/cris/boot.c                  |  5 +--
>  hw/display/blizzard.c           | 20 ++++++------
>  hw/display/omap_dss.c           | 14 ++++----
>  hw/display/pl110.c              |  2 +-
>  hw/display/pxa2xx_lcd.c         |  2 +-
>  hw/display/qxl-render.c         |  7 ++--
>  hw/display/qxl.c                | 10 +++---
>  hw/display/tc6393xb.c           | 36 ++++++++++++---------
>  hw/display/virtio-gpu-3d.c      |  4 +--
>  hw/display/vmware_vga.c         | 22 ++++++-------
>  hw/dma/omap_dma.c               | 26 ++++++++-------
>  hw/dma/soc_dma.c                | 37 ++++++++++-----------
>  hw/gpio/omap_gpio.c             |  2 +-
>  hw/i2c/omap_i2c.c               | 10 +++---
>  hw/i386/kvm/apic.c              |  9 +++---
>  hw/i386/kvm/clock.c             |  7 ++--
>  hw/i386/kvm/i8254.c             |  7 ++--
>  hw/i386/kvm/i8259.c             |  5 +--
>  hw/i386/kvm/ioapic.c            |  5 +--
>  hw/i386/multiboot.c             | 21 ++++++------
>  hw/i386/pc.c                    | 18 +++++------
>  hw/i386/pc_piix.c               |  2 +-
>  hw/i386/pc_sysfw.c              |  5 +--
>  hw/i386/xen/xen-hvm.c           | 32 +++++++++---------
>  hw/i386/xen/xen-mapcache.c      | 12 +++----
>  hw/i386/xen/xen_apic.c          |  2 +-
>  hw/ide/ahci.c                   |  6 ++--
>  hw/ide/core.c                   |  2 +-
>  hw/input/lm832x.c               |  6 ++--
>  hw/input/pckbd.c                |  3 +-
>  hw/input/pxa2xx_keypad.c        |  2 +-
>  hw/input/tsc2005.c              | 17 +++++-----
>  hw/input/tsc210x.c              | 72 ++++++++++++++++++++---------------------
>  hw/input/virtio-input-hid.c     | 14 ++++----
>  hw/input/virtio-input.c         |  5 +--
>  hw/intc/arm_gic_kvm.c           | 12 +++----
>  hw/intc/omap_intc.c             |  4 +--
>  hw/intc/openpic.c               |  7 ++--
>  hw/intc/openpic_kvm.c           |  8 ++---
>  hw/intc/s390_flic_kvm.c         |  4 +--
>  hw/ipmi/ipmi.c                  |  1 +
>  hw/ipmi/ipmi_bmc_extern.c       |  5 +--
>  hw/isa/isa-bus.c                |  7 ++--
>  hw/lm32/lm32_boards.c           |  5 +--
>  hw/lm32/milkymist.c             |  5 +--
>  hw/m68k/an5206.c                |  4 +--
>  hw/m68k/mcf5206.c               |  3 +-
>  hw/m68k/mcf5208.c               |  7 ++--
>  hw/microblaze/boot.c            |  2 +-
>  hw/mips/boston.c                |  4 +--
>  hw/mips/mips_fulong2e.c         |  4 +--
>  hw/mips/mips_jazz.c             |  4 +--
>  hw/mips/mips_malta.c            |  4 +--
>  hw/mips/mips_mipssim.c          |  4 +--
>  hw/mips/mips_r4k.c              |  6 ++--
>  hw/misc/a9scu.c                 |  3 +-
>  hw/misc/omap_gpmc.c             | 11 ++++---
>  hw/misc/omap_l4.c               |  5 +--
>  hw/misc/omap_sdrc.c             |  3 +-
>  hw/misc/vmport.c                |  2 +-
>  hw/moxie/moxiesim.c             |  7 ++--
>  hw/net/fsl_etsec/etsec.c        |  2 +-
>  hw/net/pcnet.c                  |  2 +-
>  hw/net/smc91c111.c              |  5 +--
>  hw/net/vhost_net.c              | 16 ++++-----
>  hw/nios2/boot.c                 |  2 +-
>  hw/nvram/eeprom93xx.c           |  5 +--
>  hw/nvram/fw_cfg.c               |  4 +--
>  hw/openrisc/openrisc_sim.c      |  3 +-
>  hw/pci-host/bonito.c            |  6 ++--
>  hw/pci/pci.c                    | 10 +++---
>  hw/ppc/e500.c                   | 20 ++++++------
>  hw/ppc/mac_newworld.c           |  2 +-
>  hw/ppc/mac_oldworld.c           |  2 +-
>  hw/ppc/mpc8544_guts.c           |  5 +--
>  hw/ppc/ppc405_boards.c          |  8 ++---
>  hw/ppc/ppc440_bamboo.c          | 19 +++++------
>  hw/ppc/ppc4xx_pci.c             |  3 +-
>  hw/ppc/prep.c                   |  4 +--
>  hw/ppc/virtex_ml507.c           |  4 +--
>  hw/s390x/virtio-ccw.c           |  2 +-
>  hw/scsi/lsi53c895a.c            |  4 +--
>  hw/scsi/spapr_vscsi.c           | 49 ++++++++++++++--------------
>  hw/scsi/virtio-scsi-dataplane.c |  6 ++--
>  hw/sd/pl181.c                   |  5 +--
>  hw/sd/sd.c                      | 14 ++++----
>  hw/sh4/r2d.c                    |  9 +++---
>  hw/sh4/sh7750.c                 | 64 ++++++++++++++++++------------------
>  hw/sparc/leon3.c                |  9 +++---
>  hw/sparc/sun4m.c                |  8 ++---
>  hw/sparc64/niagara.c            |  2 +-
>  hw/sparc64/sun4u.c              |  9 +++---
>  hw/ssi/omap_spi.c               |  5 +--
>  hw/timer/omap_gptimer.c         | 11 ++++---
>  hw/timer/twl92230.c             |  2 +-
>  hw/timer/xilinx_timer.c         |  8 ++---
>  hw/usb/core.c                   | 15 +++++----
>  hw/usb/desc.c                   |  4 +--
>  hw/usb/dev-audio.c              | 29 +++++++++--------
>  hw/usb/dev-bluetooth.c          |  4 +--
>  hw/usb/dev-mtp.c                |  9 +++---
>  hw/usb/dev-network.c            | 20 ++++++------
>  hw/usb/hcd-ehci.c               | 32 +++++++++---------
>  hw/usb/hcd-musb.c               |  4 +--
>  hw/usb/hcd-xhci.c               |  3 +-
>  hw/usb/host-legacy.c            |  2 +-
>  hw/watchdog/watchdog.c          |  9 +++---
>  hw/watchdog/wdt_i6300esb.c      |  8 +++--
>  hw/xen/xen-common.c             | 10 +++---
>  hw/xen/xen_pt.c                 |  4 +--
>  hw/xenpv/xen_domainbuild.c      | 24 +++++++-------
>  hw/xenpv/xen_machine_pv.c       |  8 ++---
>  142 files changed, 769 insertions(+), 705 deletions(-)

This patch is IMHO way to big! Can you please break this down into the
individual hw/* subsystems, so that people who are familiar with a
certain subsystem have a chance to review just their part? Thanks.

 Thomas

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 8/8] target: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 8/8] target: " Alistair Francis
@ 2017-09-26  4:08   ` Thomas Huth
  2017-09-29 18:12     ` Alistair Francis
  2017-09-26 15:21   ` Richard Henderson
  1 sibling, 1 reply; 35+ messages in thread
From: Thomas Huth @ 2017-09-26  4:08 UTC (permalink / raw)
  To: Alistair Francis, qemu-devel
  Cc: Cornelia Huck, Eduardo Habkost, Marcelo Tosatti,
	Edgar E. Iglesias, armbru, Christian Borntraeger, Michael Walle,
	qemu-arm, qemu-ppc, Paolo Bonzini, Yongbok Kim, alistair23,
	Guan Xuetao, Aurelien Jarno, Richard Henderson

On 26.09.2017 02:09, Alistair Francis wrote:
> Replace a large number of the fprintf(stderr, "*\n" calls with
> error_report(). The functions were renamed with these commands and then
> compiler issues where manually fixed.
[...]
> @@ -9281,18 +9281,19 @@ static void init_ppc_proc(PowerPCCPU *cpu)
>          case POWERPC_FLAG_PMM:
>              break;
>          default:
> -            fprintf(stderr, "PowerPC MSR definition inconsistency\n"
> -                    "Should define POWERPC_FLAG_PX or POWERPC_FLAG_PMM\n");
> +            error_report("PowerPC MSR definition inconsistency");
> +            error_printf("Should define POWERPC_FLAG_PX or POWERPC_FLAG_PMM");
>              exit(1);
>          }
>      } else if (env->flags & (POWERPC_FLAG_PX | POWERPC_FLAG_PMM)) {
> -        fprintf(stderr, "PowerPC MSR definition inconsistency\n"
> -                "Should not define POWERPC_FLAG_PX nor POWERPC_FLAG_PMM\n");
> +        error_report("PowerPC MSR definition inconsistency");
> +        error_printf("Should not define POWERPC_FLAG_PX nor POWERPC_FLAG_PMM");
>          exit(1);
>      }
>      if ((env->flags & (POWERPC_FLAG_RTC_CLK | POWERPC_FLAG_BUS_CLK)) == 0) {
> -        fprintf(stderr, "PowerPC flags inconsistency\n"
> -                "Should define the time-base and decrementer clock source\n");
> +        error_report("PowerPC MSR definition inconsistency");
> +        error_printf("Should define the time-base and decrementer clock"
> +                     " source");
>          exit(1);
>      }

Replacing fprintf with error_report+error_printf is kind of very ugly.
While error_report adds newline to the output, error_printf does not (as
far as I can see) ... did you check how such a message looks like when
it is generated during runtime?
Also, the strings belong together, so printing them with two function
calls sound wrong to me... maybe they should be joined without newline
in the middle instead?

 Thomas

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 0/8]  Remove some of the fprintf(stderr, "*
  2017-09-26  0:08 [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* Alistair Francis
                   ` (9 preceding siblings ...)
  2017-09-26  0:42 ` no-reply
@ 2017-09-26  9:05 ` Stefan Hajnoczi
  2017-09-26 16:47   ` Alistair Francis
  10 siblings, 1 reply; 35+ messages in thread
From: Stefan Hajnoczi @ 2017-09-26  9:05 UTC (permalink / raw)
  To: Alistair Francis
  Cc: qemu-devel, alistair23, armbru, Kevin Wolf, Paolo Bonzini

On Mon, Sep 25, 2017 at 05:08:34PM -0700, Alistair Francis wrote:
> 
> Continue on improving QEMUs logging/error messages by removing more
> fprintf()'s.
> 
> Unfortunatley my Coccinelle skills aren't that great so it's all done in
> some nasty regex and a little bit of manual work.
> 
> 
> 
> Alistair Francis (8):
>   Replace all occurances of __FUNCTION__ with __func__
>   tests: Replace fprintf(stderr, "*\n" with error_report()
>   hw: Replace fprintf(stderr, "*\n" with error_report()
>   block: Replace fprintf(stderr, "*\n" with error_report()
>   util: Replace fprintf(stderr, "*\n" with error_report()
>   ui: Replace fprintf(stderr, "*\n" with error_report()
>   tcg: Replace fprintf(stderr, "*\n" with error_report()
>   target: Replace fprintf(stderr, "*\n" with error_report()
> 
>  audio/audio_int.h                      |   2 +-
>  block/file-posix.c                     |   6 +-
>  block/file-win32.c                     |   3 +-
>  block/linux-aio.c                      |   5 +-
>  block/parallels.c                      |   7 ++-
>  block/qcow2-cluster.c                  |   2 +-
>  block/qcow2-refcount.c                 |  95 +++++++++++++++----------------
>  block/qcow2.c                          |   8 +--
>  block/quorum.c                         |   5 +-
>  block/ssh.c                            |   4 +-
>  block/vdi.c                            |  14 +++--
>  block/vpc.c                            |   5 +-
>  block/vvfat.c                          |  99 ++++++++++++++++++---------------

Please don't convert fprintfs to error_report in the block layer yet.
error_report() uses the cur_mon global variable in a way that is not
thread-safe:

  void error_vprintf(const char *fmt, va_list ap)
  {
      if (cur_mon && !monitor_cur_is_qmp()) {
          monitor_vprintf(cur_mon, fmt, ap);

This is a time-of-check-to-time-of-use race condition.
monitor_cur_is_qmp() itself also suffers from a race condition.

I guess we haven't seen issues because error_report() is rarely called.

Stefan

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__
  2017-09-26  0:08   ` Alistair Francis
  (?)
  (?)
@ 2017-09-26 13:32   ` Eric Blake
  2017-09-27 22:59     ` Alistair Francis
                       ` (3 more replies)
  -1 siblings, 4 replies; 35+ messages in thread
From: Eric Blake @ 2017-09-26 13:32 UTC (permalink / raw)
  To: Alistair Francis, qemu-devel
  Cc: Dr. David Alan Gilbert, Stefano Stabellini, Fam Zheng,
	qemu-block, Peter Crosthwaite, John Snow, Juan Quintela, armbru,
	Yongbok Kim, qemu-arm, Gerd Hoffmann, Stefan Hajnoczi, xen-devel,
	Anthony Perard, alistair23, Aurelien Jarno

[-- Attachment #1: Type: text/plain, Size: 7049 bytes --]

On 09/25/2017 07:08 PM, Alistair Francis wrote:
> Replace all occurs of __FUNCTION__ except for the check in checkpatch
> with the non GCC specific __func__.
> 
> One line in hcd-musb.c was manually tweaked to pass checkpatch.
> 
> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Andrzej Zaborowski <balrogg@gmail.com>
> Cc: Stefano Stabellini <sstabellini@kernel.org>
> Cc: Anthony Perard <anthony.perard@citrix.com>
> Cc: John Snow <jsnow@redhat.com>
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Cc: Yongbok Kim <yongbok.kim@imgtec.com>
> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
> Cc: Stefan Hajnoczi <stefanha@redhat.com> (supporter:Block
> Cc: Fam Zheng <famz@redhat.com> (supporter:Block

That looks funny, with no closing ).  Something's breaking down between
get_maintainers.pl and your eventual email, although it's not fatal.

> Cc: Juan Quintela <quintela@redhat.com>
> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> Cc: qemu-arm@nongnu.org
> Cc: qemu-block@nongnu.org
> Cc: xen-devel@lists.xenproject.org
> ---
> 

>  65 files changed, 273 insertions(+), 273 deletions(-)

Big but mechanical, so I'm okay without splitting it further.

> 
> diff --git a/audio/audio_int.h b/audio/audio_int.h
> index 5bcb1c60e1..543b1bd8d5 100644
> --- a/audio/audio_int.h
> +++ b/audio/audio_int.h
> @@ -253,7 +253,7 @@ static inline int audio_ring_dist (int dst, int src, int len)
>  #define AUDIO_STRINGIFY(n) AUDIO_STRINGIFY_(n)
>  
>  #if defined _MSC_VER || defined __GNUC__
> -#define AUDIO_FUNC __FUNCTION__
> +#define AUDIO_FUNC __func__
>  #else
>  #define AUDIO_FUNC __FILE__ ":" AUDIO_STRINGIFY (__LINE__)
>  #endif

This can be further simplified.  We really aren't using _MSC_VER as our
compiler (can anyone prove me wrong?), and we DO require a C99 compiler
(per C99 6.4.2.2, __func__ support is mandatory), so we don't really
need the #else branch (or, for that matter, we probably don't even need
AUDIO_FUNC).  But to keep this patch mechanical, that can be a separate
followup.

> diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
> index 58005b6619..32687afced 100644
> --- a/hw/arm/nseries.c
> +++ b/hw/arm/nseries.c
> @@ -463,7 +463,7 @@ static uint32_t mipid_txrx(void *opaque, uint32_t cmd, int len)
>      uint8_t ret;
>  
>      if (len > 9) {
> -        hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len);
> +        hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len);

Not this patch's problem, but it would probably be simpler if hw_error()
were a macro that automatically prefixed __func__, rather than making
every caller have to supply it themselves.

> +++ b/hw/arm/omap1.c

> @@ -1716,7 +1716,7 @@ static void omap_clkm_write(void *opaque, hwaddr addr,
>      case 0x18:	/* ARM_SYSST */
>          if ((s->clkm.clocking_scheme ^ (value >> 11)) & 7) {
>              s->clkm.clocking_scheme = (value >> 11) & 7;
> -            printf("%s: clocking scheme set to %s\n", __FUNCTION__,
> +            printf("%s: clocking scheme set to %s\n", __func__,
>                              clkschemename[s->clkm.clocking_scheme]);

Worth fixing the indentation while you are here?

> @@ -2473,7 +2473,7 @@ static void omap_pwt_write(void *opaque, hwaddr addr,
>      case 0x04:	/* VRC */
>          if ((value ^ s->vrc) & 1) {
>              if (value & 1)
> -                printf("%s: %iHz buzz on\n", __FUNCTION__, (int)
> +                printf("%s: %iHz buzz on\n", __func__, (int)
>                                  /* 1.5 MHz from a 12-MHz or 13-MHz PWT_CLK */
>                                  ((omap_clk_getrate(s->clk) >> 3) /
>                                   /* Pre-multiplexer divider */

Likewise?

> @@ -3330,13 +3330,13 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr,
>          s->mcr[1] = value & 0x03e3;
>          if (value & 3)					/* XMCM */
>              printf("%s: Tx channel selection mode enable attempt\n",
> -                            __FUNCTION__);
> +                            __func__);
>          return;
>      case 0x1a:	/* MCR1 */
>          s->mcr[0] = value & 0x03e1;
>          if (value & 1)					/* RMCM */
>              printf("%s: Rx channel selection mode enable attempt\n",
> -                            __FUNCTION__);
> +                            __func__);

and again


> +++ b/hw/arm/omap2.c
> @@ -1312,7 +1312,7 @@ static void omap_prcm_apll_update(struct omap_prcm_s *s)
>  
>      if (mode[0] == 1 || mode[0] == 2 || mode[1] == 1 || mode[1] == 2)
>          fprintf(stderr, "%s: bad EN_54M_PLL or bad EN_96M_PLL\n",
> -                        __FUNCTION__);
> +                        __func__);

More of the same. I'll quit pointing it out.


> +++ b/hw/block/onenand.c
> @@ -661,12 +661,12 @@ static uint64_t onenand_read(void *opaque, hwaddr addr,
>      case 0xff02:	/* ECC Result of spare area data */
>      case 0xff03:	/* ECC Result of main area data */
>      case 0xff04:	/* ECC Result of spare area data */
> -        hw_error("%s: imeplement ECC\n", __FUNCTION__);
> +        hw_error("%s: imeplement ECC\n", __func__);

Should we fix the typo while here? s/imeplement/implement/

> +++ b/hw/isa/vt82c686.c
> @@ -30,7 +30,7 @@
>  //#define DEBUG_VT82C686B
>  
>  #ifdef DEBUG_VT82C686B
> -#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
> +#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
>  #else
>  #define DPRINTF(fmt, ...)
>  #endif

Not this patch's problem, but I hate bit-rottable statements.  This
should be fixed separately into a form that always evaluates under
-Wformat (guarded by an if(0) in normal builds).

> diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
> index e8b2eef688..41a7690560 100644
> --- a/hw/mips/gt64xxx_pci.c
> +++ b/hw/mips/gt64xxx_pci.c
> @@ -33,7 +33,7 @@
>  //#define DEBUG
>  
>  #ifdef DEBUG
> -#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
> +#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
>  #else
>  #define DPRINTF(fmt, ...)
>  #endif

Ditto.


> +++ b/hw/usb/hcd-musb.c
> @@ -253,8 +253,8 @@
>  /* #define MUSB_DEBUG */
>  
>  #ifdef MUSB_DEBUG
> -#define TRACE(fmt,...) fprintf(stderr, "%s@%d: " fmt "\n", __FUNCTION__, \
> -                               __LINE__, ##__VA_ARGS__)
> +#define TRACE(fmt, ...) fprintf(stderr, "%s@%d: " fmt "\n", __func__, \
> +                                __LINE__, ##__VA_ARGS__)
>  #else
>  #define TRACE(...)
>  #endif

and again

My comments were either about things for separate patches, or things
that are trivial if you choose to touch them up, so:

Reviewed-by: Eric Blake <eblake@redhat.com>

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 619 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__
  2017-09-26  0:08   ` Alistair Francis
  (?)
@ 2017-09-26 13:32   ` Eric Blake
  -1 siblings, 0 replies; 35+ messages in thread
From: Eric Blake @ 2017-09-26 13:32 UTC (permalink / raw)
  To: Alistair Francis, qemu-devel
  Cc: Stefano Stabellini, Fam Zheng, qemu-block, Peter Crosthwaite,
	Juan Quintela, Dr. David Alan Gilbert, armbru, Anthony Perard,
	qemu-arm, Gerd Hoffmann, Stefan Hajnoczi, alistair23,
	Yongbok Kim, xen-devel, John Snow, Aurelien Jarno


[-- Attachment #1.1.1: Type: text/plain, Size: 7049 bytes --]

On 09/25/2017 07:08 PM, Alistair Francis wrote:
> Replace all occurs of __FUNCTION__ except for the check in checkpatch
> with the non GCC specific __func__.
> 
> One line in hcd-musb.c was manually tweaked to pass checkpatch.
> 
> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Andrzej Zaborowski <balrogg@gmail.com>
> Cc: Stefano Stabellini <sstabellini@kernel.org>
> Cc: Anthony Perard <anthony.perard@citrix.com>
> Cc: John Snow <jsnow@redhat.com>
> Cc: Aurelien Jarno <aurelien@aurel32.net>
> Cc: Yongbok Kim <yongbok.kim@imgtec.com>
> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
> Cc: Stefan Hajnoczi <stefanha@redhat.com> (supporter:Block
> Cc: Fam Zheng <famz@redhat.com> (supporter:Block

That looks funny, with no closing ).  Something's breaking down between
get_maintainers.pl and your eventual email, although it's not fatal.

> Cc: Juan Quintela <quintela@redhat.com>
> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> Cc: qemu-arm@nongnu.org
> Cc: qemu-block@nongnu.org
> Cc: xen-devel@lists.xenproject.org
> ---
> 

>  65 files changed, 273 insertions(+), 273 deletions(-)

Big but mechanical, so I'm okay without splitting it further.

> 
> diff --git a/audio/audio_int.h b/audio/audio_int.h
> index 5bcb1c60e1..543b1bd8d5 100644
> --- a/audio/audio_int.h
> +++ b/audio/audio_int.h
> @@ -253,7 +253,7 @@ static inline int audio_ring_dist (int dst, int src, int len)
>  #define AUDIO_STRINGIFY(n) AUDIO_STRINGIFY_(n)
>  
>  #if defined _MSC_VER || defined __GNUC__
> -#define AUDIO_FUNC __FUNCTION__
> +#define AUDIO_FUNC __func__
>  #else
>  #define AUDIO_FUNC __FILE__ ":" AUDIO_STRINGIFY (__LINE__)
>  #endif

This can be further simplified.  We really aren't using _MSC_VER as our
compiler (can anyone prove me wrong?), and we DO require a C99 compiler
(per C99 6.4.2.2, __func__ support is mandatory), so we don't really
need the #else branch (or, for that matter, we probably don't even need
AUDIO_FUNC).  But to keep this patch mechanical, that can be a separate
followup.

> diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
> index 58005b6619..32687afced 100644
> --- a/hw/arm/nseries.c
> +++ b/hw/arm/nseries.c
> @@ -463,7 +463,7 @@ static uint32_t mipid_txrx(void *opaque, uint32_t cmd, int len)
>      uint8_t ret;
>  
>      if (len > 9) {
> -        hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len);
> +        hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len);

Not this patch's problem, but it would probably be simpler if hw_error()
were a macro that automatically prefixed __func__, rather than making
every caller have to supply it themselves.

> +++ b/hw/arm/omap1.c

> @@ -1716,7 +1716,7 @@ static void omap_clkm_write(void *opaque, hwaddr addr,
>      case 0x18:	/* ARM_SYSST */
>          if ((s->clkm.clocking_scheme ^ (value >> 11)) & 7) {
>              s->clkm.clocking_scheme = (value >> 11) & 7;
> -            printf("%s: clocking scheme set to %s\n", __FUNCTION__,
> +            printf("%s: clocking scheme set to %s\n", __func__,
>                              clkschemename[s->clkm.clocking_scheme]);

Worth fixing the indentation while you are here?

> @@ -2473,7 +2473,7 @@ static void omap_pwt_write(void *opaque, hwaddr addr,
>      case 0x04:	/* VRC */
>          if ((value ^ s->vrc) & 1) {
>              if (value & 1)
> -                printf("%s: %iHz buzz on\n", __FUNCTION__, (int)
> +                printf("%s: %iHz buzz on\n", __func__, (int)
>                                  /* 1.5 MHz from a 12-MHz or 13-MHz PWT_CLK */
>                                  ((omap_clk_getrate(s->clk) >> 3) /
>                                   /* Pre-multiplexer divider */

Likewise?

> @@ -3330,13 +3330,13 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr,
>          s->mcr[1] = value & 0x03e3;
>          if (value & 3)					/* XMCM */
>              printf("%s: Tx channel selection mode enable attempt\n",
> -                            __FUNCTION__);
> +                            __func__);
>          return;
>      case 0x1a:	/* MCR1 */
>          s->mcr[0] = value & 0x03e1;
>          if (value & 1)					/* RMCM */
>              printf("%s: Rx channel selection mode enable attempt\n",
> -                            __FUNCTION__);
> +                            __func__);

and again


> +++ b/hw/arm/omap2.c
> @@ -1312,7 +1312,7 @@ static void omap_prcm_apll_update(struct omap_prcm_s *s)
>  
>      if (mode[0] == 1 || mode[0] == 2 || mode[1] == 1 || mode[1] == 2)
>          fprintf(stderr, "%s: bad EN_54M_PLL or bad EN_96M_PLL\n",
> -                        __FUNCTION__);
> +                        __func__);

More of the same. I'll quit pointing it out.


> +++ b/hw/block/onenand.c
> @@ -661,12 +661,12 @@ static uint64_t onenand_read(void *opaque, hwaddr addr,
>      case 0xff02:	/* ECC Result of spare area data */
>      case 0xff03:	/* ECC Result of main area data */
>      case 0xff04:	/* ECC Result of spare area data */
> -        hw_error("%s: imeplement ECC\n", __FUNCTION__);
> +        hw_error("%s: imeplement ECC\n", __func__);

Should we fix the typo while here? s/imeplement/implement/

> +++ b/hw/isa/vt82c686.c
> @@ -30,7 +30,7 @@
>  //#define DEBUG_VT82C686B
>  
>  #ifdef DEBUG_VT82C686B
> -#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
> +#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
>  #else
>  #define DPRINTF(fmt, ...)
>  #endif

Not this patch's problem, but I hate bit-rottable statements.  This
should be fixed separately into a form that always evaluates under
-Wformat (guarded by an if(0) in normal builds).

> diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
> index e8b2eef688..41a7690560 100644
> --- a/hw/mips/gt64xxx_pci.c
> +++ b/hw/mips/gt64xxx_pci.c
> @@ -33,7 +33,7 @@
>  //#define DEBUG
>  
>  #ifdef DEBUG
> -#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
> +#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
>  #else
>  #define DPRINTF(fmt, ...)
>  #endif

Ditto.


> +++ b/hw/usb/hcd-musb.c
> @@ -253,8 +253,8 @@
>  /* #define MUSB_DEBUG */
>  
>  #ifdef MUSB_DEBUG
> -#define TRACE(fmt,...) fprintf(stderr, "%s@%d: " fmt "\n", __FUNCTION__, \
> -                               __LINE__, ##__VA_ARGS__)
> +#define TRACE(fmt, ...) fprintf(stderr, "%s@%d: " fmt "\n", __func__, \
> +                                __LINE__, ##__VA_ARGS__)
>  #else
>  #define TRACE(...)
>  #endif

and again

My comments were either about things for separate patches, or things
that are trivial if you choose to touch them up, so:

Reviewed-by: Eric Blake <eblake@redhat.com>

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 619 bytes --]

[-- Attachment #2: Type: text/plain, Size: 127 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 2/8] tests: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:55   ` Emilio G. Cota
@ 2017-09-26 14:03     ` Eric Blake
  2017-09-27 23:08     ` Alistair Francis
  1 sibling, 0 replies; 35+ messages in thread
From: Eric Blake @ 2017-09-26 14:03 UTC (permalink / raw)
  To: Emilio G. Cota, Alistair Francis
  Cc: qemu-block, Michael S. Tsirkin, qemu-devel, armbru,
	Dr. David Alan Gilbert, Gerd Hoffmann, alistair23, Igor Mammedov

[-- Attachment #1: Type: text/plain, Size: 900 bytes --]

On 09/25/2017 07:55 PM, Emilio G. Cota wrote:

>> diff --git a/tests/check-qlit b/tests/check-qlit
>> new file mode 100755
>> index 0000000000000000000000000000000000000000..950429524e3eb07e6daed1fe01caad0f5d554809
>> GIT binary patch
>> literal 272776
>> zcmeEvdwf*Ywf~vPB$){zGeCghJ;($So{10*LNEgfoIs*MKvBRDLV(l&F`3b5QKOS6
> 
> ? I don't know what this is, I don't seem to have this binary in my
> checked out tree.

Ouch. We have a missing entry in .gitignore for a recent test addition,
which hits if you do an in-tree build and then an indiscriminate 'git
add tests/' (I've already mentioned it on-list).  It's a built
executable during 'make check', and doesn't belong in git.

https://lists.gnu.org/archive/html/qemu-devel/2017-09/msg01067.html

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 619 bytes --]

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 7/8] tcg: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 7/8] tcg: " Alistair Francis
@ 2017-09-26 15:05   ` Richard Henderson
  0 siblings, 0 replies; 35+ messages in thread
From: Richard Henderson @ 2017-09-26 15:05 UTC (permalink / raw)
  To: Alistair Francis, qemu-devel
  Cc: alistair23, armbru, Paolo Bonzini, Peter Crosthwaite, Stefan Weil

On 09/25/2017 05:09 PM, Alistair Francis wrote:
> Replace a large number of the fprintf(stderr, "*\n" calls with
> error_report(). The functions were renamed with these commands and then
> compiler issues where manually fixed.
> 
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> find ./* -type f -exec sed -i \
>     'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>     {} +
> 
> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
> Cc: Richard Henderson <rth@twiddle.net>
> Cc: Stefan Weil <sw@weilnetz.de>
> ---
> 
>  cpus.c                   |  8 ++++----
>  exec.c                   | 14 +++++++-------
>  tcg/optimize.c           |  8 ++++----
>  tcg/tcg.c                |  2 +-
>  tcg/tcg.h                |  3 ++-
>  tcg/tci.c                |  2 +-
>  tcg/tci/tcg-target.inc.c |  4 ++--
>  vl.c                     |  2 +-
>  8 files changed, 22 insertions(+), 21 deletions(-)

Acked-by: Richard Henderson <richard.henderson@linaro.org>


r~

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 8/8] target: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 8/8] target: " Alistair Francis
  2017-09-26  4:08   ` Thomas Huth
@ 2017-09-26 15:21   ` Richard Henderson
  1 sibling, 0 replies; 35+ messages in thread
From: Richard Henderson @ 2017-09-26 15:21 UTC (permalink / raw)
  To: Alistair Francis, qemu-devel
  Cc: alistair23, armbru, Edgar E. Iglesias, Paolo Bonzini,
	Eduardo Habkost, Marcelo Tosatti, Michael Walle, Aurelien Jarno,
	Yongbok Kim, Christian Borntraeger, Cornelia Huck, Guan Xuetao,
	qemu-arm, qemu-ppc

On 09/25/2017 05:09 PM, Alistair Francis wrote:
> diff --git a/target/cris/translate.c b/target/cris/translate.c
> index 38a999e6f1..8847005984 100644
> --- a/target/cris/translate.c
> +++ b/target/cris/translate.c
> @@ -138,7 +138,7 @@ typedef struct DisasContext {
>  
>  static void gen_BUG(DisasContext *dc, const char *file, int line)
>  {
> -    fprintf(stderr, "BUG: pc=%x %s %d\n", dc->pc, file, line);
> +    error_report("BUG: pc=%x %s %d", dc->pc, file, line);
>      if (qemu_log_separate()) {
>          qemu_log("BUG: pc=%x %s %d\n", dc->pc, file, line);
>      }

Eh, no, this should simply use qemu_log.

> diff --git a/target/ppc/translate.c b/target/ppc/translate.c
> index 606b605ba0..a3da22580e 100644
> --- a/target/ppc/translate.c
> +++ b/target/ppc/translate.c
> @@ -3943,8 +3943,8 @@ static inline void gen_op_mfspr(DisasContext *ctx)
>               * allowing userland application to read the PVR
>               */
>              if (sprn != SPR_PVR) {
> -                fprintf(stderr, "Trying to read privileged spr %d (0x%03x) at "
> -                        TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
> +                error_report("Trying to read privileged spr %d (0x%03x) at "
> +                        TARGET_FMT_lx "", sprn, sprn, ctx->nip - 4);
>                  if (qemu_log_separate()) {
>                      qemu_log("Trying to read privileged spr %d (0x%03x) at "
>                               TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);

Likewise.  And all the others.
Perhaps we should kill qemu_log_separate as a bad idea?

> diff --git a/target/sh4/translate.c b/target/sh4/translate.c
> index 10191073b2..9f95410e53 100644
> --- a/target/sh4/translate.c
> +++ b/target/sh4/translate.c
> @@ -438,7 +438,7 @@ static void _decode_opc(DisasContext * ctx)
>  	}
>  
>  #if 0
> -    fprintf(stderr, "Translating opcode 0x%04x\n", ctx->opcode);
> +    error_report("Translating opcode 0x%04x", ctx->opcode);
>  #endif

qemu_log.

>  
>      switch (ctx->opcode) {
> @@ -1799,7 +1799,7 @@ static void _decode_opc(DisasContext * ctx)
>          break;
>      }
>  #if 0
> -    fprintf(stderr, "unknown instruction 0x%04x at pc 0x%08x\n",
> +    error_report("unknown instruction 0x%04x at pc 0x%08x",
>  	    ctx->opcode, ctx->pc);
>      fflush(stderr);
>  #endif

qemu_log_mask(LOG_UNIMP, ...)

> @@ -1940,7 +1940,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb)
>          disas_uc32_insn(env, dc);
>  
>          if (num_temps) {
> -            fprintf(stderr, "Internal resource leak before %08x\n", dc->pc);
> +            error_report("Internal resource leak before %08x", dc->pc);
>              num_temps = 0;
>          }
>  
> 

qemu_log.


r~

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "*
  2017-09-26  9:05 ` Stefan Hajnoczi
@ 2017-09-26 16:47   ` Alistair Francis
  0 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-26 16:47 UTC (permalink / raw)
  To: Stefan Hajnoczi
  Cc: Alistair Francis, qemu-devel@nongnu.org Developers,
	Markus Armbruster, Kevin Wolf, Paolo Bonzini

On Tue, Sep 26, 2017 at 2:05 AM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> On Mon, Sep 25, 2017 at 05:08:34PM -0700, Alistair Francis wrote:
>>
>> Continue on improving QEMUs logging/error messages by removing more
>> fprintf()'s.
>>
>> Unfortunatley my Coccinelle skills aren't that great so it's all done in
>> some nasty regex and a little bit of manual work.
>>
>>
>>
>> Alistair Francis (8):
>>   Replace all occurances of __FUNCTION__ with __func__
>>   tests: Replace fprintf(stderr, "*\n" with error_report()
>>   hw: Replace fprintf(stderr, "*\n" with error_report()
>>   block: Replace fprintf(stderr, "*\n" with error_report()
>>   util: Replace fprintf(stderr, "*\n" with error_report()
>>   ui: Replace fprintf(stderr, "*\n" with error_report()
>>   tcg: Replace fprintf(stderr, "*\n" with error_report()
>>   target: Replace fprintf(stderr, "*\n" with error_report()
>>
>>  audio/audio_int.h                      |   2 +-
>>  block/file-posix.c                     |   6 +-
>>  block/file-win32.c                     |   3 +-
>>  block/linux-aio.c                      |   5 +-
>>  block/parallels.c                      |   7 ++-
>>  block/qcow2-cluster.c                  |   2 +-
>>  block/qcow2-refcount.c                 |  95 +++++++++++++++----------------
>>  block/qcow2.c                          |   8 +--
>>  block/quorum.c                         |   5 +-
>>  block/ssh.c                            |   4 +-
>>  block/vdi.c                            |  14 +++--
>>  block/vpc.c                            |   5 +-
>>  block/vvfat.c                          |  99 ++++++++++++++++++---------------
>
> Please don't convert fprintfs to error_report in the block layer yet.
> error_report() uses the cur_mon global variable in a way that is not
> thread-safe:
>
>   void error_vprintf(const char *fmt, va_list ap)
>   {
>       if (cur_mon && !monitor_cur_is_qmp()) {
>           monitor_vprintf(cur_mon, fmt, ap);
>
> This is a time-of-check-to-time-of-use race condition.
> monitor_cur_is_qmp() itself also suffers from a race condition.
>
> I guess we haven't seen issues because error_report() is rarely called.

Thanks, I didn't know that. I'll drop the block patches then.

Thanks,
Alistair

>
> Stefan

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 3/8] hw: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  3:51   ` [Qemu-devel] " Thomas Huth
@ 2017-09-27 22:41       ` Alistair Francis
  0 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-27 22:41 UTC (permalink / raw)
  To: Thomas Huth
  Cc: Alistair Francis, qemu-devel@nongnu.org Developers, Chris Wulff,
	Michael S. Tsirkin, Anthony Green, Mark Cave-Ayland,
	Markus Armbruster, Gerd Hoffmann, Marek Vasut,
	Stefano Stabellini, Jia Liu, qemu-block, Magnus Damm,
	Alexander Graf, Christian Borntraeger, Hervé Poussineau,
	Anthony Perard, open list:X86, Jason Wang, Artyom Tarasenko,
	Eduardo Habkost, Fabien Chouteau, Marcel Apfelbaum, qemu-arm,
	Jan Kiszka, Stefan Hajnoczi, Yongbok Kim, Stafford Horne,
	John Snow, Richard Henderson, Paul Burton, Cornelia Huck,
	Michael Walle, open list:New World, Paolo Bonzini,
	Aurelien Jarno

On Mon, Sep 25, 2017 at 8:51 PM, Thomas Huth <huth@tuxfamily.org> wrote:
> On 26.09.2017 02:08, Alistair Francis wrote:
>> Replace a large number of the fprintf(stderr, "*\n" calls with
>> error_report(). The functions were renamed with these commands and then
>> compiler issues where manually fixed.
>>
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>>
>> Some lines where then manually tweaked to pass checkpatch.
>>
>> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
>> Cc: Andrzej Zaborowski <balrogg@gmail.com>
>> Cc: Jan Kiszka <jan.kiszka@web.de>
>> Cc: Stefan Hajnoczi <stefanha@redhat.com>
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: Thomas Huth <huth@tuxfamily.org>
>> Cc: Gerd Hoffmann <kraxel@redhat.com>
>> Cc: "Michael S. Tsirkin" <mst@redhat.com>
>> Cc: Richard Henderson <rth@twiddle.net>
>> Cc: Eduardo Habkost <ehabkost@redhat.com>
>> Cc: Stefano Stabellini <sstabellini@kernel.org>
>> Cc: Anthony Perard <anthony.perard@citrix.com>
>> Cc: John Snow <jsnow@redhat.com>
>> Cc: Christian Borntraeger <borntraeger@de.ibm.com>
>> Cc: Cornelia Huck <cohuck@redhat.com>
>> Cc: Alexander Graf <agraf@suse.de>
>> Cc: Michael Walle <michael@walle.cc>
>> Cc: Paul Burton <paul.burton@imgtec.com>
>> Cc: Aurelien Jarno <aurelien@aurel32.net>
>> Cc: Yongbok Kim <yongbok.kim@imgtec.com>
>> Cc: "Hervé Poussineau" <hpoussin@reactos.org>
>> Cc: Anthony Green <green@moxielogic.com>
>> Cc: Jason Wang <jasowang@redhat.com>
>> Cc: Chris Wulff <crwulff@gmail.com>
>> Cc: Marek Vasut <marex@denx.de>
>> Cc: Jia Liu <proljc@gmail.com>
>> Cc: Stafford Horne <shorne@gmail.com>
>> Cc: Marcel Apfelbaum <marcel@redhat.com>
>> Cc: Magnus Damm <magnus.damm@gmail.com>
>> Cc: Fabien Chouteau <chouteau@adacore.com>
>> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>> Cc: Artyom Tarasenko <atar4qemu@gmail.com>
>> Cc: qemu-arm@nongnu.org
>> Cc: qemu-block@nongnu.org
>> Cc: xen-devel@lists.xenproject.org
>> Cc: qemu-ppc@nongnu.org
>> ---
>>
>>  hw/arm/armv7m.c                 |  2 +-
>>  hw/arm/boot.c                   | 34 +++++++++----------
>>  hw/arm/gumstix.c                | 13 ++++----
>>  hw/arm/mainstone.c              |  7 ++--
>>  hw/arm/musicpal.c               |  2 +-
>>  hw/arm/omap1.c                  |  5 +--
>>  hw/arm/omap2.c                  | 21 ++++++------
>>  hw/arm/omap_sx1.c               |  6 ++--
>>  hw/arm/palm.c                   | 10 +++---
>>  hw/arm/pxa2xx.c                 |  7 ++--
>>  hw/arm/stellaris.c              |  3 +-
>>  hw/arm/tosa.c                   | 17 +++++-----
>>  hw/arm/versatilepb.c            |  2 +-
>>  hw/arm/vexpress.c               |  8 ++---
>>  hw/arm/z2.c                     |  6 ++--
>>  hw/block/dataplane/virtio-blk.c |  6 ++--
>>  hw/block/onenand.c              |  8 ++---
>>  hw/block/tc58128.c              | 44 ++++++++++++-------------
>>  hw/bt/core.c                    | 15 +++++----
>>  hw/bt/hci-csr.c                 | 17 +++++-----
>>  hw/bt/hci.c                     | 30 ++++++++---------
>>  hw/bt/hid.c                     |  2 +-
>>  hw/bt/l2cap.c                   | 47 ++++++++++++++-------------
>>  hw/bt/sdp.c                     |  7 ++--
>>  hw/char/exynos4210_uart.c       |  6 ++--
>>  hw/char/mcf_uart.c              |  5 +--
>>  hw/char/sh_serial.c             |  9 +++---
>>  hw/core/loader.c                | 31 +++++++++---------
>>  hw/core/ptimer.c                |  7 ++--
>>  hw/cris/axis_dev88.c            |  3 +-
>>  hw/cris/boot.c                  |  5 +--
>>  hw/display/blizzard.c           | 20 ++++++------
>>  hw/display/omap_dss.c           | 14 ++++----
>>  hw/display/pl110.c              |  2 +-
>>  hw/display/pxa2xx_lcd.c         |  2 +-
>>  hw/display/qxl-render.c         |  7 ++--
>>  hw/display/qxl.c                | 10 +++---
>>  hw/display/tc6393xb.c           | 36 ++++++++++++---------
>>  hw/display/virtio-gpu-3d.c      |  4 +--
>>  hw/display/vmware_vga.c         | 22 ++++++-------
>>  hw/dma/omap_dma.c               | 26 ++++++++-------
>>  hw/dma/soc_dma.c                | 37 ++++++++++-----------
>>  hw/gpio/omap_gpio.c             |  2 +-
>>  hw/i2c/omap_i2c.c               | 10 +++---
>>  hw/i386/kvm/apic.c              |  9 +++---
>>  hw/i386/kvm/clock.c             |  7 ++--
>>  hw/i386/kvm/i8254.c             |  7 ++--
>>  hw/i386/kvm/i8259.c             |  5 +--
>>  hw/i386/kvm/ioapic.c            |  5 +--
>>  hw/i386/multiboot.c             | 21 ++++++------
>>  hw/i386/pc.c                    | 18 +++++------
>>  hw/i386/pc_piix.c               |  2 +-
>>  hw/i386/pc_sysfw.c              |  5 +--
>>  hw/i386/xen/xen-hvm.c           | 32 +++++++++---------
>>  hw/i386/xen/xen-mapcache.c      | 12 +++----
>>  hw/i386/xen/xen_apic.c          |  2 +-
>>  hw/ide/ahci.c                   |  6 ++--
>>  hw/ide/core.c                   |  2 +-
>>  hw/input/lm832x.c               |  6 ++--
>>  hw/input/pckbd.c                |  3 +-
>>  hw/input/pxa2xx_keypad.c        |  2 +-
>>  hw/input/tsc2005.c              | 17 +++++-----
>>  hw/input/tsc210x.c              | 72 ++++++++++++++++++++---------------------
>>  hw/input/virtio-input-hid.c     | 14 ++++----
>>  hw/input/virtio-input.c         |  5 +--
>>  hw/intc/arm_gic_kvm.c           | 12 +++----
>>  hw/intc/omap_intc.c             |  4 +--
>>  hw/intc/openpic.c               |  7 ++--
>>  hw/intc/openpic_kvm.c           |  8 ++---
>>  hw/intc/s390_flic_kvm.c         |  4 +--
>>  hw/ipmi/ipmi.c                  |  1 +
>>  hw/ipmi/ipmi_bmc_extern.c       |  5 +--
>>  hw/isa/isa-bus.c                |  7 ++--
>>  hw/lm32/lm32_boards.c           |  5 +--
>>  hw/lm32/milkymist.c             |  5 +--
>>  hw/m68k/an5206.c                |  4 +--
>>  hw/m68k/mcf5206.c               |  3 +-
>>  hw/m68k/mcf5208.c               |  7 ++--
>>  hw/microblaze/boot.c            |  2 +-
>>  hw/mips/boston.c                |  4 +--
>>  hw/mips/mips_fulong2e.c         |  4 +--
>>  hw/mips/mips_jazz.c             |  4 +--
>>  hw/mips/mips_malta.c            |  4 +--
>>  hw/mips/mips_mipssim.c          |  4 +--
>>  hw/mips/mips_r4k.c              |  6 ++--
>>  hw/misc/a9scu.c                 |  3 +-
>>  hw/misc/omap_gpmc.c             | 11 ++++---
>>  hw/misc/omap_l4.c               |  5 +--
>>  hw/misc/omap_sdrc.c             |  3 +-
>>  hw/misc/vmport.c                |  2 +-
>>  hw/moxie/moxiesim.c             |  7 ++--
>>  hw/net/fsl_etsec/etsec.c        |  2 +-
>>  hw/net/pcnet.c                  |  2 +-
>>  hw/net/smc91c111.c              |  5 +--
>>  hw/net/vhost_net.c              | 16 ++++-----
>>  hw/nios2/boot.c                 |  2 +-
>>  hw/nvram/eeprom93xx.c           |  5 +--
>>  hw/nvram/fw_cfg.c               |  4 +--
>>  hw/openrisc/openrisc_sim.c      |  3 +-
>>  hw/pci-host/bonito.c            |  6 ++--
>>  hw/pci/pci.c                    | 10 +++---
>>  hw/ppc/e500.c                   | 20 ++++++------
>>  hw/ppc/mac_newworld.c           |  2 +-
>>  hw/ppc/mac_oldworld.c           |  2 +-
>>  hw/ppc/mpc8544_guts.c           |  5 +--
>>  hw/ppc/ppc405_boards.c          |  8 ++---
>>  hw/ppc/ppc440_bamboo.c          | 19 +++++------
>>  hw/ppc/ppc4xx_pci.c             |  3 +-
>>  hw/ppc/prep.c                   |  4 +--
>>  hw/ppc/virtex_ml507.c           |  4 +--
>>  hw/s390x/virtio-ccw.c           |  2 +-
>>  hw/scsi/lsi53c895a.c            |  4 +--
>>  hw/scsi/spapr_vscsi.c           | 49 ++++++++++++++--------------
>>  hw/scsi/virtio-scsi-dataplane.c |  6 ++--
>>  hw/sd/pl181.c                   |  5 +--
>>  hw/sd/sd.c                      | 14 ++++----
>>  hw/sh4/r2d.c                    |  9 +++---
>>  hw/sh4/sh7750.c                 | 64 ++++++++++++++++++------------------
>>  hw/sparc/leon3.c                |  9 +++---
>>  hw/sparc/sun4m.c                |  8 ++---
>>  hw/sparc64/niagara.c            |  2 +-
>>  hw/sparc64/sun4u.c              |  9 +++---
>>  hw/ssi/omap_spi.c               |  5 +--
>>  hw/timer/omap_gptimer.c         | 11 ++++---
>>  hw/timer/twl92230.c             |  2 +-
>>  hw/timer/xilinx_timer.c         |  8 ++---
>>  hw/usb/core.c                   | 15 +++++----
>>  hw/usb/desc.c                   |  4 +--
>>  hw/usb/dev-audio.c              | 29 +++++++++--------
>>  hw/usb/dev-bluetooth.c          |  4 +--
>>  hw/usb/dev-mtp.c                |  9 +++---
>>  hw/usb/dev-network.c            | 20 ++++++------
>>  hw/usb/hcd-ehci.c               | 32 +++++++++---------
>>  hw/usb/hcd-musb.c               |  4 +--
>>  hw/usb/hcd-xhci.c               |  3 +-
>>  hw/usb/host-legacy.c            |  2 +-
>>  hw/watchdog/watchdog.c          |  9 +++---
>>  hw/watchdog/wdt_i6300esb.c      |  8 +++--
>>  hw/xen/xen-common.c             | 10 +++---
>>  hw/xen/xen_pt.c                 |  4 +--
>>  hw/xenpv/xen_domainbuild.c      | 24 +++++++-------
>>  hw/xenpv/xen_machine_pv.c       |  8 ++---
>>  142 files changed, 769 insertions(+), 705 deletions(-)
>
> This patch is IMHO way to big! Can you please break this down into the
> individual hw/* subsystems, so that people who are familiar with a
> certain subsystem have a chance to review just their part? Thanks.

Ok, will do in v2.

Thanks,
Alistair

>
>  Thomas

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 3/8] hw: Replace fprintf(stderr, "*\n" with error_report()
@ 2017-09-27 22:41       ` Alistair Francis
  0 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-27 22:41 UTC (permalink / raw)
  To: Thomas Huth
  Cc: Cornelia Huck, Michael S. Tsirkin, Anthony Green,
	Mark Cave-Ayland, qemu-devel@nongnu.org Developers,
	Markus Armbruster, Gerd Hoffmann, Marek Vasut,
	Stefano Stabellini, Jia Liu, qemu-block, Magnus Damm,
	Alexander Graf, Christian Borntraeger, Hervé Poussineau,
	Anthony Perard, open list:X86, Jason Wang, Artyom Tarasenko,
	Eduardo Habkost, Fabien Chouteau, Alistair Francis

On Mon, Sep 25, 2017 at 8:51 PM, Thomas Huth <huth@tuxfamily.org> wrote:
> On 26.09.2017 02:08, Alistair Francis wrote:
>> Replace a large number of the fprintf(stderr, "*\n" calls with
>> error_report(). The functions were renamed with these commands and then
>> compiler issues where manually fixed.
>>
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N;N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>> find ./* -type f -exec sed -i \
>>     'N; {s|fprintf(stderr, "\(.*\)\\n"\(.*\));|error_report("\1"\2);|Ig}' \
>>     {} +
>>
>> Some lines where then manually tweaked to pass checkpatch.
>>
>> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
>> Cc: Andrzej Zaborowski <balrogg@gmail.com>
>> Cc: Jan Kiszka <jan.kiszka@web.de>
>> Cc: Stefan Hajnoczi <stefanha@redhat.com>
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: Thomas Huth <huth@tuxfamily.org>
>> Cc: Gerd Hoffmann <kraxel@redhat.com>
>> Cc: "Michael S. Tsirkin" <mst@redhat.com>
>> Cc: Richard Henderson <rth@twiddle.net>
>> Cc: Eduardo Habkost <ehabkost@redhat.com>
>> Cc: Stefano Stabellini <sstabellini@kernel.org>
>> Cc: Anthony Perard <anthony.perard@citrix.com>
>> Cc: John Snow <jsnow@redhat.com>
>> Cc: Christian Borntraeger <borntraeger@de.ibm.com>
>> Cc: Cornelia Huck <cohuck@redhat.com>
>> Cc: Alexander Graf <agraf@suse.de>
>> Cc: Michael Walle <michael@walle.cc>
>> Cc: Paul Burton <paul.burton@imgtec.com>
>> Cc: Aurelien Jarno <aurelien@aurel32.net>
>> Cc: Yongbok Kim <yongbok.kim@imgtec.com>
>> Cc: "Hervé Poussineau" <hpoussin@reactos.org>
>> Cc: Anthony Green <green@moxielogic.com>
>> Cc: Jason Wang <jasowang@redhat.com>
>> Cc: Chris Wulff <crwulff@gmail.com>
>> Cc: Marek Vasut <marex@denx.de>
>> Cc: Jia Liu <proljc@gmail.com>
>> Cc: Stafford Horne <shorne@gmail.com>
>> Cc: Marcel Apfelbaum <marcel@redhat.com>
>> Cc: Magnus Damm <magnus.damm@gmail.com>
>> Cc: Fabien Chouteau <chouteau@adacore.com>
>> Cc: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>> Cc: Artyom Tarasenko <atar4qemu@gmail.com>
>> Cc: qemu-arm@nongnu.org
>> Cc: qemu-block@nongnu.org
>> Cc: xen-devel@lists.xenproject.org
>> Cc: qemu-ppc@nongnu.org
>> ---
>>
>>  hw/arm/armv7m.c                 |  2 +-
>>  hw/arm/boot.c                   | 34 +++++++++----------
>>  hw/arm/gumstix.c                | 13 ++++----
>>  hw/arm/mainstone.c              |  7 ++--
>>  hw/arm/musicpal.c               |  2 +-
>>  hw/arm/omap1.c                  |  5 +--
>>  hw/arm/omap2.c                  | 21 ++++++------
>>  hw/arm/omap_sx1.c               |  6 ++--
>>  hw/arm/palm.c                   | 10 +++---
>>  hw/arm/pxa2xx.c                 |  7 ++--
>>  hw/arm/stellaris.c              |  3 +-
>>  hw/arm/tosa.c                   | 17 +++++-----
>>  hw/arm/versatilepb.c            |  2 +-
>>  hw/arm/vexpress.c               |  8 ++---
>>  hw/arm/z2.c                     |  6 ++--
>>  hw/block/dataplane/virtio-blk.c |  6 ++--
>>  hw/block/onenand.c              |  8 ++---
>>  hw/block/tc58128.c              | 44 ++++++++++++-------------
>>  hw/bt/core.c                    | 15 +++++----
>>  hw/bt/hci-csr.c                 | 17 +++++-----
>>  hw/bt/hci.c                     | 30 ++++++++---------
>>  hw/bt/hid.c                     |  2 +-
>>  hw/bt/l2cap.c                   | 47 ++++++++++++++-------------
>>  hw/bt/sdp.c                     |  7 ++--
>>  hw/char/exynos4210_uart.c       |  6 ++--
>>  hw/char/mcf_uart.c              |  5 +--
>>  hw/char/sh_serial.c             |  9 +++---
>>  hw/core/loader.c                | 31 +++++++++---------
>>  hw/core/ptimer.c                |  7 ++--
>>  hw/cris/axis_dev88.c            |  3 +-
>>  hw/cris/boot.c                  |  5 +--
>>  hw/display/blizzard.c           | 20 ++++++------
>>  hw/display/omap_dss.c           | 14 ++++----
>>  hw/display/pl110.c              |  2 +-
>>  hw/display/pxa2xx_lcd.c         |  2 +-
>>  hw/display/qxl-render.c         |  7 ++--
>>  hw/display/qxl.c                | 10 +++---
>>  hw/display/tc6393xb.c           | 36 ++++++++++++---------
>>  hw/display/virtio-gpu-3d.c      |  4 +--
>>  hw/display/vmware_vga.c         | 22 ++++++-------
>>  hw/dma/omap_dma.c               | 26 ++++++++-------
>>  hw/dma/soc_dma.c                | 37 ++++++++++-----------
>>  hw/gpio/omap_gpio.c             |  2 +-
>>  hw/i2c/omap_i2c.c               | 10 +++---
>>  hw/i386/kvm/apic.c              |  9 +++---
>>  hw/i386/kvm/clock.c             |  7 ++--
>>  hw/i386/kvm/i8254.c             |  7 ++--
>>  hw/i386/kvm/i8259.c             |  5 +--
>>  hw/i386/kvm/ioapic.c            |  5 +--
>>  hw/i386/multiboot.c             | 21 ++++++------
>>  hw/i386/pc.c                    | 18 +++++------
>>  hw/i386/pc_piix.c               |  2 +-
>>  hw/i386/pc_sysfw.c              |  5 +--
>>  hw/i386/xen/xen-hvm.c           | 32 +++++++++---------
>>  hw/i386/xen/xen-mapcache.c      | 12 +++----
>>  hw/i386/xen/xen_apic.c          |  2 +-
>>  hw/ide/ahci.c                   |  6 ++--
>>  hw/ide/core.c                   |  2 +-
>>  hw/input/lm832x.c               |  6 ++--
>>  hw/input/pckbd.c                |  3 +-
>>  hw/input/pxa2xx_keypad.c        |  2 +-
>>  hw/input/tsc2005.c              | 17 +++++-----
>>  hw/input/tsc210x.c              | 72 ++++++++++++++++++++---------------------
>>  hw/input/virtio-input-hid.c     | 14 ++++----
>>  hw/input/virtio-input.c         |  5 +--
>>  hw/intc/arm_gic_kvm.c           | 12 +++----
>>  hw/intc/omap_intc.c             |  4 +--
>>  hw/intc/openpic.c               |  7 ++--
>>  hw/intc/openpic_kvm.c           |  8 ++---
>>  hw/intc/s390_flic_kvm.c         |  4 +--
>>  hw/ipmi/ipmi.c                  |  1 +
>>  hw/ipmi/ipmi_bmc_extern.c       |  5 +--
>>  hw/isa/isa-bus.c                |  7 ++--
>>  hw/lm32/lm32_boards.c           |  5 +--
>>  hw/lm32/milkymist.c             |  5 +--
>>  hw/m68k/an5206.c                |  4 +--
>>  hw/m68k/mcf5206.c               |  3 +-
>>  hw/m68k/mcf5208.c               |  7 ++--
>>  hw/microblaze/boot.c            |  2 +-
>>  hw/mips/boston.c                |  4 +--
>>  hw/mips/mips_fulong2e.c         |  4 +--
>>  hw/mips/mips_jazz.c             |  4 +--
>>  hw/mips/mips_malta.c            |  4 +--
>>  hw/mips/mips_mipssim.c          |  4 +--
>>  hw/mips/mips_r4k.c              |  6 ++--
>>  hw/misc/a9scu.c                 |  3 +-
>>  hw/misc/omap_gpmc.c             | 11 ++++---
>>  hw/misc/omap_l4.c               |  5 +--
>>  hw/misc/omap_sdrc.c             |  3 +-
>>  hw/misc/vmport.c                |  2 +-
>>  hw/moxie/moxiesim.c             |  7 ++--
>>  hw/net/fsl_etsec/etsec.c        |  2 +-
>>  hw/net/pcnet.c                  |  2 +-
>>  hw/net/smc91c111.c              |  5 +--
>>  hw/net/vhost_net.c              | 16 ++++-----
>>  hw/nios2/boot.c                 |  2 +-
>>  hw/nvram/eeprom93xx.c           |  5 +--
>>  hw/nvram/fw_cfg.c               |  4 +--
>>  hw/openrisc/openrisc_sim.c      |  3 +-
>>  hw/pci-host/bonito.c            |  6 ++--
>>  hw/pci/pci.c                    | 10 +++---
>>  hw/ppc/e500.c                   | 20 ++++++------
>>  hw/ppc/mac_newworld.c           |  2 +-
>>  hw/ppc/mac_oldworld.c           |  2 +-
>>  hw/ppc/mpc8544_guts.c           |  5 +--
>>  hw/ppc/ppc405_boards.c          |  8 ++---
>>  hw/ppc/ppc440_bamboo.c          | 19 +++++------
>>  hw/ppc/ppc4xx_pci.c             |  3 +-
>>  hw/ppc/prep.c                   |  4 +--
>>  hw/ppc/virtex_ml507.c           |  4 +--
>>  hw/s390x/virtio-ccw.c           |  2 +-
>>  hw/scsi/lsi53c895a.c            |  4 +--
>>  hw/scsi/spapr_vscsi.c           | 49 ++++++++++++++--------------
>>  hw/scsi/virtio-scsi-dataplane.c |  6 ++--
>>  hw/sd/pl181.c                   |  5 +--
>>  hw/sd/sd.c                      | 14 ++++----
>>  hw/sh4/r2d.c                    |  9 +++---
>>  hw/sh4/sh7750.c                 | 64 ++++++++++++++++++------------------
>>  hw/sparc/leon3.c                |  9 +++---
>>  hw/sparc/sun4m.c                |  8 ++---
>>  hw/sparc64/niagara.c            |  2 +-
>>  hw/sparc64/sun4u.c              |  9 +++---
>>  hw/ssi/omap_spi.c               |  5 +--
>>  hw/timer/omap_gptimer.c         | 11 ++++---
>>  hw/timer/twl92230.c             |  2 +-
>>  hw/timer/xilinx_timer.c         |  8 ++---
>>  hw/usb/core.c                   | 15 +++++----
>>  hw/usb/desc.c                   |  4 +--
>>  hw/usb/dev-audio.c              | 29 +++++++++--------
>>  hw/usb/dev-bluetooth.c          |  4 +--
>>  hw/usb/dev-mtp.c                |  9 +++---
>>  hw/usb/dev-network.c            | 20 ++++++------
>>  hw/usb/hcd-ehci.c               | 32 +++++++++---------
>>  hw/usb/hcd-musb.c               |  4 +--
>>  hw/usb/hcd-xhci.c               |  3 +-
>>  hw/usb/host-legacy.c            |  2 +-
>>  hw/watchdog/watchdog.c          |  9 +++---
>>  hw/watchdog/wdt_i6300esb.c      |  8 +++--
>>  hw/xen/xen-common.c             | 10 +++---
>>  hw/xen/xen_pt.c                 |  4 +--
>>  hw/xenpv/xen_domainbuild.c      | 24 +++++++-------
>>  hw/xenpv/xen_machine_pv.c       |  8 ++---
>>  142 files changed, 769 insertions(+), 705 deletions(-)
>
> This patch is IMHO way to big! Can you please break this down into the
> individual hw/* subsystems, so that people who are familiar with a
> certain subsystem have a chance to review just their part? Thanks.

Ok, will do in v2.

Thanks,
Alistair

>
>  Thomas

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__
  2017-09-26 13:32   ` Eric Blake
@ 2017-09-27 22:59     ` Alistair Francis
  2017-09-27 22:59     ` Alistair Francis
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-27 22:59 UTC (permalink / raw)
  To: Eric Blake
  Cc: Alistair Francis, qemu-devel@nongnu.org Developers,
	Dr. David Alan Gilbert, Stefano Stabellini, Fam Zheng,
	qemu-block, Peter Crosthwaite, John Snow, Juan Quintela,
	Markus Armbruster, Yongbok Kim, qemu-arm, Gerd Hoffmann,
	Stefan Hajnoczi, open list:X86, Anthony Perard, Aurelien Jarno

On Tue, Sep 26, 2017 at 6:32 AM, Eric Blake <eblake@redhat.com> wrote:
> On 09/25/2017 07:08 PM, Alistair Francis wrote:
>> Replace all occurs of __FUNCTION__ except for the check in checkpatch
>> with the non GCC specific __func__.
>>
>> One line in hcd-musb.c was manually tweaked to pass checkpatch.
>>
>> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
>> Cc: Gerd Hoffmann <kraxel@redhat.com>
>> Cc: Andrzej Zaborowski <balrogg@gmail.com>
>> Cc: Stefano Stabellini <sstabellini@kernel.org>
>> Cc: Anthony Perard <anthony.perard@citrix.com>
>> Cc: John Snow <jsnow@redhat.com>
>> Cc: Aurelien Jarno <aurelien@aurel32.net>
>> Cc: Yongbok Kim <yongbok.kim@imgtec.com>
>> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
>> Cc: Stefan Hajnoczi <stefanha@redhat.com> (supporter:Block
>> Cc: Fam Zheng <famz@redhat.com> (supporter:Block
>
> That looks funny, with no closing ).  Something's breaking down between
> get_maintainers.pl and your eventual email, although it's not fatal.

Yeah, that's a copy and paste error, will fix.

>
>> Cc: Juan Quintela <quintela@redhat.com>
>> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>> Cc: qemu-arm@nongnu.org
>> Cc: qemu-block@nongnu.org
>> Cc: xen-devel@lists.xenproject.org
>> ---
>>
>
>>  65 files changed, 273 insertions(+), 273 deletions(-)
>
> Big but mechanical, so I'm okay without splitting it further.

Phew! I did not want to split it.

>
>>
>> diff --git a/audio/audio_int.h b/audio/audio_int.h
>> index 5bcb1c60e1..543b1bd8d5 100644
>> --- a/audio/audio_int.h
>> +++ b/audio/audio_int.h
>> @@ -253,7 +253,7 @@ static inline int audio_ring_dist (int dst, int src, int len)
>>  #define AUDIO_STRINGIFY(n) AUDIO_STRINGIFY_(n)
>>
>>  #if defined _MSC_VER || defined __GNUC__
>> -#define AUDIO_FUNC __FUNCTION__
>> +#define AUDIO_FUNC __func__
>>  #else
>>  #define AUDIO_FUNC __FILE__ ":" AUDIO_STRINGIFY (__LINE__)
>>  #endif
>
> This can be further simplified.  We really aren't using _MSC_VER as our
> compiler (can anyone prove me wrong?), and we DO require a C99 compiler
> (per C99 6.4.2.2, __func__ support is mandatory), so we don't really
> need the #else branch (or, for that matter, we probably don't even need
> AUDIO_FUNC).  But to keep this patch mechanical, that can be a separate
> followup.

I have a second patch that removes AUDIO_FUNC

>
>> diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
>> index 58005b6619..32687afced 100644
>> --- a/hw/arm/nseries.c
>> +++ b/hw/arm/nseries.c
>> @@ -463,7 +463,7 @@ static uint32_t mipid_txrx(void *opaque, uint32_t cmd, int len)
>>      uint8_t ret;
>>
>>      if (len > 9) {
>> -        hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len);
>> +        hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len);
>
> Not this patch's problem, but it would probably be simpler if hw_error()
> were a macro that automatically prefixed __func__, rather than making
> every caller have to supply it themselves.

I'm going to leave this for another day, but I think you are right.

>
>> +++ b/hw/arm/omap1.c
>
>> @@ -1716,7 +1716,7 @@ static void omap_clkm_write(void *opaque, hwaddr addr,
>>      case 0x18:       /* ARM_SYSST */
>>          if ((s->clkm.clocking_scheme ^ (value >> 11)) & 7) {
>>              s->clkm.clocking_scheme = (value >> 11) & 7;
>> -            printf("%s: clocking scheme set to %s\n", __FUNCTION__,
>> +            printf("%s: clocking scheme set to %s\n", __func__,
>>                              clkschemename[s->clkm.clocking_scheme]);
>
> Worth fixing the indentation while you are here?

Fixed

>
>> @@ -2473,7 +2473,7 @@ static void omap_pwt_write(void *opaque, hwaddr addr,
>>      case 0x04:       /* VRC */
>>          if ((value ^ s->vrc) & 1) {
>>              if (value & 1)
>> -                printf("%s: %iHz buzz on\n", __FUNCTION__, (int)
>> +                printf("%s: %iHz buzz on\n", __func__, (int)
>>                                  /* 1.5 MHz from a 12-MHz or 13-MHz PWT_CLK */
>>                                  ((omap_clk_getrate(s->clk) >> 3) /
>>                                   /* Pre-multiplexer divider */
>
> Likewise?

This doesn't actually change the indention. It's all one argument to a function.

>
>> @@ -3330,13 +3330,13 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr,
>>          s->mcr[1] = value & 0x03e3;
>>          if (value & 3)                                       /* XMCM */
>>              printf("%s: Tx channel selection mode enable attempt\n",
>> -                            __FUNCTION__);
>> +                            __func__);
>>          return;
>>      case 0x1a:       /* MCR1 */
>>          s->mcr[0] = value & 0x03e1;
>>          if (value & 1)                                       /* RMCM */
>>              printf("%s: Rx channel selection mode enable attempt\n",
>> -                            __FUNCTION__);
>> +                            __func__);
>
> and again

Fixed.

>
>
>> +++ b/hw/arm/omap2.c
>> @@ -1312,7 +1312,7 @@ static void omap_prcm_apll_update(struct omap_prcm_s *s)
>>
>>      if (mode[0] == 1 || mode[0] == 2 || mode[1] == 1 || mode[1] == 2)
>>          fprintf(stderr, "%s: bad EN_54M_PLL or bad EN_96M_PLL\n",
>> -                        __FUNCTION__);
>> +                        __func__);
>
> More of the same. I'll quit pointing it out.

Fixed

>
>
>> +++ b/hw/block/onenand.c
>> @@ -661,12 +661,12 @@ static uint64_t onenand_read(void *opaque, hwaddr addr,
>>      case 0xff02:     /* ECC Result of spare area data */
>>      case 0xff03:     /* ECC Result of main area data */
>>      case 0xff04:     /* ECC Result of spare area data */
>> -        hw_error("%s: imeplement ECC\n", __FUNCTION__);
>> +        hw_error("%s: imeplement ECC\n", __func__);
>
> Should we fix the typo while here? s/imeplement/implement/

Fixed

>
>> +++ b/hw/isa/vt82c686.c
>> @@ -30,7 +30,7 @@
>>  //#define DEBUG_VT82C686B
>>
>>  #ifdef DEBUG_VT82C686B
>> -#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
>> +#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
>>  #else
>>  #define DPRINTF(fmt, ...)
>>  #endif
>
> Not this patch's problem, but I hate bit-rottable statements.  This
> should be fixed separately into a form that always evaluates under
> -Wformat (guarded by an if(0) in normal builds).

Ah, I really don't want to go down that rabbit hole right now either.
I might leave this as is.

>
>> diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
>> index e8b2eef688..41a7690560 100644
>> --- a/hw/mips/gt64xxx_pci.c
>> +++ b/hw/mips/gt64xxx_pci.c
>> @@ -33,7 +33,7 @@
>>  //#define DEBUG
>>
>>  #ifdef DEBUG
>> -#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
>> +#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
>>  #else
>>  #define DPRINTF(fmt, ...)
>>  #endif
>
> Ditto.
>
>
>> +++ b/hw/usb/hcd-musb.c
>> @@ -253,8 +253,8 @@
>>  /* #define MUSB_DEBUG */
>>
>>  #ifdef MUSB_DEBUG
>> -#define TRACE(fmt,...) fprintf(stderr, "%s@%d: " fmt "\n", __FUNCTION__, \
>> -                               __LINE__, ##__VA_ARGS__)
>> +#define TRACE(fmt, ...) fprintf(stderr, "%s@%d: " fmt "\n", __func__, \
>> +                                __LINE__, ##__VA_ARGS__)
>>  #else
>>  #define TRACE(...)
>>  #endif
>
> and again
>
> My comments were either about things for separate patches, or things
> that are trivial if you choose to touch them up, so:
>
> Reviewed-by: Eric Blake <eblake@redhat.com>

Thanks!

Alistair

>
> --
> Eric Blake, Principal Software Engineer
> Red Hat, Inc.           +1-919-301-3266
> Virtualization:  qemu.org | libvirt.org
>

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__
  2017-09-26 13:32   ` Eric Blake
  2017-09-27 22:59     ` Alistair Francis
@ 2017-09-27 22:59     ` Alistair Francis
  2017-09-27 23:47     ` [Qemu-devel] [Qemu-arm] " Peter Maydell
  2017-09-27 23:47     ` Peter Maydell
  3 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-27 22:59 UTC (permalink / raw)
  To: Eric Blake
  Cc: Stefano Stabellini, Fam Zheng, qemu-block, Peter Crosthwaite,
	Markus Armbruster, Juan Quintela,
	qemu-devel@nongnu.org Developers, Dr. David Alan Gilbert,
	Anthony Perard, qemu-arm, Gerd Hoffmann, Stefan Hajnoczi,
	Yongbok Kim, open list:X86, Alistair Francis, John Snow,
	Aurelien Jarno

On Tue, Sep 26, 2017 at 6:32 AM, Eric Blake <eblake@redhat.com> wrote:
> On 09/25/2017 07:08 PM, Alistair Francis wrote:
>> Replace all occurs of __FUNCTION__ except for the check in checkpatch
>> with the non GCC specific __func__.
>>
>> One line in hcd-musb.c was manually tweaked to pass checkpatch.
>>
>> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
>> Cc: Gerd Hoffmann <kraxel@redhat.com>
>> Cc: Andrzej Zaborowski <balrogg@gmail.com>
>> Cc: Stefano Stabellini <sstabellini@kernel.org>
>> Cc: Anthony Perard <anthony.perard@citrix.com>
>> Cc: John Snow <jsnow@redhat.com>
>> Cc: Aurelien Jarno <aurelien@aurel32.net>
>> Cc: Yongbok Kim <yongbok.kim@imgtec.com>
>> Cc: Peter Crosthwaite <crosthwaite.peter@gmail.com>
>> Cc: Stefan Hajnoczi <stefanha@redhat.com> (supporter:Block
>> Cc: Fam Zheng <famz@redhat.com> (supporter:Block
>
> That looks funny, with no closing ).  Something's breaking down between
> get_maintainers.pl and your eventual email, although it's not fatal.

Yeah, that's a copy and paste error, will fix.

>
>> Cc: Juan Quintela <quintela@redhat.com>
>> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>> Cc: qemu-arm@nongnu.org
>> Cc: qemu-block@nongnu.org
>> Cc: xen-devel@lists.xenproject.org
>> ---
>>
>
>>  65 files changed, 273 insertions(+), 273 deletions(-)
>
> Big but mechanical, so I'm okay without splitting it further.

Phew! I did not want to split it.

>
>>
>> diff --git a/audio/audio_int.h b/audio/audio_int.h
>> index 5bcb1c60e1..543b1bd8d5 100644
>> --- a/audio/audio_int.h
>> +++ b/audio/audio_int.h
>> @@ -253,7 +253,7 @@ static inline int audio_ring_dist (int dst, int src, int len)
>>  #define AUDIO_STRINGIFY(n) AUDIO_STRINGIFY_(n)
>>
>>  #if defined _MSC_VER || defined __GNUC__
>> -#define AUDIO_FUNC __FUNCTION__
>> +#define AUDIO_FUNC __func__
>>  #else
>>  #define AUDIO_FUNC __FILE__ ":" AUDIO_STRINGIFY (__LINE__)
>>  #endif
>
> This can be further simplified.  We really aren't using _MSC_VER as our
> compiler (can anyone prove me wrong?), and we DO require a C99 compiler
> (per C99 6.4.2.2, __func__ support is mandatory), so we don't really
> need the #else branch (or, for that matter, we probably don't even need
> AUDIO_FUNC).  But to keep this patch mechanical, that can be a separate
> followup.

I have a second patch that removes AUDIO_FUNC

>
>> diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
>> index 58005b6619..32687afced 100644
>> --- a/hw/arm/nseries.c
>> +++ b/hw/arm/nseries.c
>> @@ -463,7 +463,7 @@ static uint32_t mipid_txrx(void *opaque, uint32_t cmd, int len)
>>      uint8_t ret;
>>
>>      if (len > 9) {
>> -        hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len);
>> +        hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len);
>
> Not this patch's problem, but it would probably be simpler if hw_error()
> were a macro that automatically prefixed __func__, rather than making
> every caller have to supply it themselves.

I'm going to leave this for another day, but I think you are right.

>
>> +++ b/hw/arm/omap1.c
>
>> @@ -1716,7 +1716,7 @@ static void omap_clkm_write(void *opaque, hwaddr addr,
>>      case 0x18:       /* ARM_SYSST */
>>          if ((s->clkm.clocking_scheme ^ (value >> 11)) & 7) {
>>              s->clkm.clocking_scheme = (value >> 11) & 7;
>> -            printf("%s: clocking scheme set to %s\n", __FUNCTION__,
>> +            printf("%s: clocking scheme set to %s\n", __func__,
>>                              clkschemename[s->clkm.clocking_scheme]);
>
> Worth fixing the indentation while you are here?

Fixed

>
>> @@ -2473,7 +2473,7 @@ static void omap_pwt_write(void *opaque, hwaddr addr,
>>      case 0x04:       /* VRC */
>>          if ((value ^ s->vrc) & 1) {
>>              if (value & 1)
>> -                printf("%s: %iHz buzz on\n", __FUNCTION__, (int)
>> +                printf("%s: %iHz buzz on\n", __func__, (int)
>>                                  /* 1.5 MHz from a 12-MHz or 13-MHz PWT_CLK */
>>                                  ((omap_clk_getrate(s->clk) >> 3) /
>>                                   /* Pre-multiplexer divider */
>
> Likewise?

This doesn't actually change the indention. It's all one argument to a function.

>
>> @@ -3330,13 +3330,13 @@ static void omap_mcbsp_writeh(void *opaque, hwaddr addr,
>>          s->mcr[1] = value & 0x03e3;
>>          if (value & 3)                                       /* XMCM */
>>              printf("%s: Tx channel selection mode enable attempt\n",
>> -                            __FUNCTION__);
>> +                            __func__);
>>          return;
>>      case 0x1a:       /* MCR1 */
>>          s->mcr[0] = value & 0x03e1;
>>          if (value & 1)                                       /* RMCM */
>>              printf("%s: Rx channel selection mode enable attempt\n",
>> -                            __FUNCTION__);
>> +                            __func__);
>
> and again

Fixed.

>
>
>> +++ b/hw/arm/omap2.c
>> @@ -1312,7 +1312,7 @@ static void omap_prcm_apll_update(struct omap_prcm_s *s)
>>
>>      if (mode[0] == 1 || mode[0] == 2 || mode[1] == 1 || mode[1] == 2)
>>          fprintf(stderr, "%s: bad EN_54M_PLL or bad EN_96M_PLL\n",
>> -                        __FUNCTION__);
>> +                        __func__);
>
> More of the same. I'll quit pointing it out.

Fixed

>
>
>> +++ b/hw/block/onenand.c
>> @@ -661,12 +661,12 @@ static uint64_t onenand_read(void *opaque, hwaddr addr,
>>      case 0xff02:     /* ECC Result of spare area data */
>>      case 0xff03:     /* ECC Result of main area data */
>>      case 0xff04:     /* ECC Result of spare area data */
>> -        hw_error("%s: imeplement ECC\n", __FUNCTION__);
>> +        hw_error("%s: imeplement ECC\n", __func__);
>
> Should we fix the typo while here? s/imeplement/implement/

Fixed

>
>> +++ b/hw/isa/vt82c686.c
>> @@ -30,7 +30,7 @@
>>  //#define DEBUG_VT82C686B
>>
>>  #ifdef DEBUG_VT82C686B
>> -#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
>> +#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
>>  #else
>>  #define DPRINTF(fmt, ...)
>>  #endif
>
> Not this patch's problem, but I hate bit-rottable statements.  This
> should be fixed separately into a form that always evaluates under
> -Wformat (guarded by an if(0) in normal builds).

Ah, I really don't want to go down that rabbit hole right now either.
I might leave this as is.

>
>> diff --git a/hw/mips/gt64xxx_pci.c b/hw/mips/gt64xxx_pci.c
>> index e8b2eef688..41a7690560 100644
>> --- a/hw/mips/gt64xxx_pci.c
>> +++ b/hw/mips/gt64xxx_pci.c
>> @@ -33,7 +33,7 @@
>>  //#define DEBUG
>>
>>  #ifdef DEBUG
>> -#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
>> +#define DPRINTF(fmt, ...) fprintf(stderr, "%s: " fmt, __func__, ##__VA_ARGS__)
>>  #else
>>  #define DPRINTF(fmt, ...)
>>  #endif
>
> Ditto.
>
>
>> +++ b/hw/usb/hcd-musb.c
>> @@ -253,8 +253,8 @@
>>  /* #define MUSB_DEBUG */
>>
>>  #ifdef MUSB_DEBUG
>> -#define TRACE(fmt,...) fprintf(stderr, "%s@%d: " fmt "\n", __FUNCTION__, \
>> -                               __LINE__, ##__VA_ARGS__)
>> +#define TRACE(fmt, ...) fprintf(stderr, "%s@%d: " fmt "\n", __func__, \
>> +                                __LINE__, ##__VA_ARGS__)
>>  #else
>>  #define TRACE(...)
>>  #endif
>
> and again
>
> My comments were either about things for separate patches, or things
> that are trivial if you choose to touch them up, so:
>
> Reviewed-by: Eric Blake <eblake@redhat.com>

Thanks!

Alistair

>
> --
> Eric Blake, Principal Software Engineer
> Red Hat, Inc.           +1-919-301-3266
> Virtualization:  qemu.org | libvirt.org
>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 2/8] tests: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  0:55   ` Emilio G. Cota
  2017-09-26 14:03     ` Eric Blake
@ 2017-09-27 23:08     ` Alistair Francis
  2017-09-28 17:53       ` Emilio G. Cota
  1 sibling, 1 reply; 35+ messages in thread
From: Alistair Francis @ 2017-09-27 23:08 UTC (permalink / raw)
  To: Emilio G. Cota
  Cc: Alistair Francis, qemu-devel@nongnu.org Developers, qemu-block,
	Michael S. Tsirkin, Markus Armbruster, Dr. David Alan Gilbert,
	Gerd Hoffmann, Igor Mammedov

On Mon, Sep 25, 2017 at 5:55 PM, Emilio G. Cota <cota@braap.org> wrote:
> On Mon, Sep 25, 2017 at 17:08:48 -0700, Alistair Francis wrote:
>> diff --git a/tests/atomic_add-bench.c b/tests/atomic_add-bench.c
>> index caa1e8e689..41ba1600c0 100644
>> --- a/tests/atomic_add-bench.c
>> +++ b/tests/atomic_add-bench.c
>> @@ -29,7 +29,7 @@ static const char commands_string[] =
>>  static void usage_complete(char *argv[])
>>  {
>>      fprintf(stderr, "Usage: %s [options]\n", argv[0]);
>> -    fprintf(stderr, "options:\n%s\n", commands_string);
>> +    fprintf(stderr, "options:\n%s", commands_string);
>>  }
>
> We do want that trailing \n, unless we move it to commands_string.

Yeah, this was a mistake. It should have swapped to error_report().

>
> Also, I think using error_report here would be confusing -- this is a standalone
> test program with as little QEMU-specific knowledge as possible (QemuThreads
> are used for portability); using error_report here is confusing (this is not
> an error).

Do you mean in all tests/ sub directory or just a few certain cases?

>
>> diff --git a/tests/check-qlit b/tests/check-qlit
>> new file mode 100755
>> index 0000000000000000000000000000000000000000..950429524e3eb07e6daed1fe01caad0f5d554809
>> GIT binary patch
>> literal 272776
>> zcmeEvdwf*Ywf~vPB$){zGeCghJ;($So{10*LNEgfoIs*MKvBRDLV(l&F`3b5QKOS6
>
> ? I don't know what this is, I don't seem to have this binary in my
> checked out tree.

Yeah, this shouldn't be here.

Thanks,
Alistair

>
> (snips thousands of lines)
>
>> diff --git a/tests/qht-bench.c b/tests/qht-bench.c
>> index 11c1cec766..2637d601a9 100644
>> --- a/tests/qht-bench.c
>> +++ b/tests/qht-bench.c
>> @@ -5,6 +5,7 @@
>>   *   See the COPYING file in the top-level directory.
>>   */
>>  #include "qemu/osdep.h"
>> +#include "qemu/error-report.h"
>>  #include "qemu/processor.h"
>>  #include "qemu/atomic.h"
>>  #include "qemu/qht.h"
>> @@ -89,7 +90,7 @@ static const char commands_string[] =
>>  static void usage_complete(int argc, char *argv[])
>>  {
>>      fprintf(stderr, "Usage: %s [options]\n", argv[0]);
>> -    fprintf(stderr, "options:\n%s\n", commands_string);
>> +    fprintf(stderr, "options:\n%s", commands_string);
>
> Same as above: this removes the necessary trailing \n.
>
>>      exit(-1);
>>  }
>>
>> @@ -328,7 +329,7 @@ static void htable_init(void)
>>              retries++;
>>          }
>>      }
>> -    fprintf(stderr, " populated after %zu retries\n", retries);
>> +    error_report(" populated after %zu retries", retries);
>>  }
>
> ditto -- I'd rather keep fprintf(stderr) here, it's less confusing.
>
> Thanks,
>
>                 Emilio

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [Qemu-arm] [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__
  2017-09-26 13:32   ` Eric Blake
  2017-09-27 22:59     ` Alistair Francis
  2017-09-27 22:59     ` Alistair Francis
@ 2017-09-27 23:47     ` Peter Maydell
  2017-09-28 22:37         ` [Qemu-arm] [Qemu-devel] " Alistair Francis
  2017-09-27 23:47     ` Peter Maydell
  3 siblings, 1 reply; 35+ messages in thread
From: Peter Maydell @ 2017-09-27 23:47 UTC (permalink / raw)
  To: Eric Blake
  Cc: Alistair Francis, QEMU Developers, Stefano Stabellini, Fam Zheng,
	Qemu-block, Juan Quintela, Dr. David Alan Gilbert,
	Markus Armbruster, Anthony Perard, qemu-arm, Gerd Hoffmann,
	Stefan Hajnoczi, Alistair Francis, Yongbok Kim, open list:X86,
	John Snow, Aurelien Jarno

On 26 September 2017 at 06:32, Eric Blake <eblake@redhat.com> wrote:
> On 09/25/2017 07:08 PM, Alistair Francis wrote:
>> diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
>> index 58005b6619..32687afced 100644
>> --- a/hw/arm/nseries.c
>> +++ b/hw/arm/nseries.c
>> @@ -463,7 +463,7 @@ static uint32_t mipid_txrx(void *opaque, uint32_t cmd, int len)
>>      uint8_t ret;
>>
>>      if (len > 9) {
>> -        hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len);
>> +        hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len);
>
> Not this patch's problem, but it would probably be simpler if hw_error()
> were a macro that automatically prefixed __func__, rather than making
> every caller have to supply it themselves.

I'm not sure there's a great deal of benefit to that change, because
use of hw_error() in new code is rarely correct (it does an abort()
so it should never be used for guest-triggered conditions, which is
about the only time that you might be interested in a guest register
dump rather than just asserting). Most of its existing uses are in
crufty old device models.

thanks
-- PMM

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-arm] [Qemu-devel] [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__
  2017-09-26 13:32   ` Eric Blake
                       ` (2 preceding siblings ...)
  2017-09-27 23:47     ` [Qemu-devel] [Qemu-arm] " Peter Maydell
@ 2017-09-27 23:47     ` Peter Maydell
  3 siblings, 0 replies; 35+ messages in thread
From: Peter Maydell @ 2017-09-27 23:47 UTC (permalink / raw)
  To: Eric Blake
  Cc: Stefano Stabellini, Fam Zheng, Qemu-block, Juan Quintela,
	Markus Armbruster, Aurelien Jarno, QEMU Developers,
	Alistair Francis, Yongbok Kim, qemu-arm, Gerd Hoffmann,
	Stefan Hajnoczi, open list:X86, Anthony Perard, Alistair Francis,
	John Snow, Dr. David Alan Gilbert

On 26 September 2017 at 06:32, Eric Blake <eblake@redhat.com> wrote:
> On 09/25/2017 07:08 PM, Alistair Francis wrote:
>> diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
>> index 58005b6619..32687afced 100644
>> --- a/hw/arm/nseries.c
>> +++ b/hw/arm/nseries.c
>> @@ -463,7 +463,7 @@ static uint32_t mipid_txrx(void *opaque, uint32_t cmd, int len)
>>      uint8_t ret;
>>
>>      if (len > 9) {
>> -        hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len);
>> +        hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len);
>
> Not this patch's problem, but it would probably be simpler if hw_error()
> were a macro that automatically prefixed __func__, rather than making
> every caller have to supply it themselves.

I'm not sure there's a great deal of benefit to that change, because
use of hw_error() in new code is rarely correct (it does an abort()
so it should never be used for guest-triggered conditions, which is
about the only time that you might be interested in a guest register
dump rather than just asserting). Most of its existing uses are in
crufty old device models.

thanks
-- PMM

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 2/8] tests: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-27 23:08     ` Alistair Francis
@ 2017-09-28 17:53       ` Emilio G. Cota
  0 siblings, 0 replies; 35+ messages in thread
From: Emilio G. Cota @ 2017-09-28 17:53 UTC (permalink / raw)
  To: Alistair Francis
  Cc: qemu-devel@nongnu.org Developers, qemu-block, Michael S. Tsirkin,
	Markus Armbruster, Dr. David Alan Gilbert, Gerd Hoffmann,
	Igor Mammedov

On Wed, Sep 27, 2017 at 16:08:50 -0700, Alistair Francis wrote:
> On Mon, Sep 25, 2017 at 5:55 PM, Emilio G. Cota <cota@braap.org> wrote:
> > On Mon, Sep 25, 2017 at 17:08:48 -0700, Alistair Francis wrote:
> >> diff --git a/tests/atomic_add-bench.c b/tests/atomic_add-bench.c
> >> index caa1e8e689..41ba1600c0 100644
> >> --- a/tests/atomic_add-bench.c
> >> +++ b/tests/atomic_add-bench.c
> >> @@ -29,7 +29,7 @@ static const char commands_string[] =
> >>  static void usage_complete(char *argv[])
> >>  {
> >>      fprintf(stderr, "Usage: %s [options]\n", argv[0]);
> >> -    fprintf(stderr, "options:\n%s\n", commands_string);
> >> +    fprintf(stderr, "options:\n%s", commands_string);
> >>  }
> >
> > We do want that trailing \n, unless we move it to commands_string.
> 
> Yeah, this was a mistake. It should have swapped to error_report().
> 
> >
> > Also, I think using error_report here would be confusing -- this is a standalone
> > test program with as little QEMU-specific knowledge as possible (QemuThreads
> > are used for portability); using error_report here is confusing (this is not
> > an error).
> 
> Do you mean in all tests/ sub directory or just a few certain cases?

I was talking specifically about tests/atomic-add-bench and tests/qht-bench,
because I know those well. I don't have a good grasp on everything that's under tests/,
but I presume there are similar cases there too -- that is, standalone programs
where QEMU monitor and/or any other QEMU-specific form of logging makes no sense,
and therefore fprintf(stderr) is the right thing to do.

Thanks,

		Emilio

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [Qemu-arm] [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__
  2017-09-27 23:47     ` [Qemu-devel] [Qemu-arm] " Peter Maydell
@ 2017-09-28 22:37         ` Alistair Francis
  0 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-28 22:37 UTC (permalink / raw)
  To: Peter Maydell
  Cc: Eric Blake, Alistair Francis, QEMU Developers,
	Stefano Stabellini, Fam Zheng, Qemu-block, Juan Quintela,
	Dr. David Alan Gilbert, Markus Armbruster, Anthony Perard,
	qemu-arm, Gerd Hoffmann, Stefan Hajnoczi, Yongbok Kim,
	open list:X86, John Snow, Aurelien Jarno

On Wed, Sep 27, 2017 at 4:47 PM, Peter Maydell <peter.maydell@linaro.org> wrote:
> On 26 September 2017 at 06:32, Eric Blake <eblake@redhat.com> wrote:
>> On 09/25/2017 07:08 PM, Alistair Francis wrote:
>>> diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
>>> index 58005b6619..32687afced 100644
>>> --- a/hw/arm/nseries.c
>>> +++ b/hw/arm/nseries.c
>>> @@ -463,7 +463,7 @@ static uint32_t mipid_txrx(void *opaque, uint32_t cmd, int len)
>>>      uint8_t ret;
>>>
>>>      if (len > 9) {
>>> -        hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len);
>>> +        hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len);
>>
>> Not this patch's problem, but it would probably be simpler if hw_error()
>> were a macro that automatically prefixed __func__, rather than making
>> every caller have to supply it themselves.
>
> I'm not sure there's a great deal of benefit to that change, because
> use of hw_error() in new code is rarely correct (it does an abort()
> so it should never be used for guest-triggered conditions, which is
> about the only time that you might be interested in a guest register
> dump rather than just asserting). Most of its existing uses are in
> crufty old device models.

Ok, another excuse to leave it out :)

Thanks,
Alistair

>
> thanks
> -- PMM

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-arm] [Qemu-devel] [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__
@ 2017-09-28 22:37         ` Alistair Francis
  0 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-28 22:37 UTC (permalink / raw)
  To: Peter Maydell
  Cc: Stefano Stabellini, Fam Zheng, Qemu-block, Juan Quintela,
	Markus Armbruster, Aurelien Jarno, QEMU Developers,
	Alistair Francis, John Snow, Yongbok Kim, qemu-arm,
	Gerd Hoffmann, Stefan Hajnoczi, Anthony Perard, open list:X86,
	Eric Blake, Dr. David Alan Gilbert

On Wed, Sep 27, 2017 at 4:47 PM, Peter Maydell <peter.maydell@linaro.org> wrote:
> On 26 September 2017 at 06:32, Eric Blake <eblake@redhat.com> wrote:
>> On 09/25/2017 07:08 PM, Alistair Francis wrote:
>>> diff --git a/hw/arm/nseries.c b/hw/arm/nseries.c
>>> index 58005b6619..32687afced 100644
>>> --- a/hw/arm/nseries.c
>>> +++ b/hw/arm/nseries.c
>>> @@ -463,7 +463,7 @@ static uint32_t mipid_txrx(void *opaque, uint32_t cmd, int len)
>>>      uint8_t ret;
>>>
>>>      if (len > 9) {
>>> -        hw_error("%s: FIXME: bad SPI word width %i\n", __FUNCTION__, len);
>>> +        hw_error("%s: FIXME: bad SPI word width %i\n", __func__, len);
>>
>> Not this patch's problem, but it would probably be simpler if hw_error()
>> were a macro that automatically prefixed __func__, rather than making
>> every caller have to supply it themselves.
>
> I'm not sure there's a great deal of benefit to that change, because
> use of hw_error() in new code is rarely correct (it does an abort()
> so it should never be used for guest-triggered conditions, which is
> about the only time that you might be interested in a guest register
> dump rather than just asserting). Most of its existing uses are in
> crufty old device models.

Ok, another excuse to leave it out :)

Thanks,
Alistair

>
> thanks
> -- PMM

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 35+ messages in thread

* Re: [Qemu-devel] [PATCH v1 8/8] target: Replace fprintf(stderr, "*\n" with error_report()
  2017-09-26  4:08   ` Thomas Huth
@ 2017-09-29 18:12     ` Alistair Francis
  0 siblings, 0 replies; 35+ messages in thread
From: Alistair Francis @ 2017-09-29 18:12 UTC (permalink / raw)
  To: Thomas Huth
  Cc: Alistair Francis, qemu-devel@nongnu.org Developers,
	Cornelia Huck, Eduardo Habkost, Marcelo Tosatti,
	Edgar E. Iglesias, Markus Armbruster, Christian Borntraeger,
	Michael Walle, qemu-arm, open list:New World, Paolo Bonzini,
	Yongbok Kim, Guan Xuetao, Aurelien Jarno, Richard Henderson

On Mon, Sep 25, 2017 at 9:08 PM, Thomas Huth <thuth@redhat.com> wrote:
> On 26.09.2017 02:09, Alistair Francis wrote:
>> Replace a large number of the fprintf(stderr, "*\n" calls with
>> error_report(). The functions were renamed with these commands and then
>> compiler issues where manually fixed.
> [...]
>> @@ -9281,18 +9281,19 @@ static void init_ppc_proc(PowerPCCPU *cpu)
>>          case POWERPC_FLAG_PMM:
>>              break;
>>          default:
>> -            fprintf(stderr, "PowerPC MSR definition inconsistency\n"
>> -                    "Should define POWERPC_FLAG_PX or POWERPC_FLAG_PMM\n");
>> +            error_report("PowerPC MSR definition inconsistency");
>> +            error_printf("Should define POWERPC_FLAG_PX or POWERPC_FLAG_PMM");
>>              exit(1);
>>          }
>>      } else if (env->flags & (POWERPC_FLAG_PX | POWERPC_FLAG_PMM)) {
>> -        fprintf(stderr, "PowerPC MSR definition inconsistency\n"
>> -                "Should not define POWERPC_FLAG_PX nor POWERPC_FLAG_PMM\n");
>> +        error_report("PowerPC MSR definition inconsistency");
>> +        error_printf("Should not define POWERPC_FLAG_PX nor POWERPC_FLAG_PMM");
>>          exit(1);
>>      }
>>      if ((env->flags & (POWERPC_FLAG_RTC_CLK | POWERPC_FLAG_BUS_CLK)) == 0) {
>> -        fprintf(stderr, "PowerPC flags inconsistency\n"
>> -                "Should define the time-base and decrementer clock source\n");
>> +        error_report("PowerPC MSR definition inconsistency");
>> +        error_printf("Should define the time-base and decrementer clock"
>> +                     " source");
>>          exit(1);
>>      }
>
> Replacing fprintf with error_report+error_printf is kind of very ugly.
> While error_report adds newline to the output, error_printf does not (as
> far as I can see) ... did you check how such a message looks like when
> it is generated during runtime?
> Also, the strings belong together, so printing them with two function
> calls sound wrong to me... maybe they should be joined without newline
> in the middle instead?

Ok, that works for me, I'll do that.

Thanks,
Alistair

>
>  Thomas

^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2017-09-29 18:13 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-09-26  0:08 [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* Alistair Francis
2017-09-26  0:08 ` [Qemu-devel] [PATCH v1 1/8] Replace all occurances of __FUNCTION__ with __func__ Alistair Francis
2017-09-26  0:08   ` Alistair Francis
2017-09-26 13:32   ` [Qemu-devel] " Eric Blake
2017-09-26 13:32   ` Eric Blake
2017-09-27 22:59     ` Alistair Francis
2017-09-27 22:59     ` Alistair Francis
2017-09-27 23:47     ` [Qemu-devel] [Qemu-arm] " Peter Maydell
2017-09-28 22:37       ` Alistair Francis
2017-09-28 22:37         ` [Qemu-arm] [Qemu-devel] " Alistair Francis
2017-09-27 23:47     ` Peter Maydell
2017-09-26  0:08 ` [Qemu-devel] [PATCH v1 2/8] tests: Replace fprintf(stderr, "*\n" with error_report() Alistair Francis
2017-09-26  0:55   ` Emilio G. Cota
2017-09-26 14:03     ` Eric Blake
2017-09-27 23:08     ` Alistair Francis
2017-09-28 17:53       ` Emilio G. Cota
2017-09-26  0:08 ` [Qemu-devel] [PATCH v1 3/8] hw: " Alistair Francis
2017-09-26  0:08   ` Alistair Francis
2017-09-26  3:51   ` [Qemu-devel] " Thomas Huth
2017-09-27 22:41     ` Alistair Francis
2017-09-27 22:41       ` Alistair Francis
2017-09-26  3:51   ` Thomas Huth
2017-09-26  0:08 ` [Qemu-devel] [PATCH v1 4/8] block: " Alistair Francis
2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 5/8] util: " Alistair Francis
2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 6/8] ui: " Alistair Francis
2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 7/8] tcg: " Alistair Francis
2017-09-26 15:05   ` Richard Henderson
2017-09-26  0:09 ` [Qemu-devel] [PATCH v1 8/8] target: " Alistair Francis
2017-09-26  4:08   ` Thomas Huth
2017-09-29 18:12     ` Alistair Francis
2017-09-26 15:21   ` Richard Henderson
2017-09-26  0:27 ` [Qemu-devel] [PATCH v1 0/8] Remove some of the fprintf(stderr, "* no-reply
2017-09-26  0:42 ` no-reply
2017-09-26  9:05 ` Stefan Hajnoczi
2017-09-26 16:47   ` Alistair Francis

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.