diff options
author | Dmitry Chestnykh <dm.chestnykh@gmail.com> | 2024-04-16 08:37:15 +0300 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2024-04-18 14:52:32 +0200 |
commit | f749cb5c4a258474e377ba3f6ed1165c5c4a08f7 (patch) | |
tree | b49bf57f99d18abbb72cac87e170488ae8da2542 | |
parent | 3a36a3100af2ee1cca69345af83228757e8c55fe (diff) |
Generalize vDSO code.
- Add macroses for vDSO functions names because
in some architectures these names differ from the default ones.
- Add header guards in dl-syscalls.h .
Signed-off-by: Dmitry Chestnykh <dm.chestnykh@gmail.com>
-rw-r--r-- | ldso/ldso/arm/dl-syscalls.h | 8 | ||||
-rwxr-xr-x | ldso/ldso/dl-vdso.c | 14 | ||||
-rw-r--r-- | ldso/ldso/mips/dl-syscalls.h | 8 | ||||
-rw-r--r-- | ldso/ldso/x86_64/dl-syscalls.h | 8 |
4 files changed, 32 insertions, 6 deletions
diff --git a/ldso/ldso/arm/dl-syscalls.h b/ldso/ldso/arm/dl-syscalls.h index 5cbb94d30..5f6f7a883 100644 --- a/ldso/ldso/arm/dl-syscalls.h +++ b/ldso/ldso/arm/dl-syscalls.h @@ -1,5 +1,8 @@ /* stub for arch-specific syscall issues/specific implementations */ +#ifndef _DL_SYSCALLS_H +#define _DL_SYSCALLS_H + #if defined(__VDSO_SUPPORT__) && !defined(UCLIBC_LDSO) #include "../dl-vdso-calls.h" @@ -19,4 +22,7 @@ static int __attribute__ ((used)) __arm_vdso_gettimeofday(struct timeval *tv, __ #define ARCH_VDSO_GETTIMEOFDAY(tv, tz) __arm_vdso_gettimeofday(tv, tz) #define ARCH_VDSO_CLOCK_GETTIME(clock_id, tp) __arm_vdso_clock_gettime(clock_id, tp) -#endif /* defined(__VDSO_SUPPORT__) && !defined(UCLIBC_LDSO) */
\ No newline at end of file +#endif /* defined(__VDSO_SUPPORT__) && !defined(UCLIBC_LDSO) */ + +#endif /* _DL_SYSCALLS_H */ + diff --git a/ldso/ldso/dl-vdso.c b/ldso/ldso/dl-vdso.c index c23fd8b72..196cbbb3b 100755 --- a/ldso/ldso/dl-vdso.c +++ b/ldso/ldso/dl-vdso.c @@ -3,6 +3,14 @@ #include <string.h> #include "sys/auxv.h" +#define __ARCH_VDSO_GETTIMEOFDAY_NAME "__vdso_gettimeofday" +#define __ARCH_VDSO_CLOCK_GETTIME_NAME "__vdso_clock_gettime" + +#if defined(__UCLIBC_USE_TIME64__) +#define __ARCH_VDSO_CLOCK_GETTIME64_NAME "__vdso_clock_gettime64" +#endif + +/* Maybe override default vDSO functions names by arch-specific */ #include "ldso.h" #include "generated/autoconf.h" @@ -321,7 +329,7 @@ void load_vdso(void *sys_info_ehdr, char **envp ){ continue; } - if ( 0 == _dl_strcmp( name, "__vdso_gettimeofday" ) ){ + if ( 0 == _dl_strcmp( name, __ARCH_VDSO_GETTIMEOFDAY_NAME ) ){ _dl__vdso_gettimeofday = func_addr; #ifdef __SUPPORT_LD_DEBUG__ if ( _dl_debug_vdso != 0 ){ @@ -330,7 +338,7 @@ void load_vdso(void *sys_info_ehdr, char **envp ){ #endif continue; } - if ( 0 == _dl_strcmp( name, "__vdso_clock_gettime" ) ){ + if ( 0 == _dl_strcmp( name, __ARCH_VDSO_CLOCK_GETTIME_NAME ) ){ _dl__vdso_clock_gettime = func_addr; #ifdef __SUPPORT_LD_DEBUG__ if ( _dl_debug_vdso != 0 ){ @@ -341,7 +349,7 @@ void load_vdso(void *sys_info_ehdr, char **envp ){ } #if defined(__UCLIBC_USE_TIME64__) - if ( 0 == _dl_strcmp( name, "__vdso_clock_gettime64" ) ){ + if ( 0 == _dl_strcmp( name, __ARCH_VDSO_CLOCK_GETTIME64_NAME ) ){ _dl__vdso_clock_gettime64 = func_addr; #ifdef __SUPPORT_LD_DEBUG__ if ( _dl_debug_vdso != 0 ){ diff --git a/ldso/ldso/mips/dl-syscalls.h b/ldso/ldso/mips/dl-syscalls.h index 46fd07bfa..d8407f17c 100644 --- a/ldso/ldso/mips/dl-syscalls.h +++ b/ldso/ldso/mips/dl-syscalls.h @@ -1,5 +1,8 @@ /* stub for arch-specific syscall issues/specific implementations */ +#ifndef _DL_SYSCALLS_H +#define _DL_SYSCALLS_H + #if defined(__VDSO_SUPPORT__) && !defined(UCLIBC_LDSO) #include "../dl-vdso-calls.h" @@ -19,4 +22,7 @@ static int __attribute__ ((used)) __mips_vdso_gettimeofday(struct timeval *tv, _ #define ARCH_VDSO_GETTIMEOFDAY(tv, tz) __mips_vdso_gettimeofday(tv, tz) #define ARCH_VDSO_CLOCK_GETTIME(clock_id, tp) __mips_vdso_clock_gettime(clock_id, tp) -#endif /* defined(__VDSO_SUPPORT__) && !defined(UCLIBC_LDSO) */
\ No newline at end of file +#endif /* defined(__VDSO_SUPPORT__) && !defined(UCLIBC_LDSO) */ + +#endif /* _DL_SYSCALLS_H */ + diff --git a/ldso/ldso/x86_64/dl-syscalls.h b/ldso/ldso/x86_64/dl-syscalls.h index 0ec7a7dbb..3f953aa83 100644 --- a/ldso/ldso/x86_64/dl-syscalls.h +++ b/ldso/ldso/x86_64/dl-syscalls.h @@ -1,5 +1,8 @@ /* stub for arch-specific syscall issues/specific implementations */ +#ifndef _DL_SYSCALLS_H +#define _DL_SYSCALLS_H + #if defined(__VDSO_SUPPORT__) && !defined(UCLIBC_LDSO) #include "../dl-vdso-calls.h" @@ -19,4 +22,7 @@ static int __attribute__ ((used)) __x86_64_vdso_gettimeofday(struct timeval *tv, #define ARCH_VDSO_GETTIMEOFDAY(tv, tz) __x86_64_vdso_gettimeofday(tv, tz) #define ARCH_VDSO_CLOCK_GETTIME(clock_id, tp) __x86_64_vdso_clock_gettime(clock_id, tp) -#endif /* defined(__VDSO_SUPPORT__) && !defined(UCLIBC_LDSO) */
\ No newline at end of file +#endif /* defined(__VDSO_SUPPORT__) && !defined(UCLIBC_LDSO) */ + +#endif /* _DL_SYSCALLS_H */ + |