public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Florian Weimer <fweimer@redhat.com>
To: libc-alpha@sourceware.org
Subject: [PATCH 2/3] powerpc64le: Check HWCAP bits against compiler build flags
Date: Thu, 06 May 2021 14:30:15 +0200	[thread overview]
Message-ID: <f901ab060ff48f54d526fabfecfbb89972059019.1620304013.git.fweimer@redhat.com> (raw)
In-Reply-To: <cover.1620304013.git.fweimer@redhat.com>

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
+   <https://www.gnu.org/licenses/>.  */
+
+#ifndef _DL_HWCAP_CHECK_H
+#define _DL_HWCAP_CHECK_H
+
+#include <ldsodefs.h>
+
+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 */
-- 
2.30.2



  parent reply	other threads:[~2021-05-06 12:30 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-06 12:30 [PATCH 0/3] Checking HWCAP bits against compiler flags Florian Weimer
2021-05-06 12:30 ` [PATCH 1/3] elf: Add hook for checking HWCAP bits after auxiliary vector parsing Florian Weimer
2021-05-12  7:43   ` Stefan Liebler
2021-05-06 12:30 ` Florian Weimer [this message]
2021-05-11 21:12   ` [PATCH 2/3] powerpc64le: Check HWCAP bits against compiler build flags Lucas A. M. Magalhaes
2021-05-12  8:27     ` Florian Weimer
2021-05-12 14:50       ` Lucas A. M. Magalhaes
2021-05-12 14:52       ` Tulio Magno Quites Machado Filho
2021-05-12 17:27         ` Florian Weimer
2021-05-12 19:24           ` Tulio Magno Quites Machado Filho
2021-05-18 16:59         ` Florian Weimer
2021-05-18 17:26           ` Tulio Magno Quites Machado Filho
2021-05-18 17:41             ` Florian Weimer
2021-05-06 12:30 ` [PATCH 3/3] s390x: Check HWCAP bits against compiler flags Florian Weimer
2021-05-12  7:43   ` Stefan Liebler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f901ab060ff48f54d526fabfecfbb89972059019.1620304013.git.fweimer@redhat.com \
    --to=fweimer@redhat.com \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).