mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
Update.
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:
parent
0155a7737f
commit
cb0509a8d5
35
ChangeLog
35
ChangeLog
@ -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
30
FAQ.in
@ -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
4
README
@ -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
|
||||
|
@ -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
4
include/fpu_control.h
Normal 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));
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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; \
|
||||
|
@ -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
144
sysdeps/mips/sys/ucontext.h
Normal 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 */
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user