aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2017-08-14 13:03:34 +0200
committerFlorian Weimer <fweimer@redhat.com>2017-08-14 15:08:48 +0200
commitfbdc1e3e8de7f49e439b6e274d3e7e07da78416e (patch)
treebd3815984855006dfdb547703a24a3f6607bd733
parentb3f85fd2e43b1d69384396a6d99fa2135dbf46e3 (diff)
downloadglibc-fbdc1e3e8de7f49e439b6e274d3e7e07da78416e.zip
glibc-fbdc1e3e8de7f49e439b6e274d3e7e07da78416e.tar.gz
glibc-fbdc1e3e8de7f49e439b6e274d3e7e07da78416e.tar.bz2
i386: Do not set internal_function
All calls to functions with the internal_function attribute have been removed from assembler implementations, which means that the definition of internal_function can be changed at the C level without causing ABI issues with assembler code. _dl_fixup still uses a regparm calling convention on i386, but this is controlled through ARCH_FIXUP_ATTRIBUTE, not internal_function.
-rw-r--r--ChangeLog7
-rw-r--r--config.h.in10
-rw-r--r--sysdeps/i386/configure3
-rw-r--r--sysdeps/i386/configure.ac2
4 files changed, 7 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index ac21eae..2adb6bb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2017-08-14 Florian Weimer <fweimer@redhat.com>
+ i386: Do not set internal_function.
+ * config.h.in (USE_REGPARMS, internal_function): Remove.
+ * sysdeps/i386/configure.ac (USE_REGPARMS): Likewise.
+ * sysdeps/i386/configure (USE_REGPARMS): Likewise.
+
+2017-08-14 Florian Weimer <fweimer@redhat.com>
+
* elf/dl-init.c (_dl_init): Remove internal_function.
* sysdeps/generic/ldsodefs.h (_dl_init): Likewise.
* sysdeps/i386/dl-machine.h (RTLD_START): Adjust call to _dl_init.
diff --git a/config.h.in b/config.h.in
index 2241857..014fb4e 100644
--- a/config.h.in
+++ b/config.h.in
@@ -47,10 +47,6 @@
#undef STACK_PROTECTOR_LEVEL
#endif
-/* Define if the regparm attribute shall be used for local functions
- (gcc on ix86 only). */
-#undef USE_REGPARMS
-
/* Defined on SPARC if GCC emits GOTDATA relocations. */
#undef HAVE_GCC_GOTDATA
@@ -100,12 +96,6 @@
#undef HAVE_AARCH64_BE
-/* Defined to some form of __attribute__ ((...)) if the compiler supports
- a different, more efficient calling convention. */
-#if defined USE_REGPARMS && !defined PROF
-# define internal_function __attribute__ ((regparm (3), stdcall))
-#endif
-
/* Linux specific: minimum supported kernel version. */
#undef __LINUX_KERNEL_VERSION
diff --git a/sysdeps/i386/configure b/sysdeps/i386/configure
index 5b55c5a..4d6685f 100644
--- a/sysdeps/i386/configure
+++ b/sysdeps/i386/configure
@@ -77,8 +77,5 @@ if test $libc_cv_asm_mpx = yes; then
fi
-$as_echo "#define USE_REGPARMS 1" >>confdefs.h
-
-
$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
diff --git a/sysdeps/i386/configure.ac b/sysdeps/i386/configure.ac
index 19ef33f..f7766ad 100644
--- a/sysdeps/i386/configure.ac
+++ b/sysdeps/i386/configure.ac
@@ -45,8 +45,6 @@ if test $libc_cv_asm_mpx = yes; then
AC_DEFINE(HAVE_MPX_SUPPORT)
fi
-AC_DEFINE(USE_REGPARMS)
-
dnl It is always possible to access static and hidden symbols in an
dnl position independent way.
AC_DEFINE(PI_STATIC_AND_HIDDEN)