From edc43054d48e2e6cd580a620955cb3b76f588a4d Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 26 Feb 1998 17:16:26 +0000 Subject: [PATCH] Make versioned symbols only for shared library. Fix ENOSYS branch. --- sysdeps/unix/sysv/linux/alpha/getitimer.S | 14 +++++++++++--- sysdeps/unix/sysv/linux/alpha/getrusage.S | 14 +++++++++++--- sysdeps/unix/sysv/linux/alpha/gettimeofday.S | 16 +++++++++++++--- sysdeps/unix/sysv/linux/alpha/select.S | 16 +++++++++++++--- sysdeps/unix/sysv/linux/alpha/setitimer.S | 16 +++++++++++++--- sysdeps/unix/sysv/linux/alpha/settimeofday.S | 16 +++++++++++++--- sysdeps/unix/sysv/linux/alpha/syscalls.list | 13 +++++++------ sysdeps/unix/sysv/linux/alpha/utimes.S | 16 +++++++++++++--- sysdeps/unix/sysv/linux/alpha/wait4.S | 20 ++++++++++++++++---- 9 files changed, 110 insertions(+), 31 deletions(-) diff --git a/sysdeps/unix/sysv/linux/alpha/getitimer.S b/sysdeps/unix/sysv/linux/alpha/getitimer.S index 03ae6ea491..9ba849fcac 100644 --- a/sysdeps/unix/sysv/linux/alpha/getitimer.S +++ b/sysdeps/unix/sysv/linux/alpha/getitimer.S @@ -32,7 +32,13 @@ .text -LEAF(__getitimer_tv64, 16) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +#define GETITIMER __getitimer_tv64 +#else +#define GETITIMER getitimer +#endif + +LEAF(GETITIMER, 16) ldgp gp, 0(pv) subq sp, 16, sp #ifdef PROF @@ -62,7 +68,7 @@ LEAF(__getitimer_tv64, 16) /* If we didn't get ENOSYS, it is a real error. */ .align 3 $err64: cmpeq v0, ENOSYS, t0 - bne t0, $error + beq t0, $error stl t0, __libc_missing_axp_tv64 /* Recover the saved arguments. */ @@ -94,6 +100,8 @@ $error: addq sp, 16, sp jmp zero, (pv), __syscall_error -END(__getitimer_tv64) +END(GETITIMER) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING default_symbol_version (__getitimer_tv64, getitimer, GLIBC_2.1) +#endif diff --git a/sysdeps/unix/sysv/linux/alpha/getrusage.S b/sysdeps/unix/sysv/linux/alpha/getrusage.S index d875c83771..fbbe6f7931 100644 --- a/sysdeps/unix/sysv/linux/alpha/getrusage.S +++ b/sysdeps/unix/sysv/linux/alpha/getrusage.S @@ -32,7 +32,13 @@ .text -LEAF(__getrusage_tv64, 16) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +#define GETRUSAGE __getrusage_tv64 +#else +#define GETRUSAGE getrusage +#endif + +LEAF(GETRUSAGE, 16) ldgp gp, 0(pv) subq sp, 16, sp #ifdef PROF @@ -62,7 +68,7 @@ LEAF(__getrusage_tv64, 16) /* If we didn't get ENOSYS, it is a real error. */ .align 3 $err64: cmpeq v0, ENOSYS, t0 - bne t0, $error + beq t0, $error stl t0, __libc_missing_axp_tv64 /* Recover the saved arguments. */ @@ -122,6 +128,8 @@ $error: addq sp, 16, sp jmp zero, (pv), __syscall_error -END(__getrusage_tv64) +END(GETRUSAGE) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING default_symbol_version (__getrusage_tv64, getrusage, GLIBC_2.1) +#endif diff --git a/sysdeps/unix/sysv/linux/alpha/gettimeofday.S b/sysdeps/unix/sysv/linux/alpha/gettimeofday.S index bceeefc0a7..6f7082f1b0 100644 --- a/sysdeps/unix/sysv/linux/alpha/gettimeofday.S +++ b/sysdeps/unix/sysv/linux/alpha/gettimeofday.S @@ -32,7 +32,13 @@ .text -LEAF(__gettimeofday_tv64, 16) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +#define GETTIMEOFDAY __gettimeofday_tv64 +#else +#define GETTIMEOFDAY __gettimeofday +#endif + +LEAF(GETTIMEOFDAY, 16) ldgp gp, 0(pv) subq sp, 16, sp #ifdef PROF @@ -62,7 +68,7 @@ LEAF(__gettimeofday_tv64, 16) /* If we didn't get ENOSYS, it is a real error. */ .align 3 $err64: cmpeq v0, ENOSYS, t0 - bne t0, $error + beq t0, $error stl t0, __libc_missing_axp_tv64 /* Recover the saved arguments. */ @@ -91,8 +97,9 @@ $error: addq sp, 16, sp jmp zero, (pv), __syscall_error -END(__gettimeofday_tv64) +END(GETTIMEOFDAY) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING default_symbol_version (__gettimeofday_tv64, __gettimeofday, GLIBC_2.1) /* It seems to me to be a misfeature of the assembler that we can only @@ -100,3 +107,6 @@ default_symbol_version (__gettimeofday_tv64, __gettimeofday, GLIBC_2.1) The 'p' is for 'public'. *Shrug* */ strong_alias (__gettimeofday_tv64, __gettimeofday_tv64p) default_symbol_version (__gettimeofday_tv64p, gettimeofday, GLIBC_2.1) +#else +weak_alias (__gettimeofday, gettimeofday) +#endif diff --git a/sysdeps/unix/sysv/linux/alpha/select.S b/sysdeps/unix/sysv/linux/alpha/select.S index 73076b9158..c854f7fd30 100644 --- a/sysdeps/unix/sysv/linux/alpha/select.S +++ b/sysdeps/unix/sysv/linux/alpha/select.S @@ -32,7 +32,13 @@ .text -LEAF(__select_tv64, 64) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +#define SELECT __select_tv64 +#else +#define SELECT __select +#endif + +LEAF(SELECT, 64) ldgp gp, 0(pv) subq sp, 64, sp #ifdef PROF @@ -64,7 +70,7 @@ LEAF(__select_tv64, 64) /* If we didn't get ENOSYS, it is a real error. */ .align 3 $err64: cmpeq v0, ENOSYS, t0 - bne t0, $error + beq t0, $error stl t0, __libc_missing_axp_tv64 /* Recover the saved arguments. */ @@ -105,8 +111,9 @@ $error: addq sp, 64, sp jmp zero, (pv), __syscall_error -END(__select_tv64) +END(SELECT) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING default_symbol_version (__select_tv64, __select, GLIBC_2.1) /* It seems to me to be a misfeature of the assembler that we can only @@ -114,3 +121,6 @@ default_symbol_version (__select_tv64, __select, GLIBC_2.1) The 'p' is for 'public'. *Shrug* */ strong_alias (__select_tv64, __select_tv64p) default_symbol_version (__select_tv64p, select, GLIBC_2.1) +#else +weak_alias (__select, select) +#endif diff --git a/sysdeps/unix/sysv/linux/alpha/setitimer.S b/sysdeps/unix/sysv/linux/alpha/setitimer.S index a2085cc29e..e57acc2020 100644 --- a/sysdeps/unix/sysv/linux/alpha/setitimer.S +++ b/sysdeps/unix/sysv/linux/alpha/setitimer.S @@ -32,7 +32,13 @@ .text -LEAF(__setitimer_tv64, 48) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +#define SETITIMER __setitimer_tv64 +#else +#define SETITIMER __setitimer +#endif + +LEAF(SETITIMER, 48) ldgp gp, 0(pv) subq sp, 48, sp #ifdef PROF @@ -63,7 +69,7 @@ LEAF(__setitimer_tv64, 48) /* If we didn't get ENOSYS, it is a real error. */ .align 3 $err64: cmpeq v0, ENOSYS, t0 - bne t0, $error + beq t0, $error stl t0, __libc_missing_axp_tv64 /* Recover the saved arguments. */ @@ -110,8 +116,9 @@ $error: addq sp, 48, sp jmp zero, (pv), __syscall_error -END(__setitimer_tv64) +END(SETITIMER) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING default_symbol_version (__setitimer_tv64, __setitimer, GLIBC_2.1) /* It seems to me to be a misfeature of the assembler that we can only @@ -119,3 +126,6 @@ default_symbol_version (__setitimer_tv64, __setitimer, GLIBC_2.1) The 'p' is for 'public'. *Shrug* */ strong_alias (__setitimer_tv64, __setitimer_tv64p) default_symbol_version (__setitimer_tv64p, setitimer, GLIBC_2.1) +#else +weak_alias (__setitimer, setitimer) +#endif diff --git a/sysdeps/unix/sysv/linux/alpha/settimeofday.S b/sysdeps/unix/sysv/linux/alpha/settimeofday.S index b730df7136..ae129ecc1c 100644 --- a/sysdeps/unix/sysv/linux/alpha/settimeofday.S +++ b/sysdeps/unix/sysv/linux/alpha/settimeofday.S @@ -32,7 +32,13 @@ .text -LEAF(__settimeofday_tv64, 16) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +#define SETTIMEOFDAY __settimeofday_tv64 +#else +#define SETTIMEOFDAY __settimeofday +#endif + +LEAF(SETTIMEOFDAY, 16) ldgp gp, 0(pv) subq sp, 16, sp #ifdef PROF @@ -61,7 +67,7 @@ LEAF(__settimeofday_tv64, 16) /* If we didn't get ENOSYS, it is a real error. */ .align 3 $err64: cmpeq v0, ENOSYS, t0 - bne t0, $error + beq t0, $error stl t0, __libc_missing_axp_tv64 /* Recover the saved arguments. */ @@ -91,8 +97,9 @@ $error: addq sp, 16, sp jmp zero, (pv), __syscall_error -END(__settimeofday_tv64) +END(SETTIMEOFDAY) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING default_symbol_version (__settimeofday_tv64, __settimeofday, GLIBC_2.1) /* It seems to me to be a misfeature of the assembler that we can only @@ -100,3 +107,6 @@ default_symbol_version (__settimeofday_tv64, __settimeofday, GLIBC_2.1) The 'p' is for 'public'. *Shrug* */ strong_alias (__settimeofday_tv64, __settimeofday_tv64p) default_symbol_version (__settimeofday_tv64p, settimeofday, GLIBC_2.1) +#else +weak_alias (__settimeofday, settimeofday) +#endif diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list index 59c0cb8a09..26d4f15258 100644 --- a/sysdeps/unix/sysv/linux/alpha/syscalls.list +++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list @@ -64,9 +64,10 @@ pciconfig_write EXTRA pciconfig_write 5 pciconfig_write # support old timeval32 entry points osf_select - osf_select 5 __select_tv32 __select@GLIBC_2.0 select@GLIBC_2.0 osf_gettimeofday - osf_gettimeofday 2 __gettimeofday_tv32 __gettimeofday@GLIBC_2.0 gettimeofday@GLIBC_2.0 -osf_settimeofday - osf_settimeofday 2 __settimeofday_tv32 settimeofday@GLIBC_2.0 -osf_getitimer - osf_getitimer 2 __getitimer_tv32 getitimer@GLIBC_2.0 -osf_setitimer - osf_setitimer 3 __setitimer_tv32 setitimer@GLIBC_2.0 -osf_utimes - osf_utimes 2 __utimes_tv32 utimes@GLIBC_2.0 -osf_getrusage - osf_getrusage 2 __getrusage_tv32 getrusage@GLIBC_2.0 -osf_wait4 - osf_wait4 2 __wait4_tv32 wait4@GLIBC_2.0 +osf_settimeofday - osf_settimeofday 2 __settimeofday_tv32 __settimeofday@GLIBC_2.0 settimeofday@GLIBC_2.0 +osf_getitimer - osf_getitimer 2 __getitimer_tv32 __getitimer@GLIBC_2.0 getitimer@GLIBC_2.0 +osf_setitimer - osf_setitimer 3 __setitimer_tv32 __setitimer@GLIBC_2.0 setitimer@GLIBC_2.0 +osf_utimes - osf_utimes 2 __utimes_tv32 __utimes@GLIBC_2.0 utimes@GLIBC_2.0 +osf_getrusage - osf_getrusage 2 __getrusage_tv32 __getrusage@GLIBC_2.0 getrusage@GLIBC_2.0 +osf_wait4 - osf_wait4 2 __wait4_tv32 __wait4@GLIBC_2.0 wait4@GLIBC_2.0 +old_adjtimex - old_adjtimex 1 __adjtimex_tv32 __adjtimex@GLIBC_2.0 adjtimex@GLIBC_2.0 diff --git a/sysdeps/unix/sysv/linux/alpha/utimes.S b/sysdeps/unix/sysv/linux/alpha/utimes.S index 2b4c71e410..a1d2b1513c 100644 --- a/sysdeps/unix/sysv/linux/alpha/utimes.S +++ b/sysdeps/unix/sysv/linux/alpha/utimes.S @@ -32,7 +32,13 @@ .text -LEAF(__utimes_tv64, 16) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +#define UTIMES __utimes_tv64 +#else +#define UTIMES __utimes +#endif + +LEAF(UTIMES, 16) ldgp gp, 0(pv) subq sp, 16, sp #ifdef PROF @@ -62,7 +68,7 @@ LEAF(__utimes_tv64, 16) /* If we didn't get ENOSYS, it is a real error. */ .align 3 $err64: cmpeq v0, ENOSYS, t0 - bne t0, $error + beq t0, $error stl t0, __libc_missing_axp_tv64 /* Recover the saved arguments. */ @@ -96,8 +102,9 @@ $error: addq sp, 16, sp jmp zero, (pv), __syscall_error -END(__utimes_tv64) +END(UTIMES) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING default_symbol_version (__utimes_tv64, __utimes, GLIBC_2.1) /* It seems to me to be a misfeature of the assembler that we can only @@ -105,3 +112,6 @@ default_symbol_version (__utimes_tv64, __utimes, GLIBC_2.1) The 'p' is for 'public'. *Shrug* */ strong_alias (__utimes_tv64, __utimes_tv64p) default_symbol_version (__utimes_tv64p, utimes, GLIBC_2.1) +#else +weak_alias (__utimes, utimes) +#endif diff --git a/sysdeps/unix/sysv/linux/alpha/wait4.S b/sysdeps/unix/sysv/linux/alpha/wait4.S index 5ab86077c8..334836f5aa 100644 --- a/sysdeps/unix/sysv/linux/alpha/wait4.S +++ b/sysdeps/unix/sysv/linux/alpha/wait4.S @@ -32,7 +32,13 @@ .text -LEAF(__wait4_tv64, 32) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING +#define WAIT4 __wait4_tv64 +#else +#define WAIT4 __wait4 +#endif + +LEAF(WAIT4, 32) ldgp gp, 0(pv) subq sp, 32, sp #ifdef PROF @@ -64,7 +70,7 @@ LEAF(__wait4_tv64, 32) /* If we didn't get ENOSYS, it is a real error. */ .align 3 $err64: cmpeq v0, ENOSYS, t0 - bne t0, $error + beq t0, $error stl t0, __libc_missing_axp_tv64 /* Recover the saved arguments. */ @@ -79,7 +85,7 @@ $do32: ldi v0, SYS_ify(osf_wait4) bne a3, $error /* Copy back to proper format. */ - ldq a3, 8(sp) + ldq a3, 24(sp) beq a3, 2f ldl t0, 0(a3) # ru_utime.tv_sec ldl t1, 4(a3) # ru_utime.tv_usec @@ -98,6 +104,7 @@ $do32: ldi v0, SYS_ify(osf_wait4) ldt $f25, 96(a3) # ru_msgrcv ldt $f26, 104(a3) # ru_nsignals ldt $f27, 112(a3) # ru_nvcsw + .set noat ldt $f28, 120(a3) # ru_nivcsw stq t0, 0(a3) stq t1, 8(a3) @@ -117,6 +124,7 @@ $do32: ldi v0, SYS_ify(osf_wait4) stt $f26, 120(a3) stt $f27, 128(a3) stt $f28, 136(a3) + .set at 2: addq sp, 32, sp ret @@ -127,8 +135,9 @@ $error: addq sp, 32, sp jmp zero, (pv), __syscall_error -END(__wait4_tv64) +END(WAIT4) +#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING default_symbol_version (__wait4_tv64, __wait4, GLIBC_2.1) /* It seems to me to be a misfeature of the assembler that we can only @@ -136,3 +145,6 @@ default_symbol_version (__wait4_tv64, __wait4, GLIBC_2.1) The 'p' is for 'public'. *Shrug* */ strong_alias (__wait4_tv64, __wait4_tv64p) default_symbol_version (__wait4_tv64p, wait4, GLIBC_2.1) +#else +weak_alias (__wait4, wait4) +#endif