From 996f6decfad3cb0a3e87c0f7e5c0578ccae45d56 Mon Sep 17 00:00:00 2001 From: Goran Ferenc Date: Tue, 30 May 2017 16:00:41 +0200 Subject: [PATCH] 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 --- libc/SYSCALLS.TXT | 6 ++---- libc/arch-mips/syscalls/{clock_gettime.S => __clock_gettime.S} | 4 ++-- libc/arch-mips/syscalls/{gettimeofday.S => __gettimeofday.S} | 4 ++-- libc/arch-mips64/syscalls/{clock_gettime.S => __clock_gettime.S} | 5 +++-- libc/arch-mips64/syscalls/{gettimeofday.S => __gettimeofday.S} | 5 +++-- libc/bionic/vdso.cpp | 9 --------- libc/private/bionic_vdso.h | 2 +- 7 files changed, 13 insertions(+), 22 deletions(-) rename libc/arch-mips/syscalls/{clock_gettime.S => __clock_gettime.S} (86%) rename libc/arch-mips/syscalls/{gettimeofday.S => __gettimeofday.S} (86%) rename libc/arch-mips64/syscalls/{clock_gettime.S => __clock_gettime.S} (84%) rename libc/arch-mips64/syscalls/{gettimeofday.S => __gettimeofday.S} (84%) diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT index 936f3fd12..5ff3c64ea 100644 --- a/libc/SYSCALLS.TXT +++ b/libc/SYSCALLS.TXT @@ -350,7 +350,5 @@ int __set_tls:set_thread_area(void*) mips,mips64 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 d227a0666..6fad7e936 100644 --- a/libc/arch-mips/syscalls/clock_gettime.S +++ b/libc/arch-mips/syscalls/__clock_gettime.S @@ -2,7 +2,7 @@ #include -ENTRY(clock_gettime) +ENTRY(__clock_gettime) .set noreorder .cpload t9 li v0, __NR_clock_gettime @@ -16,4 +16,4 @@ ENTRY(clock_gettime) 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 672faa3a6..e8b9d6a75 100644 --- a/libc/arch-mips/syscalls/gettimeofday.S +++ b/libc/arch-mips/syscalls/__gettimeofday.S @@ -2,7 +2,7 @@ #include -ENTRY(gettimeofday) +ENTRY(__gettimeofday) .set noreorder .cpload t9 li v0, __NR_gettimeofday @@ -16,4 +16,4 @@ ENTRY(gettimeofday) 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 08135607e..34071222c 100644 --- a/libc/arch-mips64/syscalls/clock_gettime.S +++ b/libc/arch-mips64/syscalls/__clock_gettime.S @@ -2,7 +2,7 @@ #include -ENTRY(clock_gettime) +ENTRY(__clock_gettime) .set push .set noreorder li v0, __NR_clock_gettime @@ -22,4 +22,5 @@ ENTRY(clock_gettime) 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 3a6d417e3..2ac5e9b10 100644 --- a/libc/arch-mips64/syscalls/gettimeofday.S +++ b/libc/arch-mips64/syscalls/__gettimeofday.S @@ -2,7 +2,7 @@ #include -ENTRY(gettimeofday) +ENTRY(__gettimeofday) .set push .set noreorder li v0, __NR_gettimeofday @@ -22,4 +22,5 @@ ENTRY(gettimeofday) 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 f3d95ca8a..dd4c070ac 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 #include #include @@ -112,10 +110,3 @@ void __libc_init_vdso(libc_globals* globals, KernelArgumentBlock& args) { } } } - -#else - -void __libc_init_vdso(libc_globals*, KernelArgumentBlock&) { -} - -#endif diff --git a/libc/private/bionic_vdso.h b/libc/private/bionic_vdso.h index 8fd0743ed..2d11cd69f 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 -- 2.11.0