mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 09:43:32 +08:00
update from main archive 961011
Fri Oct 11 19:13:34 1996 Ulrich Drepper <drepper@cygnus.com> * locale/Makefile (CPPFLAGS): Set CHARMAP_PATH to "$(i18ndir)/charmaps". Fri Oct 11 22:12:41 1996 NIIBE Yutaka <gniibe@mri.co.jp> * sysdeps/unix/sysv/linux/sys/procfs.h: Include <asm/user.h> to get definition of FPU description struct. * sysdeps/unix/sysv/linux/Makefile [$(subdir)=socket] (subdir_headers): Add net/if.h, net/if_ppp.h, net/ppp-comp.h, net/ppp_defs.h, net/if_arp.h, and net/route.h. * sysdeps/unix/sysv/linux/net/if_arp.h: New file. * sysdeps/unix/sysv/linux/net/route.h: New file. Fri Oct 11 14:49:13 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/stub/readdir_r.c: New file. We need a stub version. * sysdeps/stub/e_acosl.c: Likewise. * sysdeps/stub/e_asinl.c: Likewise. * sysdeps/stub/e_atan2l.c: Likewise. * sysdeps/stub/e_expl.c: Likewise. * sysdeps/stub/e_fmodl.c: Likewise. * sysdeps/stub/e_log10l.c: Likewise. * sysdeps/stub/e_logl.c: Likewise. * sysdeps/stub/e_sqrtl.c: Likewise. * sysdeps/stub/s_atanl.c: Likewise. * sysdeps/stub/s_log1pl.c: Likewise. * Makefile (distribute): Add nsswitch.h and netgroup.h. * nss/Makefile (generated): db-netgrp.c is not generated. * sysdeps/alpha/Dist: Add stxcpy.S and stxncpy.S. * Make-dist (+out): Add $(dont_distribute). Fri Oct 11 00:27:18 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * stdio-common/Makefile (routines): Add tmpnam_r. Fri Oct 11 05:32:51 1996 Ulrich Drepper <drepper@cygnus.com> * version.h: Bump version to 1.96. Fri Oct 11 18:13:47 1996 Andreas Jaeger <aj@arthur.pfalz.de> * stdio-common/tst-printf.c: Some more cleanups. Fri Oct 11 02:48:02 1996 Ulrich Drepper <drepper@cygnus.com> * resolv/arpa/nameser.h: Update from bind-4.9.5-T6B. * resolv/resolv.h: Likewise. * resolv/gethnamaddr.c: Likewise. * resolv/res_comp.c: Likewise. * resolv/res_debug.c: Likewise. * resolv/res_init.c: Likewise. * resolv/res_send.c: Likewise. * resolv/Banner: Update version number. * nss/nss_dns/dns-host.c: Update according to change in resolv/gethnamaddr.c. Fri Oct 10 20:52:28 1996 Ralph Loader <loader@maths.ox.ac.uk> * crypt/md5.c (md5_stream): When reading the block in several pieces append to instead of replace previously read data. Thu Oct 10 15:53:17 1996 Richard Henderson <rth@tamu.edu> * sysdeps/alpha/stxcpy.S ($unaligned): In single word copy, correct last-byte-written bit for source word misalignment. * sysdeps/alpha/strchr.c: Removed. There is now an assembler version. Thu Oct 10 17:17:23 1996 Ulrich Drepper <drepper@cygnus.com> * sunrpc/Makefile (rpcsvc): Remove yp.x. The corrected version comes with glibc-nis. * sunrpc/rpcsvc/yp.x: Removed. * nss/nss_files/files-netgr.c (_nss_netgroup_parseline): Test for *CURSOR to be NULL and dump a core if yes. Thu Oct 9 20:09:53 1996 Matthew Jacob <mjacob@feral.com> * sysdeps/unix/sysv/linux/alpha/brk.S: Define _ERRNO_H before including <errnos.h> to get error numbers. Thu Oct 10 14:00:01 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/i386/sigcontext.h: Moved file... * sysdeps/unix/sysv/linux/sigcontext.h: ...to here. So the Alpha people find a correct file. * sysdeps/libm-ieee754/w_cabs.c: We cannot make __cabsl simply an alias of __cabs since the structures have different names. * sysdeps/libm-ieee754/w_log10.c: Fix typo in weak_alias. Reported by Matthew Jacob <mjacob@feral.com>. simply a wrapper around the <linux/elfcore.h> file since the
This commit is contained in:
parent
b33f91e91d
commit
1f64ac13c0
102
ChangeLog
102
ChangeLog
@ -1,3 +1,103 @@
|
||||
Fri Oct 11 19:13:34 1996 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* locale/Makefile (CPPFLAGS): Set CHARMAP_PATH to
|
||||
"$(i18ndir)/charmaps".
|
||||
|
||||
Fri Oct 11 22:12:41 1996 NIIBE Yutaka <gniibe@mri.co.jp>
|
||||
|
||||
* sysdeps/unix/sysv/linux/sys/procfs.h: Include <asm/user.h>
|
||||
to get definition of FPU description struct.
|
||||
|
||||
* sysdeps/unix/sysv/linux/Makefile [$(subdir)=socket] (subdir_headers):
|
||||
Add net/if.h, net/if_ppp.h, net/ppp-comp.h, net/ppp_defs.h,
|
||||
net/if_arp.h, and net/route.h.
|
||||
* sysdeps/unix/sysv/linux/net/if_arp.h: New file.
|
||||
* sysdeps/unix/sysv/linux/net/route.h: New file.
|
||||
|
||||
Fri Oct 11 14:49:13 1996 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* sysdeps/stub/readdir_r.c: New file. We need a stub version.
|
||||
* sysdeps/stub/e_acosl.c: Likewise.
|
||||
* sysdeps/stub/e_asinl.c: Likewise.
|
||||
* sysdeps/stub/e_atan2l.c: Likewise.
|
||||
* sysdeps/stub/e_expl.c: Likewise.
|
||||
* sysdeps/stub/e_fmodl.c: Likewise.
|
||||
* sysdeps/stub/e_log10l.c: Likewise.
|
||||
* sysdeps/stub/e_logl.c: Likewise.
|
||||
* sysdeps/stub/e_sqrtl.c: Likewise.
|
||||
* sysdeps/stub/s_atanl.c: Likewise.
|
||||
* sysdeps/stub/s_log1pl.c: Likewise.
|
||||
|
||||
* Makefile (distribute): Add nsswitch.h and netgroup.h.
|
||||
|
||||
* nss/Makefile (generated): db-netgrp.c is not generated.
|
||||
|
||||
* sysdeps/alpha/Dist: Add stxcpy.S and stxncpy.S.
|
||||
|
||||
* Make-dist (+out): Add $(dont_distribute).
|
||||
|
||||
Fri Oct 11 00:27:18 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
|
||||
|
||||
* stdio-common/Makefile (routines): Add tmpnam_r.
|
||||
|
||||
Fri Oct 11 05:32:51 1996 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* version.h: Bump version to 1.96.
|
||||
|
||||
Fri Oct 11 18:13:47 1996 Andreas Jaeger <aj@arthur.pfalz.de>
|
||||
|
||||
* stdio-common/tst-printf.c: Some more cleanups.
|
||||
|
||||
Fri Oct 11 02:48:02 1996 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* resolv/arpa/nameser.h: Update from bind-4.9.5-T6B.
|
||||
* resolv/resolv.h: Likewise.
|
||||
* resolv/gethnamaddr.c: Likewise.
|
||||
* resolv/res_comp.c: Likewise.
|
||||
* resolv/res_debug.c: Likewise.
|
||||
* resolv/res_init.c: Likewise.
|
||||
* resolv/res_send.c: Likewise.
|
||||
* resolv/Banner: Update version number.
|
||||
|
||||
* nss/nss_dns/dns-host.c: Update according to change in
|
||||
resolv/gethnamaddr.c.
|
||||
|
||||
Fri Oct 10 20:52:28 1996 Ralph Loader <loader@maths.ox.ac.uk>
|
||||
|
||||
* crypt/md5.c (md5_stream): When reading the block in several
|
||||
pieces append to instead of replace previously read data.
|
||||
|
||||
Thu Oct 10 15:53:17 1996 Richard Henderson <rth@tamu.edu>
|
||||
|
||||
* sysdeps/alpha/stxcpy.S ($unaligned): In single word copy, correct
|
||||
last-byte-written bit for source word misalignment.
|
||||
* sysdeps/alpha/strchr.c: Removed. There is now an assembler
|
||||
version.
|
||||
|
||||
Thu Oct 10 17:17:23 1996 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* sunrpc/Makefile (rpcsvc): Remove yp.x. The corrected version
|
||||
comes with glibc-nis.
|
||||
* sunrpc/rpcsvc/yp.x: Removed.
|
||||
|
||||
* nss/nss_files/files-netgr.c (_nss_netgroup_parseline): Test
|
||||
for *CURSOR to be NULL and dump a core if yes.
|
||||
|
||||
Thu Oct 9 20:09:53 1996 Matthew Jacob <mjacob@feral.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/brk.S: Define _ERRNO_H before
|
||||
including <errnos.h> to get error numbers.
|
||||
|
||||
Thu Oct 10 14:00:01 1996 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/i386/sigcontext.h: Moved file...
|
||||
* sysdeps/unix/sysv/linux/sigcontext.h: ...to here. So the
|
||||
Alpha people find a correct file.
|
||||
* sysdeps/libm-ieee754/w_cabs.c: We cannot make __cabsl simply
|
||||
an alias of __cabs since the structures have different names.
|
||||
* sysdeps/libm-ieee754/w_log10.c: Fix typo in weak_alias.
|
||||
Reported by Matthew Jacob <mjacob@feral.com>.
|
||||
|
||||
Wed Oct 9 00:24:52 1996 Jim Meyering <meyering@asic.sc.ti.com>
|
||||
|
||||
* time/strftime.c: Allow old K&R compilers compile this file.
|
||||
@ -11,7 +111,7 @@ Wed Oct 9 12:03:56 1996 Ulrich Drepper <drepper@cygnus.com>
|
||||
Wed Oct 9 04:34:50 1996 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/sys/procfs.h: Rewrite. We cannot use
|
||||
simply a wrapper around the <linux.elfcore.h> file since the
|
||||
simply a wrapper around the <linux/elfcore.h> file since the
|
||||
kernel header is not clean enough. We provide the definitions
|
||||
in this file instead.
|
||||
|
||||
|
@ -29,6 +29,7 @@ endif
|
||||
include $(..)Makeconfig
|
||||
|
||||
foo:=$(shell echo 'distribute=$(distribute)'>&2)
|
||||
foo:=$(shell echo 'dont_distribute=$(dont_distribute)'>&2)
|
||||
foo:=$(shell echo 'foobar=$(filter %.c %.S %.s %.h,$(distribute))'>&2)
|
||||
|
||||
ifndef sysdep_dirs
|
||||
@ -111,8 +112,8 @@ sources := $(filter-out $(addsuffix .c,$(basename $(.S.s))),$(sources)) $(.S.s)
|
||||
|
||||
+out := $(patsubst %.S,%.c,$(+sysdep-names:.s=.c)) \
|
||||
$(addsuffix .c,$(sysdep_routines)) \
|
||||
$(+subdir-nodist)
|
||||
#foo:=$(shell echo '+out=$(+out)' >&2; echo foofoo >&2)
|
||||
$(+subdir-nodist) $(dont_distribute)
|
||||
foo:=$(shell echo '+out=$(+out)' >&2; echo foofoo >&2)
|
||||
+tsrcs := $(filter-out $(+out), $(sources) $(all-headers) $(distribute)) \
|
||||
$(+sysdeps)
|
||||
foo:=$(shell echo 'made +tsrcs=$(+tsrcs)'>&2)
|
||||
|
2
Makefile
2
Makefile
@ -242,7 +242,7 @@ distribute := README INSTALL FAQ NOTES NEWS PROJECTS \
|
||||
config.h.in config.make.in config-name.in Makefile.in \
|
||||
autolock.sh munch-tmpl.c munch.awk interp.c \
|
||||
sysdep.h set-hooks.h libc-symbols.h version.h shlib-versions \
|
||||
rpm/Makefile rpm/template rpm/rpmrc
|
||||
rpm/Makefile rpm/template rpm/rpmrc nsswitch.h netgroup.h
|
||||
|
||||
distribute := $(strip $(distribute))
|
||||
generated := $(generated) stubs.h version-info.h
|
||||
|
@ -1,43 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 1996 Free Software Foundation
|
||||
|
||||
This file is part of the GNU IO Library. This library is free
|
||||
software; you can redistribute it and/or modify it under the
|
||||
terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this library; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
As a special exception, if you link this library with files
|
||||
compiled with a GNU compiler to produce an executable, this does not cause
|
||||
the resulting executable to be covered by the GNU General Public License.
|
||||
This exception does not however invalidate any other reasons why
|
||||
the executable file might be covered by the GNU General Public License. */
|
||||
|
||||
#include "libioP.h"
|
||||
#include <libc-lock.h>
|
||||
|
||||
void
|
||||
_IO_flockfile (s)
|
||||
_IO_FILE *s;
|
||||
{
|
||||
__libc_lock_lock (s->_lock);
|
||||
}
|
||||
weak_alias (_IO_flockfile, flockfile)
|
||||
|
||||
|
||||
void
|
||||
_IO_funlockfile (s)
|
||||
_IO_FILE *s;
|
||||
{
|
||||
__libc_lock_unlock (s->_lock);
|
||||
}
|
||||
weak_alias (_IO_funlockfile, funlockfile)
|
@ -65,7 +65,7 @@ $(objpfx)locale: $(locale-modules:%=$(objpfx)%.o)
|
||||
$(objpfx)localedef $(objpfx)locale: $(lib-modules:%=$(objpfx)%.o)
|
||||
|
||||
CPPFLAGS := -DLOCALE_PATH='"$(localedir)"' \
|
||||
-DCHARMAP_PATH='"$(i18ndir)/charmap"' \
|
||||
-DCHARMAP_PATH='"$(i18ndir)/charmaps"' \
|
||||
-DLOCSRCDIR='"$(i18ndir)/locales"' -DHAVE_CONFIG_H \
|
||||
-Iprograms $(CPPFLAGS)
|
||||
|
||||
|
@ -55,7 +55,8 @@ libnss_dns-routines := dns-host dns-network
|
||||
|
||||
libnss_db-routines := $(addprefix db-,$(filter-out hosts network,\
|
||||
$(databases)))
|
||||
generated += $(addsuffix .c,$(libnss_db-routines))
|
||||
generated += $(filter-out db-netgrp.c, \
|
||||
$(addsuffix .c,$(libnss_db-routines)))
|
||||
distribute += db-XXX.c
|
||||
|
||||
libnss_files-inhibit-o = $(filter-out .so,$(object-suffixes))
|
||||
|
@ -589,15 +589,12 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
|
||||
cp += n;
|
||||
continue; /* XXX - had_error++ ? */
|
||||
}
|
||||
if (haveanswer)
|
||||
if (n != result->h_length)
|
||||
{
|
||||
if (n != result->h_length)
|
||||
{
|
||||
cp += n;
|
||||
continue;
|
||||
}
|
||||
cp += n;
|
||||
continue;
|
||||
}
|
||||
else
|
||||
if (!haveanswer)
|
||||
{
|
||||
register int nn;
|
||||
|
||||
|
@ -188,6 +188,11 @@ _nss_netgroup_parseline (char **cursor, struct __netgrent *result,
|
||||
const char *host, *user, *domain;
|
||||
char *cp = *cursor;
|
||||
|
||||
/* Some sanity checks. */
|
||||
if (cp == NULL)
|
||||
/* User bug. setnetgrent() wasn't called before. */
|
||||
abort ();
|
||||
|
||||
/* First skip leading spaces. */
|
||||
while (isspace (*cp))
|
||||
++cp;
|
||||
|
@ -1 +1 @@
|
||||
BIND-4.9.5-T4B
|
||||
BIND-4.9.5-T6B
|
||||
|
@ -92,10 +92,8 @@
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#ifdef _AUX_SOURCE
|
||||
#include <sys/types.h> /* ech for A/UX */
|
||||
#define res_send ucb_res_send /* already def'd in libc */
|
||||
#define _res_close _ucb_res_close /* removing res_send.o from the library */
|
||||
#endif /* gives an undefined symbol... */
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* revision information. this is the release date in YYYYMMDD format.
|
||||
@ -182,6 +180,7 @@
|
||||
#define T_NIMLOC 32 /* Nimrod locator */
|
||||
#define T_SRV 33 /* Server selection */
|
||||
#define T_ATMA 34 /* ATM Address */
|
||||
#define T_NAPTR 35 /* Naming Authority PoinTeR */
|
||||
/* non standard */
|
||||
#define T_UINFO 100 /* user (finger) information */
|
||||
#define T_UID 101 /* user ID */
|
||||
|
@ -341,12 +341,11 @@ getanswer(answer, anslen, qname, qtype)
|
||||
cp += n;
|
||||
continue; /* XXX - had_error++ ? */
|
||||
}
|
||||
if (haveanswer) {
|
||||
if (n != host.h_length) {
|
||||
cp += n;
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
if (n != host.h_length) {
|
||||
cp += n;
|
||||
continue;
|
||||
}
|
||||
if (!haveanswer) {
|
||||
register int nn;
|
||||
|
||||
host.h_name = bp;
|
||||
|
@ -394,8 +394,12 @@ int
|
||||
res_ownok(dn)
|
||||
const char *dn;
|
||||
{
|
||||
if (asterchar(dn[0]) && periodchar(dn[1]))
|
||||
dn += 2;
|
||||
if (asterchar(dn[0])) {
|
||||
if (periodchar(dn[1]))
|
||||
return (res_hnok(dn+2));
|
||||
if (dn[1] == '\0')
|
||||
return (1);
|
||||
}
|
||||
return (res_hnok(dn));
|
||||
}
|
||||
|
||||
|
@ -671,7 +671,7 @@ __p_rr(cp, msg, file)
|
||||
fprintf(file, "\t%s", inet_ntop(AF_INET6, cp, t, sizeof t));
|
||||
cp += dlen;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
case T_LOC: {
|
||||
char t[255];
|
||||
@ -679,7 +679,30 @@ __p_rr(cp, msg, file)
|
||||
(void) fprintf(file, "\t%s", loc_ntoa(cp, t));
|
||||
cp += dlen;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
case T_NAPTR: {
|
||||
u_int order, preference;
|
||||
|
||||
order = _getshort(cp); cp += INT16SZ;
|
||||
preference = _getshort(cp); cp += INT16SZ;
|
||||
fprintf(file, "\t%u %u ",order, preference);
|
||||
/* Flags */
|
||||
n = *cp++;
|
||||
fprintf(file,"\"%.*s\" ", (int)n, cp);
|
||||
cp += n;
|
||||
/* Service */
|
||||
n = *cp++;
|
||||
fprintf(file,"\"%.*s\" ", (int)n, cp);
|
||||
cp += n;
|
||||
/* Regexp */
|
||||
n = *cp++;
|
||||
fprintf(file,"\"%.*s\" ", (int)n, cp);
|
||||
cp += n;
|
||||
if ((cp = p_fqname(cp, msg, file)) == NULL)
|
||||
return (NULL);
|
||||
break;
|
||||
}
|
||||
|
||||
case T_SRV: {
|
||||
u_int priority, weight, port;
|
||||
@ -691,7 +714,7 @@ __p_rr(cp, msg, file)
|
||||
if ((cp = p_fqname(cp, msg, file)) == NULL)
|
||||
return (NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
case T_MINFO:
|
||||
case T_RP:
|
||||
@ -908,6 +931,7 @@ const struct res_sym __p_type_syms[] = {
|
||||
{T_UINFO, "UINFO", "user information (nonstandard)"},
|
||||
{T_UID, "UID", "user ID (nonstandard)"},
|
||||
{T_GID, "GID", "group ID (nonstandard)"},
|
||||
{T_NAPTR, "NAPTR", "URN Naming Authority"},
|
||||
#ifdef ALLOW_T_UNSPEC
|
||||
{T_UNSPEC, "UNSPEC", "unspecified data (nonstandard)"},
|
||||
#endif /* ALLOW_T_UNSPEC */
|
||||
|
@ -645,7 +645,7 @@ netinfo_res_init(haveenv, havesearch)
|
||||
}
|
||||
#endif /* NeXT */
|
||||
|
||||
u_int16_t
|
||||
u_int
|
||||
res_randomid()
|
||||
{
|
||||
struct timeval now;
|
||||
|
@ -94,8 +94,6 @@ static char rcsid[] = "$Id$";
|
||||
# include <../conf/options.h>
|
||||
#endif
|
||||
|
||||
void _res_close __P((void));
|
||||
|
||||
static int s = -1; /* socket used for communications */
|
||||
static int connected = 0; /* is the socket connected */
|
||||
static int vc = 0; /* is the socket a virtual ciruit? */
|
||||
@ -320,7 +318,7 @@ res_send(buf, buflen, ans, anssiz)
|
||||
struct sockaddr_in *nsap = &_res.nsaddr_list[ns];
|
||||
same_ns:
|
||||
if (badns & (1 << ns)) {
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
}
|
||||
|
||||
@ -337,7 +335,7 @@ res_send(buf, buflen, ans, anssiz)
|
||||
done = 1;
|
||||
break;
|
||||
case res_nextns:
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
case res_done:
|
||||
return (resplen);
|
||||
@ -372,7 +370,7 @@ res_send(buf, buflen, ans, anssiz)
|
||||
truncated = 0;
|
||||
if ((s < 0) || (!vc)) {
|
||||
if (s >= 0)
|
||||
_res_close();
|
||||
res_close();
|
||||
|
||||
s = socket(PF_INET, SOCK_STREAM, 0);
|
||||
if (s < 0) {
|
||||
@ -387,7 +385,7 @@ res_send(buf, buflen, ans, anssiz)
|
||||
Aerror(stderr, "connect/vc",
|
||||
errno, *nsap);
|
||||
badns |= (1 << ns);
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
}
|
||||
vc = 1;
|
||||
@ -404,7 +402,7 @@ res_send(buf, buflen, ans, anssiz)
|
||||
terrno = errno;
|
||||
Perror(stderr, "write failed", errno);
|
||||
badns |= (1 << ns);
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
}
|
||||
/*
|
||||
@ -421,7 +419,7 @@ read_len:
|
||||
if (n <= 0) {
|
||||
terrno = errno;
|
||||
Perror(stderr, "read failed", errno);
|
||||
_res_close();
|
||||
res_close();
|
||||
/*
|
||||
* A long running process might get its TCP
|
||||
* connection reset if the remote server was
|
||||
@ -433,10 +431,10 @@ read_len:
|
||||
*/
|
||||
if (terrno == ECONNRESET && !connreset) {
|
||||
connreset = 1;
|
||||
_res_close();
|
||||
res_close();
|
||||
goto same_ns;
|
||||
}
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
}
|
||||
resplen = _getshort(ans);
|
||||
@ -457,7 +455,7 @@ read_len:
|
||||
if (n <= 0) {
|
||||
terrno = errno;
|
||||
Perror(stderr, "read(vc)", errno);
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
}
|
||||
if (truncated) {
|
||||
@ -504,7 +502,7 @@ read_len:
|
||||
|
||||
if ((s < 0) || vc) {
|
||||
if (vc)
|
||||
_res_close();
|
||||
res_close();
|
||||
s = socket(PF_INET, SOCK_DGRAM, 0);
|
||||
if (s < 0) {
|
||||
#if !CAN_RECONNECT
|
||||
@ -544,7 +542,7 @@ read_len:
|
||||
"connect(dg)",
|
||||
errno, *nsap);
|
||||
badns |= (1 << ns);
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
}
|
||||
connected = 1;
|
||||
@ -552,7 +550,7 @@ read_len:
|
||||
if (send(s, (char*)buf, buflen, 0) != buflen) {
|
||||
Perror(stderr, "send", errno);
|
||||
badns |= (1 << ns);
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
}
|
||||
} else {
|
||||
@ -589,7 +587,7 @@ read_len:
|
||||
!= buflen) {
|
||||
Aerror(stderr, "sendto", errno, *nsap);
|
||||
badns |= (1 << ns);
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
}
|
||||
}
|
||||
@ -612,7 +610,7 @@ read_len:
|
||||
if (errno == EINTR)
|
||||
goto wait;
|
||||
Perror(stderr, "select", errno);
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
}
|
||||
if (n == 0) {
|
||||
@ -622,7 +620,7 @@ read_len:
|
||||
Dprint(_res.options & RES_DEBUG,
|
||||
(stdout, ";; timeout\n"));
|
||||
gotsomewhere = 1;
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
}
|
||||
__set_errno (0);
|
||||
@ -631,7 +629,7 @@ read_len:
|
||||
(struct sockaddr *)&from, &fromlen);
|
||||
if (resplen <= 0) {
|
||||
Perror(stderr, "recvfrom", errno);
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
}
|
||||
gotsomewhere = 1;
|
||||
@ -683,7 +681,7 @@ read_len:
|
||||
(stdout, "server rejected query:\n"),
|
||||
ans, (resplen>anssiz)?anssiz:resplen);
|
||||
badns |= (1 << ns);
|
||||
_res_close();
|
||||
res_close();
|
||||
/* don't retry if called from dig */
|
||||
if (!_res.pfcode)
|
||||
goto next_ns;
|
||||
@ -696,7 +694,7 @@ read_len:
|
||||
Dprint(_res.options & RES_DEBUG,
|
||||
(stdout, ";; truncated answer\n"));
|
||||
v_circuit = 1;
|
||||
_res_close();
|
||||
res_close();
|
||||
goto same_ns;
|
||||
}
|
||||
} /*if vc/dg*/
|
||||
@ -718,7 +716,7 @@ read_len:
|
||||
*/
|
||||
if ((v_circuit && (!(_res.options & RES_USEVC) || ns != 0)) ||
|
||||
!(_res.options & RES_STAYOPEN)) {
|
||||
_res_close();
|
||||
res_close();
|
||||
}
|
||||
if (Rhook) {
|
||||
int done = 0, loops = 0;
|
||||
@ -734,7 +732,7 @@ read_len:
|
||||
done = 1;
|
||||
break;
|
||||
case res_nextns:
|
||||
_res_close();
|
||||
res_close();
|
||||
goto next_ns;
|
||||
case res_modified:
|
||||
/* give the hook another try */
|
||||
@ -753,7 +751,7 @@ read_len:
|
||||
next_ns: ;
|
||||
} /*foreach ns*/
|
||||
} /*foreach retry*/
|
||||
_res_close();
|
||||
res_close();
|
||||
if (!v_circuit)
|
||||
if (!gotsomewhere)
|
||||
__set_errno (ECONNREFUSED); /* no nameservers found */
|
||||
@ -772,7 +770,7 @@ read_len:
|
||||
* This routine is not expected to be user visible.
|
||||
*/
|
||||
void
|
||||
_res_close()
|
||||
res_close()
|
||||
{
|
||||
if (s >= 0) {
|
||||
(void) close(s);
|
||||
@ -787,6 +785,12 @@ _res_close()
|
||||
* there is more gunk of this kind over in res_debug.c.
|
||||
*/
|
||||
|
||||
void
|
||||
_res_close()
|
||||
{
|
||||
res_close();
|
||||
}
|
||||
|
||||
#undef res_send
|
||||
int
|
||||
res_send(buf, buflen, ans, anssiz)
|
||||
|
@ -110,7 +110,7 @@ struct __res_state {
|
||||
struct sockaddr_in
|
||||
nsaddr_list[MAXNS]; /* address of name server */
|
||||
#define nsaddr nsaddr_list[0] /* for backward compatibility */
|
||||
u_short id; /* current packet id */
|
||||
u_short id; /* current message id */
|
||||
char *dnsrch[MAXDNSRCH+1]; /* components of domain to search */
|
||||
char defdname[256]; /* default domain (deprecated) */
|
||||
u_long pfcode; /* RES_PRF_ flags - see below. */
|
||||
@ -235,6 +235,7 @@ extern const struct res_sym __p_type_syms[];
|
||||
#define res_isourserver __res_isourserver
|
||||
#define res_nameinquery __res_nameinquery
|
||||
#define res_queriesmatch __res_queriesmatch
|
||||
#define res_close __res_close
|
||||
__BEGIN_DECLS
|
||||
int res_hnok __P((const char *));
|
||||
int res_ownok __P((const char *));
|
||||
@ -272,7 +273,7 @@ int dn_comp __P((const char *, u_char *, int,
|
||||
int dn_expand __P((const u_char *, const u_char *, const u_char *,
|
||||
char *, int));
|
||||
int res_init __P((void));
|
||||
u_int16_t res_randomid __P((void));
|
||||
u_int res_randomid __P((void));
|
||||
int res_query __P((const char *, int, int, u_char *, int));
|
||||
int res_search __P((const char *, int, int, u_char *, int));
|
||||
int res_querydomain __P((const char *, const char *, int, int,
|
||||
@ -285,6 +286,7 @@ int res_nameinquery __P((const char *, int, int,
|
||||
const u_char *, const u_char *));
|
||||
int res_queriesmatch __P((const u_char *, const u_char *,
|
||||
const u_char *, const u_char *));
|
||||
void res_close __P((void));
|
||||
__END_DECLS
|
||||
|
||||
#endif /* !_RESOLV_H_ */
|
||||
|
@ -30,7 +30,7 @@ routines := \
|
||||
vfscanf \
|
||||
fscanf scanf sscanf \
|
||||
perror psignal \
|
||||
tmpfile tmpnam tempnam tempname \
|
||||
tmpfile tmpnam tmpnam_r tempnam tempname \
|
||||
getline getw putw \
|
||||
remove rename \
|
||||
lockfile
|
||||
|
@ -147,7 +147,7 @@ I am ready for my first lesson today.";
|
||||
|
||||
#ifndef BSD
|
||||
printf("bad format:\t\"%z\"\n");
|
||||
printf("nil pointer (padded):\t\"%10p\"\n", (PTR) NULL);
|
||||
printf("nil pointer (padded):\t\"%10p\"\n", (void *) NULL);
|
||||
#endif
|
||||
|
||||
printf("decimal negative:\t\"%d\"\n", -2345);
|
||||
@ -272,7 +272,6 @@ rfg1 (void)
|
||||
sprintf (buf, "%.G", 33.3);
|
||||
if (strcmp (buf, "3E+01") != 0)
|
||||
printf ("got: '%s', expected: '%s'\n", buf, "3E+01");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
@ -309,5 +308,4 @@ rfg2 (void)
|
||||
sprintf (buf, "%04.*X", prec, 33);
|
||||
if (strcmp (buf, " 021") != 0)
|
||||
printf ("got: '%s', expected: '%s'\n", buf, " 021");
|
||||
return 0;
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ headers = $(addprefix rpc/,auth.h auth_unix.h clnt.h netdb.h pmap_clnt.h \
|
||||
$(rpcsvc:%=rpcsvc/%) $(rpcsvc:%.x=rpcsvc/%.h)
|
||||
rpcsvc = bootparam.x nlm_prot.x rstat.x \
|
||||
yppasswd.x klm_prot.x rex.x sm_inter.x mount.x \
|
||||
rnusers.x spray.x nfs_prot.x rquota.x yp.x
|
||||
rnusers.x spray.x nfs_prot.x rquota.x
|
||||
install-others = $(includedir)/rpcsvc/bootparam_prot.h \
|
||||
$(sysconfdir)/rpc
|
||||
generated = $(rpcsvc:%.x=rpcsvc/%.h) $(rpcsvc:%.x=x%.c)
|
||||
|
@ -1,291 +0,0 @@
|
||||
/* @(#)yp.x 2.1 88/08/01 4.0 RPCSRC */
|
||||
|
||||
/*
|
||||
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
|
||||
* unrestricted use provided that this legend is included on all tape
|
||||
* media and as a part of the software program in whole or part. Users
|
||||
* may copy or modify Sun RPC without charge, but are not authorized
|
||||
* to license or distribute it to anyone else except as part of a product or
|
||||
* program developed by the user.
|
||||
*
|
||||
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
|
||||
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
|
||||
*
|
||||
* Sun RPC is provided with no support and without any obligation on the
|
||||
* part of Sun Microsystems, Inc. to assist in its use, correction,
|
||||
* modification or enhancement.
|
||||
*
|
||||
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
|
||||
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
|
||||
* OR ANY PART THEREOF.
|
||||
*
|
||||
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
|
||||
* or profits or other special, indirect and consequential damages, even if
|
||||
* Sun has been advised of the possibility of such damages.
|
||||
*
|
||||
* Sun Microsystems, Inc.
|
||||
* 2550 Garcia Avenue
|
||||
* Mountain View, California 94043
|
||||
*/
|
||||
|
||||
/*
|
||||
* Protocol description file for the Yellow Pages Service
|
||||
*/
|
||||
|
||||
const YPMAXRECORD = 1024;
|
||||
const YPMAXDOMAIN = 64;
|
||||
const YPMAXMAP = 64;
|
||||
const YPMAXPEER = 64;
|
||||
|
||||
|
||||
enum ypstat {
|
||||
YP_TRUE = 1,
|
||||
YP_NOMORE = 2,
|
||||
YP_FALSE = 0,
|
||||
YP_NOMAP = -1,
|
||||
YP_NODOM = -2,
|
||||
YP_NOKEY = -3,
|
||||
YP_BADOP = -4,
|
||||
YP_BADDB = -5,
|
||||
YP_YPERR = -6,
|
||||
YP_BADARGS = -7,
|
||||
YP_VERS = -8
|
||||
};
|
||||
|
||||
|
||||
enum ypxfrstat {
|
||||
YPXFR_SUCC = 1,
|
||||
YPXFR_AGE = 2,
|
||||
YPXFR_NOMAP = -1,
|
||||
YPXFR_NODOM = -2,
|
||||
YPXFR_RSRC = -3,
|
||||
YPXFR_RPC = -4,
|
||||
YPXFR_MADDR = -5,
|
||||
YPXFR_YPERR = -6,
|
||||
YPXFR_BADARGS = -7,
|
||||
YPXFR_DBM = -8,
|
||||
YPXFR_FILE = -9,
|
||||
YPXFR_SKEW = -10,
|
||||
YPXFR_CLEAR = -11,
|
||||
YPXFR_FORCE = -12,
|
||||
YPXFR_XFRERR = -13,
|
||||
YPXFR_REFUSED = -14
|
||||
};
|
||||
|
||||
|
||||
typedef string domainname<YPMAXDOMAIN>;
|
||||
typedef string mapname<YPMAXMAP>;
|
||||
typedef string peername<YPMAXPEER>;
|
||||
typedef opaque keydat<YPMAXRECORD>;
|
||||
typedef opaque valdat<YPMAXRECORD>;
|
||||
|
||||
|
||||
struct ypmap_parms {
|
||||
domainname domain;
|
||||
mapname map;
|
||||
unsigned int ordernum;
|
||||
peername peer;
|
||||
};
|
||||
|
||||
struct ypreq_key {
|
||||
domainname domain;
|
||||
mapname map;
|
||||
keydat key;
|
||||
};
|
||||
|
||||
struct ypreq_nokey {
|
||||
domainname domain;
|
||||
mapname map;
|
||||
};
|
||||
|
||||
struct ypreq_xfr {
|
||||
ypmap_parms map_parms;
|
||||
unsigned int transid;
|
||||
unsigned int prog;
|
||||
unsigned int port;
|
||||
};
|
||||
|
||||
|
||||
struct ypresp_val {
|
||||
ypstat stat;
|
||||
valdat val;
|
||||
};
|
||||
|
||||
struct ypresp_key_val {
|
||||
ypstat stat;
|
||||
keydat key;
|
||||
valdat val;
|
||||
};
|
||||
|
||||
|
||||
struct ypresp_master {
|
||||
ypstat stat;
|
||||
peername peer;
|
||||
};
|
||||
|
||||
struct ypresp_order {
|
||||
ypstat stat;
|
||||
unsigned int ordernum;
|
||||
};
|
||||
|
||||
union ypresp_all switch (bool more) {
|
||||
case TRUE:
|
||||
ypresp_key_val val;
|
||||
case FALSE:
|
||||
void;
|
||||
};
|
||||
|
||||
struct ypresp_xfr {
|
||||
unsigned int transid;
|
||||
ypxfrstat xfrstat;
|
||||
};
|
||||
|
||||
struct ypmaplist {
|
||||
mapname map;
|
||||
ypmaplist *next;
|
||||
};
|
||||
|
||||
struct ypresp_maplist {
|
||||
ypstat stat;
|
||||
ypmaplist *maps;
|
||||
};
|
||||
|
||||
enum yppush_status {
|
||||
YPPUSH_SUCC = 1, /* Success */
|
||||
YPPUSH_AGE = 2, /* Master's version not newer */
|
||||
YPPUSH_NOMAP = -1, /* Can't find server for map */
|
||||
YPPUSH_NODOM = -2, /* Domain not supported */
|
||||
YPPUSH_RSRC = -3, /* Local resource alloc failure */
|
||||
YPPUSH_RPC = -4, /* RPC failure talking to server */
|
||||
YPPUSH_MADDR = -5, /* Can't get master address */
|
||||
YPPUSH_YPERR = -6, /* YP server/map db error */
|
||||
YPPUSH_BADARGS = -7, /* Request arguments bad */
|
||||
YPPUSH_DBM = -8, /* Local dbm operation failed */
|
||||
YPPUSH_FILE = -9, /* Local file I/O operation failed */
|
||||
YPPUSH_SKEW = -10, /* Map version skew during transfer */
|
||||
YPPUSH_CLEAR = -11, /* Can't send "Clear" req to local ypserv */
|
||||
YPPUSH_FORCE = -12, /* No local order number in map use -f flag. */
|
||||
YPPUSH_XFRERR = -13, /* ypxfr error */
|
||||
YPPUSH_REFUSED = -14 /* Transfer request refused by ypserv */
|
||||
};
|
||||
|
||||
struct yppushresp_xfr {
|
||||
unsigned transid;
|
||||
yppush_status status;
|
||||
};
|
||||
|
||||
/*
|
||||
* Response structure and overall result status codes. Success and failure
|
||||
* represent two separate response message types.
|
||||
*/
|
||||
|
||||
enum ypbind_resptype {
|
||||
YPBIND_SUCC_VAL = 1,
|
||||
YPBIND_FAIL_VAL = 2
|
||||
};
|
||||
|
||||
struct ypbind_binding {
|
||||
opaque ypbind_binding_addr[4]; /* In network order */
|
||||
opaque ypbind_binding_port[2]; /* In network order */
|
||||
};
|
||||
|
||||
union ypbind_resp switch (ypbind_resptype ypbind_status) {
|
||||
case YPBIND_FAIL_VAL:
|
||||
unsigned ypbind_error;
|
||||
case YPBIND_SUCC_VAL:
|
||||
ypbind_binding ypbind_bindinfo;
|
||||
};
|
||||
|
||||
/* Detailed failure reason codes for response field ypbind_error*/
|
||||
|
||||
const YPBIND_ERR_ERR = 1; /* Internal error */
|
||||
const YPBIND_ERR_NOSERV = 2; /* No bound server for passed domain */
|
||||
const YPBIND_ERR_RESC = 3; /* System resource allocation failure */
|
||||
|
||||
|
||||
/*
|
||||
* Request data structure for ypbind "Set domain" procedure.
|
||||
*/
|
||||
struct ypbind_setdom {
|
||||
domainname ypsetdom_domain;
|
||||
ypbind_binding ypsetdom_binding;
|
||||
unsigned ypsetdom_vers;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* YP access protocol
|
||||
*/
|
||||
program YPPROG {
|
||||
version YPVERS {
|
||||
void
|
||||
YPPROC_NULL(void) = 0;
|
||||
|
||||
bool
|
||||
YPPROC_DOMAIN(domainname) = 1;
|
||||
|
||||
bool
|
||||
YPPROC_DOMAIN_NONACK(domainname) = 2;
|
||||
|
||||
ypresp_val
|
||||
YPPROC_MATCH(ypreq_key) = 3;
|
||||
|
||||
ypresp_key_val
|
||||
YPPROC_FIRST(ypreq_key) = 4;
|
||||
|
||||
ypresp_key_val
|
||||
YPPROC_NEXT(ypreq_key) = 5;
|
||||
|
||||
ypresp_xfr
|
||||
YPPROC_XFR(ypreq_xfr) = 6;
|
||||
|
||||
void
|
||||
YPPROC_CLEAR(void) = 7;
|
||||
|
||||
ypresp_all
|
||||
YPPROC_ALL(ypreq_nokey) = 8;
|
||||
|
||||
ypresp_master
|
||||
YPPROC_MASTER(ypreq_nokey) = 9;
|
||||
|
||||
ypresp_order
|
||||
YPPROC_ORDER(ypreq_nokey) = 10;
|
||||
|
||||
ypresp_maplist
|
||||
YPPROC_MAPLIST(domainname) = 11;
|
||||
} = 2;
|
||||
} = 100004;
|
||||
|
||||
|
||||
/*
|
||||
* YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
|
||||
*/
|
||||
program YPPUSH_XFRRESPPROG {
|
||||
version YPPUSH_XFRRESPVERS {
|
||||
void
|
||||
YPPUSHPROC_NULL(void) = 0;
|
||||
|
||||
yppushresp_xfr
|
||||
YPPUSHPROC_XFRRESP(void) = 1;
|
||||
} = 1;
|
||||
} = 0x40000000; /* transient: could be anything up to 0x5fffffff */
|
||||
|
||||
|
||||
/*
|
||||
* YP binding protocol
|
||||
*/
|
||||
program YPBINDPROG {
|
||||
version YPBINDVERS {
|
||||
void
|
||||
YPBINDPROC_NULL(void) = 0;
|
||||
|
||||
ypbind_resp
|
||||
YPBINDPROC_DOMAIN(domainname) = 1;
|
||||
|
||||
void
|
||||
YPBINDPROC_SETDOM(ypbind_setdom) = 2;
|
||||
} = 2;
|
||||
} = 100007;
|
||||
|
||||
|
@ -46,7 +46,9 @@ static char sccsid[] = "@(#)svc_udp.c 1.24 87/08/11 Copyr 1984 Sun Micro";
|
||||
|
||||
|
||||
#define rpc_buffer(xprt) ((xprt)->xp_p1)
|
||||
#define MAX(a, b) ((a > b) ? a : b)
|
||||
#ifndef MAX
|
||||
# define MAX(a, b) ((a > b) ? a : b)
|
||||
#endif
|
||||
|
||||
static bool_t svcudp_recv();
|
||||
static bool_t svcudp_reply();
|
||||
|
@ -3,3 +3,5 @@ DEFS.h
|
||||
divrem.h
|
||||
divl.S divlu.S divq.S divqu.S reml.S remlu.S remq.S remqu.S
|
||||
_mcount.S
|
||||
stxcpy.S
|
||||
stxncpy.S
|
||||
|
@ -1,84 +0,0 @@
|
||||
/* Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
The GNU C Library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||
Cambridge, MA 02139, USA. */
|
||||
|
||||
#include <string.h>
|
||||
|
||||
/* Return the length of the null-terminated string STR. Scan for
|
||||
the null terminator quickly by testing eight bytes at a time. */
|
||||
|
||||
char *
|
||||
strchr (const char *str, int c)
|
||||
{
|
||||
const char *char_ptr;
|
||||
const unsigned long int *longword_ptr;
|
||||
unsigned long int charmask;
|
||||
|
||||
c = (unsigned char) c;
|
||||
|
||||
/* Handle the first few characters by reading one character at a time.
|
||||
Do this until STR is aligned on a 8-byte border. */
|
||||
for (char_ptr = str; ((unsigned long int) char_ptr & 7) != 0; ++char_ptr)
|
||||
if (*char_ptr == c)
|
||||
return (char *) char_ptr;
|
||||
else if (*char_ptr == '\0')
|
||||
return NULL;
|
||||
|
||||
longword_ptr = (unsigned long int *) char_ptr;
|
||||
|
||||
/* Set up a longword, each of whose bytes is C. */
|
||||
charmask = c | (c << 8);
|
||||
charmask |= charmask << 16;
|
||||
charmask |= charmask << 32;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
const unsigned long int longword = *longword_ptr++;
|
||||
int ge, le, zero;
|
||||
|
||||
/* Set bits in ZERO if bytes in LONGWORD are zero. */
|
||||
asm ("cmpbge $31, %1, %0" : "=r" (zero) : "r" (longword));
|
||||
|
||||
/* Set bits in GE if bytes in CHARMASK are >= bytes in LONGWORD. */
|
||||
asm ("cmpbge %1, %2, %0" : "=r" (ge) : "r" (charmask), "r" (longword));
|
||||
|
||||
/* Set bits in LE if bytes in CHARMASK are <= bytes in LONGWORD. */
|
||||
asm ("cmpbge %2, %1, %0" : "=r" (le) : "r" (charmask), "r" (longword));
|
||||
|
||||
/* Bytes that are both <= and >= are == to C. */
|
||||
if (zero || (ge & le))
|
||||
{
|
||||
/* Which of the bytes was the C? */
|
||||
|
||||
char *cp = (char *) (longword_ptr - 1);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (cp[i] == c)
|
||||
return &cp[i];
|
||||
if (cp[i] == 0)
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef weak_alias
|
||||
#undef index
|
||||
weak_alias (strchr, index)
|
||||
#endif
|
@ -36,7 +36,7 @@ Cambridge, MA 02139, USA. */
|
||||
Furthermore, v0, a3-a5, t11, and t12 are untouched.
|
||||
*/
|
||||
|
||||
/* This is generally scheduled for the EV5, but should still be pretty
|
||||
/* This is generally scheduled for the EV5, but should still be pretty
|
||||
good for the EV4 too. */
|
||||
|
||||
#include <sysdep.h>
|
||||
@ -65,7 +65,7 @@ stxcpy_aligned:
|
||||
lda t2, -1 # e1 : build a mask against false zero
|
||||
mskqh t2, a1, t2 # e0 : detection in the src word
|
||||
mskqh t1, a1, t3 # e0 :
|
||||
ornot t1, t2, t2 # .. e1 :
|
||||
ornot t1, t2, t2 # .. e1 :
|
||||
mskql t0, a1, t0 # e0 : assemble the first output word
|
||||
cmpbge zero, t2, t7 # .. e1 : bits set iff null found
|
||||
or t0, t3, t1 # e0 :
|
||||
@ -99,9 +99,9 @@ $a_eos:
|
||||
/* We're doing a partial word store and so need to combine
|
||||
our source and original destination words. */
|
||||
ldq_u t0, 0(a0) # e0 :
|
||||
subq t8, 1, t6 # .. e1 :
|
||||
subq t8, 1, t6 # .. e1 :
|
||||
zapnot t1, t6, t1 # e0 : clear src bytes >= null
|
||||
or t8, t6, t7 # .. e1 :
|
||||
or t8, t6, t7 # .. e1 :
|
||||
zap t0, t7, t0 # e0 : clear dst bytes <= null
|
||||
or t0, t1, t1 # e1 :
|
||||
|
||||
@ -156,13 +156,13 @@ $u_head:
|
||||
or t1, t4, t1 # .. e1 :
|
||||
mskqh t1, a0, t1 # e0 :
|
||||
or t0, t1, t1 # e1 :
|
||||
|
||||
|
||||
or t1, t6, t6 # e0 :
|
||||
cmpbge zero, t6, t7 # .. e1 :
|
||||
lda t6, -1 # e0 : for masking just below
|
||||
bne t7, $u_final # .. e1 :
|
||||
|
||||
mskql t6, a1, t6 # e0 : mask out the bits we have
|
||||
mskql t6, a1, t6 # e0 : mask out the bits we have
|
||||
or t6, t2, t2 # e1 : already extracted before
|
||||
cmpbge zero, t2, t7 # e0 : testing eos
|
||||
bne t7, $u_late_head_exit # .. e1 (zdb)
|
||||
@ -181,7 +181,7 @@ $u_head:
|
||||
|
||||
/* Unaligned copy main loop. In order to avoid reading too much,
|
||||
the loop is structured to detect zeros in aligned source words.
|
||||
This has, unfortunately, effectively pulled half of a loop
|
||||
This has, unfortunately, effectively pulled half of a loop
|
||||
iteration out into the head and half into the tail, but it does
|
||||
prevent nastiness from accumulating in the very thing we want
|
||||
to run as fast as possible.
|
||||
@ -207,7 +207,7 @@ $u_loop:
|
||||
|
||||
/* We've found a zero somewhere in the source word we just read.
|
||||
If it resides in the lower half, we have one (probably partial)
|
||||
word to write out, and if it resides in the upper half, we
|
||||
word to write out, and if it resides in the upper half, we
|
||||
have one full and one partial word left to write out.
|
||||
|
||||
On entry to this basic block:
|
||||
@ -234,7 +234,7 @@ $u_final:
|
||||
negq t7, t6 # e0 : isolate low bit set
|
||||
and t6, t7, t8 # e1 :
|
||||
|
||||
and t8, 0x80, t6 # e0 : avoid dest word load if we can
|
||||
and t8, 0x80, t6 # e0 : avoid dest word load if we can
|
||||
bne t6, 1f # .. e1 (zdb)
|
||||
|
||||
ldq_u t0, 0(a0) # e0 :
|
||||
@ -256,7 +256,7 @@ $unaligned:
|
||||
and a0, 7, t4 # .. e1 : find dest misalignment
|
||||
and a1, 7, t5 # e0 : find src misalignment
|
||||
|
||||
/* Conditionally load the first destination word and a bytemask
|
||||
/* Conditionally load the first destination word and a bytemask
|
||||
with 0xff indicating that the destination byte is sacrosanct. */
|
||||
|
||||
mov zero, t0 # .. e1 :
|
||||
@ -290,18 +290,19 @@ $unaligned:
|
||||
|
||||
negq t7, t6 # .. e1 : build bitmask of bytes <= zero
|
||||
and t6, t7, t8 # e0 :
|
||||
nop # .. e1 :
|
||||
and a1, 7, t5 # .. e1 :
|
||||
subq t8, 1, t6 # e0 :
|
||||
or t6, t8, t7 # e1 :
|
||||
srl t8, t5, t8 # e0 : adjust final null return value
|
||||
|
||||
zapnot t2, t7, t2 # e0 : prepare source word; mirror changes
|
||||
zapnot t2, t7, t2 # .. e1 : prepare source word; mirror changes
|
||||
and t1, t2, t1 # e1 : to source validity mask
|
||||
extql t2, a1, t2 # e0 :
|
||||
extql t2, a1, t2 # .. e0 :
|
||||
extql t1, a1, t1 # e0 :
|
||||
|
||||
andnot t0, t2, t0 # e0 : zero place for source to reside
|
||||
andnot t0, t2, t0 # .. e1 : zero place for source to reside
|
||||
or t0, t1, t1 # e1 : and put it there
|
||||
stq_u t1, 0(a0) # e0 :
|
||||
ret (t9) # .. e1 :
|
||||
stq_u t1, 0(a0) # .. e0 :
|
||||
ret (t9)
|
||||
|
||||
.end __stxcpy
|
||||
|
@ -14,7 +14,13 @@ __cabs(z)
|
||||
return __hypot(z.x, z.y);
|
||||
}
|
||||
weak_alias (__cabs, cabs)
|
||||
|
||||
#ifdef NO_LONG_DOUBLE
|
||||
strong_alias (__cabs, __cabsl)
|
||||
weak_alias (__cabs, cabsl)
|
||||
double
|
||||
__cabsl(z)
|
||||
struct __cabs_complexl z;
|
||||
{
|
||||
return __hypotl(z.x, z.y);
|
||||
}
|
||||
weak_alias (__cabsl, cabsl)
|
||||
#endif
|
||||
|
@ -47,5 +47,5 @@ static char rcsid[] = "$NetBSD: w_log10.c,v 1.6 1995/05/10 20:49:35 jtc Exp $";
|
||||
weak_alias (__log10, log10)
|
||||
#ifdef NO_LONG_DOUBLE
|
||||
strong_alias (__log10, __log10l)
|
||||
weak_alias (__log10, log10)
|
||||
weak_alias (__log10, log10l)
|
||||
#endif
|
||||
|
11
sysdeps/stub/e_log10l.c
Normal file
11
sysdeps/stub/e_log10l.c
Normal file
@ -0,0 +1,11 @@
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
long double
|
||||
__ieee754_log10l (long double x)
|
||||
{
|
||||
fputs ("__ieee754_log10l not implemented\n", stderr);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
stub_warning (__ieee754_log10l)
|
11
sysdeps/stub/e_logl.c
Normal file
11
sysdeps/stub/e_logl.c
Normal file
@ -0,0 +1,11 @@
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
long double
|
||||
__ieee754_logl (long double x)
|
||||
{
|
||||
fputs ("__ieee754_logl not implemented\n", stderr);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
stub_warning (__ieee754_logl)
|
11
sysdeps/stub/e_sqrtl.c
Normal file
11
sysdeps/stub/e_sqrtl.c
Normal file
@ -0,0 +1,11 @@
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
long double
|
||||
__ieee754_sqrtl (long double x)
|
||||
{
|
||||
fputs ("__ieee754_sqrtl not implemented\n", stderr);
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
stub_warning (__ieee754_sqrtl)
|
12
sysdeps/stub/s_atanl.c
Normal file
12
sysdeps/stub/s_atanl.c
Normal file
@ -0,0 +1,12 @@
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
long double
|
||||
__atanl (long double x)
|
||||
{
|
||||
fputs ("__atanl not implemented\n", stderr);
|
||||
return 0.0;
|
||||
}
|
||||
weak_alias (__atanl, atanl)
|
||||
|
||||
stub_warning (atanl)
|
12
sysdeps/stub/s_log1pl.c
Normal file
12
sysdeps/stub/s_log1pl.c
Normal file
@ -0,0 +1,12 @@
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
long double
|
||||
__log1pl (long double x)
|
||||
{
|
||||
fputs ("__log1pl not implemented\n", stderr);
|
||||
return 0.0;
|
||||
}
|
||||
weak_alias (__log1pl, log1pl)
|
||||
|
||||
stub_warning (log1pl)
|
@ -1,12 +1,17 @@
|
||||
init-first.h
|
||||
sysctl.c
|
||||
termio.h
|
||||
net/if.h
|
||||
net/if_arp.h
|
||||
net/if_ppp.h
|
||||
net/ppp-comp.h
|
||||
net/ppp_defs.h
|
||||
net/route.h
|
||||
nfs/nfs.h
|
||||
sys/acct.h
|
||||
sys/debugreg.h
|
||||
sys/io.h
|
||||
sys/kd.h
|
||||
sys/kdaemon.h
|
||||
sys/klog.h
|
||||
sys/module.h
|
||||
@ -14,9 +19,10 @@ sys/mount.h
|
||||
sys/procfs.h
|
||||
sys/quota.h
|
||||
sys/socketcall.h
|
||||
sys/soundcard.h
|
||||
sys/sysctl.h
|
||||
sys/sysinfo.h
|
||||
sys/sysmacros.h
|
||||
sys/timex.h
|
||||
sys/user.h
|
||||
termio.h
|
||||
sys/vt.h
|
||||
|
@ -31,7 +31,8 @@ sysdep_headers += sys/timex.h
|
||||
endif
|
||||
|
||||
ifeq ($(subdir), socket)
|
||||
sysdep_headers += sys/socketcall.h net/if.h
|
||||
sysdep_headers += sys/socketcall.h net/if.h net/if_ppp.h net/ppp-comp.h \
|
||||
net/ppp_defs.h net/if_arp.h net/route.h
|
||||
endif
|
||||
|
||||
ifeq ($(subdir), sunrpc)
|
||||
|
@ -21,6 +21,7 @@ error. Instead, the error condition is indicated by returning the old
|
||||
break value (instead of the new, requested one). */
|
||||
|
||||
#include <sysdep.h>
|
||||
#define _ERRNO_H
|
||||
#include <errnos.h>
|
||||
|
||||
#ifdef PIC
|
||||
|
@ -28,6 +28,7 @@ Boston, MA 02111-1307, USA. */
|
||||
#include <signal.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include <asm/user.h>
|
||||
#include <asm/elf.h>
|
||||
|
||||
struct elf_siginfo
|
||||
|
Loading…
Reference in New Issue
Block a user