]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
update from main archvie 961022 cvs/libc-961023 cvs/libc-961024 cvs/libc-961025 cvs/libc-961026 cvs/libc-961027 cvs/libc-961028
authorUlrich Drepper <drepper@redhat.com>
Tue, 22 Oct 1996 23:29:26 +0000 (23:29 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 22 Oct 1996 23:29:26 +0000 (23:29 +0000)
Tue Oct 22 21:38:21 1996  Ulrich Drepper  <drepper@cygnus.com>

* version.h: Bump version number to 1.97.

* features.h: Undo change of Sun Oct 20 22:19:58 1996.
Include libc-version.h.
* features.h.in: Removed.
* Makefile: Change rules to generate libc-version.h instead of
features.h.

* malloc/free.c: Add cast to prevent warning.
* malloc/malloc-walk.c: Likewise.
* malloc/ralloc.c: Likewise.
* malloc/realloc.c: Likewise.

* grp/fgetgrent_r.c: Accept empty numeric field if name start with +
or -.
* pwd/fgetpwent_r.c: Likewise.
* nss/nss_files/files-grp.c: Don't accept entries with names starting
with + or - in lookup functions.
* nss/nss_files/files-pwd.c: Likewise.

* Makerules: Call autolock.sh using $(SHELL).

Mon Oct 21 22:52:16 1996  NIIBE Yutaka  <gniibe@mri.co.jp>

* elf/dl-minimal.c: Don't define `dgettext' replacement but
`dcgettext'.  When optimizing the macros in <libintl.h> define
`dgettext' as a macro and so this function will never be called.

Mon Oct 21 15:41:59 1996  Ulrich Drepper  <drepper@cygnus.com>

* sysdeps/i386/sysdep.h: Define END to use .size when available.
(PSEUDO_END): Use END.
* sysdeps/unix/sysv/linux/i386/sysdep.h: Define PSEUDO_END to
define SYSCALL_ERROR_HANDLER before using END.
(SYSCALL_ERROR_HANDLER): Don't use .size directive.
* sysdeps/unix/sysv/linux/clone.S: Don't use SYSCALL_ERROR_HANDLER
and .size directive but PSEUDO_END.
* sysdeps/unix/sysv/linux/mmap.S: Likewise.
* sysdeps/unix/sysv/linux/socket.S: Likewise.
* sysdeps/unix/sysv/linux/syscall.S: Likewise.
* sysdeps/unix/sysv/linux/sysdep.S (__errno_location): Use END.
* sysdeps/unix/i386/sysdep.S (__syscall_error): Likewise.
* sysdeps/i386/__longjmp.S: Use END instead of PSEUDO_END.
* sysdeps/i386/bsd-_setjmp.S: Likewise.
* sysdeps/i386/bsd-setjmp.S: Likewise.
* sysdeps/i386/memchr.S: Likewise.
* sysdeps/i386/memcmp.S: Likewise.
* sysdeps/i386/setjmp.S: Likewise.
* sysdeps/i386/stpcpy.S: Likewise.
* sysdeps/i386/stpncpy.S: Likewise.
* sysdeps/i386/strchr.S: Likewise.
* sysdeps/i386/strcspn.S: Likewise.
* sysdeps/i386/strpbrk.S: Likewise.
* sysdeps/i386/strrchr.S: Likewise.
* sysdeps/i386/strspn.S: Likewise.
* sysdeps/i386/strtok.S: Likewise.
* sysdeps/i386/i486/strcat.S: Likewise.
* sysdeps/i386/i486/strlen.S: Likewise.
* sysdeps/i386/i586/memset.S: Likewise.
* sysdeps/i386/i586/strchr.S: Likewise.
* sysdeps/i386/i586/strlen.S: Likewise.

* sysdeps/i386/strlen.c: De-ANSI-fy.

* sysdeps/generic/_strerror.c: Undo change of Mon Oct 21 01:32:36 1996.
Define dgettext if not defined to use dcgettext.
* sysdeps/mach/_strerror.c: Likewise.

* sysdeps/unix/sysv/i386/time.S: Add PSEUDO_END to get
  __syscall_error defined..

Sat Oct 19 12:27:50 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* sysdeps/unix/sysv/linux/m68k/mmap.S: Fix braino: CALL_MCOUNT is
already included in the ENTRY macro.  Remove SYSCALL_ERROR_HANDLER
now provided by PSEUDO_END.
* sysdeps/unix/sysv/linux/m68k/sigreturn.S: Likewise.
* sysdeps/unix/sysv/linux/m68k/socket.S: Likewise.
* sysdeps/unix/sysv/linux/m68k/syscall.S: Likewise.
* sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/m68k/clone.S: Likewise.  Use JUMPTARGET.

* sysdeps/generic/sysdep.h (END): Provide default empty
definition.
* sysdeps/unix/sysv/linux/m68k/sysdep.h (END): Redefine to use
size directive.
(PSEUDO): Don't include SYSCALL_ERROR_HANDLER.
(PSEUDO_END): Include it here instead.
(SYSCALL_ERROR_HANDLER): Remove type directive.
* sysdeps/m68k/bsd-_setjmp.S: Use END, not PSEUDO_END.
* sysdeps/m68k/bsd-setjmp.S: Likewise.
* sysdeps/unix/sysv/linux/m68k/sigreturn.S: Likewise.
* sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise.
(__syscall_error): Can't use ENTRY macro.

Sat Oct 19 12:13:24 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

* sysdeps/unix/sysv/linux/syscalls.list (getresuid, setresuid):
Set caller to EXTRA.

O_SHLOCK.

Tue Oct 15 14:37:40 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

* sysdeps/mach/hurd/fcntlbits.h (O_HURD): Add O_EXLOCK and

53 files changed:
ChangeLog
Makefile
Makerules
elf/dl-minimal.c
features.h
grp/fgetgrent_r.c
nss/nss_files/files-grp.c
nss/nss_files/files-pwd.c
pwd/fgetpwent_r.c
sysdeps/generic/_strerror.c
sysdeps/generic/sysdep.h
sysdeps/i386/__longjmp.S
sysdeps/i386/bsd-_setjmp.S
sysdeps/i386/bsd-setjmp.S
sysdeps/i386/i486/strcat.S
sysdeps/i386/i486/strlen.S
sysdeps/i386/i586/memset.S
sysdeps/i386/i586/strchr.S
sysdeps/i386/i586/strlen.S
sysdeps/i386/memchr.S
sysdeps/i386/memcmp.S
sysdeps/i386/setjmp.S
sysdeps/i386/stpcpy.S
sysdeps/i386/stpncpy.S
sysdeps/i386/strchr.S
sysdeps/i386/strcspn.S
sysdeps/i386/strlen.c
sysdeps/i386/strpbrk.S
sysdeps/i386/strrchr.S
sysdeps/i386/strspn.S
sysdeps/i386/strtok.S
sysdeps/i386/sysdep.h
sysdeps/m68k/bsd-_setjmp.S
sysdeps/m68k/bsd-setjmp.S
sysdeps/mach/_strerror.c
sysdeps/posix/getaddrinfo.c
sysdeps/unix/i386/sysdep.S
sysdeps/unix/sysv/i386/time.S
sysdeps/unix/sysv/linux/i386/clone.S
sysdeps/unix/sysv/linux/i386/mmap.S
sysdeps/unix/sysv/linux/i386/socket.S
sysdeps/unix/sysv/linux/i386/syscall.S
sysdeps/unix/sysv/linux/i386/sysdep.S
sysdeps/unix/sysv/linux/i386/sysdep.h
sysdeps/unix/sysv/linux/m68k/clone.S
sysdeps/unix/sysv/linux/m68k/mmap.S
sysdeps/unix/sysv/linux/m68k/sigreturn.S
sysdeps/unix/sysv/linux/m68k/socket.S
sysdeps/unix/sysv/linux/m68k/syscall.S
sysdeps/unix/sysv/linux/m68k/sysdep.S
sysdeps/unix/sysv/linux/m68k/sysdep.h
sysdeps/unix/sysv/linux/syscalls.list
version.h

index ed1258643bf75a40ce1d8faa6bde43085653fd88..00165e258aa4c9c0e62ed3b5b05a004bb9a5777e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,105 @@
+Tue Oct 22 21:38:21 1996  Ulrich Drepper  <drepper@cygnus.com>
+
+       * version.h: Bump version number to 1.97.
+
+       * features.h: Undo change of Sun Oct 20 22:19:58 1996.
+       Include libc-version.h.
+       * features.h.in: Removed.
+       * Makefile: Change rules to generate libc-version.h instead of
+       features.h.
+
+       * malloc/free.c: Add cast to prevent warning.
+       * malloc/malloc-walk.c: Likewise.
+       * malloc/ralloc.c: Likewise.
+       * malloc/realloc.c: Likewise.
+
+       * grp/fgetgrent_r.c: Accept empty numeric field if name start with +
+       or -.
+       * pwd/fgetpwent_r.c: Likewise.
+       * nss/nss_files/files-grp.c: Don't accept entries with names starting
+       with + or - in lookup functions.
+       * nss/nss_files/files-pwd.c: Likewise.
+
+       * Makerules: Call autolock.sh using $(SHELL).
+
+Mon Oct 21 22:52:16 1996  NIIBE Yutaka  <gniibe@mri.co.jp>
+
+       * elf/dl-minimal.c: Don't define `dgettext' replacement but
+       `dcgettext'.  When optimizing the macros in <libintl.h> define
+       `dgettext' as a macro and so this function will never be called.
+
+Mon Oct 21 15:41:59 1996  Ulrich Drepper  <drepper@cygnus.com>
+
+       * sysdeps/i386/sysdep.h: Define END to use .size when available.
+       (PSEUDO_END): Use END.
+       * sysdeps/unix/sysv/linux/i386/sysdep.h: Define PSEUDO_END to
+       define SYSCALL_ERROR_HANDLER before using END.
+       (SYSCALL_ERROR_HANDLER): Don't use .size directive.
+       * sysdeps/unix/sysv/linux/clone.S: Don't use SYSCALL_ERROR_HANDLER
+       and .size directive but PSEUDO_END.
+       * sysdeps/unix/sysv/linux/mmap.S: Likewise.
+       * sysdeps/unix/sysv/linux/socket.S: Likewise.
+       * sysdeps/unix/sysv/linux/syscall.S: Likewise.
+       * sysdeps/unix/sysv/linux/sysdep.S (__errno_location): Use END.
+       * sysdeps/unix/i386/sysdep.S (__syscall_error): Likewise.
+       * sysdeps/i386/__longjmp.S: Use END instead of PSEUDO_END.
+       * sysdeps/i386/bsd-_setjmp.S: Likewise.
+       * sysdeps/i386/bsd-setjmp.S: Likewise.
+       * sysdeps/i386/memchr.S: Likewise.
+       * sysdeps/i386/memcmp.S: Likewise.
+       * sysdeps/i386/setjmp.S: Likewise.
+       * sysdeps/i386/stpcpy.S: Likewise.
+       * sysdeps/i386/stpncpy.S: Likewise.
+       * sysdeps/i386/strchr.S: Likewise.
+       * sysdeps/i386/strcspn.S: Likewise.
+       * sysdeps/i386/strpbrk.S: Likewise.
+       * sysdeps/i386/strrchr.S: Likewise.
+       * sysdeps/i386/strspn.S: Likewise.
+       * sysdeps/i386/strtok.S: Likewise.
+       * sysdeps/i386/i486/strcat.S: Likewise.
+       * sysdeps/i386/i486/strlen.S: Likewise.
+       * sysdeps/i386/i586/memset.S: Likewise.
+       * sysdeps/i386/i586/strchr.S: Likewise.
+       * sysdeps/i386/i586/strlen.S: Likewise.
+
+       * sysdeps/i386/strlen.c: De-ANSI-fy.
+
+       * sysdeps/generic/_strerror.c: Undo change of Mon Oct 21 01:32:36 1996.
+       Define dgettext if not defined to use dcgettext.
+       * sysdeps/mach/_strerror.c: Likewise.
+
+       * sysdeps/unix/sysv/i386/time.S: Add PSEUDO_END to get
+       __syscall_error defined..
+
+Sat Oct 19 12:27:50 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * sysdeps/unix/sysv/linux/m68k/mmap.S: Fix braino: CALL_MCOUNT is
+       already included in the ENTRY macro.  Remove SYSCALL_ERROR_HANDLER
+       now provided by PSEUDO_END.
+       * sysdeps/unix/sysv/linux/m68k/sigreturn.S: Likewise.
+       * sysdeps/unix/sysv/linux/m68k/socket.S: Likewise.
+       * sysdeps/unix/sysv/linux/m68k/syscall.S: Likewise.
+       * sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise.
+       * sysdeps/unix/sysv/linux/m68k/clone.S: Likewise.  Use JUMPTARGET.
+
+       * sysdeps/generic/sysdep.h (END): Provide default empty
+       definition.
+       * sysdeps/unix/sysv/linux/m68k/sysdep.h (END): Redefine to use
+       size directive.
+       (PSEUDO): Don't include SYSCALL_ERROR_HANDLER.
+       (PSEUDO_END): Include it here instead.
+       (SYSCALL_ERROR_HANDLER): Remove type directive.
+       * sysdeps/m68k/bsd-_setjmp.S: Use END, not PSEUDO_END.
+       * sysdeps/m68k/bsd-setjmp.S: Likewise.
+       * sysdeps/unix/sysv/linux/m68k/sigreturn.S: Likewise.
+       * sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise.
+       (__syscall_error): Can't use ENTRY macro.
+
+Sat Oct 19 12:13:24 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+       * sysdeps/unix/sysv/linux/syscalls.list (getresuid, setresuid):
+       Set caller to EXTRA.
+
 Mon Oct 21 01:32:36 1996  Ulrich Drepper  <drepper@cygnus.com>
 
        * elf/rtld.c (dl_main): Move initialization of `_dl_starting_up'
@@ -258,6 +360,11 @@ Tue Oct 15 02:13:21 1996  Ulrich Drepper  <drepper@cygnus.com>
 
        * crypt/md5-crypt.c (md5_crypt_r): Add cast to prevent warning.
 
+Tue Oct 15 14:37:40 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>
+
+       * sysdeps/mach/hurd/fcntlbits.h (O_HURD): Add O_EXLOCK and
+       O_SHLOCK.
+
 Tue Oct 15 14:37:40 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>
 
        * sysdeps/mach/hurd/fcntlbits.h (O_HURD): Add O_EXLOCK and
index 29591284bd90e8194363c1507af6b52680f4c19a..774cf3bc23fb63e0250fec8e9763408bc06664d4 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -82,9 +82,9 @@ subdirs       := $(filter mach,$(subdirs)) $(filter hurd,$(subdirs)) \
                   $(addprefix install-, no-libc.a bin lib data headers others)
 \f
 headers := errno.h sys/errno.h errnos.h limits.h values.h      \
-          features.h gnu-versions.h libc-lock.h
+          features.h gnu-versions.h libc-lock.h libc-version.h
 aux     = sysdep $(libc-init) version
-before-compile = $(objpfx)version-info.h $(objpfx)features.h
+before-compile = $(objpfx)version-info.h $(objpfx)libc-version.h
 
 echo-headers: subdir_echo-headers
 
@@ -145,28 +145,42 @@ $(objpfx)version-info.h: $(+sysdir_pfx)config.make $(all-Banner-files)
           echo "\"Available extensions:";                      \
           sed -e '/^#/d' -e 's/^[[:space:]]*/  /' $$files;     \
           echo "\"";                                           \
-        fi) > $@-tmp
-       mv -f $@-tmp $@
+        fi) > $@T
+       mv -f $@T $@
+generated += version-info.h
 
 version.c-objects := $(addprefix $(objpfx)version,$(object-suffixes))
 $(version.c-objects): $(objpfx)version-info.h
 \f
-$(objpfx)features.h: features.h.in Makefile $(common-objpfx)soversions.mk
+$(objpfx)libc-version.h: Makefile $(common-objpfx)soversions.mk \
+                        $(common-objpfx)version.mk
        nr="$(libc.so-version)"; \
+       lnr=`echo $(version) | sed 's/[.].*//'`; \
+       lmnr=`echo $(version) | sed 's/[^.]*[.]//'`; \
        if test -n $$nr; then \
-         nr=`echo $$nr | sed 's/^[.]//'`; \
-         tmpfile=$${TMPDIR:-/tmp}/sedtmp.$$$$; \
-         rm -f $$tmpfile; \
-         (echo '/^INTERFACENUMBER/ { i\'; \
-          echo '/* Interface number of the shared library.  */\'; \
-          echo "#define        __GNU_LIBRARY_INTERFACE__       $$nr"; \
-          echo '  s/^INTERFACENUMBER//'; \
-          echo '}') > $$tmpfile; \
-         sed -f $$tmpfile < $< > $@; \
-         rm -f $$tmpfile; \
+         nr=`echo $$nr | sed 's/^[.]\([0-9]*\).*/\1/'`; \
        else \
-         sed -e '/^INTERFACENUMBER/d' < $< > $@; \
-       fi
+         nr="$$lnr"; \
+       fi; \
+       rm -f $@T; \
+       (echo '#ifndef __LIBC_VERSION_H'; \
+        echo '#define __LIBC_VERSION_H 1'; \
+        echo; \
+        if test -n "$(libc.so-version)"; then \
+          echo '/* Show that this is the GNU C Library.  The value is the'; \
+          echo '   interface number of the shared library.  */'; \
+        else \
+          echo '/* Show that this is the GNU C Library.  */'; \
+        fi; \
+        echo "#define  __GNU_LIBRARY__ $$nr"; \
+        echo; \
+        echo '/* Version numbers for GNU libc release.  */'; \
+        echo "#define  __GLIBC__       $$lnr"; \
+        echo "#define  __GLIBC_MINOR__ $$lmnr"; \
+        echo; \
+        echo '#endif   /* libc-version.h */') > $@T
+       mv -f $@T $@
+generated += libc-version.h
 \f
 # Makerules creates a file `stub-$(subdir)' for each subdirectory, which
 # contains `#define __stub_FUNCTION' for each function which is a stub.
index 4269e48ce42d7fe73e4b5b7d48a27bd5171d53ba..aa56406854b1f1e1bf9b07c8b9a3bc01b009ceb9 100644 (file)
--- a/Makerules
+++ b/Makerules
@@ -492,8 +492,8 @@ include $(o-iterator)
 define do-ar
 topdir=`cd $(..).; pwd`; \
 $(patsubst %/,cd %;,$(objpfx)) \
-$$topdir/autolock.sh ${O%-lib}.lck $(AR) cru$(verbose) ${O%-lib} \
-                                        $(patsubst $(objpfx)%,%,$^)
+$(SHELL) $$topdir/autolock.sh ${O%-lib}.lck $(AR) cru$(verbose) ${O%-lib} \
+                                                 $(patsubst $(objpfx)%,%,$^)
 rm -f $@
 touch $@
 endef
@@ -507,7 +507,7 @@ define o-iterator-doit
 $(common-objpfx)$(patsubst %,$(libtype$o),c)($(ar-symtab-name)): \
          $(common-objpfx)$(patsubst %,$(libtype$o),c)(\
            $(patsubst $(objpfx)%,%,$(o-objects))) $(subdirs-stamp-o); \
-       $$(..)./autolock.sh \
+       $(SHELL) $$(..)./autolock.sh \
          $$(common-objpfx)$$(patsubst %,$$(libtype$o),c).lck \
          $$(RANLIB) $$(common-objpfx)$$(patsubst %,$$(libtype$o),c)
 endef
index 61615cd9a95cf3fd34385476111a03a1a936fb5b..dd5fa200dd07adc5b27d0c1387e881f8f52b6518 100644 (file)
@@ -113,12 +113,12 @@ longjmp (jmp_buf env, int val) { __longjmp (env[0].__jmpbuf, val); }
    English-only in the dynamic linker keeps it smaller.  */
 
 char * weak_function
-__dgettext (const char *domainname, const char *msgid)
+__dcgettext (const char *domainname, const char *msgid, int category)
 {
   assert (domainname == _libc_intl_domainname);
   return (char *) msgid;
 }
-weak_alias (__dgettext, dgettext)
+weak_alias (__dcgettext, dcgettext)
 \f
 #ifndef NDEBUG
 
index 83977e9c95936fae282499f5cf9961838bf2c154..abf20250b641bee77085caea35cb84c67623c69d 100644 (file)
@@ -144,14 +144,8 @@ Cambridge, MA 02139, USA.  */
 #endif
 
 
-/* This macro indicates that the installed library is the GNU C Library.
-   Its value must be incremented whenever any existing library interface
-   changes such that callers must be recompiled with the new header files.
-   This value should always coincide with the major version number used for
-   the shared C library corresponding to this set of header files.  */
-
-#undef __GNU_LIBRARY__
-#define        __GNU_LIBRARY__ 6
+/* Include header with information of libc version numbers.  */
+#include <libc-version.h>
 
 
 #if    !defined (__GNUC__) || __GNUC__ < 2
@@ -180,4 +174,4 @@ Cambridge, MA 02139, USA.  */
 #include <stubs.h>
 #endif
 
-#endif /* __features.h  */
+#endif /* features.h  */
index f8b8d97d25507edf72feef81b3d0e022e908d034..d8a8bfb2e1ad698928b7c1cd2e9b9dbe3f39bfdb 100644 (file)
@@ -34,7 +34,10 @@ LINE_PARSER
 (,
  STRING_FIELD (result->gr_name, ISCOLON, 0);
  STRING_FIELD (result->gr_passwd, ISCOLON, 0);
- INT_FIELD (result->gr_gid, ISCOLON, 0, 10,);
+ if (result->gr_name[0] == '+' || result->gr_name[0] == '-')
+   INT_FIELD_MAYBE_NULL (result->gr_gid, ISCOLON, 0, 10, , 0)
+ else
+   INT_FIELD (result->gr_gid, ISCOLON, 0, 10,)
  )
 
 
index 8e047b6475333a3008946bf60ba7baae9c88f4dc..20a723b6509aa1d68e7bc53748d01d5528efda4d 100644 (file)
@@ -32,12 +32,14 @@ struct grent_data {};
 
 DB_LOOKUP (grnam, 1 + strlen (name), (".%s", name),
           {
-            if (! strcmp (name, result->gr_name))
+            if (name[0] != '-' && name[0] != '+'
+                && ! strcmp (name, result->gr_name))
               break;
           }, const char *name)
 
 DB_LOOKUP (grgid, 20, ("=%lu", (unsigned long int) gid),
           {
-            if (result->gr_gid == gid)
+            if (result->gr_gid == gid && result->gr_name[0] != '+'
+                && result->gr_name[0] != '-')
               break;
           }, gid_t gid)
index a778d015d8e1848ea01d333768bb30020f881d42..30008559aeb125667893f58175aa7a94357864cd 100644 (file)
@@ -32,12 +32,14 @@ struct pwent_data {};
 
 DB_LOOKUP (pwnam, 1 + strlen (name), (".%s", name),
           {
-            if (! strcmp (name, result->pw_name))
+            if (name[0] != '+' && name[0] != '-'
+                && ! strcmp (name, result->pw_name))
               break;
           }, const char *name)
 
 DB_LOOKUP (pwuid, 20, ("=%lu", (unsigned long int) uid),
           {
-            if (result->pw_uid == uid)
+            if (result->pw_uid == uid && result->pw_name[0] != '+'
+                && result->pw_name[0] != '-')
               break;
           }, uid_t uid)
index 9b58e610095b9eebb108a06065a468481b028c11..bd380bd48cbf9c44ba57d849dd2d4c444737d72c 100644 (file)
@@ -32,8 +32,16 @@ LINE_PARSER
 (,
  STRING_FIELD (result->pw_name, ISCOLON, 0);
  STRING_FIELD (result->pw_passwd, ISCOLON, 0);
- INT_FIELD (result->pw_uid, ISCOLON, 0, 10,);
- INT_FIELD (result->pw_gid, ISCOLON, 0, 10,);
+ if (result->pw_name[0] == '+' || result->pw_name[0] == '-')
+   {
+     INT_FIELD_MAYBE_NULL (result->pw_uid, ISCOLON, 0, 10, , 0)
+     INT_FIELD_MAYBE_NULL (result->pw_gid, ISCOLON, 0, 10, , 0)
+   }
+ else
+   {
+     INT_FIELD (result->pw_uid, ISCOLON, 0, 10,)
+     INT_FIELD (result->pw_gid, ISCOLON, 0, 10,)
+   }
  STRING_FIELD (result->pw_gecos, ISCOLON, 0);
  STRING_FIELD (result->pw_dir, ISCOLON, 0);
  result->pw_shell = line;
index 45fc8cab59a7069612c4d4d008037bfec186327d..e88d6d67e4928352588269fc514edeb71349b678 100644 (file)
@@ -26,19 +26,22 @@ Cambridge, MA 02139, USA.  */
 #define _sys_nerr sys_nerr
 #endif
 
-/* Set if startup process finished.  */
-extern int _dl_starting_up;
+/* It is critical here that we always use the `dcgettext' function for
+   the message translation.  Since <libintl.h> only defines the macro
+   `dgettext' to use `dcgettext' for optimizing programs this is not
+   always guaranteed.  */
+#ifndef dgettext
+# include <locale.h>           /* We need LC_MESSAGES.  */
+# define dgettext(domainname, msgid) dcgettext (domainname, msgid, LC_MESSAGES)
+#endif
 
 /* Return a string describing the errno code in ERRNUM.  */
 char *
-_strerror_internal (int errnum,
-                   char *buf,
-                   size_t buflen)
+_strerror_internal (int errnum, char *buf, size_t buflen)
 {
   if (errnum < 0 || errnum >= _sys_nerr)
     {
-      static const char unk_orig[] = N_("Unknown error ");
-      const char *unk = _dl_starting_up ? unk_orig : _(unk_orig);
+      const char *unk = _("Unknown error ");
       const size_t unklen = strlen (unk);
       char *p = buf + buflen;
       *--p = '\0';
@@ -46,6 +49,5 @@ _strerror_internal (int errnum,
       return memcpy (p - unklen, unk, unklen);
     }
 
-  return (char *) (_dl_starting_up ? _sys_errlist[errnum]
-                  : _(_sys_errlist[errnum]));
+  return (char *) _(_sys_errlist[errnum]);
 }
index def2d18dc2ba25e32d264ffcfc9f5bd5a83ef38a..6b5cc68a6b3d4c52fdfe816294a3b6506d9e2547 100644 (file)
@@ -35,3 +35,7 @@ Cambridge, MA 02139, USA.  */
 #endif
 
 #endif
+
+/* Mark the end of function named SYM.  This is used on some platforms
+   to generate correct debugging information.  */
+#define END(sym)
index fd0220526abeed614d32541d63d275a55f0f9d24..cb33a89de15961c1309ae0b8233aead861e40338 100644 (file)
@@ -33,4 +33,4 @@ ENTRY (__longjmp)
        /* Jump to saved PC.  */
        movl (JB_PC*4)(%ecx), %ecx
        jmp *%ecx
-PSEUDO_END (__longjmp)
+END (__longjmp)
index b08a74fe531f2bf28460f42c4413fb11e49d9dec..a7ee5dbc1e20630742c774cec8805cd790f71191 100644 (file)
@@ -30,4 +30,4 @@ ENTRY (_setjmp)
        pushl %ecx              /* Push back first argument.  */
        pushl %eax              /* Push back return PC.  */
        jmp JUMPTARGET (C_SYMBOL_NAME (__sigsetjmp))
-PSEUDO_END (_setjmp)
+END (_setjmp)
index 5c8dd673b0771848261caf7169afe5046d2be48b..239a8c41f2f8e803ef72b8fe4ed2b2ea2b91d9a1 100644 (file)
@@ -30,4 +30,4 @@ ENTRY (setjmp)
        pushl %ecx              /* Push back first argument.  */
        pushl %eax              /* Push back return PC.  */
        jmp JUMPTARGET (C_SYMBOL_NAME (__sigsetjmp))
-PSEUDO_END (setjmp)
+END (setjmp)
index e82b1c40b22a28eb959264f518d5771f3bfb21ed..f705f420c4d875d91892c68b57acbee1099a8bf1 100644 (file)
@@ -258,4 +258,4 @@ L8: movl 8(%esp), %eax      /* start address of destination is result */
        popl %edi               /* restore saved register */
 
        ret
-PSEUDO_END (strcat)
+END (strcat)
index 1a7ab7a90e9ca2dbc02f8569e69158f46ca5a546..a92067ab4189fe571bd935598834f15fbd95ebd1 100644 (file)
@@ -130,4 +130,4 @@ L3: testb %cl, %cl          /* is first byte NUL? */
 L2:    subl 4(%esp), %eax      /* compute difference to string start */
 
        ret
-PSEUDO_END (strlen)
+END (strlen)
index 0dabad28481d4766468925218b66970f3acc65d8..1e8a9c211169db20e74fb7549c9e70a58faf00e6 100644 (file)
@@ -99,4 +99,4 @@ L2:   shrl    $2, %ecx        /* convert byte count to longword count */
        popl    %edi
 
        ret
-PSEUDO_END (memset)
+END (memset)
index 8a6691f7df70b14fb356acf6583bc8bbe8149138..1477350480cd97539b3f886b271fca51b5a335d0 100644 (file)
@@ -326,7 +326,7 @@ L3: xorl %eax, %eax         /* set return value = NULL */
        popl %edi
 
        ret
-PSEUDO_END (strchr)
+END (strchr)
 
 #undef index
 weak_alias (strchr, index)
index cce750cb459ac988610f4014c2e0d18aa8ee07ae..ba24981f3d84a8cc409fd87bb331c1c22f83e55b 100644 (file)
@@ -180,4 +180,4 @@ L2: subl 4(%esp), %eax      /* now compute the length as difference
                                   character */
 
        ret
-PSEUDO_END (strlen)
+END (strlen)
index 7d2779b3f2242bbee35eb1a050555bfd9d19cb9c..fcf873ebb881f3317901c2c9f818296fa360c769 100644 (file)
@@ -313,4 +313,4 @@ L9: popl %edi               /* pop saved registers */
        popl %esi
 
        ret
-PSEUDO_END (memchr)
+END (memchr)
index 4bf9b232e1fe096940a8cb204fddaa618b185da1..73714b75fededf5f591b0954a9342704600118ba 100644 (file)
@@ -63,7 +63,7 @@ L1:   popl %esi               /* Restore registers.  */
        movl %edx, %edi
 
        ret
-PSEUDO_END (memcmp)
+END (memcmp)
 
 #undef bcmp
 weak_alias (memcmp, bcmp)
index e877ae387ef6d7cbb93da7ac07e8d3e5160368b8..23e2b74401302acf6b25e0ca7b584b603b963bcc 100644 (file)
@@ -53,4 +53,4 @@ here: popl %ecx
 #else
        jmp __sigjmp_save
 #endif
-PSEUDO_END (__sigsetjmp)
+END (__sigsetjmp)
index 46f64b59f71f5ea07e3387f5858f419934edad24..9df0e33d41191c954054bdf16f07bf5847966d76 100644 (file)
@@ -83,6 +83,6 @@ L4:   incl %eax
 L3:    incl %eax
 L2:
        ret
-PSEUDO_END (__stpcpy)
+END (__stpcpy)
 
 weak_alias (__stpcpy, stpcpy)
index 7590e57b0ba36e568208d73781a61b1d9eaa5ab8..b76f6170e5984d955045444a7d479cf6c70d96a9 100644 (file)
@@ -139,6 +139,6 @@ L3: decl %ecx               /* all bytes written? */
 L9:    popl %esi               /* restore saved register content */
 
        ret
-PSEUDO_END (__stpncpy)
+END (__stpncpy)
 
 weak_alias (__stpncpy, stpncpy)
index 50c3d7bcede00efd4275aa57f05e781e411bdb58..1c91c40090e6af714bb3db379335c323f5e52091 100644 (file)
@@ -274,6 +274,6 @@ L7: testb %cl, %cl          /* is first byte C? */
 L6:    popl %edi               /* restore saved register content */
 
        ret
-PSEUDO_END (strchr)
+END (strchr)
 
 weak_alias (strchr, index)
index 1e802251f61a66d7479d5d5393f3d727f75ed4f9..387d4aea95840f03470f0cbc98b63f3b96e6d5a6 100644 (file)
@@ -174,4 +174,4 @@ L4: subl %edx, %eax         /* we have to return the number of valid
        addl $256, %esp         /* remove stopset */
 
        ret
-PSEUDO_END (strcspn)
+END (strcspn)
index 3c1398b461e567c13d31deb281f7dc921fc92670..6305d364c8aa28d3e9e754a88fa3d395c0651ae5 100644 (file)
@@ -1,6 +1,6 @@
 /* strlen -- determine the length of a string.
    For Intel 80x86, x>=3.
-   Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1992, 1993, 1996 Free Software Foundation, Inc.
    Contributed by Torbjorn Granlund (tege@sics.se).
 
 The GNU C Library is free software; you can redistribute it and/or
@@ -18,11 +18,10 @@ License along with the GNU C Library; see the file COPYING.LIB.  If
 not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 Cambridge, MA 02139, USA.  */
 
-#include <ansidecl.h>
 #include <string.h>
 
 size_t
-DEFUN(strlen, (str), CONST char *str)
+strlen (const char *str)
 {
   int cnt;
 
index 41769b0c69a6fd340134a9f688ca1e96d967687c..5d0dfece4a1321433735769fcdad14f51b617db0 100644 (file)
@@ -175,4 +175,4 @@ L4: addl $256, %esp         /* remove stopset */
        xorl %eax, %eax         /* return NULL */
 
 L7:    ret
-PSEUDO_END (strpbrk)
+END (strpbrk)
index 8cad7e5b5dd60057fe6f1ffd9d843c90939ade1a..f47bf9473066a7b5f05229361aa6e08812adf32b 100644 (file)
@@ -321,6 +321,6 @@ L2: popl %esi               /* restore saved register content */
        popl %edi
 
        ret
-PSEUDO_END (strrchr)
+END (strrchr)
 
 weak_alias (strrchr, rindex)
index fbba811c550a041b7c84ed70b10d8d1760ed9052..508aa7fd840ededb0bce504c680d58fa8aa97a8f 100644 (file)
@@ -174,4 +174,4 @@ L4: subl %edx, %eax         /* we have to return the number of valid
        addl $256, %esp         /* remove stopset */
 
        ret
-PSEUDO_END (strspn)
+END (strspn)
index a510e189554cb52c087eba3e1d66207de1696bf5..19f62cf4e00d2c3f12844484a9ae9575a8519642 100644 (file)
@@ -282,4 +282,4 @@ LreturnNULL:
 # endif
 #endif
        ret
-PSEUDO_END (FUNCTION)
+END (FUNCTION)
index 9d2134242300cef1c20de001479670abfed6951a..a11aa72d22b9ba08946f9740173653af60be0aae 100644 (file)
@@ -52,6 +52,10 @@ Cambridge, MA 02139, USA.  */
   C_LABEL(name)                                                                      \
   CALL_MCOUNT
 
+#undef END
+#define END(name)                                                            \
+  ASM_SIZE_DIRECTIVE(name)
+
 /* If compiled for profiling, call `mcount' at the start of each function.  */
 #ifdef PROF
 /* The mcount code relies on a normal frame pointer being on the stack
@@ -80,7 +84,7 @@ lose: SYSCALL_PIC_SETUP                                                             \
 
 #undef PSEUDO_END
 #define        PSEUDO_END(name)                                                      \
-  ASM_SIZE_DIRECTIVE(name)
+  END (name)
 
 #ifdef PIC
 #define JUMPTARGET(name)       name##@PLT
index 32d25e426adeed41da0966fd46e8f735c752d257..dc1f52c6aaac4ca844ded9c958a522f845ff3715 100644 (file)
@@ -46,4 +46,4 @@ ENTRY (_setjmp)
 #else
        jmp C_SYMBOL_NAME (__sigsetjmp)
 #endif
-PSEUDO_END (_setjmp)
+END (_setjmp)
index a4053bd1bccdf9f9f8bbfdd8cf0ca6509311e42a..7158907cfee6fc787810915fe4c3ffd3465a95da 100644 (file)
@@ -44,4 +44,4 @@ ENTRY (setjmp)
 #else
        jmp C_SYMBOL_NAME (__sigsetjmp)
 #endif
-PSEUDO_END (setjmp)
+END (setjmp)
index 8b32f052e5070968033249a07ba160a31bd3ce01..eae43bde113d267779b11a68a2971a740198f3ea 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1996 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
@@ -22,6 +22,15 @@ Cambridge, MA 02139, USA.  */
 #include <errorlib.h>
 #include "../stdio-common/_itoa.h"
 
+/* It is critical here that we always use the `dcgettext' function for
+   the message translation.  Since <libintl.h> only defines the macro
+   `dgettext' to use `dcgettext' for optimizing programs this is not
+   always guaranteed.  */
+#ifndef dgettext
+# include <locale.h>           /* We need LC_MESSAGES.  */
+# define dgettext(domainname, msgid) dcgettext (domainname, msgid, LC_MESSAGES)
+#endif
+
 /* Return a string describing the errno code in ERRNUM.  */
 char *
 _strerror_internal (int errnum, char *buf, size_t buflen)
index 823335d7616461e11e85e88898e86f34ce22094b..32b050ecf45bf7db3e7ce39551b6e9ba0a2b9cc5 100644 (file)
@@ -50,7 +50,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <netinet6/in6.h>
 #endif /* INET6 */
 #include <netdb.h>
-
+#include <arpa/inet.h>
+#include <string.h>
 
 #define GAIH_OKIFUNSPEC 0x0100
 #define GAIH_EAI        ~(GAIH_OKIFUNSPEC)
@@ -90,7 +91,7 @@ static struct gaih_addrtuple nulladdr;
 struct gaih_typeproto {
   int socktype;
   int protocol;
-  char *name;
+  const char *name;
 };
 
 static struct gaih_typeproto gaih_inet_typeproto[] = {
@@ -121,7 +122,6 @@ static int gaih_inet_serv(char *servicename, struct gaih_typeproto *tp, struct g
 static int gaih_inet(const char *name, const struct gaih_service *service,
                     const struct addrinfo *req, struct addrinfo **pai)
 {
-  struct hostent *h = NULL;
   struct gaih_typeproto *tp = gaih_inet_typeproto;
   struct gaih_servtuple *st = &nullserv;
   struct gaih_addrtuple *at = &nulladdr;
@@ -412,7 +412,8 @@ static struct gaih gaih[] = {
 int getaddrinfo(const char *name, const char *service,
                const struct addrinfo *req, struct addrinfo **pai)
 {
-  int i, j = 0;
+  int i = 0;
+  int j = 0;
   struct addrinfo *p = NULL, **end = &p;
   struct gaih *g = gaih, *pg = NULL;
   struct gaih_service gaih_service, *pservice;
@@ -446,7 +447,7 @@ int getaddrinfo(const char *name, const char *service,
       j++;
       if (!((pg && (pg->gaih == g->gaih)))) {
        pg = g;
-       if (i = g->gaih(name, pservice, req, end)) {
+       if ((i = g->gaih(name, pservice, req, end))) {
          if (!req->ai_family && (i & GAIH_OKIFUNSPEC))
            continue;
          goto gaih_err;
index 7dced7cda5025fa84c281cb04d200529d51aeec1..9bf9feedcc37f7ddbbceaf11783b965b837c4bca 100644 (file)
@@ -68,8 +68,5 @@ notb:
        movl $-1, %eax
        ret
 
-#ifdef __ELF__
 #undef __syscall_error
-.Lfe2:
-       .size   __syscall_error, .Lfe2-__syscall_error
-#endif
+END (__syscall_error)
index f492141c06b6405945678ee5f87d87e78c01d0f4..e3794d6dc2e7fa13668c568b058c17a78f2249a5 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1996 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,3 +24,4 @@ SYSCALL (time, 1)
        je null
        movl %eax, (%edx)       /* Yes; store the time there.  */
 null:  ret
+PSEUDO_END (time)
index d213b8053919bea93f8ae385cabfa6151830e46c..7e02f76dfe759c2f21ca3ee2ba0ac7fc4b746a8f 100644 (file)
@@ -66,9 +66,6 @@ ENTRY(__clone)
        jz      thread_start
 
        ret
-PSEUDO_END (__clone)
-
-       SYSCALL_ERROR_HANDLER
 
 thread_start:
        subl    %ebp,%ebp       /* terminate the stack frame */
@@ -76,4 +73,6 @@ thread_start:
        pushl   %eax
        call    JUMPTARGET (_exit)
 
-weak_alias(__clone, clone)
+PSEUDO_END (__clone)
+
+weak_alias (__clone, clone)
index 30b0f76a43328e67ca51c9bd46f8d427c71b5be6..16029d1110680e1c1aa7c39e6c724ab7f3497db5 100644 (file)
@@ -19,7 +19,6 @@ Cambridge, MA 02139, USA.  */
 #include <sysdep.h>
 
        .text
-       SYSCALL_ERROR_HANDLER
 
 ENTRY (__mmap)
 
@@ -42,6 +41,7 @@ ENTRY (__mmap)
 
        /* Successful; return the syscall's value.  */
        ret
-       .size __mmap,.-__mmap
+
+PSEUDO_END (__mmap)
 
 weak_alias (__mmap, mmap)
index 0cf4bfdf9e9085f57176f5ecfa8ae9c88417dfd1..78e8b03ccee8ad9f5c7cba499482b67727f47608 100644 (file)
@@ -23,8 +23,6 @@ Cambridge, MA 02139, USA.  */
 #define P2(a, b) a##b
 
        .text
-       SYSCALL_ERROR_HANDLER
-
 /* The socket-oriented system calls are handled unusally in Linux.
    They are all gated through the single `socketcall' system call number.
    `socketcall' takes two arguments: the first is the subcode, specifying
@@ -52,11 +50,12 @@ ENTRY (P(__,socket))
        movl %edx, %ebx
 
        /* %eax is < 0 if there was an error.  */
-       testl %eax, %eax
-       jl syscall_error
+       cmpl $-125, %eax
+       jae syscall_error
 
        /* Successful; return the syscall's value.  */
        ret
-       .size P(__,socket),.-P(__,socket)
+
+PSEUDO_END (P(__,socket))
 
 weak_alias (P(__,socket), socket)
index e7839cd1c071f378477d5575b95928c90ea65892..018a86ee398be92a09e5b4e5d864f601a37a2850 100644 (file)
@@ -22,8 +22,8 @@ Cambridge, MA 02139, USA.  */
    more information about the value -125 used below.*/
 
        .text
-       SYSCALL_ERROR_HANDLER   /* Define error handler for PIC.  */
 ENTRY (syscall)
+
        PUSHARGS_5              /* Save register contents.  */
        _DOARGS_5(36)           /* Load arguments.  */
        movl 16(%esp), %eax     /* Load syscall number into %eax.  */
@@ -32,4 +32,5 @@ ENTRY (syscall)
        cmpl $-125, %eax        /* Check %eax for error.  */
        jae syscall_error       /* Jump to error handler if error.  */
        ret                     /* Return to caller.  */
-       .size syscall,.-syscall
+
+PSEUDO_END (syscall)
index 9727f8976f0c9b502a2d5daa79012c3b4e4e63c9..742ba2b1a9ae51630ce48f05a68b599cf6f84ddf 100644 (file)
@@ -67,4 +67,4 @@ ENTRY (__errno_location)
        movl $errno, %eax
 #endif
        ret
-       .size   __errno_location, .-__errno_location
+END (__errno_location)
index b00c976351fe7824e05122e50b83ba718de22df2..5d378fd179be5dc6926888ebe4e8af6bc5c6fea1 100644 (file)
@@ -28,11 +28,7 @@ Cambridge, MA 02139, USA.  */
    of the kernel.  But these symbols do not follow the SYS_* syntax
    so we have to redefine the `SYS_ify' macro here.  */
 #undef SYS_ify
-#ifdef __STDC__
-# define SYS_ify(syscall_name) __NR_##syscall_name
-#else
-# define SYS_ify(syscall_name) __NR_/**/syscall_name
-#endif
+#define SYS_ify(syscall_name)  __NR_##syscall_name
 
 
 #ifdef ASSEMBLER
@@ -51,19 +47,22 @@ Cambridge, MA 02139, USA.  */
 #undef PSEUDO
 #define        PSEUDO(name, syscall_name, args)                                      \
   .text;                                                                     \
-  SYSCALL_ERROR_HANDLER                                                              \
   ENTRY (name)                                                               \
     DO_CALL (args, syscall_name);                                            \
     cmpl $-125, %eax;                                                        \
     jae syscall_error;
 
+#undef PSEUDO_END
+#define        PSEUDO_END(name)                                                      \
+  SYSCALL_ERROR_HANDLER                                                              \
+  END (name)
+
 #ifndef PIC
 #define SYSCALL_ERROR_HANDLER  /* Nothing here; code in sysdep.S is used.  */
 #else
 /* Store (- %eax) into errno through the GOT.  */
 #ifdef _LIBC_REENTRANT
 #define SYSCALL_ERROR_HANDLER                                                \
-  .type syscall_error,@function;                                             \
 syscall_error:                                                               \
   pushl %ebx;                                                                \
   call 0f;                                                                   \
@@ -79,13 +78,11 @@ syscall_error:                                                                    \
   popl %ebx;                                                                 \
   movl %ecx, (%eax);                                                         \
   movl $-1, %eax;                                                            \
-  ret;                                                                       \
-  .size syscall_error,.-syscall-error;
+  ret;
 /* A quick note: it is assumed that the call to `__errno_location' does
    not modify the stack!  */
 #else
 #define SYSCALL_ERROR_HANDLER                                                \
-  .type syscall_error,@function;                                             \
 syscall_error:                                                               \
   call 0f;                                                                   \
 0:popl %ecx;                                                                 \
@@ -95,8 +92,7 @@ syscall_error:                                                                      \
   movl errno@GOT(%ecx), %ecx;                                                \
   movl %edx, (%ecx);                                                         \
   movl $-1, %eax;                                                            \
-  ret;                                                                       \
-  .size syscall_error,.-syscall-error;
+  ret;
 #endif /* _LIBC_REENTRANT */
 #endif /* PIC */
 
@@ -121,7 +117,7 @@ syscall_error:                                                                    \
    (Of course a function with say 3 arguments does not have entries for
    arguments 4 and 5.)
 
-   The following code tries hard to be optimal.  A general assuption
+   The following code tries hard to be optimal.  A general assumption
    (which is true according to the data books I have) is that
 
        2 * xchg        is more expensive than  pushl + movl + popl
@@ -136,7 +132,7 @@ syscall_error:                                                                    \
    (2 * movl is less expensive than pushl + popl).
 
    Second unlike for the other registers we don't save the content of
-   %ecx and %edx when we have than 1 and 2 registers resp.
+   %ecx and %edx when we have more than 1 and 2 registers resp.
 
    The code below might look a bit long but we have to take care for
    the pipelined processors (i586 and up).  Here the `pushl' and `popl'
index 4dcd90e96cb35c856752baa004570e1af6f3146d..4465dd8f68ee9702fa4009fe31174617d4f78cca 100644 (file)
@@ -27,7 +27,6 @@ Cambridge, MA 02139, USA.  */
 
         .text
 ENTRY (__clone)
-       CALL_MCOUNT
 
        /* Sanity check arguments.  */
        movel   #-EINVAL, %d0
@@ -63,17 +62,12 @@ ENTRY (__clone)
 
        rts
 
-       SYSCALL_ERROR_HANDLER
-
 thread_start:
        subl    %fp, %fp        /* terminate the stack frame */
        jsr     (%a0)
        movel   %d0, -(%sp)
-#ifdef PIC
-       bsrl    _exit@PLTPC
-#else
-       jbsr    _exit
-#endif
+       jbsr    JUMPTARGET (_exit)
+
 PSEUDO_END (__clone)
 
 weak_alias (__clone, clone)
index 9bac533d44360994e017b390da31ecd803b0404f..257ff4da28bfc1d62f15441777fac37f4343ed54 100644 (file)
@@ -19,10 +19,7 @@ Cambridge, MA 02139, USA.  */
 #include <sysdep.h>
 
        .text
-       SYSCALL_ERROR_HANDLER
-
 ENTRY (__mmap)
-       CALL_MCOUNT
 
        move.l #SYS_ify (mmap), %d0     /* System call number in %d0.  */
 
index 04f0db553c198cdfdd0262086c4819cd84060555..0971acd20eae974f62b875a8465d0331fac46aeb 100644 (file)
@@ -20,12 +20,10 @@ Cambridge, MA 02139, USA.  */
 
 .text
 ENTRY (__sigreturn)
-       CALL_MCOUNT
-
        addq.l #4, %sp          /* Pop the return PC.  */
        DO_CALL (#SYS_ify (sigreturn), 0)
                                /* Do the system call; it never returns.  */
        /* NOTREACHED */
-PSEUDO_END (__sigreturn)
+END (__sigreturn)
 
 weak_alias (__sigreturn, sigreturn)
index 1294287cceae44dd87f1ac24814ad891f766330a..d0741afeb1386586899efd2c60e9290977b898dc 100644 (file)
@@ -23,8 +23,6 @@ Cambridge, MA 02139, USA.  */
 #define P2(a, b) a##b
 
        .text
-       SYSCALL_ERROR_HANDLER
-
 /* The socket-oriented system calls are handled unusally in Linux.
    They are all gated through the single `socketcall' system call number.
    `socketcall' takes two arguments: the first is the subcode, specifying
@@ -35,7 +33,6 @@ Cambridge, MA 02139, USA.  */
 
 .globl P(__,socket)
 ENTRY (P(__,socket))
-       CALL_MCOUNT
 
        /* Save registers.  */
        move.l %d2, %a0
index 1c7bd6bbd1c93270154222b4de440795099a2cad..b7417aa911f9bda4c57779c6abd6530af16811d2 100644 (file)
@@ -22,10 +22,7 @@ Cambridge, MA 02139, USA.  */
    more information about the value -128 used below.*/
 
        .text
-       SYSCALL_ERROR_HANDLER
 ENTRY (syscall)
-       CALL_MCOUNT
-
        move.l 4(%sp), %d0      /* Load syscall number.  */
        _DOARGS_5 (24)          /* Frob arguments.  */
        trap &0                 /* Do the system call.  */
index 31fa20f55daf1b0b8f5a446524cead2fc37c5bef..848ece58e8e42d5c5dc7031459781afce574faec 100644 (file)
@@ -46,7 +46,10 @@ __errno = errno      /* This name is expected by the MT code.  */
 
 /* The syscall stubs jump here when they detect an error.  */
 
-ENTRY (__syscall_error)
+       .globl  __syscall_error
+       .type   __syscall_error, @function
+       .align  4
+__syscall_error:
        neg.l %d0
        move.l %d0, errno
 #ifdef _LIBC_REENTRANT
@@ -59,15 +62,14 @@ ENTRY (__syscall_error)
           return a pointer.  */
        move.l %d0, %a0
        rts
-PSEUDO_END (__syscall_error)
+END (__syscall_error)
 #endif /* PIC */
 
 ENTRY (__errno_location)
-       CALL_MCOUNT
 #ifdef PIC
        move.l  (%pc, errno@GOTPC), %a0
 #else
        lea     errno, %a0
 #endif
        rts
-PSEUDO_END (__errno_location)
+END (__errno_location)
index 9cddd205523f78fd42da790cb992f4386ddda204..3366caab456f2b91c8f08ecb276bbb11a7fe20a5 100644 (file)
@@ -41,6 +41,9 @@ Cambridge, MA 02139, USA.  */
   C_LABEL(name)                                                                      \
   CALL_MCOUNT
 
+#undef END
+#define END(name) .size name, . - name
+
 /* If compiled for profiling, call `_mcount' at the start of each function.  */
 #ifdef PROF
 /* The mcount code relies on a normal frame pointer being on the stack
@@ -76,7 +79,6 @@ Cambridge, MA 02139, USA.  */
    error values.  */
 #define        PSEUDO(name, syscall_name, args)                                      \
   .text;                                                                     \
-  SYSCALL_ERROR_HANDLER                                                              \
   ENTRY (name)                                                               \
     DO_CALL (&SYS_ify (syscall_name), args);                                 \
     moveq.l &-128, %d1;                                                              \
@@ -84,13 +86,14 @@ Cambridge, MA 02139, USA.  */
     jcc syscall_error
 
 #undef PSEUDO_END
-#define PSEUDO_END(name) .size name, . - name
+#define PSEUDO_END(name)                                                     \
+  SYSCALL_ERROR_HANDLER;                                                     \
+  END (name)
 
 #ifdef PIC
 /* Store (- %d0) into errno through the GOT.  */
 #ifdef _LIBC_REENTRANT
 #define SYSCALL_ERROR_HANDLER                                                \
-    .type syscall_error, @function;                                          \
 syscall_error:                                                               \
     move.l (errno@GOTPC, %pc), %a0;                                          \
     neg.l %d0;                                                               \
@@ -105,7 +108,6 @@ syscall_error:                                                                    \
     rts;
 #else
 #define SYSCALL_ERROR_HANDLER                                                \
-    .type syscall_error, @function;                                          \
 syscall_error:                                                               \
     move.l (errno@GOTPC, %pc), %a0;                                          \
     neg.l %d0;                                                               \
index d6165608a1a89fdd687848b975255e892dbd414f..129951a6dd115ff5bc7ef818e40cd82cc370322d 100644 (file)
@@ -13,7 +13,7 @@ geteuid               -       geteuid         0       __geteuid       geteuid
 getpgid                -       getpgid         1       __getpgid       getpgid
 getpgrp                -       getpgrp         0       getpgrp
 getppid                -       getppid         0       __getppid       getppid
-getresuid      -       getresuid       3       getresuid
+getresuid      EXTRA   getresuid       3       getresuid
 getsid         -       getsid          1       getsid
 init_module    EXTRA   init_module     5       init_module
 ioperm         -       ioperm          3       ioperm
@@ -35,22 +35,22 @@ s_getpriority       getpriority getpriority 2       __syscall_getpriority
 s_ptrace       ptrace  ptrace          4       __syscall_ptrace
 s_reboot       EXTRA   reboot          3       __syscall_reboot
 s_sigsuspend   sigsuspend sigsuspend   3       __syscall_sigsuspend
-sched_setp     -       sched_setparam  2       __sched_setparam        sched_setparam
+s_sysctl       sysctl  _sysctl         1       __syscall__sysctl
 sched_getp     -       sched_getparam  2       __sched_getparam        sched_getparam
-sched_sets     -       sched_setscheduler      3       __sched_setscheduler    sched_setscheduler
 sched_gets     -       sched_getscheduler      1       __sched_getscheduler    sched_getscheduler
-sched_yield    -       sched_yield     0       __sched_yield   sched_yield
 sched_primax   -       sched_get_priority_max  1       __sched_get_priority_max        sched_get_priority_max
 sched_primin   -       sched_get_priority_min  1       __sched_get_priority_min        sched_get_priority_min
 sched_rr_gi    -       sched_rr_get_interval   2       __sched_rr_get_interval sched_rr_get_interval
+sched_setp     -       sched_setparam  2       __sched_setparam        sched_setparam
+sched_sets     -       sched_setscheduler      3       __sched_setscheduler    sched_setscheduler
+sched_yield    -       sched_yield     0       __sched_yield   sched_yield
 select         -       _newselect      5       __select        select
 setfsgid       EXTRA   setfsgid        1       setfsgid
 setfsuid       EXTRA   setfsuid        1       setfsuid
 setpgid                -       setpgid         2       __setpgid       setpgid
-setresuid      -       setresuid       3       setresuid
+setresuid      EXTRA   setresuid       3       setresuid
 sigpending     -       sigpending      1       sigpending
 sigprocmask    -       sigprocmask     3       __sigprocmask   sigprocmask
-s_sysctl       sysctl  _sysctl         1       __syscall__sysctl
 sysinfo                EXTRA   sysinfo         1       sysinfo
 swapon         -       swapon          2       swapon
 umount         EXTRA   umount          1       __umount        umount
index f47a199715d1fbec49d86f8ded0860ed4573be1c..9008db2fe8af07aa65577e81d7097c493ce60354 100644 (file)
--- a/version.h
+++ b/version.h
@@ -1,4 +1,4 @@
 /* This file just defines the current version number of libc.  */
 
 #define RELEASE "alpha"
-#define VERSION "1.96"
+#define VERSION "1.97"