From nobody Tue Feb 10 06:07:19 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.48 as permitted sender) client-ip=209.85.221.48; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f48.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.48 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1626037292; cv=none; d=zohomail.com; s=zohoarc; b=XTj1ZNePR7nvsSoPg5eawZ9DfUN+28Evkeyf3XFtnXTGpEdaDpRiT3HFR2x1St3IRdFtNkHHHMhPhzid4TCWxxVYsff40hy3ZKo4G4LNAZMTFbp1O2HMG4JSIiT6szQn0CDcqoIbZ4FP5vVEHlnu7kKGRDb8iSO8Jt9WyzrNo7Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1626037292; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=d+7RhiNspFr8WZ3/u/l/wkKuuJwU+47lX6JtRyEtS3w=; b=HDnPnnfhUdNDvJwvN7L7txNIFwfQINvzuhPQXLmfvWGd9+1eln+Iwcz1cH0wMFzQIvIQXAdLcHzgNY1C+K0xj2btLvNCy/U6jarRmidpgluClYlWxPjpiXk3LEQ3/+D7s+JE3lUf7QVMVcifP9e1lNEX2q3bmBT7yeeAZKMr9oY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.48 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) by mx.zohomail.com with SMTPS id 1626037292098400.86165155397623; Sun, 11 Jul 2021 14:01:32 -0700 (PDT) Received: by mail-wr1-f48.google.com with SMTP id p8so22089370wrr.1 for ; Sun, 11 Jul 2021 14:01:31 -0700 (PDT) Return-Path: Return-Path: Received: from localhost.localdomain (abayonne-654-1-142-116.w86-222.abo.wanadoo.fr. [86.222.93.116]) by smtp.gmail.com with ESMTPSA id 12sm19111828wme.28.2021.07.11.14.01.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Jul 2021 14:01:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=d+7RhiNspFr8WZ3/u/l/wkKuuJwU+47lX6JtRyEtS3w=; b=hAfKykcoQfNJ9IUmqDiXDl1tQgM9pKtXg55tgGaRpBS/om3/6JXf4byuR7LTZLJtJh sCXypeQ5bj/xr8Xcb0Bs9rKB6VoXBTpFaMwepMt7MJccGueUX9PiWtKBV9pMF7YwogQu 4rkiUwclQ03MIUcyNQtdSUT6dND35KYcCIgijkJbEzhv3rh/pm9jg9iGqiJxH6T7NU3S ZfRKsjJn/ppBy4T6RKDfkOPzIW216q/nvXhU5F9wpycUH7bCoKEVaDa0wHeYmAdrYa5n KhSGHxNJ2NLrAZA8AuG3PGlTLz9CyNVJJ1us3us8X+WehpvpAWEUx/2r11hgNQL5kwW9 GjYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=d+7RhiNspFr8WZ3/u/l/wkKuuJwU+47lX6JtRyEtS3w=; b=F+aFu8B1oGxOANA7f6qiFTmLPgZGuGHxEPb+Vn+Zh9IEq9JqqWI/vRNYSJYv1DdUk/ XNOpFE9cwR3rENIFuEK4tCmDG9UXPQrIT1jEJ+cL572EMAkJfTKFI3KjZ8pRL+xaxEzK V1iD0oNmERbv3UoshYdcAergpAL04xTclnPOzle6xyO+qOt+UHZ48epRIquFMBu7eWpf 4U1e9n+888EdNpvVeBictBknRwDkfd7n0SeoFlMyPkj/xvBFv/2PgSgm9GyVxgWmKzNt WaK1Cw7wSXE8JXbACOtFpg0GSn1fpvyMGM9eGthmU3WiOfyQRC/8W5Ej7m0yDYoUtyze dM4A== X-Gm-Message-State: AOAM533OA40eoZxPBUwUCL62igpLcj14hlTE1vPJXbp1NiuYjuIrjsaJ K3KqnYiORL3MFIcacNnepGo= X-Google-Smtp-Source: ABdhPJx2dP0cMoFUYFupVhzIF/GmWApTY2PYiWyaER/uU13GD9QtR9JkkMulKOS3dh2VhNP6gCHFoQ== X-Received: by 2002:adf:8069:: with SMTP id 96mr10745150wrk.56.1626037290295; Sun, 11 Jul 2021 14:01:30 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Fredrik Noring , Mark Cave-Ayland , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Zak , Thomas Huth Subject: [PULL 13/19] target/mips: Rewrite UHI errno_mips() using switch statement Date: Sun, 11 Jul 2021 23:00:10 +0200 Message-Id: <20210711210016.2710100-14-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210711210016.2710100-1-f4bug@amsat.org> References: <20210711210016.2710100-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1626037293440100001 Linking on Haiku OS fails: /boot/system/develop/tools/bin/../lib/gcc/x86_64-unknown-haiku/8.3.0/../.= ./../../x86_64-unknown-haiku/bin/ld: error: libqemu-mips-softmmu.fa.p/target_mips_tcg_sysemu_mips-semi.c.o(.ro= data) is too large (0xffff405a bytes) /boot/system/develop/tools/bin/../lib/gcc/x86_64-unknown-haiku/8.3.0/../.= ./../../x86_64-unknown-haiku/bin/ld: final link failed: memory exhausted collect2: error: ld returned 1 exit status This is because the host_to_mips_errno[] uses errno as index, for example: static const uint16_t host_to_mips_errno[] =3D { [ENAMETOOLONG] =3D 91, ... and Haiku defines [*] ENAMETOOLONG as: 12 /* Error baselines */ 13 #define B_GENERAL_ERROR_BASE INT_MIN .. 22 #define B_STORAGE_ERROR_BASE (B_GENERAL_ERROR_BASE + 0x6= 000) ... 106 #define B_NAME_TOO_LONG (B_STORAGE_ERROR_BASE + 4) ... 211 #define ENAMETOOLONG B_TO_POSIX_ERROR(B_NAME_TOO= _LONG) so the array ends up beeing indeed too big. Since POSIX errno can't be use as indexes on Haiku, rewrite errno_mips() using a switch statement. [*] https://github.com/haiku/haiku/blob/r1beta3/headers/os/support/Errors.h= #L130 Reported-by: Richard Zak Suggested-by: Thomas Huth Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Thomas Huth Message-Id: <20210706130723.1178961-1-f4bug@amsat.org> --- target/mips/tcg/sysemu/mips-semi.c | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/target/mips/tcg/sysemu/mips-semi.c b/target/mips/tcg/sysemu/mi= ps-semi.c index 77108b0b1a9..b4a383ae90c 100644 --- a/target/mips/tcg/sysemu/mips-semi.c +++ b/target/mips/tcg/sysemu/mips-semi.c @@ -74,25 +74,19 @@ enum UHIOpenFlags { UHIOpen_EXCL =3D 0x800 }; =20 -/* Errno values taken from asm-mips/errno.h */ -static const uint16_t host_to_mips_errno[] =3D { - [ENAMETOOLONG] =3D 78, +static int errno_mips(int host_errno) +{ + /* Errno values taken from asm-mips/errno.h */ + switch (host_errno) { + case 0: return 0; + case ENAMETOOLONG: return 78; #ifdef EOVERFLOW - [EOVERFLOW] =3D 79, + case EOVERFLOW: return 79; #endif #ifdef ELOOP - [ELOOP] =3D 90, + case ELOOP: return 90; #endif -}; - -static int errno_mips(int err) -{ - if (err < 0 || err >=3D ARRAY_SIZE(host_to_mips_errno)) { - return EINVAL; - } else if (host_to_mips_errno[err]) { - return host_to_mips_errno[err]; - } else { - return err; + default: return EINVAL; } } =20 --=20 2.31.1