From nobody Mon Feb 9 06:37:39 2026 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1665733021; cv=none; d=zohomail.com; s=zohoarc; b=JcTKKWb3XlYOPOYDcpkumzyMw2hgVCT8sPG7S4FZksBOhaMw2JonOyv9MxhbXfspX7aBoiXjwIij3oko2l8M38aAOQr0p5iVtCQ/rw64BgsZXsORajGkLIMxa+9aK25euDoaQ0yR52WWFJhLDh7JEoql+xo+eRQwsy9rlEbWHIs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1665733021; h=Content-Transfer-Encoding:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=ejkB4T5w9HobinTSHkeMQBvJwoemSOWKSmWU4bgp+ME=; b=H+D39g2ktI5IoT6rMvuiSsh2Opa7r3tHpygKUWJdoGELCxklpbv7hPwco0MotipcH9KR0YeVJ0/jBmYkJJHiub89hNrFVv0y8y2WiCcsW6+t7Qo8ylqzSqfZXB0OL/6DiBMLjTMcXVv0FX+ZDKClUs9PbFNhZcpaRXD6Px8av30= 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 1665733021850670.3522890572272; Fri, 14 Oct 2022 00:37:01 -0700 (PDT) Received: from localhost ([::1]:32996 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ojFFb-0000aR-9c for importer@patchew.org; Fri, 14 Oct 2022 03:37:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54558) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ojF9S-0006NN-Nx for qemu-devel@nongnu.org; Fri, 14 Oct 2022 03:30:39 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]:43601) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ojF9M-0006A1-BG for qemu-devel@nongnu.org; Fri, 14 Oct 2022 03:30:36 -0400 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-329-i64PIH25O7mwMfd3AjfP5g-1; Fri, 14 Oct 2022 03:30:29 -0400 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 494D53C0F674 for ; Fri, 14 Oct 2022 07:30:29 +0000 (UTC) Received: from maggie.redhat.com (unknown [10.43.2.39]) by smtp.corp.redhat.com (Postfix) with ESMTP id E667956D21C for ; Fri, 14 Oct 2022 07:30:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1665732631; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=ejkB4T5w9HobinTSHkeMQBvJwoemSOWKSmWU4bgp+ME=; b=Ad8hIGXgNjtKdRnAEB5FP9ReufGjBu7hHHyHlhQLMgjF3SDMJQzDMTeb4WK3mkGzioATkN ananS8QrDp1wRxblNyXwvrp+R2HE7fgJZX3O4BLPjyazEmEidq/RG7/VCWe6E0OKgwRaDL Ae61USLgZBOm9LYLMd53afUHhWtb24s= X-MC-Unique: i64PIH25O7mwMfd3AjfP5g-1 From: Michal Privoznik To: qemu-devel@nongnu.org Subject: [PATCH v3] configure: Avoid using strings binary Date: Fri, 14 Oct 2022 09:30:15 +0200 Message-Id: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 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=170.10.129.124; envelope-from=mprivozn@redhat.com; helo=us-smtp-delivery-124.mimecast.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, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1665733022652100001 Content-Type: text/plain; charset="utf-8" When determining the endiandness of the target architecture we're building for a small program is compiled, which in an obfuscated way declares two strings. Then, we look which string is in correct order (using strings binary) and deduct the endiandness. But using the strings binary is problematic, because it's part of toolchain (strings is just a symlink to x86_64-pc-linux-gnu-strings or llvm-strings). And when (cross-)compiling, it requires users to set the symlink to the correct toolchain. Fortunately, we have a better alternative anyways. We can mimic what compiler.h is already doing: comparing __BYTE_ORDER__ against values for little/big endiandness. Bug: https://bugs.gentoo.org/876933 Signed-off-by: Michal Privoznik --- v3 of: https://lists.gnu.org/archive/html/qemu-devel/2022-10/msg02149.html diff to v2: - Check whether __BYTE_ORDER__ is defined prior comparing it - Switch from 'if compile_prog' to 'if ! compile_prog' configure | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/configure b/configure index 45ee6f4eb3..d186944d3f 100755 --- a/configure +++ b/configure @@ -1423,30 +1423,31 @@ if test "$tcg" =3D "enabled"; then git_submodules=3D"$git_submodules tests/fp/berkeley-softfloat-3" fi =20 -# --- +########################################## # big/little endian test cat > $TMPC << EOF -#include -short big_endian[] =3D { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; -short little_endian[] =3D { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41= , 0, }; -int main(int argc, char *argv[]) -{ - return printf("%s %s\n", (char *)big_endian, (char *)little_endian); -} +#if defined(__BYTE_ORDER__) && __BYTE_ORDER__ =3D=3D __ORDER_LITTLE_ENDIAN= __ +# error LITTLE +#endif +int main(void) { return 0; } EOF =20 -if compile_prog ; then - if strings -a $TMPE | grep -q BiGeNdIaN ; then - bigendian=3D"yes" - elif strings -a $TMPE | grep -q LiTtLeEnDiAn ; then - bigendian=3D"no" - else - echo big/little test failed - exit 1 - fi +if ! compile_prog ; then + bigendian=3D"no" else + cat > $TMPC << EOF +#if defined(__BYTE_ORDER__) && __BYTE_ORDER__ =3D=3D __ORDER_BIG_ENDIAN__ +# error BIG +#endif +int main(void) { return 0; } +EOF + + if ! compile_prog ; then + bigendian=3D"yes" + else echo big/little test failed exit 1 + fi fi =20 ########################################## --=20 2.35.1