[PATCH] aarch64: define PI_STATIC_AND_HIDDEN

Szabolcs Nagy szabolcs.nagy@arm.com
Wed Jan 6 13:31:21 GMT 2021


AArch64 always uses pc relative access to static and hidden object
symbols, but the config setting was previously missing.

This affects ld.so start up code.
---
it seems to me that this was missing because of an oversight.
i plan to commit this tomorrow unless there are comments.

my current plan for bug 27072 is to mark things hidden in
static pie libc and then if this macro is defined then
reorder the self reloc code after auxv, tunables etc are
set up (this requires that nothing depends on ifuncs and
global pointers up to that point).

 sysdeps/aarch64/configure    | 5 +++++
 sysdeps/aarch64/configure.ac | 4 ++++
 2 files changed, 9 insertions(+)

diff --git a/sysdeps/aarch64/configure b/sysdeps/aarch64/configure
index 1f8223725f..5f5f3cc44c 100644
--- a/sysdeps/aarch64/configure
+++ b/sysdeps/aarch64/configure
@@ -1,6 +1,11 @@
 # This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/aarch64.
 
+# Static and hidden objects are accessed without dynamic relocations.
+# The exception is -mcmodel=large which is unsupported with PIC/PIE.
+$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
+
+
 # We check to see if the compiler and flags are
 # selecting the big endian ABI and if they are then
 # we set libc_cv_aarch64_be to yes which causes
diff --git a/sysdeps/aarch64/configure.ac b/sysdeps/aarch64/configure.ac
index da2a8d81d0..180a16a29f 100644
--- a/sysdeps/aarch64/configure.ac
+++ b/sysdeps/aarch64/configure.ac
@@ -1,6 +1,10 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/aarch64.
 
+# Static and hidden objects are accessed without dynamic relocations.
+# The exception is -mcmodel=large which is unsupported with PIC/PIE.
+AC_DEFINE(PI_STATIC_AND_HIDDEN)
+
 # We check to see if the compiler and flags are
 # selecting the big endian ABI and if they are then
 # we set libc_cv_aarch64_be to yes which causes
-- 
2.17.1



More information about the Libc-alpha mailing list