From patchwork Thu May 6 12:30:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 43266 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 78D4C3AA9838; Thu, 6 May 2021 12:29:58 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 78D4C3AA9838 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1620304198; bh=2SVnZk2EdHqNtY/0BCF9T08tbG3ej6Hvn6TOv+srZaU=; h=To:Subject:In-Reply-To:References:Date:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=nzi5njobZ2wTxMv5tB7IEZqY026qlVdc2v02HW0EXvADgM2GwJ/tXE4q2aJUINZcG bSITEp2ZCVXkJimNai+4nQsXnc1XpDZlt2i1KQLPQSELm02iLe6TwvVZcz74o02Ira yfhfAS+RLnjxpl4rAYYqmI9nbvu4wKe2JVYXVg0M= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id 8D8E83AA9829 for ; Thu, 6 May 2021 12:29:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 8D8E83AA9829 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-441-RW9ZOJvpMSysYpeO_8lhBg-1; Thu, 06 May 2021 08:29:53 -0400 X-MC-Unique: RW9ZOJvpMSysYpeO_8lhBg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1CF2D802938 for ; Thu, 6 May 2021 12:29:52 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-112-137.ams2.redhat.com [10.36.112.137]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7329260862 for ; Thu, 6 May 2021 12:29:51 +0000 (UTC) To: libc-alpha@sourceware.org Subject: [PATCH 1/3] elf: Add hook for checking HWCAP bits after auxiliary vector parsing In-Reply-To: References: Message-Id: <6904a5bfab71a7a8293d157e015bc55a7ce6f869.1620304013.git.fweimer@redhat.com> Date: Thu, 06 May 2021 14:30:09 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Weimer via Libc-alpha From: Florian Weimer Reply-To: Florian Weimer Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" --- elf/dl-sysdep.c | 3 +++ sysdeps/generic/dl-hwcap-check.h | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 sysdeps/generic/dl-hwcap-check.h Reviewed-by: Stefan Liebler diff --git a/elf/dl-sysdep.c b/elf/dl-sysdep.c index bd5066fe3b..d47bef1340 100644 --- a/elf/dl-sysdep.c +++ b/elf/dl-sysdep.c @@ -46,6 +46,7 @@ #include #include +#include extern char **_environ attribute_hidden; extern char _end[] attribute_hidden; @@ -190,6 +191,8 @@ _dl_sysdep_start (void **start_argptr, DL_PLATFORM_AUXV } + dl_hwcap_check (); + #ifndef HAVE_AUX_SECURE if (seen != -1) { diff --git a/sysdeps/generic/dl-hwcap-check.h b/sysdeps/generic/dl-hwcap-check.h new file mode 100644 index 0000000000..8db7a86256 --- /dev/null +++ b/sysdeps/generic/dl-hwcap-check.h @@ -0,0 +1,28 @@ +/* Check for hardware capabilities after HWCAP parsing. Generic version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _DL_HWCAP_CHECK_H +#define _DL_HWCAP_CHECK_H + +static inline void +dl_hwcap_check (void) +{ + /* The generic implementation does not perform any checks. */ +} + +#endif /* _DL_HWCAP_CHECK_H */ From patchwork Thu May 6 12:30:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 43267 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 110F23AA9834; Thu, 6 May 2021 12:30:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 110F23AA9834 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1620304204; bh=8XLPH2Q5iTNNJPRSEoxs9aT7f8Ll5hje8FqkU2zWxlY=; h=To:Subject:In-Reply-To:References:Date:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=jiMDMgq+RRHyLDm0lJCREefDuswIWahU2rqFl8w8Hu9cZilzww1sdZ+g1u9WQgjQC CjAfXWsz9HPRiX7STEYst+vPD2xWxoQxiNlgANWvNIFAwXJGBQCAPQPcBKY+tCmuSz wAg1WtyRC59NWYxuRcDCS2WG0LsCwpaWS6fctymw= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 83C2D3AA9833 for ; Thu, 6 May 2021 12:30:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 83C2D3AA9833 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-508-8u1eMuPvN7C8U3b_sVuNyQ-1; Thu, 06 May 2021 08:29:59 -0400 X-MC-Unique: 8u1eMuPvN7C8U3b_sVuNyQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 59A3C801106 for ; Thu, 6 May 2021 12:29:58 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-112-137.ams2.redhat.com [10.36.112.137]) by smtp.corp.redhat.com (Postfix) with ESMTPS id AED9119D61 for ; Thu, 6 May 2021 12:29:57 +0000 (UTC) To: libc-alpha@sourceware.org Subject: [PATCH 2/3] powerpc64le: Check HWCAP bits against compiler build flags In-Reply-To: References: Message-Id: Date: Thu, 06 May 2021 14:30:15 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Weimer via Libc-alpha From: Florian Weimer Reply-To: Florian Weimer Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" When built with GCC 11.1 and -mcpu=power9, ld.so prints this error message when running on POWER8: Fatal glibc error: CPU lacks ISA 3.00 support (POWER9 or later required) This approach does not work for the POWER10 because the bootstrap relocation already uses PCREL instructions, so the detection code does not actually run. --- sysdeps/powerpc/powerpc64/le/dl-hwcap-check.h | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 sysdeps/powerpc/powerpc64/le/dl-hwcap-check.h diff --git a/sysdeps/powerpc/powerpc64/le/dl-hwcap-check.h b/sysdeps/powerpc/powerpc64/le/dl-hwcap-check.h new file mode 100644 index 0000000000..6c7949c6d2 --- /dev/null +++ b/sysdeps/powerpc/powerpc64/le/dl-hwcap-check.h @@ -0,0 +1,49 @@ +/* Check for hardware capabilities after HWCAP parsing. powerpc64le version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _DL_HWCAP_CHECK_H +#define _DL_HWCAP_CHECK_H + +#include + +static inline void +dl_hwcap_check (void) +{ +#ifdef _ARCH_PWR9 + if ((GLRO (dl_hwcap2) & PPC_FEATURE2_ARCH_3_00) == 0) + _dl_fatal_printf ("\ +Fatal glibc error: CPU lacks ISA 3.00 support (POWER9 or later required)\n"); +#endif +#ifdef __FLOAT128_HARDWARE__ + if ((GLRO (dl_hwcap2) & PPC_FEATURE2_HAS_IEEE128) == 0) + _dl_fatal_printf ("\ +Fatal glibc error: CPU lacks float128 support (POWER 9 or later required)\n"); +#endif +#if defined _ARCH_PWR10 || defined __PCREL__ + if ((GLRO (dl_hwcap2) & PPC_FEATURE2_ARCH_3_1) == 0) + _dl_fatal_printf ("\ +Fatal glibc error: CPU lacks ISA 3.10 support (POWER10 or later required)\n"); +#endif +#ifdef __MMA__ + if ((GLRO (dl_hwcap2) & PPC_FEATURE2_MMA) == 0) + _dl_fatal_printf ("\ +Fatal glibc error: CPU lacks MMA support (POWER10 or later required)\n"); +#endif +} + +#endif /* _DL_HWCAP_CHECK_H */ From patchwork Thu May 6 12:30:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 43268 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9C2D53AA9835; Thu, 6 May 2021 12:30:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9C2D53AA9835 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1620304209; bh=Ae3LX7Tw6Eoco8RqtnbuozMD0MGK5dqsDe1/RvHPC74=; h=To:Subject:In-Reply-To:References:Date:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=bUwwn/5iFUe/uo5ZKQSgvw5Qbiy7l3uYkb7yqkB/aVTlUSrOl1sOsVrVATu6jmbPW S9NKDebR8/2fhI+lxF4qqAANc+Vrb/2ACpdwqYcOn19GdVwDLLvYsNgVT5ms63pYkN +ibYRmaOtEN5iSGvrj9c7hnuSfLug2CIzVkZoITA= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id 94E8B3AA9835 for ; Thu, 6 May 2021 12:30:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 94E8B3AA9835 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-169-i6Ckbf4kOt2MgTiuzn839g-1; Thu, 06 May 2021 08:30:05 -0400 X-MC-Unique: i6Ckbf4kOt2MgTiuzn839g-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7D131107ACE4 for ; Thu, 6 May 2021 12:30:03 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-112-137.ams2.redhat.com [10.36.112.137]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E55D65C1A1 for ; Thu, 6 May 2021 12:30:02 +0000 (UTC) To: libc-alpha@sourceware.org Subject: [PATCH 3/3] s390x: Check HWCAP bits against compiler flags In-Reply-To: References: Message-Id: Date: Thu, 06 May 2021 14:30:21 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Weimer via Libc-alpha From: Florian Weimer Reply-To: Florian Weimer Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" When compiled with GCC 11.1 and -march=z14 -O3 build flags, running ld.so (or any dynamically linked program) prints: Fatal glibc error: CPU lacks VXE support (z14 or later required) Co-Authored-By: Stefan Liebler Reviewed-by: Stefan Liebler --- sysdeps/s390/s390-64/dl-hwcap-check.h | 40 +++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 sysdeps/s390/s390-64/dl-hwcap-check.h diff --git a/sysdeps/s390/s390-64/dl-hwcap-check.h b/sysdeps/s390/s390-64/dl-hwcap-check.h new file mode 100644 index 0000000000..87e18be6bd --- /dev/null +++ b/sysdeps/s390/s390-64/dl-hwcap-check.h @@ -0,0 +1,40 @@ +/* Check for hardware capabilities after HWCAP parsing. S390 version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _DL_HWCAP_CHECK_H +#define _DL_HWCAP_CHECK_H + +#include + +static inline void +dl_hwcap_check (void) +{ +#if defined __ARCH__ +# if __ARCH__ >= 13 + if (!(GLRO(dl_hwcap) & HWCAP_S390_VXRS_EXT2)) + _dl_fatal_printf ("\ +Fatal glibc error: CPU lacks VXRS_EXT2 support (z15 or later required)\n"); +# elif __ARCH__ >= 12 + if (!(GLRO(dl_hwcap) & HWCAP_S390_VXE)) + _dl_fatal_printf ("\ +Fatal glibc error: CPU lacks VXE support (z14 or later required)\n"); +# endif +#endif /* __ARCH__ */ +} + +#endif /* _DL_HWCAP_CHECK_H */