summary refs log tree commit diff
path: root/include
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-05-31 23:45:33 -0700
committerUlrich Drepper <drepper@redhat.com>2009-05-31 23:45:33 -0700
commit74414708355a922a514d5c76183eca6931c4488a (patch)
tree60dd084df2e9f02464f66b0da2068f4561856458 /include
parent963cb6fcb47ca212c0c57cc57bd7510f6549579c (diff)
downloadglibc-74414708355a922a514d5c76183eca6931c4488a.tar.gz
glibc-74414708355a922a514d5c76183eca6931c4488a.tar.xz
glibc-74414708355a922a514d5c76183eca6931c4488a.zip
Finish IFUNC support for x86 and x86-64.
Add support for the IRELAIVE relocation and IFUNC in static executables.
Diffstat (limited to 'include')
-rw-r--r--include/libc-symbols.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index d53bcb9b77..68da77c58e 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -845,4 +845,21 @@ for linking")
   }									\
   __asm__ (".type " #name ", %gnu_indirect_function");
 
+#ifdef HAVE_ASM_SET_DIRECTIVE
+# define libc_ifunc_hidden_def1(local, name)				\
+    __asm__ (declare_symbol_alias_1_stringify (ASM_GLOBAL_DIRECTIVE)	\
+	     " " #local "\n\t"						\
+	     ".hidden " #local "\n\t"					\
+	     ".set " #local ", " #name);
+#else
+# define libc_ifunc_hidden_def1(local, name)				\
+    __asm__ (declare_symbol_alias_1_stringify (ASM_GLOBAL_DIRECTIVE)	\
+	     " " #local "\n\t"						\
+	     ".hidden " #local "\n\t"					\
+	     #local " = " #name);
+#endif
+
+#define libc_ifunc_hidden_def(name) \
+  libc_ifunc_hidden_def1 (__GI_##name, name)
+
 #endif /* libc-symbols.h */