]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 26 Nov 1998 12:02:23 +0000 (12:02 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 26 Nov 1998 12:02:23 +0000 (12:02 +0000)
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.

19 files changed:
ChangeLog
FAQ.in
README
elf/dl-runtime.c
include/fpu_control.h [new file with mode: 0644]
include/sys/select.h
misc/sys/select.h
sysdeps/alpha/fpu/fpu_control.h
sysdeps/arm/fpu/fpu_control.h
sysdeps/generic/fpu_control.h
sysdeps/generic/pselect.c
sysdeps/i386/fpu_control.h
sysdeps/m68k/fpu_control.h
sysdeps/mips/dl-machine.h
sysdeps/mips/mips64/dl-machine.h
sysdeps/mips/sys/ucontext.h [new file with mode: 0644]
sysdeps/powerpc/fpu_control.h
sysdeps/sparc/sparc32/fpu/fpu_control.h
sysdeps/sparc/sparc64/fpu/fpu_control.h

index 99c6b99fab04507972629f8faca5b93273bcbe2c..5892595810719124e3d1bb50b6cf9796de2007c9 100644 (file)
--- a/ChangeLog
+++ b/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.
diff --git a/FAQ.in b/FAQ.in
index 0da19611cc00f38646cd14da53982604cfda4e1e..e2b5b9f06f0133e71124682abdea6c6f0fd34f29 100644 (file)
--- a/FAQ.in
+++ b/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
diff --git a/README b/README
index d9e19336bb14a72b884196c20c97dcd7b74f077b..f330c66adead9da9e50e49f221b68944189ef7dd 100644 (file)
--- a/README
+++ b/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
index 38ecf965251807f3caeecb74b50e787a0a694e0a..91700c2764e48107b1a90f06d25b0dc839d8374e 100644 (file)
    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
diff --git a/include/fpu_control.h b/include/fpu_control.h
new file mode 100644 (file)
index 0000000..a0a4feb
--- /dev/null
@@ -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));
index be98aa2eb4276f295cf82c21a1ad46d1b680c9b4..5c722e9df64ae6c74759ad810fea7834bbb4876a 100644 (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
index 179e1ec59fbe4c0a5e6fafbec3ef1cab6d300095..0972560b972183e1f2dd0a98ffabccdc910c0380 100644 (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
index bcf73e857e2b695e742f2d643735d266ce84f3fa..dfca373c3de8131a687409fb1a3cfd341dffcf93 100644 (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 */
index 8a2d338c49e8ab30c7bcd1d8a21286ea883fd17c..27b8dda9723911cf5eab7c3fa4f359ad8ea00c91 100644 (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 */
index 4d3d978426dfd29ef96c69dcfa4e76dd7cb6a0e0..8d509013005b44a9df8bf06b8d3cc22c16293c6b 100644 (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 */
index 3a93f997f50737880613f63b4f697f741ef9b03e..dab4d754f208310a4ae011b28ffce0d5cb56ebb9 100644 (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.
 
    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;
 }
index 8474f7199bf7fd818b5095170a8d43aa7f5dce3c..b957010904b30444a2b3a898bd7053bd0b56463e 100644 (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 */
index 12ea1336c3e7598b01aaf5f27b9264a810612952..28405b6a3bb057f9c3b824ffc1c5f9eadf010dc2 100644 (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 */
index bbd22d87774317a971b295b1e02e24d9f7b07393..5f6e12752ea0419b455fe9e7866e392a4a382180 100644 (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;                                   \
index 76981a6a9bd6174d7a0049c5628580616d727bf6..1045da15b66c616e39a92f2236d8fb1700178750 100644 (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;                                   \
diff --git a/sysdeps/mips/sys/ucontext.h b/sysdeps/mips/sys/ucontext.h
new file mode 100644 (file)
index 0000000..f177cad
--- /dev/null
@@ -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 */
index c4c478672b8723bd8fa00c0750957cb0ba1926cd..ed54ecba994f20f6aaa63d0fdabb4d09bd551342 100644 (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 */
index c06931897086fb1e5f09886715049f03b57df947..127f13b54caa77d50872774f9fb92ce89e3bfd48 100644 (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 */
index bedc034eaafa494c9b47bc173b3427770bdde698..82571fc7a73b10dd47c8f01b483bff1cc7299d88 100644 (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 */