Browse Source

update from main archvie 961022

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
cvs/thomas-posix1996 cvs/libc-961023
Ulrich Drepper 30 years ago
parent
commit
6ed0492f8e
  1. 107
      ChangeLog
  2. 48
      Makefile
  3. 6
      Makerules
  4. 4
      elf/dl-minimal.c
  5. 12
      features.h
  6. 5
      grp/fgetgrent_r.c
  7. 6
      nss/nss_files/files-grp.c
  8. 6
      nss/nss_files/files-pwd.c
  9. 12
      pwd/fgetpwent_r.c
  10. 20
      sysdeps/generic/_strerror.c
  11. 4
      sysdeps/generic/sysdep.h
  12. 2
      sysdeps/i386/__longjmp.S
  13. 2
      sysdeps/i386/bsd-_setjmp.S
  14. 2
      sysdeps/i386/bsd-setjmp.S
  15. 2
      sysdeps/i386/i486/strcat.S
  16. 2
      sysdeps/i386/i486/strlen.S
  17. 2
      sysdeps/i386/i586/memset.S
  18. 2
      sysdeps/i386/i586/strchr.S
  19. 2
      sysdeps/i386/i586/strlen.S
  20. 2
      sysdeps/i386/memchr.S
  21. 2
      sysdeps/i386/memcmp.S
  22. 2
      sysdeps/i386/setjmp.S
  23. 2
      sysdeps/i386/stpcpy.S
  24. 2
      sysdeps/i386/stpncpy.S
  25. 2
      sysdeps/i386/strchr.S
  26. 2
      sysdeps/i386/strcspn.S
  27. 5
      sysdeps/i386/strlen.c
  28. 2
      sysdeps/i386/strpbrk.S
  29. 2
      sysdeps/i386/strrchr.S
  30. 2
      sysdeps/i386/strspn.S
  31. 2
      sysdeps/i386/strtok.S
  32. 6
      sysdeps/i386/sysdep.h
  33. 2
      sysdeps/m68k/bsd-_setjmp.S
  34. 2
      sysdeps/m68k/bsd-setjmp.S
  35. 11
      sysdeps/mach/_strerror.c
  36. 11
      sysdeps/posix/getaddrinfo.c
  37. 5
      sysdeps/unix/i386/sysdep.S
  38. 3
      sysdeps/unix/sysv/i386/time.S
  39. 7
      sysdeps/unix/sysv/linux/i386/clone.S
  40. 4
      sysdeps/unix/sysv/linux/i386/mmap.S
  41. 9
      sysdeps/unix/sysv/linux/i386/socket.S
  42. 5
      sysdeps/unix/sysv/linux/i386/syscall.S
  43. 2
      sysdeps/unix/sysv/linux/i386/sysdep.S
  44. 24
      sysdeps/unix/sysv/linux/i386/sysdep.h
  45. 10
      sysdeps/unix/sysv/linux/m68k/clone.S
  46. 3
      sysdeps/unix/sysv/linux/m68k/mmap.S
  47. 4
      sysdeps/unix/sysv/linux/m68k/sigreturn.S
  48. 3
      sysdeps/unix/sysv/linux/m68k/socket.S
  49. 3
      sysdeps/unix/sysv/linux/m68k/syscall.S
  50. 10
      sysdeps/unix/sysv/linux/m68k/sysdep.S
  51. 10
      sysdeps/unix/sysv/linux/m68k/sysdep.h
  52. 12
      sysdeps/unix/sysv/linux/syscalls.list
  53. 2
      version.h

107
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> Mon Oct 21 01:32:36 1996 Ulrich Drepper <drepper@cygnus.com>
* elf/rtld.c (dl_main): Move initialization of `_dl_starting_up' * 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. * 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> 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 * sysdeps/mach/hurd/fcntlbits.h (O_HURD): Add O_EXLOCK and

48
Makefile

@ -82,9 +82,9 @@ subdirs := $(filter mach,$(subdirs)) $(filter hurd,$(subdirs)) \
$(addprefix install-, no-libc.a bin lib data headers others) $(addprefix install-, no-libc.a bin lib data headers others)
headers := errno.h sys/errno.h errnos.h limits.h values.h \ 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 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 echo-headers: subdir_echo-headers
@ -145,28 +145,42 @@ $(objpfx)version-info.h: $(+sysdir_pfx)config.make $(all-Banner-files)
echo "\"Available extensions:"; \ echo "\"Available extensions:"; \
sed -e '/^#/d' -e 's/^[[:space:]]*/ /' $$files; \ sed -e '/^#/d' -e 's/^[[:space:]]*/ /' $$files; \
echo "\""; \ echo "\""; \
fi) > $@-tmp fi) > $@T
mv -f $@-tmp $@ mv -f $@T $@
generated += version-info.h
version.c-objects := $(addprefix $(objpfx)version,$(object-suffixes)) version.c-objects := $(addprefix $(objpfx)version,$(object-suffixes))
$(version.c-objects): $(objpfx)version-info.h $(version.c-objects): $(objpfx)version-info.h
$(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)"; \ nr="$(libc.so-version)"; \
lnr=`echo $(version) | sed 's/[.].*//'`; \
lmnr=`echo $(version) | sed 's/[^.]*[.]//'`; \
if test -n $$nr; then \ if test -n $$nr; then \
nr=`echo $$nr | sed 's/^[.]//'`; \ nr=`echo $$nr | sed 's/^[.]\([0-9]*\).*/\1/'`; \
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; \
else \ else \
sed -e '/^INTERFACENUMBER/d' < $< > $@; \ nr="$$lnr"; \
fi 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
# Makerules creates a file `stub-$(subdir)' for each subdirectory, which # Makerules creates a file `stub-$(subdir)' for each subdirectory, which
# contains `#define __stub_FUNCTION' for each function which is a stub. # contains `#define __stub_FUNCTION' for each function which is a stub.

6
Makerules

@ -492,8 +492,8 @@ include $(o-iterator)
define do-ar define do-ar
topdir=`cd $(..).; pwd`; \ topdir=`cd $(..).; pwd`; \
$(patsubst %/,cd %;,$(objpfx)) \ $(patsubst %/,cd %;,$(objpfx)) \
$$topdir/autolock.sh ${O%-lib}.lck $(AR) cru$(verbose) ${O%-lib} \ $(SHELL) $$topdir/autolock.sh ${O%-lib}.lck $(AR) cru$(verbose) ${O%-lib} \
$(patsubst $(objpfx)%,%,$^) $(patsubst $(objpfx)%,%,$^)
rm -f $@ rm -f $@
touch $@ touch $@
endef endef
@ -507,7 +507,7 @@ define o-iterator-doit
$(common-objpfx)$(patsubst %,$(libtype$o),c)($(ar-symtab-name)): \ $(common-objpfx)$(patsubst %,$(libtype$o),c)($(ar-symtab-name)): \
$(common-objpfx)$(patsubst %,$(libtype$o),c)(\ $(common-objpfx)$(patsubst %,$(libtype$o),c)(\
$(patsubst $(objpfx)%,%,$(o-objects))) $(subdirs-stamp-o); \ $(patsubst $(objpfx)%,%,$(o-objects))) $(subdirs-stamp-o); \
$$(..)./autolock.sh \ $(SHELL) $$(..)./autolock.sh \
$$(common-objpfx)$$(patsubst %,$$(libtype$o),c).lck \ $$(common-objpfx)$$(patsubst %,$$(libtype$o),c).lck \
$$(RANLIB) $$(common-objpfx)$$(patsubst %,$$(libtype$o),c) $$(RANLIB) $$(common-objpfx)$$(patsubst %,$$(libtype$o),c)
endef endef

4
elf/dl-minimal.c

@ -113,12 +113,12 @@ longjmp (jmp_buf env, int val) { __longjmp (env[0].__jmpbuf, val); }
English-only in the dynamic linker keeps it smaller. */ English-only in the dynamic linker keeps it smaller. */
char * weak_function char * weak_function
__dgettext (const char *domainname, const char *msgid) __dcgettext (const char *domainname, const char *msgid, int category)
{ {
assert (domainname == _libc_intl_domainname); assert (domainname == _libc_intl_domainname);
return (char *) msgid; return (char *) msgid;
} }
weak_alias (__dgettext, dgettext) weak_alias (__dcgettext, dcgettext)
#ifndef NDEBUG #ifndef NDEBUG

12
features.h

@ -144,14 +144,8 @@ Cambridge, MA 02139, USA. */
#endif #endif
/* This macro indicates that the installed library is the GNU C Library. /* Include header with information of libc version numbers. */
Its value must be incremented whenever any existing library interface #include <libc-version.h>
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
#if !defined (__GNUC__) || __GNUC__ < 2 #if !defined (__GNUC__) || __GNUC__ < 2
@ -180,4 +174,4 @@ Cambridge, MA 02139, USA. */
#include <stubs.h> #include <stubs.h>
#endif #endif
#endif /* __features.h */ #endif /* features.h */

5
grp/fgetgrent_r.c

@ -34,7 +34,10 @@ LINE_PARSER
(, (,
STRING_FIELD (result->gr_name, ISCOLON, 0); STRING_FIELD (result->gr_name, ISCOLON, 0);
STRING_FIELD (result->gr_passwd, 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,)
) )

6
nss/nss_files/files-grp.c

@ -32,12 +32,14 @@ struct grent_data {};
DB_LOOKUP (grnam, 1 + strlen (name), (".%s", name), 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; break;
}, const char *name) }, const char *name)
DB_LOOKUP (grgid, 20, ("=%lu", (unsigned long int) gid), 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; break;
}, gid_t gid) }, gid_t gid)

6
nss/nss_files/files-pwd.c

@ -32,12 +32,14 @@ struct pwent_data {};
DB_LOOKUP (pwnam, 1 + strlen (name), (".%s", name), 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; break;
}, const char *name) }, const char *name)
DB_LOOKUP (pwuid, 20, ("=%lu", (unsigned long int) uid), 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; break;
}, uid_t uid) }, uid_t uid)

12
pwd/fgetpwent_r.c

@ -32,8 +32,16 @@ LINE_PARSER
(, (,
STRING_FIELD (result->pw_name, ISCOLON, 0); STRING_FIELD (result->pw_name, ISCOLON, 0);
STRING_FIELD (result->pw_passwd, ISCOLON, 0); STRING_FIELD (result->pw_passwd, ISCOLON, 0);
INT_FIELD (result->pw_uid, ISCOLON, 0, 10,); if (result->pw_name[0] == '+' || result->pw_name[0] == '-')
INT_FIELD (result->pw_gid, ISCOLON, 0, 10,); {
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_gecos, ISCOLON, 0);
STRING_FIELD (result->pw_dir, ISCOLON, 0); STRING_FIELD (result->pw_dir, ISCOLON, 0);
result->pw_shell = line; result->pw_shell = line;

20
sysdeps/generic/_strerror.c

@ -26,19 +26,22 @@ Cambridge, MA 02139, USA. */
#define _sys_nerr sys_nerr #define _sys_nerr sys_nerr
#endif #endif
/* Set if startup process finished. */ /* It is critical here that we always use the `dcgettext' function for
extern int _dl_starting_up; 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. */ /* Return a string describing the errno code in ERRNUM. */
char * char *
_strerror_internal (int errnum, _strerror_internal (int errnum, char *buf, size_t buflen)
char *buf,
size_t buflen)
{ {
if (errnum < 0 || errnum >= _sys_nerr) if (errnum < 0 || errnum >= _sys_nerr)
{ {
static const char unk_orig[] = N_("Unknown error "); const char *unk = _("Unknown error ");
const char *unk = _dl_starting_up ? unk_orig : _(unk_orig);
const size_t unklen = strlen (unk); const size_t unklen = strlen (unk);
char *p = buf + buflen; char *p = buf + buflen;
*--p = '\0'; *--p = '\0';
@ -46,6 +49,5 @@ _strerror_internal (int errnum,
return memcpy (p - unklen, unk, unklen); return memcpy (p - unklen, unk, unklen);
} }
return (char *) (_dl_starting_up ? _sys_errlist[errnum] return (char *) _(_sys_errlist[errnum]);
: _(_sys_errlist[errnum]));
} }

4
sysdeps/generic/sysdep.h

@ -35,3 +35,7 @@ Cambridge, MA 02139, USA. */
#endif #endif
#endif #endif
/* Mark the end of function named SYM. This is used on some platforms
to generate correct debugging information. */
#define END(sym)

2
sysdeps/i386/__longjmp.S

@ -33,4 +33,4 @@ ENTRY (__longjmp)
/* Jump to saved PC. */ /* Jump to saved PC. */
movl (JB_PC*4)(%ecx), %ecx movl (JB_PC*4)(%ecx), %ecx
jmp *%ecx jmp *%ecx
PSEUDO_END (__longjmp) END (__longjmp)

2
sysdeps/i386/bsd-_setjmp.S

@ -30,4 +30,4 @@ ENTRY (_setjmp)
pushl %ecx /* Push back first argument. */ pushl %ecx /* Push back first argument. */
pushl %eax /* Push back return PC. */ pushl %eax /* Push back return PC. */
jmp JUMPTARGET (C_SYMBOL_NAME (__sigsetjmp)) jmp JUMPTARGET (C_SYMBOL_NAME (__sigsetjmp))
PSEUDO_END (_setjmp) END (_setjmp)

2
sysdeps/i386/bsd-setjmp.S

@ -30,4 +30,4 @@ ENTRY (setjmp)
pushl %ecx /* Push back first argument. */ pushl %ecx /* Push back first argument. */
pushl %eax /* Push back return PC. */ pushl %eax /* Push back return PC. */
jmp JUMPTARGET (C_SYMBOL_NAME (__sigsetjmp)) jmp JUMPTARGET (C_SYMBOL_NAME (__sigsetjmp))
PSEUDO_END (setjmp) END (setjmp)

2
sysdeps/i386/i486/strcat.S

@ -258,4 +258,4 @@ L8: movl 8(%esp), %eax /* start address of destination is result */
popl %edi /* restore saved register */ popl %edi /* restore saved register */
ret ret
PSEUDO_END (strcat) END (strcat)

2
sysdeps/i386/i486/strlen.S

@ -130,4 +130,4 @@ L3: testb %cl, %cl /* is first byte NUL? */
L2: subl 4(%esp), %eax /* compute difference to string start */ L2: subl 4(%esp), %eax /* compute difference to string start */
ret ret
PSEUDO_END (strlen) END (strlen)

2
sysdeps/i386/i586/memset.S

@ -99,4 +99,4 @@ L2: shrl $2, %ecx /* convert byte count to longword count */
popl %edi popl %edi
ret ret
PSEUDO_END (memset) END (memset)

2
sysdeps/i386/i586/strchr.S

@ -326,7 +326,7 @@ L3: xorl %eax, %eax /* set return value = NULL */
popl %edi popl %edi
ret ret
PSEUDO_END (strchr) END (strchr)
#undef index #undef index
weak_alias (strchr, index) weak_alias (strchr, index)

2
sysdeps/i386/i586/strlen.S

@ -180,4 +180,4 @@ L2: subl 4(%esp), %eax /* now compute the length as difference
character */ character */
ret ret
PSEUDO_END (strlen) END (strlen)

2
sysdeps/i386/memchr.S

@ -313,4 +313,4 @@ L9: popl %edi /* pop saved registers */
popl %esi popl %esi
ret ret
PSEUDO_END (memchr) END (memchr)

2
sysdeps/i386/memcmp.S

@ -63,7 +63,7 @@ L1: popl %esi /* Restore registers. */
movl %edx, %edi movl %edx, %edi
ret ret
PSEUDO_END (memcmp) END (memcmp)
#undef bcmp #undef bcmp
weak_alias (memcmp, bcmp) weak_alias (memcmp, bcmp)

2
sysdeps/i386/setjmp.S

@ -53,4 +53,4 @@ here: popl %ecx
#else #else
jmp __sigjmp_save jmp __sigjmp_save
#endif #endif
PSEUDO_END (__sigsetjmp) END (__sigsetjmp)

2
sysdeps/i386/stpcpy.S

@ -83,6 +83,6 @@ L4: incl %eax
L3: incl %eax L3: incl %eax
L2: L2:
ret ret
PSEUDO_END (__stpcpy) END (__stpcpy)
weak_alias (__stpcpy, stpcpy) weak_alias (__stpcpy, stpcpy)

2
sysdeps/i386/stpncpy.S

@ -139,6 +139,6 @@ L3: decl %ecx /* all bytes written? */
L9: popl %esi /* restore saved register content */ L9: popl %esi /* restore saved register content */
ret ret
PSEUDO_END (__stpncpy) END (__stpncpy)
weak_alias (__stpncpy, stpncpy) weak_alias (__stpncpy, stpncpy)

2
sysdeps/i386/strchr.S

@ -274,6 +274,6 @@ L7: testb %cl, %cl /* is first byte C? */
L6: popl %edi /* restore saved register content */ L6: popl %edi /* restore saved register content */
ret ret
PSEUDO_END (strchr) END (strchr)
weak_alias (strchr, index) weak_alias (strchr, index)

2
sysdeps/i386/strcspn.S

@ -174,4 +174,4 @@ L4: subl %edx, %eax /* we have to return the number of valid
addl $256, %esp /* remove stopset */ addl $256, %esp /* remove stopset */
ret ret
PSEUDO_END (strcspn) END (strcspn)

5
sysdeps/i386/strlen.c

@ -1,6 +1,6 @@
/* strlen -- determine the length of a string. /* strlen -- determine the length of a string.
For Intel 80x86, x>=3. 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). Contributed by Torbjorn Granlund (tege@sics.se).
The GNU C Library is free software; you can redistribute it and/or 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, not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */ Cambridge, MA 02139, USA. */
#include <ansidecl.h>
#include <string.h> #include <string.h>
size_t size_t
DEFUN(strlen, (str), CONST char *str) strlen (const char *str)
{ {
int cnt; int cnt;

2
sysdeps/i386/strpbrk.S

@ -175,4 +175,4 @@ L4: addl $256, %esp /* remove stopset */
xorl %eax, %eax /* return NULL */ xorl %eax, %eax /* return NULL */
L7: ret L7: ret
PSEUDO_END (strpbrk) END (strpbrk)

2
sysdeps/i386/strrchr.S

@ -321,6 +321,6 @@ L2: popl %esi /* restore saved register content */
popl %edi popl %edi
ret ret
PSEUDO_END (strrchr) END (strrchr)
weak_alias (strrchr, rindex) weak_alias (strrchr, rindex)

2
sysdeps/i386/strspn.S

@ -174,4 +174,4 @@ L4: subl %edx, %eax /* we have to return the number of valid
addl $256, %esp /* remove stopset */ addl $256, %esp /* remove stopset */
ret ret
PSEUDO_END (strspn) END (strspn)

2
sysdeps/i386/strtok.S

@ -282,4 +282,4 @@ LreturnNULL:
# endif # endif
#endif #endif
ret ret
PSEUDO_END (FUNCTION) END (FUNCTION)

6
sysdeps/i386/sysdep.h

@ -52,6 +52,10 @@ Cambridge, MA 02139, USA. */
C_LABEL(name) \ C_LABEL(name) \
CALL_MCOUNT CALL_MCOUNT
#undef END
#define END(name) \
ASM_SIZE_DIRECTIVE(name)
/* If compiled for profiling, call `mcount' at the start of each function. */ /* If compiled for profiling, call `mcount' at the start of each function. */
#ifdef PROF #ifdef PROF
/* The mcount code relies on a normal frame pointer being on the stack /* The mcount code relies on a normal frame pointer being on the stack
@ -80,7 +84,7 @@ lose: SYSCALL_PIC_SETUP \
#undef PSEUDO_END #undef PSEUDO_END
#define PSEUDO_END(name) \ #define PSEUDO_END(name) \
ASM_SIZE_DIRECTIVE(name) END (name)
#ifdef PIC #ifdef PIC
#define JUMPTARGET(name) name##@PLT #define JUMPTARGET(name) name##@PLT

2
sysdeps/m68k/bsd-_setjmp.S

@ -46,4 +46,4 @@ ENTRY (_setjmp)
#else #else
jmp C_SYMBOL_NAME (__sigsetjmp) jmp C_SYMBOL_NAME (__sigsetjmp)
#endif #endif
PSEUDO_END (_setjmp) END (_setjmp)

2
sysdeps/m68k/bsd-setjmp.S

@ -44,4 +44,4 @@ ENTRY (setjmp)
#else #else
jmp C_SYMBOL_NAME (__sigsetjmp) jmp C_SYMBOL_NAME (__sigsetjmp)
#endif #endif
PSEUDO_END (setjmp) END (setjmp)

11
sysdeps/mach/_strerror.c

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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 <errorlib.h>
#include "../stdio-common/_itoa.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. */ /* Return a string describing the errno code in ERRNUM. */
char * char *
_strerror_internal (int errnum, char *buf, size_t buflen) _strerror_internal (int errnum, char *buf, size_t buflen)

11
sysdeps/posix/getaddrinfo.c

@ -50,7 +50,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <netinet6/in6.h> #include <netinet6/in6.h>
#endif /* INET6 */ #endif /* INET6 */
#include <netdb.h> #include <netdb.h>
#include <arpa/inet.h>
#include <string.h>
#define GAIH_OKIFUNSPEC 0x0100 #define GAIH_OKIFUNSPEC 0x0100
#define GAIH_EAI ~(GAIH_OKIFUNSPEC) #define GAIH_EAI ~(GAIH_OKIFUNSPEC)
@ -90,7 +91,7 @@ static struct gaih_addrtuple nulladdr;
struct gaih_typeproto { struct gaih_typeproto {
int socktype; int socktype;
int protocol; int protocol;
char *name; const char *name;
}; };
static struct gaih_typeproto gaih_inet_typeproto[] = { 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, static int gaih_inet(const char *name, const struct gaih_service *service,
const struct addrinfo *req, struct addrinfo **pai) const struct addrinfo *req, struct addrinfo **pai)
{ {
struct hostent *h = NULL;
struct gaih_typeproto *tp = gaih_inet_typeproto; struct gaih_typeproto *tp = gaih_inet_typeproto;
struct gaih_servtuple *st = &nullserv; struct gaih_servtuple *st = &nullserv;
struct gaih_addrtuple *at = &nulladdr; struct gaih_addrtuple *at = &nulladdr;
@ -412,7 +412,8 @@ static struct gaih gaih[] = {
int getaddrinfo(const char *name, const char *service, int getaddrinfo(const char *name, const char *service,
const struct addrinfo *req, struct addrinfo **pai) const struct addrinfo *req, struct addrinfo **pai)
{ {
int i, j = 0; int i = 0;
int j = 0;
struct addrinfo *p = NULL, **end = &p; struct addrinfo *p = NULL, **end = &p;
struct gaih *g = gaih, *pg = NULL; struct gaih *g = gaih, *pg = NULL;
struct gaih_service gaih_service, *pservice; struct gaih_service gaih_service, *pservice;
@ -446,7 +447,7 @@ int getaddrinfo(const char *name, const char *service,
j++; j++;
if (!((pg && (pg->gaih == g->gaih)))) { if (!((pg && (pg->gaih == g->gaih)))) {
pg = g; 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)) if (!req->ai_family && (i & GAIH_OKIFUNSPEC))
continue; continue;
goto gaih_err; goto gaih_err;

5
sysdeps/unix/i386/sysdep.S

@ -68,8 +68,5 @@ notb:
movl $-1, %eax movl $-1, %eax
ret ret
#ifdef __ELF__
#undef __syscall_error #undef __syscall_error
.Lfe2: END (__syscall_error)
.size __syscall_error, .Lfe2-__syscall_error
#endif

3
sysdeps/unix/sysv/i386/time.S

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -24,3 +24,4 @@ SYSCALL (time, 1)
je null je null
movl %eax, (%edx) /* Yes; store the time there. */ movl %eax, (%edx) /* Yes; store the time there. */
null: ret null: ret
PSEUDO_END (time)

7
sysdeps/unix/sysv/linux/i386/clone.S

@ -66,9 +66,6 @@ ENTRY(__clone)
jz thread_start jz thread_start
ret ret
PSEUDO_END (__clone)
SYSCALL_ERROR_HANDLER
thread_start: thread_start:
subl %ebp,%ebp /* terminate the stack frame */ subl %ebp,%ebp /* terminate the stack frame */
@ -76,4 +73,6 @@ thread_start:
pushl %eax pushl %eax
call JUMPTARGET (_exit) call JUMPTARGET (_exit)
weak_alias(__clone, clone) PSEUDO_END (__clone)
weak_alias (__clone, clone)

4
sysdeps/unix/sysv/linux/i386/mmap.S

@ -19,7 +19,6 @@ Cambridge, MA 02139, USA. */
#include <sysdep.h> #include <sysdep.h>
.text .text
SYSCALL_ERROR_HANDLER
ENTRY (__mmap) ENTRY (__mmap)
@ -42,6 +41,7 @@ ENTRY (__mmap)
/* Successful; return the syscall's value. */ /* Successful; return the syscall's value. */
ret ret
.size __mmap,.-__mmap
PSEUDO_END (__mmap)
weak_alias (__mmap, mmap) weak_alias (__mmap, mmap)

9
sysdeps/unix/sysv/linux/i386/socket.S

@ -23,8 +23,6 @@ Cambridge, MA 02139, USA. */
#define P2(a, b) a##b #define P2(a, b) a##b
.text .text
SYSCALL_ERROR_HANDLER
/* The socket-oriented system calls are handled unusally in Linux. /* The socket-oriented system calls are handled unusally in Linux.
They are all gated through the single `socketcall' system call number. They are all gated through the single `socketcall' system call number.
`socketcall' takes two arguments: the first is the subcode, specifying `socketcall' takes two arguments: the first is the subcode, specifying
@ -52,11 +50,12 @@ ENTRY (P(__,socket))
movl %edx, %ebx movl %edx, %ebx
/* %eax is < 0 if there was an error. */ /* %eax is < 0 if there was an error. */
testl %eax, %eax cmpl $-125, %eax
jl syscall_error jae syscall_error
/* Successful; return the syscall's value. */ /* Successful; return the syscall's value. */
ret ret
.size P(__,socket),.-P(__,socket)
PSEUDO_END (P(__,socket))
weak_alias (P(__,socket), socket) weak_alias (P(__,socket), socket)

5
sysdeps/unix/sysv/linux/i386/syscall.S

@ -22,8 +22,8 @@ Cambridge, MA 02139, USA. */
more information about the value -125 used below.*/ more information about the value -125 used below.*/
.text .text
SYSCALL_ERROR_HANDLER /* Define error handler for PIC. */
ENTRY (syscall) ENTRY (syscall)
PUSHARGS_5 /* Save register contents. */ PUSHARGS_5 /* Save register contents. */
_DOARGS_5(36) /* Load arguments. */ _DOARGS_5(36) /* Load arguments. */
movl 16(%esp), %eax /* Load syscall number into %eax. */ movl 16(%esp), %eax /* Load syscall number into %eax. */
@ -32,4 +32,5 @@ ENTRY (syscall)
cmpl $-125, %eax /* Check %eax for error. */ cmpl $-125, %eax /* Check %eax for error. */
jae syscall_error /* Jump to error handler if error. */ jae syscall_error /* Jump to error handler if error. */
ret /* Return to caller. */ ret /* Return to caller. */
.size syscall,.-syscall
PSEUDO_END (syscall)

2
sysdeps/unix/sysv/linux/i386/sysdep.S

@ -67,4 +67,4 @@ ENTRY (__errno_location)
movl $errno, %eax movl $errno, %eax
#endif #endif
ret ret
.size __errno_location, .-__errno_location END (__errno_location)

24
sysdeps/unix/sysv/linux/i386/sysdep.h

@ -28,11 +28,7 @@ Cambridge, MA 02139, USA. */
of the kernel. But these symbols do not follow the SYS_* syntax of the kernel. But these symbols do not follow the SYS_* syntax
so we have to redefine the `SYS_ify' macro here. */ so we have to redefine the `SYS_ify' macro here. */
#undef SYS_ify #undef SYS_ify
#ifdef __STDC__ #define SYS_ify(syscall_name) __NR_##syscall_name
# define SYS_ify(syscall_name) __NR_##syscall_name
#else
# define SYS_ify(syscall_name) __NR_/**/syscall_name
#endif
#ifdef ASSEMBLER #ifdef ASSEMBLER
@ -51,19 +47,22 @@ Cambridge, MA 02139, USA. */
#undef PSEUDO #undef PSEUDO
#define PSEUDO(name, syscall_name, args) \ #define PSEUDO(name, syscall_name, args) \
.text; \ .text; \
SYSCALL_ERROR_HANDLER \
ENTRY (name) \ ENTRY (name) \
DO_CALL (args, syscall_name); \ DO_CALL (args, syscall_name); \
cmpl $-125, %eax; \ cmpl $-125, %eax; \
jae syscall_error; jae syscall_error;
#undef PSEUDO_END
#define PSEUDO_END(name) \
SYSCALL_ERROR_HANDLER \
END (name)
#ifndef PIC #ifndef PIC
#define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */ #define SYSCALL_ERROR_HANDLER /* Nothing here; code in sysdep.S is used. */
#else #else
/* Store (- %eax) into errno through the GOT. */ /* Store (- %eax) into errno through the GOT. */
#ifdef _LIBC_REENTRANT #ifdef _LIBC_REENTRANT
#define SYSCALL_ERROR_HANDLER \ #define SYSCALL_ERROR_HANDLER \
.type syscall_error,@function; \
syscall_error: \ syscall_error: \
pushl %ebx; \ pushl %ebx; \
call 0f; \ call 0f; \
@ -79,13 +78,11 @@ syscall_error: \
popl %ebx; \ popl %ebx; \
movl %ecx, (%eax); \ movl %ecx, (%eax); \
movl $-1, %eax; \ movl $-1, %eax; \
ret; \ ret;
.size syscall_error,.-syscall-error;
/* A quick note: it is assumed that the call to `__errno_location' does /* A quick note: it is assumed that the call to `__errno_location' does
not modify the stack! */ not modify the stack! */
#else #else
#define SYSCALL_ERROR_HANDLER \ #define SYSCALL_ERROR_HANDLER \
.type syscall_error,@function; \
syscall_error: \ syscall_error: \
call 0f; \ call 0f; \
0:popl %ecx; \ 0:popl %ecx; \
@ -95,8 +92,7 @@ syscall_error: \
movl errno@GOT(%ecx), %ecx; \ movl errno@GOT(%ecx), %ecx; \
movl %edx, (%ecx); \ movl %edx, (%ecx); \
movl $-1, %eax; \ movl $-1, %eax; \
ret; \ ret;
.size syscall_error,.-syscall-error;
#endif /* _LIBC_REENTRANT */ #endif /* _LIBC_REENTRANT */
#endif /* PIC */ #endif /* PIC */
@ -121,7 +117,7 @@ syscall_error: \
(Of course a function with say 3 arguments does not have entries for (Of course a function with say 3 arguments does not have entries for
arguments 4 and 5.) 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 (which is true according to the data books I have) is that
2 * xchg is more expensive than pushl + movl + popl 2 * xchg is more expensive than pushl + movl + popl
@ -136,7 +132,7 @@ syscall_error: \
(2 * movl is less expensive than pushl + popl). (2 * movl is less expensive than pushl + popl).
Second unlike for the other registers we don't save the content of 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 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' the pipelined processors (i586 and up). Here the `pushl' and `popl'

10
sysdeps/unix/sysv/linux/m68k/clone.S

@ -27,7 +27,6 @@ Cambridge, MA 02139, USA. */
.text .text
ENTRY (__clone) ENTRY (__clone)
CALL_MCOUNT
/* Sanity check arguments. */ /* Sanity check arguments. */
movel #-EINVAL, %d0 movel #-EINVAL, %d0
@ -63,17 +62,12 @@ ENTRY (__clone)
rts rts
SYSCALL_ERROR_HANDLER
thread_start: thread_start:
subl %fp, %fp /* terminate the stack frame */ subl %fp, %fp /* terminate the stack frame */
jsr (%a0) jsr (%a0)
movel %d0, -(%sp) movel %d0, -(%sp)
#ifdef PIC jbsr JUMPTARGET (_exit)
bsrl _exit@PLTPC
#else
jbsr _exit
#endif
PSEUDO_END (__clone) PSEUDO_END (__clone)
weak_alias (__clone, clone) weak_alias (__clone, clone)

3
sysdeps/unix/sysv/linux/m68k/mmap.S

@ -19,10 +19,7 @@ Cambridge, MA 02139, USA. */
#include <sysdep.h> #include <sysdep.h>
.text .text
SYSCALL_ERROR_HANDLER
ENTRY (__mmap) ENTRY (__mmap)
CALL_MCOUNT
move.l #SYS_ify (mmap), %d0 /* System call number in %d0. */ move.l #SYS_ify (mmap), %d0 /* System call number in %d0. */

4
sysdeps/unix/sysv/linux/m68k/sigreturn.S

@ -20,12 +20,10 @@ Cambridge, MA 02139, USA. */
.text .text
ENTRY (__sigreturn) ENTRY (__sigreturn)
CALL_MCOUNT
addq.l #4, %sp /* Pop the return PC. */ addq.l #4, %sp /* Pop the return PC. */
DO_CALL (#SYS_ify (sigreturn), 0) DO_CALL (#SYS_ify (sigreturn), 0)
/* Do the system call; it never returns. */ /* Do the system call; it never returns. */
/* NOTREACHED */ /* NOTREACHED */
PSEUDO_END (__sigreturn) END (__sigreturn)
weak_alias (__sigreturn, sigreturn) weak_alias (__sigreturn, sigreturn)

3
sysdeps/unix/sysv/linux/m68k/socket.S

@ -23,8 +23,6 @@ Cambridge, MA 02139, USA. */
#define P2(a, b) a##b #define P2(a, b) a##b
.text .text
SYSCALL_ERROR_HANDLER
/* The socket-oriented system calls are handled unusally in Linux. /* The socket-oriented system calls are handled unusally in Linux.
They are all gated through the single `socketcall' system call number. They are all gated through the single `socketcall' system call number.
`socketcall' takes two arguments: the first is the subcode, specifying `socketcall' takes two arguments: the first is the subcode, specifying
@ -35,7 +33,6 @@ Cambridge, MA 02139, USA. */
.globl P(__,socket) .globl P(__,socket)
ENTRY (P(__,socket)) ENTRY (P(__,socket))
CALL_MCOUNT
/* Save registers. */ /* Save registers. */
move.l %d2, %a0 move.l %d2, %a0

3
sysdeps/unix/sysv/linux/m68k/syscall.S

@ -22,10 +22,7 @@ Cambridge, MA 02139, USA. */
more information about the value -128 used below.*/ more information about the value -128 used below.*/
.text .text
SYSCALL_ERROR_HANDLER
ENTRY (syscall) ENTRY (syscall)
CALL_MCOUNT
move.l 4(%sp), %d0 /* Load syscall number. */ move.l 4(%sp), %d0 /* Load syscall number. */
_DOARGS_5 (24) /* Frob arguments. */ _DOARGS_5 (24) /* Frob arguments. */
trap &0 /* Do the system call. */ trap &0 /* Do the system call. */

10
sysdeps/unix/sysv/linux/m68k/sysdep.S

@ -46,7 +46,10 @@ __errno = errno /* This name is expected by the MT code. */
/* The syscall stubs jump here when they detect an error. */ /* 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 neg.l %d0
move.l %d0, errno move.l %d0, errno
#ifdef _LIBC_REENTRANT #ifdef _LIBC_REENTRANT
@ -59,15 +62,14 @@ ENTRY (__syscall_error)
return a pointer. */ return a pointer. */
move.l %d0, %a0 move.l %d0, %a0
rts rts
PSEUDO_END (__syscall_error) END (__syscall_error)
#endif /* PIC */ #endif /* PIC */
ENTRY (__errno_location) ENTRY (__errno_location)
CALL_MCOUNT
#ifdef PIC #ifdef PIC
move.l (%pc, errno@GOTPC), %a0 move.l (%pc, errno@GOTPC), %a0
#else #else
lea errno, %a0 lea errno, %a0
#endif #endif
rts rts
PSEUDO_END (__errno_location) END (__errno_location)

10
sysdeps/unix/sysv/linux/m68k/sysdep.h

@ -41,6 +41,9 @@ Cambridge, MA 02139, USA. */
C_LABEL(name) \ C_LABEL(name) \
CALL_MCOUNT CALL_MCOUNT
#undef END
#define END(name) .size name, . - name
/* If compiled for profiling, call `_mcount' at the start of each function. */ /* If compiled for profiling, call `_mcount' at the start of each function. */
#ifdef PROF #ifdef PROF
/* The mcount code relies on a normal frame pointer being on the stack /* The mcount code relies on a normal frame pointer being on the stack
@ -76,7 +79,6 @@ Cambridge, MA 02139, USA. */
error values. */ error values. */
#define PSEUDO(name, syscall_name, args) \ #define PSEUDO(name, syscall_name, args) \
.text; \ .text; \
SYSCALL_ERROR_HANDLER \
ENTRY (name) \ ENTRY (name) \
DO_CALL (&SYS_ify (syscall_name), args); \ DO_CALL (&SYS_ify (syscall_name), args); \
moveq.l &-128, %d1; \ moveq.l &-128, %d1; \
@ -84,13 +86,14 @@ Cambridge, MA 02139, USA. */
jcc syscall_error jcc syscall_error
#undef PSEUDO_END #undef PSEUDO_END
#define PSEUDO_END(name) .size name, . - name #define PSEUDO_END(name) \
SYSCALL_ERROR_HANDLER; \
END (name)
#ifdef PIC #ifdef PIC
/* Store (- %d0) into errno through the GOT. */ /* Store (- %d0) into errno through the GOT. */
#ifdef _LIBC_REENTRANT #ifdef _LIBC_REENTRANT
#define SYSCALL_ERROR_HANDLER \ #define SYSCALL_ERROR_HANDLER \
.type syscall_error, @function; \
syscall_error: \ syscall_error: \
move.l (errno@GOTPC, %pc), %a0; \ move.l (errno@GOTPC, %pc), %a0; \
neg.l %d0; \ neg.l %d0; \
@ -105,7 +108,6 @@ syscall_error: \
rts; rts;
#else #else
#define SYSCALL_ERROR_HANDLER \ #define SYSCALL_ERROR_HANDLER \
.type syscall_error, @function; \
syscall_error: \ syscall_error: \
move.l (errno@GOTPC, %pc), %a0; \ move.l (errno@GOTPC, %pc), %a0; \
neg.l %d0; \ neg.l %d0; \

12
sysdeps/unix/sysv/linux/syscalls.list

@ -13,7 +13,7 @@ geteuid - geteuid 0 __geteuid geteuid
getpgid - getpgid 1 __getpgid getpgid getpgid - getpgid 1 __getpgid getpgid
getpgrp - getpgrp 0 getpgrp getpgrp - getpgrp 0 getpgrp
getppid - getppid 0 __getppid getppid getppid - getppid 0 __getppid getppid
getresuid - getresuid 3 getresuid getresuid EXTRA getresuid 3 getresuid
getsid - getsid 1 getsid getsid - getsid 1 getsid
init_module EXTRA init_module 5 init_module init_module EXTRA init_module 5 init_module
ioperm - ioperm 3 ioperm ioperm - ioperm 3 ioperm
@ -35,22 +35,22 @@ s_getpriority getpriority getpriority 2 __syscall_getpriority
s_ptrace ptrace ptrace 4 __syscall_ptrace s_ptrace ptrace ptrace 4 __syscall_ptrace
s_reboot EXTRA reboot 3 __syscall_reboot s_reboot EXTRA reboot 3 __syscall_reboot
s_sigsuspend sigsuspend sigsuspend 3 __syscall_sigsuspend 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_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_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_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_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_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 select - _newselect 5 __select select
setfsgid EXTRA setfsgid 1 setfsgid setfsgid EXTRA setfsgid 1 setfsgid
setfsuid EXTRA setfsuid 1 setfsuid setfsuid EXTRA setfsuid 1 setfsuid
setpgid - setpgid 2 __setpgid setpgid setpgid - setpgid 2 __setpgid setpgid
setresuid - setresuid 3 setresuid setresuid EXTRA setresuid 3 setresuid
sigpending - sigpending 1 sigpending sigpending - sigpending 1 sigpending
sigprocmask - sigprocmask 3 __sigprocmask sigprocmask sigprocmask - sigprocmask 3 __sigprocmask sigprocmask
s_sysctl sysctl _sysctl 1 __syscall__sysctl
sysinfo EXTRA sysinfo 1 sysinfo sysinfo EXTRA sysinfo 1 sysinfo
swapon - swapon 2 swapon swapon - swapon 2 swapon
umount EXTRA umount 1 __umount umount umount EXTRA umount 1 __umount umount

2
version.h

@ -1,4 +1,4 @@
/* This file just defines the current version number of libc. */ /* This file just defines the current version number of libc. */
#define RELEASE "alpha" #define RELEASE "alpha"
#define VERSION "1.96" #define VERSION "1.97"

Loading…
Cancel
Save