mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 14:50:05 +00:00
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.
This commit is contained in:
parent
46b5798928
commit
a808d541c6
37
ChangeLog
37
ChangeLog
@ -1,3 +1,40 @@
|
||||
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.
|
||||
|
||||
2000-02-25 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* malloc/Versions: Change version of __libc_freeres to 2.1 in
|
||||
|
20
bits/dlfcn.h
20
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
|
||||
|
@ -224,6 +224,12 @@ machine=$config_machine
|
||||
vendor=$config_vendor
|
||||
os=$config_os
|
||||
|
||||
# config.guess on some IBM machines says `rs6000' instead of `powerpc'.
|
||||
# Unify this here.
|
||||
if test "$machine" = rs6000; then
|
||||
machine="powerpc"
|
||||
fi
|
||||
|
||||
###
|
||||
### I put this here to prevent those annoying emails from people who cannot
|
||||
### read and try to compile glibc on unsupported platforms. --drepper
|
||||
|
@ -77,22 +77,6 @@ typedef struct
|
||||
void *dli_saddr; /* Exact value of nearest symbol. */
|
||||
} Dl_info;
|
||||
extern int dladdr (const void *__address, Dl_info *__info) __THROW;
|
||||
|
||||
/* 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
|
||||
|
||||
__END_DECLS
|
||||
|
@ -87,6 +87,10 @@
|
||||
# include <dlfcn.h>
|
||||
#endif
|
||||
|
||||
#ifndef DL_CALL_FCT
|
||||
# define DL_CALL_FCT(fct, args) fct args
|
||||
#endif
|
||||
|
||||
/* The direction objects. */
|
||||
#if DEFINE_DIRECTION_OBJECTS || DEFINE_INIT
|
||||
static int from_object;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Macros for using symbol sets for running lists of functions.
|
||||
Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc.
|
||||
Copyright (C) 1994, 1995, 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
|
||||
@ -24,34 +24,47 @@
|
||||
#include <stddef.h>
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#ifdef symbol_set_define
|
||||
/* Define a hook variable called NAME. Functions put on this hook take
|
||||
arguments described by PROTO. Use `text_set_element (NAME, FUNCTION)'
|
||||
from gnu-stabs.h to add a function to the hook. */
|
||||
|
||||
#define DEFINE_HOOK(NAME, PROTO) \
|
||||
# define DEFINE_HOOK(NAME, PROTO) \
|
||||
typedef void __##NAME##_hook_function_t PROTO; \
|
||||
symbol_set_define (NAME)
|
||||
|
||||
#define DECLARE_HOOK(NAME, PROTO) \
|
||||
# define DECLARE_HOOK(NAME, PROTO) \
|
||||
typedef void __##NAME##_hook_function_t PROTO;\
|
||||
symbol_set_declare (NAME)
|
||||
|
||||
/* Run all the functions hooked on the set called NAME.
|
||||
Each function is called like this: `function ARGS'. */
|
||||
|
||||
#define RUN_HOOK(NAME, ARGS) \
|
||||
do { \
|
||||
void *const *ptr; \
|
||||
for (ptr = symbol_set_first_element (NAME); \
|
||||
! symbol_set_end_p (NAME, ptr); ++ptr) \
|
||||
(*(__##NAME##_hook_function_t *) *ptr) ARGS; \
|
||||
# define RUN_HOOK(NAME, ARGS) \
|
||||
do { \
|
||||
void *const *ptr; \
|
||||
for (ptr = symbol_set_first_element (NAME); \
|
||||
! symbol_set_end_p (NAME, ptr); ++ptr) \
|
||||
(*(__##NAME##_hook_function_t *) *ptr) ARGS; \
|
||||
} while (0)
|
||||
|
||||
/* Define a hook variable with NAME and PROTO, and a function called RUNNER
|
||||
which calls each function on the hook in turn, with ARGS. */
|
||||
|
||||
#define DEFINE_HOOK_RUNNER(name, runner, proto, args) \
|
||||
# define DEFINE_HOOK_RUNNER(name, runner, proto, args) \
|
||||
DEFINE_HOOK (name, proto); void runner proto { RUN_HOOK (name, args); }
|
||||
|
||||
#else
|
||||
|
||||
/* The system does not provide necessary support for this. */
|
||||
# define DEFINE_HOOK(NAME, PROTO)
|
||||
|
||||
# define DECLARE_HOOK(NAME, PROTO)
|
||||
|
||||
# define RUN_HOOK(NAME, ARGS)
|
||||
|
||||
# define DEFINE_HOOK_RUNNER(name, runner, proto, args)
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* set-hooks.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
|
||||
|
@ -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 ();
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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. */
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user