2000-03-29  Jes Sorensen  <jes@pcatls01.cern.ch>

	* malloc/malloc.c: Declare bit flags UL so that they will not
	default to int size when being inverted.

2000-03-29  Andreas Jaeger  <aj@suse.de>

	* sysdeps/unix/sysv/linux/arm/errlist.c: Use shlib-compat macros.
	* sysdeps/unix/sysv/linux/arm/siglist.c: Likewise.

2000-03-29  Andreas Jaeger  <aj@suse.de>,
            Ralf Baechle <ralf@uni-koblenz.de>

	* Makeconfig: Introduce new variable SHARED to mark code used in
	the shared library.
	* elf/dl-close.c: Use it instead of PIC.
	* elf/dl-load.c: Likewise.
	* elf/dl-open.c: Likewise.
	* hurd/geteuids.c: Likewise.
	* include/libc-symbols.h: Likewise.
	* include/shlib-compat.h: Likewise.
	* libio/freopen.c: Likewise.
	* linuxthreads/cancel.c: Likewise.
	* linuxthreads/pthread.c: Likewise.
	* linuxthreads/wrapsyscall.c: Likewise.
	* nss/nsswitch.c: Likewise.
	* stdio-common/vfprintf.c: Likewise.
	* sysdeps/arm/init-first.c: Likewise.
	* sysdeps/i386/init-first.c: Likewise
	* sysdeps/generic/init-first.c: Likewise.
	* sysdeps/generic/libc-start.c: Likewise.
	* sysdeps/mips/init-first.c: Likewise.
	* sysdeps/powerpc/elf/libc-start.c: Likewise.
	* sysdeps/unix/sysv/linux/init-first.c: Likewise.
	* sysdeps/unix/sysv/linux/arm/siglist.c: Likewise.
	* sysdeps/unix/sysv/linux/arm/errlist.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/chown.c: Likewise.

	* sysdeps/mips/machine-gmon.h (asm): Use __PIC__ as check.
This commit is contained in:
Ulrich Drepper 2000-03-31 05:50:02 +00:00
parent b86120ed68
commit b5567b2af6
42 changed files with 200 additions and 189 deletions

View File

@ -1,3 +1,43 @@
2000-03-29 Jes Sorensen <jes@pcatls01.cern.ch>
* malloc/malloc.c: Declare bit flags UL so that they will not
default to int size when being inverted.
2000-03-29 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/arm/errlist.c: Use shlib-compat macros.
* sysdeps/unix/sysv/linux/arm/siglist.c: Likewise.
2000-03-29 Andreas Jaeger <aj@suse.de>,
Ralf Baechle <ralf@uni-koblenz.de>
* Makeconfig: Introduce new variable SHARED to mark code used in
the shared library.
* elf/dl-close.c: Use it instead of PIC.
* elf/dl-load.c: Likewise.
* elf/dl-open.c: Likewise.
* hurd/geteuids.c: Likewise.
* include/libc-symbols.h: Likewise.
* include/shlib-compat.h: Likewise.
* libio/freopen.c: Likewise.
* linuxthreads/cancel.c: Likewise.
* linuxthreads/pthread.c: Likewise.
* linuxthreads/wrapsyscall.c: Likewise.
* nss/nsswitch.c: Likewise.
* stdio-common/vfprintf.c: Likewise.
* sysdeps/arm/init-first.c: Likewise.
* sysdeps/i386/init-first.c: Likewise
* sysdeps/generic/init-first.c: Likewise.
* sysdeps/generic/libc-start.c: Likewise.
* sysdeps/mips/init-first.c: Likewise.
* sysdeps/powerpc/elf/libc-start.c: Likewise.
* sysdeps/unix/sysv/linux/init-first.c: Likewise.
* sysdeps/unix/sysv/linux/arm/siglist.c: Likewise.
* sysdeps/unix/sysv/linux/arm/errlist.c: Likewise.
* sysdeps/unix/sysv/linux/i386/chown.c: Likewise.
* sysdeps/mips/machine-gmon.h (asm): Use __PIC__ as check.
2000-03-29 Andreas Jaeger <aj@suse.de> 2000-03-29 Andreas Jaeger <aj@suse.de>
* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_runtime_setup): * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_runtime_setup):

View File

@ -604,7 +604,7 @@ ifeq (yes,$(build-shared))
# Under --enable-shared, we will build a shared library of PIC objects. # Under --enable-shared, we will build a shared library of PIC objects.
# The PIC object files are named foo.os. # The PIC object files are named foo.os.
object-suffixes += .os object-suffixes += .os
CPPFLAGS-.os = -DPIC CPPFLAGS-.os = -DPIC -DSHARED
CFLAGS-.os = $(filter %frame-pointer,$(+cflags)) $(pic-ccflag) CFLAGS-.os = $(filter %frame-pointer,$(+cflags)) $(pic-ccflag)
libtype.os := lib%_pic.a libtype.os := lib%_pic.a
# This can be changed by a sysdep makefile # This can be changed by a sysdep makefile

View File

@ -145,7 +145,7 @@ _dl_close (void *_map)
imap->l_map_end - imap->l_map_start); imap->l_map_end - imap->l_map_start);
/* Finally, unlink the data structure and free it. */ /* Finally, unlink the data structure and free it. */
#ifdef PIC #ifdef SHARED
/* We will unlink the first object only if this is a statically /* We will unlink the first object only if this is a statically
linked program. */ linked program. */
assert (imap->l_prev != NULL); assert (imap->l_prev != NULL);

View File

@ -516,7 +516,7 @@ _dl_init_paths (const char *llp)
const char *strp; const char *strp;
struct r_search_path_elem *pelem, **aelem; struct r_search_path_elem *pelem, **aelem;
size_t round_size; size_t round_size;
#ifdef PIC #ifdef SHARED
struct link_map *l; struct link_map *l;
#endif #endif
@ -579,7 +579,7 @@ _dl_init_paths (const char *llp)
max_dirnamelen = SYSTEM_DIRS_MAX_LEN; max_dirnamelen = SYSTEM_DIRS_MAX_LEN;
*aelem = NULL; *aelem = NULL;
#ifdef PIC #ifdef SHARED
/* This points to the map of the main object. */ /* This points to the map of the main object. */
l = _dl_loaded; l = _dl_loaded;
if (l != NULL) if (l != NULL)
@ -613,7 +613,7 @@ _dl_init_paths (const char *llp)
l->l_rpath_dirs = NULL; l->l_rpath_dirs = NULL;
} }
} }
#endif /* PIC */ #endif /* SHARED */
if (llp != NULL && *llp != '\0') if (llp != NULL && *llp != '\0')
{ {

View File

@ -166,7 +166,7 @@ dl_open_worker (void *a)
{ {
if (! l->l_relocated) if (! l->l_relocated)
{ {
#ifdef PIC #ifdef SHARED
if (_dl_profile != NULL) if (_dl_profile != NULL)
{ {
/* If this here is the shared object which we want to profile /* If this here is the shared object which we want to profile

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1993, 94, 96, 97, 98 Free Software Foundation, Inc. /* Copyright (C) 1993, 94, 96, 97, 98, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -64,6 +64,6 @@ geteuids (int n, uid_t *uidset)
/* XXX Remove this alias when we bump the libc soname. */ /* XXX Remove this alias when we bump the libc soname. */
#if defined PIC && DO_VERSIONING #if defined SHARED && DO_VERSIONING
weak_alias (geteuids, __getuids) weak_alias (geteuids, __getuids)
#endif #endif

View File

@ -214,7 +214,7 @@
/* These are all done the same way in ELF. /* These are all done the same way in ELF.
There is a new section created for each set. */ There is a new section created for each set. */
# ifdef PIC # ifdef SHARED
/* When building a shared library, make the set section writable, /* When building a shared library, make the set section writable,
because it will need to be relocated at run time anyway. */ because it will need to be relocated at run time anyway. */
# define _elf_set_element(set, symbol) \ # define _elf_set_element(set, symbol) \

View File

@ -26,7 +26,7 @@
#include <abi-versions.h> /* header generated by abi-versions.awk */ #include <abi-versions.h> /* header generated by abi-versions.awk */
#endif #endif
#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING #if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
/* The file abi-versions.h (generated by scripts/abi-versions.awk) defines /* The file abi-versions.h (generated by scripts/abi-versions.awk) defines
symbols like `ABI_libm_GLIBC_2_0' for each version set in the source symbols like `ABI_libm_GLIBC_2_0' for each version set in the source

View File

@ -26,7 +26,7 @@
#include "libioP.h" #include "libioP.h"
#include "stdio.h" #include "stdio.h"
#ifdef PIC #ifdef SHARED
extern void *_IO_stdin_used; extern void *_IO_stdin_used;
weak_extern (_IO_stdin_used); weak_extern (_IO_stdin_used);
#endif #endif

View File

@ -162,7 +162,7 @@ void __pthread_perform_cleanup(void)
c->__routine(c->__arg); c->__routine(c->__arg);
} }
#ifndef PIC #ifndef SHARED
/* We need a hook to force the cancelation wrappers to be linked in when /* We need a hook to force the cancelation wrappers to be linked in when
static libpthread is used. */ static libpthread is used. */
extern const int __pthread_provide_wrappers; extern const int __pthread_provide_wrappers;

View File

@ -871,7 +871,7 @@ void __pthread_message(char * fmt, ...)
#endif #endif
#ifndef PIC #ifndef SHARED
/* We need a hook to force the cancelation wrappers to be linked in when /* We need a hook to force the cancelation wrappers to be linked in when
static libpthread is used. */ static libpthread is used. */
extern const int __pthread_provide_wrappers; extern const int __pthread_provide_wrappers;

View File

@ -31,7 +31,7 @@
#include <sys/socket.h> #include <sys/socket.h>
#ifndef PIC #ifndef SHARED
/* We need a hook to force this file to be linked in when static /* We need a hook to force this file to be linked in when static
libpthread is used. */ libpthread is used. */
const int __pthread_provide_wrappers = 0; const int __pthread_provide_wrappers = 0;

View File

@ -1317,11 +1317,11 @@ static void free_atfork();
/* size field is or'ed with PREV_INUSE when previous adjacent chunk in use */ /* size field is or'ed with PREV_INUSE when previous adjacent chunk in use */
#define PREV_INUSE 0x1 #define PREV_INUSE 0x1UL
/* size field is or'ed with IS_MMAPPED if the chunk was obtained with mmap() */ /* size field is or'ed with IS_MMAPPED if the chunk was obtained with mmap() */
#define IS_MMAPPED 0x2 #define IS_MMAPPED 0x2UL
/* Bits to mask off when extracting size */ /* Bits to mask off when extracting size */

View File

@ -27,7 +27,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#if !defined DO_STATIC_NSS || defined PIC #if !defined DO_STATIC_NSS || defined SHARED
# include <gnu/lib-names.h> # include <gnu/lib-names.h>
#endif #endif
@ -65,7 +65,7 @@ static struct
__libc_lock_define_initialized (static, lock) __libc_lock_define_initialized (static, lock)
#if !defined DO_STATIC_NSS || defined PIC #if !defined DO_STATIC_NSS || defined SHARED
/* String with revision number of the shared object files. */ /* String with revision number of the shared object files. */
static const char *const __nss_shlib_revision = LIBNSS_FILES_SO + 15; static const char *const __nss_shlib_revision = LIBNSS_FILES_SO + 15;
#endif #endif
@ -314,7 +314,7 @@ __nss_lookup_function (service_user *ni, const char *fct_name)
} }
} }
#if !defined DO_STATIC_NSS || defined PIC #if !defined DO_STATIC_NSS || defined SHARED
if (ni->library->lib_handle == NULL) if (ni->library->lib_handle == NULL)
{ {
/* Load the shared library. */ /* Load the shared library. */

View File

@ -303,7 +303,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
#define NOT_IN_JUMP_RANGE(Ch) ((Ch) < L_(' ') || (Ch) > L_('z')) #define NOT_IN_JUMP_RANGE(Ch) ((Ch) < L_(' ') || (Ch) > L_('z'))
#define CHAR_CLASS(Ch) (jump_table[(INT_T) (Ch) - L_(' ')]) #define CHAR_CLASS(Ch) (jump_table[(INT_T) (Ch) - L_(' ')])
#if defined HAVE_SUBTRACT_LOCAL_LABELS && defined PIC #if defined HAVE_SUBTRACT_LOCAL_LABELS && defined SHARED
/* 'int' is enough and it saves some space on 64 bit systems. */ /* 'int' is enough and it saves some space on 64 bit systems. */
# define JUMP_TABLE_TYPE const int # define JUMP_TABLE_TYPE const int
# define JUMP(ChExpr, table) \ # define JUMP(ChExpr, table) \
@ -1258,7 +1258,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
/* Process whole format string. */ /* Process whole format string. */
do do
{ {
#if defined HAVE_SUBTRACT_LOCAL_LABELS && defined PIC #if defined HAVE_SUBTRACT_LOCAL_LABELS && defined SHARED
# define REF(Name) &&do_##Name - &&do_form_unknown # define REF(Name) &&do_##Name - &&do_form_unknown
#else #else
# define REF(Name) &&do_##Name # define REF(Name) &&do_##Name
@ -1648,7 +1648,7 @@ do_positional:
for (; (size_t) nspecs_done < nspecs; ++nspecs_done) for (; (size_t) nspecs_done < nspecs; ++nspecs_done)
{ {
#undef REF #undef REF
#if defined HAVE_SUBTRACT_LOCAL_LABELS && defined PIC #if defined HAVE_SUBTRACT_LOCAL_LABELS && defined SHARED
# define REF(Name) &&do2_##Name - &&do_form_unknown # define REF(Name) &&do2_##Name - &&do_form_unknown
#else #else
# define REF(Name) &&do2_##Name # define REF(Name) &&do2_##Name

View File

@ -39,7 +39,7 @@ init (int *data)
__getopt_clean_environment (envp); __getopt_clean_environment (envp);
} }
#ifdef PIC #ifdef SHARED
/* This function is called to initialize the shared C library. /* This function is called to initialize the shared C library.
It is called just before the user _start code from i386/elf/start.S, It is called just before the user _start code from i386/elf/start.S,
with the stack set up as that code gets it. */ with the stack set up as that code gets it. */
@ -63,7 +63,7 @@ _init (int argc, ...)
void void
__libc_init_first (int argc __attribute__ ((unused)), ...) __libc_init_first (int argc __attribute__ ((unused)), ...)
{ {
#ifndef PIC #ifndef SHARED
init (&argc); init (&argc);
#endif #endif
} }

View File

@ -25,14 +25,14 @@ int __libc_multiple_libcs = 1;
extern void __libc_init (int, char **, char **); extern void __libc_init (int, char **, char **);
extern void __getopt_clean_environment (char **); extern void __getopt_clean_environment (char **);
#ifdef PIC #ifdef SHARED
void void
__libc_init_first (void) __libc_init_first (void)
{ {
} }
#endif #endif
#ifdef PIC #ifdef SHARED
/* NOTE! The linker notices the magical name `_init' and sets the DT_INIT /* NOTE! The linker notices the magical name `_init' and sets the DT_INIT
pointer in the dynamic section based solely on that. It is convention pointer in the dynamic section based solely on that. It is convention
for this function to be in the `.init' section, but the symbol name is for this function to be in the `.init' section, but the symbol name is

View File

@ -39,7 +39,7 @@ __libc_start_main (int (*main) (int, char **, char **), int argc,
char **argv, void (*init) (void), void (*fini) (void), char **argv, void (*init) (void), void (*fini) (void),
void (*rtld_fini) (void), void *stack_end) void (*rtld_fini) (void), void *stack_end)
{ {
#ifndef PIC #ifndef SHARED
/* The next variable is only here to work around a bug in gcc <= 2.7.2.2. /* The next variable is only here to work around a bug in gcc <= 2.7.2.2.
If the address would be taken inside the expression the optimizer If the address would be taken inside the expression the optimizer
would try to be too smart and throws it away. Grrr. */ would try to be too smart and throws it away. Grrr. */
@ -66,7 +66,7 @@ __libc_start_main (int (*main) (int, char **, char **), int argc,
/* Call the initializer of the libc. This is only needed here if we /* Call the initializer of the libc. This is only needed here if we
are compiling for the static library in which case we haven't are compiling for the static library in which case we haven't
run the constructors in `_dl_start_user'. */ run the constructors in `_dl_start_user'. */
#ifndef PIC #ifndef SHARED
__libc_init_first (argc, argv, __environ); __libc_init_first (argc, argv, __environ);
#endif #endif
@ -75,14 +75,14 @@ __libc_start_main (int (*main) (int, char **, char **), int argc,
atexit (fini); atexit (fini);
/* Call the initializer of the program, if any. */ /* Call the initializer of the program, if any. */
#ifdef PIC #ifdef SHARED
if (_dl_debug_impcalls) if (_dl_debug_impcalls)
_dl_debug_message (1, "\ninitialize program: ", argv[0], "\n\n", NULL); _dl_debug_message (1, "\ninitialize program: ", argv[0], "\n\n", NULL);
#endif #endif
if (init) if (init)
(*init) (); (*init) ();
#ifdef PIC #ifdef SHARED
if (_dl_debug_impcalls) if (_dl_debug_impcalls)
_dl_debug_message (1, "\ntransferring control: ", argv[0], "\n\n", NULL); _dl_debug_message (1, "\ntransferring control: ", argv[0], "\n\n", NULL);
#endif #endif

View File

@ -1,5 +1,5 @@
/* Initialization code run first thing by the ELF startup code. For i386/Unix. /* Initialization code run first thing by the ELF startup code. For i386/Unix.
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -39,7 +39,7 @@ init (int *data)
__getopt_clean_environment (envp); __getopt_clean_environment (envp);
} }
#ifdef PIC #ifdef SHARED
/* This function is called to initialize the shared C library. /* This function is called to initialize the shared C library.
It is called just before the user _start code from i386/elf/start.S, It is called just before the user _start code from i386/elf/start.S,
with the stack set up as that code gets it. */ with the stack set up as that code gets it. */
@ -63,7 +63,7 @@ _init (int argc, ...)
void void
__libc_init_first (int argc __attribute__ ((unused)), ...) __libc_init_first (int argc __attribute__ ((unused)), ...)
{ {
#ifndef PIC #ifndef SHARED
init (&argc); init (&argc);
#endif #endif
} }

View File

@ -34,7 +34,7 @@ init (int *data)
__libc_init (argc, argv, envp); __libc_init (argc, argv, envp);
} }
#ifdef PIC #ifdef SHARED
/* This function is called to initialize the shared C library. /* This function is called to initialize the shared C library.
It is called just before the user _start code from mips/elf/start.S, It is called just before the user _start code from mips/elf/start.S,
with the stack set up as that code gets it. */ with the stack set up as that code gets it. */
@ -58,7 +58,7 @@ _init (int argc, ...)
void void
__libc_init_first (int argc __attribute__ ((unused)), ...) __libc_init_first (int argc __attribute__ ((unused)), ...)
{ {
#ifndef PIC #ifndef SHARED
init (&argc); init (&argc);
#endif #endif
} }

View File

@ -1,5 +1,5 @@
/* Machine-specific calling sequence for `mcount' profiling function. MIPS /* Machine-specific calling sequence for `mcount' profiling function. MIPS
Copyright (C) 1996, 1997 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -21,7 +21,7 @@
/* Call __mcount with our the return PC for our caller, /* Call __mcount with our the return PC for our caller,
and the return PC our caller will return to. */ and the return PC our caller will return to. */
#ifdef PIC #ifdef __PIC__
#define CPLOAD ".cpload $25;" #define CPLOAD ".cpload $25;"
#else #else
#define CPLOAD #define CPLOAD

View File

@ -41,7 +41,7 @@ __libc_start_main (int argc, char **argv, char **envp,
struct startup_info *stinfo, struct startup_info *stinfo,
char **stack_on_entry) char **stack_on_entry)
{ {
#ifndef PIC #ifndef SHARED
/* The next variable is only here to work around a bug in gcc <= 2.7.2.2. /* The next variable is only here to work around a bug in gcc <= 2.7.2.2.
If the address would be taken inside the expression the optimizer If the address would be taken inside the expression the optimizer
would try to be too smart and throws it away. Grrr. */ would try to be too smart and throws it away. Grrr. */
@ -80,7 +80,7 @@ __libc_start_main (int argc, char **argv, char **envp,
atexit (rtld_fini); atexit (rtld_fini);
/* Call the initializer of the libc. */ /* Call the initializer of the libc. */
#ifdef PIC #ifdef SHARED
if (_dl_debug_impcalls) if (_dl_debug_impcalls)
_dl_debug_message (1, "\ninitialize libc\n\n", NULL); _dl_debug_message (1, "\ninitialize libc\n\n", NULL);
#endif #endif
@ -91,14 +91,14 @@ __libc_start_main (int argc, char **argv, char **envp,
atexit (stinfo->fini); atexit (stinfo->fini);
/* Call the initializer of the program, if any. */ /* Call the initializer of the program, if any. */
#ifdef PIC #ifdef SHARED
if (_dl_debug_impcalls) if (_dl_debug_impcalls)
_dl_debug_message (1, "\ninitialize program: ", argv[0], "\n\n", NULL); _dl_debug_message (1, "\ninitialize program: ", argv[0], "\n\n", NULL);
#endif #endif
if (stinfo->init) if (stinfo->init)
stinfo->init (argc, argv, __environ, auxvec); stinfo->init (argc, argv, __environ, auxvec);
#ifdef PIC #ifdef SHARED
if (_dl_debug_impcalls) if (_dl_debug_impcalls)
_dl_debug_message (1, "\ntransferring control: ", argv[0], "\n\n", NULL); _dl_debug_message (1, "\ntransferring control: ", argv[0], "\n\n", NULL);
#endif #endif

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998 Free Software Foundation, Inc. /* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -16,6 +16,8 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <shlib-compat.h>
struct timeval32 struct timeval32
{ {
int tv_sec, tv_usec; int tv_sec, tv_usec;
@ -54,7 +56,7 @@ struct timex32 {
#define TIMEX timex32 #define TIMEX timex32
#define ADJTIME __adjtime_tv32 #define ADJTIME __adjtime_tv32
#define ADJTIMEX(x) __adjtimex_tv32 (x) #define ADJTIMEX(x) __adjtimex_tv32 (x)
#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
#define LINKAGE #define LINKAGE
#else #else
#define LINKAGE static #define LINKAGE static
@ -65,8 +67,8 @@ extern int ADJTIMEX (struct TIMEX *);
#include <sysdeps/unix/sysv/linux/adjtime.c> #include <sysdeps/unix/sysv/linux/adjtime.c>
#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
symbol_version (__adjtime_tv32, adjtime, GLIBC_2.0); compat_symbol (libc, __adjtime_tv32, adjtime, GLIBC_2.0);
#endif #endif
#undef TIMEVAL #undef TIMEVAL
@ -117,11 +119,7 @@ __adjtime (itv, otv)
return ret; return ret;
} }
#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING versioned_symbol (libc, __adjtime, adjtime, GLIBC_2_1);
default_symbol_version (__adjtime, adjtime, GLIBC_2.1);
#else
weak_alias (__adjtime, adjtime);
#endif
extern int __syscall_adjtimex_tv64 (struct timex *tx); extern int __syscall_adjtimex_tv64 (struct timex *tx);
@ -191,11 +189,6 @@ __adjtimex_tv64 (struct timex *tx)
return ret; return ret;
} }
#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
strong_alias (__adjtimex_tv64, __adjtimex_tv64p); strong_alias (__adjtimex_tv64, __adjtimex_tv64p);
default_symbol_version (__adjtimex_tv64, __adjtimex, GLIBC_2.1); versioned_symbol (libc, __adjtimex_tv64, __adjtimex, GLIBC_2_1);
default_symbol_version (__adjtimex_tv64p, adjtimex, GLIBC_2.1); versioned_symbol (libc, __adjtimex_tv64p, adjtimex, GLIBC_2_1);
#else
weak_alias (__adjtimex_tv64, __adjtimex);
weak_alias (__adjtimex_tv64, adjtimex);
#endif

View File

@ -116,8 +116,6 @@ __new_msgctl (int msqid, int cmd, struct msqid_ds *buf)
#endif #endif
} }
#if defined PIC && DO_VERSIONING #include <shlib-compat.h>
default_symbol_version (__new_msgctl, msgctl, GLIBC_2.2); versioned_symbol (libc, __new_msgctl, msgctl, GLIBC_2_2);
#else
weak_alias (__new_msgctl, msgctl);
#endif

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998 Free Software Foundation, Inc. /* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
This library is free software; you can redistribute it and/or This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as modify it under the terms of the GNU Library General Public License as
@ -19,8 +19,9 @@
became necessary since the glob_t structure changed. */ became necessary since the glob_t structure changed. */
#include <sys/types.h> #include <sys/types.h>
#include <glob.h> #include <glob.h>
#include <shlib-compat.h>
#if defined PIC && DO_VERSIONING #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
/* This is the old structure. The difference is that the gl_pathc and /* This is the old structure. The difference is that the gl_pathc and
gl_offs elements have type `int'. */ gl_offs elements have type `int'. */
@ -33,11 +34,11 @@ typedef struct
/* If the GLOB_ALTDIRFUNC flag is set, the following functions /* If the GLOB_ALTDIRFUNC flag is set, the following functions
are used instead of the normal file access functions. */ are used instead of the normal file access functions. */
void (*gl_closedir) __P ((void *)); void (*gl_closedir) (void *);
struct dirent *(*gl_readdir) __P ((void *)); struct dirent *(*gl_readdir) (void *);
__ptr_t (*gl_opendir) __P ((__const char *)); __ptr_t (*gl_opendir) (__const char *);
int (*gl_lstat) __P ((__const char *, struct stat *)); int (*gl_lstat) (__const char *, struct stat *);
int (*gl_stat) __P ((__const char *, struct stat *)); int (*gl_stat) (__const char *, struct stat *);
} old_glob_t; } old_glob_t;
@ -75,7 +76,7 @@ __old_glob (const char *pattern, int flags,
return result; return result;
} }
symbol_version(__old_glob, glob, GLIBC_2.0); compat_symbol (libc, __old_glob, glob, GLIBC_2_0);
/* Free storage allocated in PGLOB by a previous `glob' call. */ /* Free storage allocated in PGLOB by a previous `glob' call. */
@ -90,6 +91,6 @@ __old_globfree (old_glob_t *pglob)
globfree (&correct); globfree (&correct);
} }
symbol_version(__old_globfree, globfree, GLIBC_2.0); compat_symbol (libc, __old_globfree, globfree, GLIBC_2_0);
#endif #endif

View File

@ -125,8 +125,5 @@ __new_semctl (int semid, int semnum, int cmd, ...)
#endif #endif
} }
#if defined PIC && DO_VERSIONING #include <shlib-compat.h>
default_symbol_version (__new_semctl, semctl, GLIBC_2.2); versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_2);
#else
weak_alias (__new_semctl, semctl);
#endif

View File

@ -130,8 +130,5 @@ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
#endif #endif
} }
#if defined PIC && DO_VERSIONING #include <shlib-compat.h>
default_symbol_version (__new_shmctl, shmctl, GLIBC_2.2); versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_2);
#else
weak_alias (__new_shmctl, shmctl);
#endif

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998 Free Software Foundation, Inc. /* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -18,18 +18,18 @@
#include <sizes.h> #include <sizes.h>
#include <errlist.h> #include <errlist.h>
#include <shlib-compat.h>
#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING #define SYS_ERRLIST __new_sys_errlist
#define SYS_NERR __new_sys_nerr
# define SYS_ERRLIST __new_sys_errlist
# define SYS_NERR __new_sys_nerr
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
asm (".data; .globl __old_sys_errlist; __old_sys_errlist:"); asm (".data; .globl __old_sys_errlist; __old_sys_errlist:");
#endif #endif
#include <sysdeps/gnu/errlist.c> #include <sysdeps/gnu/errlist.c>
#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
asm (".type __old_sys_errlist,%object;.size __old_sys_errlist," asm (".type __old_sys_errlist,%object;.size __old_sys_errlist,"
OLD_ERRLIST_SIZE_STR "*" PTR_SIZE_STR); OLD_ERRLIST_SIZE_STR "*" PTR_SIZE_STR);
@ -44,12 +44,11 @@ symbol_version (_old_sys_nerr, sys_nerr, GLIBC_2.0);
weak_alias (__old_sys_errlist, _old_sys_errlist); weak_alias (__old_sys_errlist, _old_sys_errlist);
symbol_version (__old_sys_errlist, _sys_errlist, GLIBC_2.0); symbol_version (__old_sys_errlist, _sys_errlist, GLIBC_2.0);
symbol_version (_old_sys_errlist, sys_errlist, GLIBC_2.0); symbol_version (_old_sys_errlist, sys_errlist, GLIBC_2.0);
weak_alias (__new_sys_nerr, _new_sys_nerr)
default_symbol_version (__new_sys_nerr, _sys_nerr, GLIBC_2.1);
default_symbol_version (_new_sys_nerr, sys_nerr, GLIBC_2.1);
weak_alias (__new_sys_errlist, _new_sys_errlist)
default_symbol_version (__new_sys_errlist, _sys_errlist, GLIBC_2.1);
default_symbol_version (_new_sys_errlist, sys_errlist, GLIBC_2.1);
#endif #endif
strong_alias (__new_sys_nerr, _new_sys_nerr)
versioned_symbol (libc, __new_sys_nerr, _sys_nerr, GLIBC_2_1);
versioned_symbol (libc, _new_sys_nerr, sys_nerr, GLIBC_2_1);
strong_alias (__new_sys_errlist, _new_sys_errlist)
versioned_symbol (libc, __new_sys_errlist, _sys_errlist, GLIBC_2_1);
versioned_symbol (libc, _new_sys_errlist, sys_errlist, GLIBC_2_1);

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. /* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -20,41 +20,34 @@
#include <signal.h> #include <signal.h>
#include <sizes.h> #include <sizes.h>
#include <libintl.h> #include <libintl.h>
#include <shlib-compat.h>
#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
# define SYS_SIGLIST __new_sys_siglist
# define SYS_SIGABBREV __new_sys_sigabbrev
#else
# define SYS_SIGLIST _sys_siglist
# define SYS_SIGABBREV _sys_sigabbrev
#endif
#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
asm (".data; .globl __old_sys_siglist; __old_sys_siglist:"); asm (".data; .globl __old_sys_siglist; __old_sys_siglist:");
#endif #endif
const char *const SYS_SIGLIST[NSIG] = const char *const __new_sys_siglist[NSIG] =
{ {
#define init_sig(sig, abbrev, desc) [sig] desc, #define init_sig(sig, abbrev, desc) [sig] desc,
#include "siglist.h" #include "siglist.h"
#undef init_sig #undef init_sig
}; };
#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
asm (".type __old_sys_siglist,%object;.size __old_sys_siglist," asm (".type __old_sys_siglist,%object;.size __old_sys_siglist,"
OLD_SIGLIST_SIZE_STR "*" PTR_SIZE_STR); OLD_SIGLIST_SIZE_STR "*" PTR_SIZE_STR);
asm (".data; .globl __old_sys_sigabbrev; __old_sys_sigabbrev:"); asm (".data; .globl __old_sys_sigabbrev; __old_sys_sigabbrev:");
#endif #endif
const char *const SYS_SIGABBREV[NSIG] = const char *const __new_sys_sigabbrev[NSIG] =
{ {
#define init_sig(sig, abbrev, desc) [sig] abbrev, #define init_sig(sig, abbrev, desc) [sig] abbrev,
#include "siglist.h" #include "siglist.h"
#undef init_sig #undef init_sig
}; };
#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING #if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
asm (".type __old_sys_sigabbrev,%object;.size __old_sys_sigabbrev," asm (".type __old_sys_sigabbrev,%object;.size __old_sys_sigabbrev,"
OLD_SIGLIST_SIZE_STR "*" PTR_SIZE_STR); OLD_SIGLIST_SIZE_STR "*" PTR_SIZE_STR);
@ -62,15 +55,12 @@ extern const char *const *__old_sys_siglist;
extern const char *const *__old_sys_sigabbrev; extern const char *const *__old_sys_sigabbrev;
strong_alias (__old_sys_siglist, _old_sys_siglist) strong_alias (__old_sys_siglist, _old_sys_siglist)
symbol_version (__old_sys_siglist, _sys_siglist, GLIBC_2.0); compat_symbol (libc, __old_sys_siglist, _sys_siglist, GLIBC_2_0);
symbol_version (_old_sys_siglist, sys_siglist, GLIBC_2.0); compat_symbol (libc, _old_sys_siglist, sys_siglist, GLIBC_2_0);
symbol_version (__old_sys_sigabbrev, sys_sigabbrev, GLIBC_2.0); compat_symbol (libc, __old_sys_sigabbrev, sys_sigabbrev, GLIBC_2_0);
#endif
strong_alias (__new_sys_siglist, _new_sys_siglist) strong_alias (__new_sys_siglist, _new_sys_siglist)
default_symbol_version (__new_sys_siglist, _sys_siglist, GLIBC_2.1); versioned_symbol (libc, __new_sys_siglist, _sys_siglist, GLIBC_2_1);
default_symbol_version (_new_sys_siglist, sys_siglist, GLIBC_2.1); versioned_symbol (libc, _new_sys_siglist, sys_siglist, GLIBC_2_1);
default_symbol_version (__new_sys_sigabbrev, sys_sigabbrev, GLIBC_2.1); versioned_symbol (libc, __new_sys_sigabbrev, sys_sigabbrev, GLIBC_2_1);
#else
weak_alias (_sys_siglist, sys_siglist)
weak_alias (_sys_sigabbrev, sys_sigabbrev)
#endif

View File

@ -132,7 +132,7 @@ __chown_is_lchown (const char *file, uid_t owner, gid_t group)
{ {
return INLINE_SYSCALL (chown, 3, file, owner, group); return INLINE_SYSCALL (chown, 3, file, owner, group);
} }
#elif defined HAVE_ELF && defined PIC && defined DO_VERSIONING #elif defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
/* Compiling for compatibiity. */ /* Compiling for compatibiity. */
int int
__chown_is_lchown (const char *file, uid_t owner, gid_t group) __chown_is_lchown (const char *file, uid_t owner, gid_t group)
@ -141,7 +141,7 @@ __chown_is_lchown (const char *file, uid_t owner, gid_t group)
} }
#endif #endif
#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING #if defined HAVE_ELF && defined SHARED && defined DO_VERSIONING
strong_alias (__chown_is_lchown, _chown_is_lchown) strong_alias (__chown_is_lchown, _chown_is_lchown)
symbol_version (__chown_is_lchown, __chown, GLIBC_2.0); symbol_version (__chown_is_lchown, __chown, GLIBC_2.0);
symbol_version (_chown_is_lchown, chown, GLIBC_2.0); symbol_version (_chown_is_lchown, chown, GLIBC_2.0);

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1999 Free Software Foundation, Inc. /* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -21,7 +21,7 @@
#include <sysdep.h> #include <sysdep.h>
#include <sys/syscall.h> #include <sys/syscall.h>
#include <shlib-compat.h>
#include "kernel-features.h" #include "kernel-features.h"
extern int __syscall_ugetrlimit (unsigned int resource, extern int __syscall_ugetrlimit (unsigned int resource,
@ -77,8 +77,4 @@ __new_getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits)
} }
weak_alias (__new_getrlimit, __getrlimit); weak_alias (__new_getrlimit, __getrlimit);
#if defined PIC && DO_VERSIONING versioned_symbol (libc, __new_getrlimit, getrlimit, GLIBC_2_2);
default_symbol_version (__new_getrlimit, getrlimit, GLIBC_2.2);
#else
weak_alias (__new_getrlimit, getrlimit);
#endif

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1999 Free Software Foundation, Inc. /* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -21,8 +21,5 @@
#include <sysdeps/generic/getrlimit64.c> #include <sysdeps/generic/getrlimit64.c>
#undef getrlimit64 #undef getrlimit64
#if defined PIC && defined DO_VERSIONING #include <shlib-compat.h>
default_symbol_version (__new_getrlimit64, getrlimit64, GLIBC_2.2); versioned_symbol (libc, __new_getrlimit64, getrlimit64, GLIBC_2_2);
#else
weak_alias (__new_getrlimit64, getrlimit64);
#endif

View File

@ -26,6 +26,7 @@
#include <sys/syscall.h> #include <sys/syscall.h>
#include "kernel-features.h" #include "kernel-features.h"
#include <shlib-compat.h>
struct __old_msqid_ds struct __old_msqid_ds
{ {
@ -46,7 +47,9 @@ struct __old_msqid_ds
/* Allows to control internal state and destruction of message queue /* Allows to control internal state and destruction of message queue
objects. */ objects. */
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int __old_msgctl (int, int, struct __old_msqid_ds *); int __old_msgctl (int, int, struct __old_msqid_ds *);
#endif
int __new_msgctl (int, int, struct msqid_ds *); int __new_msgctl (int, int, struct msqid_ds *);
#ifdef __NR_getuid32 #ifdef __NR_getuid32
@ -57,11 +60,14 @@ extern int __libc_missing_32bit_uids;
# endif # endif
#endif #endif
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int int
__old_msgctl (int msqid, int cmd, struct __old_msqid_ds *buf) __old_msgctl (int msqid, int cmd, struct __old_msqid_ds *buf)
{ {
return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, buf); return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, buf);
} }
compat_symbol (libc, __old_msgctl, msgctl, GLIBC_2_0);
#endif
int int
__new_msgctl (int msqid, int cmd, struct msqid_ds *buf) __new_msgctl (int msqid, int cmd, struct msqid_ds *buf)
@ -143,9 +149,4 @@ __new_msgctl (int msqid, int cmd, struct msqid_ds *buf)
#endif #endif
} }
#if defined PIC && DO_VERSIONING versioned_symbol (libc, __new_msgctl, msgctl, GLIBC_2_2);
default_symbol_version (__new_msgctl, msgctl, GLIBC_2.2);
symbol_version (__old_msgctl, msgctl, GLIBC_2.0);
#else
weak_alias (__new_msgctl, msgctl);
#endif

View File

@ -18,7 +18,8 @@
/* This is a compatibility file. If we don't build the libc with /* This is a compatibility file. If we don't build the libc with
versioning don't compile this file. */ versioning don't compile this file. */
#if defined PIC && DO_VERSIONING #include <shlib-compat.h>
#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_2)
#include <errno.h> #include <errno.h>
#include <sys/resource.h> #include <sys/resource.h>
@ -48,6 +49,6 @@ __old_getrlimit64 (enum __rlimit_resource resource, struct rlimit64 *rlimits)
return 0; return 0;
} }
symbol_version (__old_getrlimit64, getrlimit64, GLIBC_2.1); compat_symbol (libc, __old_getrlimit64, getrlimit64, GLIBC_2_1);
#endif /* PIC && DO_VERSIONING */ #endif /* SHLIB_COMPAT */

View File

@ -27,6 +27,7 @@
#include <sys/syscall.h> #include <sys/syscall.h>
#include "kernel-features.h" #include "kernel-features.h"
#include <shlib-compat.h>
struct __old_semid_ds struct __old_semid_ds
{ {
@ -59,9 +60,12 @@ extern int __libc_missing_32bit_uids;
/* Return identifier for array of NSEMS semaphores associated with /* Return identifier for array of NSEMS semaphores associated with
KEY. */ KEY. */
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int __old_semctl (int semid, int semnum, int cmd, ...); int __old_semctl (int semid, int semnum, int cmd, ...);
#endif
int __new_semctl (int semid, int semnum, int cmd, ...); int __new_semctl (int semid, int semnum, int cmd, ...);
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int int
__old_semctl (int semid, int semnum, int cmd, ...) __old_semctl (int semid, int semnum, int cmd, ...)
{ {
@ -77,6 +81,8 @@ __old_semctl (int semid, int semnum, int cmd, ...)
return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, &arg); return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, &arg);
} }
compat_symbol (libc, __old_semctl, semctl, GLIBC_2_0);
#endif
int int
__new_semctl (int semid, int semnum, int cmd, ...) __new_semctl (int semid, int semnum, int cmd, ...)
@ -165,9 +171,4 @@ __new_semctl (int semid, int semnum, int cmd, ...)
#endif #endif
} }
#if defined PIC && DO_VERSIONING versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_2);
default_symbol_version (__new_semctl, semctl, GLIBC_2.2);
symbol_version (__old_semctl, semctl, GLIBC_2.0);
#else
weak_alias (__new_semctl, semctl);
#endif

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1999 Free Software Foundation, Inc. /* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -24,6 +24,7 @@
#include <sys/syscall.h> #include <sys/syscall.h>
#include "kernel-features.h" #include "kernel-features.h"
#include <shlib-compat.h>
extern int __syscall_setrlimit (unsigned int resource, extern int __syscall_setrlimit (unsigned int resource,
const struct rlimit *rlimits); const struct rlimit *rlimits);
@ -75,8 +76,4 @@ __new_setrlimit (enum __rlimit_resource resource, const struct rlimit *rlimits)
} }
weak_alias (__new_setrlimit, __setrlimit); weak_alias (__new_setrlimit, __setrlimit);
#if defined PIC && DO_VERSIONING versioned_symbol (libc, __new_setrlimit, setrlimit, GLIBC_2_2);
default_symbol_version (__new_setrlimit, setrlimit, GLIBC_2.2);
#else
weak_alias (__new_setrlimit, setrlimit);
#endif

View File

@ -27,6 +27,7 @@
#include <bits/wordsize.h> #include <bits/wordsize.h>
#include "kernel-features.h" #include "kernel-features.h"
#include <shlib-compat.h>
struct __old_shmid_ds struct __old_shmid_ds
{ {
@ -61,14 +62,19 @@ extern int __libc_missing_32bit_uids;
#endif #endif
/* Provide operations to control over shared memory segments. */ /* Provide operations to control over shared memory segments. */
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int __old_shmctl (int, int, struct __old_shmid_ds *); int __old_shmctl (int, int, struct __old_shmid_ds *);
#endif
int __new_shmctl (int, int, struct shmid_ds *); int __new_shmctl (int, int, struct shmid_ds *);
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int int
__old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf) __old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf)
{ {
return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, buf); return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, buf);
} }
compat_symbol (libc, __old_shmctl, shmctl, GLIBC_2_0);
#endif
int int
__new_shmctl (int shmid, int cmd, struct shmid_ds *buf) __new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
@ -163,9 +169,4 @@ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
#endif #endif
} }
#if defined PIC && DO_VERSIONING versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_2);
default_symbol_version (__new_shmctl, shmctl, GLIBC_2.2);
symbol_version (__old_shmctl, shmctl, GLIBC_2.0);
#else
weak_alias (__new_shmctl, shmctl);
#endif

View File

@ -128,7 +128,7 @@ init (int argc, char **argv, char **envp)
/* Set the FPU control word to the proper default value if the /* Set the FPU control word to the proper default value if the
kernel would use a different value. (In a static program we kernel would use a different value. (In a static program we
don't have this information.) */ don't have this information.) */
#ifdef PIC #ifdef SHARED
if (__fpu_control != _dl_fpu_control) if (__fpu_control != _dl_fpu_control)
#endif #endif
__setfpucw (__fpu_control); __setfpucw (__fpu_control);
@ -139,7 +139,7 @@ init (int argc, char **argv, char **envp)
__libc_argv = argv; __libc_argv = argv;
__environ = envp; __environ = envp;
#ifndef PIC #ifndef SHARED
__libc_init_secure (); __libc_init_secure ();
#endif #endif
@ -148,12 +148,12 @@ init (int argc, char **argv, char **envp)
/* This is a hack to make the special getopt in GNU libc working. */ /* This is a hack to make the special getopt in GNU libc working. */
__getopt_clean_environment (envp); __getopt_clean_environment (envp);
#ifdef PIC #ifdef SHARED
__libc_global_ctors (); __libc_global_ctors ();
#endif #endif
} }
#ifdef PIC #ifdef SHARED
strong_alias (init, _init); strong_alias (init, _init);

View File

@ -24,6 +24,7 @@
#include <sysdep.h> #include <sysdep.h>
#include <string.h> #include <string.h>
#include <sys/syscall.h> #include <sys/syscall.h>
#include <shlib-compat.h>
#include "kernel-features.h" #include "kernel-features.h"
@ -46,14 +47,19 @@ struct __old_msqid_ds
/* Allows to control internal state and destruction of message queue /* Allows to control internal state and destruction of message queue
objects. */ objects. */
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int __old_msgctl (int, int, struct __old_msqid_ds *); int __old_msgctl (int, int, struct __old_msqid_ds *);
#endif
int __new_msgctl (int, int, struct msqid_ds *); int __new_msgctl (int, int, struct msqid_ds *);
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int int
__old_msgctl (int msqid, int cmd, struct __old_msqid_ds *buf) __old_msgctl (int msqid, int cmd, struct __old_msqid_ds *buf)
{ {
return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, buf); return INLINE_SYSCALL (ipc, 5, IPCOP_msgctl, msqid, cmd, 0, buf);
} }
compat_symbol (libc, __old_msgctl, msgctl, GLIBC_2_0);
#endif
int int
__new_msgctl (int msqid, int cmd, struct msqid_ds *buf) __new_msgctl (int msqid, int cmd, struct msqid_ds *buf)
@ -120,9 +126,4 @@ __new_msgctl (int msqid, int cmd, struct msqid_ds *buf)
#endif #endif
} }
#if defined PIC && DO_VERSIONING versioned_symbol (libc, __new_msgctl, msgctl, GLIBC_2_2);
default_symbol_version (__new_msgctl, msgctl, GLIBC_2.2);
symbol_version (__old_msgctl, msgctl, GLIBC_2.0);
#else
weak_alias (__new_msgctl, msgctl);
#endif

View File

@ -1,5 +1,5 @@
/* chown() compatibility. /* chown() compatibility.
Copyright (C) 1998 Free Software Foundation, Inc. Copyright (C) 1998, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -124,8 +124,5 @@ __chown (const char *file, uid_t owner, gid_t group)
return -1; return -1;
} }
#if defined PIC && defined DO_VERSIONING #include <shlib-compat.h>
default_symbol_version (__chown, chown, GLIBC_2.1); versioned_symbol (libc, __chown, chown, GLIBC_2_1);
#else
weak_alias (__chown, chown)
#endif

View File

@ -25,9 +25,11 @@
#include <sysdep.h> #include <sysdep.h>
#include <string.h> #include <string.h>
#include <sys/syscall.h> #include <sys/syscall.h>
#include <shlib-compat.h>
#include "kernel-features.h" #include "kernel-features.h"
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
struct __old_semid_ds struct __old_semid_ds
{ {
struct __old_ipc_perm sem_perm; /* operation permission struct */ struct __old_ipc_perm sem_perm; /* operation permission struct */
@ -39,6 +41,7 @@ struct __old_semid_ds
struct sem_undo *__undo; /* ondo requests on this array */ struct sem_undo *__undo; /* ondo requests on this array */
unsigned short int sem_nsems; /* number of semaphores in set */ unsigned short int sem_nsems; /* number of semaphores in set */
}; };
#endif
/* Define a `union semun' suitable for Linux here. */ /* Define a `union semun' suitable for Linux here. */
union semun union semun
@ -52,9 +55,12 @@ union semun
/* Return identifier for array of NSEMS semaphores associated with /* Return identifier for array of NSEMS semaphores associated with
KEY. */ KEY. */
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int __old_semctl (int semid, int semnum, int cmd, ...); int __old_semctl (int semid, int semnum, int cmd, ...);
#endif
int __new_semctl (int semid, int semnum, int cmd, ...); int __new_semctl (int semid, int semnum, int cmd, ...);
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int int
__old_semctl (int semid, int semnum, int cmd, ...) __old_semctl (int semid, int semnum, int cmd, ...)
{ {
@ -70,6 +76,8 @@ __old_semctl (int semid, int semnum, int cmd, ...)
return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, &arg); return INLINE_SYSCALL (ipc, 5, IPCOP_semctl, semid, semnum, cmd, &arg);
} }
compat_symbol (libc, __old_semctl, semctl, GLIBC_2_0);
#endif
int int
__new_semctl (int semid, int semnum, int cmd, ...) __new_semctl (int semid, int semnum, int cmd, ...)
@ -142,9 +150,4 @@ __new_semctl (int semid, int semnum, int cmd, ...)
#endif #endif
} }
#if defined PIC && DO_VERSIONING versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_2);
default_symbol_version (__new_semctl, semctl, GLIBC_2.2);
symbol_version (__old_semctl, semctl, GLIBC_2.0);
#else
weak_alias (__new_semctl, semctl);
#endif

View File

@ -25,9 +25,11 @@
#include <string.h> #include <string.h>
#include <sys/syscall.h> #include <sys/syscall.h>
#include <bits/wordsize.h> #include <bits/wordsize.h>
#include <shlib-compat.h>
#include "kernel-features.h" #include "kernel-features.h"
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
struct __old_shmid_ds struct __old_shmid_ds
{ {
struct __old_ipc_perm shm_perm; /* operation permission struct */ struct __old_ipc_perm shm_perm; /* operation permission struct */
@ -54,13 +56,17 @@ struct __old_shminfo
/* Provide operations to control over shared memory segments. */ /* Provide operations to control over shared memory segments. */
int __old_shmctl (int, int, struct __old_shmid_ds *); int __old_shmctl (int, int, struct __old_shmid_ds *);
#endif
int __new_shmctl (int, int, struct shmid_ds *); int __new_shmctl (int, int, struct shmid_ds *);
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
int int
__old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf) __old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf)
{ {
return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, buf); return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd, 0, buf);
} }
compat_symbol (libc, __old_shmctl, shmctl, GLIBC_2_0);
#endif
int int
__new_shmctl (int shmid, int cmd, struct shmid_ds *buf) __new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
@ -141,9 +147,4 @@ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
#endif #endif
} }
#if defined PIC && DO_VERSIONING versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_2);
default_symbol_version (__new_shmctl, shmctl, GLIBC_2.2);
symbol_version (__old_shmctl, shmctl, GLIBC_2.0);
#else
weak_alias (__new_shmctl, shmctl);
#endif