From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E4788C433F5 for ; Thu, 3 Mar 2022 10:19:22 +0000 (UTC) Received: from localhost ([::1]:48636 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nPiYL-0006V1-GV for qemu-devel@archiver.kernel.org; Thu, 03 Mar 2022 05:19:21 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40964) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nPiXI-0005n7-0R for qemu-devel@nongnu.org; Thu, 03 Mar 2022 05:18:16 -0500 Received: from [2001:470:ea4a:1:5054:ff:fec7:86e4] (port=57239 helo=smtp.gentoo.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1nPiXF-0004Z2-Ol for qemu-devel@nongnu.org; Thu, 03 Mar 2022 05:18:15 -0500 Received: (nullmailer pid 55842 invoked by uid 1000); Thu, 03 Mar 2022 10:18:06 -0000 From: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= To: qemu-devel@nongnu.org Subject: [PATCH] qemu-binfmt-conf.sh: allow elf EI_ABIVERSION=1 for mips Date: Thu, 3 Mar 2022 11:17:50 +0100 Message-Id: <20220303101750.55833-1-dilfridge@gentoo.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Host-Lookup-Failed: Reverse DNS lookup failed for 2001:470:ea4a:1:5054:ff:fec7:86e4 (failed) Received-SPF: none client-ip=2001:470:ea4a:1:5054:ff:fec7:86e4; envelope-from=huettel@www.akhuettel.de; helo=smtp.gentoo.org X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_MED=-2.3, RDNS_NONE=0.793, SPF_HELO_PASS=-0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 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: , Cc: =?UTF-8?q?Andreas=20K=2E=20H=C3=BCttel?= Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" With the command line flag -mplt and a recent toolchain, ELF binaries generated by gcc can obtain EI_ABIVERSION=1, see below, which makes, e.g., gcc three-stage bootstrap in a mips-unknown-linux-gnu qemu-user chroot fail since the binfmt-misc magic does not match anymore. qemu executes these binaries just fine, so relax the mask slightly. CHOST=mips-unknown-linux-gnu CFLAGS="-O2 -march=mips32 -mabi=32 -mplt -pipe" gcc-11.2, binutils-2.37, glibc-2.34 | /* | - * ELF dump of './prev-gcc/build/gengenrtl' | - * 29608 (0x73A8) bytes | + * ELF dump of './gcc/build/gengenrtl' | + * 54532 (0xD504) bytes | */ | | Elf32_Dyn dumpedelf_dyn_0[]; | struct { | Elf32_Ehdr ehdr; | Elf32_Phdr phdrs[12]; | - Elf32_Shdr shdrs[33]; | + Elf32_Shdr shdrs[44]; | Elf32_Dyn *dyns; | } dumpedelf_0 = { | | .ehdr = { | .e_ident = { /* (EI_NIDENT bytes) */ | /* [0] EI_MAG: */ 0x7F,'E','L','F', | /* [4] EI_CLASS: */ 1 , /* (ELFCLASS32) */ | /* [5] EI_DATA: */ 2 , /* (ELFDATA2MSB) */ | /* [6] EI_VERSION: */ 1 , /* (EV_CURRENT) */ | /* [7] EI_OSABI: */ 0 , /* (ELFOSABI_NONE) */ | - /* [8] EI_ABIVERSION: */ 0 , | + /* [8] EI_ABIVERSION: */ 1 , | /* [9-15] EI_PAD: */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, | }, | .e_type = 2 , /* (ET_EXEC) */ | .e_machine = 8 , /* (EM_MIPS) */ | .e_version = 1 , /* (EV_CURRENT) */ | (...) Signed-off-by: Andreas K. Hüttel --- scripts/qemu-binfmt-conf.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh index e9bfeb94d3..2ac2226f26 100755 --- a/scripts/qemu-binfmt-conf.sh +++ b/scripts/qemu-binfmt-conf.sh @@ -61,7 +61,7 @@ m68k_family=m68k # FIXME: We could use the other endianness on a MIPS host. mips_magic='\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08' -mips_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' +mips_mask='\xff\xff\xff\xff\xff\xff\xff\x00\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff' mips_family=mips mipsel_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00' -- 2.34.1