mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 02:40:08 +00:00
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:
parent
769e8a82da
commit
6ed0492f8e
107
ChangeLog
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>
|
||||
|
||||
* 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
|
||||
|
48
Makefile
48
Makefile
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
12
features.h
12
features.h
@ -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 */
|
||||
|
@ -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,)
|
||||
)
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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]);
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -33,4 +33,4 @@ ENTRY (__longjmp)
|
||||
/* Jump to saved PC. */
|
||||
movl (JB_PC*4)(%ecx), %ecx
|
||||
jmp *%ecx
|
||||
PSEUDO_END (__longjmp)
|
||||
END (__longjmp)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -99,4 +99,4 @@ L2: shrl $2, %ecx /* convert byte count to longword count */
|
||||
popl %edi
|
||||
|
||||
ret
|
||||
PSEUDO_END (memset)
|
||||
END (memset)
|
||||
|
@ -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)
|
||||
|
@ -180,4 +180,4 @@ L2: subl 4(%esp), %eax /* now compute the length as difference
|
||||
character */
|
||||
|
||||
ret
|
||||
PSEUDO_END (strlen)
|
||||
END (strlen)
|
||||
|
@ -313,4 +313,4 @@ L9: popl %edi /* pop saved registers */
|
||||
popl %esi
|
||||
|
||||
ret
|
||||
PSEUDO_END (memchr)
|
||||
END (memchr)
|
||||
|
@ -63,7 +63,7 @@ L1: popl %esi /* Restore registers. */
|
||||
movl %edx, %edi
|
||||
|
||||
ret
|
||||
PSEUDO_END (memcmp)
|
||||
END (memcmp)
|
||||
|
||||
#undef bcmp
|
||||
weak_alias (memcmp, bcmp)
|
||||
|
@ -53,4 +53,4 @@ here: popl %ecx
|
||||
#else
|
||||
jmp __sigjmp_save
|
||||
#endif
|
||||
PSEUDO_END (__sigsetjmp)
|
||||
END (__sigsetjmp)
|
||||
|
@ -83,6 +83,6 @@ L4: incl %eax
|
||||
L3: incl %eax
|
||||
L2:
|
||||
ret
|
||||
PSEUDO_END (__stpcpy)
|
||||
END (__stpcpy)
|
||||
|
||||
weak_alias (__stpcpy, stpcpy)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
||||
|
@ -175,4 +175,4 @@ L4: addl $256, %esp /* remove stopset */
|
||||
xorl %eax, %eax /* return NULL */
|
||||
|
||||
L7: ret
|
||||
PSEUDO_END (strpbrk)
|
||||
END (strpbrk)
|
||||
|
@ -321,6 +321,6 @@ L2: popl %esi /* restore saved register content */
|
||||
popl %edi
|
||||
|
||||
ret
|
||||
PSEUDO_END (strrchr)
|
||||
END (strrchr)
|
||||
|
||||
weak_alias (strrchr, rindex)
|
||||
|
@ -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)
|
||||
|
@ -282,4 +282,4 @@ LreturnNULL:
|
||||
# endif
|
||||
#endif
|
||||
ret
|
||||
PSEUDO_END (FUNCTION)
|
||||
END (FUNCTION)
|
||||
|
@ -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
|
||||
|
@ -46,4 +46,4 @@ ENTRY (_setjmp)
|
||||
#else
|
||||
jmp C_SYMBOL_NAME (__sigsetjmp)
|
||||
#endif
|
||||
PSEUDO_END (_setjmp)
|
||||
END (_setjmp)
|
||||
|
@ -44,4 +44,4 @@ ENTRY (setjmp)
|
||||
#else
|
||||
jmp C_SYMBOL_NAME (__sigsetjmp)
|
||||
#endif
|
||||
PSEUDO_END (setjmp)
|
||||
END (setjmp)
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -67,4 +67,4 @@ ENTRY (__errno_location)
|
||||
movl $errno, %eax
|
||||
#endif
|
||||
ret
|
||||
.size __errno_location, .-__errno_location
|
||||
END (__errno_location)
|
||||
|
@ -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'
|
||||
|
@ -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)
|
||||
|
@ -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. */
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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)
|
||||
|
@ -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; \
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user