From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ot1-x336.google.com (mail-ot1-x336.google.com [IPv6:2607:f8b0:4864:20::336]) by sourceware.org (Postfix) with ESMTPS id 7118D3858D39 for ; Wed, 28 Feb 2024 17:58:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7118D3858D39 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7118D3858D39 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::336 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709143090; cv=none; b=KMezRAxmVM5MWVbBL6H3pgOWvP5h5IUs0zdUHyv0cSFsSW51NkKYfSKgI2Tm0qLyn1P1Nc0TpFDGpNWBzmMsvriv50RlfHmL+HZCIBI2cwWndSvLHKCnEDNmuqwwmsTYoWd6EGPVtCi+iLyB6UqINqGuCPB39E4Qm0e6QHm6nP0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1709143090; c=relaxed/simple; bh=8GqNis8DDC9SujrXsVltQhOgwZCFs8Ad/Lm4b+Rit7c=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=noKKxo34uwWl4ymiAwHJnEwrY+DMWfgYCkuA7GLlhTfBdy6E/RpowjG2hFKvQeWwKOj9Iz2tlGaL0J7HRY6Qs/T+B7+gMMcKMmGVDR02skLby4ONJlv4DduaO3ZdgIXYKmnVzq/l1Mvw2eJOlf0nULTz1YccYWXZqrCjiEaC78M= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ot1-x336.google.com with SMTP id 46e09a7af769-6ddf26eba3cso4414847a34.0 for ; Wed, 28 Feb 2024 09:58:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709143087; x=1709747887; darn=sourceware.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=gGWeJXBVObkavlBFdxnP+4RP39OxWyjG9LilYKaiM9w=; b=YsGHGtAGta0xNG+FO0zXxVrNY5/oC94cmA6iQ1Pp7IYyWXG+4QfDNr8+p80+j12fNA YmzeaS2QOeeNoKqnrUUxCxYMGdE1l4HLBv/RC0KY6E9VmvUFfVC9JZq7OaSD+LUuTHGA ummOYLY+t4h0H0G7Tsxys4PAIq6eMIh0W4vRIPGWASXwmgqw50xepgbiKn2jrrFVPE0v vaI6wIqmUQ5ds+dN9NhfeY5OPryIlIBPXtRcbHmEoUo4j0WXXItdrcDbMY7bghz1yem1 4E3qGjLwFN3IShOZFnrUj8jQSsLAfcg+gPwPZN2pbTnAtepClH4DtQJCKNmhb5qs3sPd edzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709143087; x=1709747887; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gGWeJXBVObkavlBFdxnP+4RP39OxWyjG9LilYKaiM9w=; b=Oq7XLvDtmfEBu/bESAeguOs4ZCRTf/GgKmllrwSlswdSb5ydgJpDTparofeQ3M3U7J hcqBn5mp+sYB/7gD3gtiiyeRCxPs6q4/sNeRo/3fBRXYY2u8McDlPqLfz2VhgdvnZ3SQ 16mGwmjTDor96m0rb18lQNFd8ICINKG/k4oOemg6N6zKRMKCiwtwCqonbYbamQd2AIAn 7R1Dt4dh4Fdp1yGdzf9pL4+n3g4m0QYSDh/yw3PzUNeWBLEY7QcM6T/mCaJ9JjJWFut7 GscvAzTzIBfD87qwXyV0rxZ1BB5R0LuQaNnDf2DjQt0gwrxHNCPhcfjxFKasUa8LZ+7M oJHg== X-Gm-Message-State: AOJu0YwlaI+ctY555jXrDU5Ml67typDJhDFG4lfEfSqLiVUKIefes8In cb8Ozs7M08aVpbqhJjxaRJvVsSfvNRcXktyTDJQBl0GceAeYfKmzz5lClQVutjRC6ZqCF6fjis/ o3yKNcoI9SGJgULqaz9FQJe0EjwU= X-Google-Smtp-Source: AGHT+IH6wnTyqHxQdm/or04WhodHNnB8GBc3VLkr3AGLl/4wtxSOp4wDpFyOyR8RnkqwqNwTvmSzvWcgFaYSClz04Q8= X-Received: by 2002:a05:6870:f60d:b0:21e:598e:4ffa with SMTP id ek13-20020a056870f60d00b0021e598e4ffamr429898oab.53.1709143087188; Wed, 28 Feb 2024 09:58:07 -0800 (PST) MIME-Version: 1.0 References: <20240228175114.271103-1-hjl.tools@gmail.com> In-Reply-To: <20240228175114.271103-1-hjl.tools@gmail.com> From: Noah Goldstein Date: Wed, 28 Feb 2024 11:57:55 -0600 Message-ID: Subject: Re: [PATCH] x86-64: Don't use SSE resolvers for ISA level 3 or above To: "H.J. Lu" Cc: libc-alpha@sourceware.org, skpgkp2@gmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Wed, Feb 28, 2024 at 11:51=E2=80=AFAM H.J. Lu wrot= e: > > When glibc is built with ISA level 3 or above enabled, SSE resolvers > aren't available and glibc fails to build: > > ld: .../elf/librtld.os: in function `init_cpu_features': > .../elf/../sysdeps/x86/cpu-features.c:1200:(.text+0x1445f): undefined ref= erence to `_dl_runtime_resolve_fxsave' > ld: .../elf/librtld.os: relocation R_X86_64_PC32 against undefined hidden= symbol `_dl_runtime_resolve_fxsave' can not be used when making a shared o= bject > /usr/local/bin/ld: final link failed: bad value > > For ISA level 3 or above, don't use _dl_runtime_resolve_fxsave nor > _dl_tlsdesc_dynamic_fxsave and also exclude _dl_tlsdesc_dynamic_fxsave. > > This fixes BZ #31429. > --- > sysdeps/x86/cpu-features.c | 17 +++++++++++------ > sysdeps/x86_64/dl-tlsdesc.S | 15 +++++++++------ > 2 files changed, 20 insertions(+), 12 deletions(-) > > diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c > index d71e8d3d2e..e7c7ece462 100644 > --- a/sysdeps/x86/cpu-features.c > +++ b/sysdeps/x86/cpu-features.c > @@ -18,6 +18,7 @@ > > #include > #include > +#include > #include > #include > #include > @@ -1195,7 +1196,9 @@ no_cpuid: > TUNABLE_CALLBACK (set_x86_shstk)); > #endif > > +#if MINIMUM_X86_ISA_LEVEL < AVX_X86_ISA_LEVEL > if (GLRO(dl_x86_cpu_features).xsave_state_size !=3D 0) > +#endif > { > if (CPU_FEATURE_USABLE_P (cpu_features, XSAVEC)) > { > @@ -1216,22 +1219,24 @@ no_cpuid: > #endif > } > } > +#if MINIMUM_X86_ISA_LEVEL < AVX_X86_ISA_LEVEL > else > { > -#ifdef __x86_64__ > +# ifdef __x86_64__ > GLRO(dl_x86_64_runtime_resolve) =3D _dl_runtime_resolve_fxsave; > -# ifdef SHARED > +# ifdef SHARED > GLRO(dl_x86_tlsdesc_dynamic) =3D _dl_tlsdesc_dynamic_fxsave; > -# endif > -#else > -# ifdef SHARED > +# endif > +# else > +# ifdef SHARED > if (CPU_FEATURE_USABLE_P (cpu_features, FXSR)) > GLRO(dl_x86_tlsdesc_dynamic) =3D _dl_tlsdesc_dynamic_fxsave; > else > GLRO(dl_x86_tlsdesc_dynamic) =3D _dl_tlsdesc_dynamic_fnsave; > +# endif > # endif > -#endif > } > +#endif > > #ifdef SHARED > # ifdef __x86_64__ > diff --git a/sysdeps/x86_64/dl-tlsdesc.S b/sysdeps/x86_64/dl-tlsdesc.S > index ea69f5223a..057a10862a 100644 > --- a/sysdeps/x86_64/dl-tlsdesc.S > +++ b/sysdeps/x86_64/dl-tlsdesc.S > @@ -20,6 +20,7 @@ > #include > #include > #include > +#include > #include "tlsdesc.h" > #include "dl-trampoline-save.h" > > @@ -79,12 +80,14 @@ _dl_tlsdesc_undefweak: > .size _dl_tlsdesc_undefweak, .-_dl_tlsdesc_undefweak > > #ifdef SHARED > -# define USE_FXSAVE > -# define STATE_SAVE_ALIGNMENT 16 > -# define _dl_tlsdesc_dynamic _dl_tlsdesc_dynamic_fxsave > -# include "dl-tlsdesc-dynamic.h" > -# undef _dl_tlsdesc_dynamic > -# undef USE_FXSAVE > +# if MINIMUM_X86_ISA_LEVEL < AVX_X86_ISA_LEVEL > +# define USE_FXSAVE > +# define STATE_SAVE_ALIGNMENT 16 > +# define _dl_tlsdesc_dynamic _dl_tlsdesc_dynamic_fxsave > +# include "dl-tlsdesc-dynamic.h" > +# undef _dl_tlsdesc_dynamic > +# undef USE_FXSAVE > +# endif > > # define USE_XSAVE > # define STATE_SAVE_ALIGNMENT 64 > -- > 2.43.2 > LGTM. Reviewed-by: Noah Goldstein