diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-02-28 21:16:38 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-02-28 21:16:38 +0000 |
commit | a808d541c6fb36db381923c52040855602e9fd83 (patch) | |
tree | 07bbe429e74c8dc139eaa7329809b77500182e79 /sysdeps | |
parent | 46b5798928ff48010c151ddcca258e65710d6194 (diff) | |
download | glibc-a808d541c6fb36db381923c52040855602e9fd83.tar.gz glibc-a808d541c6fb36db381923c52040855602e9fd83.tar.xz glibc-a808d541c6fb36db381923c52040855602e9fd83.zip |
Update.
2000-02-28 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/start.c: Initialize __errno and add comment explaining why. Remove K&R compatibility. * sysdeps/powerpc/fpu/s_isnan.c: Avoid using asm statement to declare aliases. * sysdeps/powerpc/Makefile: Always pass flags to compile for ppc and not rs6000. [$(subdir)=misc] (sysdep_routines): Add gprsave0, gprrest0, gprsave1 , and gprrest1. Don't pass special flags to compiler for init and gmon-start if this is no ELF platform. * sysdeps/mach/hurd/bits/statfs.h: Define _STATFS_F_NAMELEN. * sysdeps/unix/sysv/linux/bits/statfs.h: Likewise. * sysdeps/unix/sysv/linux/mips/bits/statfs.h: Likewise. * sysdeps/unix/sysv/linux/sparc/bits/statfs.h: Likewise. * sysdeps/posix/fpathconf.c: Don't unconditionally use f_namelen in statfs. Check feature macro and use f_name_max or NAME_MAX instead. * sysdeps/posix/pathconf.c: Likewise. * dlfcn/dlfcn.h: Remove DL_CALL_FCT definition here. * sysdeps/generic/bits/dlfcn.h: Define DL_CALL_FCT here. * sysdeps/mips/bits/dlfcn.h: Define DL_CALL_FCT here. * iconv/skeleton.c: If DL_CALL_FCT is not yet defined, add dumy definition here. * sysdeps/generic/libc-start.c: Fix typo in comment. * include/set-hooks.h: Allow systems to not define symbol_set_define. * configure.in: Unify machine names rs6000 and powerpc.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/generic/bits/dlfcn.h | 20 | ||||
-rw-r--r-- | sysdeps/generic/libc-start.c | 4 | ||||
-rw-r--r-- | sysdeps/mach/hurd/bits/statfs.h | 5 | ||||
-rw-r--r-- | sysdeps/mips/bits/dlfcn.h | 20 | ||||
-rw-r--r-- | sysdeps/posix/fpathconf.c | 14 | ||||
-rw-r--r-- | sysdeps/posix/pathconf.c | 14 | ||||
-rw-r--r-- | sysdeps/powerpc/Makefile | 11 | ||||
-rw-r--r-- | sysdeps/powerpc/fpu/s_isnan.c | 28 | ||||
-rw-r--r-- | sysdeps/unix/start.c | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/statfs.h | 5 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/mips/bits/statfs.h | 5 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/bits/statfs.h | 5 |
12 files changed, 112 insertions, 29 deletions
diff --git a/sysdeps/generic/bits/dlfcn.h b/sysdeps/generic/bits/dlfcn.h index f5983d706c..99d544859f 100644 --- a/sysdeps/generic/bits/dlfcn.h +++ b/sysdeps/generic/bits/dlfcn.h @@ -1,5 +1,5 @@ /* System dependent definitions for run-time dynamic loading. - Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -35,3 +35,21 @@ The implementation does this by default and so we can define the value to zero. */ #define RTLD_LOCAL 0 + +#ifdef __USE_GNU +/* To support profiling of shared objects it is a good idea to call + the function found using `dlsym' using the following macro since + these calls do not use the PLT. But this would mean the dynamic + loader has no chance to find out when the function is called. The + macro applies the necessary magic so that profiling is possible. + Rewrite + foo = (*fctp) (arg1, arg2); + into + foo = DL_CALL_FCT (fctp, (arg1, arg2)); +*/ +# define DL_CALL_FCT(fctp, args) \ + (_dl_mcount_wrapper_check (fctp), (*(fctp)) args) + +/* This function calls the profiling functions. */ +extern void _dl_mcount_wrapper_check (void *__selfpc) __THROW; +#endif diff --git a/sysdeps/generic/libc-start.c b/sysdeps/generic/libc-start.c index 7c0bc58a2a..77f730a027 100644 --- a/sysdeps/generic/libc-start.c +++ b/sysdeps/generic/libc-start.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -103,7 +103,7 @@ check_one_fd (int fd, int mode) about to start does not accidently use this descriptor. */ int nullfd = __libc_open (_PATH_DEVNULL, mode); if (nullfd == -1) - /* We cannot even given an error message here since it would + /* We cannot even give an error message here since it would run into the same problems. */ abort (); } diff --git a/sysdeps/mach/hurd/bits/statfs.h b/sysdeps/mach/hurd/bits/statfs.h index ef05ebf70c..927b00c917 100644 --- a/sysdeps/mach/hurd/bits/statfs.h +++ b/sysdeps/mach/hurd/bits/statfs.h @@ -1,5 +1,5 @@ /* Definition of `struct statfs', information about a filesystem. - Copyright (C) 1996, 97, 98 Free Software Foundation, Inc. + Copyright (C) 1996, 97, 98, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -82,3 +82,6 @@ struct statfs64 unsigned int f_spare[3]; }; #endif + +/* Tell code we have this member. */ +#define _STATFS_F_NAMELEN diff --git a/sysdeps/mips/bits/dlfcn.h b/sysdeps/mips/bits/dlfcn.h index 2939d9e19f..0da3a67a92 100644 --- a/sysdeps/mips/bits/dlfcn.h +++ b/sysdeps/mips/bits/dlfcn.h @@ -1,5 +1,5 @@ /* System dependent definitions for run-time dynamic loading. - Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -35,3 +35,21 @@ The implementation does this by default and so we can define the value to zero. */ #define RTLD_LOCAL 0 + +#ifdef __USE_GNU +/* To support profiling of shared objects it is a good idea to call + the function found using `dlsym' using the following macro since + these calls do not use the PLT. But this would mean the dynamic + loader has no chance to find out when the function is called. The + macro applies the necessary magic so that profiling is possible. + Rewrite + foo = (*fctp) (arg1, arg2); + into + foo = DL_CALL_FCT (fctp, (arg1, arg2)); +*/ +# define DL_CALL_FCT(fctp, args) \ + (_dl_mcount_wrapper_check (fctp), (*(fctp)) args) + +/* This function calls the profiling functions. */ +extern void _dl_mcount_wrapper_check (void *__selfpc) __THROW; +#endif diff --git a/sysdeps/posix/fpathconf.c b/sysdeps/posix/fpathconf.c index 94593bccca..ede91fbf95 100644 --- a/sysdeps/posix/fpathconf.c +++ b/sysdeps/posix/fpathconf.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -81,7 +81,17 @@ __fpathconf (fd, name) return -1; } else - return buf.f_namelen; + { +#ifdef _STATFS_F_NAMELEN + return buf.f_namelen; +#else +# ifdef _STATFS_F_NAME_MAX + return buf.f_name_max; +# else + return NAME_MAX; +# endif +#endif + } } #else return -1; diff --git a/sysdeps/posix/pathconf.c b/sysdeps/posix/pathconf.c index 2032afe208..b6181c3b33 100644 --- a/sysdeps/posix/pathconf.c +++ b/sysdeps/posix/pathconf.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1995, 1996, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1995, 1996, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -76,7 +76,17 @@ __pathconf (const char *path, int name) return -1; } else - return buf.f_namelen; + { +#ifdef _STATFS_F_NAMELEN + return buf.f_namelen; +#else +# ifdef _STATFS_F_NAME_MAX + return buf.f_name_max; +# else + return NAME_MAX; +# endif +#endif + } } #else return -1; diff --git a/sysdeps/powerpc/Makefile b/sysdeps/powerpc/Makefile index f2d3271925..f7ed25002a 100644 --- a/sysdeps/powerpc/Makefile +++ b/sysdeps/powerpc/Makefile @@ -1,3 +1,8 @@ +# We always want to use the new mnemonic syntax even if we are on a RS6000 +# machine. ++cflags += -mnew-mnemonics -Wa,-mppc -mpowerpc +asm-CPPFLAGS += -Wa,-mppc + ifeq ($(subdir),math) libm-support += fenv_const fe_nomask endif @@ -6,6 +11,10 @@ ifeq ($(subdir),gmon) sysdep_routines += ppc-mcount endif +ifeq ($(subdir),misc) +sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1 +endif + # On PPC, -fpic works until the GOT contains 2^15 bytes, and possibly # more depending on how clever the linker is. Each GOT entry takes 4 bytes, # so that's at least 8192 entries. Since libc only uses about 2000 entries, @@ -15,6 +24,7 @@ pic-ccflag = -fpic endif ifeq ($(subdir),csu) +ifneq ($(elf),no) # The initfini generation code doesn't work in the presence of -fPIC, so # we use -fpic instead which is much better. CFLAGS-initfini.s = -g0 -fpic @@ -24,6 +34,7 @@ CFLAGS-initfini.s = -g0 -fpic CFLAGS-init.o = -G0 CFLAGS-gmon-start.o = -G0 endif +endif ifeq ($(subdir),string) CFLAGS-memcmp.c += -Wno-uninitialized diff --git a/sysdeps/powerpc/fpu/s_isnan.c b/sysdeps/powerpc/fpu/s_isnan.c index 34019fdbdb..feea7e5c6e 100644 --- a/sysdeps/powerpc/fpu/s_isnan.c +++ b/sysdeps/powerpc/fpu/s_isnan.c @@ -1,22 +1,26 @@ /* Return 1 if argument is a NaN, else 0. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. - + The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. - + You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* Ugly kludge to avoid declarations. */ +#define __isnanf __Xisnanf +#define isnanf Xisnanf + #include "math.h" #include <fenv_libc.h> @@ -31,16 +35,14 @@ int __isnan(double x) return result; } weak_alias (__isnan, isnan) + /* It turns out that the 'double' version will also always work for - single-precision. Use explicit assembler to stop gcc complaining - that 'isnanf' takes a float parameter, not double. */ -asm ("\ - .globl __isnanf - .globl isnanf - .weak isnanf - .set __isnanf,__isnan - .set isnanf,__isnan -"); + single-precision. */ +#undef __isnanf +#undef isnanf +strong_alias (__isnan, __isnanf) +weak_alias (__isnanf, isnanf) + #ifdef NO_LONG_DOUBLE strong_alias (__isnan, __isnanl) weak_alias (__isnan, isnanl) diff --git a/sysdeps/unix/start.c b/sysdeps/unix/start.c index 49d17810ad..41fb75e063 100644 --- a/sysdeps/unix/start.c +++ b/sysdeps/unix/start.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 93, 95, 96, 97, 98 Free Software Foundation, Inc. +/* Copyright (C) 1991, 93, 1995-1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,12 +36,14 @@ weak_alias (__data_start, data_start) #endif #ifndef errno -volatile int __errno; +/* __errno must be initialized since otherwise one cannot create an + alias (at least on some platforms). */ +volatile int __errno = 0; strong_alias (__errno, errno) #endif -extern void __libc_init __P ((int argc, char **argv, char **envp)); -extern int main __P ((int argc, char **argv, char **envp)); +extern void __libc_init (int argc, char **argv, char **envp); +extern int main (int argc, char **argv, char **envp); /* Not a prototype because it gets called strangely. */ diff --git a/sysdeps/unix/sysv/linux/bits/statfs.h b/sysdeps/unix/sysv/linux/bits/statfs.h index 31ae564b46..7bf59ec9fc 100644 --- a/sysdeps/unix/sysv/linux/bits/statfs.h +++ b/sysdeps/unix/sysv/linux/bits/statfs.h @@ -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. The GNU C Library is free software; you can redistribute it and/or @@ -59,3 +59,6 @@ struct statfs64 int f_spare[6]; }; #endif + +/* Tell code we have this member. */ +#define _STATFS_F_NAMELEN diff --git a/sysdeps/unix/sysv/linux/mips/bits/statfs.h b/sysdeps/unix/sysv/linux/mips/bits/statfs.h index 36d9996a69..1099ae1f5e 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/statfs.h +++ b/sysdeps/unix/sysv/linux/mips/bits/statfs.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -67,3 +67,6 @@ struct statfs64 long int f_spare[6]; }; #endif + +/* Tell code we have these members. */ +#define _STATFS_F_NAMELEN diff --git a/sysdeps/unix/sysv/linux/sparc/bits/statfs.h b/sysdeps/unix/sysv/linux/sparc/bits/statfs.h index 2037634007..0bda6dca45 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/statfs.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/statfs.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -59,3 +59,6 @@ struct statfs64 long int f_spare[6]; }; #endif + +/* Tell code we have these members. */ +#define _STATFS_F_NAMELEN |