Enable VDSO for static linking on mips
Commit Message
From: Rafael Avila de Espindola <rafael@espindo.la>
I have tested that this builds and the resulting program still work.
This was tested on gcc23.fsffrance.org, and for some reason the vdso
there seems unused even when using shared libraries.
2018-12-06 Rafael Ávila de Espíndola <rafael@espindo.la>
[BZ #19767]
* sysdeps/unix/sysv/linux/mips/init-first.c: Remove #ifdef SHARED.
* sysdeps/unix/sysv/linux/mips/libc-vdso.h: Remove #ifdef SHARED.
* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h: Define ALWAYS_USE_VSYSCALL.
* sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h: Define ALWAYS_USE_VSYSCALL.
* sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: Define ALWAYS_USE_VSYSCALL.
---
sysdeps/unix/sysv/linux/mips/init-first.c | 8 +++-----
sysdeps/unix/sysv/linux/mips/libc-vdso.h | 6 +-----
sysdeps/unix/sysv/linux/mips/mips32/sysdep.h | 3 +++
sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h | 3 +++
sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h | 3 +++
5 files changed, 13 insertions(+), 10 deletions(-)
Comments
@@ -17,9 +17,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;
int (*VDSO_SYMBOL(clock_gettime)) (clockid_t, struct timespec *);
@@ -38,7 +37,6 @@ _libc_vdso_platform_setup (void)
VDSO_SYMBOL (clock_gettime) = p;
}
-# define VDSO_SETUP _libc_vdso_platform_setup
-#endif
+#define VDSO_SETUP _libc_vdso_platform_setup
#include <csu/init-first.c>
@@ -20,14 +20,10 @@
#ifndef _LIBC_VDSO_H
#define _LIBC_VDSO_H
-#ifdef SHARED
-
-# include <sysdep-vdso.h>
+#include <sysdep-vdso.h>
extern int (*VDSO_SYMBOL(gettimeofday)) (struct timeval *, void *)
attribute_hidden;
extern int (*VDSO_SYMBOL(clock_gettime)) (clockid_t, struct timespec *);
-#endif
-
#endif /* _LIBC_VDSO_H */
@@ -18,6 +18,9 @@
#ifndef _LINUX_MIPS_MIPS32_SYSDEP_H
#define _LINUX_MIPS_MIPS32_SYSDEP_H 1
+/* Always enable vsyscalls on mips32 */
+#define ALWAYS_USE_VSYSCALL 1
+
/* There is some commonality. */
#include <sysdeps/unix/sysv/linux/sysdep.h>
#include <sysdeps/unix/mips/mips32/sysdep.h>
@@ -18,6 +18,9 @@
#ifndef _LINUX_MIPS_SYSDEP_H
#define _LINUX_MIPS_SYSDEP_H 1
+/* Always enable vsyscalls on n32 */
+#define ALWAYS_USE_VSYSCALL 1
+
/* There is some commonality. */
#include <sysdeps/unix/sysv/linux/sysdep.h>
#include <sysdeps/unix/mips/mips64/n32/sysdep.h>
@@ -18,6 +18,9 @@
#ifndef _LINUX_MIPS_SYSDEP_H
#define _LINUX_MIPS_SYSDEP_H 1
+/* Always enable vsyscalls on n64 */
+#define ALWAYS_USE_VSYSCALL 1
+
/* There is some commonality. */
#include <sysdeps/unix/sysv/linux/sysdep.h>
#include <sysdeps/unix/mips/mips64/n64/sysdep.h>