MIPS: 32/64-bit VDSO support
File libc/SYSCALLS.TXT is updated to generate bionic's system call wrappers
for clock_gettime() & gettimeofday() that will be called if kernel vdso
implementations fail to execute.
The system call wrappers are generated using a python script gensyscalls.py.
Since all architectures support vdso now, there is no more need for conditional
statements regarding supported architectures in libc/bionic/vdso.cpp &
libc/private/bionic_vdso.h files.
Test: builds
Change-Id: I7213f29c179a7929851499d78a72900638ae861a
Signed-off-by: Goran Ferenc <goran.ferenc@imgtec.com>
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index 936f3fd..5ff3c64 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -350,7 +350,5 @@
int __set_thread_area:set_thread_area(void*) x86
# vdso stuff.
-int clock_gettime(clockid_t, timespec*) mips,mips64
-int __clock_gettime:clock_gettime(clockid_t, timespec*) arm,arm64,x86,x86_64
-int gettimeofday(timeval*, timezone*) mips,mips64
-int __gettimeofday:gettimeofday(timeval*, timezone*) arm,arm64,x86,x86_64
+int __clock_gettime:clock_gettime(clockid_t, timespec*) all
+int __gettimeofday:gettimeofday(timeval*, timezone*) all
diff --git a/libc/arch-mips/syscalls/clock_gettime.S b/libc/arch-mips/syscalls/__clock_gettime.S
similarity index 86%
rename from libc/arch-mips/syscalls/clock_gettime.S
rename to libc/arch-mips/syscalls/__clock_gettime.S
index d227a06..6fad7e9 100644
--- a/libc/arch-mips/syscalls/clock_gettime.S
+++ b/libc/arch-mips/syscalls/__clock_gettime.S
@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
-ENTRY(clock_gettime)
+ENTRY(__clock_gettime)
.set noreorder
.cpload t9
li v0, __NR_clock_gettime
@@ -16,4 +16,4 @@
j t9
nop
.set reorder
-END(clock_gettime)
+END(__clock_gettime)
diff --git a/libc/arch-mips/syscalls/gettimeofday.S b/libc/arch-mips/syscalls/__gettimeofday.S
similarity index 86%
rename from libc/arch-mips/syscalls/gettimeofday.S
rename to libc/arch-mips/syscalls/__gettimeofday.S
index 672faa3..e8b9d6a 100644
--- a/libc/arch-mips/syscalls/gettimeofday.S
+++ b/libc/arch-mips/syscalls/__gettimeofday.S
@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
-ENTRY(gettimeofday)
+ENTRY(__gettimeofday)
.set noreorder
.cpload t9
li v0, __NR_gettimeofday
@@ -16,4 +16,4 @@
j t9
nop
.set reorder
-END(gettimeofday)
+END(__gettimeofday)
diff --git a/libc/arch-mips64/syscalls/clock_gettime.S b/libc/arch-mips64/syscalls/__clock_gettime.S
similarity index 84%
rename from libc/arch-mips64/syscalls/clock_gettime.S
rename to libc/arch-mips64/syscalls/__clock_gettime.S
index 0813560..3407122 100644
--- a/libc/arch-mips64/syscalls/clock_gettime.S
+++ b/libc/arch-mips64/syscalls/__clock_gettime.S
@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
-ENTRY(clock_gettime)
+ENTRY(__clock_gettime)
.set push
.set noreorder
li v0, __NR_clock_gettime
@@ -22,4 +22,5 @@
j t9
move ra, t0
.set pop
-END(clock_gettime)
+END(__clock_gettime)
+.hidden __clock_gettime
diff --git a/libc/arch-mips64/syscalls/gettimeofday.S b/libc/arch-mips64/syscalls/__gettimeofday.S
similarity index 84%
rename from libc/arch-mips64/syscalls/gettimeofday.S
rename to libc/arch-mips64/syscalls/__gettimeofday.S
index 3a6d417..2ac5e9b 100644
--- a/libc/arch-mips64/syscalls/gettimeofday.S
+++ b/libc/arch-mips64/syscalls/__gettimeofday.S
@@ -2,7 +2,7 @@
#include <private/bionic_asm.h>
-ENTRY(gettimeofday)
+ENTRY(__gettimeofday)
.set push
.set noreorder
li v0, __NR_gettimeofday
@@ -22,4 +22,5 @@
j t9
move ra, t0
.set pop
-END(gettimeofday)
+END(__gettimeofday)
+.hidden __gettimeofday
diff --git a/libc/bionic/vdso.cpp b/libc/bionic/vdso.cpp
index f3d95ca..dd4c070 100644
--- a/libc/bionic/vdso.cpp
+++ b/libc/bionic/vdso.cpp
@@ -17,8 +17,6 @@
#include "private/bionic_globals.h"
#include "private/bionic_vdso.h"
-#if defined(__aarch64__) || defined(__arm__) || defined(__i386__) || defined(__x86_64__)
-
#include <limits.h>
#include <link.h>
#include <string.h>
@@ -112,10 +110,3 @@
}
}
}
-
-#else
-
-void __libc_init_vdso(libc_globals*, KernelArgumentBlock&) {
-}
-
-#endif
diff --git a/libc/private/bionic_vdso.h b/libc/private/bionic_vdso.h
index 8fd0743..2d11cd6 100644
--- a/libc/private/bionic_vdso.h
+++ b/libc/private/bionic_vdso.h
@@ -34,7 +34,7 @@
#if defined(__aarch64__)
#define VDSO_CLOCK_GETTIME_SYMBOL "__kernel_clock_gettime"
#define VDSO_GETTIMEOFDAY_SYMBOL "__kernel_gettimeofday"
-#elif defined(__arm__) || defined(__i386__) || defined(__x86_64__)
+#else
#define VDSO_CLOCK_GETTIME_SYMBOL "__vdso_clock_gettime"
#define VDSO_GETTIMEOFDAY_SYMBOL "__vdso_gettimeofday"
#endif