1998-11-26  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/mips/dl-machine.h (ELF_MACHINE_NO_PLT): New defined macro.
	(elf_machine_got_rel): Remove scope variable.  Use scope from the map.
	Don't modify _dl_global_scope_end in the end.
	(__dl_runtime_resolv): Also use scope from the map.
	* sysdeps/mips/mips64/dl-machine.h: Likewise.
	* elf/dl-runtime.c: Don't define fixup and profile_fixup if
	ELF_MACHINE_NO_PLT is defined.
	* sysdeps/mips/sys/ucontext.h: New file.
	Patches by kaz Kojima <kkojima@rr.iij4u.or.jp>.

1998-11-26  Andreas Jaeger  <aj@arthur.rhein-neckar.de> 
 
	* sysdeps/generic/pselect.c (__pselect): Change interface, 
	set/restore sigmask. 
 
	* misc/sys/select.h: Change declaration according to Stevens' Unix  
	Network Programming. 
	* include/sys/select.h (__pselect): Likewise. 
	Reported by <bwelling@anomaly.munge.com> [PR libc/872]. 
 
	* include/fpu_control.h: New file, contains __setfpucw 
	declaration. 
 
	* sysdeps/generic/fpu_control.h: Remove __setfpucw declaration, 
	it's an internal symbol. 
	* sysdeps/alpha/fpu/fpu_control.h: Likewise. 
	* sysdeps/arm/fpu/fpu_control.h: Likewise. 
	* sysdeps/i386/fpu_control.h: Likewise. 
	* sysdeps/m68k/fpu_control.h: Likewise. 
	* sysdeps/powerpc/fpu_control.h: Likewise. 
	* sysdeps/sparc/sparc32/fpu/fpu_control.h: Likewise. 
	* sysdeps/sparc/sparc64/fpu/fpu_control.h: Likewise.
This commit is contained in:
Ulrich Drepper 1998-11-26 12:02:23 +00:00
parent 0155a7737f
commit cb0509a8d5
19 changed files with 260 additions and 110 deletions

View File

@ -1,3 +1,38 @@
1998-11-26 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/mips/dl-machine.h (ELF_MACHINE_NO_PLT): New defined macro.
(elf_machine_got_rel): Remove scope variable. Use scope from the map.
Don't modify _dl_global_scope_end in the end.
(__dl_runtime_resolv): Also use scope from the map.
* sysdeps/mips/mips64/dl-machine.h: Likewise.
* elf/dl-runtime.c: Don't define fixup and profile_fixup if
ELF_MACHINE_NO_PLT is defined.
* sysdeps/mips/sys/ucontext.h: New file.
Patches by kaz Kojima <kkojima@rr.iij4u.or.jp>.
1998-11-26 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/generic/pselect.c (__pselect): Change interface,
set/restore sigmask.
* misc/sys/select.h: Change declaration according to Stevens' Unix
Network Programming.
* include/sys/select.h (__pselect): Likewise.
Reported by <bwelling@anomaly.munge.com> [PR libc/872].
* include/fpu_control.h: New file, contains __setfpucw
declaration.
* sysdeps/generic/fpu_control.h: Remove __setfpucw declaration,
it's an internal symbol.
* sysdeps/alpha/fpu/fpu_control.h: Likewise.
* sysdeps/arm/fpu/fpu_control.h: Likewise.
* sysdeps/i386/fpu_control.h: Likewise.
* sysdeps/m68k/fpu_control.h: Likewise.
* sysdeps/powerpc/fpu_control.h: Likewise.
* sysdeps/sparc/sparc32/fpu/fpu_control.h: Likewise.
* sysdeps/sparc/sparc64/fpu/fpu_control.h: Likewise.
1998-11-25 Ulrich Drepper <drepper@cygnus.com>
* version.h (VERSION): Bump to 2.0.104.

30
FAQ.in
View File

@ -33,6 +33,7 @@ in the future, are:
sparc-*-linux-gnu Linux-2.x on SPARC
sparc64-*-linux-gnu Linux-2.x on UltraSPARC
arm-*-none ARM standalone systems
arm-*-linux Linux-2.x on ARM
arm-*-linuxaout Linux-2.x on ARM using a.out binaries
Ports to other Linux platforms are in development, and may in fact work
@ -60,7 +61,7 @@ a local mirror first.
You should always try to use the latest official release. Older versions
may not have all the features GNU libc requires. The current releases of
egcs (1.0.3 and 1.1) and GNU CC (2.8.1) should work with the GNU C library
(for powerpc see question ?powerpc).
(for powerpc see question ?powerpc; for ARM see question ?arm).
{ZW} You may have problems if you try to mix code compiled with
EGCS and with GCC 2.8.1. See ?exception for details.
@ -105,6 +106,16 @@ variables. There is a temporary patch at:
Later versions of egcs may fix this problem.
??arm Which tools should I use for ARM?
{PB} You should use egcs 1.1 or a later version. For ELF systems some
changes are needed to the compiler; a patch against egcs-1.1.x can be found
at:
<ftp://ftp.netwinder.org/users/p/philb/egcs-1.1.1pre2-diff-981126>
Binutils 2.9.1.0.16 or later is also required.
?? Do I need some more things to compile the GNU C Library?
{UD} Yes, there are some more :-).
@ -1146,9 +1157,20 @@ from your favorite mirror of ftp.gnu.org.
where the headers are stable. There are still lots of incompatible changes
made and the libc headers have to follow.
Also, make sure you have a suitably recent kernel. As of the 970401
snapshot, according to Philip Blundell <Philip.Blundell@pobox.com>, the
required kernel version is at least 2.1.30.
{PB} The 2.1 release of GNU libc aims to comply with the current versions of
all the relevant standards. The IPv6 support libraries for older Linux
systems used a different naming convention and so code written to work with
them may need to be modified. If the standards make incompatible changes in
the future then the libc may need to change again.
IPv6 will not work with a 2.0.x kernel. When kernel 2.2 is released it
should contain all the necessary support; until then you should use the
latest 2.1.x release you can find. As of 98/11/26 the currently recommended
kernel for IPv6 is 2.1.129.
Also, as of the 2.1 release the IPv6 API provided by GNU libc is not
100% complete. In particular the getipnodebyname and getipnodebyaddr
functions are not implemented.
?? When I set the timezone by setting the TZ environment variable
to EST5EDT things go wrong since glibc computes the wrong time

4
README
View File

@ -1,4 +1,4 @@
This directory contains the version 2.0.103 test release of the GNU C Library.
This directory contains the version 2.0.104 test release of the GNU C Library.
Many bugs have been fixed since the last release.
Some bugs surely remain.
@ -53,7 +53,7 @@ provides the Unix `crypt' function, plus some other entry points.
Because of the United States export restriction on DES implementations,
we are distributing this code separately from the rest of the C
library. There is an extra distribution tar file just for crypt; it is
called `glibc-crypt-2.0.103.tar.gz'. You can just unpack the crypt
called `glibc-crypt-2.0.104.tar.gz'. You can just unpack the crypt
distribution along with the rest of the C library and build; you can
also build the library without getting crypt. Users outside the USA
can get the crypt distribution via anonymous FTP from ftp.ifi.uio.no

View File

@ -39,11 +39,12 @@
to that address. Future calls will bounce directly from the PLT to the
function. */
#ifndef ELF_MACHINE_NO_PLT
static ElfW(Addr) __attribute__ ((unused))
fixup (
#ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
ELF_MACHINE_RUNTIME_FIXUP_ARGS,
#endif
# ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS
ELF_MACHINE_RUNTIME_FIXUP_ARGS,
# endif
struct link_map *l, ElfW(Word) reloc_offset)
{
const ElfW(Sym) *const symtab
@ -96,9 +97,9 @@ fixup (
return value;
}
#endif
#ifndef PROF
#if !defined PROF && !defined ELF_MACHINE_NO_PLT
static ElfW(Addr) __attribute__ ((unused))
profile_fixup (
@ -172,7 +173,7 @@ profile_fixup (
return value;
}
#endif /* PROF */
#endif /* PROF && ELF_MACHINE_NO_PLT */
/* This macro is defined in dl-machine.h to define the entry point called

4
include/fpu_control.h Normal file
View File

@ -0,0 +1,4 @@
#include_next <fpu_control.h>
/* Called at startup. It can be used to manipulate fpu control register. */
extern void __setfpucw __P ((fpu_control_t));

View File

@ -4,5 +4,6 @@
/* Now define the internal interfaces. */
extern int __pselect __P ((int __nfds, __fd_set *__readfds,
__fd_set *__writefds, __fd_set *__exceptfds,
struct timespec *__timeout));
const struct timespec *__timeout,
const __sigset_t *__sigmask));
#endif

View File

@ -30,6 +30,9 @@
/* Get __FD_* definitions. */
#include <bits/select.h>
/* Get __sigset_t. */
#include <bits/sigset.h>
/* Get definition of timer specification structures. */
#define __need_timespec
#include <time.h>
@ -79,10 +82,12 @@ extern int select __P ((int __nfds, __fd_set *__readfds,
/* XXX Once/if POSIX.1g gets official this prototype will be available
when defining __USE_POSIX. */
/* Same as above only that the TIMEOUT value is given with higher
resolution. This version should be used. */
resolution and a sigmask which is been set temporarily. This version
should be used. */
extern int pselect __P ((int __nfds, __fd_set *__readfds,
__fd_set *__writefds, __fd_set *__exceptfds,
struct timespec *__timeout));
const struct timespec *__timeout,
const __sigset_t *__sigmask));
#endif
__END_DECLS

View File

@ -1,5 +1,5 @@
/* FPU control word bits. Alpha-maped-to-Intel version.
Copyright (C) 1996 Free Software Foundation, Inc.
Copyright (C) 1996, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Olaf Flebbe.
@ -103,11 +103,4 @@ typedef unsigned int fpu_control_t;
/* Default control word set at startup. */
extern fpu_control_t __fpu_control;
__BEGIN_DECLS
/* called by start.o. It can be used to manipulate fpu control word. */
extern void __setfpucw __P ((unsigned short));
__END_DECLS
#endif /* _ALPHA_FPU_CONTROL */

View File

@ -83,11 +83,4 @@ typedef unsigned int fpu_control_t;
/* Default control word set at startup. */
extern fpu_control_t __fpu_control;
__BEGIN_DECLS
/* Called at startup. It can be used to manipulate fpu control register. */
extern void __setfpucw __P ((fpu_control_t));
__END_DECLS
#endif /* _FPU_CONTROL_H */

View File

@ -1,5 +1,5 @@
/* FPU control word definitions. Stub version.
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998 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,11 +36,4 @@ typedef unsigned int fpu_control_t;
/* Default control word set at startup. */
extern fpu_control_t __fpu_control;
__BEGIN_DECLS
/* Called at startup. It can be used to manipulate fpu control register. */
extern void __setfpucw __P ((fpu_control_t));
__END_DECLS
#endif /* _FPU_CONTROL_H */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -18,24 +18,28 @@
Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/select.h>
/* Check the first NFDS descriptors each in READFDS (if not NULL) for read
readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS
(if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out
after waiting the interval specified therein. Returns the number of ready
descriptors, or -1 for errors. */
after waiting the interval specified therein. Additionally set the sigmask
SIGMASK for this call. Returns the number of ready descriptors, or -1 for
errors. */
int
__pselect (nfds, readfds, writefds, exceptfds, timeout)
__pselect (nfds, readfds, writefds, exceptfds, timeout, sigmask)
int nfds;
fd_set *readfds;
fd_set *writefds;
fd_set *exceptfds;
struct timespec *timeout;
const struct timespec *timeout;
const sigset_t *sigmask;
{
struct timeval tval;
int retval;
sigset_t savemask;
/* Change nanosecond number to microseconds. This may loose
precision and therefore the `pselect` should be available. But
@ -43,13 +47,13 @@ __pselect (nfds, readfds, writefds, exceptfds, timeout)
if (timeout != NULL)
TIMESPEC_TO_TIMEVAL (&tval, timeout);
/* The setting and restoring of the signal mask and the select call
should be an atomic operation. This can't be done without kernel
help. */
__sigprocmask (SIG_SETMASK, sigmask, &savemask);
retval = __select (nfds, readfds, writefds, exceptfds,
timeout != NULL ? &tval : NULL);
/* Change the result back. The remaining time must be made
available to the caller. */
if (timeout != NULL)
TIMEVAL_TO_TIMESPEC (&tval, timeout);
__sigprocmask (SIG_SETMASK, &savemask, NULL);
return retval;
}

View File

@ -1,5 +1,5 @@
/* FPU control word bits. i387 version.
Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1993, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Olaf Flebbe.
@ -95,11 +95,4 @@ typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__HI__)));
/* Default control word set at startup. */
extern fpu_control_t __fpu_control;
__BEGIN_DECLS
/* Called at startup. It can be used to manipulate fpu control register. */
extern void __setfpucw __P ((fpu_control_t));
__END_DECLS
#endif /* fpu_control.h */

View File

@ -1,5 +1,5 @@
/* 68k FPU control word definitions.
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998 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
@ -98,11 +98,4 @@ typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
/* Default control word set at startup. */
extern fpu_control_t __fpu_control;
__BEGIN_DECLS
/* Called at startup. It can be used to manipulate fpu control register. */
extern void __setfpucw __P ((fpu_control_t));
__END_DECLS
#endif /* _M68K_FPU_CONTROL_H */

View File

@ -23,6 +23,8 @@
#define ELF_MACHINE_NAME "MIPS"
#define ELF_MACHINE_NO_PLT
#include <assert.h>
#include <entry.h>
@ -142,7 +144,6 @@ elf_machine_got_rel (struct link_map *map, int lazy)
ElfW(Addr) *got;
ElfW(Sym) *sym;
int i, n;
struct link_map **scope;
const char *strtab
= ((void *) map->l_addr + map->l_info[DT_STRTAB]->d_un.d_ptr);
@ -150,7 +151,8 @@ elf_machine_got_rel (struct link_map *map, int lazy)
({ \
const ElfW(Sym) *ref = sym; \
ElfW(Addr) sym_loadaddr; \
sym_loadaddr = _dl_lookup_symbol (strtab + sym->st_name, &ref, scope, \
sym_loadaddr = _dl_lookup_symbol (strtab + sym->st_name, &ref, \
map->l_scope, \
map->l_name, ELF_MACHINE_RELOC_NOPLT);\
(ref)? sym_loadaddr + ref->st_value: 0; \
})
@ -166,9 +168,6 @@ elf_machine_got_rel (struct link_map *map, int lazy)
while (i < n)
got[i++] += map->l_addr;
/* Set scope. */
scope = _dl_object_relocation_scope (map);
/* Handle global got entries. */
got += n;
sym = (ElfW(Sym) *) ((void *) map->l_addr
@ -210,7 +209,6 @@ elf_machine_got_rel (struct link_map *map, int lazy)
}
#undef RESOLVE_GOTSYM
*_dl_global_scope_end = NULL;
return;
}
@ -362,16 +360,13 @@ __dl_runtime_resolve (ElfW(Word) sym_index, \
const ElfW(Sym) *definer; \
ElfW(Addr) loadbase; \
ElfW(Addr) funcaddr; \
struct link_map **scope; \
\
/* Look up the symbol's run-time value. */ \
scope = _dl_object_relocation_scope (l); \
definer = &symtab[sym_index]; \
\
loadbase = _dl_lookup_symbol (strtab + definer->st_name, &definer, \
scope, l->l_name, ELF_MACHINE_RELOC_NOPLT); \
\
*_dl_global_scope_end = NULL; \
l->l_scope, l->l_name, \
ELF_MACHINE_RELOC_NOPLT); \
\
/* Apply the relocation with that value. */ \
funcaddr = loadbase + definer->st_value; \

View File

@ -23,6 +23,8 @@
#define ELF_MACHINE_NAME "MIPS"
#define ELF_MACHINE_NO_PLT
#include <assert.h>
#include <entry.h>
@ -142,7 +144,6 @@ elf_machine_got_rel (struct link_map *map, int lazy)
ElfW(Addr) *got;
ElfW(Sym) *sym;
int i, n;
struct link_map **scope;
const char *strtab
= ((void *) map->l_addr + map->l_info[DT_STRTAB]->d_un.d_ptr);
@ -150,7 +151,8 @@ elf_machine_got_rel (struct link_map *map, int lazy)
({ \
const ElfW(Sym) *ref = sym; \
ElfW(Addr) sym_loadaddr; \
sym_loadaddr = _dl_lookup_symbol (strtab + sym->st_name, &ref, scope, \
sym_loadaddr = _dl_lookup_symbol (strtab + sym->st_name, &ref, \
map->l_scope, \
map->l_name, ELF_MACHINE_RELOC_NOPLT);\
(ref)? sym_loadaddr + ref->st_value: 0; \
})
@ -166,9 +168,6 @@ elf_machine_got_rel (struct link_map *map, int lazy)
while (i < n)
got[i++] += map->l_addr;
/* Set scope. */
scope = _dl_object_relocation_scope (map);
/* Handle global got entries. */
got += n;
sym = (ElfW(Sym) *) ((void *) map->l_addr
@ -210,7 +209,6 @@ elf_machine_got_rel (struct link_map *map, int lazy)
}
#undef RESOLVE_GOTSYM
*_dl_global_scope_end = NULL;
return;
}
@ -362,16 +360,13 @@ __dl_runtime_resolve (ElfW(Word) sym_index, \
const ElfW(Sym) *definer; \
ElfW(Addr) loadbase; \
ElfW(Addr) funcaddr; \
struct link_map **scope; \
\
/* Look up the symbol's run-time value. */ \
scope = _dl_object_relocation_scope (l); \
definer = &symtab[sym_index]; \
\
loadbase = _dl_lookup_symbol (strtab + definer->st_name, &definer, \
scope, l->l_name, ELF_MACHINE_RELOC_NOPLT); \
\
*_dl_global_scope_end = NULL; \
l->l_scope, l->l_name, \
ELF_MACHINE_RELOC_NOPLT); \
\
/* Apply the relocation with that value. */ \
funcaddr = loadbase + definer->st_value; \

144
sysdeps/mips/sys/ucontext.h Normal file
View File

@ -0,0 +1,144 @@
/* Copyright (C) 1998 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. */
/* System V/mips ABI compliant context switching support. */
#ifndef _SYS_UCONTEXT_H
#define _SYS_UCONTEXT_H 1
#include <features.h>
#include <signal.h>
/* Type for general register. */
typedef unsigned int greg_t;
/* Number of general registers. */
#define NGREG 36
/* Container for all general registers. */
typedef greg_t gregset_t[NGREG];
/* Number of each register is the `gregset_t' array. */
enum
{
CTX_R0 = 0,
#define CTX_R0 CTX_R0
CTX_AT = 1,
#define CTX_AT CTX_AT
CTX_V0 = 2,
#define CTX_V0 CTX_V0
CTX_V1 = 3,
#define CTX_V1 CTX_V1
CTX_A0 = 4,
#define CTX_A0 CTX_A0
CTX_A1 = 5,
#define CTX_A1 CTX_A1
CTX_A2 = 6,
#define CTX_A2 CTX_A2
CTX_A3 = 7,
#define CTX_A3 CTX_A3
CTX_T0 = 8,
#define CTX_T0 CTX_T0
CTX_T1 = 9,
#define CTX_T1 CTX_T1
CTX_T2 = 10,
#define CTX_T2 CTX_T2
CTX_T3 = 11,
#define CTX_T3 CTX_T3
CTX_T4 = 12,
#define CTX_T4 CTX_T4
CTX_T5 = 13,
#define CTX_T5 CTX_T5
CTX_T6 = 14,
#define CTX_T6 CTX_T6
CTX_T7 = 15,
#define CTX_T7 CTX_T7
CTX_S0 = 16,
#define CTX_S0 CTX_S0
CTX_S1 = 17,
#define CTX_S1 CTX_S1
CTX_S2 = 18,
#define CTX_S2 CTX_S2
CTX_S3 = 19,
#define CTX_S3 CTX_S3
CTX_S4 = 20,
#define CTX_S4 CTX_S4
CTX_S5 = 21,
#define CTX_S5 CTX_S5
CTX_S6 = 22,
#define CTX_S6 CTX_S6
CTX_S7 = 23,
#define CTX_S7 CTX_S7
CTX_T8 = 24,
#define CTX_T8 CTX_T8
CTX_T9 = 25,
#define CTX_T9 CTX_T9
CTX_K0 = 26,
#define CTX_K0 CTX_K0
CTX_K1 = 27,
#define CTX_K1 CTX_K1
CTX_GP = 28,
#define CTX_GP CTX_GP
CTX_SP = 29,
#define CTX_SP CTX_SP
CTX_S8 = 30,
#define CTX_S8 CTX_S8
CTX_RA = 31,
#define CTX_RA CTX_RA
CTX_MDLO = 32,
#define CTX_MDLO CTX_MDLO
CTX_MDHI = 33,
#define CTX_MDHI CTX_MDHI
CTX_CAUSE = 34,
#define CTX_CAUSE CTX_CAUSE
CTX_EPC = 35,
#define CTX_EPC CTX_EPC
};
/* Structure to describe FPU registers. */
typedef struct fpregset
{
union
{
double fp_dregs[16];
float fp_fregs[32];
unsigned int fp_regs[32];
} fp_r;
unsigned int fp_csr;
unsigned int fp_pad;
} fpregset_t;
/* Context to describe whole processor state. */
typedef struct
{
gregset_t gpregs;
fpregset_t fpregs;
} mcontext_t;
/* Userlevel context. */
typedef struct ucontext
{
unsigned long int uc_flags;
struct ucontext *uc_links;
__sigset_t uc_sigmask;
stack_t uc_stack;
mcontext_t uc_mcontext;
long int uc_filler[48];
} ucontext_t;
#endif /* sys/ucontext.h */

View File

@ -1,5 +1,5 @@
/* FPU control word definitions. PowerPC version.
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998 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
@ -64,11 +64,4 @@ typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__)));
/* Default control word set at startup. */
extern fpu_control_t __fpu_control;
__BEGIN_DECLS
/* Called at startup. It can be used to manipulate fpu control register. */
extern void __setfpucw __P ((fpu_control_t));
__END_DECLS
#endif /* _FPU_CONTROL_H */

View File

@ -1,5 +1,5 @@
/* FPU control word bits. SPARC version.
Copyright (C) 1997 Free Software Foundation, Inc.
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Miguel de Icaza
@ -57,11 +57,4 @@ typedef unsigned int fpu_control_t;
/* Default control word set at startup. */
extern fpu_control_t __fpu_control;
__BEGIN_DECLS
/* Called at startup. It can be used to manipulate fpu control register. */
extern void __setfpucw __P ((fpu_control_t));
__END_DECLS
#endif /* fpu_control.h */

View File

@ -1,5 +1,5 @@
/* FPU control word bits. SPARC v9 version.
Copyright (C) 1997 Free Software Foundation, Inc.
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Miguel de Icaza
@ -57,11 +57,4 @@ typedef unsigned long fpu_control_t;
/* Default control word set at startup. */
extern fpu_control_t __fpu_control;
__BEGIN_DECLS
/* Called at startup. It can be used to manipulate fpu control register. */
extern void __setfpucw __P ((fpu_control_t));
__END_DECLS
#endif /* fpu_control.h */