From nobody Fri May 17 05:50:13 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.128.42 as permitted sender) client-ip=209.85.128.42; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-f42.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.42 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1625576849; cv=none; d=zohomail.com; s=zohoarc; b=gyw2FF1VfmgkeJcbyFsyJpGWRMsSpJDLK4qtAZJalmjptoCmRZXmgfWuyHSYyYdotq7hgHya1kgW5Ce6DZxJi92QDBZyTAR9Wi02YsYlMg+qjNHzIm/RRjdkrW2YliW8pdzEY2iIuMOoGdW5zHBF/MnqTL+ddzEaKJ1Ei0bYwsg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1625576849; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:MIME-Version:Message-ID:Sender:Subject:To; bh=N4Mkk4HcfCBX+03rpOfdfjtVELcj4qAp73XXxF7B4uc=; b=nWQ9/fcITEu+HU3wh/NFGNpXZt7ieC4RXU5Md5/0cjynj/ZT+TanPsElAgI+4PYtnxl466ZLIKlJ+CihzFGBwQPsI3qLE+32ziUS9RWhgGRbtfc3lvSA4wAFsRb4eCoEa9AXfnAJQD79ifVAOU1zB2bLCrN2C0KESoX8bP1nATM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.42 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) by mx.zohomail.com with SMTPS id 1625576849286717.1221927752978; Tue, 6 Jul 2021 06:07:29 -0700 (PDT) Received: by mail-wm1-f42.google.com with SMTP id j39-20020a05600c1c27b029020028e48b8fso1705260wms.0 for ; Tue, 06 Jul 2021 06:07:26 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (93.red-83-35-24.dynamicip.rima-tde.net. [83.35.24.93]) by smtp.gmail.com with ESMTPSA id x18sm16371998wrw.19.2021.07.06.06.07.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Jul 2021 06:07:24 -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:mime-version :content-transfer-encoding; bh=N4Mkk4HcfCBX+03rpOfdfjtVELcj4qAp73XXxF7B4uc=; b=Jz/hMGdOrkTreJ13bp4yBXGNTKauor98dOY20lzs/eq0FzMq89bTIYh1Y0irK2nu/t X2EzOCTAAdaVeq4v5KOI09hETGHM/DUK/n7VAmc1171cQkshoPEljy8c55DP88CWHkMY ElBYcQPJrxJ+sUOuLjoTDEPz1KItkFtrhdV7ciU73Ur9CAD/tdwpmKmhWs1JIXfDTv/8 hrTda/umrKTxrHl+maBmmKl/DJBOEOJpMkI7tONDgkXSGKhTXlNrs5E4bqlal+oJrXzC scGpjcB/LEGCVYSZTSjkHUQoln3wOjyaBj5j7Tc8zBxSU7/Ro7TrwX63cuqU3HcPlzpA WVQg== 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 :mime-version:content-transfer-encoding; bh=N4Mkk4HcfCBX+03rpOfdfjtVELcj4qAp73XXxF7B4uc=; b=WW1Mz7GZCcH5SVU9V2L8Ap54Lx400VOsVlBBNjo32cBEBI1/OGSCbW3NZezexLypYO zpDoj1eKbV/hGfeyO0Pwxn6irnC+qK3h394KZwR3kdt71zFo3HtFjUwp5Bv8Yn1F3/N5 uatXLU/ltm2b0oy38A2n/TmadxqXu7ud8+PqalUmyr71aB/tO65P/NloWxE3IWGLJCC2 p6qEB+yUIFBQTao6cOVAf/Xt0IDYFnhDhaK6qhEd+/7a+hXbxafC06hJ3yAESLRPH4oN cJmBxOP47SlxVw/yGA7wFA/FEoa8OEcpdzw/GQF1hw3EAwHrqggOrrnIJA4HLg/hLJCy YD7g== X-Gm-Message-State: AOAM530eyQoLCG7G/g/bQ6z4TSqlLBIC3p4re//B5LZlT9aCK5PuMBYT tr1OrfR8lcImmdP4ZeNDGWc= X-Google-Smtp-Source: ABdhPJwPg4HBDcELcJP2UKlYCxn6YCikrlsyFW4+76umN87/bk9Mc3nW3z52V6wVhzMipiWrpgjHVA== X-Received: by 2002:a05:600c:246:: with SMTP id 6mr593503wmj.133.1625576845558; Tue, 06 Jul 2021 06:07:25 -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: Thomas Huth , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Zak , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Aleksandar Rikalo , Leon Alrae , Aurelien Jarno , Peter Maydell , Alexander von Gluck IV , Jiaxun Yang , Richard Henderson Subject: [PATCH v2] target/mips: Rewrite UHI errno_mips() using switch statement Date: Tue, 6 Jul 2021 15:07:23 +0200 Message-Id: <20210706130723.1178961-1-f4bug@amsat.org> X-Mailer: git-send-email 2.31.1 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: 1625576874025100001 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 --- Supersedes: <20210704170736.617895-4-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