public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc] aarch64: Move and update the definition of MTE_ENABLED
@ 2021-01-25 15:36 Szabolcs Nagy
0 siblings, 0 replies; only message in thread
From: Szabolcs Nagy @ 2021-01-25 15:36 UTC (permalink / raw)
To: glibc-cvs
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c3c4a25e651d4d78b1751664a613807b7140ed7e
commit c3c4a25e651d4d78b1751664a613807b7140ed7e
Author: Szabolcs Nagy <szabolcs.nagy@arm.com>
Date: Fri Jan 22 16:14:05 2021 +0000
aarch64: Move and update the definition of MTE_ENABLED
The hwcap value is now in linux 5.10 and in glibc bits/hwcap.h, so use
that definition.
Move the definition to init-arch.h so all ifunc selectors can use it
and expose an "mte" shorthand for mte enabled runtime.
For now we allow user code to enable tag checks and use PROT_MTE
mappings without libc involvment, this is not guaranteed ABI, but
can be useful for testing and debugging with MTE.
Diff:
---
sysdeps/aarch64/multiarch/init-arch.h | 11 ++++++++++-
sysdeps/aarch64/multiarch/strlen.c | 11 +----------
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/sysdeps/aarch64/multiarch/init-arch.h b/sysdeps/aarch64/multiarch/init-arch.h
index bf8264b561..fce260d168 100644
--- a/sysdeps/aarch64/multiarch/init-arch.h
+++ b/sysdeps/aarch64/multiarch/init-arch.h
@@ -17,9 +17,18 @@
<https://www.gnu.org/licenses/>. */
#include <ldsodefs.h>
+#include <sys/auxv.h>
+
+/* Make glibc MTE-safe on a system that supports MTE in case user code
+ enables tag checks independently of the mte_status of glibc. There
+ is currently no ABI contract for enabling tag checks in user code,
+ but this can be useful for debugging with MTE. */
+#define MTE_ENABLED() (GLRO(dl_hwcap2) & HWCAP2_MTE)
#define INIT_ARCH() \
uint64_t __attribute__((unused)) midr = \
GLRO(dl_aarch64_cpu_features).midr_el1; \
unsigned __attribute__((unused)) zva_size = \
- GLRO(dl_aarch64_cpu_features).zva_size;
+ GLRO(dl_aarch64_cpu_features).zva_size; \
+ bool __attribute__((unused)) mte = \
+ MTE_ENABLED ();
diff --git a/sysdeps/aarch64/multiarch/strlen.c b/sysdeps/aarch64/multiarch/strlen.c
index f3c018aab4..8f38de69b5 100644
--- a/sysdeps/aarch64/multiarch/strlen.c
+++ b/sysdeps/aarch64/multiarch/strlen.c
@@ -26,21 +26,12 @@
# include <string.h>
# include <init-arch.h>
-/* This should check HWCAP2_MTE when it is available: current
- linux kernel does not expose it, but its value is reserved.
- This is needed to make glibc MTE-safe on future systems in
- case user code enables MTE. The ABI contract for enabling
- MTE is not yet specified, but it can be useful for at least
- debugging which does not need a contract. */
-#define FUTURE_HWCAP2_MTE (1 << 18)
-#define MTE_ENABLED() (GLRO(dl_hwcap2) & FUTURE_HWCAP2_MTE)
-
extern __typeof (__redirect_strlen) __strlen;
extern __typeof (__redirect_strlen) __strlen_mte attribute_hidden;
extern __typeof (__redirect_strlen) __strlen_asimd attribute_hidden;
-libc_ifunc (__strlen, (MTE_ENABLED () ? __strlen_mte : __strlen_asimd));
+libc_ifunc (__strlen, (mte ? __strlen_mte : __strlen_asimd));
# undef strlen
strong_alias (__strlen, strlen);
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-01-25 15:36 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-25 15:36 [glibc] aarch64: Move and update the definition of MTE_ENABLED Szabolcs Nagy
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).