get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/818410/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 818410,
    "url": "http://patchwork.ozlabs.org/api/patches/818410/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/5ad72536402da2879d49b58753cc709a8ff22de9.1506384415.git.alistair.francis@xilinx.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<5ad72536402da2879d49b58753cc709a8ff22de9.1506384415.git.alistair.francis@xilinx.com>",
    "list_archive_url": null,
    "date": "2017-09-26T00:09:10",
    "name": "[v1,8/8] target: Replace fprintf(stderr, \"*\\n\" with error_report()",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "cfd11c99e2fe93ca07373cbe3dbc33fcf4992ec8",
    "submitter": {
        "id": 47878,
        "url": "http://patchwork.ozlabs.org/api/people/47878/?format=api",
        "name": "Alistair Francis",
        "email": "alistair.francis@xilinx.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/5ad72536402da2879d49b58753cc709a8ff22de9.1506384415.git.alistair.francis@xilinx.com/mbox/",
    "series": [
        {
            "id": 5037,
            "url": "http://patchwork.ozlabs.org/api/series/5037/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=5037",
            "date": "2017-09-26T00:08:34",
            "name": "Remove some of the fprintf(stderr, \"*",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/5037/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/818410/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/818410/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=xilinx.onmicrosoft.com\n\theader.i=@xilinx.onmicrosoft.com header.b=\"ZgzfkQBB\"; \n\tdkim-atps=neutral",
            "spf=pass (sender IP is 149.199.60.83)\n\tsmtp.mailfrom=xilinx.com; nongnu.org; dkim=none (message not signed)\n\theader.d=none;nongnu.org; dmarc=bestguesspass action=none\n\theader.from=xilinx.com;"
        ],
        "Received": [
            "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y1M3Q2127z9sRm\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 26 Sep 2017 10:17:38 +1000 (AEST)",
            "from localhost ([::1]:44919 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dwdZA-0006BH-AP\n\tfor incoming@patchwork.ozlabs.org; Mon, 25 Sep 2017 20:17:36 -0400",
            "from eggs.gnu.org ([2001:4830:134:3::10]:55854)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <alistai@xilinx.com>) id 1dwdVH-0003NP-Vo\n\tfor qemu-devel@nongnu.org; Mon, 25 Sep 2017 20:13:42 -0400",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <alistai@xilinx.com>) id 1dwdVB-00061N-82\n\tfor qemu-devel@nongnu.org; Mon, 25 Sep 2017 20:13:35 -0400",
            "from mail-dm3nam03on0053.outbound.protection.outlook.com\n\t([104.47.41.53]:15184\n\thelo=NAM03-DM3-obe.outbound.protection.outlook.com)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <alistai@xilinx.com>)\n\tid 1dwdUm-0005hB-Cq; Mon, 25 Sep 2017 20:13:04 -0400",
            "from BN6PR02CA0097.namprd02.prod.outlook.com (10.161.158.38) by\n\tCY1PR0201MB1931.namprd02.prod.outlook.com (10.163.56.29) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id\n\t15.20.77.7; Tue, 26 Sep 2017 00:13:00 +0000",
            "from SN1NAM02FT030.eop-nam02.prod.protection.outlook.com\n\t(2a01:111:f400:7e44::206) by BN6PR02CA0097.outlook.office365.com\n\t(2603:10b6:405:60::38) with Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.9 via\n\tFrontend Transport; Tue, 26 Sep 2017 00:13:00 +0000",
            "from xsj-pvapsmtpgw01 (149.199.60.83) by\n\tSN1NAM02FT030.mail.protection.outlook.com (10.152.72.114) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.35.14\n\tvia Frontend Transport; Tue, 26 Sep 2017 00:12:59 +0000",
            "from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01)\n\tby xsj-pvapsmtpgw01 with esmtp (Exim 4.63)\n\t(envelope-from <alistair.francis@xilinx.com>)\n\tid 1dwdUg-0007BH-UG; Mon, 25 Sep 2017 17:12:58 -0700",
            "from [127.0.0.1] (helo=localhost)\n\tby xsj-pvapsmtp01 with smtp (Exim 4.63)\n\t(envelope-from <alistair.francis@xilinx.com>)\n\tid 1dwdUg-0008WQ-Rc; Mon, 25 Sep 2017 17:12:58 -0700",
            "from xsj-pvapsmtp01 (smtp.xilinx.com [149.199.38.66])\n\tby xsj-smtp-dlp2.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id\n\tv8Q0Co1I023644; Mon, 25 Sep 2017 17:12:50 -0700",
            "from [172.19.2.220] (helo=localhost.localdomain)\n\tby xsj-pvapsmtp01 with esmtp (Exim 4.63)\n\t(envelope-from <alistair.francis@xilinx.com>)\n\tid 1dwdUY-0008Vf-5l; Mon, 25 Sep 2017 17:12:50 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=xilinx.onmicrosoft.com; s=selector1-xilinx-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=2geKn/izkLRVtN9RnSTYUj4qEWyON0ESlYf0WluNHMc=;\n\tb=ZgzfkQBBaASa60UF6q/qlyuEsSf7CJE4qQtHd2ggMk7GatQXl3F5o9yRA53QC1Z39tkajCRXDqOZnV+rBunAh8T9s7d3I1NVOyuQJ4QCfpGNkXLbcipc9AOunTZX5O2XZ81rlKIHWUJi26jzPpTa3yoej1a6zY4tswGeBfBwDAY=",
        "Received-SPF": "Pass (protection.outlook.com: domain of xilinx.com designates\n\t149.199.60.83 as permitted sender)\n\treceiver=protection.outlook.com; \n\tclient-ip=149.199.60.83; helo=xsj-pvapsmtpgw01;",
        "From": "Alistair Francis <alistair.francis@xilinx.com>",
        "To": "<qemu-devel@nongnu.org>",
        "Date": "Mon, 25 Sep 2017 17:09:10 -0700",
        "Message-ID": "<5ad72536402da2879d49b58753cc709a8ff22de9.1506384415.git.alistair.francis@xilinx.com>",
        "X-Mailer": "git-send-email 2.11.0",
        "In-Reply-To": "<cover.1506384414.git.alistair.francis@xilinx.com>",
        "References": "<cover.1506384414.git.alistair.francis@xilinx.com>",
        "X-RCIS-Action": "ALLOW",
        "X-TM-AS-Product-Ver": "IMSS-7.1.0.1224-8.1.0.1062-23350.005",
        "X-TM-AS-User-Approved-Sender": "Yes;Yes",
        "X-EOPAttributedMessage": "0",
        "X-MS-Office365-Filtering-HT": "Tenant",
        "X-Forefront-Antispam-Report": "CIP:149.199.60.83; IPV:NLI; CTRY:US; EFV:NLI;\n\tSFV:NSPM;\n\tSFS:(10009020)(6009001)(376002)(39860400002)(346002)(2980300002)(438002)(189002)(199003)(8676002)(53946003)(50226002)(16200700003)(54906003)(2351001)(551934003)(316002)(478600001)(50986999)(76176999)(118296001)(48376002)(50466002)(305945005)(4326008)(5003940100001)(81166006)(47776003)(5660300001)(39060400002)(575784001)(356003)(33646002)(189998001)(6916009)(2906002)(7416002)(9786002)(6666003)(36756003)(2950100002)(81156014)(77096006)(36386004)(16586007)(8936002)(106466001)(63266004)(21314002)(107986001)(579004)(569006);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0201MB1931;\n\tH:xsj-pvapsmtpgw01; FPR:; SPF:Pass; PTR:unknown-60-83.xilinx.com;\n\tMX:1; A:1; LANG:en; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; SN1NAM02FT030;\n\t1:RKeD792DdvLBMqjHP2oIqLfQr8Ktk5wRddRf/SgpWP9u6JlL1IeliMmwjjFZgPcnGPHDbKos/luXH0MTOjHueFdXxrd3OzbGP4hIx2RggH8JL5oqpgTnMt2JwST5FMKH",
            "1; CY1PR0201MB1931;\n\t3:D1Dh6rNwc1njTGB8J9IA21zKR4XaFLCyfTQ9oiShedj385WY2/c3wvWqzWrqTzd1K6ceSyMx0ZyO3s20MDk9OKab5LIDlblhlDtvhhKSXkivqqipZooaFoNVjhNXJ3NIIr0vmbtBagXSlA5HwJZZoVhQniVxqBwTtd5VPJyKWGwAAF1TKt83NReCpq7yBt7/haushwgS6xfBxVpiM7q2rRJxEq5v8dgCs3JS+yKy0vgMnggPq/YLVI9aWljlniz9SK5HONON9GLIOrvGqKOyphr5j79MbimZoRiDNGHbV9blkKUu39BDogJvLozlm0FTiJsBCcYlZ02EXd6LXAOfJHIQp783rIr8OFlBcDf1C2M=;\n\t25:65efDwxCYy0K4Cu4BxMU1QMC0EZzkUFKQkUeh/Xd/jSlI2Ynm9uhigLIcFtzeG+LqcPOj1XGkOm0yTrpSCrqXHfXjqwSDJYlJ2SzGbt1tL5vNxkK7aJcRXlLY2aI1Z/Jhihd5dl/ppadV7Vq/Ae/Ygim5kQTgJ7yc2f/xPZzL40Uv715mRD8uGNOZ2/Vd9sVTFBhdRdfonSB0cV+9TnKBzvSC1c5QPF9BS/xmP+BpIZLhRmV2FrXWm6LZlIrBvmbh0aDATVCBzKuj1SB0XC5rwQ/DP9KNR/ahy7ullEELp7Ro2XYhUQxfpn4J3q2AIC9YB9/TqNsRvl57gRSXvoBNA==",
            "1; CY1PR0201MB1931;\n\t31:PTZZ92G+xedlI2eJsamf8U0A+Sg49ReTu9yJcFABwnK11LosJQYfREZtEGcF1dW+lUioScpFVfrmPqsNp6VdmDf0PYiqPUUvIIIX3RHj5sBGceKjsePH5qdXkdku3gOkclCatAwnDtuVOLaHqBUNcj7Rsty0faAM36Ky81cfJZame58jhHe/ICbXnCdbq4oUtemr+X2fVGo+RunHUL8X1Xytu0qyv+I1IPcdQz8mBiY=;\n\t20:021iCoCmWA2kDelx/cIWidJTCDkTLJiIF36xhNol2vJ8W4HCZIPOQApIvNhRAs1Ht7jxCwzcNEFHx2LcYddtLj85YveT+LRbzVn5ZsrBwduKddxXNVmDKaa5MOSHYAFtjPoBnGE6P5WjocGYVPwmLyYI1PUEyKuL+xuoKPHV/wSJm+i/pith8SVnnlApkZktTygKBNLcqk+ke4rFtSIMwvJXYTYJoA+BmCMLwWZai/pLz2Hdfw0w0sSEaApoSUg99O1ifvbWrTjcv+ektFhVsguTZGgenac888KGstL1y4h9ueYWRpRfwxJmIpFF36HQTq566dkM0//GbHVjPPpuBi9Sha8xQ54b9Vg8e5StTVl65roHMYjdtO/XHqHiEm3JvifvzJY/w/GkFAtrEgMyElyWHSExqYwpM1JMF2wB6wAXbKOESFgI8LaBtC8U5tYMh3LNHMgeuhbcMap6J2Jq5UreuuSojcqR4lr23cPClpZmu3QcgzlzKETxgdo6kdw3",
            "1; CY1PR0201MB1931;\n\t4:hAEiQvAh6qnMlQgP0/fHzYcbbBUWOdTN7WZtvVBPXZzptmJ126OCfXndwc6PnvRFkf2QgkLxA3auGpc086QIbP93zP7Lo+wT4gE12Zm+4ql2EkpcGGAkROtl2BkTYIWnCt/tLFjR1vAO9LTJvilE67Q3HhN6Je35sKZpLycXBXNZTz80N3Vfc1rAUTNr/H+CK3j4zXFIfmwfDcT9glaN0LuLfR/nkkdKEi3ThaXE0XrwgRX1IcrbjBaoDED22qEMYMTo7KqVTfGi8AJ0qEeL7WHnvDtxCrNnVsP/wGrIRcLYnHA6Lgk25sQjz/5K1j3NUSQPi08XI5/XPCrVuwzGVDSZuSVvmdqwIodhKeV2yuvgV0arS3Co3mjS4KaDzpGNrxYo8DBYyGyg3fXRmUp5ArafunMndhTbqcOHquUiMKZ0ytTzf/9uHfdXFUD689b0",
            "=?us-ascii?Q?1; CY1PR0201MB1931;\n\t23:VE1deprnrzks32GnAoQuT10bcam9YhLkvj0y+AD?=\n\twqNHEGXOz5pnzadOWZTD4XsgBRAypz9yt2+24LmziKV7nBPZbvY3t06NvFvus6wlRTQ5Qc7TkRuQFNkkzMaO0Air6MhVV2mnwwFpwzCBHV3272I4GGtgdBCVA4UsZW+balpACxXF02xkysuhPLoLGWXDpCbSQuKwFkfOsil6Zxv+LqnlUTZhzW5TqnmIRKH/eDGLGuD4WY4qplCH5eF2fEICaUz8rcMeO1DSK4etA6lq92ce5xgl4DG8e/qJrY6hsZjSlvdCi/kaHL3ttjcieRFIYQQ90jUxTHqld18hULIxFwgyoG4I0FxsGdl+Kgfq3Q7RiBcxPp67uYDp7s0jP1iaFxaOi+U51HnzL8tkGto17rPRzudNplHRhs29lZZAs5uALkuZIsqLl2h9THGz5oX4MXvA5RJK17AaQ8IPDN5GertQyfGC6vcAo5hJoN2j6OxRZM9YnabpMwnjqIdCY7jl846UoQTIXGVF8bGwoWIIzS2slj9hmaU+tBEWPCMonBbTzF7pp5Ku0DzaHAp+zz8vAM/G/MSwrvQC/CfKrQJpHVQjQ9jBYxEFGxfBgU6l36Meci6BWbO65rOLrtqkqgXOYT2kYGRzDRcrFh/ORzHZfFEBUD3BBjLjYUPcfaGhW2v+EOg9OFROpwxswLfere+mw7aL02O86SeiuU1MJu2oQyqf6GD2Ly2e+c7A1Q1a1BcyLrk2wzQxTvG4GWzlQX4SfF+BNDh86Za5vwP87sYRQ9HF+IQlJRixwfKseDulRxnECIGabATcCexhLhHEBAriyZbKkjpHrykah8u8c2iaIdENAOnHEchGAzOAjX733KLWk7s2vfm+Y0o6lQZKI9BQLh12gt3re5kD8XSCrwprtkhx0fIdVjDBZmfisiJyQHifZDlWcEOytezxqQjO7sXLsim0GE2gl0YTkLhDsa9iFK0tKGbFyvFKJOZVfEkWps2cwK8xRl78DJOvWloesmNlc5LSvUhHvrgwC80dt4jW3vWO6ClWtILzNhKxbc6DsFg8hjBqellKox/aaPEz6nk5B5EhClPNzrvq2vnAmC67pVyJy0IDxxSRA7yM5ni9uaG5B2QLRbLEVcDnjNFC2auXPusnm+eDceEXXkNUYPmtx+2pFFPndTQGH8pYcBqXJIcnZ7NpGumppk3DMRBEn3MMD",
            "1; CY1PR0201MB1931;\n\t6:AedPvF4qVHhEDq/HF4RCGgkJmG77hPIriRjs9ARRTD9PIKwfPQVHjWL7MzMM4wIxHwtrCRqHPXqLMmGLUvpdP241ntn+aTptJ2lkoOSepfwCfHDVgjpawiAbym3hKvgZ4DR2QMfPkyPDwFf7rs+fTBE3XxQJVCwThKcVnvKuYoyYsg+cm5QDLi2sxQvVuBMs9mzwrdqfR2Q3FCorRvkvzI9E6a/vG1CZFrAKW7/rT5/p46i0BShzgJBBZzmfRbZsNMtSEwyHqrEmRDb01iHkpMiVU1aCa+icWG2PXhsdQ5SIyGAfaq1pj2lluMAocG2jia1DXOKnW296tSgbzW2IGw==;\n\t5:pAHoPrKEsftAKWJydgk15PWvOAdU/gEl73cKg0IQNWlUoT/HxRhK0j9DtY623QCRhBBgcg8fEHg8psz3eD3N0bRDHH5J5bFXjrrKh1QPORgQdwSEIRqdSWLqBECUj/R7mXw94pvA2lUiSiY2fbxxPQ==;\n\t24:dP+zlHQ0vTZZglST34kV1EkuvQZhUXU/DNBjbpAp+RGfhc/JafC/3IrWBRPSgP2so2XpUnIwPrKhLT9ax7BQ0yEpPT+PszTXJSZQod7nyVs=;\n\t7:9cccN803ciRWUPkzj2v4Mdaj1twkftrXVDwwvm85QJPGlhbF69uTHDH4+AYfWe/YmcfhSMmHY+kCUPcWeRx5veUozNSTlGO0ejkXA1jo59zy1WQuw+eTcbRare3IsCy0WWw3doQg4pQn2GWyYzu4q9RYZbdUiH/86HHj7+xOKW3naJjTya7kBwq1321r256YT5HivmoDJ3DWB/8kuUcpAaeqmpEJztZbIc4A7ioznjk="
        ],
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "39f2f2c0-09e3-4792-015a-08d50473590c",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(22001)(2017030254152)(8251501002)(2017052603199)(201703131423075)(201703031133081)(201702281549075);\n\tSRVR:CY1PR0201MB1931; ",
        "X-MS-TrafficTypeDiagnostic": "CY1PR0201MB1931:",
        "X-Exchange-Antispam-Report-Test": "UriScan:(788757137089)(190383065149520)(192813158149592)(104084551191319)(21532816269658);",
        "X-Microsoft-Antispam-PRVS": "<CY1PR0201MB19319478F733838BD30862F4DC7B0@CY1PR0201MB1931.namprd02.prod.outlook.com>",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(93004095)(3002001)(100000703101)(100105400095)(10201501046)(6055026)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123558100)(20161123564025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:CY1PR0201MB1931; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:CY1PR0201MB1931; ",
        "X-Forefront-PRVS": "0442E569BC",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "xilinx.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "26 Sep 2017 00:12:59.7158\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Id": "657af505-d5df-48d0-8300-c31994686c5c",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "TenantId=657af505-d5df-48d0-8300-c31994686c5c; \n\tIp=[149.199.60.83]; Helo=[xsj-pvapsmtpgw01]",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CY1PR0201MB1931",
        "X-detected-operating-system": "by eggs.gnu.org: Windows 7 or 8 [fuzzy]",
        "X-Received-From": "104.47.41.53",
        "Subject": "[Qemu-devel] [PATCH v1 8/8] target: Replace fprintf(stderr,\n\t\"*\\n\" with error_report()",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.21",
        "Precedence": "list",
        "List-Id": "<qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Cc": "Cornelia Huck <cohuck@redhat.com>, Eduardo Habkost <ehabkost@redhat.com>,\n\tMarcelo Tosatti <mtosatti@redhat.com>,\n\t\"Edgar E. Iglesias\" <edgar.iglesias@gmail.com>,\n\tarmbru@redhat.com, alistair.francis@xilinx.com,\n\tChristian Borntraeger <borntraeger@de.ibm.com>,\n\tMichael Walle <michael@walle.cc>, qemu-arm@nongnu.org,\n\tqemu-ppc@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,\n\tYongbok Kim <yongbok.kim@imgtec.com>, alistair23@gmail.com,\n\tGuan Xuetao <gxt@mprc.pku.edu.cn>,\n\tAurelien Jarno <aurelien@aurel32.net>, \n\tRichard Henderson <rth@twiddle.net>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"
    },
    "content": "Replace a large number of the fprintf(stderr, \"*\\n\" calls with\nerror_report(). The functions were renamed with these commands and then\ncompiler issues where manually fixed.\n\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -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}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N;N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\nfind ./* -type f -exec sed -i \\\n    'N; {s|fprintf(stderr, \"\\(.*\\)\\\\n\"\\(.*\\));|error_report(\"\\1\"\\2);|Ig}' \\\n    {} +\n\nSome lines where then manually tweaked to pass checkpatch.\n\nSigned-off-by: Alistair Francis <alistair.francis@xilinx.com>\nCc: \"Edgar E. Iglesias\" <edgar.iglesias@gmail.com>\nCc: Paolo Bonzini <pbonzini@redhat.com>\nCc: Richard Henderson <rth@twiddle.net>\nCc: Eduardo Habkost <ehabkost@redhat.com>\nCc: Marcelo Tosatti <mtosatti@redhat.com>\nCc: Michael Walle <michael@walle.cc>\nCc: Aurelien Jarno <aurelien@aurel32.net>\nCc: Yongbok Kim <yongbok.kim@imgtec.com>\nCc: Christian Borntraeger <borntraeger@de.ibm.com>\nCc: Cornelia Huck <cohuck@redhat.com>\nCc: Guan Xuetao <gxt@mprc.pku.edu.cn>\nCc: qemu-arm@nongnu.org\nCc: qemu-ppc@nongnu.org\n---\n\n target/arm/arm-powerctl.c    |  5 +++--\n target/arm/arm-semi.c        |  3 ++-\n target/arm/helper.c          |  4 ++--\n target/arm/kvm.c             | 16 ++++++-------\n target/arm/kvm32.c           |  2 +-\n target/arm/kvm64.c           |  2 +-\n target/arm/translate-a64.c   |  4 ++--\n target/arm/translate.c       |  2 +-\n target/cris/helper.c         |  2 +-\n target/cris/translate.c      |  2 +-\n target/i386/hax-all.c        | 52 +++++++++++++++++++++----------------------\n target/i386/hax-darwin.c     | 26 +++++++++++-----------\n target/i386/hax-mem.c        |  4 ++--\n target/i386/hax-windows.c    | 42 +++++++++++++++++------------------\n target/i386/kvm.c            | 38 +++++++++++++++----------------\n target/i386/misc_helper.c    | 12 +++++-----\n target/lm32/op_helper.c      |  4 ++--\n target/mips/mips-semi.c      |  3 ++-\n target/mips/translate.c      |  2 +-\n target/ppc/excp_helper.c     |  4 ++--\n target/ppc/kvm.c             | 36 +++++++++++++++---------------\n target/ppc/mmu-hash64.c      |  2 +-\n target/ppc/mmu_helper.c      |  2 +-\n target/ppc/translate.c       | 20 ++++++++---------\n target/ppc/translate_init.c  | 53 ++++++++++++++++++++++----------------------\n target/s390x/kvm.c           | 20 ++++++++---------\n target/s390x/misc_helper.c   |  2 +-\n target/sh4/translate.c       |  4 ++--\n target/unicore32/translate.c |  4 ++--\n 29 files changed, 188 insertions(+), 184 deletions(-)",
    "diff": "diff --git a/target/arm/arm-powerctl.c b/target/arm/arm-powerctl.c\nindex 25207cb850..2d56d5d579 100644\n--- a/target/arm/arm-powerctl.c\n+++ b/target/arm/arm-powerctl.c\n@@ -9,6 +9,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"cpu.h\"\n #include \"cpu-qom.h\"\n #include \"internals.h\"\n@@ -24,7 +25,7 @@\n #define DPRINTF(fmt, args...) \\\n     do { \\\n         if (DEBUG_ARM_POWERCTL) { \\\n-            fprintf(stderr, \"[ARM]%s: \" fmt , __func__, ##args); \\\n+            error_report(\"[ARM]%s: \" fmt , __func__, ##args); \\\n         } \\\n     } while (0)\n \n@@ -32,7 +33,7 @@ CPUState *arm_get_cpu_by_id(uint64_t id)\n {\n     CPUState *cpu;\n \n-    DPRINTF(\"cpu %\" PRId64 \"\\n\", id);\n+    DPRINTF(\"cpu %\" PRId64 \"\", id);\n \n     CPU_FOREACH(cpu) {\n         ARMCPU *armcpu = ARM_CPU(cpu);\ndiff --git a/target/arm/arm-semi.c b/target/arm/arm-semi.c\nindex 7cac8734c7..f8f12102f1 100644\n--- a/target/arm/arm-semi.c\n+++ b/target/arm/arm-semi.c\n@@ -19,6 +19,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n \n #include \"cpu.h\"\n #include \"exec/semihost.h\"\n@@ -649,7 +650,7 @@ target_ulong do_arm_semihosting(CPUARMState *env)\n         }\n         /* fall through -- invalid for A32/T32 */\n     default:\n-        fprintf(stderr, \"qemu: Unsupported SemiHosting SWI 0x%02x\\n\", nr);\n+        error_report(\"qemu: Unsupported SemiHosting SWI 0x%02x\", nr);\n         cpu_dump_state(cs, stderr, fprintf, 0);\n         abort();\n     }\ndiff --git a/target/arm/helper.c b/target/arm/helper.c\nindex 8be78ea2f8..881afc3382 100644\n--- a/target/arm/helper.c\n+++ b/target/arm/helper.c\n@@ -5460,9 +5460,9 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, const ARMCPRegInfo *r,\n         ARMCPRegInfo *oldreg;\n         oldreg = g_hash_table_lookup(cpu->cp_regs, key);\n         if (oldreg && !(oldreg->type & ARM_CP_OVERRIDE)) {\n-            fprintf(stderr, \"Register redefined: cp=%d %d bit \"\n+            error_report(\"Register redefined: cp=%d %d bit \"\n                     \"crn=%d crm=%d opc1=%d opc2=%d, \"\n-                    \"was %s, now %s\\n\", r2->cp, 32 + 32 * is64,\n+                    \"was %s, now %s\", r2->cp, 32 + 32 * is64,\n                     r2->crn, r2->crm, r2->opc1, r2->opc2,\n                     oldreg->name, r2->name);\n             g_assert_not_reached();\ndiff --git a/target/arm/kvm.c b/target/arm/kvm.c\nindex 211a7bf7be..0165960405 100644\n--- a/target/arm/kvm.c\n+++ b/target/arm/kvm.c\n@@ -139,7 +139,7 @@ static void kvm_arm_host_cpu_class_init(ObjectClass *oc, void *data)\n      * TCG CPUs.\n      */\n     if (!kvm_arm_get_host_cpu_features(ahcc)) {\n-        fprintf(stderr, \"Failed to retrieve host CPU features!\\n\");\n+        error_report(\"Failed to retrieve host CPU features!\");\n         abort();\n     }\n }\n@@ -256,7 +256,7 @@ static void kvm_arm_set_device_addr(KVMDevice *kd)\n     }\n \n     if (ret < 0) {\n-        fprintf(stderr, \"Failed to set device address: %s\\n\",\n+        error_report(\"Failed to set device address: %s\",\n                 strerror(-ret));\n         abort();\n     }\n@@ -352,7 +352,7 @@ int kvm_arm_init_cpreg_list(ARMCPU *cpu)\n         case KVM_REG_SIZE_U64:\n             break;\n         default:\n-            fprintf(stderr, \"Can't handle size of register in kernel list\\n\");\n+            error_report(\"Can't handle size of register in kernel list\");\n             ret = -EINVAL;\n             goto out;\n         }\n@@ -383,7 +383,7 @@ int kvm_arm_init_cpreg_list(ARMCPU *cpu)\n         /* Shouldn't happen unless kernel is inconsistent about\n          * what registers exist.\n          */\n-        fprintf(stderr, \"Initial read of kernel register state failed\\n\");\n+        error_report(\"Initial read of kernel register state failed\");\n         ret = -EINVAL;\n         goto out;\n     }\n@@ -478,11 +478,11 @@ void kvm_arm_reset_vcpu(ARMCPU *cpu)\n      */\n     ret = kvm_arm_vcpu_init(CPU(cpu));\n     if (ret < 0) {\n-        fprintf(stderr, \"kvm_arm_vcpu_init failed: %s\\n\", strerror(-ret));\n+        error_report(\"kvm_arm_vcpu_init failed: %s\", strerror(-ret));\n         abort();\n     }\n     if (!write_kvmstate_to_list(cpu)) {\n-        fprintf(stderr, \"write_kvmstate_to_list failed\\n\");\n+        error_report(\"write_kvmstate_to_list failed\");\n         abort();\n     }\n }\n@@ -499,7 +499,7 @@ int kvm_arm_sync_mpstate_to_kvm(ARMCPU *cpu)\n         };\n         int ret = kvm_vcpu_ioctl(CPU(cpu), KVM_SET_MP_STATE, &mp_state);\n         if (ret) {\n-            fprintf(stderr, \"%s: failed to set MP_STATE %d/%s\\n\",\n+            error_report(\"%s: failed to set MP_STATE %d/%s\",\n                     __func__, ret, strerror(-ret));\n             return -1;\n         }\n@@ -517,7 +517,7 @@ int kvm_arm_sync_mpstate_to_qemu(ARMCPU *cpu)\n         struct kvm_mp_state mp_state;\n         int ret = kvm_vcpu_ioctl(CPU(cpu), KVM_GET_MP_STATE, &mp_state);\n         if (ret) {\n-            fprintf(stderr, \"%s: failed to get MP_STATE %d/%s\\n\",\n+            error_report(\"%s: failed to get MP_STATE %d/%s\",\n                     __func__, ret, strerror(-ret));\n             abort();\n         }\ndiff --git a/target/arm/kvm32.c b/target/arm/kvm32.c\nindex f925a21481..97d36a174d 100644\n--- a/target/arm/kvm32.c\n+++ b/target/arm/kvm32.c\n@@ -191,7 +191,7 @@ int kvm_arch_init_vcpu(CPUState *cs)\n     ARMCPU *cpu = ARM_CPU(cs);\n \n     if (cpu->kvm_target == QEMU_KVM_ARM_TARGET_NONE) {\n-        fprintf(stderr, \"KVM is not supported for this guest CPU type\\n\");\n+        error_report(\"KVM is not supported for this guest CPU type\");\n         return -EINVAL;\n     }\n \ndiff --git a/target/arm/kvm64.c b/target/arm/kvm64.c\nindex 6554c30007..b3e1484069 100644\n--- a/target/arm/kvm64.c\n+++ b/target/arm/kvm64.c\n@@ -502,7 +502,7 @@ int kvm_arch_init_vcpu(CPUState *cs)\n \n     if (cpu->kvm_target == QEMU_KVM_ARM_TARGET_NONE ||\n         !object_dynamic_cast(OBJECT(cpu), TYPE_AARCH64_CPU)) {\n-        fprintf(stderr, \"KVM is not supported for this guest CPU type\\n\");\n+        error_report(\"KVM is not supported for this guest CPU type\");\n         return -EINVAL;\n     }\n \ndiff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c\nindex 899ffb96fc..eac76a0747 100644\n--- a/target/arm/translate-a64.c\n+++ b/target/arm/translate-a64.c\n@@ -505,8 +505,8 @@ static inline void assert_fp_access_checked(DisasContext *s)\n {\n #ifdef CONFIG_DEBUG_TCG\n     if (unlikely(!s->fp_access_checked || s->fp_excp_el)) {\n-        fprintf(stderr, \"target-arm: FP access check missing for \"\n-                \"instruction 0x%08x\\n\", s->insn);\n+        error_report(\"target-arm: FP access check missing for \"\n+                \"instruction 0x%08x\", s->insn);\n         abort();\n     }\n #endif\ndiff --git a/target/arm/translate.c b/target/arm/translate.c\nindex ab1a12a1b8..d484381aef 100644\n--- a/target/arm/translate.c\n+++ b/target/arm/translate.c\n@@ -857,7 +857,7 @@ void arm_test_cc(DisasCompare *cmp, int cc)\n         goto no_invert;\n \n     default:\n-        fprintf(stderr, \"Bad condition code 0x%x\\n\", cc);\n+        error_report(\"Bad condition code 0x%x\", cc);\n         abort();\n     }\n \ndiff --git a/target/cris/helper.c b/target/cris/helper.c\nindex af78cca8b9..ba9ce538c3 100644\n--- a/target/cris/helper.c\n+++ b/target/cris/helper.c\n@@ -282,7 +282,7 @@ hwaddr cris_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)\n     if (!miss) {\n         phy = res.phy;\n     }\n-    D(fprintf(stderr, \"%s %x -> %x\\n\", __func__, addr, phy));\n+    D(error_report(\"%s %x -> %x\", __func__, addr, phy));\n     return phy;\n }\n #endif\ndiff --git a/target/cris/translate.c b/target/cris/translate.c\nindex 38a999e6f1..8847005984 100644\n--- a/target/cris/translate.c\n+++ b/target/cris/translate.c\n@@ -138,7 +138,7 @@ typedef struct DisasContext {\n \n static void gen_BUG(DisasContext *dc, const char *file, int line)\n {\n-    fprintf(stderr, \"BUG: pc=%x %s %d\\n\", dc->pc, file, line);\n+    error_report(\"BUG: pc=%x %s %d\", dc->pc, file, line);\n     if (qemu_log_separate()) {\n         qemu_log(\"BUG: pc=%x %s %d\\n\", dc->pc, file, line);\n     }\ndiff --git a/target/i386/hax-all.c b/target/i386/hax-all.c\nindex 3ce6950296..b0462c8b4c 100644\n--- a/target/i386/hax-all.c\n+++ b/target/i386/hax-all.c\n@@ -100,13 +100,13 @@ static int hax_get_capability(struct hax_state *hax)\n     }\n \n     if (!(cap->winfo & HAX_CAP_UG)) {\n-        fprintf(stderr, \"UG mode is not supported by the hardware.\\n\");\n+        error_report(\"UG mode is not supported by the hardware.\");\n         return -ENOTSUP;\n     }\n \n     if (cap->wstatus & HAX_CAP_MEMQUOTA) {\n         if (cap->mem_quota < hax->mem_quota) {\n-            fprintf(stderr, \"The VM memory needed exceeds the driver limit.\\n\");\n+            error_report(\"The VM memory needed exceeds the driver limit.\");\n             return -ENOSPC;\n         }\n     }\n@@ -126,13 +126,13 @@ static int hax_version_support(struct hax_state *hax)\n     if (hax_min_version > version.cur_version) {\n         fprintf(stderr, \"Incompatible HAX module version %d,\",\n                 version.cur_version);\n-        fprintf(stderr, \"requires minimum version %d\\n\", hax_min_version);\n+        error_report(\"requires minimum version %d\", hax_min_version);\n         return 0;\n     }\n     if (hax_cur_version < version.compat_version) {\n         fprintf(stderr, \"Incompatible QEMU HAX API version %x,\",\n                 hax_cur_version);\n-        fprintf(stderr, \"requires minimum HAX API version %x\\n\",\n+        error_report(\"requires minimum HAX API version %x\",\n                 version.compat_version);\n         return 0;\n     }\n@@ -146,18 +146,18 @@ int hax_vcpu_create(int id)\n     int ret;\n \n     if (!hax_global.vm) {\n-        fprintf(stderr, \"vcpu %x created failed, vm is null\\n\", id);\n+        error_report(\"vcpu %x created failed, vm is null\", id);\n         return -1;\n     }\n \n     if (hax_global.vm->vcpus[id]) {\n-        fprintf(stderr, \"vcpu %x allocated already\\n\", id);\n+        error_report(\"vcpu %x allocated already\", id);\n         return 0;\n     }\n \n     vcpu = g_malloc(sizeof(struct hax_vcpu_state));\n     if (!vcpu) {\n-        fprintf(stderr, \"Failed to alloc vcpu state\\n\");\n+        error_report(\"Failed to alloc vcpu state\");\n         return -ENOMEM;\n     }\n \n@@ -165,14 +165,14 @@ int hax_vcpu_create(int id)\n \n     ret = hax_host_create_vcpu(hax_global.vm->fd, id);\n     if (ret) {\n-        fprintf(stderr, \"Failed to create vcpu %x\\n\", id);\n+        error_report(\"Failed to create vcpu %x\", id);\n         goto error;\n     }\n \n     vcpu->vcpu_id = id;\n     vcpu->fd = hax_host_open_vcpu(hax_global.vm->id, id);\n     if (hax_invalid_fd(vcpu->fd)) {\n-        fprintf(stderr, \"Failed to open the vcpu\\n\");\n+        error_report(\"Failed to open the vcpu\");\n         ret = -ENODEV;\n         goto error;\n     }\n@@ -181,7 +181,7 @@ int hax_vcpu_create(int id)\n \n     ret = hax_host_setup_vcpu_channel(vcpu);\n     if (ret) {\n-        fprintf(stderr, \"Invalid hax tunnel size\\n\");\n+        error_report(\"Invalid hax tunnel size\");\n         ret = -EINVAL;\n         goto error;\n     }\n@@ -203,7 +203,7 @@ int hax_vcpu_destroy(CPUState *cpu)\n     struct hax_vcpu_state *vcpu = cpu->hax_vcpu;\n \n     if (!hax_global.vm) {\n-        fprintf(stderr, \"vcpu %x destroy failed, vm is null\\n\", vcpu->vcpu_id);\n+        error_report(\"vcpu %x destroy failed, vm is null\", vcpu->vcpu_id);\n         return -1;\n     }\n \n@@ -227,7 +227,7 @@ int hax_init_vcpu(CPUState *cpu)\n \n     ret = hax_vcpu_create(cpu->cpu_index);\n     if (ret < 0) {\n-        fprintf(stderr, \"Failed to create HAX vcpu\\n\");\n+        error_report(\"Failed to create HAX vcpu\");\n         exit(-1);\n     }\n \n@@ -258,13 +258,13 @@ struct hax_vm *hax_vm_create(struct hax_state *hax)\n     memset(vm, 0, sizeof(struct hax_vm));\n     ret = hax_host_create_vm(hax, &vm_id);\n     if (ret) {\n-        fprintf(stderr, \"Failed to create vm %x\\n\", ret);\n+        error_report(\"Failed to create vm %x\", ret);\n         goto error;\n     }\n     vm->id = vm_id;\n     vm->fd = hax_host_open_vm(hax, vm_id);\n     if (hax_invalid_fd(vm->fd)) {\n-        fprintf(stderr, \"Failed to open vm %d\\n\", vm_id);\n+        error_report(\"Failed to open vm %d\", vm_id);\n         goto error;\n     }\n \n@@ -283,7 +283,7 @@ int hax_vm_destroy(struct hax_vm *vm)\n \n     for (i = 0; i < HAX_MAX_VCPU; i++)\n         if (vm->vcpus[i]) {\n-            fprintf(stderr, \"VCPU should be cleaned before vm clean\\n\");\n+            error_report(\"VCPU should be cleaned before vm clean\");\n             return -1;\n         }\n     hax_close_fd(vm->fd);\n@@ -335,7 +335,7 @@ static int hax_init(ram_addr_t ram_size)\n \n     hax->vm = hax_vm_create(hax);\n     if (!hax->vm) {\n-        fprintf(stderr, \"Failed to create HAX VM\\n\");\n+        error_report(\"Failed to create HAX VM\");\n         ret = -EINVAL;\n         goto error;\n     }\n@@ -364,7 +364,7 @@ static int hax_accel_init(MachineState *ms)\n     int ret = hax_init(ms->ram_size);\n \n     if (ret && (ret != -ENOSPC)) {\n-        fprintf(stderr, \"No accelerator found.\\n\");\n+        error_report(\"No accelerator found.\");\n     } else {\n         fprintf(stdout, \"HAX is %s and emulator runs in %s mode.\\n\",\n                 !ret ? \"working\" : \"not working\",\n@@ -526,7 +526,7 @@ static int hax_vcpu_hax_exec(CPUArchState *env)\n         }\n \n         if (hax_ret < 0) {\n-            fprintf(stderr, \"vcpu run failed for vcpu  %x\\n\", vcpu->vcpu_id);\n+            error_report(\"vcpu run failed for vcpu  %x\", vcpu->vcpu_id);\n             abort();\n         }\n         switch (ht->_exit_status) {\n@@ -546,7 +546,7 @@ static int hax_vcpu_hax_exec(CPUArchState *env)\n             ret = 1;\n             break;\n         case HAX_EXIT_UNKNOWN_VMEXIT:\n-            fprintf(stderr, \"Unknown VMX exit %x from guest\\n\",\n+            error_report(\"Unknown VMX exit %x from guest\",\n                     ht->_exit_reason);\n             qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);\n             hax_vcpu_sync_state(env, 0);\n@@ -569,16 +569,16 @@ static int hax_vcpu_hax_exec(CPUArchState *env)\n             break;\n         case HAX_EXIT_MMIO:\n             /* Should not happen on UG system */\n-            fprintf(stderr, \"HAX: unsupported MMIO emulation\\n\");\n+            error_report(\"HAX: unsupported MMIO emulation\");\n             ret = -1;\n             break;\n         case HAX_EXIT_REAL:\n             /* Should not happen on UG system */\n-            fprintf(stderr, \"HAX: unimplemented real mode emulation\\n\");\n+            error_report(\"HAX: unimplemented real mode emulation\");\n             ret = -1;\n             break;\n         default:\n-            fprintf(stderr, \"Unknown exit %x from HAX\\n\", ht->_exit_status);\n+            error_report(\"Unknown exit %x from HAX\", ht->_exit_status);\n             qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);\n             hax_vcpu_sync_state(env, 0);\n             cpu_dump_state(cpu, stderr, fprintf, 0);\n@@ -662,7 +662,7 @@ int hax_smp_cpu_exec(CPUState *cpu)\n         fatal = hax_vcpu_hax_exec(env);\n \n         if (fatal) {\n-            fprintf(stderr, \"Unsupported HAX vcpu return\\n\");\n+            error_report(\"Unsupported HAX vcpu return\");\n             abort();\n         }\n     }\n@@ -1079,17 +1079,17 @@ static int hax_arch_set_registers(CPUArchState *env)\n     ret = hax_sync_vcpu_register(env, 1);\n \n     if (ret < 0) {\n-        fprintf(stderr, \"Failed to sync vcpu reg\\n\");\n+        error_report(\"Failed to sync vcpu reg\");\n         return ret;\n     }\n     ret = hax_set_fpu(env);\n     if (ret < 0) {\n-        fprintf(stderr, \"FPU failed\\n\");\n+        error_report(\"FPU failed\");\n         return ret;\n     }\n     ret = hax_set_msrs(env);\n     if (ret < 0) {\n-        fprintf(stderr, \"MSR failed\\n\");\n+        error_report(\"MSR failed\");\n         return ret;\n     }\n \ndiff --git a/target/i386/hax-darwin.c b/target/i386/hax-darwin.c\nindex 1c5bbd0a2d..768521b6d0 100644\n--- a/target/i386/hax-darwin.c\n+++ b/target/i386/hax-darwin.c\n@@ -24,7 +24,7 @@ hax_fd hax_mod_open(void)\n {\n     int fd = open(\"/dev/HAX\", O_RDWR);\n     if (fd == -1) {\n-        fprintf(stderr, \"Failed to open the hax module\\n\");\n+        error_report(\"Failed to open the hax module\");\n     }\n \n     fcntl(fd, F_SETFD, FD_CLOEXEC);\n@@ -38,7 +38,7 @@ int hax_populate_ram(uint64_t va, uint32_t size)\n     struct hax_alloc_ram_info info;\n \n     if (!hax_global.vm || !hax_global.vm->fd) {\n-        fprintf(stderr, \"Allocate memory before vm create?\\n\");\n+        error_report(\"Allocate memory before vm create?\");\n         return -EINVAL;\n     }\n \n@@ -46,7 +46,7 @@ int hax_populate_ram(uint64_t va, uint32_t size)\n     info.va = va;\n     ret = ioctl(hax_global.vm->fd, HAX_VM_IOCTL_ALLOC_RAM, &info);\n     if (ret < 0) {\n-        fprintf(stderr, \"Failed to allocate %x memory\\n\", size);\n+        error_report(\"Failed to allocate %x memory\", size);\n         return ret;\n     }\n     return 0;\n@@ -75,7 +75,7 @@ int hax_capability(struct hax_state *hax, struct hax_capabilityinfo *cap)\n \n     ret = ioctl(hax->fd, HAX_IOCTL_CAPABILITY, cap);\n     if (ret == -1) {\n-        fprintf(stderr, \"Failed to get HAX capability\\n\");\n+        error_report(\"Failed to get HAX capability\");\n         return -errno;\n     }\n \n@@ -88,7 +88,7 @@ int hax_mod_version(struct hax_state *hax, struct hax_module_version *version)\n \n     ret = ioctl(hax->fd, HAX_IOCTL_VERSION, version);\n     if (ret == -1) {\n-        fprintf(stderr, \"Failed to get HAX version\\n\");\n+        error_report(\"Failed to get HAX version\");\n         return -errno;\n     }\n \n@@ -100,7 +100,7 @@ static char *hax_vm_devfs_string(int vm_id)\n     char *name;\n \n     if (vm_id > MAX_VM_ID) {\n-        fprintf(stderr, \"Too big VM id\\n\");\n+        error_report(\"Too big VM id\");\n         return NULL;\n     }\n \n@@ -119,7 +119,7 @@ static char *hax_vcpu_devfs_string(int vm_id, int vcpu_id)\n     char *name;\n \n     if (vm_id > MAX_VM_ID || vcpu_id > MAX_VCPU_ID) {\n-        fprintf(stderr, \"Too big vm id %x or vcpu id %x\\n\", vm_id, vcpu_id);\n+        error_report(\"Too big vm id %x or vcpu id %x\", vm_id, vcpu_id);\n         return NULL;\n     }\n \n@@ -181,7 +181,7 @@ int hax_notify_qemu_version(hax_fd vm_fd, struct hax_qemu_version *qversion)\n     ret = ioctl(vm_fd, HAX_VM_IOCTL_NOTIFY_QEMU_VERSION, qversion);\n \n     if (ret < 0) {\n-        fprintf(stderr, \"Failed to notify qemu API version\\n\");\n+        error_report(\"Failed to notify qemu API version\");\n         return ret;\n     }\n     return 0;\n@@ -196,7 +196,7 @@ int hax_host_create_vcpu(hax_fd vm_fd, int vcpuid)\n \n     ret = ioctl(vm_fd, HAX_VM_IOCTL_VCPU_CREATE, &vcpuid);\n     if (ret < 0) {\n-        fprintf(stderr, \"Failed to create vcpu %x\\n\", vcpuid);\n+        error_report(\"Failed to create vcpu %x\", vcpuid);\n     }\n \n     return ret;\n@@ -209,14 +209,14 @@ hax_fd hax_host_open_vcpu(int vmid, int vcpuid)\n \n     devfs_path = hax_vcpu_devfs_string(vmid, vcpuid);\n     if (!devfs_path) {\n-        fprintf(stderr, \"Failed to get the devfs\\n\");\n+        error_report(\"Failed to get the devfs\");\n         return -EINVAL;\n     }\n \n     fd = open(devfs_path, O_RDWR);\n     g_free(devfs_path);\n     if (fd < 0) {\n-        fprintf(stderr, \"Failed to open the vcpu devfs\\n\");\n+        error_report(\"Failed to open the vcpu devfs\");\n     }\n     fcntl(fd, F_SETFD, FD_CLOEXEC);\n     return fd;\n@@ -229,12 +229,12 @@ int hax_host_setup_vcpu_channel(struct hax_vcpu_state *vcpu)\n \n     ret = ioctl(vcpu->fd, HAX_VCPU_IOCTL_SETUP_TUNNEL, &info);\n     if (ret) {\n-        fprintf(stderr, \"Failed to setup the hax tunnel\\n\");\n+        error_report(\"Failed to setup the hax tunnel\");\n         return ret;\n     }\n \n     if (!valid_hax_tunnel_size(info.size)) {\n-        fprintf(stderr, \"Invalid hax tunnel size %x\\n\", info.size);\n+        error_report(\"Invalid hax tunnel size %x\", info.size);\n         ret = -EINVAL;\n         return ret;\n     }\ndiff --git a/target/i386/hax-mem.c b/target/i386/hax-mem.c\nindex 27a0d214f2..e1388bb003 100644\n--- a/target/i386/hax-mem.c\n+++ b/target/i386/hax-mem.c\n@@ -247,8 +247,8 @@ static void hax_transaction_commit(MemoryListener *listener)\n             }\n             if (hax_set_ram(entry->start_pa, entry->size,\n                             entry->host_va, entry->flags)) {\n-                fprintf(stderr, \"%s: Failed mapping @0x%016\" PRIx64 \"+0x%\"\n-                        PRIx32 \" flags %02x\\n\", __func__, entry->start_pa,\n+                error_report(\"%s: Failed mapping @0x%016\" PRIx64 \"+0x%\"\n+                        PRIx32 \" flags %02x\", __func__, entry->start_pa,\n                         entry->size, entry->flags);\n             }\n             QTAILQ_REMOVE(&mappings, entry, entry);\ndiff --git a/target/i386/hax-windows.c b/target/i386/hax-windows.c\nindex 15a180b646..8d724d21ad 100644\n--- a/target/i386/hax-windows.c\n+++ b/target/i386/hax-windows.c\n@@ -33,7 +33,7 @@ static int hax_open_device(hax_fd *fd)\n                          0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);\n \n     if (hDevice == INVALID_HANDLE_VALUE) {\n-        fprintf(stderr, \"Failed to open the HAX device!\\n\");\n+        error_report(\"Failed to open the HAX device!\");\n         errNum = GetLastError();\n         if (errNum == ERROR_FILE_NOT_FOUND) {\n             return -1;\n@@ -52,7 +52,7 @@ static int hax_open_device(hax_fd *fd)\n \n     ret = hax_open_device(&fd);\n     if (ret != 0) {\n-        fprintf(stderr, \"Open HAX device failed\\n\");\n+        error_report(\"Open HAX device failed\");\n     }\n \n     return fd;\n@@ -66,7 +66,7 @@ int hax_populate_ram(uint64_t va, uint32_t size)\n     DWORD dSize = 0;\n \n     if (!hax_global.vm || !hax_global.vm->fd) {\n-        fprintf(stderr, \"Allocate memory before vm create?\\n\");\n+        error_report(\"Allocate memory before vm create?\");\n         return -EINVAL;\n     }\n \n@@ -81,7 +81,7 @@ int hax_populate_ram(uint64_t va, uint32_t size)\n                           (LPOVERLAPPED) NULL);\n \n     if (!ret) {\n-        fprintf(stderr, \"Failed to allocate %x memory\\n\", size);\n+        error_report(\"Failed to allocate %x memory\", size);\n         return ret;\n     }\n \n@@ -119,7 +119,7 @@ int hax_capability(struct hax_state *hax, struct hax_capabilityinfo *cap)\n     DWORD err = 0;\n \n     if (hax_invalid_fd(hDevice)) {\n-        fprintf(stderr, \"Invalid fd for hax device!\\n\");\n+        error_report(\"Invalid fd for hax device!\");\n         return -ENODEV;\n     }\n \n@@ -129,9 +129,9 @@ int hax_capability(struct hax_state *hax, struct hax_capabilityinfo *cap)\n     if (!ret) {\n         err = GetLastError();\n         if (err == ERROR_INSUFFICIENT_BUFFER || err == ERROR_MORE_DATA) {\n-            fprintf(stderr, \"hax capability is too long to hold.\\n\");\n+            error_report(\"hax capability is too long to hold.\");\n         }\n-        fprintf(stderr, \"Failed to get Hax capability:%luu\\n\", err);\n+        error_report(\"Failed to get Hax capability:%luu\", err);\n         return -EFAULT;\n     } else {\n         return 0;\n@@ -146,7 +146,7 @@ int hax_mod_version(struct hax_state *hax, struct hax_module_version *version)\n     DWORD err = 0;\n \n     if (hax_invalid_fd(hDevice)) {\n-        fprintf(stderr, \"Invalid fd for hax device!\\n\");\n+        error_report(\"Invalid fd for hax device!\");\n         return -ENODEV;\n     }\n \n@@ -159,9 +159,9 @@ int hax_mod_version(struct hax_state *hax, struct hax_module_version *version)\n     if (!ret) {\n         err = GetLastError();\n         if (err == ERROR_INSUFFICIENT_BUFFER || err == ERROR_MORE_DATA) {\n-            fprintf(stderr, \"hax module verion is too long to hold.\\n\");\n+            error_report(\"hax module verion is too long to hold.\");\n         }\n-        fprintf(stderr, \"Failed to get Hax module version:%lu\\n\", err);\n+        error_report(\"Failed to get Hax module version:%lu\", err);\n         return -EFAULT;\n     } else {\n         return 0;\n@@ -173,7 +173,7 @@ static char *hax_vm_devfs_string(int vm_id)\n     char *name;\n \n     if (vm_id > MAX_VM_ID) {\n-        fprintf(stderr, \"Too big VM id\\n\");\n+        error_report(\"Too big VM id\");\n         return NULL;\n     }\n \n@@ -192,7 +192,7 @@ static char *hax_vcpu_devfs_string(int vm_id, int vcpu_id)\n     char *name;\n \n     if (vm_id > MAX_VM_ID || vcpu_id > MAX_VCPU_ID) {\n-        fprintf(stderr, \"Too big vm id %x or vcpu id %x\\n\", vm_id, vcpu_id);\n+        error_report(\"Too big vm id %x or vcpu id %x\", vm_id, vcpu_id);\n         return NULL;\n     }\n \n@@ -226,7 +226,7 @@ int hax_host_create_vm(struct hax_state *hax, int *vmid)\n                           NULL, 0, &vm_id, sizeof(vm_id), &dSize,\n                           (LPOVERLAPPED) NULL);\n     if (!ret) {\n-        fprintf(stderr, \"Failed to create VM. Error code: %lu\\n\",\n+        error_report(\"Failed to create VM. Error code: %lu\",\n                 GetLastError());\n         return -1;\n     }\n@@ -241,7 +241,7 @@ hax_fd hax_host_open_vm(struct hax_state *hax, int vm_id)\n \n     vm_name = hax_vm_devfs_string(vm_id);\n     if (!vm_name) {\n-        fprintf(stderr, \"Failed to open VM. VM name is null\\n\");\n+        error_report(\"Failed to open VM. VM name is null\");\n         return INVALID_HANDLE_VALUE;\n     }\n \n@@ -249,7 +249,7 @@ hax_fd hax_host_open_vm(struct hax_state *hax, int vm_id)\n                            GENERIC_READ | GENERIC_WRITE,\n                            0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);\n     if (hDeviceVM == INVALID_HANDLE_VALUE) {\n-        fprintf(stderr, \"Open the vm device error:%s, ec:%lu\\n\",\n+        error_report(\"Open the vm device error:%s, ec:%lu\",\n                 vm_name, GetLastError());\n     }\n \n@@ -269,7 +269,7 @@ int hax_notify_qemu_version(hax_fd vm_fd, struct hax_qemu_version *qversion)\n                           qversion, sizeof(struct hax_qemu_version),\n                           NULL, 0, &dSize, (LPOVERLAPPED) NULL);\n     if (!ret) {\n-        fprintf(stderr, \"Failed to notify qemu API version\\n\");\n+        error_report(\"Failed to notify qemu API version\");\n         return -1;\n     }\n     return 0;\n@@ -285,7 +285,7 @@ int hax_host_create_vcpu(hax_fd vm_fd, int vcpuid)\n                           &vcpuid, sizeof(vcpuid), NULL, 0, &dSize,\n                           (LPOVERLAPPED) NULL);\n     if (!ret) {\n-        fprintf(stderr, \"Failed to create vcpu %x\\n\", vcpuid);\n+        error_report(\"Failed to create vcpu %x\", vcpuid);\n         return -1;\n     }\n \n@@ -299,7 +299,7 @@ hax_fd hax_host_open_vcpu(int vmid, int vcpuid)\n \n     devfs_path = hax_vcpu_devfs_string(vmid, vcpuid);\n     if (!devfs_path) {\n-        fprintf(stderr, \"Failed to get the devfs\\n\");\n+        error_report(\"Failed to get the devfs\");\n         return INVALID_HANDLE_VALUE;\n     }\n \n@@ -309,7 +309,7 @@ hax_fd hax_host_open_vcpu(int vmid, int vcpuid)\n                              NULL);\n \n     if (hDeviceVCPU == INVALID_HANDLE_VALUE) {\n-        fprintf(stderr, \"Failed to open the vcpu devfs\\n\");\n+        error_report(\"Failed to open the vcpu devfs\");\n     }\n     g_free(devfs_path);\n     return hDeviceVCPU;\n@@ -327,12 +327,12 @@ int hax_host_setup_vcpu_channel(struct hax_vcpu_state *vcpu)\n                           NULL, 0, &info, sizeof(info), &dSize,\n                           (LPOVERLAPPED) NULL);\n     if (!ret) {\n-        fprintf(stderr, \"Failed to setup the hax tunnel\\n\");\n+        error_report(\"Failed to setup the hax tunnel\");\n         return -1;\n     }\n \n     if (!valid_hax_tunnel_size(info.size)) {\n-        fprintf(stderr, \"Invalid hax tunnel size %x\\n\", info.size);\n+        error_report(\"Invalid hax tunnel size %x\", info.size);\n         ret = -EINVAL;\n         return ret;\n     }\ndiff --git a/target/i386/kvm.c b/target/i386/kvm.c\nindex b1e32e95d3..d7cf10ae11 100644\n--- a/target/i386/kvm.c\n+++ b/target/i386/kvm.c\n@@ -219,7 +219,7 @@ static struct kvm_cpuid2 *try_get_cpuid(KVMState *s, int max)\n             g_free(cpuid);\n             return NULL;\n         } else {\n-            fprintf(stderr, \"KVM_GET_SUPPORTED_CPUID failed: %s\\n\",\n+            error_report(\"KVM_GET_SUPPORTED_CPUID failed: %s\",\n                     strerror(-r));\n             exit(1);\n         }\n@@ -470,7 +470,7 @@ static void kvm_mce_inject(X86CPU *cpu, hwaddr paddr, int code)\n \n static void hardware_memory_error(void)\n {\n-    fprintf(stderr, \"Hardware memory error!\\n\");\n+    error_report(\"Hardware memory error!\");\n     exit(1);\n }\n \n@@ -497,8 +497,8 @@ void kvm_arch_on_sigbus_vcpu(CPUState *c, int code, void *addr)\n             return;\n         }\n \n-        fprintf(stderr, \"Hardware memory error for memory used by \"\n-                \"QEMU itself instead of guest system!\\n\");\n+        error_report(\"Hardware memory error for memory used by \"\n+                \"QEMU itself instead of guest system!\");\n     }\n \n     if (code == BUS_MCEERR_AR) {\n@@ -666,7 +666,7 @@ static int hyperv_handle_properties(CPUState *cs)\n \n         if (!has_msr_hv_synic ||\n             kvm_vcpu_enable_cap(cs, KVM_CAP_HYPERV_SYNIC, 0)) {\n-            fprintf(stderr, \"Hyper-V SynIC is not supported by kernel\\n\");\n+            error_report(\"Hyper-V SynIC is not supported by kernel\");\n             return -ENOSYS;\n         }\n \n@@ -678,7 +678,7 @@ static int hyperv_handle_properties(CPUState *cs)\n     }\n     if (cpu->hyperv_stimer) {\n         if (!has_msr_hv_stimer) {\n-            fprintf(stderr, \"Hyper-V timers aren't supported by kernel\\n\");\n+            error_report(\"Hyper-V timers aren't supported by kernel\");\n             return -ENOSYS;\n         }\n         env->features[FEAT_HYPERV_EAX] |= HV_SYNTIMERS_AVAILABLE;\n@@ -811,7 +811,7 @@ int kvm_arch_init_vcpu(CPUState *cs)\n \n     for (i = 0; i <= limit; i++) {\n         if (cpuid_i == KVM_MAX_CPUID_ENTRIES) {\n-            fprintf(stderr, \"unsupported level value: 0x%x\\n\", limit);\n+            error_report(\"unsupported level value: 0x%x\", limit);\n             abort();\n         }\n         c = &cpuid_data.entries[cpuid_i++];\n@@ -829,8 +829,8 @@ int kvm_arch_init_vcpu(CPUState *cs)\n \n             for (j = 1; j < times; ++j) {\n                 if (cpuid_i == KVM_MAX_CPUID_ENTRIES) {\n-                    fprintf(stderr, \"cpuid_data is full, no space for \"\n-                            \"cpuid(eax:2):eax & 0xf = 0x%x\\n\", times);\n+                    error_report(\"cpuid_data is full, no space for \"\n+                            \"cpuid(eax:2):eax & 0xf = 0x%x\", times);\n                     abort();\n                 }\n                 c = &cpuid_data.entries[cpuid_i++];\n@@ -862,8 +862,8 @@ int kvm_arch_init_vcpu(CPUState *cs)\n                     continue;\n                 }\n                 if (cpuid_i == KVM_MAX_CPUID_ENTRIES) {\n-                    fprintf(stderr, \"cpuid_data is full, no space for \"\n-                            \"cpuid(eax:0x%x,ecx:0x%x)\\n\", i, j);\n+                    error_report(\"cpuid_data is full, no space for \"\n+                            \"cpuid(eax:0x%x,ecx:0x%x)\", i, j);\n                     abort();\n                 }\n                 c = &cpuid_data.entries[cpuid_i++];\n@@ -899,7 +899,7 @@ int kvm_arch_init_vcpu(CPUState *cs)\n \n     for (i = 0x80000000; i <= limit; i++) {\n         if (cpuid_i == KVM_MAX_CPUID_ENTRIES) {\n-            fprintf(stderr, \"unsupported xlevel value: 0x%x\\n\", limit);\n+            error_report(\"unsupported xlevel value: 0x%x\", limit);\n             abort();\n         }\n         c = &cpuid_data.entries[cpuid_i++];\n@@ -915,7 +915,7 @@ int kvm_arch_init_vcpu(CPUState *cs)\n \n         for (i = 0xC0000000; i <= limit; i++) {\n             if (cpuid_i == KVM_MAX_CPUID_ENTRIES) {\n-                fprintf(stderr, \"unsupported xlevel2 value: 0x%x\\n\", limit);\n+                error_report(\"unsupported xlevel2 value: 0x%x\", limit);\n                 abort();\n             }\n             c = &cpuid_data.entries[cpuid_i++];\n@@ -1245,7 +1245,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s)\n     /* Tell fw_cfg to notify the BIOS to reserve the range. */\n     ret = e820_add_entry(identity_base, 0x4000, E820_RESERVED);\n     if (ret < 0) {\n-        fprintf(stderr, \"e820_add_entry() table is full\\n\");\n+        error_report(\"e820_add_entry() table is full\");\n         return ret;\n     }\n     qemu_register_reset(kvm_unpoison_all, NULL);\n@@ -2733,7 +2733,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run)\n             DPRINTF(\"injected NMI\\n\");\n             ret = kvm_vcpu_ioctl(cpu, KVM_NMI);\n             if (ret < 0) {\n-                fprintf(stderr, \"KVM: injection failed, NMI lost (%s)\\n\",\n+                error_report(\"KVM: injection failed, NMI lost (%s)\",\n                         strerror(-ret));\n             }\n         }\n@@ -2744,7 +2744,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run)\n             DPRINTF(\"injected SMI\\n\");\n             ret = kvm_vcpu_ioctl(cpu, KVM_SMI);\n             if (ret < 0) {\n-                fprintf(stderr, \"KVM: injection failed, SMI lost (%s)\\n\",\n+                error_report(\"KVM: injection failed, SMI lost (%s)\",\n                         strerror(-ret));\n             }\n         }\n@@ -3141,7 +3141,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)\n         break;\n     case KVM_EXIT_FAIL_ENTRY:\n         code = run->fail_entry.hardware_entry_failure_reason;\n-        fprintf(stderr, \"KVM: entry failed, hardware error 0x%\" PRIx64 \"\\n\",\n+        error_report(\"KVM: entry failed, hardware error 0x%\" PRIx64 \"\",\n                 code);\n         if (host_supports_vmx() && code == VMX_INVALID_GUEST_STATE) {\n             fprintf(stderr,\n@@ -3157,7 +3157,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)\n         ret = -1;\n         break;\n     case KVM_EXIT_EXCEPTION:\n-        fprintf(stderr, \"KVM: exception %d exit (error code 0x%x)\\n\",\n+        error_report(\"KVM: exception %d exit (error code 0x%x)\",\n                 run->ex.exception, run->ex.error_code);\n         ret = -1;\n         break;\n@@ -3175,7 +3175,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)\n         ret = 0;\n         break;\n     default:\n-        fprintf(stderr, \"KVM: unknown exit reason %d\\n\", run->exit_reason);\n+        error_report(\"KVM: unknown exit reason %d\", run->exit_reason);\n         ret = -1;\n         break;\n     }\ndiff --git a/target/i386/misc_helper.c b/target/i386/misc_helper.c\nindex 628f64aad5..115e80217e 100644\n--- a/target/i386/misc_helper.c\n+++ b/target/i386/misc_helper.c\n@@ -28,7 +28,7 @@\n void helper_outb(CPUX86State *env, uint32_t port, uint32_t data)\n {\n #ifdef CONFIG_USER_ONLY\n-    fprintf(stderr, \"outb: port=0x%04x, data=%02x\\n\", port, data);\n+    error_report(\"outb: port=0x%04x, data=%02x\", port, data);\n #else\n     address_space_stb(&address_space_io, port, data,\n                       cpu_get_mem_attrs(env), NULL);\n@@ -38,7 +38,7 @@ void helper_outb(CPUX86State *env, uint32_t port, uint32_t data)\n target_ulong helper_inb(CPUX86State *env, uint32_t port)\n {\n #ifdef CONFIG_USER_ONLY\n-    fprintf(stderr, \"inb: port=0x%04x\\n\", port);\n+    error_report(\"inb: port=0x%04x\", port);\n     return 0;\n #else\n     return address_space_ldub(&address_space_io, port,\n@@ -49,7 +49,7 @@ target_ulong helper_inb(CPUX86State *env, uint32_t port)\n void helper_outw(CPUX86State *env, uint32_t port, uint32_t data)\n {\n #ifdef CONFIG_USER_ONLY\n-    fprintf(stderr, \"outw: port=0x%04x, data=%04x\\n\", port, data);\n+    error_report(\"outw: port=0x%04x, data=%04x\", port, data);\n #else\n     address_space_stw(&address_space_io, port, data,\n                       cpu_get_mem_attrs(env), NULL);\n@@ -59,7 +59,7 @@ void helper_outw(CPUX86State *env, uint32_t port, uint32_t data)\n target_ulong helper_inw(CPUX86State *env, uint32_t port)\n {\n #ifdef CONFIG_USER_ONLY\n-    fprintf(stderr, \"inw: port=0x%04x\\n\", port);\n+    error_report(\"inw: port=0x%04x\", port);\n     return 0;\n #else\n     return address_space_lduw(&address_space_io, port,\n@@ -70,7 +70,7 @@ target_ulong helper_inw(CPUX86State *env, uint32_t port)\n void helper_outl(CPUX86State *env, uint32_t port, uint32_t data)\n {\n #ifdef CONFIG_USER_ONLY\n-    fprintf(stderr, \"outw: port=0x%04x, data=%08x\\n\", port, data);\n+    error_report(\"outw: port=0x%04x, data=%08x\", port, data);\n #else\n     address_space_stl(&address_space_io, port, data,\n                       cpu_get_mem_attrs(env), NULL);\n@@ -80,7 +80,7 @@ void helper_outl(CPUX86State *env, uint32_t port, uint32_t data)\n target_ulong helper_inl(CPUX86State *env, uint32_t port)\n {\n #ifdef CONFIG_USER_ONLY\n-    fprintf(stderr, \"inl: port=0x%04x\\n\", port);\n+    error_report(\"inl: port=0x%04x\", port);\n     return 0;\n #else\n     return address_space_ldl(&address_space_io, port,\ndiff --git a/target/lm32/op_helper.c b/target/lm32/op_helper.c\nindex 2177c8ad12..34bfc3fb3b 100644\n--- a/target/lm32/op_helper.c\n+++ b/target/lm32/op_helper.c\n@@ -40,9 +40,9 @@ void HELPER(ill)(CPULM32State *env)\n {\n #ifndef CONFIG_USER_ONLY\n     CPUState *cs = CPU(lm32_env_get_cpu(env));\n-    fprintf(stderr, \"VM paused due to illegal instruction. \"\n+    error_report(\"VM paused due to illegal instruction. \"\n             \"Connect a debugger or switch to the monitor console \"\n-            \"to find out more.\\n\");\n+            \"to find out more.\");\n     vm_stop(RUN_STATE_PAUSED);\n     cs->halted = 1;\n     raise_exception(env, EXCP_HALTED);\ndiff --git a/target/mips/mips-semi.c b/target/mips/mips-semi.c\nindex a7aefbaefc..c1f35f8f5a 100644\n--- a/target/mips/mips-semi.c\n+++ b/target/mips/mips-semi.c\n@@ -18,6 +18,7 @@\n  */\n \n #include \"qemu/osdep.h\"\n+#include \"qemu/error-report.h\"\n #include \"cpu.h\"\n #include \"qemu/log.h\"\n #include \"exec/helper-proto.h\"\n@@ -366,7 +367,7 @@ void helper_do_semihosting(CPUMIPSState *env)\n         break;\n #endif\n     default:\n-        fprintf(stderr, \"Unknown UHI operation %d\\n\", op);\n+        error_report(\"Unknown UHI operation %d\", op);\n         abort();\n     }\n uhi_done:\ndiff --git a/target/mips/translate.c b/target/mips/translate.c\nindex d16d879df7..32a5920259 100644\n--- a/target/mips/translate.c\n+++ b/target/mips/translate.c\n@@ -10886,7 +10886,7 @@ static void gen_branch(DisasContext *ctx, int insn_bytes)\n             tcg_gen_lookup_and_goto_ptr(cpu_PC);\n             break;\n         default:\n-            fprintf(stderr, \"unknown branch 0x%x\\n\", proc_hflags);\n+            error_report(\"unknown branch 0x%x\", proc_hflags);\n             abort();\n         }\n     }\ndiff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c\nindex e6009e70e5..a142e81a0f 100644\n--- a/target/ppc/excp_helper.c\n+++ b/target/ppc/excp_helper.c\n@@ -200,8 +200,8 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp)\n             /* Machine check exception is not enabled.\n              * Enter checkstop state.\n              */\n-            fprintf(stderr, \"Machine check while not allowed. \"\n-                    \"Entering checkstop state\\n\");\n+            error_report(\"Machine check while not allowed. \"\n+                    \"Entering checkstop state\");\n             if (qemu_log_separate()) {\n                 qemu_log(\"Machine check while not allowed. \"\n                         \"Entering checkstop state\\n\");\ndiff --git a/target/ppc/kvm.c b/target/ppc/kvm.c\nindex 1deaf106d2..136b5a0c69 100644\n--- a/target/ppc/kvm.c\n+++ b/target/ppc/kvm.c\n@@ -159,8 +159,8 @@ int kvm_arch_init(MachineState *ms, KVMState *s)\n     cap_ppc_pvr_compat = false;\n \n     if (!cap_interrupt_level) {\n-        fprintf(stderr, \"KVM: Couldn't find level irq capability. Expect the \"\n-                        \"VM to stall at times!\\n\");\n+        error_report(\"KVM: Couldn't find level irq capability. Expect the \"\n+                        \"VM to stall at times!\");\n     }\n \n     kvm_ppc_register_host_cpu_type();\n@@ -188,7 +188,7 @@ static int kvm_arch_sync_sregs(PowerPCCPU *cpu)\n         return 0;\n     } else {\n         if (!cap_segstate) {\n-            fprintf(stderr, \"kvm error: missing PVR setting capability\\n\");\n+            error_report(\"kvm error: missing PVR setting capability\");\n             return -ENOSYS;\n         }\n     }\n@@ -237,7 +237,7 @@ static int kvm_booke206_tlb_init(PowerPCCPU *cpu)\n \n     ret = kvm_vcpu_enable_cap(cs, KVM_CAP_SW_TLB, 0, (uintptr_t)&cfg);\n     if (ret < 0) {\n-        fprintf(stderr, \"%s: couldn't enable KVM_CAP_SW_TLB: %s\\n\",\n+        error_report(\"%s: couldn't enable KVM_CAP_SW_TLB: %s\",\n                 __func__, strerror(-ret));\n         return ret;\n     }\n@@ -552,7 +552,7 @@ static void kvmppc_hw_debug_points_init(CPUPPCState *cenv)\n     }\n \n     if ((max_hw_breakpoint + max_hw_watchpoint) > MAX_HW_BKPTS) {\n-        fprintf(stderr, \"Error initializing h/w breakpoints\\n\");\n+        error_report(\"Error initializing h/w breakpoints\");\n         return;\n     }\n }\n@@ -623,7 +623,7 @@ static void kvm_sw_tlb_put(PowerPCCPU *cpu)\n \n     ret = kvm_vcpu_ioctl(cs, KVM_DIRTY_TLB, &dirty_tlb);\n     if (ret) {\n-        fprintf(stderr, \"%s: KVM_DIRTY_TLB: %s\\n\",\n+        error_report(\"%s: KVM_DIRTY_TLB: %s\",\n                 __func__, strerror(-ret));\n     }\n \n@@ -1474,7 +1474,7 @@ static int kvmppc_handle_halt(PowerPCCPU *cpu)\n static int kvmppc_handle_dcr_read(CPUPPCState *env, uint32_t dcrn, uint32_t *data)\n {\n     if (ppc_dcr_read(env->dcr_env, dcrn, data) < 0)\n-        fprintf(stderr, \"Read to unhandled DCR (0x%x)\\n\", dcrn);\n+        error_report(\"Read to unhandled DCR (0x%x)\", dcrn);\n \n     return 0;\n }\n@@ -1482,7 +1482,7 @@ static int kvmppc_handle_dcr_read(CPUPPCState *env, uint32_t dcrn, uint32_t *dat\n static int kvmppc_handle_dcr_write(CPUPPCState *env, uint32_t dcrn, uint32_t data)\n {\n     if (ppc_dcr_write(env->dcr_env, dcrn, data) < 0)\n-        fprintf(stderr, \"Write to unhandled DCR (0x%x)\\n\", dcrn);\n+        error_report(\"Write to unhandled DCR (0x%x)\", dcrn);\n \n     return 0;\n }\n@@ -1793,7 +1793,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)\n         break;\n \n     default:\n-        fprintf(stderr, \"KVM: unknown exit reason %d\\n\", run->exit_reason);\n+        error_report(\"KVM: unknown exit reason %d\", run->exit_reason);\n         ret = -1;\n         break;\n     }\n@@ -1857,7 +1857,7 @@ int kvmppc_booke_watchdog_enable(PowerPCCPU *cpu)\n \n     ret = kvm_vcpu_enable_cap(cs, KVM_CAP_PPC_BOOKE_WATCHDOG, 0);\n     if (ret < 0) {\n-        fprintf(stderr, \"%s: couldn't enable KVM_CAP_PPC_BOOKE_WATCHDOG: %s\\n\",\n+        error_report(\"%s: couldn't enable KVM_CAP_PPC_BOOKE_WATCHDOG: %s\",\n                 __func__, strerror(-ret));\n         return ret;\n     }\n@@ -2192,7 +2192,7 @@ off_t kvmppc_alloc_rma(void **rma)\n \n     fd = kvm_vm_ioctl(kvm_state, KVM_ALLOCATE_RMA, &ret);\n     if (fd < 0) {\n-        fprintf(stderr, \"KVM: Error on KVM_ALLOCATE_RMA: %s\\n\",\n+        error_report(\"KVM: Error on KVM_ALLOCATE_RMA: %s\",\n                 strerror(errno));\n         return -1;\n     }\n@@ -2201,7 +2201,7 @@ off_t kvmppc_alloc_rma(void **rma)\n \n     *rma = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);\n     if (*rma == MAP_FAILED) {\n-        fprintf(stderr, \"KVM: Error mapping RMA: %s\\n\", strerror(errno));\n+        error_report(\"KVM: Error mapping RMA: %s\", strerror(errno));\n         return -1;\n     };\n \n@@ -2303,7 +2303,7 @@ void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t page_shift,\n         }\n         fd = kvm_vm_ioctl(kvm_state, KVM_CREATE_SPAPR_TCE, &args);\n         if (fd < 0) {\n-            fprintf(stderr, \"KVM: Failed to create TCE table for liobn 0x%x\\n\",\n+            error_report(\"KVM: Failed to create TCE table for liobn 0x%x\",\n                     liobn);\n             return NULL;\n         }\n@@ -2316,7 +2316,7 @@ void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t page_shift,\n \n     table = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);\n     if (table == MAP_FAILED) {\n-        fprintf(stderr, \"KVM: Failed to map TCE table for liobn 0x%x\\n\",\n+        error_report(\"KVM: Failed to map TCE table for liobn 0x%x\",\n                 liobn);\n         close(fd);\n         return NULL;\n@@ -2563,7 +2563,7 @@ int kvmppc_get_htab_fd(bool write)\n     };\n \n     if (!cap_htab_fd) {\n-        fprintf(stderr, \"KVM version doesn't support saving the hash table\\n\");\n+        error_report(\"KVM version doesn't support saving the hash table\");\n         return -1;\n     }\n \n@@ -2579,7 +2579,7 @@ int kvmppc_save_htab(QEMUFile *f, int fd, size_t bufsize, int64_t max_ns)\n     do {\n         rc = read(fd, buf, bufsize);\n         if (rc < 0) {\n-            fprintf(stderr, \"Error reading data from KVM HTAB fd: %s\\n\",\n+            error_report(\"Error reading data from KVM HTAB fd: %s\",\n                     strerror(errno));\n             return rc;\n         } else if (rc) {\n@@ -2624,13 +2624,13 @@ int kvmppc_load_htab_chunk(QEMUFile *f, int fd, uint32_t index,\n \n     rc = write(fd, buf, chunksize);\n     if (rc < 0) {\n-        fprintf(stderr, \"Error writing KVM hash table: %s\\n\",\n+        error_report(\"Error writing KVM hash table: %s\",\n                 strerror(errno));\n         return rc;\n     }\n     if (rc != chunksize) {\n         /* We should never get a short write on a single chunk */\n-        fprintf(stderr, \"Short write, restoring KVM hash table\\n\");\n+        error_report(\"Short write, restoring KVM hash table\");\n         return -1;\n     }\n     return 0;\ndiff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c\nindex 14d34e512f..8713ed6682 100644\n--- a/target/ppc/mmu-hash64.c\n+++ b/target/ppc/mmu-hash64.c\n@@ -377,7 +377,7 @@ static int ppc_hash64_amr_prot(PowerPCCPU *cpu, ppc_hash_pte64_t pte)\n     key = HPTE64_R_KEY(pte.pte1);\n     amrbits = (env->spr[SPR_AMR] >> 2*(31 - key)) & 0x3;\n \n-    /* fprintf(stderr, \"AMR protection: key=%d AMR=0x%\" PRIx64 \"\\n\", key, */\n+    /* error_report(\"AMR protection: key=%d AMR=0x%\" PRIx64 \"\", key, */\n     /*         env->spr[SPR_AMR]); */\n \n     /*\ndiff --git a/target/ppc/mmu_helper.c b/target/ppc/mmu_helper.c\nindex 2a1f9902c9..cbf5187ff8 100644\n--- a/target/ppc/mmu_helper.c\n+++ b/target/ppc/mmu_helper.c\n@@ -2600,7 +2600,7 @@ void helper_booke206_tlbwe(CPUPPCState *env)\n     if (((env->spr[SPR_BOOKE_MAS0] & MAS0_ATSEL) == MAS0_ATSEL_LRAT) &&\n         !msr_gs) {\n         /* XXX we don't support direct LRAT setting yet */\n-        fprintf(stderr, \"cpu: don't support LRAT setting yet\\n\");\n+        error_report(\"cpu: don't support LRAT setting yet\");\n         return;\n     }\n \ndiff --git a/target/ppc/translate.c b/target/ppc/translate.c\nindex 606b605ba0..a3da22580e 100644\n--- a/target/ppc/translate.c\n+++ b/target/ppc/translate.c\n@@ -3943,8 +3943,8 @@ static inline void gen_op_mfspr(DisasContext *ctx)\n              * allowing userland application to read the PVR\n              */\n             if (sprn != SPR_PVR) {\n-                fprintf(stderr, \"Trying to read privileged spr %d (0x%03x) at \"\n-                        TARGET_FMT_lx \"\\n\", sprn, sprn, ctx->nip - 4);\n+                error_report(\"Trying to read privileged spr %d (0x%03x) at \"\n+                        TARGET_FMT_lx \"\", sprn, sprn, ctx->nip - 4);\n                 if (qemu_log_separate()) {\n                     qemu_log(\"Trying to read privileged spr %d (0x%03x) at \"\n                              TARGET_FMT_lx \"\\n\", sprn, sprn, ctx->nip - 4);\n@@ -3960,8 +3960,8 @@ static inline void gen_op_mfspr(DisasContext *ctx)\n             return;\n         }\n         /* Not defined */\n-        fprintf(stderr, \"Trying to read invalid spr %d (0x%03x) at \"\n-                TARGET_FMT_lx \"\\n\", sprn, sprn, ctx->nip - 4);\n+        error_report(\"Trying to read invalid spr %d (0x%03x) at \"\n+                TARGET_FMT_lx \"\", sprn, sprn, ctx->nip - 4);\n         if (qemu_log_separate()) {\n             qemu_log(\"Trying to read invalid spr %d (0x%03x) at \"\n                      TARGET_FMT_lx \"\\n\", sprn, sprn, ctx->nip - 4);\n@@ -4106,8 +4106,8 @@ static void gen_mtspr(DisasContext *ctx)\n             (*write_cb)(ctx, sprn, rS(ctx->opcode));\n         } else {\n             /* Privilege exception */\n-            fprintf(stderr, \"Trying to write privileged spr %d (0x%03x) at \"\n-                    TARGET_FMT_lx \"\\n\", sprn, sprn, ctx->nip - 4);\n+            error_report(\"Trying to write privileged spr %d (0x%03x) at \"\n+                    TARGET_FMT_lx \"\", sprn, sprn, ctx->nip - 4);\n             if (qemu_log_separate()) {\n                 qemu_log(\"Trying to write privileged spr %d (0x%03x) at \"\n                          TARGET_FMT_lx \"\\n\", sprn, sprn, ctx->nip - 4);\n@@ -4127,8 +4127,8 @@ static void gen_mtspr(DisasContext *ctx)\n             qemu_log(\"Trying to write invalid spr %d (0x%03x) at \"\n                      TARGET_FMT_lx \"\\n\", sprn, sprn, ctx->nip - 4);\n         }\n-        fprintf(stderr, \"Trying to write invalid spr %d (0x%03x) at \"\n-                TARGET_FMT_lx \"\\n\", sprn, sprn, ctx->nip - 4);\n+        error_report(\"Trying to write invalid spr %d (0x%03x) at \"\n+                TARGET_FMT_lx \"\", sprn, sprn, ctx->nip - 4);\n \n \n         /* The behaviour depends on MSR:PR and SPR# bit 0x10,\n@@ -7370,8 +7370,8 @@ void gen_intermediate_code(CPUState *cs, struct TranslationBlock *tb)\n             break;\n         }\n         if (tcg_check_temp_count()) {\n-            fprintf(stderr, \"Opcode %02x %02x %02x %02x (%08x) leaked \"\n-                    \"temporaries\\n\", opc1(ctx.opcode), opc2(ctx.opcode),\n+            error_report(\"Opcode %02x %02x %02x %02x (%08x) leaked \"\n+                    \"temporaries\", opc1(ctx.opcode), opc2(ctx.opcode),\n                     opc3(ctx.opcode), opc4(ctx.opcode), ctx.opcode);\n             exit(1);\n         }\ndiff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c\nindex 466bf97347..a44444ebc9 100644\n--- a/target/ppc/translate_init.c\n+++ b/target/ppc/translate_init.c\n@@ -1778,7 +1778,7 @@ static void gen_spr_BookE(CPUPPCState *env, uint64_t ivor_mask)\n     for (i = 0; i < 64; i++) {\n         if (ivor_mask & (1ULL << i)) {\n             if (ivor_sprn[i] == SPR_BOOKE_IVORxx) {\n-                fprintf(stderr, \"ERROR: IVOR %d SPR is not defined\\n\", i);\n+                error_report(\"ERROR: IVOR %d SPR is not defined\", i);\n                 exit(1);\n             }\n             spr_register(env, ivor_sprn[i], ivor_names[i],\n@@ -9216,13 +9216,13 @@ static void init_ppc_proc(PowerPCCPU *cpu)\n         case POWERPC_FLAG_VRE:\n             break;\n         default:\n-            fprintf(stderr, \"PowerPC MSR definition inconsistency\\n\"\n-                    \"Should define POWERPC_FLAG_SPE or POWERPC_FLAG_VRE\\n\");\n+            error_report(\"PowerPC MSR definition inconsistency\");\n+            error_printf(\"Should define POWERPC_FLAG_SPE or POWERPC_FLAG_VRE\");\n             exit(1);\n         }\n     } else if (env->flags & (POWERPC_FLAG_SPE | POWERPC_FLAG_VRE)) {\n-        fprintf(stderr, \"PowerPC MSR definition inconsistency\\n\"\n-                \"Should not define POWERPC_FLAG_SPE nor POWERPC_FLAG_VRE\\n\");\n+        error_report(\"PowerPC MSR definition inconsistency\");\n+        error_printf(\"Should not define POWERPC_FLAG_SPE nor POWERPC_FLAG_VRE\");\n         exit(1);\n     }\n     if (env->msr_mask & (1 << 17)) {\n@@ -9231,13 +9231,13 @@ static void init_ppc_proc(PowerPCCPU *cpu)\n         case POWERPC_FLAG_CE:\n             break;\n         default:\n-            fprintf(stderr, \"PowerPC MSR definition inconsistency\\n\"\n-                    \"Should define POWERPC_FLAG_TGPR or POWERPC_FLAG_CE\\n\");\n+            error_report(\"PowerPC MSR definition inconsistency\");\n+            error_printf(\"Should define POWERPC_FLAG_TGPR or POWERPC_FLAG_CE\");\n             exit(1);\n         }\n     } else if (env->flags & (POWERPC_FLAG_TGPR | POWERPC_FLAG_CE)) {\n-        fprintf(stderr, \"PowerPC MSR definition inconsistency\\n\"\n-                \"Should not define POWERPC_FLAG_TGPR nor POWERPC_FLAG_CE\\n\");\n+        error_report(\"PowerPC MSR definition inconsistency\");\n+        error_printf(\"Should not define POWERPC_FLAG_TGPR nor POWERPC_FLAG_CE\");\n         exit(1);\n     }\n     if (env->msr_mask & (1 << 10)) {\n@@ -9248,16 +9248,16 @@ static void init_ppc_proc(PowerPCCPU *cpu)\n         case POWERPC_FLAG_UBLE:\n             break;\n         default:\n-            fprintf(stderr, \"PowerPC MSR definition inconsistency\\n\"\n-                    \"Should define POWERPC_FLAG_SE or POWERPC_FLAG_DWE or \"\n-                    \"POWERPC_FLAG_UBLE\\n\");\n+            error_report(\"PowerPC MSR definition inconsistency\");\n+            error_printf(\"Should define POWERPC_FLAG_SE or POWERPC_FLAG_DWE or \"\n+                         \"POWERPC_FLAG_UBLE\");\n             exit(1);\n         }\n     } else if (env->flags & (POWERPC_FLAG_SE | POWERPC_FLAG_DWE |\n                              POWERPC_FLAG_UBLE)) {\n-        fprintf(stderr, \"PowerPC MSR definition inconsistency\\n\"\n-                \"Should not define POWERPC_FLAG_SE nor POWERPC_FLAG_DWE nor \"\n-                \"POWERPC_FLAG_UBLE\\n\");\n+        error_report(\"PowerPC MSR definition inconsistency\");\n+        error_printf(\"Should not define POWERPC_FLAG_SE nor POWERPC_FLAG_DWE\"\n+                     \" nor POWERPC_FLAG_UBLE\");\n             exit(1);\n     }\n     if (env->msr_mask & (1 << 9)) {\n@@ -9266,13 +9266,13 @@ static void init_ppc_proc(PowerPCCPU *cpu)\n         case POWERPC_FLAG_DE:\n             break;\n         default:\n-            fprintf(stderr, \"PowerPC MSR definition inconsistency\\n\"\n-                    \"Should define POWERPC_FLAG_BE or POWERPC_FLAG_DE\\n\");\n+            error_report(\"PowerPC MSR definition inconsistency\");\n+            error_printf(\"Should define POWERPC_FLAG_BE or POWERPC_FLAG_DE\");\n             exit(1);\n         }\n     } else if (env->flags & (POWERPC_FLAG_BE | POWERPC_FLAG_DE)) {\n-        fprintf(stderr, \"PowerPC MSR definition inconsistency\\n\"\n-                \"Should not define POWERPC_FLAG_BE nor POWERPC_FLAG_DE\\n\");\n+        error_report(\"PowerPC MSR definition inconsistency\");\n+        error_printf(\"Should not define POWERPC_FLAG_BE nor POWERPC_FLAG_DE\");\n         exit(1);\n     }\n     if (env->msr_mask & (1 << 2)) {\n@@ -9281,18 +9281,19 @@ static void init_ppc_proc(PowerPCCPU *cpu)\n         case POWERPC_FLAG_PMM:\n             break;\n         default:\n-            fprintf(stderr, \"PowerPC MSR definition inconsistency\\n\"\n-                    \"Should define POWERPC_FLAG_PX or POWERPC_FLAG_PMM\\n\");\n+            error_report(\"PowerPC MSR definition inconsistency\");\n+            error_printf(\"Should define POWERPC_FLAG_PX or POWERPC_FLAG_PMM\");\n             exit(1);\n         }\n     } else if (env->flags & (POWERPC_FLAG_PX | POWERPC_FLAG_PMM)) {\n-        fprintf(stderr, \"PowerPC MSR definition inconsistency\\n\"\n-                \"Should not define POWERPC_FLAG_PX nor POWERPC_FLAG_PMM\\n\");\n+        error_report(\"PowerPC MSR definition inconsistency\");\n+        error_printf(\"Should not define POWERPC_FLAG_PX nor POWERPC_FLAG_PMM\");\n         exit(1);\n     }\n     if ((env->flags & (POWERPC_FLAG_RTC_CLK | POWERPC_FLAG_BUS_CLK)) == 0) {\n-        fprintf(stderr, \"PowerPC flags inconsistency\\n\"\n-                \"Should define the time-base and decrementer clock source\\n\");\n+        error_report(\"PowerPC MSR definition inconsistency\");\n+        error_printf(\"Should define the time-base and decrementer clock\"\n+                     \" source\");\n         exit(1);\n     }\n     /* Allocate TLBs buffer when needed */\n@@ -10496,7 +10497,7 @@ static void ppc_cpu_reset(CPUState *s)\n #if !defined(TARGET_WORDS_BIGENDIAN)\n     msr |= (target_ulong)1 << MSR_LE; /* Little-endian user mode */\n     if (!((env->msr_mask >> MSR_LE) & 1)) {\n-        fprintf(stderr, \"Selected CPU does not support little-endian.\\n\");\n+        error_report(\"Selected CPU does not support little-endian.\");\n         exit(1);\n     }\n #endif\ndiff --git a/target/s390x/kvm.c b/target/s390x/kvm.c\nindex ebb75cafaa..6f7ebd1c98 100644\n--- a/target/s390x/kvm.c\n+++ b/target/s390x/kvm.c\n@@ -967,13 +967,13 @@ static void inject_vcpu_irq_legacy(CPUState *cs, struct kvm_s390_irq *irq)\n \n     r = s390_kvm_irq_to_interrupt(irq, &kvmint);\n     if (r < 0) {\n-        fprintf(stderr, \"%s called with bogus interrupt\\n\", __func__);\n+        error_report(\"%s called with bogus interrupt\", __func__);\n         exit(1);\n     }\n \n     r = kvm_vcpu_ioctl(cs, KVM_S390_INTERRUPT, &kvmint);\n     if (r < 0) {\n-        fprintf(stderr, \"KVM failed to inject interrupt\\n\");\n+        error_report(\"KVM failed to inject interrupt\");\n         exit(1);\n     }\n }\n@@ -1002,13 +1002,13 @@ static void __kvm_s390_floating_interrupt(struct kvm_s390_irq *irq)\n \n     r = s390_kvm_irq_to_interrupt(irq, &kvmint);\n     if (r < 0) {\n-        fprintf(stderr, \"%s called with bogus interrupt\\n\", __func__);\n+        error_report(\"%s called with bogus interrupt\", __func__);\n         exit(1);\n     }\n \n     r = kvm_vm_ioctl(kvm_state, KVM_S390_INTERRUPT, &kvmint);\n     if (r < 0) {\n-        fprintf(stderr, \"KVM failed to inject interrupt\\n\");\n+        error_report(\"KVM failed to inject interrupt\");\n         exit(1);\n     }\n }\n@@ -1116,14 +1116,14 @@ static int handle_b2(S390CPU *cpu, struct kvm_run *run, uint8_t ipa1)\n         break;\n     case PRIV_B2_TSCH:\n         /* We should only get tsch via KVM_EXIT_S390_TSCH. */\n-        fprintf(stderr, \"Spurious tsch intercept\\n\");\n+        error_report(\"Spurious tsch intercept\");\n         break;\n     case PRIV_B2_CHSC:\n         ioinst_handle_chsc(cpu, run->s390_sieic.ipb);\n         break;\n     case PRIV_B2_TPI:\n         /* This should have been handled by kvm already. */\n-        fprintf(stderr, \"Spurious tpi intercept\\n\");\n+        error_report(\"Spurious tpi intercept\");\n         break;\n     case PRIV_B2_SCHM:\n         ioinst_handle_schm(cpu, env->regs[1], env->regs[2],\n@@ -2050,15 +2050,15 @@ static int handle_intercept(S390CPU *cpu)\n             }\n             break;\n         case ICPT_SOFT_INTERCEPT:\n-            fprintf(stderr, \"KVM unimplemented icpt SOFT\\n\");\n+            error_report(\"KVM unimplemented icpt SOFT\");\n             exit(1);\n             break;\n         case ICPT_IO:\n-            fprintf(stderr, \"KVM unimplemented icpt IO\\n\");\n+            error_report(\"KVM unimplemented icpt IO\");\n             exit(1);\n             break;\n         default:\n-            fprintf(stderr, \"Unknown intercept code: %d\\n\", icpt_code);\n+            error_report(\"Unknown intercept code: %d\", icpt_code);\n             exit(1);\n             break;\n     }\n@@ -2215,7 +2215,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)\n             ret = kvm_arch_handle_debug_exit(cpu);\n             break;\n         default:\n-            fprintf(stderr, \"Unknown KVM exit: %d\\n\", run->exit_reason);\n+            error_report(\"Unknown KVM exit: %d\", run->exit_reason);\n             break;\n     }\n     qemu_mutex_unlock_iothread();\ndiff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c\nindex 293fc8428a..395872af45 100644\n--- a/target/s390x/misc_helper.c\n+++ b/target/s390x/misc_helper.c\n@@ -354,7 +354,7 @@ uint32_t HELPER(sigp)(CPUS390XState *env, uint64_t order_code, uint32_t r1,\n #endif\n     default:\n         /* unknown sigp */\n-        fprintf(stderr, \"XXX unknown sigp: 0x%\" PRIx64 \"\\n\", order_code);\n+        error_report(\"XXX unknown sigp: 0x%\" PRIx64 \"\", order_code);\n         cc = SIGP_CC_NOT_OPERATIONAL;\n     }\n \ndiff --git a/target/sh4/translate.c b/target/sh4/translate.c\nindex 10191073b2..9f95410e53 100644\n--- a/target/sh4/translate.c\n+++ b/target/sh4/translate.c\n@@ -438,7 +438,7 @@ static void _decode_opc(DisasContext * ctx)\n \t}\n \n #if 0\n-    fprintf(stderr, \"Translating opcode 0x%04x\\n\", ctx->opcode);\n+    error_report(\"Translating opcode 0x%04x\", ctx->opcode);\n #endif\n \n     switch (ctx->opcode) {\n@@ -1799,7 +1799,7 @@ static void _decode_opc(DisasContext * ctx)\n         break;\n     }\n #if 0\n-    fprintf(stderr, \"unknown instruction 0x%04x at pc 0x%08x\\n\",\n+    error_report(\"unknown instruction 0x%04x at pc 0x%08x\",\n \t    ctx->opcode, ctx->pc);\n     fflush(stderr);\n #endif\ndiff --git a/target/unicore32/translate.c b/target/unicore32/translate.c\nindex 6c094d59d7..a74d5d12a3 100644\n--- a/target/unicore32/translate.c\n+++ b/target/unicore32/translate.c\n@@ -515,7 +515,7 @@ static void gen_test_cc(int cc, TCGLabel *label)\n         tcg_gen_brcondi_i32(TCG_COND_LT, tmp, 0, label);\n         break;\n     default:\n-        fprintf(stderr, \"Bad condition code 0x%x\\n\", cc);\n+        error_report(\"Bad condition code 0x%x\", cc);\n         abort();\n     }\n     dead_tmp(tmp);\n@@ -1940,7 +1940,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb)\n         disas_uc32_insn(env, dc);\n \n         if (num_temps) {\n-            fprintf(stderr, \"Internal resource leak before %08x\\n\", dc->pc);\n+            error_report(\"Internal resource leak before %08x\", dc->pc);\n             num_temps = 0;\n         }\n \n",
    "prefixes": [
        "v1",
        "8/8"
    ]
}