diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | include/shlib-compat.h | 12 | ||||
-rw-r--r-- | sysdeps/gnu/siglist.c | 12 |
3 files changed, 19 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog index 02135f704f..c51960ba8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,9 +2,12 @@ * include/shlib-compat.h (SHLIB_COMPAT): Take a third argument, indicating the first version set to obsolete the conditionalized code. + (compat_symbol): New macro. * scripts/abi-versions.awk: For subsumed versions, make ABI_* defn's rhs be the ABI_* macro for the subsuming version. Assign increasing integer values to the ABI_* macros for supported versions. + * sysdeps/gnu/siglist.c: Use new SHLIB_COMPAT convention, and use + compat_symbol macro. 2000-03-21 Ulrich Drepper <drepper@redhat.com> diff --git a/include/shlib-compat.h b/include/shlib-compat.h index c91e6ce489..f0673e7096 100644 --- a/include/shlib-compat.h +++ b/include/shlib-compat.h @@ -52,10 +52,15 @@ shlib-versions if that is newer. */ # define versioned_symbol(lib, local, symbol, version) \ - versioned_symbol2 (local, symbol, VERSION_##lib##_##version) -# define versioned_symbol2(local, symbol, name) \ + versioned_symbol_1 (local, symbol, VERSION_##lib##_##version) +# define versioned_symbol_1(local, symbol, name) \ default_symbol_version (local, symbol, name) +# define compat_symbol(lib, local, symbol, version) \ + compat_symbol_1 (local, symbol, VERSION_##lib##_##version) +# define compat_symbol_1(local, symbol, name) \ + symbol_version (local, symbol, name) + #else /* Not compiling ELF shared libraries at all, so never any old versions. */ @@ -65,6 +70,9 @@ # define versioned_symbol(lib, local, symbol, version) \ weak_alias (local, symbol) +/* This should not appear outside `#if SHLIB_COMPAT (...)'. */ +# define compat_symbol(lib, local, symbol, version) ... + #endif diff --git a/sysdeps/gnu/siglist.c b/sysdeps/gnu/siglist.c index 0fc43180fa..0cb30df82f 100644 --- a/sysdeps/gnu/siglist.c +++ b/sysdeps/gnu/siglist.c @@ -32,7 +32,7 @@ #endif -#if SHLIB_COMPAT (libc, GLIBC_2_0) +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) asm (".data; .globl __old_sys_siglist; __old_sys_siglist:"); #endif @@ -43,7 +43,7 @@ const char *const __new_sys_siglist[NSIG] = #undef init_sig }; -#if SHLIB_COMPAT (libc, GLIBC_2_0) +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) asm (".type __old_sys_siglist,@object;.size __old_sys_siglist," OLD_SIGLIST_SIZE_STR "*" PTR_SIZE_STR); @@ -57,7 +57,7 @@ const char *const __new_sys_sigabbrev[NSIG] = #undef init_sig }; -#if SHLIB_COMPAT (libc, GLIBC_2_0) +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) asm (".type __old_sys_sigabbrev,@object;.size __old_sys_sigabbrev," OLD_SIGLIST_SIZE_STR "*" PTR_SIZE_STR); @@ -65,9 +65,9 @@ extern const char *const *__old_sys_siglist; extern const char *const *__old_sys_sigabbrev; strong_alias (__old_sys_siglist, _old_sys_siglist) -symbol_version (__old_sys_siglist, _sys_siglist, GLIBC_2.0); -symbol_version (_old_sys_siglist, sys_siglist, GLIBC_2.0); -symbol_version (__old_sys_sigabbrev, sys_sigabbrev, GLIBC_2.0); +compat_symbol (libc, __old_sys_siglist, _sys_siglist, GLIBC_2_0); +compat_symbol (libc, _old_sys_siglist, sys_siglist, GLIBC_2_0); +compat_symbol (libc, __old_sys_sigabbrev, sys_sigabbrev, GLIBC_2_0); #endif strong_alias (__new_sys_siglist, _new_sys_siglist) |