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 */