From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745300025; cv=none; d=zohomail.com; s=zohoarc; b=YUwEIP9Ck2tsx62m2CDGl5AqrKu1JUKL3JQbPpcONc4AF44EcCVpsdmgAhkw7o4xSFqalbeigLB0DOMnAqkPXBZXI/C9FA4Fe+esrGJLq7ZN3RjjIptU5uGJtyBsD9JiIUu/mwDlFX6dKxn5L/a8lMJZdq0Mh9GGFiDJPCOuAdY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745300025; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9NQ7+0cp0B4BZ+F+1DEhH1LfKFVn/DFHA6zpy9bi3Vg=; b=ScqqmnR/4q040VdfPNzyC76t8I8+oSLQPhARq06h00LUSBLG+d+iO8VKyeJJsWEmt8orWSCHlKPkpV39I/GrJ4K73r0zCNlU9tdSMjPDRlQ7pJOtuW/AkryCHQcnwObFNpXRs+oIIQTn5tdHcWuEHDJ9Y+iMZTzHh2LVt0tMav0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745300025880883.313383353085; Mon, 21 Apr 2025 22:33:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76BA-0001FJ-6a; Tue, 22 Apr 2025 01:28:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76B6-0001Ed-Pq; Tue, 22 Apr 2025 01:28:17 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76B5-0007n8-3f; Tue, 22 Apr 2025 01:28:16 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-223fb0f619dso52997455ad.1; Mon, 21 Apr 2025 22:28:12 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.28.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:28:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299691; x=1745904491; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9NQ7+0cp0B4BZ+F+1DEhH1LfKFVn/DFHA6zpy9bi3Vg=; b=OKGZb1tGCjl1neV+k4kKlNonOETqQ118aBaIpxqd4qPo682z6vOFsRpzigwPnfTByP r3w97z2gKIA1J7D7Hyl0w5Dcsw6FGxPWIedu4/KK+LG8YaZadu8g98iDS3hYTYI8o9eF crPFU4OPKPPzCfNFbgiAVKZJoFu6eRlTenXAyP7KkT07qzQXUy+7NJkSNcB64NKjuTPw r/8s/troXnlhgoaqdNy8ZabTnnmnnALH2BRkmsF2jOu/DTFg1BmNiVhSz17OMMLFw9lm ZCV63p8iYW6y0U6ZTdBeFoBt9S60yH8CkqcnLtwZRbxxxyZgqANdiU3g9MT31nxWMIxU IKAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299691; x=1745904491; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9NQ7+0cp0B4BZ+F+1DEhH1LfKFVn/DFHA6zpy9bi3Vg=; b=MzO6jtgGnTscYRqb0OOO2s8FHUt6v+FZ7TnyeZ/3+msm5ifdDqx1jYzNPaUc3+vEGH boka7uqyivYSEAY1vT+lS4+CkJmKQWwePncZCbNRHmObm7+MyLBNCTFv4Vu8EJb0XzaZ LT9i5yKyJQYdhvLF5dGN5CQxYWFX/ev/z1krdWZE+ssnCxW6+5Q1jKE1Zk24crG8GW7H /vCNSz/nZK/xQVjaRtXkW8+AsdxKZju/Iz6fE4ltiEMtGwkB8h5oDwl1j1k+hkV8/FxR 8Y66hEtJRMqKd7iygQouL3iiEYcJ05mfuHOvCp/sYkIIwE549v1tXMmD38fPS6WHg8A7 T5cA== X-Forwarded-Encrypted: i=1; AJvYcCU4RF8pBp1JZb5mDFpQ1j0GcfiKoDhrf6XeLW4CEI2z3p/5CkwypDQr79TLpV9aGP8TXKR0b/W6cg==@nongnu.org, AJvYcCU5GtzUSubiR/JdGsGBj6t7zGbC4KaAhF3r313ihXAGLdVJL1BwaYDIiK9zjd2QBH7MydKaaS22KXNR0w==@nongnu.org, AJvYcCUDYG+81o/3WruZzjZaDl7zvmDiz3QM9TmTzWFq2fQgXL6k9BDH/CyCYcgkWk8uvtTqr7DQv9UljNY=@nongnu.org, AJvYcCUUljhEHIWBOwSxM/csCtbgY029ccj7f8aCWWCiP2Oozs2HQC9EEmImMkbqr7jucsb5teBJMewcD5e6tQ==@nongnu.org X-Gm-Message-State: AOJu0YxwgMeZkGA3tfaQWME8ARJMDh6dLriyO/E7qym47R89xPErOCwX sWDZP7JETuQMWj7/rwXJ70KOIJJ5k3SxBZYLnBM8Kk5FLev83BIOvNgQeHs9 X-Gm-Gg: ASbGncsVkqt/r+OD9LVm3PHNQcnHO6yVNnYie4LZkVybBc/JvDY53WAP2WPJzM7/rhG U25ruZVfM4TjPCVJqteXzqZfYDImTwddMyP4HfdBd9sNHniBmYLumuu5x0g5H/IQONz9zyeiS+B eh090vBgWSyQHKj2mR3NwWqs5/PSJLmzuzWITHIMpStDFlK6l9QwSsTzu050PvvvWF+nS/Wp4G5 9bSI+uOe8lzhxDdzvTpyH+fRHWR1U8njo2ypMudPwDblwHYaPvryw2mA/efhDw1zK2hrlYgS9RE kJsgH9F3w/4OEt/dugvjMhuoCHZ7WRHMgjkPEXq5QnaqHxyeAo8ThXOtmDE= X-Google-Smtp-Source: AGHT+IFQZuSA5UEEZIfqmUdfgADL4wO5YWoqm3vdhDf1L+aFr2jGRlrpu12P1/0vzKEaAX8X39f6sA== X-Received: by 2002:a17:902:d4c2:b0:224:de2:7fd0 with SMTP id d9443c01a7336-22c535b2b3bmr201215225ad.25.1745299691273; Mon, 21 Apr 2025 22:28:11 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 01/20] hw/core/loader.c: Fix type conflict of GLib function pointers Date: Tue, 22 Apr 2025 14:27:05 +0900 Message-Id: <26dfe9191154ca65dca6ef51ce768ad2a0c30d5f.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745300027269019100 Content-Type: text/plain; charset="utf-8" On Emscripten, function pointer casts can result in runtime failures due to strict function signature checks. This affects the use of g_list_sort and g_slist_sort, which internally perform function pointer casts that are not supported by Emscripten. To avoid these issues, g_list_sort_with_data and g_slist_sort_with_data should be used instead, as they do not rely on function pointer casting. Signed-off-by: Kohei Tokunaga Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/core/loader.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) V2: - Updated the commit message to explicitly explain that function pointer casts are performed internally by GLib. diff --git a/hw/core/loader.c b/hw/core/loader.c index 2e35f0aa90..93a8b45d28 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -1410,7 +1410,7 @@ typedef struct RomSec { * work, but this way saves a little work later by avoiding * dealing with "gaps" of 0 length. */ -static gint sort_secs(gconstpointer a, gconstpointer b) +static gint sort_secs(gconstpointer a, gconstpointer b, gpointer d) { RomSec *ra =3D (RomSec *) a; RomSec *rb =3D (RomSec *) b; @@ -1463,7 +1463,7 @@ RomGap rom_find_largest_gap_between(hwaddr base, size= _t size) /* sentinel */ secs =3D add_romsec_to_list(secs, base + size, 1); =20 - secs =3D g_list_sort(secs, sort_secs); + secs =3D g_list_sort_with_data(secs, sort_secs, NULL); =20 for (it =3D g_list_first(secs); it; it =3D g_list_next(it)) { cand =3D (RomSec *) it->data; --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745299738; cv=none; d=zohomail.com; s=zohoarc; b=XDiTuHeS8k7uAMqLeY8s2cxKcTc1weQ3sMy2CUPYsdPpmO07QGnFLvFKeFfCydXKa/tOhhcrMwmHG/HRp+/5wBQxmG8ngpJbDgX0d7qEROTPTOf1vIk/cZ2zggdEYpEX651aUIxicwJEl9nJWvi7040SchfGxfzDLeF2wA/NMBI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745299738; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=c9YjZLFky15fQ25eN+PsZB2kxxrFQ2yvjf7JgWdhp2A=; b=U03lxySd7Q/EynylxSdMEBunG3i50rD6+x0KrLNsXuKCwMskAfrEXoD9G/ELgL1QErxqGjOA/Am7Sl97+28ogIeySQxFq+vncsASXp0z2mWezphiAXZCnXYWOhmHrg1YkMjvahej1PilABU3FnWmMFKqFae/rfFWIeReEQkj1ko= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745299738018590.637905341387; Mon, 21 Apr 2025 22:28:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76BF-0001Ii-Et; Tue, 22 Apr 2025 01:28:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76BD-0001IK-Oj; Tue, 22 Apr 2025 01:28:23 -0400 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76BB-0007o3-RU; Tue, 22 Apr 2025 01:28:23 -0400 Received: by mail-pg1-x52c.google.com with SMTP id 41be03b00d2f7-aee79a0f192so2950956a12.3; Mon, 21 Apr 2025 22:28:20 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.28.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:28:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299699; x=1745904499; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=c9YjZLFky15fQ25eN+PsZB2kxxrFQ2yvjf7JgWdhp2A=; b=IRy/TvwRS3/jMLUElwUY4X8zgo/cBp6iStbIEyaIot5CFfS7Sa4e2qf6k0UwXrpD4h AdUxagGCMtDlxKt2MI3ibOhdehSciL3v9GJv3A2sfgzf+SXD1Q0YUsfCY3pjDek3y7Yp Mmxg/TTlWtVWpcTUqR+esq5XriewL6ic4YJxISJj/Noj1nqXxDQlJA2LJ1ndeS/Ri40N dkrGN6WI/GjdClkoQzh+V51ZB4cTBOfE/a1rRSZtOQYhAOlwI0UvYHqd0eWscmZqfh5H y1l9McH0NBxee/6IHQn7M5FeIy85JTLfHxkaNyKx2lyisj4oiqEGdEwLsoj4pnYOhL8U kbsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299699; x=1745904499; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=c9YjZLFky15fQ25eN+PsZB2kxxrFQ2yvjf7JgWdhp2A=; b=MExIBJkQBgRmcLBaXSpE6Yg8dL3afaGeb9zpEXlPS8aBTCCvANJxMXA6tyECDxhYlL gijCJangA8NoQs9XURNFyHmQEB4jmanIr/QndwAgvWZXGNgUgaWD2Js/SP9wyQgTGcQp au7lNvLO93GzZoa1jOiKSDQSuA/s6h1SCWzZfhM8xmUo/gnydX9W/La3nX+3kNnbzhKw mt1p+A+ZQ/1+51ftE1kpMizju9wIzz7xEbFF2MqHggdAjoUnIojQqkOmv4NgEhhT79mf vCmxRbKdTowe36kTAz4Ka8F81nHOU3BIEvQiJ4ZFJ4/aYoWz2WjBdPkewIYHepP5/AAu uc2w== X-Forwarded-Encrypted: i=1; AJvYcCUcwbzzQoagV7RDxYlOMI9hI8cHFEIFg3e6haQCpJt08u4//GF+R6XmqTV9a52uDrzFk0f2LoGgwtaU+Q==@nongnu.org, AJvYcCVS54wOXYveWgDdX7vTyCroR9mq7l8QfEHJ6JZArH8Cvk4ieV8POOUP8pavlKC89mQqkWhptPTtHCA=@nongnu.org, AJvYcCWDxEH3qvD4upRuejp4DJc1JF/xP9vtNIX5Zbjem6vazPGwrXjqdfuc7sbY5fCftiwyvbccxG/4zw==@nongnu.org, AJvYcCWv7tP2JJyMEt3IhL2X0G6QQIsEZ2+Rlj73fs378LbsVzefob4/LxUwyfD/EvqeQwEcKXNI/nvcn//V3w==@nongnu.org X-Gm-Message-State: AOJu0YxjGAipEsN83P8q+LPXDxAOGiq9Mp3XLZ84kJU0WYJ5VoRGnY/M g8FfUg4Fba0/aSGKpycLvAg7C1g53mPZWgr0VTEmNonlLyS8hpOXJx4C6qXV X-Gm-Gg: ASbGncuqtnNfYLua2i1L/keUmoxK7gVkLxB9XeF2EsEmZLsWF5OcMvuMuC7CGqFADJy 8lE9K2EcgRycmlqilzTdqauCeTSQszx3sA2cTlDMZ6JOXcHd7rlpjFMiohdoEs+nItrdAUWJBm7 WQJRxQ7SZmbFLzg8/6q2Lj3r6BKBjc+d+cuQQf4IffPoi+IMiMH+zFJ0YJYqTSTub8mot3YeGAP lUwd7Oxe3XvAtXI08YstHeoPpaf/bPzU4fRGDRVQSTQttS8UELqEEb3Llfc/ghc9TYAY29zQqT0 T/cJdoFzUNXwwnK3VF4f6rdSsR5NtjPl9k5KHCtOnCAutaC1YvbfRVh8iSw= X-Google-Smtp-Source: AGHT+IEclO4OoJigEUfTejjyH3NIpSNJXpyhl1ePgWwzpOp+ffb6EGFjIA5uyx5Tw2/HzCaV2+Jtpw== X-Received: by 2002:a17:90b:2e48:b0:2ff:698d:ef7c with SMTP id 98e67ed59e1d1-3087bbc9349mr19070468a91.29.1745299698887; Mon, 21 Apr 2025 22:28:18 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 02/20] qom/object.c: Fix type conflict of GLib function pointers Date: Tue, 22 Apr 2025 14:27:06 +0900 Message-Id: <8ca13f4e2b9eba9d1f6030b0afb442a24330e463.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52c; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pg1-x52c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745299740989019000 Content-Type: text/plain; charset="utf-8" On Emscripten, function pointer casts can result in runtime failures due to strict function signature checks. This affects the use of g_list_sort and g_slist_sort, which internally perform function pointer casts that are not supported by Emscripten. To avoid these issues, g_list_sort_with_data and g_slist_sort_with_data should be used instead, as they do not rely on function pointer casting. Signed-off-by: Kohei Tokunaga Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- qom/object.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) V2: - Updated the commit message to explicitly explain that function pointer casts are performed internally by GLib. diff --git a/qom/object.c b/qom/object.c index 01618d06bd..87f84bac41 100644 --- a/qom/object.c +++ b/qom/object.c @@ -1191,7 +1191,7 @@ GSList *object_class_get_list(const char *implements_= type, return list; } =20 -static gint object_class_cmp(gconstpointer a, gconstpointer b) +static gint object_class_cmp(gconstpointer a, gconstpointer b, gpointer d) { return strcasecmp(object_class_get_name((ObjectClass *)a), object_class_get_name((ObjectClass *)b)); @@ -1200,8 +1200,9 @@ static gint object_class_cmp(gconstpointer a, gconstp= ointer b) GSList *object_class_get_list_sorted(const char *implements_type, bool include_abstract) { - return g_slist_sort(object_class_get_list(implements_type, include_abs= tract), - object_class_cmp); + return g_slist_sort_with_data( + object_class_get_list(implements_type, include_abstract), + object_class_cmp, NULL); } =20 Object *object_ref(void *objptr) --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745300041; cv=none; d=zohomail.com; s=zohoarc; b=PoOhKqdyijnz3+d6fJgXMOsTbu5mc+ONGPDL5vszrXE9u/EbpeJiYGUgcBFkLFrujBJ8QhE51sf157ubJ6mGQoO6G+bnxnUa2iU3dG5NJKV6Rmxc2P2H58YNs+ZhNY05Kk64lATS8fsK9Dz1HtyM9vPdpbLo5wNbTaZpYFa8fI8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745300041; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eLDEQ4UoxB4KfXTxMudZLa30Bn1KGXwL+PXWMvv39yI=; b=V/fdQYBg1nZTCcJ8PcAdbtVlQT98w3sbfPcxsepyQttvqOB7rmt5fgpTZ82l6hhw04r2UbXeviVDQfWWEmNFXcjVPjjvti2ftSH18CzKvQaLepVCTS3wKq32HsdOajZvxUa1v+blfZqq/WfemoWmTbC4ZeR7mQaYLLfWD47lP9k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745300041371757.6417940930069; Mon, 21 Apr 2025 22:34:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76BN-0001Lf-14; Tue, 22 Apr 2025 01:28:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76BL-0001Ky-EK; Tue, 22 Apr 2025 01:28:31 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76BJ-0007oS-No; Tue, 22 Apr 2025 01:28:31 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-301918a4e1bso4014645a91.1; Mon, 21 Apr 2025 22:28:27 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.28.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:28:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299707; x=1745904507; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eLDEQ4UoxB4KfXTxMudZLa30Bn1KGXwL+PXWMvv39yI=; b=SkwpZzdwfHZt6L7nhhB06Cpr+bAvXCdMR6YaTTkUJZJ1EPlWbBOXdnFA/VquKnX1jJ 1gsCqlgzjnEzE2PwCGf151lNE337Ze/Ddz6lqKr/H4LmWnTAsSc7SL8v1HvIZPCROEmQ 72ijCK+gu6SCWaCR/4bd0HCLxX3+bzWOUDZSnXcHLXdPeL/RD+MG90WsnmR9/s9JiSLK +zry88IB62u4GrPzTE+sOPVGNUo9+UCLGyvU0aTBv2KL0JrZvoilUYNVgP8odhTUURMc NFIdzjJ1i3kueg9M4eWPkZ2SgF2J9R1Pr/cHDSFiqfqExJl1fzb/33RC6sUKTHvMyGw7 oI0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299707; x=1745904507; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eLDEQ4UoxB4KfXTxMudZLa30Bn1KGXwL+PXWMvv39yI=; b=X8Z0r++iDonXKJAvwNyrZy8IHiuDXWxtersAtmNWmQYidgMl0KAJJ+mj/knKOsMwrt EDcGzST2kpxMlnZregE6wu9jpwq1iR+xgWAVNH7w2+UVDD2S7EN85G5EGWQPILyWU2Cs aLQ+/xXso7i7VYFr4nXNK0h72IlIATkhhXgxnUiFmyvAnW0b/uXFoAX5SNJHLFAwCu3j g3J46CfDZcZekV5T2r6JCZh5/dpFbHzMQ/KTh96KObjG7999M9Dv6CM6g5Qa0oIfrkHT XzbGBYh0zoWusXvpNfU6vZkLTFG7z+S1+y+pwOXY1IytpXX/w2im/52f7UHeNdIfJQ4l E9dg== X-Forwarded-Encrypted: i=1; AJvYcCUVY/eW44rSYQeNA6ZHU1xvaBwXVWUfR9uX6nOQFzpZ/GQ5ThaWlLRmAXDuPupIEa5/EzJVDDnONw==@nongnu.org, AJvYcCWIobK9LzhIuOwZEVqm+XcHq5agEAxUvJf1iK6dAjHqFr0zPP/qgqk+Y+nLBxg05wtL0mSysTDPl/20FA==@nongnu.org, AJvYcCWuF/fP30vjv2Ah7+iqwLV3/VXEblzIUC0IxiSbEgcQM02NlakGJLHXUS0cmtdtPIH1sv4Ayz1yLq5tmg==@nongnu.org, AJvYcCXEjxb3NvgFdYjzvtAQ3EuWwrueHbUAcJ+zdKrKaaCxocwlDfmimvpBJqZcaP+AiOph1wjk6DsszlE=@nongnu.org X-Gm-Message-State: AOJu0YzQpGe7y+uJuXs1pzSMWunZBYxaMiKVdqmYbF4fnfrQVipHpnQ5 49weoZVsvM57IMp4eg7Lt0Aw0E49COINgJG4Tvz5CTRhfMI+8/EPGHJZA+z2 X-Gm-Gg: ASbGncsxA+8rwLvRv3D5BEFJ13urupIvLBFdxzU7yUhWZnYys381oT9t6flklEuXZGU wCzHeZHLgqfKS1udvixuyq+Hujt3SasSRFlG8B1qVLKUDuTPPY3lIYKc9bxS9qehdWHqrGFJaS4 Y0dBZw5hW1aXpPbZMOf4Wl+9uQGnifLpnCm7SCakLjBlhmNt42nxrhAwES6lLlnxYlnilkMJQGK PNHd5P/bN5Tzq1HgFbBFIiyJRkTc9bBMjPwLVRADjUzc9u40PoSILi8hr3nkgrq/EtwSIEmuszp ntI0zc0QBO2AEDU3yhqzECot0L3Aw7d7inO6GYC9NItEarxsQFToX2SCeMIqyXESd3uxpw== X-Google-Smtp-Source: AGHT+IHIGGhSXR6KJuuf/VKfP5bkoJ6cloNLfBSB2N/q5TArXIo4hjgZGBnttNj35T0H4joj0zPGFQ== X-Received: by 2002:a17:90b:1f8c:b0:2ff:5ed8:83d0 with SMTP id 98e67ed59e1d1-3087bb631d7mr23227589a91.16.1745299706596; Mon, 21 Apr 2025 22:28:26 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 03/20] system/vl.c: Fix type conflict of GLib function pointers Date: Tue, 22 Apr 2025 14:27:07 +0900 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745300042587019000 Content-Type: text/plain; charset="utf-8" On Emscripten, function pointer casts can result in runtime failures due to strict function signature checks. This affects the use of g_list_sort and g_slist_sort, which internally perform function pointer casts that are not supported by Emscripten. To avoid these issues, g_list_sort_with_data and g_slist_sort_with_data should be used instead, as they do not rely on function pointer casting. Signed-off-by: Kohei Tokunaga Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- system/vl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) V2: - Updated the commit message to explicitly explain that function pointer casts are performed internally by GLib. diff --git a/system/vl.c b/system/vl.c index ec93988a03..8d89394b45 100644 --- a/system/vl.c +++ b/system/vl.c @@ -1523,7 +1523,7 @@ static bool debugcon_parse(const char *devname, Error= **errp) return true; } =20 -static gint machine_class_cmp(gconstpointer a, gconstpointer b) +static gint machine_class_cmp(gconstpointer a, gconstpointer b, gpointer d) { const MachineClass *mc1 =3D a, *mc2 =3D b; int res; @@ -1573,7 +1573,7 @@ static void machine_help_func(const QDict *qdict) } =20 printf("Supported machines are:\n"); - machines =3D g_slist_sort(machines, machine_class_cmp); + machines =3D g_slist_sort_with_data(machines, machine_class_cmp, NULL); for (el =3D machines; el; el =3D el->next) { MachineClass *mc =3D el->data; if (mc->alias) { --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745299779; cv=none; d=zohomail.com; s=zohoarc; b=V8XUJdq2kqu9Q3XrADdXF6PHcUS1kCjgCMHNT6ImcEgBIvtrhUe+E4TYRryOUAjiYdoyskD0cDQ/jwy3uExahtva4MOo6JNdMKlgdmY8VnmUD/lpYGeIi35lRwHc9ePUuwW19AKHwj3mBX4emBxUX9TJcAaXf4bBHqnHZnq3Qt8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745299779; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=gefJdCUJSQLppbT4glOadpiD7A44LdH0heN3S2uo/nk=; b=ieFbYQ9y7T3o5hNN0uyJAGtvX4WLri0s79yT7E+NOVSpQyyHrDwkdwIBPWhkDG5lb/waU/weXC3Ovrs3F9N8jzHgptHvb1jRjKbOcJthA1UoVslXA8BRk6R7+JGsme0dQO3F9XeAzK3kmjEBDlWGG2z3xSl+4qWPunARRA8XjKo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745299779000357.3212596522585; Mon, 21 Apr 2025 22:29:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76BV-0001P3-P8; Tue, 22 Apr 2025 01:28:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76BT-0001Ni-Iv; Tue, 22 Apr 2025 01:28:39 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76BR-0007p4-4V; Tue, 22 Apr 2025 01:28:39 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-223f4c06e9fso39860055ad.1; Mon, 21 Apr 2025 22:28:35 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.28.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:28:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299714; x=1745904514; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gefJdCUJSQLppbT4glOadpiD7A44LdH0heN3S2uo/nk=; b=mknTGNJ2mc0gQmnRYvSI5g4CiEI4d7Kn49/AQrSrupQf+uI33oQjpYvYnlIVE4g5A5 acgxsgbD5ikHY9CEa5JJhOsa/5J4d67VGYIq6cf7C7ERt2xemzaiByhZ2uVa17PaKmdJ r/g+YP/JOeBQgefwQUS858/oxGaknTCUl0AbBBfmmwUPNCOLcTZxRJm6ehR95UT6HUr9 hK4uRwc/pNMD1V65tV5Au4hoGvZhgCXoGxO+gfs61vzn1I/oumWZhzPE1t8o5ugnZfXX n9lEOSM8wh4NhAzmYhl1nw9TXYpXI4ks6mUA81bDQTiaNm3Hp5b7RzwM0fY41YkEDCCL b9ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299714; x=1745904514; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gefJdCUJSQLppbT4glOadpiD7A44LdH0heN3S2uo/nk=; b=nHCc4CZrUzgPai6LpgZKbSaBSDno2gDpnADKPZz7FP22Hzyg+NOE4bRaN23Istb1Lz I3QJ+FTvU1sI2RjLLta3Id+ou0SNbNRAU1CT1eva968LpXSd8Bohvw/yR3TtdmwhHifu VrWtwk5BsAaTQ1HsFHH8MEs7EhY5DREWshPQhc+6EOMkPhOJF1fETcf8JpLnNSK+SAX0 6FwtfjxP6Gye/UiwCudN40JZshFa+nBk8F4LLha6YDI4YlefUyFjj9YOX69+LgF6MfAx cRuSh/eT/4pghHr7OJTQrh4oCUD59RAbNCMNO3kPIEazCJOmqEqexBxzMrz4QmFYegID KiTA== X-Forwarded-Encrypted: i=1; AJvYcCUeHxBnU8e9EitsnXu/RvBEyIbsZuyYS/XW3qYs9+5vkVPlSgDb3XCe8nUXSteWYV42wpXK3nKs0itjgw==@nongnu.org, AJvYcCUlDLyafjht3Rbf53vWgWSVAgxmBViSMv6vG7eVJOdGyTyOfAdIUJzdH1upDJHzj0uyYh3jCB+MFg==@nongnu.org, AJvYcCX6jux7xmIftiHR4buOfx7WsgQLQLcGosdl5QVe57ljUq3fTH4510EDVda83gKrOZ6vUJya81b2Vks=@nongnu.org, AJvYcCXsgQX10vEbebSPwxhCHZ9uWC4z5jSy97QXxnzUz1dD5jFki1O3PWC7i0tV9oEO7Bef2/xrNxKrbttevA==@nongnu.org X-Gm-Message-State: AOJu0Yy0PRTFbm8L0zXvv+suT1/SG+LhcAY2EO666fX8UFiI3LfD/WqY 1/7yJwZm/mFAI8F79CLtdsetHWuh3ulK3zqJZbY0PcSM8Q21SXtfq3Shzl47 X-Gm-Gg: ASbGncsHKSFc/DKnxhnm8Wpsg5S2EtRP7/65bDIvcveMxDnuKov4ETDPjFA9gvzOU2w 426gqGVi/DFgvBgiawQLQOlLibGv8CiToAAntv6NkRiCM0OYC13v80DCbyaU8cI4eDE/V4M4tQ8 CGXA70Cy9frrjbkoD3AW9oeQihPyIEe213dayywNISPeAbSkbzYAUFDC8Ah13XWv8rKvF5xxaP5 YcoVMw5dzvNEipkexCrGuLfrV7fcoc51KQLupzCcQ4cO+VmvdpNFu6a5TU3X4eya9oZtF1++NkB w/5fuhtlteV6hdprD4ENH7JWrTrCJBKvHopFcct933/zdqXg10t5LLVmhJ4= X-Google-Smtp-Source: AGHT+IGVYb84wyPd+77TwHY4qOu4PjCNVs7VMfmGdBcJLq1yY+ZnLAJVW3AbGcK0d3SEFuBDPWyZaw== X-Received: by 2002:a17:902:e884:b0:221:89e6:ccb6 with SMTP id d9443c01a7336-22c53f17338mr213065555ad.25.1745299714132; Mon, 21 Apr 2025 22:28:34 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 04/20] target/arm/helper.c: Fix type conflict of GLib function pointers Date: Tue, 22 Apr 2025 14:27:08 +0900 Message-Id: <01b21c849b459660453eb905d12ff0da4c65f53c.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745299779645019000 Content-Type: text/plain; charset="utf-8" On Emscripten, function pointer casts can result in runtime failures due to strict function signature checks. This affects the use of g_list_sort and g_slist_sort, which internally perform function pointer casts that are not supported by Emscripten. To avoid these issues, g_list_sort_with_data and g_slist_sort_with_data should be used instead, as they do not rely on function pointer casting. Signed-off-by: Kohei Tokunaga --- target/arm/helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) V2: - Updated the commit message to explicitly explain that function pointer casts are performed internally by GLib. diff --git a/target/arm/helper.c b/target/arm/helper.c index bb445e30cd..05793a6c97 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -220,7 +220,7 @@ static void count_cpreg(gpointer key, gpointer opaque) } } =20 -static gint cpreg_key_compare(gconstpointer a, gconstpointer b) +static gint cpreg_key_compare(gconstpointer a, gconstpointer b, void *d) { uint64_t aidx =3D cpreg_to_kvm_id((uintptr_t)a); uint64_t bidx =3D cpreg_to_kvm_id((uintptr_t)b); @@ -244,7 +244,7 @@ void init_cpreg_list(ARMCPU *cpu) int arraylen; =20 keys =3D g_hash_table_get_keys(cpu->cp_regs); - keys =3D g_list_sort(keys, cpreg_key_compare); + keys =3D g_list_sort_with_data(keys, cpreg_key_compare, NULL); =20 cpu->cpreg_array_len =3D 0; =20 --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745299767; cv=none; d=zohomail.com; s=zohoarc; b=LmisHql3ub2HT60jOBn/oRtqwEY6KGXb4n2CrJ4IXflUeh/nLXz9NTY/D0/uqYuUP+5yWoWeRfxX1/RUrv0C2xQ4oe80a8qAI1MHdUyvn3a6hUpPc+rjXVz4g9kplnAf6JRe4IYaz7yD9maso7p3m21VLDUyVbjTqXRxR4c90lI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745299767; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hr9XXQB6Zuvd+iKttpiqSUP78igtxru6uVhXXPY7Q/k=; b=i7B+aXIqtlq0w01nrd4cvYfHdgbbiYemnCvosmGh5ebVrYl6NhJtV4qILyeQGvo2JCTT+A/YhsF+ieZz6wl3V8YKC3WLukAt6Zdzrm7A7Rbq+QIuSWCBrqLNww3mM3DHgMRkVf/wnHLJUzhobFFH+MiIbajcLxL9M8cvgNrsKhU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745299767382759.9693783939354; Mon, 21 Apr 2025 22:29:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76Bc-0001S8-M1; Tue, 22 Apr 2025 01:28:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76Ba-0001RE-VO; Tue, 22 Apr 2025 01:28:46 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76BZ-0007pr-8Q; Tue, 22 Apr 2025 01:28:46 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-22409077c06so64333465ad.1; Mon, 21 Apr 2025 22:28:43 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.28.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:28:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299722; x=1745904522; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hr9XXQB6Zuvd+iKttpiqSUP78igtxru6uVhXXPY7Q/k=; b=dIq7MrwkWCfUkjKd5XEk8Zywlaky8lKU1Bi2Iv4BiAb4A3OrzbovLt+iFq6Himz28l 6uthAEW6b18y04McXB3TSdraAu+Mo/vE5lPnMvcuePN2EpS6PkwehjyF01zBXM+nFuMG 9aOuFO45Vt3BY0Ayq7a33WOiLuXHCuk7I4DsqT1TWhTR+jZ0Ud/rpDmXLOFLtKZaYePx 98kNKSTGUhkiDXeozaqI1NAvFzicUl0ira7i1mjTbFwqUd+ivciMU3BDK3McJKjXCceC W5J/aBuFU7HV3DN0bLXMk7FH27XTeXdxrWuETVN7rRgTy7hc91nmlQ6eXLop0uZItSEa 9Ivg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299722; x=1745904522; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hr9XXQB6Zuvd+iKttpiqSUP78igtxru6uVhXXPY7Q/k=; b=PCfsxM/7aKcISqwM9F1hTVgoHfxZgvNMy60q2y6jAICz6hW9tc7j4MjX3SAWWdZC7r LjbiLknXWqj7ZO9NQG07kkc73J5aevd/6CaRmwSEy0bJVa6aTyFrgZo656fDAeC8CHQq /CIhZlmaJovdPoQmMpH1IWXT3qRmnpva1Gebc4EVudAhB+AQhtsbmbk1Bd0/VQqCitUJ HmpYxRq8hPw+UaWTOSsaWSml8s7bW0xU+MvDyjA0L6iYzO4rluIS+tEdIJ7q4tlKOqwD kxN0aybPzrzvoiS7zmSgdoG4RC/DH+4yaAekIq9wXge8dTSfBSjtR4sVdFoIldyIitDa EcRQ== X-Forwarded-Encrypted: i=1; AJvYcCUuaPN46O36Ia+mzKYLGcOJc18D/ZYU7rIt4unYN7w/OQ5d1EeDSnhPSowy5gW4BDiqBvfNUfp5kU9j5A==@nongnu.org, AJvYcCVHW+6KyiOi8jjqj3X/tz+MmpCJy77EOu6itR/PnuG3O08vWa3CibE6TiAFZdeeHtZ740St+kOwqiCYkA==@nongnu.org, AJvYcCXSgpL8DfzfvhmPrA1JbzRCFZU0TuUBVZz/tGHoY2/OQy4mNazk8rCNByewoS7BxzXQ2kh8OdtHYgE=@nongnu.org, AJvYcCXTTnGEv7Lygudal/yROBJ08xl5oRejSrvmEKrJA7YpviUZWqEhKFjCRv4ae1WED0vpl/KBgtg3JA==@nongnu.org X-Gm-Message-State: AOJu0YwERcWinFSo/s9TlOSFXp72Xdshwy/+hMJvOhLSBUpqLbXe/NGK 0ojAK73yU5DxDYFaCj875EWfmc9kO9gsfUoFP+skXQa5JSwdQ4pqBaIMTIqd X-Gm-Gg: ASbGncvfH/H+a3bHaR6Cb3CZe3gqm3FHiGkqKlXto3l/4z2hJ8p0U2Yduh0gwCU+k9H gQB0tsYsggYuArUHTkHYqtMoipKVf379xkkETXIRVJg9t0ukTUCdUipuMYI4YCB6UliaTz5YQjm eyWs/DFH4OfVdpvLaPDMaip07MO+Jydw/b/LOCjFLiOScwcEAhQ4izJ0xn0F5O0IBoUoe5mxB/A HV+LoNfUvAPFuy/8GL3VaPL+cvS9CxTf3V1nInwOwIfI6LRU3NjwUki4ZznE4g0lQLSpo8yPLt9 Ko/vCgXkNT4voTUYAvO5rtZC2h3Z6aqOeCE/jPDV/WLn4caIk55CRI1g11DEWQHxr27KMA== X-Google-Smtp-Source: AGHT+IFEW2NT+cAzggJEpQL3dt6BcmbrJbdC6ZiC0A9EVoOH3QZflzMIs4u+eWmxfq5VVr0igUgIOg== X-Received: by 2002:a17:903:1b67:b0:223:377f:9795 with SMTP id d9443c01a7336-22c530bbe9emr210573765ad.0.1745299722329; Mon, 21 Apr 2025 22:28:42 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 05/20] target/i386/cpu.c: Fix type conflict of GLib function pointers Date: Tue, 22 Apr 2025 14:27:09 +0900 Message-Id: <98cee904084f66762b6ef9fca4248f1c8c995d3b.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745299769940019000 Content-Type: text/plain; charset="utf-8" On Emscripten, function pointer casts can result in runtime failures due to strict function signature checks. This affects the use of g_list_sort and g_slist_sort, which internally perform function pointer casts that are not supported by Emscripten. To avoid these issues, g_list_sort_with_data and g_slist_sort_with_data should be used instead, as they do not rely on function pointer casting. Signed-off-by: Kohei Tokunaga --- target/i386/cpu.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) V2: - Updated the commit message to explicitly explain that function pointer casts are performed internally by GLib. diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 1b64ceaaba..2c494e4b0b 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -6226,7 +6226,7 @@ static void listflags(GList *features) } =20 /* Sort alphabetically by type name, respecting X86CPUClass::ordering. */ -static gint x86_cpu_list_compare(gconstpointer a, gconstpointer b) +static gint x86_cpu_list_compare(gconstpointer a, gconstpointer b, gpointe= r d) { ObjectClass *class_a =3D (ObjectClass *)a; ObjectClass *class_b =3D (ObjectClass *)b; @@ -6247,7 +6247,7 @@ static gint x86_cpu_list_compare(gconstpointer a, gco= nstpointer b) static GSList *get_sorted_cpu_model_list(void) { GSList *list =3D object_class_get_list(TYPE_X86_CPU, false); - list =3D g_slist_sort(list, x86_cpu_list_compare); + list =3D g_slist_sort_with_data(list, x86_cpu_list_compare, NULL); return list; } =20 @@ -6304,6 +6304,11 @@ static void x86_cpu_list_entry(gpointer data, gpoint= er user_data) qemu_printf(" %-20s %s\n", name, desc); } =20 +static gint strcmp_wrap(gconstpointer a, gconstpointer b, gpointer d) +{ + return strcmp(a, b); +} + /* list available CPU models and flags */ void x86_cpu_list(void) { @@ -6326,7 +6331,7 @@ void x86_cpu_list(void) } } =20 - names =3D g_list_sort(names, (GCompareFunc)strcmp); + names =3D g_list_sort_with_data(names, strcmp_wrap, NULL); =20 qemu_printf("\nRecognized CPUID flags:\n"); listflags(names); --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745299820; cv=none; d=zohomail.com; s=zohoarc; b=bM6ecywClflGCsR5R5qCc7y4WPhyHyT+8eMkFZFJ1dGtatkMdMKn2fl6P7OzXbPfMIlBvvSmRFcs3dERcXHOUPDw1cHQz4xeFNSuOSjVUcH28clgP87szf6QjjTLVwJXxD1eSelVrdprIgpid+bBN/54BCtu6SPgY1lk0v6c4Ys= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745299820; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=N77jI1TJkHkxuSuEB7FQGv9pn4PKhNEGgbsGxqAnoxA=; b=VhRmH78F1i8eF0vVyVctUkQz6E8d//j5XLTKus5Uvs+JDK0ciyxGHG+/DEZvLEvhRRRWIM/Fx1epf0WjZgmvbfLxVEsLHxUMhZ0L+IBLcWxW/8PX4AK+DUKxkm2KH9cKld5amhgtC/L2QDrQTuhLXEi3ry6P/l2JlvmZkK3Eh5s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745299820765856.8360904303103; Mon, 21 Apr 2025 22:30:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76CI-0001xb-J4; Tue, 22 Apr 2025 01:29:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76Bk-0001W0-9P; Tue, 22 Apr 2025 01:29:00 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76Bg-0007qf-Lh; Tue, 22 Apr 2025 01:28:56 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-224100e9a5cso54450415ad.2; Mon, 21 Apr 2025 22:28:51 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.28.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:28:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299730; x=1745904530; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=N77jI1TJkHkxuSuEB7FQGv9pn4PKhNEGgbsGxqAnoxA=; b=jkIjgHsAOjWmjWIUYS6VKOJP2doN8/JWc7z005nZ4lbpiY7T1HIh4SAdmtG9RtfQsV HuJv063WSvIS3wUN/t5C4nNj0InWKskT52JCnQ07AMH5OiZcPowZlefsFsu/TERvN1KB y+3h3xaViy4oC1uwk/TVKF+CRaMMO7/D4n+FE5DTw0Z5hHWeJSwWZ2eUMr+QzkLHaZ8N eLpgesaafCbKHgx+KAtGwBbpLTSw8T5KHAWJQfigrPopVdg/NyildkJW6mEqTxTEZg62 kBMy4nfhoG9U1XebORPBOgFmx5z3QLBm3tY15RyUP1cCuwYPA6gnIV+De/OjleqesJEP QJlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299730; x=1745904530; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=N77jI1TJkHkxuSuEB7FQGv9pn4PKhNEGgbsGxqAnoxA=; b=HapRo3h/qqG44IC+Ch+oXR5qvn/xH9xvwNw3013HTMHJHtrJDYyMrBomEPV8EyUxtz AdOrPGt9z2E7f+oV70TKP4llHvPj34AnJ8hBu3IltsfDWfmkhbypCS/ev0Kwrv6wWNmv j4tmEuMuwVsQtgX6PaIGMJmKgkdIqLx5jcxTX1FQNJweKN2YXpJi178F2DTAFTJJ9HhG xgHYudUscHEaGC9Dzb7XrS5qs1Z+EehXVYIScKr80HM1SwG1ProEzVM1dw/c99NSIATV J+0NGYejSUH6rdB1TAHgRjgzmIVMK3uIm5TOZNR3AuZ79f6au89FknhdeSTiHo5MNZah jKmg== X-Forwarded-Encrypted: i=1; AJvYcCVb007KKTHLNBQ8rn5thVnvPngkdPorBqXMLPI6pqUuoBkerDgWl1wntxFT7BHQX2RI+6kAm1Vz/uE8QA==@nongnu.org, AJvYcCW7LIDmGb15xW6G2gRa18JM32pt8OMe6Vy3r3ynivWtih2CLUNuKukv9Kk8NIk+IGgo6MV3OAUVBiFK1w==@nongnu.org, AJvYcCWM/t/dKgLHvVcVhZsa9RraLs3WX0fc8I5/qXDbmvoVZ/6QNuH+3RKy8PgSsn13rtPF8DctBe/JPw==@nongnu.org, AJvYcCXwII/y43dgL17ZtEqJGJXYKjetibdzgbuM+zB9catB5JYv/diGybDhQNn2JtRRwQe3JCGqJJf1trE=@nongnu.org X-Gm-Message-State: AOJu0YyJl1rjLLthZv1z8YyvtUt1Ready0jUUO5WrPvTUUvEsM4OI3dr O81jpbc+ptCexOALqGic+xKCVi8FEAqYJ/xOzIln8xJA3OQ1SC3u2VGS0iUK X-Gm-Gg: ASbGncunqg9hBBgblum5s6XglQwsq1g5uBdN+G+oTsVvQrK+FgmCR0c/MqvaqhSBuzT GjMDoh28AIa1ROEpiM1VuxeCgfARbdLPhbVG3iItP20XYmA1xODh9UnXLiS2cbcoe2MU+9xlQca bCjNSMcUKLa5b5S6k0ePPGA/94xjEH1yZkFPT61Yn/vwHjV4QPlymWDG6sA9KEmrY1O+AL+uIuf TGtP8oeyyr36sXK/haSm7w1c8BaHkdFIaDxkg+ArBf95tQTtocPWxv1lCvpLhZvj9O70vHJkhLG MosiFt8cr/h2a6Ja1dNBNbFASyoekJUqPkpyNrEe53naNzBH9A0QhaTGbppRuodCV5nSTg== X-Google-Smtp-Source: AGHT+IEzO/OjrHgYHWrum/0TCfoaM8O8Mfn1Scpmvq5a7CT1HGi/VbS6op7C4w92p+94XfsgeUi2hQ== X-Received: by 2002:a17:902:e808:b0:220:c34c:5760 with SMTP id d9443c01a7336-22c5361b398mr186284245ad.51.1745299730025; Mon, 21 Apr 2025 22:28:50 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 06/20] contrib/plugins: Fix type conflict of GLib function pointers Date: Tue, 22 Apr 2025 14:27:10 +0900 Message-Id: <0fcddfca16ca8da2bdaa7b2c114476f5b73d032b.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745299823000019100 Content-Type: text/plain; charset="utf-8" On Emscripten, function pointer casts can result in runtime failures due to strict function signature checks. This affects the use of g_list_sort and g_slist_sort, which internally perform function pointer casts that are not supported by Emscripten. To avoid these issues, g_list_sort_with_data and g_slist_sort_with_data should be used instead, as they do not rely on function pointer casting. Signed-off-by: Kohei Tokunaga Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- contrib/plugins/cache.c | 12 ++++++------ contrib/plugins/cflow.c | 10 +++++----- contrib/plugins/hotblocks.c | 4 ++-- contrib/plugins/hotpages.c | 4 ++-- contrib/plugins/howvec.c | 4 ++-- contrib/plugins/hwprofile.c | 8 ++++---- tests/tcg/plugins/mem.c | 4 ++-- tests/tcg/plugins/syscall.c | 4 ++-- 8 files changed, 25 insertions(+), 25 deletions(-) V2: - Updated the commit message to explicitly explain that function pointer casts are performed internally by GLib. diff --git a/contrib/plugins/cache.c b/contrib/plugins/cache.c index 7cfd3df249..56508587d3 100644 --- a/contrib/plugins/cache.c +++ b/contrib/plugins/cache.c @@ -576,7 +576,7 @@ static void sum_stats(void) } } =20 -static int dcmp(gconstpointer a, gconstpointer b) +static int dcmp(gconstpointer a, gconstpointer b, gpointer d) { InsnData *insn_a =3D (InsnData *) a; InsnData *insn_b =3D (InsnData *) b; @@ -584,7 +584,7 @@ static int dcmp(gconstpointer a, gconstpointer b) return insn_a->l1_dmisses < insn_b->l1_dmisses ? 1 : -1; } =20 -static int icmp(gconstpointer a, gconstpointer b) +static int icmp(gconstpointer a, gconstpointer b, gpointer d) { InsnData *insn_a =3D (InsnData *) a; InsnData *insn_b =3D (InsnData *) b; @@ -592,7 +592,7 @@ static int icmp(gconstpointer a, gconstpointer b) return insn_a->l1_imisses < insn_b->l1_imisses ? 1 : -1; } =20 -static int l2_cmp(gconstpointer a, gconstpointer b) +static int l2_cmp(gconstpointer a, gconstpointer b, gpointer d) { InsnData *insn_a =3D (InsnData *) a; InsnData *insn_b =3D (InsnData *) b; @@ -645,7 +645,7 @@ static void log_top_insns(void) InsnData *insn; =20 miss_insns =3D g_hash_table_get_values(miss_ht); - miss_insns =3D g_list_sort(miss_insns, dcmp); + miss_insns =3D g_list_sort_with_data(miss_insns, dcmp, NULL); g_autoptr(GString) rep =3D g_string_new(""); g_string_append_printf(rep, "%s", "address, data misses, instruction\n= "); =20 @@ -659,7 +659,7 @@ static void log_top_insns(void) insn->l1_dmisses, insn->disas_str); } =20 - miss_insns =3D g_list_sort(miss_insns, icmp); + miss_insns =3D g_list_sort_with_data(miss_insns, icmp, NULL); g_string_append_printf(rep, "%s", "\naddress, fetch misses, instructio= n\n"); =20 for (curr =3D miss_insns, i =3D 0; curr && i < limit; i++, curr =3D cu= rr->next) { @@ -676,7 +676,7 @@ static void log_top_insns(void) goto finish; } =20 - miss_insns =3D g_list_sort(miss_insns, l2_cmp); + miss_insns =3D g_list_sort_with_data(miss_insns, l2_cmp, NULL); g_string_append_printf(rep, "%s", "\naddress, L2 misses, instruction\n= "); =20 for (curr =3D miss_insns, i =3D 0; curr && i < limit; i++, curr =3D cu= rr->next) { diff --git a/contrib/plugins/cflow.c b/contrib/plugins/cflow.c index 930ecb46fc..b5e33f25f9 100644 --- a/contrib/plugins/cflow.c +++ b/contrib/plugins/cflow.c @@ -98,7 +98,7 @@ static GHashTable *nodes; struct qemu_plugin_scoreboard *state; =20 /* SORT_HOTTEST */ -static gint hottest(gconstpointer a, gconstpointer b) +static gint hottest(gconstpointer a, gconstpointer b, gpointer d) { NodeData *na =3D (NodeData *) a; NodeData *nb =3D (NodeData *) b; @@ -107,7 +107,7 @@ static gint hottest(gconstpointer a, gconstpointer b) na->dest_count =3D=3D nb->dest_count ? 0 : 1; } =20 -static gint exception(gconstpointer a, gconstpointer b) +static gint exception(gconstpointer a, gconstpointer b, gpointer d) { NodeData *na =3D (NodeData *) a; NodeData *nb =3D (NodeData *) b; @@ -116,7 +116,7 @@ static gint exception(gconstpointer a, gconstpointer b) na->early_exit =3D=3D nb->early_exit ? 0 : 1; } =20 -static gint popular(gconstpointer a, gconstpointer b) +static gint popular(gconstpointer a, gconstpointer b, gpointer d) { NodeData *na =3D (NodeData *) a; NodeData *nb =3D (NodeData *) b; @@ -138,7 +138,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p) { g_autoptr(GString) result =3D g_string_new("collected "); GList *data; - GCompareFunc sort =3D &hottest; + GCompareDataFunc sort =3D &hottest; int i =3D 0; =20 g_mutex_lock(&node_lock); @@ -162,7 +162,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p) break; } =20 - data =3D g_list_sort(data, sort); + data =3D g_list_sort_with_data(data, sort, NULL); =20 for (GList *l =3D data; l !=3D NULL && i < topn; diff --git a/contrib/plugins/hotblocks.c b/contrib/plugins/hotblocks.c index f12bfb7a26..98404b6885 100644 --- a/contrib/plugins/hotblocks.c +++ b/contrib/plugins/hotblocks.c @@ -39,7 +39,7 @@ typedef struct { unsigned long insns; } ExecCount; =20 -static gint cmp_exec_count(gconstpointer a, gconstpointer b) +static gint cmp_exec_count(gconstpointer a, gconstpointer b, gpointer d) { ExecCount *ea =3D (ExecCount *) a; ExecCount *eb =3D (ExecCount *) b; @@ -79,7 +79,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p) g_string_append_printf(report, "%d entries in the hash table\n", g_hash_table_size(hotblocks)); counts =3D g_hash_table_get_values(hotblocks); - it =3D g_list_sort(counts, cmp_exec_count); + it =3D g_list_sort_with_data(counts, cmp_exec_count, NULL); =20 if (it) { g_string_append_printf(report, "pc, tcount, icount, ecount\n"); diff --git a/contrib/plugins/hotpages.c b/contrib/plugins/hotpages.c index c6e6493719..9d48ac969e 100644 --- a/contrib/plugins/hotpages.c +++ b/contrib/plugins/hotpages.c @@ -48,7 +48,7 @@ typedef struct { static GMutex lock; static GHashTable *pages; =20 -static gint cmp_access_count(gconstpointer a, gconstpointer b) +static gint cmp_access_count(gconstpointer a, gconstpointer b, gpointer d) { PageCounters *ea =3D (PageCounters *) a; PageCounters *eb =3D (PageCounters *) b; @@ -83,7 +83,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p) if (counts && g_list_next(counts)) { GList *it; =20 - it =3D g_list_sort(counts, cmp_access_count); + it =3D g_list_sort_with_data(counts, cmp_access_count, NULL); =20 for (i =3D 0; i < limit && it->next; i++, it =3D it->next) { PageCounters *rec =3D (PageCounters *) it->data; diff --git a/contrib/plugins/howvec.c b/contrib/plugins/howvec.c index 2aa9029c3f..42bddb6566 100644 --- a/contrib/plugins/howvec.c +++ b/contrib/plugins/howvec.c @@ -155,7 +155,7 @@ static ClassSelector class_tables[] =3D { static InsnClassExecCount *class_table; static int class_table_sz; =20 -static gint cmp_exec_count(gconstpointer a, gconstpointer b) +static gint cmp_exec_count(gconstpointer a, gconstpointer b, gpointer d) { InsnExecCount *ea =3D (InsnExecCount *) a; InsnExecCount *eb =3D (InsnExecCount *) b; @@ -208,7 +208,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p) counts =3D g_hash_table_get_values(insns); if (counts && g_list_next(counts)) { g_string_append_printf(report, "Individual Instructions:\n"); - counts =3D g_list_sort(counts, cmp_exec_count); + counts =3D g_list_sort_with_data(counts, cmp_exec_count, NULL); =20 for (i =3D 0; i < limit && g_list_next(counts); i++, counts =3D g_list_next(counts)) { diff --git a/contrib/plugins/hwprofile.c b/contrib/plugins/hwprofile.c index 2a4cbc47d4..a9838ccc87 100644 --- a/contrib/plugins/hwprofile.c +++ b/contrib/plugins/hwprofile.c @@ -71,7 +71,7 @@ static void plugin_init(void) devices =3D g_hash_table_new(NULL, NULL); } =20 -static gint sort_cmp(gconstpointer a, gconstpointer b) +static gint sort_cmp(gconstpointer a, gconstpointer b, gpointer d) { DeviceCounts *ea =3D (DeviceCounts *) a; DeviceCounts *eb =3D (DeviceCounts *) b; @@ -79,7 +79,7 @@ static gint sort_cmp(gconstpointer a, gconstpointer b) eb->totals.reads + eb->totals.writes ? -1 : 1; } =20 -static gint sort_loc(gconstpointer a, gconstpointer b) +static gint sort_loc(gconstpointer a, gconstpointer b, gpointer d) { IOLocationCounts *ea =3D (IOLocationCounts *) a; IOLocationCounts *eb =3D (IOLocationCounts *) b; @@ -126,13 +126,13 @@ static void plugin_exit(qemu_plugin_id_t id, void *p) if (counts && g_list_next(counts)) { GList *it; =20 - it =3D g_list_sort(counts, sort_cmp); + it =3D g_list_sort_with_data(counts, sort_cmp, NULL); =20 while (it) { DeviceCounts *rec =3D (DeviceCounts *) it->data; if (rec->detail) { GList *accesses =3D g_hash_table_get_values(rec->detail); - GList *io_it =3D g_list_sort(accesses, sort_loc); + GList *io_it =3D g_list_sort_with_data(accesses, sort_loc,= NULL); const char *prefix =3D pattern ? "off" : "pc"; g_string_append_printf(report, "%s @ 0x%"PRIx64"\n", rec->name, rec->base); diff --git a/tests/tcg/plugins/mem.c b/tests/tcg/plugins/mem.c index d87d6628e0..ca4e8883dd 100644 --- a/tests/tcg/plugins/mem.c +++ b/tests/tcg/plugins/mem.c @@ -67,7 +67,7 @@ static enum qemu_plugin_mem_rw rw =3D QEMU_PLUGIN_MEM_RW; static GMutex lock; static GHashTable *regions; =20 -static gint addr_order(gconstpointer a, gconstpointer b) +static gint addr_order(gconstpointer a, gconstpointer b, gpointer d) { RegionInfo *na =3D (RegionInfo *) a; RegionInfo *nb =3D (RegionInfo *) b; @@ -94,7 +94,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p) if (do_region_summary) { GList *counts =3D g_hash_table_get_values(regions); =20 - counts =3D g_list_sort(counts, addr_order); + counts =3D g_list_sort_with_data(counts, addr_order, NULL); =20 g_string_printf(out, "Region Base, Reads, Writes, Seen all\n"); =20 diff --git a/tests/tcg/plugins/syscall.c b/tests/tcg/plugins/syscall.c index 47aad55fc1..42801f5c86 100644 --- a/tests/tcg/plugins/syscall.c +++ b/tests/tcg/plugins/syscall.c @@ -180,7 +180,7 @@ static void print_entry(gpointer val, gpointer user_dat= a) qemu_plugin_outs(out); } =20 -static gint comp_func(gconstpointer ea, gconstpointer eb) +static gint comp_func(gconstpointer ea, gconstpointer eb, gpointer d) { SyscallStats *ent_a =3D (SyscallStats *) ea; SyscallStats *ent_b =3D (SyscallStats *) eb; @@ -197,7 +197,7 @@ static void plugin_exit(qemu_plugin_id_t id, void *p) =20 g_mutex_lock(&lock); GList *entries =3D g_hash_table_get_values(statistics); - entries =3D g_list_sort(entries, comp_func); + entries =3D g_list_sort_with_data(entries, comp_func, NULL); qemu_plugin_outs("syscall no. calls errors\n"); =20 g_list_foreach(entries, print_entry, NULL); --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745299820; cv=none; d=zohomail.com; s=zohoarc; b=JyOaaSU3n9YEsi5YOnNgF67oKUjVSPtguZ+DX/bv61P3YQUFhSX4xq0RtDBX10AeyqL70e0Q0HEEm4bhnqGFUx1lP5WQtf2i8TrezRqLzO/UtfuVZJEP2Hiz8cEFVvuI2p0kZFzXokhqyOrcPn0/i/Ij8xOFYqlcBn9TN9LwOwk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745299820; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jka831lyyEn5TBrC/KjMd2fj+rwDsw1v7du1qQ7OLBI=; b=L83W/9WxrT0B6GxhMPwNrBdAIuVF8HZJ0Z/EFDAyDoGZowBcTQbfruRbwr0HkZBHGcvPGGa6diA6MUmTyhPGLiFRljZqgm9w2OYplwGRqWqdrSn0+CvuE3TpgM0d9OBu7yBzDBgRMGzigJ5JrRnSLx75Z6cETrZxNAVltKpleFY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17452998202311010.113982033315; Mon, 21 Apr 2025 22:30:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76Cp-0002Mh-1j; Tue, 22 Apr 2025 01:30:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76Br-0001hW-JH; Tue, 22 Apr 2025 01:29:16 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76Bo-0007rF-AI; Tue, 22 Apr 2025 01:29:03 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-22438c356c8so49303975ad.1; Mon, 21 Apr 2025 22:28:58 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.28.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:28:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299738; x=1745904538; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jka831lyyEn5TBrC/KjMd2fj+rwDsw1v7du1qQ7OLBI=; b=JZYqWP55604SsNw11vMz1qGlXZt9v1Lbk7BSOo3pUeW0i1SDUE3QC8kpGPGfUz8gy/ qBRQWr1BZ5fJCKPEz8kqVSP6tiUHsKdm6NwkJ+29lFJ5NSYS8oq1d9NjxCjomOnwBAPn 1ueAUr4/or9leo8a5wv2SMNeXskrL3zKDrmYq904v9r3dh6W4+hBVouOCMqqwL4nYIGL aoIm7YUlK7zs3N4vY370agW+B46hQDebt8L3tGiF8WfYse9PUtCmr2O8i7U3TXODDWvD COs71eLVsZcoTg7qfFTNpEREHWN2DIDOpeWF6Z9SsWdSbdndHd1+jcxSkhl4MPS0dteG Lp7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299738; x=1745904538; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jka831lyyEn5TBrC/KjMd2fj+rwDsw1v7du1qQ7OLBI=; b=HLxdU04r8oHAN+d+T5B/NvQy9l9A5AjJ0l3op149ORKC8V4N7YZWFEHkLheMILLT/S EdN2quxcCpXnuVx5yqHE8zLNBi8UL5nNgvcn3Ny5WjUHjzrzLG0YrC97L2A/tgUAWUxz ahK77GwKeaj5Z+/DZ3KdFnndJBAOWxTEPG8ysftuItx3RRvu+4Yv9raQgInesBFr4p4k YWYcpFNaVWK0ehR+wPyYpPtBtI6bEVH9s7qqGMyvcrVXDP0nCDYcEUKLOqPPW1yKByQR M12htfDT/fzJrZE8vO/Ue88BrwgjD7nrgszsEut+LLyuJ1C6ohi2IIBQ+KiCSsZWGH7l LLxw== X-Forwarded-Encrypted: i=1; AJvYcCUHpQ/eisHP1V0VyDHerX/S1/Oqxt/fwYy7BWRNw+RTjE08clvvq173XGPKnE2POgP3zUArWad0LMcIBQ==@nongnu.org, AJvYcCXDL3Y3WkGk6H35fzqvl6Xm9+/AI0kl8QBGzolGrRIkBPoZXExkQ5y83SRGX6MAKSvj9IBscIjjzms=@nongnu.org, AJvYcCXaLFSe0CrzK1AZYbLo1U7257XoeZ17nFrOOZakpy+H+4cS4g/5gXSs6lxWRDn/xA5w9e032OufXg==@nongnu.org, AJvYcCXoqs4wVriehNZRReyjS8zWTQqFruJsCV1WTvsit32jTiEFfpamI2rPN1yzWSf17dv4ILwejzcr37WSFg==@nongnu.org X-Gm-Message-State: AOJu0Yz3pL5hvUADxzDpxWwwPqV3WiqRdMLDrdEWa6ut3a8xCCSpx1b6 WylcEwQGUxOkVH6t4nZ8+cI9JrpuA6cTpJHOntlrDXPhl4flt7dPdRvw4hi7 X-Gm-Gg: ASbGnctLglXeMQWufSpekGf5f56FB6IhI77rM6dgOSPUWEt70fXzZPOokVQHlDfiHSV kqxYSNaBqrdew20PnszaI/3WIwtwvQp2x83SYYkQXoI1au2DzPzo9Yzr9bdrZfKjmbji97oas94 0KAPk80ftPew4XoN4HPj7l3vuSTIWL60cyHyHBl/Iz/BNwTvPclZW2kf5V/RUDRvL3p7f5pU1R1 vHDifvPZ84v/mgEAL5nH0dXljiY13lP+SB+sJOE5ciw9ZsEv6rEnLu3+v5NajAsVCBVMFTVJpKj 5zKVZoEndBeP66PR99VVBCCqQyFz39rWtF+/jzVqIl25UCaAhyrYeZ1BhSg= X-Google-Smtp-Source: AGHT+IGaXHMDzxoqNDfNho02Zs6s6BdUjSAFaf5W8QD0EenDq6q0h00TKwY1MjsG5jasjF+nnumjcQ== X-Received: by 2002:a17:903:298d:b0:220:e392:c73 with SMTP id d9443c01a7336-22c535be3a0mr241851615ad.22.1745299737701; Mon, 21 Apr 2025 22:28:57 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 07/20] hw/net/can: Fix type conflict of GLib function pointers Date: Tue, 22 Apr 2025 14:27:11 +0900 Message-Id: <4d47a75c5768c9a6dc5d8b3504e78837577ad70d.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745299822088019000 Content-Type: text/plain; charset="utf-8" On Emscripten, function pointer casts can result in runtime failures due to strict function signature checks. This affects the use of g_list_sort and g_slist_sort, which internally perform function pointer casts that are not supported by Emscripten. To avoid these issues, g_list_sort_with_data and g_slist_sort_with_data should be used instead, as they do not rely on function pointer casting. Signed-off-by: Kohei Tokunaga Acked-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/net/can/xlnx-versal-canfd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) V2: - Updated the commit message to explicitly explain that function pointer casts are performed internally by GLib. diff --git a/hw/net/can/xlnx-versal-canfd.c b/hw/net/can/xlnx-versal-canfd.c index dc242e9215..013ebc10dc 100644 --- a/hw/net/can/xlnx-versal-canfd.c +++ b/hw/net/can/xlnx-versal-canfd.c @@ -1278,7 +1278,7 @@ static void tx_fifo_stamp(XlnxVersalCANFDState *s, ui= nt32_t tb0_regid) } } =20 -static gint g_cmp_ids(gconstpointer data1, gconstpointer data2) +static gint g_cmp_ids(gconstpointer data1, gconstpointer data2, gpointer d) { tx_ready_reg_info *tx_reg_1 =3D (tx_ready_reg_info *) data1; tx_ready_reg_info *tx_reg_2 =3D (tx_ready_reg_info *) data2; @@ -1318,7 +1318,7 @@ static GSList *prepare_tx_data(XlnxVersalCANFDState *= s) temp->can_id =3D s->regs[reg_num]; temp->reg_num =3D reg_num; list =3D g_slist_prepend(list, temp); - list =3D g_slist_sort(list, g_cmp_ids); + list =3D g_slist_sort_with_data(list, g_cmp_ids, NULL); } =20 reg_ready >>=3D 1; --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745300078; cv=none; d=zohomail.com; s=zohoarc; b=jyaZ6n/HSo9tNH7o6Rwoi9gUCqi5kkDmks7EIfKmgWmR+GUj8Z6chnn1w112LcjKooQY5r/xnDX1STIOHDDk6IdwEHwOftxTnqTl7+9oP1taf2HKk7eUnflfeKDUY6zMtzgWmFmGt7ajOsnrvxmggMjZ1CwA4+j333QHe7pWjWc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745300078; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XLyDJb6zuVf07S+Oux/CEamJxltd1syyWyqOmnLXnEw=; b=m9gFGxnoPAQGeL36cIYSNCBFAH7f70i10tHzTTMJpw4Z6pP9SG6TqOElLM5/SGc49zzaErzYXO6ZqeJyqMoeWF+vhZTt1+f4r1AXUsKADkOKfahY/N0t8pc+KAEkprxFnJQvbtXVNtuKjIWc7C7Ctt0YKXSowTbNXsALL0yT2t8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745300078598999.0073343282959; Mon, 21 Apr 2025 22:34:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76CM-00025Q-6C; Tue, 22 Apr 2025 01:29:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76Bz-0001pE-Qj; Tue, 22 Apr 2025 01:29:20 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76Bw-0007rg-9h; Tue, 22 Apr 2025 01:29:10 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-b06e9bcc986so3296274a12.0; Mon, 21 Apr 2025 22:29:06 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.28.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:29:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299745; x=1745904545; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XLyDJb6zuVf07S+Oux/CEamJxltd1syyWyqOmnLXnEw=; b=gvhecGrOPzAJliflpm2tfVmJrK0ME/N+zC24q6qsKmLjqMP2DiSv3/qFNZYo9lXYKE A72wOolIihpK9Lmuys1o4JduASXSP3sDfNGMn+epTkWne33rbUXzZ+AV63eKpWmf4S7J /MQXDzwczBPrPCT9aLgqSIubfRKOYNIMSl6JJ/GGctJ+cx5gq3JukXDPxyBKXkRiXYSm igb6MJsGZpleRiUQKrTHVUrUaetge4xlYlIFB+PNWVBoZkx0P53QsyfWiOq8tdtVmjRl v8UsOK5583x2cr5H+wVGbORR1i3eo9E8ARfuqg7TOgKsQ+Py74DWQB7wWPYgxVpmxcrZ OXzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299745; x=1745904545; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XLyDJb6zuVf07S+Oux/CEamJxltd1syyWyqOmnLXnEw=; b=GUG/iA8i0abA79hwrNqqJyJZEXzAzMdcVVX6uEZKzO7U08bXoeqBtG+krs6vdeamaY Myq5oVj0Qz0aeTEOTYf0OmOjMsUSv2c3IiVQV/jS0I5uC9oAIMCqqNvNM/xjBSu18XmC aDMSmqZEg6DbZbRLW+ykc4ykHlSDHB6XhV+mn5Eo3skvTtAK1V8Nnvt2yL5TgBAAj2hs B6dqbsxkfjI49+OJ9Q+pBw5n7ZK8HexxSCmvdw9q4z0tL8qlymE4sg7FMlXIYFvEI7JZ Db8+G5/TV9T2NhE8KC7mSloAc1UIcJKpiW5T2SjuqnT940DAooxfdroe3ULm3OyJuUQE 6yyw== X-Forwarded-Encrypted: i=1; AJvYcCU4wbPnA7ATsejZSajK900q51Lfn0xP6LjnnxOPMx6e7itkBRZiQn5L94yjaGmFfrv9/tOhVivOuNUfyw==@nongnu.org, AJvYcCVHdYTlhs3tMWb1/ZpAQZpmNIXuth7T7DoOE3gU60nbPvP4GIQOriLQAhjPoY48d3lpbjJ7eDjjTf0=@nongnu.org, AJvYcCVTdq6QRpw/il/HjeEpn+EqJjrS8WFeE8R/+L58d/dqinfmcfI+q3FLUah4yT34vq3udAVZDV5se/9kHQ==@nongnu.org, AJvYcCWVT3C+IllJpG1wWBiBusRLfgvnfEE1OPqoWr9xYoVHeZMCCQwJGEssMWyXiTTZpdQWrQi712aU7g==@nongnu.org X-Gm-Message-State: AOJu0Yw0FrQhdGE/0O5xhWg7a2NX+TKZ5XrXTkKXuK8ShkRgZ6fXLt4h 9QvTsH2NrMlwm+NrtmK5weFcNPa5guJEGjRAs1W5gerjwlerX2ioZOsX6PMH X-Gm-Gg: ASbGncsk7yEu4UhyGJzUooiiTfwVuhHRx6IaYatorwpINFzVCliwBz7/l30G6P8/HTB VYx9IN2rxrIIYsFnetyuZBuAvm/vtnNUjFBC0MXsL9DgR4s4W4wdm6yCOnvk8kk7H9ZiiHLTPHX t2mEOLluRFylbYGXl/HblwVks6KxAxOmjVk0vvzaL5IK7TW57raB8zGWZDAgkj2gDCrqKeg6KKz kXMZ8rQfhBU10wFwcU1uVnmNA1uloNawqxDvEefxhTUzgAF5qc226QADyBrWnKjDF6FT4dlcWxI xz48v+FRiWiPMbl2mrc21lYQ+IlmY/lmezviEuwVE02KWi6RRze93ao4rQM= X-Google-Smtp-Source: AGHT+IGli9pUmcY3KyTzbFBRjFgDu1JXXm31EwPT7XYV1PhrrsboM1x/7sb3HIGZTZeVLj7SCvEwRg== X-Received: by 2002:a17:902:ef11:b0:224:2384:5b40 with SMTP id d9443c01a7336-22c535a7e46mr256405075ad.24.1745299745436; Mon, 21 Apr 2025 22:29:05 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 08/20] target/ppc: Fix type conflict of GLib function pointers Date: Tue, 22 Apr 2025 14:27:12 +0900 Message-Id: <255824200579431ecaebd32006bdf7a89d48ffd4.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pg1-x529.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745300081742019100 Content-Type: text/plain; charset="utf-8" On Emscripten, function pointer casts can result in runtime failures due to strict function signature checks. This affects the use of g_list_sort and g_slist_sort, which internally perform function pointer casts that are not supported by Emscripten. To avoid these issues, g_list_sort_with_data and g_slist_sort_with_data should be used instead, as they do not rely on function pointer casting. Signed-off-by: Kohei Tokunaga --- target/ppc/cpu_init.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) V2: - Updated the commit message to explicitly explain that function pointer casts are performed internally by GLib. diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index f81cb680fc..f03e48ba31 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -7115,7 +7115,7 @@ PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUC= lass *pcc) } =20 /* Sort by PVR, ordering special case "host" last. */ -static gint ppc_cpu_list_compare(gconstpointer a, gconstpointer b) +static gint ppc_cpu_list_compare(gconstpointer a, gconstpointer b, gpointe= r d) { ObjectClass *oc_a =3D (ObjectClass *)a; ObjectClass *oc_b =3D (ObjectClass *)b; @@ -7183,7 +7183,7 @@ void ppc_cpu_list(void) =20 qemu_printf("Available CPUs:\n"); list =3D object_class_get_list(TYPE_POWERPC_CPU, false); - list =3D g_slist_sort(list, ppc_cpu_list_compare); + list =3D g_slist_sort_with_data(list, ppc_cpu_list_compare, NULL); g_slist_foreach(list, ppc_cpu_list_entry, NULL); g_slist_free(list); =20 --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745299975; cv=none; d=zohomail.com; s=zohoarc; b=dxIHTuciwVk86HD2mTG921vYKS+qY4B27EAM6YifgPSDeKP5PPMzTcL0dMFWEucoUKRTyYLq4UUWOlfzViabhvsd2Iz05OR6czOny0BdMciMatFUoLBN1rGN1z5mtMHL51uICUF413DzIQGj/9xyeHEK4UC5e7copmeJ+U1kkmw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745299975; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9vwsMBWLqSru1XC5tGa2owIx78df+Ne2sGVF0WVxroM=; b=BdVTs1ZA5v9cMQ7DqPWq6y7i9WfLOqD1nI393glVgPK2UhOjEZwDG7eTunaTnmPBG+myLz2Dw4Wlu7UkMUwOBQ36pDx+ZT5aU4JDP2OlMMtxY02q40zM+/S6pzGAfx7G1DbIsvGd6pYthclS3D6M/ju0Dynt5TQr11PSc7AzH7s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745299975612655.8885977726234; Mon, 21 Apr 2025 22:32:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76DX-0003iC-AZ; Tue, 22 Apr 2025 01:30:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76C7-0001rl-H2; Tue, 22 Apr 2025 01:29:20 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76C4-0007sU-Et; Tue, 22 Apr 2025 01:29:18 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-22c33677183so53726225ad.2; Mon, 21 Apr 2025 22:29:14 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.29.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:29:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299753; x=1745904553; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9vwsMBWLqSru1XC5tGa2owIx78df+Ne2sGVF0WVxroM=; b=C0qlR00wT0McfFt1GyudLiRowyymSbL5c2/I91V7yqL6XAxTWbsH9xDGmnVHqczJ/a mX6chp1t2l6RJqOm4yXKRGWy8AZAzgGu7dg/GNzezjDLJMAR2y3cQFKCTP4fNQtQitZ2 EQhh+ieVMjFZidzWgKt6xsu7nBZFBBcoe+geHrStI5RuvY/ce0GZyubswcnbWRzj+r2v sVX/Zas6mJBdjGP/l1EPeXt/Jk5CLewZTlJ0bRFxeH64IsXZ6/cTBuNHlH89UTAdzlGp Ry5kJsm+Oe4Z8AeVtP8BY85nF6j9FNoOjnTCiU04pSUzKjUPgyW5tXNk6VDyfbh2PVJF 78dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299753; x=1745904553; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9vwsMBWLqSru1XC5tGa2owIx78df+Ne2sGVF0WVxroM=; b=LdR7jd7InyezlFiAPma4BS7EIKZr7X10c7Hkovn7gYF6TUfgZksuUqfofD+wmcWkSk xI2arOuMdrMap7Uj/7P2Kg7w5BaCo0SlHX4b7/nV/EKmCPvhO4Da4wQE1A50gtDDa/3U xJaKmQ4+Qn5uBTLt6oKc9XtTdO3VPzbS8l/iNNih9j2vh73Y679ru9gk205JaCGlPu0w YgYW1BHS9nEKmIDuA0iVo/GlyMvKSgQRA8MgsVLZKWPcu8ORs2stq33X1+zp4/PlFLnJ fKq4VhLNXvGCW67+60dTwxTqiCoDzmUv0wpWaTgn2VkITB+26SNp+t9GtSIL6ZYhwwEI zpGA== X-Forwarded-Encrypted: i=1; AJvYcCW4P/FhHVsWHOQsOEAtivYn7eStl3hdrAIX/GQ0sSW8xvNVsxsdwDC92UWhfb8a6YqB9hvZvvboDQ==@nongnu.org, AJvYcCWXp22JdS42h1Hiuydlaz+jTN6uYcYYNkyXYDLETIc73Zm9iGU3x1qj0lCa9WZKemE2e32rqrdg24k6lg==@nongnu.org, AJvYcCWgPMI450FAlydQlfoyfs2X6r/JBmmLevdikhpztJgqiJnUK5SUaYh5A8ce36Ef2LtAUveC8+3kMLzczg==@nongnu.org, AJvYcCXCmbxtVEL0Qzkt3qYOyNluXiqKqW6SdeUj1JZHa7zfjyaQgpErPWfijAaaiXtgMYBBEFf4NLtOBR8=@nongnu.org X-Gm-Message-State: AOJu0Yz4PjGmypT2X0QqejxkNNdiPQ31m4fc5T59VqonW3MfM/xGfU3i i9Y7YIGdFdjKAqDZc9YYqOhMqNFVUgWGbNtWh4m19UgJ8MpS1EjA/N4RNgBy X-Gm-Gg: ASbGncubleX8FST4fuhrhaDkHa/uKlEMWblpMmFSbQub5cGcCnL9NB0ZCUPKk25jlrT UJ+AkIBtBb8CV7O9O19o2rZnnLzHWtxw0CcXrYWfotM+xjv8IO3XzZ6Z2hUj5xdEARtQZ7j3f/r JCpc9hUD/5K47Tc12cGbI3AEKOMVbCOAG5UjEWy3758r+ZS/pDBZfnzZDogSe3OrLhwHEKqm3PY BWRy3CxsrrhLfpuc9mfopBUkqXJlXLoLt7mLUA5yoi6Wd8AP0kuzg6Ig7/23XUnth9GKB2HzVmE QhTxDPmgu/0VbDWp9NgkXQ/KwUTtMvGh0CmyF0JHzrcRWiD52eISHllIamI= X-Google-Smtp-Source: AGHT+IGcgLfvr8Wdb5riVcTXWYTEKyRMiKMNTuqyUTz74/+a7cYyYkhgkYkaogzfi9swQMO3/AnoyQ== X-Received: by 2002:a17:902:f682:b0:224:912:153 with SMTP id d9443c01a7336-22c53573d25mr231402555ad.5.1745299753393; Mon, 21 Apr 2025 22:29:13 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 09/20] target/s390x: Fix type conflict of GLib function pointers Date: Tue, 22 Apr 2025 14:27:13 +0900 Message-Id: <1e55b633d50567e8b145c98f626af5ecd93001f9.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745299976504019000 Content-Type: text/plain; charset="utf-8" On Emscripten, function pointer casts can result in runtime failures due to strict function signature checks. This affects the use of g_list_sort and g_slist_sort, which internally perform function pointer casts that are not supported by Emscripten. To avoid these issues, g_list_sort_with_data and g_slist_sort_with_data should be used instead, as they do not rely on function pointer casting. Signed-off-by: Kohei Tokunaga Reviewed-by: Thomas Huth --- target/s390x/cpu_models.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) V2: - Updated the commit message to explicitly explain that function pointer casts are performed internally by GLib. diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c index 93a05e43d7..48cdef285d 100644 --- a/target/s390x/cpu_models.c +++ b/target/s390x/cpu_models.c @@ -373,7 +373,7 @@ static void s390_print_cpu_model_list_entry(gpointer da= ta, gpointer user_data) g_free(name); } =20 -static gint s390_cpu_list_compare(gconstpointer a, gconstpointer b) +static gint s390_cpu_list_compare(gconstpointer a, gconstpointer b, gpoint= er d) { const S390CPUClass *cc_a =3D S390_CPU_CLASS((ObjectClass *)a); const S390CPUClass *cc_b =3D S390_CPU_CLASS((ObjectClass *)b); @@ -415,7 +415,7 @@ void s390_cpu_list(void) =20 qemu_printf("Available CPUs:\n"); list =3D object_class_get_list(TYPE_S390_CPU, false); - list =3D g_slist_sort(list, s390_cpu_list_compare); + list =3D g_slist_sort_with_data(list, s390_cpu_list_compare, NULL); g_slist_foreach(list, s390_print_cpu_model_list_entry, NULL); g_slist_free(list); =20 --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745299924; cv=none; d=zohomail.com; s=zohoarc; b=VMf89Fqit5tnBFqt9aqqaFq5bKTc+XZ0dogNvb5k5k7jVoMuKvQicVSoG4QmPNWhzWldCWdAVbz/DsbjMtix2Qm3Dd9IwFXpJvdpuAxTYgG8Wq8q6ckivV4dp/ydza9VgU8a/S/luXfpNSEtWrSm1fFnC85GfEfICu0XbBMwVoU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745299924; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=a0zvsPX/FfJ/QEBUSdkp3Xuzprg79q1K+fLsRE/b2DA=; b=Fi8N4dujijXJX8Hv0aI9e/5qEoxge88LF+fsEgdgA8wlfxeRX2aKDnzyRs+AKRXXBrQzEHZ6IqwZc9Xee/Gl0eHShYIXCZiTxrURmCWeyibPISx4GFIXLG9ytuXpYLH4RzR73Ln0TjqZv+3xY1CFADBmDiNmZ9tC1SeV29CzDN4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745299924260515.6316502097172; Mon, 21 Apr 2025 22:32:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76D2-0002rE-6T; Tue, 22 Apr 2025 01:30:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76CE-0001yv-PJ; Tue, 22 Apr 2025 01:29:30 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76CB-0007su-Dj; Tue, 22 Apr 2025 01:29:26 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-225477548e1so45666335ad.0; Mon, 21 Apr 2025 22:29:21 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.29.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:29:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299761; x=1745904561; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=a0zvsPX/FfJ/QEBUSdkp3Xuzprg79q1K+fLsRE/b2DA=; b=B1UjjVv1zyNHHQj+637wjKDTJ0Z9uRZdHzlZhJX/238Sl1gXEEvBGBKsF73nqrjvk2 DZkRkRJwL46GyewnsPEGe8Ztgb8D/MBIkT0bgbrjGv6Istm3Aj41xfBHdF/oEoMRo76L 2lIBM20i9VnRRzRGAkFH8UvG5x3WH7pbF9vMTfCzEymUDXGg+Thm+C1Sp5erU/b6sMXh +oK0Z+kiemGf3mOrDxZOYmCdWRDgEFNUt/AAaygkFOtOoXTv7Q4mj/CNEJzSqCvVGD6q K5Qym69v/SstEkYF+2eetSzZo0QkJR02R6sZqCH172LtHMuxbLbfJqXOPnNNFRr/SFj+ LJAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299761; x=1745904561; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=a0zvsPX/FfJ/QEBUSdkp3Xuzprg79q1K+fLsRE/b2DA=; b=JOJceb4qYKHKIYbvXWxLcC+5FLMFu0AUUvuPFyReK22xbPTKqOop+kBSiUrUNiUwAJ vpEovLIkdRbRj3r1YsIM80ALj31C4oNpWa+5QVeEG6rSKaRAV451PKEkDoAykQ+wley5 fkCgXJf2cTI8RwWjotaCYsq4cTiTqJdfykfZ+7FpSqbxdjOjYARZ08D/BuUyikELYzPn Cg1XxS7Vq+s3adIipGhmCHQBDDDLkUjfZBmP9YQDoRY0VYL4ooj2Jgc4dPzHtk+t+VjT 0f64M+cyJiBFgyCZTVxLA9I3Ka4e6zFjPRPOR+b97Dn61/nNIJ9ZiBLdilT3Sx1jCCsD R0dQ== X-Forwarded-Encrypted: i=1; AJvYcCUmV30izAsGWoHq54unuNAuztpinwXty/T1Ez9yQX8ryhhsX9mVud0GvOayIhyQQahiC+tRQeLVoQ==@nongnu.org, AJvYcCV6ozmnbjF+ox9pKmgYUrn6YaynOidLQXk7c9v5Rr3HCcT1xfF5AcWzec1/NvHvIwI+iyZOKLLsV9IVVw==@nongnu.org, AJvYcCVA5mKJwe8a2S8r84OY7oHKtDJmcicQV+Knds2AgwT/Gt2T4F4+R/fRb2HzDhB/YW+n9p22HxjGA9FHyw==@nongnu.org, AJvYcCXDS43EhI6KktGtqV9fKv82kxsneaWgC0F9+yRZdq1i80icW6bcGoITnfNyliGXv5FKlI+j6hwKdvE=@nongnu.org X-Gm-Message-State: AOJu0Yzsl0LveSh/16HFVJ//Y5S9Rd9huYwSKA6Kbk4lEfrCqsfmKGsj HecmOMsX/cB1Gru1DxE3lRUklXDOIpLfjMJSHlGuo90uSEYwk6ptjX5eslHx X-Gm-Gg: ASbGncvBNOpx0IeEyIS8Gfzjz4RLxts/8Lpe3N7eGOUYCNKQB579dABE7L+Z6vGMDlz KNvA4LZwfsJl70n1rvaMF0BVPINZ7kYEn4jl5lULSE4Y31FPnfk33XKue/XAfx4XJBvphGmRHAn aVFdKGtevFKypAAVKyWp2z9JEXOYEkmJvtu0G9V7cbctZYtaiMt7wkIm8425rxd3sptu/BbYIex UG31hEonM73qsSXV4C3zFQ0ahvO8L89kG0ofn6mOJ6K7RN5HEJzR+PvUID97LO34w1WCWziYcFG 8JVet9BFPagvRNq6UIAgqZm3ronqKA0Xe9cqx3W1URFqOIa9qEJUBAYZiSY= X-Google-Smtp-Source: AGHT+IEjmWmpJ6AAAiaqVT3tzNWYxNrjHbhUCkbn37vCmlnEnKPSfcFShn0zTwGUz13Hrf/oiWTlcQ== X-Received: by 2002:a17:902:f650:b0:224:26f2:97d7 with SMTP id d9443c01a7336-22c5337a016mr187606955ad.8.1745299760678; Mon, 21 Apr 2025 22:29:20 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 10/20] include/glib-compat.h: Poison g_list_sort and g_slist_sort Date: Tue, 22 Apr 2025 14:27:14 +0900 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745299927040019100 Content-Type: text/plain; charset="utf-8" On Emscripten, function pointer casts can result in runtime failures due to strict function signature checks. This affects the use of g_list_sort and g_slist_sort, which internally perform function pointer casts that are not supported by Emscripten. To avoid these issues, g_list_sort_with_data and g_slist_sort_with_data should be used instead, as they do not rely on function pointer casting. Signed-off-by: Kohei Tokunaga Reviewed-by: Thomas Huth --- include/glib-compat.h | 6 ++++++ 1 file changed, 6 insertions(+) V2: - Fixed typo in the comment: s/insted/instead/ - Updated the commit message to explicitly explain that function pointer casts are performed internally by GLib. diff --git a/include/glib-compat.h b/include/glib-compat.h index 86be439ba0..53f8ea38d3 100644 --- a/include/glib-compat.h +++ b/include/glib-compat.h @@ -36,6 +36,12 @@ #include #endif =20 +/* These functions perform function pointer casts which can cause function= call + * failure on Emscripten. Use g_slist_sort_with_data and g_list_sort_with_= data + * instead of these functions. + */ +#pragma GCC poison g_slist_sort g_list_sort + /* * Note that because of the GLIB_VERSION_MAX_ALLOWED constant above, allow= ing * use of functions from newer GLib via this compat header needs a little --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745299843; cv=none; d=zohomail.com; s=zohoarc; b=HcNJRUDnakr3gdY8SLrP21rjXWdKrOoDlqQOnKDOzzJGiMh0q7fGxgcEvBGOQbVpM7qj/Lhv3HPyGsLwD3uvrrNjq9Rax0KtKmT/kYckUGFPuQ0h6FW3wKUzkSWCq4Da6CDh3ECiklS+tErwnuqdvw1Ajy2CK8KZRauheoj/8yM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745299843; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OcMrqg+AK4CG6FhWc+/PAoET2DJRr80sNz7sCzalahY=; b=JxC/Ko9ah/XcdG58DfmO1S94sg8HVxYz0KOERKNCqZS3GujuFiZBXgKnkc1ion9K3IuX5InIYVi9ow8uZfwNQe6+a+6zXNbOx+Vn86Yz0kVSlovYU7NLFXPwcMSGqOiGvspSaxQIaJdzTws1RUIT1JYnEP0ea74EFzv8T2OPsuc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745299843681700.5877954852333; Mon, 21 Apr 2025 22:30:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76Cr-0002SI-0z; Tue, 22 Apr 2025 01:30:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76CM-00027G-5J; Tue, 22 Apr 2025 01:29:34 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76CJ-0007tw-M6; Tue, 22 Apr 2025 01:29:33 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-226185948ffso52631865ad.0; Mon, 21 Apr 2025 22:29:29 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.29.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:29:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299768; x=1745904568; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OcMrqg+AK4CG6FhWc+/PAoET2DJRr80sNz7sCzalahY=; b=JWdkG5HoSkZVu0HI6hsSwEfSulS/xJVFeaXmBo0yerDtpuKDJwgf2CMHZbPMZyG1dP 8+dz0dmSW2knSCv14bPDsDpbh3kRyXUHYTNxlZZIAao5lWaqjzdb5pQb23TkoTXAWBqP kE2q4P4dPyoMkNHN9s9km9IgeiHn3kruceXXLeAX1UMj7Hvr8USdNA6GoRCvhoUJA2WV 5E8cXPrduDtXwoeCjoOUYvqw7o46kRG3BMsBxZMdoQ4j+3sC31kGrommitki+lGyvG0D rijOtxaFzMdwR4DyDU1ngVQRj8q+G5hBlyakgljJDU03GswSiDvWeqRZ9nseU1Y6LdO+ Ldkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299768; x=1745904568; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OcMrqg+AK4CG6FhWc+/PAoET2DJRr80sNz7sCzalahY=; b=WINKk/bLTf+aQQ/MO+G5mXD9kYLgfzXj70Z8ZHFOs98kD9+UkHDhlpGrx3uzzvKR6v fUVDzCr11/MXgJYYEVaBUkvrYHJ1Y+kAT8Tvr3VSntuQWRfP2Dc1rKeBnsJKhThL+Eoq ObQqmRBPTeMmcpQQoDDSVgd4v6Ptq+1reFtKO7tpT1XHX6+zpaXWQrStyoEC9xOhglD+ ex0VxdNMw0mWxpQyVi/1opA8GqItqXjVzvHk4RqIjG6OHKP56cdEd0L+phAO+uq2AIsq 26CCNGdfoIdHXBJWCCczQjzZmBwm/w0ddFxRBva9UmSTGxZfjeLk2qipthsDKxHEkOB3 i+VA== X-Forwarded-Encrypted: i=1; AJvYcCUpK83syjOFQlgQcuRfk3P6vRwOTTvV/vBnFnhLnMbvMTmANzM6bc1+ftglF0BIN5q8qCAfR1PpojRssw==@nongnu.org, AJvYcCVs2qsE8AO/d6noQgPjNx/leDtNPZz4BTZdElK7KfyTAtUz2M+5nLCnawHd7d4ZLCN6JM7SheGbehw=@nongnu.org, AJvYcCW+Fh3Zurl6jgsqWPJAZzVlso/VP+Uqta1v2y9iKxYcG2E4x/rJ2XlwQhyIPeMRozj6zBRJ/w3ru5Cvog==@nongnu.org, AJvYcCXtqPvUDus8jsryyXvGHm82l4WKBbe3uOjeiD05ZCNf8mNEhmYmeVzuhAdi6WPreOnyPF8JrbsHvg==@nongnu.org X-Gm-Message-State: AOJu0Ywv37OjIzLBDe12a7RzgDUSgtlwZMVa22aL/pOVTd1CNh72A0dD Io7f/lAKmyDt7TeCWm7r+2l8z6wBvt7tlNjexlI/aqbQdspSHnM5un06IIlQ X-Gm-Gg: ASbGncuiVlHaoXtHaBGw/oZkpu2FkbpJy2JqSyZ3RVnUDrK1Hx1KsiPQ1sAGNAQGYPa WCxayFzB4XknHnvNqUDM2lqoJdRKLHG0n35DA4Ap4Kbw4OjeZysKY5i2+NX9Mchmbgp6yASmHYd o4JIfnUvG3Dwia0owhoWNm9ADipJ0rZEY9ZljGEUwIL97PKjXEPhy4GTIfoc0aSDo8YFLXeG9/3 6k7asBSwdp8igTwSKJ4x8Cr0vbeO5Q+hr9TA7B+nOVK0PCK9elLtB0hBCAcwTiTCdry7zLWOozL 1/dxCv2bQONgYKj1dCVDqg6M3638cT9vXhea55iUB1uoxKWbLQJv5e5BIZ0= X-Google-Smtp-Source: AGHT+IGRZvEetiyqa+fm/MRvQqrwC4kyd4L2y1DWQfWnFLGfwS9xzLmNLqSqcW3bp/SNxhoA9tvehg== X-Received: by 2002:a17:903:298c:b0:224:1d1c:8837 with SMTP id d9443c01a7336-22c535830d6mr189707265ad.19.1745299768184; Mon, 21 Apr 2025 22:29:28 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 11/20] util/cacheflush.c: Update cache flushing mechanism for Emscripten Date: Tue, 22 Apr 2025 14:27:15 +0900 Message-Id: <73301cc216217d5c3e0d7acdd32482e36f4f045c.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745299846961019000 Content-Type: text/plain; charset="utf-8" Although __builtin___clear_cache is used to flush the instruction cache for a specified memory region[1], this operation doesn't apply to wasm, as its memory isn't executable. Moreover, Emscripten does not support this builtin and fails to compile it with the following error. > fatal error: error in backend: llvm.clear_cache is not supported on wasm To resolve this, this commit removes the call to __builtin___clear_cache for Emscripten build. [1] https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Other-Builtins.html#index= -_005f_005fbuiltin_005f_005f_005fclear_005fcache Signed-off-by: Kohei Tokunaga Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/qemu/cacheflush.h | 7 +++++++ util/cacheflush.c | 4 ++++ 2 files changed, 11 insertions(+) V2: - Added an explanation for the change to both the code comment and the commit message. diff --git a/include/qemu/cacheflush.h b/include/qemu/cacheflush.h index ae20bcda73..76eb55d818 100644 --- a/include/qemu/cacheflush.h +++ b/include/qemu/cacheflush.h @@ -26,6 +26,13 @@ static inline void flush_idcache_range(uintptr_t rx, uin= tptr_t rw, size_t len) /* icache is coherent and does not require flushing. */ } =20 +#elif defined(EMSCRIPTEN) + +static inline void flush_idcache_range(uintptr_t rx, uintptr_t rw, size_t = len) +{ + /* Wasm doesn't have executable region of memory. */ +} + #else =20 void flush_idcache_range(uintptr_t rx, uintptr_t rw, size_t len); diff --git a/util/cacheflush.c b/util/cacheflush.c index 1d12899a39..17c58918de 100644 --- a/util/cacheflush.c +++ b/util/cacheflush.c @@ -229,6 +229,10 @@ static void __attribute__((constructor)) init_cache_in= fo(void) =20 /* Caches are coherent and do not require flushing; symbol inline. */ =20 +#elif defined(EMSCRIPTEN) + +/* Wasm doesn't have executable region of memory. */ + #elif defined(__aarch64__) && !defined(CONFIG_WIN32) /* * For Windows, we use generic implementation of flush_idcache_range, that --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745299968; cv=none; d=zohomail.com; s=zohoarc; b=U8y2M9hDOOuG8N3GLXl9ErcES2p8nso0FJRsMRVPvGN8ay8AEBjYJMaoippUbVogjLYWnT0duNzzsUC6SVdteRVU27tHWk2I2inCIqCZ49cW4Qi/Ujk6NwNnbxjBCiBlp5qjpY8yEx0CEKS/r6iY+6KjheJkVWa19jBPD1FxMoU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745299968; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6gr7bhHNF0kj7hfwtuL868huK6XynZ7LXafxTGg/yBU=; b=cNYPcbGGt7ucAMCt/xVXSbm4Z1ylVkEmQOF1AnsjgJ+xKXfBI7Jy4sQZNHZmFiwvSqHLvsmW9/byeEZZRHbeQ+La2Bb0YowtfxyPY0MzOEmZ20OTD6CQag6y/WvVfmkIBzKZ31vtP9E7M5xz2KlYjkmN8g1X0l1aka2afRhC4Bg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745299968646384.73519717417446; Mon, 21 Apr 2025 22:32:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76Ee-0004pG-J1; Tue, 22 Apr 2025 01:31:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76CS-0002Hn-1M; Tue, 22 Apr 2025 01:29:46 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76CQ-0007un-FH; Tue, 22 Apr 2025 01:29:39 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-22928d629faso45054575ad.3; Mon, 21 Apr 2025 22:29:36 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.29.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:29:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299775; x=1745904575; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6gr7bhHNF0kj7hfwtuL868huK6XynZ7LXafxTGg/yBU=; b=eIDVKF6h6reUc7PzLrMDiXAoVDNFevpYYFPUa7Rtn79yjwpMaNRDNbpfwp3j7JOjml o/Bsh+MAAaBQ3lIwkEvCTDXlovkeMYc6VOESohobb5KtbZVsXn+CHH0xThGiRi+V+l3O +XNc9DV6j/YhhutKyNe247ny3txbxXPVUJacMY1+85D8zcLBcH88RZKJDOnKkRqOKpZ4 7EQO5q9LLfdQPuW0P4AYpbgtKNujwpKJVhpmADdXLqF+RAfUsepUrdrug9pKt793smUc fL0xI1pYR5FgwrGIO7t3vExmfqrGwlatvJUWlofGJ+ctt5Nho72agQH9AclmJm/hd253 BKEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299775; x=1745904575; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6gr7bhHNF0kj7hfwtuL868huK6XynZ7LXafxTGg/yBU=; b=l6INReqv0k/s3r9bgzNtNccy/Qqd0hSEl+WINCSQxvx23VWo2B5jbWEcB1XFOpqBZC NhN2HdYLhFndez7ey7z0GILwjsj5ARK1OnswRFFtZMtN9vUuj2m1YAE879J+SIRjeh4D iI99vLFkkJdiHXdLSupob5XcrMdwCD5BB8bdpaqsAHjsC0zJSjmmqKTro+5qoXhu3Pme ON1tXDpbrXiPKVU68yi90TrEf5rvqtxgCnjVne/uSz7hcO37Km0G5cJLr+bWeiVvvW8V KgDcQVCyecTnpYmIQKOadQBb+gy0FApCthvJoRQ7ivAgoeg/6LvuSGMj8vrQWM7MmPkx oCDA== X-Forwarded-Encrypted: i=1; AJvYcCVMSU8Z/b1WVdP5fx7+RjwwBJansPikN+3G5+LMNcXQC8OFxPuXriKyU5BDl9YoleeJebplqrZ5rVIePA==@nongnu.org, AJvYcCVT+hC5YbmY65Sreqfd5OauLOkiODmPYaUfR5fPoLtqKKchkMfv17N9E1fdeO3poDagBdW9PgNk/j4v5g==@nongnu.org, AJvYcCVxH0Qo4baomUVUJrih4QFgCgHdAkorVPJn9gdCVeX0n4s9wD5LVRdHJqTpXo2rd9FQvlNQRCEhNA==@nongnu.org, AJvYcCXI4vUiSKG27RjcEVRlmfOfz0BCK4ugMBbDzluOCpJFpM5XciRP3jCm7FnuV0fatPIAW8s1QB0ShQ0=@nongnu.org X-Gm-Message-State: AOJu0Yw+0O3Vv8qo3KENrvR2QtvfIx1JU0RtBNzVE9Dh3gKt2kUNNP3B rrt5u5pJy+EUTeMYelQmSQVahG7oak2ejTtabKY3CDxTLCp2nmX8uZUV27IS X-Gm-Gg: ASbGnculWhcvmiPmwUtUkMkXLqPQwopQINBGvLYlZ+kgp2o31L1Tg+AkwIbqCkkSwxu EDJyNZNpkA9kpLB22qrJUoiOTMw6rDGvK3iPs+bTlJKjfcS+OzUKtjU2Qdxkh4USH16wGhF0qWP eNkGNHk9KQboFngUHQbBQY2QUspnT9KjAa9Ge8tsb5VvgzzVy3LT81jGBEwvynmJhYYqsAeDMOZ up7ZTkbW3FIrAo7utAaStA5F+V/oNM0IlCTTXZ9JpMhbFIAV+gl+m17fsy8byqOisOYSO2fRz4M 7aP9OQq0hEAB1HjB3+s46gAsfM6ZJQBk9n7XGoIIowvJzi4GILpR2JT0s+Q= X-Google-Smtp-Source: AGHT+IEvwcDPz94D7S/A/DPpswvF0YESDUhtKqiVJ4FZXaM3bYPN5bTVckf7CP+ln3cnZtF4hLLr1Q== X-Received: by 2002:a17:902:e808:b0:220:c34c:5760 with SMTP id d9443c01a7336-22c5361b398mr186304095ad.51.1745299775484; Mon, 21 Apr 2025 22:29:35 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 12/20] block: Add including of ioctl header for Emscripten build Date: Tue, 22 Apr 2025 14:27:16 +0900 Message-Id: <1821e79d3977c3645aa79128b823748aa9a63800.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745299971113019100 Content-Type: text/plain; charset="utf-8" Including is still required on Emscripten, just like on other platforms, to make the ioctl function available. Signed-off-by: Kohei Tokunaga Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Stefan Hajnoczi --- block/file-posix.c | 4 ++++ 1 file changed, 4 insertions(+) V2: - Split this from the previous 12th patch into a separate commit and revised the commit message to clarify the purpose of the patch. diff --git a/block/file-posix.c b/block/file-posix.c index 56d1972d15..69257c0891 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -110,6 +110,10 @@ #include #endif =20 +#ifdef EMSCRIPTEN +#include +#endif + /* OS X does not have O_DSYNC */ #ifndef O_DSYNC #ifdef O_SYNC --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745300121; cv=none; d=zohomail.com; s=zohoarc; b=gn3phAPJuOnChmTZX83521Vlcol4fETCSN3bQHWQhLU8+TpC/C557mtdmtzrV6FoEsAyPy88VyUksK7jtfVblKTW2jkGkBaxB+2SP8PTiZ8XN7CPk+vwmH70pe40dUJl69WkSX7ry+SPc9G9RdJnik1B5bSP7GXAXukzyFSL7W8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745300121; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pZ7bO6pXxeYaOHh3umuOVAnE+OOJlkmKTF0VXeHFfUg=; b=fMpJz4HfoOnj00qz+0YSS0Nd/WSEVJr4oFw/CMNlR23mkEFpbpHpuufv8o8WKurVadKK6yyrylHMpzJP+4xwLg8tsYQE6srHk+yIe/an6gENuE1hT6BorceMRfK85hpOKx8+gSTHORlPeHveWIVGnSUTIB+PPwE4q+MyF3/hd38= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745300120880573.1728440961509; Mon, 21 Apr 2025 22:35:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76F4-0005ig-PA; Tue, 22 Apr 2025 01:32:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76Cb-0002Ls-SK; Tue, 22 Apr 2025 01:29:52 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76CZ-0007vD-B4; Tue, 22 Apr 2025 01:29:48 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-223f4c06e9fso39869785ad.1; Mon, 21 Apr 2025 22:29:44 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.29.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:29:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299783; x=1745904583; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pZ7bO6pXxeYaOHh3umuOVAnE+OOJlkmKTF0VXeHFfUg=; b=enpJ2nlyJUiCG3vT0suLkTsFoSWOtFpTVFfY76f2SPS8erv+CLSG0bx4ZnZyEgKk5P Czg1l5dpiS5UVC3rQ98bVN2m+smi/MlbK/sv2w0j80V+yya8smI7kFajWXjayzBHKBr7 wrh6l7br7odmVan4+k6IRKINn33D6jzUMM+RS4Kcte5JHIcHJC1mOJl2H1/kRK1VlGmK Ra9SdfaKp9zHnyiWEwLz4MQvPNBs/P/wTLJ529Ec6h/ZW/a51SJff23tOeVCSJhf/Xk4 wmDQR6xOJupPn6/ACpR6OZ+N9zRSMGfhmit9cFcOKyR2LKExxL+xH2HAsn0yYDcFmygm UPoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299783; x=1745904583; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pZ7bO6pXxeYaOHh3umuOVAnE+OOJlkmKTF0VXeHFfUg=; b=iOc4rFxxCn6W8fhIwqEb3ASBvGRgQEO3XFE5aJTTW6uikn4FGAVCSmgafCm08aNcGn DLVxSYmMiC/SU7oUBWTREyv/HRd3opQe+yGaorNeFZTlVpot9I75kxDnj7ySnTSh3TyE 0VMa4FQDF88g6m6nWEECptMluuz6/usKL5LYW8Bh41rT+UZWv4nYK2+5EoOiw4PmEf0a PdtBmyK5ICNje2cRLOIw3dsc2f4SnEMkGSf24EPlK+Hh8Ssv4iLKu8DqMWLSe6hxYzVZ 2In6tSanoMeVWyXhnVi2AcocWlZeAJQGAEzTi6dZkwW5arLB0PVTXP14dFDvC48I0h/F r+MA== X-Forwarded-Encrypted: i=1; AJvYcCUlYrsArKbSybZQkpTQIf3mlxW0xDnMkwV1K0VQ9m0DyHgiBe2PthnYucSJc2NyuKmSGOOaq8BYB4w=@nongnu.org, AJvYcCW2e27ra4YjP+gYVLkesAG5jp7GE7a8QN3ZoYfcel/zwzkOB+un7gpcGmvfrKCTBZzoz/4F9vLcRQ==@nongnu.org, AJvYcCWAzJoCev+5Xv+lso3J81f+xWf7Kuo+sB8SaTyf/C5RRyBLl83NUNDqbyDihF6wHPFAGYmCOeeYephiig==@nongnu.org, AJvYcCXzNZQUxned8ndnSOLmFehiV0Jkn8VBL/4Xt/+YUIoCnvGU2w81aFdVP4+4FNVFaOX2YPadOTrMhnAktg==@nongnu.org X-Gm-Message-State: AOJu0YwuP3gF2J8Gabt2mSJ2+90JiLRX8C7R99IXl5Kx66ml8Dh5Che0 hiaKzoEqGrtP1D9BAFB2gc9ShMTrFM3jubOGkH31qXlmznuhkKNxbT86WPHM X-Gm-Gg: ASbGncsUQTE9W6RaHwaWsjKU81lh9QU3aa84M21m4HDnx6/sg1J0kEFAyPLhFXwtJjS 0iUNm3bXxE+8caVcYGP4e9lxmBNvrLc/WEC4mug2AnucRYUCMW6LNXLcgWsEvOj1DLEgT9lgFy3 y42EvtOCyyPIAFlEGII2C/XEqmbQ/UvtWrNFQa/0Wrm0DRh16K4lAiftXs3dEwUy9MLc0wkS8DN 3YtZPW72og6YghvAQED3zUH5n2AH4DrRfLMATf8qXbi95aCtg3oX/pTlhxGzPmVDDeiPRFifDxN BAYaQe/O0naRzLemRltMZF81xwyxam11wZXlP80NUlzsdEOe4Ns7RFoLJfKXBjg+6wHtkQ== X-Google-Smtp-Source: AGHT+IEZF5/R+WzWuaEUpNlwBrdt21FqufDMrrlmvN07ViDg/j4NoEnHz6mNB7gGUv8QbgO9db2OMw== X-Received: by 2002:a17:903:3d0c:b0:220:ff82:1c60 with SMTP id d9443c01a7336-22c50cfa84fmr239090505ad.14.1745299782951; Mon, 21 Apr 2025 22:29:42 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 13/20] block: Fix type confict of the copy_file_range stub Date: Tue, 22 Apr 2025 14:27:17 +0900 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745300123552019100 Content-Type: text/plain; charset="utf-8" Emscripten doesn't provide copy_file_range implementation but it declares this function in its headers. Meson correctly detects the missing implementation and unsets HAVE_COPY_FILE_RANGE. However, the stub defined in file-posix.c causes a type conflict with the declaration from Emscripten during compilation. To fix this error, this commit updates the stub implementation in file-posix.c to exactly match the declaration in Emscripten's headers. The manpage also aligns with this signature. Signed-off-by: Kohei Tokunaga Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Stefan Hajnoczi --- block/file-posix.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) V2: - Removed the Emscripten-specific stub of copy_file_range in stubs/emscripten.c. Instead, updated the type of the existing copy_file_range stub in block/file-posix.c to match the declaration in the Emscripten headers and avoid a compilation error. diff --git a/block/file-posix.c b/block/file-posix.c index 69257c0891..2758f31844 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -2015,8 +2015,8 @@ static int handle_aiocb_write_zeroes_unmap(void *opaq= ue) } =20 #ifndef HAVE_COPY_FILE_RANGE -static off_t copy_file_range(int in_fd, off_t *in_off, int out_fd, - off_t *out_off, size_t len, unsigned int flag= s) +ssize_t copy_file_range(int in_fd, off_t *in_off, int out_fd, + off_t *out_off, size_t len, unsigned int flags) { #ifdef __NR_copy_file_range return syscall(__NR_copy_file_range, in_fd, in_off, out_fd, --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745300285; cv=none; d=zohomail.com; s=zohoarc; b=DPh6aWlOjMrCsl6wBZFCJ6gOi9osSRmgM5chYAHl/2eouBPGodnJ8nvOuS8BkHVvLNUIgmUC9wM6+x0hpPnvdfkl11EPYxG18oM8UFPfvU6akbIUr5ToCioO1HE8DoCm5iyuegk3J20eNS000zr9wWruaSlI86fsHXqCSn8oVWg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745300285; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mPwJWv1XdL1SZLXg2WZ4ZVDBFmolVnjhl88zidFmCfI=; b=YOYbeLn/ELGPzxjaEW3eH4LxZtdf/oUwJIAF1Zx6Nck8R3mLXcoCVAnJHbFGph4ey9jAEFHWplWKx9BxlyNVKfeuLrDE8hLAjb32M/+++5KPEHiYMzITYiW3co83yj8n70OcK4CQ+XzP/068EPr/52FOkgD/TKYIOMNpX5gHbvE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745300285725204.9794584868813; Mon, 21 Apr 2025 22:38:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76FK-0006Iu-SJ; Tue, 22 Apr 2025 01:32:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76Ci-0002Qr-F4; Tue, 22 Apr 2025 01:29:59 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76Cf-0007wH-Ug; Tue, 22 Apr 2025 01:29:55 -0400 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-af590aea813so5318969a12.0; Mon, 21 Apr 2025 22:29:52 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.29.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:29:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299791; x=1745904591; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mPwJWv1XdL1SZLXg2WZ4ZVDBFmolVnjhl88zidFmCfI=; b=S0q12Uw3sD2gWe6x/fHe2SeNoWGwRVSN8YdlYX51J0MPGYLpa8WwTwlg6Ml4W4M263 YuNkFl+oa5dJsG8kktTstt3eZmxjywhxq+ktnCu+f5wup2w0RoM3aH/LzO8jIJ9YphM4 K8unxA8LABdFKUurc6icfInkHQxQJxPidLoHw2NAORj4xyG8JXeEecgGFPjBY3gIIHxd sHUUDPF+DZyx5ZBgYS3+PT9qWFInIUQ6ZADYft8eC/kPSnAnl6oZtxRl5iAJc4jnOqse X/wO6syHmRMM0chGxYQpVsHIx2nOWXHEDjNXNnEJTYPjLC+AREvNUGF5Xdb58ungjskl Ew0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299791; x=1745904591; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mPwJWv1XdL1SZLXg2WZ4ZVDBFmolVnjhl88zidFmCfI=; b=Qg/1VzDWrOsrB+Kkn6u0bcelVAWetQ49baf0nn9mJmzr0TM6+JlAVX1Jj1RVWgsxtH Q3BlxLo/snCwXEIoR5MmhV71oqKYq3mNoczAQ9gTD+6VO/9p3zRg6+miaKr19gd6i6Vv Tg9tlnl7CXRjyWRDi2E7faLA7j77m5rBZxZa8Az3j5NR7nMdVdnntYZuWZ4vYNkpFErX QDV1YEOkeZdD/p8zDrTDeecWp2XWh6VuBaPqTA8gB+1zsuYmHM1WQBNTIrC/lwRihIy3 weFcnawpV2TmBBZrKL4qMl0nKQkFx2FOjFf4NXh4Zdn19dj6GS8uZ2b5fWA9rc5p+3LS I4jQ== X-Forwarded-Encrypted: i=1; AJvYcCUXKNedXZpG4LIcm6oNUZCzq1YgNO9dR+x6BVeCVLMFYc4lwAc2QjsGcZGMVw5BebrVv6kfwWihAFKBEg==@nongnu.org, AJvYcCUbPs6t9OShnvjgnlLaD+Eer7bVvjUbdU53kVtxrXjuOitH+yTteXKO1cMTSqQaKhncZ+D7DddP+Q==@nongnu.org, AJvYcCV0wDkLNFPE2sDVfUrT6KyG4VEbEcqFFMg0NHQW45hGQDZZhMN0fHW6ADP9yIFZkescAkPmS0M04pRZRA==@nongnu.org, AJvYcCVjUsF0JrVDBGGzwVOqrBN9TGondc/d2AsV9vdMqh08ql92KtAvdnZ4gTS+MurnwqBdyqF57G33FXQ=@nongnu.org X-Gm-Message-State: AOJu0YxYX5s6xtPyaE8/7gn1Yw8MkhO65/vYmUZHQxeOvisW5KrCwVDi 3JbZI5HIkOp5YRNLNzPh+8gE4XTGKUqBFGwAVcLAsEAaRXJekcbTIKa6rCR/ X-Gm-Gg: ASbGncu89VQv2JzYi1ndnv6yZnrnIHszXyD6AsQXtKodE3r7H9+arhVqjygHC71vx/r qib8brGaFXmpvpgClukFDkCed0hR6sIRHnNANwLzHgQlkxMoNU+XpyUGTr0BsS1fuHXDcDAH5d9 kdVDRkz4oZmJVUd+CBM2dF2YjibQLc7H477nStMD8rQZoD+ZPWtTs637ZnFvLD7f3ECKAF6XpUJ YqXarzQQnUCQZFG6RCnfWuJTfCL4y09KV2cpmQI/V6K9YUKsL3leQpihs8o9z37PClkXl/8kKlw 2XiG2VoHMGbDBbpJQOC2cHrd085MScNI32rr+fSl0j+loQlIl2tsTYhjQRE= X-Google-Smtp-Source: AGHT+IFWgOdnfzbxh+RFwzENK0J0t5tRSDmDBnU3UXjP+CGN99+rxRf7Y1bXIP0QFV+SCqBDTzPFfg== X-Received: by 2002:a17:902:d04b:b0:21f:40de:ae4e with SMTP id d9443c01a7336-22c53e3b254mr155646575ad.9.1745299790588; Mon, 21 Apr 2025 22:29:50 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 14/20] include/qemu/osdep.h: Add Emscripten-specific OS dependencies Date: Tue, 22 Apr 2025 14:27:18 +0900 Message-Id: <5bad5a7ee50b6e3e18cf97ac07837988b25ad07f.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::532; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pg1-x532.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745300288169019100 Content-Type: text/plain; charset="utf-8" On emscripten, some implementations in os-posix.c can't be used such as daemonizing and changing user. This commit introduces os-wasm.c and os-wasm.h which are forked from os-posix.c and os-posix.h and patched for targetting Emscripten. Signed-off-by: Kohei Tokunaga --- MAINTAINERS | 6 ++ include/qemu/osdep.h | 8 ++- include/system/os-wasm.h | 104 ++++++++++++++++++++++++++++++++++ os-wasm.c | 119 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 235 insertions(+), 2 deletions(-) create mode 100644 include/system/os-wasm.h create mode 100644 os-wasm.c V2: - Moved the change that was incorrectly applied to os-posix.h into os-wasm.h - Split the MAINTAINERS file change that adds os-wasm.c and os-wasm.h from the previous 19th patch into this commit. diff --git a/MAINTAINERS b/MAINTAINERS index d54b5578f8..c7a20ac8d7 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -619,6 +619,12 @@ F: .gitlab-ci.d/cirrus/macos-* F: */*.m F: scripts/entitlement.sh =20 +WebAssembly +M: Kohei Tokunaga +S: Maintained +F: include/system/os-wasm.h +F: os-wasm.c + Alpha Machines -------------- M: Richard Henderson diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 4397a90680..96fe51bc39 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -8,7 +8,7 @@ * To avoid getting into possible circular include dependencies, this * file should not include any other QEMU headers, with the exceptions * of config-host.h, config-target.h, qemu/compiler.h, - * system/os-posix.h, system/os-win32.h, glib-compat.h and + * system/os-posix.h, system/os-win32.h, system/os-wasm.h, glib-compat.h a= nd * qemu/typedefs.h, all of which are doing a similar job to this file * and are under similar constraints. * @@ -164,10 +164,14 @@ QEMU_EXTERN_C int daemon(int, int); #include "system/os-win32.h" #endif =20 -#ifdef CONFIG_POSIX +#if defined(CONFIG_POSIX) && !defined(EMSCRIPTEN) #include "system/os-posix.h" #endif =20 +#if defined(EMSCRIPTEN) +#include "system/os-wasm.h" +#endif + #ifdef __cplusplus extern "C" { #endif diff --git a/include/system/os-wasm.h b/include/system/os-wasm.h new file mode 100644 index 0000000000..3abb3aaa03 --- /dev/null +++ b/include/system/os-wasm.h @@ -0,0 +1,104 @@ +/* SPDX-License-Identifier: MIT */ +/* + * posix specific declarations forked from os-posix.h, removing functions = not + * working on Emscripten + * + * Copyright (c) 2003-2008 Fabrice Bellard + * Copyright (c) 2010 Jes Sorensen + * + * Permission is hereby granted, free of charge, to any person obtaining a= copy + * of this software and associated documentation files (the "Software"), t= o deal + * in the Software without restriction, including without limitation the r= ights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included= in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN + * THE SOFTWARE. + */ + +#ifndef QEMU_OS_WASM_H +#define QEMU_OS_WASM_H + +#include +#include +#include +#include +#include +#include +#include + +#ifdef CONFIG_SYSMACROS +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +void os_set_line_buffering(void); +void os_setup_early_signal_handling(void); +void os_set_proc_name(const char *s); +void os_setup_signal_handling(void); +void os_setup_limits(void); +void os_setup_post(void); +int os_mlock(bool on_fault); +static inline int os_set_daemonize(bool d) +{ + return -1; +}; +bool is_daemonized(void); +static inline void os_daemonize(void) {} + +/** + * qemu_alloc_stack: + * @sz: pointer to a size_t holding the requested usable stack size + * + * Allocate memory that can be used as a stack, for instance for + * coroutines. If the memory cannot be allocated, this function + * will abort (like g_malloc()). This function also inserts an + * additional guard page to catch a potential stack overflow. + * Note that the memory required for the guard page and alignment + * and minimal stack size restrictions will increase the value of sz. + * + * The allocated stack must be freed with qemu_free_stack(). + * + * Returns: pointer to (the lowest address of) the stack memory. + */ +void *qemu_alloc_stack(size_t *sz); + +/** + * qemu_free_stack: + * @stack: stack to free + * @sz: size of stack in bytes + * + * Free a stack allocated via qemu_alloc_stack(). Note that sz must + * be exactly the adjusted stack size returned by qemu_alloc_stack. + */ +void qemu_free_stack(void *stack, size_t sz); + +/* POSIX and Mingw32 differ in the name of the stdio lock functions. */ + +static inline void qemu_flockfile(FILE *f) +{ + flockfile(f); +} + +static inline void qemu_funlockfile(FILE *f) +{ + funlockfile(f); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/os-wasm.c b/os-wasm.c new file mode 100644 index 0000000000..d240c180c5 --- /dev/null +++ b/os-wasm.c @@ -0,0 +1,119 @@ +/* SPDX-License-Identifier: MIT */ +/* + * os-wasm.c + * Forked from os-posix.c, removing functions not working on Emscripten + * + * Copyright (c) 2003-2008 Fabrice Bellard + * Copyright (c) 2010 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a= copy + * of this software and associated documentation files (the "Software"), t= o deal + * in the Software without restriction, including without limitation the r= ights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included= in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN + * THE SOFTWARE. + */ + +#include "qemu/osdep.h" +#include +#include +#include +#include +#include + +#include "qemu/error-report.h" +#include "qemu/log.h" +#include "system/runstate.h" +#include "qemu/cutils.h" + +void os_setup_post(void){} +void os_set_line_buffering(void) +{ + setvbuf(stdout, NULL, _IOLBF, 0); +} +void os_setup_early_signal_handling(void) +{ + struct sigaction act; + sigfillset(&act.sa_mask); + act.sa_flags =3D 0; + act.sa_handler =3D SIG_IGN; + sigaction(SIGPIPE, &act, NULL); +} +void os_set_proc_name(const char *s) +{ + error_report("Change of process name not supported by your OS"); + exit(1); +} +static void termsig_handler(int signal, siginfo_t *info, void *c) +{ + qemu_system_killed(info->si_signo, info->si_pid); +} + +void os_setup_signal_handling(void) +{ + struct sigaction act; + + memset(&act, 0, sizeof(act)); + act.sa_sigaction =3D termsig_handler; + act.sa_flags =3D SA_SIGINFO; + sigaction(SIGINT, &act, NULL); + sigaction(SIGHUP, &act, NULL); + sigaction(SIGTERM, &act, NULL); +} +void os_setup_limits(void) +{ + struct rlimit nofile; + + if (getrlimit(RLIMIT_NOFILE, &nofile) < 0) { + warn_report("unable to query NOFILE limit: %s", strerror(errno)); + return; + } + + if (nofile.rlim_cur =3D=3D nofile.rlim_max) { + return; + } + + nofile.rlim_cur =3D nofile.rlim_max; + + if (setrlimit(RLIMIT_NOFILE, &nofile) < 0) { + warn_report("unable to set NOFILE limit: %s", strerror(errno)); + return; + } +} +int os_mlock(bool on_fault) +{ +#ifdef HAVE_MLOCKALL + int ret =3D 0; + int flags =3D MCL_CURRENT | MCL_FUTURE; + + if (on_fault) { +#ifdef HAVE_MLOCK_ONFAULT + flags |=3D MCL_ONFAULT; +#else + error_report("mlockall: on_fault not supported"); + return -EINVAL; +#endif + } + + ret =3D mlockall(flags); + if (ret < 0) { + error_report("mlockall: %s", strerror(errno)); + } + + return ret; +#else + (void)on_fault; + return -ENOSYS; +#endif +} --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745300152; cv=none; d=zohomail.com; s=zohoarc; b=BKDJXI6elyYEDZbUXdGbGNqeuQ5AwnpvE1U1b28VBu58I+CTKD3bR0dV6Q7fFberMphssMlTF1UjWQ1uB2thfJnFkTNmgFRhd080jEKrwA0knl0SEnGJv25RJp1dYDRkJAckCuCsjiqVnygwktSOuFEdYzeZUcb1kV3BxpkBxS4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745300152; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=91nDVfsZm/oDTvNCG5UJidsky4wokob61rkejiRrWL8=; b=HCJiV8CnAxvkVK1zj+xPpCImtRJoO3Jx1BZ7OJ8XIKQCTeZEBv1vjZgqwFRBFNyFvOoe4fAZdGLBjQ67jCkQKgu6KGxrQ59MWBxdKDpjtMdpi27bhtNT3nVV/YzGyLFIQLtQzhgAxhQs1wrC0a0Mhj2VAOWO+3/2CvysvH89Y3k= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745300152018613.4876013822019; Mon, 21 Apr 2025 22:35:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76GJ-00087u-L5; Tue, 22 Apr 2025 01:33:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76Cp-0002Vj-Ae; Tue, 22 Apr 2025 01:30:06 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76Cn-0007wm-B6; Tue, 22 Apr 2025 01:30:02 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-227d6b530d8so47578525ad.3; Mon, 21 Apr 2025 22:29:59 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.29.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:29:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299798; x=1745904598; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=91nDVfsZm/oDTvNCG5UJidsky4wokob61rkejiRrWL8=; b=J9np1K/Rz/XCSD373csET7w2ZD31iU8EDrYjf+BHTvhVhQxuhD7Fqgfz11qwyINogA +J6c7qIWBepGjNv8gFAPeoypt0gE0XSDrx26XZbc3FBdxG51lO6r1uKLblyE5++1aWul Ur6HAHke7Q6w/Cq/Ag0C5Xczr+C4M8nwVpYZjDcRLO9G6WbSEmZADE1vYEM0q1mLPBpa nMQneOdhnkLErktq/8TbW4PNhrT/+k4xQ2jYGBSelV1DEvboRmeDC07FXng5fQQkMRAW HaB+LjnnBLrjJxZrg1E9+yGMq+/kEx4H3QAxZjl5g/axoG+sG85zF2qDq/bA2teSgfGR thkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299798; x=1745904598; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=91nDVfsZm/oDTvNCG5UJidsky4wokob61rkejiRrWL8=; b=P4OmYTb54tsHwIFx3dQ/imsgq7X42IHglR35tBTlYykMgyJiwXP+BOGgb5RDx+bxid VfWBrf84MHoUbf0YIRm5J5NDvHYCZOzjYfGFfitiseSZTeh4t6y06t2G/cHpHHQcMW2G to6FqmF+b7pQuj/4NsF93SvfXZR0x59SEcBmfcBTe7BlUYv+RXXwWgHiVawZjTqCIV/A mQOQkQRc91xg72eL87cwLvnnBfPcrN804dpHjcia4VNOovDt64c058vYZCKcL3SWgzFv ARGHyVf3ruH/5nzHRNM03/RF5bdrXkTAVU7Gy/htEQN3hU0jETq+IkRpcYD7XWoG15BV lOGQ== X-Forwarded-Encrypted: i=1; AJvYcCVAIsKRPKsetnrBP8jLafS0jxWX6GX+2Lhs8hR/Plru7cEHOpCgkPtB9Slc3RupppSXHJiZPtTqOxoOFw==@nongnu.org, AJvYcCVq97bfUcFQXdwUwmEtE3vdhJXiCUKn1FXDktf7RywnXYTqqltVFDvLT7jlLpIxJ3QH6HNvJXlo7w==@nongnu.org, AJvYcCWxncLJYBPNapLP6x5iLiZa22kJaDbKjhwxgtyVYF6GytkGZ38ra7/8hyT/Ib/VFAHC6Um+CPuz3bU=@nongnu.org, AJvYcCXwig18Gi6XWMFbQmPSChSwBCl6Pv5nvefOZ3MyRBPxug9I3TNByJZ/Htr6FSAklBaTJe4rpE3+8Wx7zA==@nongnu.org X-Gm-Message-State: AOJu0YwH+F8rqDBLyGU1i/vS/FSiSbUsQ3MKnGvAQ8TcOnNymGYb3Nv4 PU8+lTF/+tZyhRZBj2Nxu1o2YHITZsWJYFsuh3kSKSrhjNVFvE0l9tyV6tMP X-Gm-Gg: ASbGnctUPnyVulwCfcPHBOhBk0weARXt3Gi/WzFtwMolEk52MjTkk4Z6oVGfoCW7fQ+ ZHcOzdrbNpMjUHyTnNvKWVS9AFjWhst2frrapjHXgOeAApvWC2EzdFwOE95wrN7h22pMz4OlFyD hWP+56qRxRZXa1gwf9tNqEUNPqN/gmJNZ+LjPXCr34QBovhGjNXRqVqpdzKgSc17LaCrx1epUFu SJizV7meYW+6tUChBKQ1MvDxZbNzyPSubFWPbrihw8VzgIZk919WXwDTq8qZwUJSFds7LF2sVN5 8d1HZrzF13HTksMf7kyNcOtpyJhK08SPAJwds1/lxUx9+Aj/gpRpepiNIHo= X-Google-Smtp-Source: AGHT+IGnrKx9om/fH6E5cqBCPzL1EC7kn1mhDUexl2Lee4iRQjz8WINSi0mIksnLRWfOJyN3waQVew== X-Received: by 2002:a17:903:2a8e:b0:220:ca39:d453 with SMTP id d9443c01a7336-22c53583e56mr235563765ad.17.1745299798322; Mon, 21 Apr 2025 22:29:58 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 15/20] Disable options unsupported on Emscripten Date: Tue, 22 Apr 2025 14:27:19 +0900 Message-Id: <047b22618137ad1fa0abbfa061726ba08605c4d9.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745300153657019100 Content-Type: text/plain; charset="utf-8" Daemonizing and run-with aren't supported on Emscripten so disable these flags. Signed-off-by: Kohei Tokunaga Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- qemu-options.hx | 4 ++-- system/vl.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) V2: - Unified two consecutive #ifndef macros into a single condition in qemu-options.hx. diff --git a/qemu-options.hx b/qemu-options.hx index dc694a99a3..aab53bcfe8 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -4862,7 +4862,7 @@ SRST Start right away with a saved state (``loadvm`` in monitor) ERST =20 -#ifndef _WIN32 +#if !defined(_WIN32) && !defined(EMSCRIPTEN) DEF("daemonize", 0, QEMU_OPTION_daemonize, \ "-daemonize daemonize QEMU after initializing\n", QEMU_ARCH_ALL) #endif @@ -5249,7 +5249,7 @@ HXCOMM Internal use DEF("qtest", HAS_ARG, QEMU_OPTION_qtest, "", QEMU_ARCH_ALL) DEF("qtest-log", HAS_ARG, QEMU_OPTION_qtest_log, "", QEMU_ARCH_ALL) =20 -#ifdef CONFIG_POSIX +#if defined(CONFIG_POSIX) && !defined(EMSCRIPTEN) DEF("run-with", HAS_ARG, QEMU_OPTION_run_with, "-run-with [async-teardown=3Don|off][,chroot=3Ddir][user=3Dusername|ui= d:gid]\n" " Set miscellaneous QEMU process lifecycle options:\n" diff --git a/system/vl.c b/system/vl.c index 8d89394b45..255ea3be6b 100644 --- a/system/vl.c +++ b/system/vl.c @@ -766,7 +766,7 @@ static QemuOptsList qemu_smp_opts =3D { }, }; =20 -#if defined(CONFIG_POSIX) +#if defined(CONFIG_POSIX) && !defined(EMSCRIPTEN) static QemuOptsList qemu_run_with_opts =3D { .name =3D "run-with", .head =3D QTAILQ_HEAD_INITIALIZER(qemu_run_with_opts.head), @@ -3677,7 +3677,7 @@ void qemu_init(int argc, char **argv) case QEMU_OPTION_nouserconfig: /* Nothing to be parsed here. Especially, do not error out= below. */ break; -#if defined(CONFIG_POSIX) +#if defined(CONFIG_POSIX) && !defined(EMSCRIPTEN) case QEMU_OPTION_daemonize: os_set_daemonize(true); break; --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745300120; cv=none; d=zohomail.com; s=zohoarc; b=X33g5V1LzUV6QQt8fEQ60DrUVbuOb4ePmTtwLlOenzYd7zv4KPhY9pFg+Pnds1duFjJSjI7ot65yfhn5r3P/sqT2dkVprBpluUd/R1BVLbAzDqUWhhQsLnIK4XHEetdwfuQ2xG3MxFUovJiQFBDhCEH+hc0Kdb3/PY+hadPeOa4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745300120; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2FkVN9PsSNE2Egb+LipsDkf/RHaq4OxguwsmDIo9jqs=; b=Hw1EtCG/AqlA0pxel5XZgLa0WRyis78sfxIGsWz+TqElI8x4r8W6NimpC9FIqL8xNM/ZqagnS69YXVCNImZuO4rDQZLw2ksyvkqZW3qReEECTmQl04GUJPpyF5OhcGHuqMeYu/pawsNQ7vOYH8zovRTF3Sf9KAhez3qrIXMVmUg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174530012038913.06003689592751; Mon, 21 Apr 2025 22:35:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76GT-0000Ti-EV; Tue, 22 Apr 2025 01:33:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76Cz-0002qR-Kt; Tue, 22 Apr 2025 01:30:14 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76Cv-00089l-GJ; Tue, 22 Apr 2025 01:30:12 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-22d95f0dda4so9447145ad.2; Mon, 21 Apr 2025 22:30:06 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.29.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:30:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299806; x=1745904606; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2FkVN9PsSNE2Egb+LipsDkf/RHaq4OxguwsmDIo9jqs=; b=ErTJnUOhry5sw20L4i2bwkB3aZGj1SJBeiFM6ABpNn6VpcGT5CKCfBeXgV57DUl52i MxASKBV6irnef120skj+gP8kT//h+aiV/5oVdHg9pzTa5BxKmuMN75r98iCliPAJCLGL xX8nfaYqEqxZQeQdtrNoOQLzk+DovGJOG0lCIRmXC/TkO58bDLs9Q7aAhTtaibk18CCp F+OWHmGilLkIUnj8h3GrAHeam7Ohg50KQ4Hpb7Aimdj54PfDw1WhAvIZPsUbrp1/SiMy EpQgOfFRWFdmzdNXqlUJIQpFizHOoF+DMMUYlj9v7aZZcUFTyKa81RrffFNJOgzq941h 2J8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299806; x=1745904606; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2FkVN9PsSNE2Egb+LipsDkf/RHaq4OxguwsmDIo9jqs=; b=AeEMB25rAC0dUsLS20ZW3HXwarRS/uZVg8t8EC4stHuR14cGtiqYP7U1DuwL93tYX3 KvVqW0D2d0fFA+lUtsXY0lTnPXvSY1EGGr2nfkGEVaNgsZQyel2XQyRUlQj5Gqn31G2t JvGPnC0oslx5YHSnliCa6MK3erPS7YzJMbD/QZWGIa3e5fDFLRGJbIW9P2mp6Qm6V1cQ HduTi8DwFVFKe6ISVsGZyiCZb3SZBp+f1MxFWsB7/jT73jo4lO6aCtKgFX/nOncIMWSj BI65sQ3viDHZT6Jyh+DOuu3/fbJ9DdJ9paq2ankZKTkVPyKuOgu/NRJtZS7DkgFo7DYI 5GCg== X-Forwarded-Encrypted: i=1; AJvYcCUf2d5GI0QGdN3ZonYxxhJYx/5YADAzxx5yhxBj49aIgLy9e6nyMsguImoRFScTM4hwW6cTzjDXgVJhIg==@nongnu.org, AJvYcCWit7vh3MAHa02+cMJpYU1xZUI4TVXH3jqyig5Wa5aWL8QOjf/2HswMQs/XgttwKFPlfZm+vw3ecpGdzw==@nongnu.org, AJvYcCWpeR8jO2ro6i/DQybnUPDDoW9Ynp+bLfQlbRUDLjXeTsZU72kDEZCBwcSO0rr64Ejge6KOkkSVfw==@nongnu.org, AJvYcCXkebFYe2UEb52oRmQhd2ZxD+ElaXmOSC+vimrgfISuEwg+clBV/1a+6kBS8N6yXzN2AGcjm/JqU5s=@nongnu.org X-Gm-Message-State: AOJu0Yz2xrw9iXgW55ZjxvJbxTMrXdp8jwGdcg+q68K3yQSFTTI+zxY3 vkd7KdrIXQp06Gm6Nb6gI36GZhFqRxizx89rl8siYhX38wM8gfOhGRk1NHZ2 X-Gm-Gg: ASbGncvokVctYFP7lmhpm+c735qVB9jvIsjUPWZit1QMcxUxW7qKleHNdfOcjYS3fbA FEm3cIDUY55j9PCKn4UT4Gper40SAX28M9ZbuAWyITxFxN+kSEg34kzTBTiHWk4KKIRP50FH0xL gh4rxCKe9icmzyOwOQmQVvGv/MRsYOs7g5keRHYdbdlyr9HLvdhPlreUQJjBOySu7oNmpiAnILt xnCLYuAVs/bIlFtranz66KWIgRk1LjJz1Sxup7yL7h2u8hJ6wnbChtF9jAk7olKOGz2p3a5UyhP iV3mKmvmA5F7zOTWkxXEEumcc6Z6GqvVioAknc7onMZGzGbACufzwtpyqPY= X-Google-Smtp-Source: AGHT+IF7xwbiS5Pbd8i6m0BJ3l2AbPC1Rmn0ASj1QQA1F9dYuT3aDzSVpRYV+spAOV/dyXoUuJ6ZZw== X-Received: by 2002:a17:903:41c7:b0:220:faa2:c911 with SMTP id d9443c01a7336-22c535a4b39mr194143805ad.14.1745299805766; Mon, 21 Apr 2025 22:30:05 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 16/20] util: exclude mmap-alloc.c from compilation target on Emscripten Date: Tue, 22 Apr 2025 14:27:20 +0900 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x62e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745300121091019000 Content-Type: text/plain; charset="utf-8" Emscripten does not support partial unmapping of mmapped memory regions[1]. This limitation prevents correct implementation of qemu_ram_mmap and qemu_ram_munmap, which rely on partial unmap behavior. As a workaround, this commit excludes mmap-alloc.c from the Emscripten build. Instead, for Emscripten build, this modifies qemu_anon_ram_alloc to use qemu_memalign in place of qemu_ram_mmap, and disable memory backends that rely on mmap, such as memory-backend-file and memory-backend-shm. [1] https://github.com/emscripten-core/emscripten/blob/d4a74336f23214bf3304= d9eb0d03966786b30a36/system/lib/libc/emscripten_mmap.c#L61 Signed-off-by: Kohei Tokunaga --- backends/meson.build | 6 ++++-- system/memory.c | 2 +- system/physmem.c | 9 +++++---- util/meson.build | 4 +++- util/oslib-posix.c | 28 ++++++++++++++++++++++++++++ 5 files changed, 41 insertions(+), 8 deletions(-) V2: - Instead of porting mmap-alloc.c to Emscripten, this version excludes the file entirely. The rationale is described in the commit message. diff --git a/backends/meson.build b/backends/meson.build index da714b93d1..9b88d22685 100644 --- a/backends/meson.build +++ b/backends/meson.build @@ -12,8 +12,10 @@ system_ss.add([files( =20 if host_os !=3D 'windows' system_ss.add(files('rng-random.c')) - system_ss.add(files('hostmem-file.c')) - system_ss.add([files('hostmem-shm.c'), rt]) + if host_os !=3D 'emscripten' + system_ss.add(files('hostmem-file.c')) + system_ss.add([files('hostmem-shm.c'), rt]) + endif endif if host_os =3D=3D 'linux' system_ss.add(files('hostmem-memfd.c')) diff --git a/system/memory.c b/system/memory.c index 4c829793a0..f5fcbfa799 100644 --- a/system/memory.c +++ b/system/memory.c @@ -1636,7 +1636,7 @@ bool memory_region_init_resizeable_ram(MemoryRegion *= mr, return true; } =20 -#ifdef CONFIG_POSIX +#if defined(CONFIG_POSIX) && !defined(EMSCRIPTEN) bool memory_region_init_ram_from_file(MemoryRegion *mr, Object *owner, const char *name, diff --git a/system/physmem.c b/system/physmem.c index 333a5eb94d..76c65edb62 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -1242,7 +1242,7 @@ long qemu_maxrampagesize(void) return pagesize; } =20 -#ifdef CONFIG_POSIX +#if defined(CONFIG_POSIX) && !defined(EMSCRIPTEN) static int64_t get_file_size(int fd) { int64_t size; @@ -1977,7 +1977,7 @@ out_free: } } =20 -#ifdef CONFIG_POSIX +#if defined(CONFIG_POSIX) && !defined(EMSCRIPTEN) RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, ram_addr_t max_size, qemu_ram_resize_cb resized, MemoryRegion = *mr, uint32_t ram_flags, int fd, off_t offset, @@ -2157,7 +2157,8 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, ra= m_addr_t max_size, assert(!host ^ (ram_flags & RAM_PREALLOC)); assert(max_size >=3D size); =20 -#ifdef CONFIG_POSIX /* ignore RAM_SHARED for Windows */ + /* ignore RAM_SHARED for Windows and emscripten*/ +#if defined(CONFIG_POSIX) && !defined(EMSCRIPTEN) if (!host) { if (!share_flags && current_machine->aux_ram_share) { ram_flags |=3D RAM_SHARED; @@ -2254,7 +2255,7 @@ static void reclaim_ramblock(RAMBlock *block) ; } else if (xen_enabled()) { xen_invalidate_map_cache_entry(block->host); -#ifndef _WIN32 +#if !defined(_WIN32) && !defined(EMSCRIPTEN) } else if (block->fd >=3D 0) { qemu_ram_munmap(block->fd, block->host, block->max_length); close(block->fd); diff --git a/util/meson.build b/util/meson.build index 780b5977a8..e5cd327e27 100644 --- a/util/meson.build +++ b/util/meson.build @@ -11,7 +11,9 @@ if host_os !=3D 'windows' endif util_ss.add(files('compatfd.c')) util_ss.add(files('event_notifier-posix.c')) - util_ss.add(files('mmap-alloc.c')) + if host_os !=3D 'emscripten' + util_ss.add(files('mmap-alloc.c')) + endif freebsd_dep =3D [] if host_os =3D=3D 'freebsd' freebsd_dep =3D util diff --git a/util/oslib-posix.c b/util/oslib-posix.c index a697c602c6..4ff577e5de 100644 --- a/util/oslib-posix.c +++ b/util/oslib-posix.c @@ -58,6 +58,7 @@ #include #endif =20 +#include "qemu/memalign.h" #include "qemu/mmap-alloc.h" =20 #define MAX_MEM_PREALLOC_THREAD_COUNT 16 @@ -210,11 +211,21 @@ void *qemu_anon_ram_alloc(size_t size, uint64_t *alig= nment, bool shared, const uint32_t qemu_map_flags =3D (shared ? QEMU_MAP_SHARED : 0) | (noreserve ? QEMU_MAP_NORESERVE : 0); size_t align =3D QEMU_VMALLOC_ALIGN; +#ifndef EMSCRIPTEN void *ptr =3D qemu_ram_mmap(-1, size, align, qemu_map_flags, 0); =20 if (ptr =3D=3D MAP_FAILED) { return NULL; } +#else + /* + * qemu_ram_mmap is not implemented for Emscripten. Use qemu_memalign + * for the anonymous allocation. noreserve is ignored as there is no s= wap + * space on Emscripten, and shared is ignored as there is no other + * processes on Emscripten. + */ + void *ptr =3D qemu_memalign(align, size); +#endif =20 if (alignment) { *alignment =3D align; @@ -227,7 +238,16 @@ void *qemu_anon_ram_alloc(size_t size, uint64_t *align= ment, bool shared, void qemu_anon_ram_free(void *ptr, size_t size) { trace_qemu_anon_ram_free(ptr, size); +#ifndef EMSCRIPTEN qemu_ram_munmap(-1, ptr, size); +#else + /* + * qemu_ram_munmap is not implemented for Emscripten and qemu_memalign + * was used for the allocation. Use the corresponding freeing function + * here. + */ + qemu_vfree(ptr); +#endif } =20 void qemu_socket_set_block(int fd) @@ -588,7 +608,15 @@ bool qemu_prealloc_mem(int fd, char *area, size_t sz, = int max_threads, { static gsize initialized; int ret; +#ifndef EMSCRIPTEN size_t hpagesize =3D qemu_fd_getpagesize(fd); +#else + /* + * mmap-alloc.c is excluded from Emscripten build, so qemu_fd_getpages= ize + * is unavailable. Fallback to the lower level implementation. + */ + size_t hpagesize =3D qemu_real_host_page_size(); +#endif size_t numpages =3D DIV_ROUND_UP(sz, hpagesize); bool use_madv_populate_write; struct sigaction act; --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745300256; cv=none; d=zohomail.com; s=zohoarc; b=dyaiwh59dw0KrVIm8d92JI3RHVYPlBPfU9+7BvqWWI0IKkozrB0UX0wVTbzsSXcMrqDbPqUyjNDwhW8CnB3aIK1k1ql7o6s0vqMOtul75tDMVrHmXNIA/6nWY6Pgx0tknK/sSJHWO7GcnlYNEGSx8O4MzlpYq/JVXeYqeJ6oDUk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745300256; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OZJBhCTsN3O6Lx1qPX+scfds1YZkk4ZSjoc7nql2Rf8=; b=gW2kEWfVlr/NHn3CWg31Rpz2CE0LjCiXf48RxtE9IjgDxCQGgntro1EM1Scecl+QUHicu49xgqv4obYNgLFAJHi36Skrrs88kqJ0veKPo3J+DN0Uw4b5QzJ0H4NtVJQdKrK0TO6OGisr0V5VZTqj3iRhNLliFpXyPdDG+VW8EVU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745300256214619.9824443574371; Mon, 21 Apr 2025 22:37:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76GM-0008PF-6z; Tue, 22 Apr 2025 01:33:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76D5-0002zj-8k; Tue, 22 Apr 2025 01:30:24 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76D2-0008BP-ME; Tue, 22 Apr 2025 01:30:18 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-224100e9a5cso54472365ad.2; Mon, 21 Apr 2025 22:30:14 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.30.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:30:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299814; x=1745904614; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OZJBhCTsN3O6Lx1qPX+scfds1YZkk4ZSjoc7nql2Rf8=; b=hELil73mVeg4x9E8r9ZojkZLpuJ3RMxJXcgrLpXR9kb9fVbCNj2VpAV1KEaM74YVKl w2BegkYTCl3hm7r8Wu6S7W6G29m+x+WmO9OB67VHtGlb/oZA6OSL2ODhguqlYhf0S2EK xJ02iNwdFhCtSfiq0EqAuuwKeaBJ/5632sFIaIOg82+PMeY4+h9sJvhDuqwKNO4x0uP8 sIezA4Gd/Dcykc94ZW+mD9I7sBWWZLAT0cfdjWTGWo80KceJof22OGCTaTngTVDdORzo tc/X9Z5INpZP1mrmWEG1yLRFFSM5H01OgmRA87KMH5pq8wJhf+JdP7zkL4Yx9+LLxBDi yqmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299814; x=1745904614; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OZJBhCTsN3O6Lx1qPX+scfds1YZkk4ZSjoc7nql2Rf8=; b=mGP4+O+0Vzs4euc2eWZuadQ2xfxVOrFypnK/Wm0aqAisECNNKN4IMbT5cH1pOytoEO NhvcYl/bgxxXIziXMIAyB31V1fAYaMnpN5BiLY4tDEg4saXphtqNBpfOjY0Zrn2Tw9Kh U/0PEYe6xyR+PU93+cABW8s3lS5FDomT2lbe9TUInwgahRyDYwHLzdadJ91bszRNg9Ae /JGBbLbTNa9vV0FWdyrZuRgoEPcOXgYng5shEtYF+ZVF0TMP0QDTg+NTh+PICAYJR77p z9hP3iTTDCa4HHNpTFc6l/cXt7QT94wCxvp6VSjtY9EjIi+FOViYKuTQobJUEwEYuukK 5KTQ== X-Forwarded-Encrypted: i=1; AJvYcCWN6gxhYbCJDbq62P/CFi42OMo15lahBfoNF4aNTKvJaOORdHMAoAPG9+LDfrio05ChEAR2wdubLpo=@nongnu.org, AJvYcCWVLdVUpo9xP7w+aqjstdyV2uPbSx/ZSb3s0tP9fsdgc4mts0fUqZOuFlnDZr/3l6ZnY+Eh61N+L2AuFA==@nongnu.org, AJvYcCWgumN4ULBDWW7GmJAQYSjmOj52XwrHqTMl6LN5WWGvOsF17Wpw0XltA8HkO3hpJRhn6vS4LbiAAw==@nongnu.org, AJvYcCXs/VjKYwaOBAth/hlGVHX+76gfvsWVK1J01rACKw5X8buYwJ1CVe0mVb3+2is0r8HVCjwAVQO4RKovPg==@nongnu.org X-Gm-Message-State: AOJu0Yz8dGeiisIYX9J26TsVW8FyZC+CK6mbtDILa16jrMAfZekrUC+i +B2sQz2rgvz5pNEaEJgJ6Hd0iQIB9DgY9/zHASe6/vi4xJc+3irRMCsV2G7D X-Gm-Gg: ASbGncsWiMHW7MDwUS30CNlFv/RgMeMS3t0JGQidmQLOHYnc2BirR+klZVKnHnQL1Vh 5lyX4Zk8hq9xUNGlgbO92GtJ2WiFUQZWGT8pFNXPEiKc4XSDcv+WYfBu79o7OP+onOW5rNynNEy ftCAO569ee9v35i1+pD0++ftayFgfm+AE7i1VinCwixPAk7EQMzYB+NCwnrVSNwBPpbF2u4Lxeq nMq2opvDdBV8g89dT/xgUqwlFxNQqdlxEPQzwDCIalqqr3/i/7uA2uBq2NAXzOYoYB9BfaBxyYz UnIrFBHP1OCMmV+5DsGLaQHZ7Qw4bYCfifdjk02DKQz8RgsZO5VZesknCo0= X-Google-Smtp-Source: AGHT+IFSt/tJV0CpnE6V2hLouTHQ6ku88AMsbKVeVRMXeP3Flg699MixtrSFkbPBDLaSqOsNQluUDg== X-Received: by 2002:a17:902:ebc3:b0:220:e63c:5aff with SMTP id d9443c01a7336-22c5361b3e7mr198582405ad.47.1745299813562; Mon, 21 Apr 2025 22:30:13 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 17/20] util: Add coroutine backend for emscripten Date: Tue, 22 Apr 2025 14:27:21 +0900 Message-Id: <82afa4d287a16f89fa59f08cba14fb06e017ea83.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x629.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745300257083019000 Content-Type: text/plain; charset="utf-8" Emscripten does not support couroutine methods currently used by QEMU but provides a coroutine implementation called "fiber". This commit introduces a coroutine backend using fiber. Note that fiber does not support submitting coroutines to other threads. Signed-off-by: Kohei Tokunaga Acked-by: Stefan Hajnoczi --- MAINTAINERS | 1 + util/coroutine-wasm.c | 127 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 util/coroutine-wasm.c V2: - Split the MAINTAINERS file change that adds coroutine-wasm.c from the previous 19th patch into this commit. diff --git a/MAINTAINERS b/MAINTAINERS index c7a20ac8d7..72319f804e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -624,6 +624,7 @@ M: Kohei Tokunaga S: Maintained F: include/system/os-wasm.h F: os-wasm.c +F: util/coroutine-wasm.c =20 Alpha Machines -------------- diff --git a/util/coroutine-wasm.c b/util/coroutine-wasm.c new file mode 100644 index 0000000000..cb1ec92509 --- /dev/null +++ b/util/coroutine-wasm.c @@ -0,0 +1,127 @@ +/* + * emscripten fiber coroutine initialization code + * based on coroutine-ucontext.c + * + * Copyright (C) 2006 Anthony Liguori + * Copyright (C) 2011 Kevin Wolf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.0 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#include "qemu/osdep.h" +#include "qemu/coroutine_int.h" +#include "qemu/coroutine-tls.h" + +#include + +typedef struct { + Coroutine base; + void *stack; + size_t stack_size; + + void *asyncify_stack; + size_t asyncify_stack_size; + + CoroutineAction action; + + emscripten_fiber_t fiber; +} CoroutineEmscripten; + +/** + * Per-thread coroutine bookkeeping + */ +QEMU_DEFINE_STATIC_CO_TLS(Coroutine *, current); +QEMU_DEFINE_STATIC_CO_TLS(CoroutineEmscripten *, leader); +size_t leader_asyncify_stack_size =3D COROUTINE_STACK_SIZE; + +static void coroutine_trampoline(void *co_) +{ + Coroutine *co =3D co_; + + while (true) { + co->entry(co->entry_arg); + qemu_coroutine_switch(co, co->caller, COROUTINE_TERMINATE); + } +} + +Coroutine *qemu_coroutine_new(void) +{ + CoroutineEmscripten *co; + + co =3D g_malloc0(sizeof(*co)); + + co->stack_size =3D COROUTINE_STACK_SIZE; + co->stack =3D qemu_alloc_stack(&co->stack_size); + + co->asyncify_stack_size =3D COROUTINE_STACK_SIZE; + co->asyncify_stack =3D g_malloc0(co->asyncify_stack_size); + emscripten_fiber_init(&co->fiber, coroutine_trampoline, &co->base, + co->stack, co->stack_size, co->asyncify_stack, + co->asyncify_stack_size); + + return &co->base; +} + +void qemu_coroutine_delete(Coroutine *co_) +{ + CoroutineEmscripten *co =3D DO_UPCAST(CoroutineEmscripten, base, co_); + + qemu_free_stack(co->stack, co->stack_size); + g_free(co->asyncify_stack); + g_free(co); +} + +CoroutineAction qemu_coroutine_switch(Coroutine *from_, Coroutine *to_, + CoroutineAction action) +{ + CoroutineEmscripten *from =3D DO_UPCAST(CoroutineEmscripten, base, fro= m_); + CoroutineEmscripten *to =3D DO_UPCAST(CoroutineEmscripten, base, to_); + + set_current(to_); + to->action =3D action; + emscripten_fiber_swap(&from->fiber, &to->fiber); + return from->action; +} + +Coroutine *qemu_coroutine_self(void) +{ + Coroutine *self =3D get_current(); + + if (!self) { + CoroutineEmscripten *leaderp =3D get_leader(); + if (!leaderp) { + leaderp =3D g_malloc0(sizeof(*leaderp)); + leaderp->asyncify_stack =3D g_malloc0(leader_asyncify_stack_si= ze); + leaderp->asyncify_stack_size =3D leader_asyncify_stack_size; + emscripten_fiber_init_from_current_context( + &leaderp->fiber, + leaderp->asyncify_stack, + leaderp->asyncify_stack_size); + leaderp->stack =3D leaderp->fiber.stack_limit; + leaderp->stack_size =3D + leaderp->fiber.stack_base - leaderp->fiber.stack_limit; + set_leader(leaderp); + } + self =3D &leaderp->base; + set_current(self); + } + return self; +} + +bool qemu_in_coroutine(void) +{ + Coroutine *self =3D get_current(); + + return self && self->caller; +} --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745300282; cv=none; d=zohomail.com; s=zohoarc; b=TUVrlBwzWp+Nw7KKBU3J0OkT2w/7Rnw4qVr1Ml63EBlY/5/O9W2lE1oEFt+00v3tLNDTpjleBtWjJhuihXsYK0tlDAvY96MYSg56UX+6Zh1e/yHzTm8VT7efQM3b1Il/aWdTs5AG7K2DHBFKW/y/JLR9i8rDXNkX+IHuPTSPeeo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745300282; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bR9tjJsEvQbCR1Whb3KG+MPH3ySGS1KrwXPV7+RU2DI=; b=EPPW/G2GuYc+6BOyWw15zh8XBYtZwAS7fb3BCCzV4LLr7DyhddjvkZIwee/TtO9fiYv35CH8Fi+oY/PGL06HrUz8SsIAke54bfkzVHIjdIXYxivSTVd2sY27A4okW2TqAQViuU2m/8V7a7TvvyAq8gbCtAI8aN91//Tvn7v2zoY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 174530028240615.413830369887819; Mon, 21 Apr 2025 22:38:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76GZ-000108-W8; Tue, 22 Apr 2025 01:33:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76DE-0003JK-FV; Tue, 22 Apr 2025 01:30:31 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76DB-0008CC-Ea; Tue, 22 Apr 2025 01:30:28 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2241053582dso66090925ad.1; Mon, 21 Apr 2025 22:30:22 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.30.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:30:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299822; x=1745904622; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bR9tjJsEvQbCR1Whb3KG+MPH3ySGS1KrwXPV7+RU2DI=; b=aMMP/nZUq7oEdHGxxZ5FYdNTyZHs7nVtQjISEwU2DUGvT3UQhWbvTnMdYRpe1Xbb01 1+I+qANBKPXMXHlbFD2vNuZSOkFt8wiQxtlGbwu8lZqeYxiya6ngO349YqUyVCQhFH0H xP0eKanVHAWR5NY8+vh5fAiKSGWQElJfkDV2hYZfAER2im8Y8xxbZZ9l49yaZw0S1yVZ V2XEvABhJO5R30amGG9QNpYpHH8r/Eoiata30HoElVtIrcgQXGMWySNShD7ivFwvvTJB JqQJ9EoVEToz6P1dOsbumP2DT3HAmTzslq8fH7CaT4HtgfwcPkV+Lv85xfyYOrQ18EJI Fk8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299822; x=1745904622; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bR9tjJsEvQbCR1Whb3KG+MPH3ySGS1KrwXPV7+RU2DI=; b=YrnL4j0Ma331Ggb+hx+IgCLVjh+f8PADfTW6xFvFmirOFSpOVnLjw6rD7o0xCwNj/i AcVXUmoel710RK7yCMNriY/Hguu3KWzTtJT7vij+MyH8cjJJpNfSaNB4OkSbV6cXYKBQ eLp4Sru8QFcKT5+gHRHsFxMsg9mzbu4WJJR0I1rJ8DqfRGP+MQsfMmll+IAvA9MOUgAY EnyaZi1rcFofAZYS/J0UUrt4dgJpiuhXzOpF0Fg1UX3Yik1kZTgUszqjJFNbJ2UlZC/h 8N+1Um2zY107nUWodhof45ENoFGwoHkGh5O+QDTcp267v9NJv1VonKKr73OqOOi1d6cl v2kQ== X-Forwarded-Encrypted: i=1; AJvYcCUD0EbEHf/RV/r0JYTzBdqiWY/H41bV01ikHxC7LmbIib9Kg0aW1Ktgud7BS2O0a0VB9RX7bFo9kAg=@nongnu.org, AJvYcCUsgcVzbam7moiFAh/G8Swu43snEGsHUI+4qw129sbOH2LZSE4eEXP4kAKIO7IvRA8N4ij2PhqeCJ7wlg==@nongnu.org, AJvYcCX4CkbB51ZTelRaQdbOphKMFI9JrbFK+eNb+BVNiiJUa78cJVzhKXxYjMHbf0A2jTvUG8Lgwu4v9g==@nongnu.org, AJvYcCXDpInUBtXZEAVaDuZjIxzemi/mQ8u8tm+AxtYbtI6cRH5DHDSNVSMtxWR3yOE+Eah30SSYvZxGBSqZ5g==@nongnu.org X-Gm-Message-State: AOJu0YxhdQ3ckFwkWPTQHfKc5xMqaG6smkaCmzfX1k3luzi+hj5TZpBh bzib7ARhwQ2dLFxys+p3wrVowf4avyqVYPXmeIHSNLCLd57YRfwZjAj9YyNR X-Gm-Gg: ASbGncuuL3txenVa22Xut0cReDXO2ZZVRVRU52GDVWYYU+bEosvlaOJj6vO5e3tJR1E eD9uiogPRsEpDy+VqDQTZT3f5fArLar5ZdzHbJCEweWup59oHWY0FfU8VBGX386uB1V+GeAcj/h 2H1KHe+1+GXBlAzfmXW991OYdqc7SO0GxWvrBhjnYiC8nxgwKJNAFRZIFgKOSP+0t8spguxKEAo H5Qo8WODkja/SG+FD1127Gctwe0FstpU4UdnzLu8Eqil7ahCJLh4MnvJL4w+QL3kBRIiCoky0J+ p9VHZ+36oJGdMvK8kWbJxsmTRypj4/HM92fhszl61QjwEBBl2sZj8esQppdCGvuTXqh8qQ== X-Google-Smtp-Source: AGHT+IHWjB+vgR42QzHXmmAa0NzXDyG4fgHjHTbVtmEiLwNlQYswMdR3+qkU+j/iMWiwq0zWpii8HA== X-Received: by 2002:a17:902:f64c:b0:223:5379:5e4e with SMTP id d9443c01a7336-22c53285b05mr227915295ad.10.1745299821428; Mon, 21 Apr 2025 22:30:21 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 18/20] meson: Add wasm build in build scripts Date: Tue, 22 Apr 2025 14:27:22 +0900 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x62f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745300284243019100 Content-Type: text/plain; charset="utf-8" has_int128_type is set to false on emscripten as of now to avoid errors by libffi. Tests are disabled on emscripten because they rely on host features that aren't supported by emscripten (e.g. fork and unix socket). Signed-off-by: Kohei Tokunaga --- MAINTAINERS | 1 + configs/meson/emscripten.txt | 8 ++++++++ configure | 7 +++++++ meson.build | 29 ++++++++++++++++++++++++----- meson_options.txt | 2 +- scripts/meson-buildoptions.sh | 2 +- 6 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 configs/meson/emscripten.txt V2: - In meson.build, added a check to ensure TCI is enabled for the wasm build. - Split the MAINTAINERS file change that adds emscripten.txt from the previous 19th patch into this commit. diff --git a/MAINTAINERS b/MAINTAINERS index 72319f804e..0fb7fd79b6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -625,6 +625,7 @@ S: Maintained F: include/system/os-wasm.h F: os-wasm.c F: util/coroutine-wasm.c +F: configs/meson/emscripten.txt =20 Alpha Machines -------------- diff --git a/configs/meson/emscripten.txt b/configs/meson/emscripten.txt new file mode 100644 index 0000000000..4230e88005 --- /dev/null +++ b/configs/meson/emscripten.txt @@ -0,0 +1,8 @@ +[built-in options] +c_args =3D ['-pthread'] +cpp_args =3D ['-pthread'] +objc_args =3D ['-pthread'] +# -sPROXY_TO_PTHREAD link time flag always requires -pthread even during +# configuration so explicitly add the flag here. +c_link_args =3D ['-pthread','-sASYNCIFY=3D1','-sPROXY_TO_PTHREAD=3D1','-sF= ORCE_FILESYSTEM','-sALLOW_TABLE_GROWTH','-sTOTAL_MEMORY=3D2GB','-sWASM_BIGI= NT','-sEXPORT_ES6=3D1','-sASYNCIFY_IMPORTS=3Dffi_call_js','-sEXPORTED_RUNTI= ME_METHODS=3DaddFunction,removeFunction,TTY,FS'] +cpp_link_args =3D ['-pthread','-sASYNCIFY=3D1','-sPROXY_TO_PTHREAD=3D1','-= sFORCE_FILESYSTEM','-sALLOW_TABLE_GROWTH','-sTOTAL_MEMORY=3D2GB','-sWASM_BI= GINT','-sEXPORT_ES6=3D1','-sASYNCIFY_IMPORTS=3Dffi_call_js','-sEXPORTED_RUN= TIME_METHODS=3DaddFunction,removeFunction,TTY,FS'] diff --git a/configure b/configure index 02f1dd2311..a1fe6e11cd 100755 --- a/configure +++ b/configure @@ -360,6 +360,10 @@ elif check_define __NetBSD__; then host_os=3Dnetbsd elif check_define __APPLE__; then host_os=3Ddarwin +elif check_define EMSCRIPTEN ; then + host_os=3Demscripten + cpu=3Dwasm32 + cross_compile=3D"yes" else # This is a fatal error, but don't report it yet, because we # might be going to just print the --help text, or it might @@ -526,6 +530,9 @@ case "$cpu" in linux_arch=3Dx86 CPU_CFLAGS=3D"-m64" ;; + wasm32) + CPU_CFLAGS=3D"-m32" + ;; esac =20 if test -n "$host_arch" && { diff --git a/meson.build b/meson.build index 41f68d3806..a7bffd76d0 100644 --- a/meson.build +++ b/meson.build @@ -50,9 +50,9 @@ genh =3D [] qapi_trace_events =3D [] =20 bsd_oses =3D ['gnu/kfreebsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly',= 'darwin'] -supported_oses =3D ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', '= sunos', 'linux'] +supported_oses =3D ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', '= sunos', 'linux', 'emscripten'] supported_cpus =3D ['ppc', 'ppc64', 's390x', 'riscv32', 'riscv64', 'x86', = 'x86_64', - 'arm', 'aarch64', 'loongarch64', 'mips', 'mips64', 'sparc64'] + 'arm', 'aarch64', 'loongarch64', 'mips', 'mips64', 'sparc64', 'wasm32'] =20 cpu =3D host_machine.cpu_family() =20 @@ -353,6 +353,8 @@ foreach lang : all_languages # endif #endif''') # ok + elif compiler.get_id() =3D=3D 'emscripten' + # ok else error('You either need GCC v7.4 or Clang v10.0 (or XCode Clang v15.0) = to compile QEMU') endif @@ -470,7 +472,10 @@ endif # instead, we can't add -no-pie because it overrides -shared: the linker t= hen # tries to build an executable instead of a shared library and fails. So # don't add -no-pie anywhere and cross fingers. :( -if not get_option('b_pie') +# +# Emscripten doesn't support -no-pie but meson can't catch the compiler +# warning. So explicitly omit the flag for Emscripten. +if not get_option('b_pie') and host_os !=3D 'emscripten' qemu_common_flags +=3D cc.get_supported_arguments('-fno-pie', '-no-pie') endif =20 @@ -514,6 +519,8 @@ ucontext_probe =3D ''' supported_backends =3D [] if host_os =3D=3D 'windows' supported_backends +=3D ['windows'] +elif host_os =3D=3D 'emscripten' + supported_backends +=3D ['wasm'] else if host_os !=3D 'darwin' and cc.links(ucontext_probe) supported_backends +=3D ['ucontext'] @@ -902,6 +909,10 @@ if get_option('tcg').allowed() if not get_option('tcg_interpreter') error('Unsupported CPU @0@, try --enable-tcg-interpreter'.format(cpu= )) endif + elif host_arch =3D=3D 'wasm32' + if not get_option('tcg_interpreter') + error('WebAssembly host requires --enable-tcg-interpreter') + endif elif get_option('tcg_interpreter') warning('Use of the TCG interpreter is not recommended on this host') warning('architecture. There is a native TCG execution backend availab= le') @@ -2962,7 +2973,9 @@ config_host_data.set('CONFIG_ATOMIC64', cc.links(''' return 0; }''', args: qemu_isa_flags)) =20 -has_int128_type =3D cc.compiles(''' +# has_int128_type is set to false on Emscripten to avoid errors by libffi +# during runtime. +has_int128_type =3D host_os !=3D 'emscripten' and cc.compiles(''' __int128_t a; __uint128_t b; int main(void) { b =3D a; }''') @@ -3774,6 +3787,8 @@ if have_block # os-win32.c does not if host_os =3D=3D 'windows' system_ss.add(files('os-win32.c')) + elif host_os =3D=3D 'emscripten' + blockdev_ss.add(files('os-wasm.c')) else blockdev_ss.add(files('os-posix.c')) endif @@ -4456,7 +4471,11 @@ subdir('scripts') subdir('tools') subdir('pc-bios') subdir('docs') -subdir('tests') +# Tests are disabled on emscripten because they rely on host features that= aren't +# supported by emscripten (e.g. fork and unix socket). +if host_os !=3D 'emscripten' + subdir('tests') +endif if gtk.found() subdir('po') endif diff --git a/meson_options.txt b/meson_options.txt index 59d973bca0..45772484cc 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -34,7 +34,7 @@ option('fuzzing_engine', type : 'string', value : '', option('trace_file', type: 'string', value: 'trace', description: 'Trace file prefix for simple backend') option('coroutine_backend', type: 'combo', - choices: ['ucontext', 'sigaltstack', 'windows', 'auto'], + choices: ['ucontext', 'sigaltstack', 'windows', 'wasm', 'auto'], value: 'auto', description: 'coroutine backend to use') =20 # Everything else can be set via --enable/--disable-* option diff --git a/scripts/meson-buildoptions.sh b/scripts/meson-buildoptions.sh index 3e8e00852b..0568385f00 100644 --- a/scripts/meson-buildoptions.sh +++ b/scripts/meson-buildoptions.sh @@ -80,7 +80,7 @@ meson_options_help() { printf "%s\n" ' --tls-priority=3DVALUE Default TLS protocol/cipher = priority string' printf "%s\n" ' [NORMAL]' printf "%s\n" ' --with-coroutine=3DCHOICE coroutine backend to use (ch= oices:' - printf "%s\n" ' auto/sigaltstack/ucontext/wind= ows)' + printf "%s\n" ' auto/sigaltstack/ucontext/wind= ows/wasm)' printf "%s\n" ' --with-pkgversion=3DVALUE use specified string as sub-= version of the' printf "%s\n" ' package' printf "%s\n" ' --with-suffix=3DVALUE Suffix for QEMU data/modules= /config directories' --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745300121; cv=none; d=zohomail.com; s=zohoarc; b=jYSUPsaLQra/X2+VbzGCynUb1f8qJjG3GktZvXYM/s7yQwRXkFeEbTKZVzxBalbeXSGqpwQyF70G2u+0pDhudKfS3SFNkRlAF9BD5HKw0ZaadcrtLhp4Srn5XWalNzv87Poh1xZ5WbUQDOlptSS9XEBHAaqFU4gkwVm2hEnENIU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745300121; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EyswPERNVPUmMfuIfE21udR+zks7HJrFsl2VmGBeB2w=; b=Y0VC4wkMfVE0tKQVSiMRRdUby0H2Pc4huxHuXgacXQje5XXon4cxUiEIrDRXy3ergQcsOHVCRQi7AIDgVXCHzATsJru5553nd4TfcQjOVANMA+DIHI7rGL5LBnyxG4rPCQ++bIb7KWA5jiST9uc8Q99YmfX9Te2UKvjh2ifdlEw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745300121274985.3736824155561; Mon, 21 Apr 2025 22:35:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76Gf-0001IC-2e; Tue, 22 Apr 2025 01:34:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76DK-0003O1-1i; Tue, 22 Apr 2025 01:30:35 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76DH-0008D4-Qq; Tue, 22 Apr 2025 01:30:33 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2264aefc45dso76093815ad.0; Mon, 21 Apr 2025 22:30:30 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.30.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:30:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299829; x=1745904629; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EyswPERNVPUmMfuIfE21udR+zks7HJrFsl2VmGBeB2w=; b=mqIYYFO1nEMVbMPYxFLnPYMeMTiGMiy7HLjGj4vv4YnOuYUUfEIhhZ6tlHEmbcukca zW0vNlPfX1d2ZktAYY78W9z7ZvKEKpkkp17aUkhDoH3SQw53G4PKq9Hvm8kFU3UGczcP /l+97Yjkq3uUZJ+IvqDQiiV0LHe4l6TnmXLoX8aMnhD+l+29uNiu0RVRmFc+TQPONwf3 P8wAvSvJs033m+75J31VT4HFdZANOzR/XkEvWi8lEe3+qYKObgU/jUcbS7JDg2U+/GM1 uvMiTeLZZh4lbeBUMMiwmnm3iS878RJ6DFjC8Ky8SPHe3RwL4oclPbI0ES8ag87yL6i9 t5cA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299829; x=1745904629; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EyswPERNVPUmMfuIfE21udR+zks7HJrFsl2VmGBeB2w=; b=Zi/vTXrUW0jw8VDQarXPe0BDiWPQBZih3jHTZNgzxsUBBPTMQ4gtZXlh3CPnf1eC2m 0Hgz/fw8tqRHZLJOkRqWhiJkDD6VLfAAKLdZVX6gxBH0rzN1cn87VADahqstybGw+kAs kZVau60qZutr79OXJ0utJszkDLz6thRxE6E3MF1BDC32q/3C5/cda94UQmrgR2o7vlPt 10j572Ako8mDoqG35IhRjYTJJMYqFFT3oHUkfWi+BbgZpCXlD5rFokqLhfaSVsMPJLlC d064YyFeErZvM7zY4iwSvnxs5wicxFlcNAP/ka+6SJOIoQf4o3i7GSDKms9dnXfr1Snb 2jag== X-Forwarded-Encrypted: i=1; AJvYcCVDKgDAooc4yp4sZNj9soREzXbQPc+7j50cddob42E7+FH9Qm7bRa2fqIrE8sIgxGs85zHs7I1em4j3tw==@nongnu.org, AJvYcCVeFK9HtStEqkDMItB6dqROQQaIGGKj6rQKzXIpMPFFdjr07lrLYEE+7+HsnimiLTB635dJRpbaf9qYAA==@nongnu.org, AJvYcCWL/aigH2FHpjGhexBRBQ8Z+zD/cpnnh1aJw3NgJn+ANJm3L/Bq1V53ZZmVkZczxcCOxu8WivebCA==@nongnu.org, AJvYcCXs2bVI8sDsWJfZqYZmYMeH9RDTcb9FZZXRotk827kTdPm2O7w8yZEU4IgVSCxlCgnCOdPpBoG0N4c=@nongnu.org X-Gm-Message-State: AOJu0YxZOpgTDJ4hu+mO0RDt+EyffBZpbCibqf/l9r57rjCcoKAHTOOE ewvkTGrIPzEbS8xJZmh/WyfQliX+FQnJpPibjJty3xAlDASDpm0YWvu9VtmF X-Gm-Gg: ASbGnct9/Dwzxc/1fsHNreXfDqTNZbm0MOxyr1YV5UXHUl008fqLwfHDOn6kPqOUMTg Kb5I2dKXox11VavjUZmshjZy+sr0Vs3zbwfY3G35BLLOF0QLzmu3UZfMYrYZoH+SAGNeWf7UR/m AWW2/T1Qvp6os5BmAorKmz938tMBsmk+GgbgZmeIjGhJhws9WyOG0J7lN++LXDA0S20b5g5ZVhi w4yyz7flMEdbS8SwMp7eL3+Qf6OPctxgIr2JI7L/C368jF67WPCJrv+lmNtDqfrMN2BeAORirtM Ao3QDScTRE53KRJfOmWF64vQ25oG5Tib2/9S+OfwreZIgOY3A/5ROTJajlg= X-Google-Smtp-Source: AGHT+IF866eeRMlWTJ5okWrqXs+r8BGchJhPURBo/iH1ZtCGUA/9C/H97nfcbV0T9/pDqgYGWsEh/w== X-Received: by 2002:a17:902:f54c:b0:224:1074:63a2 with SMTP id d9443c01a7336-22c5361c436mr224374235ad.43.1745299829232; Mon, 21 Apr 2025 22:30:29 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 19/20] tests: Add Dockerfile containing dependencies for Emscripten build Date: Tue, 22 Apr 2025 14:27:23 +0900 Message-Id: <2c76c1bdc27786d54a267b52a861debb64f067f8.1745295397.git.ktokunaga.mail@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745300123668019100 Content-Type: text/plain; charset="utf-8" The added Dockerfile is based on the emsdk image, which includes the Emscripten toolchain. It also cross-compiles the necessary dependencies (glib, libffi, pixman, and zlib) for the Emscripten target environment. Signed-off-by: Kohei Tokunaga --- MAINTAINERS | 1 + .../dockerfiles/emsdk-wasm32-cross.docker | 145 ++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 tests/docker/dockerfiles/emsdk-wasm32-cross.docker V2: - Split the Dockerfile addition from the previous 18th patch into a separate commit. - Split the MAINTAINERS file change that adds emsdk-wasm32-cross.docker from the previous 19th patch into this commit. diff --git a/MAINTAINERS b/MAINTAINERS index 0fb7fd79b6..58e4bdedba 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -626,6 +626,7 @@ F: include/system/os-wasm.h F: os-wasm.c F: util/coroutine-wasm.c F: configs/meson/emscripten.txt +F: tests/docker/dockerfiles/emsdk-wasm32-cross.docker =20 Alpha Machines -------------- diff --git a/tests/docker/dockerfiles/emsdk-wasm32-cross.docker b/tests/doc= ker/dockerfiles/emsdk-wasm32-cross.docker new file mode 100644 index 0000000000..60a7d02f56 --- /dev/null +++ b/tests/docker/dockerfiles/emsdk-wasm32-cross.docker @@ -0,0 +1,145 @@ +# syntax =3D docker/dockerfile:1.5 + +ARG EMSDK_VERSION_QEMU=3D3.1.50 +ARG ZLIB_VERSION=3D1.3.1 +ARG GLIB_MINOR_VERSION=3D2.84 +ARG GLIB_VERSION=3D${GLIB_MINOR_VERSION}.0 +ARG PIXMAN_VERSION=3D0.44.2 +ARG FFI_VERSION=3Dv3.4.7 +ARG MESON_VERSION=3D1.5.0 + +FROM emscripten/emsdk:$EMSDK_VERSION_QEMU AS build-base +ARG MESON_VERSION +ENV TARGET=3D/builddeps/target +ENV CPATH=3D"$TARGET/include" +ENV PKG_CONFIG_PATH=3D"$TARGET/lib/pkgconfig" +ENV EM_PKG_CONFIG_PATH=3D"$PKG_CONFIG_PATH" +ENV CFLAGS=3D"-O3 -pthread -DWASM_BIGINT" +ENV CXXFLAGS=3D"$CFLAGS" +ENV LDFLAGS=3D"-sWASM_BIGINT -sASYNCIFY=3D1 -L$TARGET/lib" +RUN apt-get update && apt-get install -y \ + autoconf \ + build-essential \ + libglib2.0-dev \ + libtool \ + pkgconf \ + ninja-build \ + python3-pip +RUN pip3 install meson=3D=3D${MESON_VERSION} tomli +RUN mkdir /build +WORKDIR /build +RUN mkdir -p $TARGET +RUN < /cross.meson +[host_machine] +system =3D 'emscripten' +cpu_family =3D 'wasm32' +cpu =3D 'wasm32' +endian =3D 'little' + +[binaries] +c =3D 'emcc' +cpp =3D 'em++' +ar =3D 'emar' +ranlib =3D 'emranlib' +pkgconfig =3D ['pkg-config', '--static'] +EOT +EOF + +FROM build-base AS zlib-dev +ARG ZLIB_VERSION +RUN mkdir -p /zlib +RUN curl -Ls https://zlib.net/zlib-$ZLIB_VERSION.tar.xz | \ + tar xJC /zlib --strip-components=3D1 +WORKDIR /zlib +RUN emconfigure ./configure --prefix=3D$TARGET --static +RUN emmake make install -j$(nproc) + +FROM build-base AS libffi-dev +ARG FFI_VERSION +RUN mkdir -p /libffi +RUN git clone https://github.com/libffi/libffi /libffi +WORKDIR /libffi +RUN git checkout $FFI_VERSION +RUN autoreconf -fiv +RUN emconfigure ./configure --host=3Dwasm32-unknown-linux \ + --prefix=3D$TARGET --enable-static \ + --disable-shared --disable-dependency-tracking \ + --disable-builddir --disable-multi-os-directory \ + --disable-raw-api --disable-docs +RUN emmake make install SUBDIRS=3D'include' -j$(nproc) + +FROM build-base AS pixman-dev +ARG PIXMAN_VERSION +RUN mkdir /pixman/ +RUN git clone https://gitlab.freedesktop.org/pixman/pixman /pixman/ +WORKDIR /pixman +RUN git checkout pixman-$PIXMAN_VERSION +RUN <> /cross.meson +[built-in options] +c_args =3D [$(printf "'%s', " $CFLAGS | sed 's/, $//')] +cpp_args =3D [$(printf "'%s', " $CFLAGS | sed 's/, $//')] +objc_args =3D [$(printf "'%s', " $CFLAGS | sed 's/, $//')] +c_link_args =3D [$(printf "'%s', " $LDFLAGS | sed 's/, $//')] +cpp_link_args =3D [$(printf "'%s', " $LDFLAGS | sed 's/, $//')] +EOT +EOF +RUN meson setup _build --prefix=3D$TARGET --cross-file=3D/cross.meson \ + --default-library=3Dstatic \ + --buildtype=3Drelease -Dtests=3Ddisabled -Ddemos=3Ddisabled +RUN meson install -C _build + +FROM build-base AS glib-dev +ARG GLIB_VERSION +ARG GLIB_MINOR_VERSION +RUN mkdir -p /stub +WORKDIR /stub +RUN < res_query.c +#include +int res_query(const char *name, int class, + int type, unsigned char *dest, int len) +{ + h_errno =3D HOST_NOT_FOUND; + return -1; +} +EOT +EOF +RUN emcc ${CFLAGS} -c res_query.c -fPIC -o libresolv.o +RUN ar rcs libresolv.a libresolv.o +RUN mkdir -p $TARGET/lib/ +RUN cp libresolv.a $TARGET/lib/ + +RUN mkdir -p /glib +RUN curl -Lks https://download.gnome.org/sources/glib/${GLIB_MINOR_VERSION= }/glib-$GLIB_VERSION.tar.xz | \ + tar xJC /glib --strip-components=3D1 + +COPY --link --from=3Dzlib-dev /builddeps/ /builddeps/ +COPY --link --from=3Dlibffi-dev /builddeps/ /builddeps/ + +WORKDIR /glib +RUN <> /cross.meson +[built-in options] +c_args =3D [$(printf "'%s', " $CFLAGS | sed 's/, $//')] +cpp_args =3D [$(printf "'%s', " $CFLAGS | sed 's/, $//')] +objc_args =3D [$(printf "'%s', " $CFLAGS | sed 's/, $//')] +c_link_args =3D [$(printf "'%s', " $LDFLAGS | sed 's/, $//')] +cpp_link_args =3D [$(printf "'%s', " $LDFLAGS | sed 's/, $//')] +EOT +EOF +RUN meson setup _build --prefix=3D$TARGET --cross-file=3D/cross.meson \ + --default-library=3Dstatic --buildtype=3Drelease --force-fallback-for= =3Dpcre2 \ + -Dselinux=3Ddisabled -Dxattr=3Dfalse -Dlibmount=3Ddisabled -Dnls=3Ddis= abled \ + -Dtests=3Dfalse -Dglib_debug=3Ddisabled -Dglib_assert=3Dfalse -Dglib_c= hecks=3Dfalse +# FIXME: emscripten doesn't provide some pthread functions in the final li= nk, +# which isn't detected during meson setup. +RUN sed -i -E "/#define HAVE_POSIX_SPAWN 1/d" ./_build/config.h +RUN sed -i -E "/#define HAVE_PTHREAD_GETNAME_NP 1/d" ./_build/config.h +RUN meson install -C _build + +FROM build-base +COPY --link --from=3Dglib-dev /builddeps/ /builddeps/ +COPY --link --from=3Dpixman-dev /builddeps/ /builddeps/ --=20 2.25.1 From nobody Sat Nov 15 23:34:45 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1745300274; cv=none; d=zohomail.com; s=zohoarc; b=aMgKAPINspFNCJvXxDQ+5WwbW9zL0dgMtJCaCKSHkEzjynwqgUN+a8o08DUHZV5kzdt3IDBw9L5yXPwjvIXAbC6X5NGssTe4tKNU+4I9DBWe+dw++7iEvNxG7vCyun45pudUP8ehWY+W8LKcSY2ZebpqOBSp7B381QrisCKWqkc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1745300274; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=239sog6AsGRpOuiETXgLR1hsZQlcMmDhDGFK29CX7lo=; b=IdoyYMYyPLMuy3DTBnh1iNf/mfjuHtKoy67hcgXj2YWBKkB7NZYLsswBFbjsSNVHxdbpLq57FMLxjAyMzBC+nSkHK1XFNzOzbsh5fC4qjzJCUFMzF3Ti4OJ6z7hCfQm8o356kgf4t8K+b/QkLuHixo+nMEUVlleipnPNmih44kA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1745300274435100.10047966089599; Mon, 21 Apr 2025 22:37:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u76Hc-0002V9-EA; Tue, 22 Apr 2025 01:35:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u76DR-0003hP-Mm; Tue, 22 Apr 2025 01:30:42 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u76DP-0008Dn-Ke; Tue, 22 Apr 2025 01:30:41 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-226185948ffso52644125ad.0; Mon, 21 Apr 2025 22:30:37 -0700 (PDT) Received: from localhost.localdomain ([240d:1a:3b6:8b00:e142:4a4f:1ebb:3ca4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c50eb4483sm75692085ad.118.2025.04.21.22.30.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 22:30:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745299837; x=1745904637; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=239sog6AsGRpOuiETXgLR1hsZQlcMmDhDGFK29CX7lo=; b=Nm14sWB+0ElN92Tt/rcIVbC5IdeubZ5zskez8sBibMdZc1MYuQWRU6HffS2EhIYGWx qor/fBG2KqibUimyUoYOqF+grewuWbPGokv98mKwRKY7bLYsH05fojreX0kQfjoL1PcA MJVxFDkhMVwgo7+aIdUe27AIw1wFl/sIoKu0wYd9aWzPsIeQEBQxZDuWSGNTMRMXZSY+ xH6KH0fTNGJaq9V9YeVM8cOjIGgsJAbozTOGLUZsx4qbCJXPsDqDGvL/bafYE002FMTk 2rQloAN1LT32OJDKKWq4x5Sj14G0FQAArjU+13uPRKVtAprps/VPyBkxHZJOvheS/e5k jQTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745299837; x=1745904637; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=239sog6AsGRpOuiETXgLR1hsZQlcMmDhDGFK29CX7lo=; b=aPJPr355TUpmtcCXsWlO/HgKu1JQky0l23/JeK1W+G8HHhBk389aRsKflOsE8UB+XW 5oyIW8Zepf6Pd8ZmAt+Fop2Q0egxO6iwLLVB/99H6gchj6Zyk9Y54jrd2gixzAkV/P73 3nBDH8CkDweP0iYVYjXgeHtMtS/ZqAH1/HPEPpmqw032XjULxdo263znGsslyanKt9rn uPxF8aSuFUECgK+mNVOpl/NALs4442DC2oiasp2OHtleamjls0MaDJtZDiHHY1VmTQA7 07G9amHNxIvQaf76X7BSjXyB67SXRe4Halk8IBRQ2O8xmk2A2kX2ZPuS3Meszr4xS7Ty 5Iyg== X-Forwarded-Encrypted: i=1; AJvYcCU13+eHHqKnM4HB5XEfUNuA+0Y3O2zSmSYgA5ITcMafNQu6vds9oDJ0EwiaJ63SafyoiQp+RaxYrJzMmA==@nongnu.org, AJvYcCVPPzhQLj/lFqcV8XHTpfBHJnkCgt6mimRvx2DJAMJ+qmuy5l6KDwm4HidLB+DJTMRfCXynY+N79Q==@nongnu.org, AJvYcCVYR/0qlsWYwIMsRLFgnuqw1ejIoxtNwgTWdLxFxa6yX1IH2NhEg1uGA6I4sqAp8oIsumPFM1dqBwI=@nongnu.org, AJvYcCXCQEdF+DufTuwP6Zg/k/s3oLhHRITiKlhROvkxLTSs+L4iU0Oj7Krb9hx0qv+6ARvuglLJJrBhxDw3Pw==@nongnu.org X-Gm-Message-State: AOJu0YzARfbdlKppOsmJ+3uTAgjirYjQK1WD1Oz4UUudJ3C/kWqSK/+a 6KttR49YbiHKO9ZxQkhoG7iEd9i8b2xGeVsjj35giNQ5IG0iP8p2mYbxWd2b X-Gm-Gg: ASbGncu5XYkKV/7EQriyk2lhYzxoL9/SfVXJGXtrRY+RRgsnSIYqabOD7YeML7ELKZ7 xq2DG7j91l07EM3jyM5CnNJZHEy2pn17Y5XaCKqBz9pAzDx0d+NOx8Sv4nQ7WPQBWoQ5GEyajHz +TASo3lYpfhOlO9ZPWe1zNfR7l8GYvjX4M/EWF2j+QDtNeMFwNWvRs7/J77atILmgkj10j7P6Vq eT/uPDuoy0R/04+P/hhHKyOJj/2/EoVrUTtiytakXVE5WsJj/h4aPLijIU0+LJij5QPiWxut/Zc CwRr0CGx1ui7ymyNq/IMCPqWFGtTSx5EaBooxw7P+n1xYu2AhfrkuQQ7uR+CMmv/KhiETw== X-Google-Smtp-Source: AGHT+IGGRtHx5fim4xGmJq6v8vkziresfB5+BAuQyo6/891rk0skJGXxaEivPZeVzgS3/6wX99cASQ== X-Received: by 2002:a17:903:22c9:b0:220:ff3f:6cc0 with SMTP id d9443c01a7336-22c536080bemr230986565ad.38.1745299836831; Mon, 21 Apr 2025 22:30:36 -0700 (PDT) From: Kohei Tokunaga To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Kevin Wolf , Hanna Reitz , Kohei Tokunaga , Paolo Bonzini , Alexandre Iooss , Mahmoud Mandour , Pierrick Bouvier , Pavel Pisa , Francisco Iglesias , Vikram Garhwal , Jason Wang , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Eduardo Habkost , Peter Xu , David Hildenbrand , Peter Maydell , Zhao Liu , Nicholas Piggin , Daniel Henrique Barboza , Richard Henderson , Ilya Leoshkevich , Stefan Hajnoczi , qemu-block@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-s390x@nongnu.org Subject: [PATCH v2 20/20] gitlab: Enable CI for wasm build Date: Tue, 22 Apr 2025 14:27:24 +0900 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=ktokunaga.mail@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1745300276025019100 Content-Type: text/plain; charset="utf-8" Add GitLab CI job that builds QEMU using emscripten. The build runs in the container defined in tests/docker/dockerfiles/emsdk-wasm32-cross.docker. Signed-off-by: Kohei Tokunaga --- .gitlab-ci.d/buildtest-template.yml | 27 +++++++++++++++++++++++++++ .gitlab-ci.d/buildtest.yml | 9 +++++++++ .gitlab-ci.d/container-cross.yml | 5 +++++ 3 files changed, 41 insertions(+) V2: - Split the Dockerfile addition from the previous 18th patch into a separate commit. diff --git a/.gitlab-ci.d/buildtest-template.yml b/.gitlab-ci.d/buildtest-t= emplate.yml index 39da7698b0..67167d68a5 100644 --- a/.gitlab-ci.d/buildtest-template.yml +++ b/.gitlab-ci.d/buildtest-template.yml @@ -126,3 +126,30 @@ - du -chs ${CI_PROJECT_DIR}/*-cache variables: QEMU_JOB_AVOCADO: 1 + +.wasm_build_job_template: + extends: .base_job_template + stage: build + image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG + before_script: + - source scripts/ci/gitlab-ci-section + - section_start setup "Pre-script setup" + - JOBS=3D$(expr $(nproc) + 1) + - section_end setup + script: + - du -sh .git + - mkdir build + - cd build + - section_start configure "Running configure" + - emconfigure ../configure --disable-docs + ${TARGETS:+--target-list=3D"$TARGETS"} + $CONFIGURE_ARGS || + { cat config.log meson-logs/meson-log.txt && exit 1; } + - if test -n "$LD_JOBS"; + then + pyvenv/bin/meson configure . -Dbackend_max_links=3D"$LD_JOBS" ; + fi || exit 1; + - section_end configure + - section_start build "Building QEMU" + - emmake make -j"$JOBS" + - section_end build diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index 00f4bfcd9f..0f92d5313a 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -801,3 +801,12 @@ coverity: when: never # Always manual on forks even if $QEMU_CI =3D=3D "2" - when: manual + +build-wasm: + extends: .wasm_build_job_template + timeout: 2h + needs: + job: wasm-emsdk-cross-container + variables: + IMAGE: emsdk-wasm32-cross + CONFIGURE_ARGS: --static --disable-tools --enable-debug --enable-tcg-i= nterpreter diff --git a/.gitlab-ci.d/container-cross.yml b/.gitlab-ci.d/container-cros= s.yml index 34c0e729ad..3ea4971950 100644 --- a/.gitlab-ci.d/container-cross.yml +++ b/.gitlab-ci.d/container-cross.yml @@ -94,3 +94,8 @@ win64-fedora-cross-container: extends: .container_job_template variables: NAME: fedora-win64-cross + +wasm-emsdk-cross-container: + extends: .container_job_template + variables: + NAME: emsdk-wasm32-cross --=20 2.25.1