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
This commit is contained in:
Ulrich Drepper 1996-10-22 23:29:26 +00:00
parent 769e8a82da
commit 6ed0492f8e
53 changed files with 275 additions and 146 deletions

107
ChangeLog
View File

@ -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

View File

@ -82,9 +82,9 @@ subdirs := $(filter mach,$(subdirs)) $(filter hurd,$(subdirs)) \
$(addprefix install-, no-libc.a bin lib data headers others)
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
$(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
# Makerules creates a file `stub-$(subdir)' for each subdirectory, which
# contains `#define __stub_FUNCTION' for each function which is a stub.

View File

@ -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

View 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)
#ifndef NDEBUG

View 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 */

View 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,)
)

View 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)

View 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)

View 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;

View 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]);
}

View 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)

View File

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

View 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)

View 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)

View 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)

View 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)

View File

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

View 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)

View File

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

View File

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

View 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)

View File

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

View File

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

View 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)

View 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)

View 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)

View 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;

View File

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

View File

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

View 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)

View File

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

View 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

View File

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

View File

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

View 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)

View 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;

View 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)

View 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)

View 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)

View 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)

View 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)

View 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)

View File

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

View 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'

View 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)

View 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. */

View 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)

View 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

View 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. */

View 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)

View 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; \

View 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

View File

@ -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"