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:
Ulrich Drepper 2000-02-28 21:16:38 +00:00
parent 46b5798928
commit a808d541c6
19 changed files with 409 additions and 320 deletions

View File

@ -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

View File

@ -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

472
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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 */

View File

@ -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

View File

@ -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 ();
}

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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)

View File

@ -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. */

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.
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

View File

@ -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

View File

@ -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