This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Enable VDSO on powerpc statically linked programs.


The attached program enables vdso on powerpc statically linked programs.

The gcc compile farm only has 64 bit powerpc machines, so that is all I was able to test.

2018-11-11 Rafael Ávila de Espíndola <rafael@espindo.la>

	[BZ #19767]
	* sysdeps/unix/sysv/linux/powerpc/init-first.c: remove #ifdef SHARED.
	* sysdeps/unix/sysv/linux/powerpc/libc-vdso.h: remove #ifdef SHARED.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: define USE_VSYSCALL.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: define USE_VSYSCALL.

From a7070e1793da4fdc4a9a88d81e9297655b8849f8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafael=20=C3=81vila=20de=20Esp=C3=ADndola?=
 <rafael@espindo.la>
Date: Sun, 11 Nov 2018 17:53:10 -0800
Subject: [PATCH] Enable VDSO on static on powerpc.

---
 sysdeps/unix/sysv/linux/powerpc/init-first.c       | 8 +++-----
 sysdeps/unix/sysv/linux/powerpc/libc-vdso.h        | 4 ----
 sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h | 5 +++++
 sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h | 5 +++++
 4 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/sysdeps/unix/sysv/linux/powerpc/init-first.c b/sysdeps/unix/sysv/linux/powerpc/init-first.c
index 0a4becbed6..c8a28008db 100644
--- a/sysdeps/unix/sysv/linux/powerpc/init-first.c
+++ b/sysdeps/unix/sysv/linux/powerpc/init-first.c
@@ -16,9 +16,8 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#ifdef SHARED
-# include <dl-vdso.h>
-# include <libc-vdso.h>
+#include <dl-vdso.h>
+#include <libc-vdso.h>
 
 int (*VDSO_SYMBOL(gettimeofday)) (struct timeval *, void *)
   attribute_hidden;
@@ -79,7 +78,6 @@ _libc_vdso_platform_setup (void)
 #endif
 }
 
-# define VDSO_SETUP _libc_vdso_platform_setup
-#endif
+#define VDSO_SETUP _libc_vdso_platform_setup
 
 #include <csu/init-first.c>
diff --git a/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h b/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h
index 5fe817d6cb..bdefab2902 100644
--- a/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h
+++ b/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h
@@ -20,8 +20,6 @@
 #ifndef _LIBC_VDSO_H
 #define _LIBC_VDSO_H
 
-#ifdef SHARED
-
 #include <sysdep-vdso.h>
 
 extern int (*VDSO_SYMBOL(gettimeofday)) (struct timeval *, void *)
@@ -69,6 +67,4 @@ extern void *VDSO_SYMBOL(sigtramp_rt32);
 #define VDSO_IFUNC_RET(value)  ((void *) (value))
 #endif
 
-#endif
-
 #endif /* _LIBC_VDSO_H */
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
index ec5c5250f8..71c1d7316e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h
@@ -18,6 +18,11 @@
 #ifndef _LINUX_POWERPC_SYSDEP_H
 #define _LINUX_POWERPC_SYSDEP_H 1
 
+/* Always enable vsyscalls on powerpc32 */
+#ifndef USE_VSYSCALL
+#define USE_VSYSCALL
+#endif
+
 #include <sysdeps/unix/sysv/linux/sysdep.h>
 #include <sysdeps/unix/powerpc/sysdep.h>
 #include <tls.h>
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
index 1f17f7bd5f..dca3317284 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h
@@ -20,6 +20,11 @@
 #ifndef _LINUX_POWERPC_SYSDEP_H
 #define _LINUX_POWERPC_SYSDEP_H 1
 
+/* Always enable vsyscalls on powerpc64 */
+#ifndef USE_VSYSCALL
+#define USE_VSYSCALL
+#endif
+
 #include <sysdeps/unix/sysv/linux/sysdep.h>
 #include <sysdeps/unix/powerpc/sysdep.h>
 #include <tls.h>
-- 
2.19.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]