summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2010-08-08 14:42:46 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2010-08-08 14:42:46 +0000
commit69923723b39aecea4e2cd3c8639b43f2af14e85d (patch)
treee4c022bda090429a454305eba5b32cf9e51240dd /libc
parent48fcb1f856cf90918d365ae5b7c8734c50a45b23 (diff)
Merge changes between r10807 and r11185 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@11186 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc')
-rw-r--r--libc/ChangeLog249
-rw-r--r--libc/ChangeLog.1793
-rw-r--r--libc/NEWS7
-rw-r--r--libc/Versions.def1
-rw-r--r--libc/config.make.in2
-rwxr-xr-xlibc/configure6
-rw-r--r--libc/configure.in6
-rw-r--r--libc/debug/memmove_chk.c6
-rw-r--r--libc/dlfcn/Makefile2
-rw-r--r--libc/elf/Makefile26
-rw-r--r--libc/elf/dl-close.c4
-rw-r--r--libc/elf/dl-sysdep.c5
-rw-r--r--libc/elf/dl-version.c2
-rw-r--r--libc/hurd/hurdselect.c2
-rw-r--r--libc/manual/arith.texi3
-rw-r--r--libc/manual/locale.texi2
-rw-r--r--libc/manual/memory.texi5
-rw-r--r--libc/nptl/ChangeLog37
-rw-r--r--libc/nptl/Makefile4
-rw-r--r--libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S8
-rw-r--r--libc/nptl/sysdeps/unix/sysv/linux/pthread_getname.c2
-rw-r--r--libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S9
-rw-r--r--libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S9
-rw-r--r--libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S6
-rw-r--r--libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S5
-rw-r--r--libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S5
-rw-r--r--libc/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S18
-rw-r--r--libc/nptl/tst-abstime.c98
-rw-r--r--libc/stdlib/Versions3
-rw-r--r--libc/string/Makefile7
-rw-r--r--libc/string/memmove.c5
-rw-r--r--libc/string/str-two-way.h3
-rw-r--r--libc/string/strcasestr.c4
-rw-r--r--libc/string/test-strcasecmp.c276
-rw-r--r--libc/string/test-strcasestr.c197
-rw-r--r--libc/string/test-strnlen.c197
-rw-r--r--libc/string/test-strstr.c194
-rw-r--r--libc/string/tester.c33
-rw-r--r--libc/string/tst-strlen.c18
-rw-r--r--libc/sunrpc/auth_des.c51
-rw-r--r--libc/sunrpc/auth_none.c51
-rw-r--r--libc/sunrpc/auth_unix.c51
-rw-r--r--libc/sunrpc/authdes_prot.c51
-rw-r--r--libc/sunrpc/authuxprot.c51
-rw-r--r--libc/sunrpc/bindrsvprt.c51
-rw-r--r--libc/sunrpc/clnt_gen.c51
-rw-r--r--libc/sunrpc/clnt_perr.c59
-rw-r--r--libc/sunrpc/clnt_raw.c58
-rw-r--r--libc/sunrpc/clnt_simp.c60
-rw-r--r--libc/sunrpc/clnt_tcp.c58
-rw-r--r--libc/sunrpc/clnt_udp.c58
-rw-r--r--libc/sunrpc/clnt_unix.c54
-rw-r--r--libc/sunrpc/des_crypt.c56
-rw-r--r--libc/sunrpc/des_soft.c48
-rw-r--r--libc/sunrpc/get_myaddr.c60
-rw-r--r--libc/sunrpc/getrpcport.c56
-rw-r--r--libc/sunrpc/key_call.c51
-rw-r--r--libc/sunrpc/key_prot.c54
-rw-r--r--libc/sunrpc/openchild.c52
-rw-r--r--libc/sunrpc/pm_getmaps.c60
-rw-r--r--libc/sunrpc/pm_getport.c60
-rw-r--r--libc/sunrpc/pmap_clnt.c51
-rw-r--r--libc/sunrpc/pmap_prot.c60
-rw-r--r--libc/sunrpc/pmap_prot2.c60
-rw-r--r--libc/sunrpc/pmap_rmt.c60
-rw-r--r--libc/sunrpc/rpc/auth.h55
-rw-r--r--libc/sunrpc/rpc/auth_unix.h56
-rw-r--r--libc/sunrpc/rpc/clnt.h55
-rw-r--r--libc/sunrpc/rpc/des_crypt.h49
-rw-r--r--libc/sunrpc/rpc/key_prot.h53
-rw-r--r--libc/sunrpc/rpc/netdb.h48
-rw-r--r--libc/sunrpc/rpc/pmap_clnt.h57
-rw-r--r--libc/sunrpc/rpc/pmap_prot.h57
-rw-r--r--libc/sunrpc/rpc/pmap_rmt.h57
-rw-r--r--libc/sunrpc/rpc/rpc.h57
-rw-r--r--libc/sunrpc/rpc/rpc_des.h55
-rw-r--r--libc/sunrpc/rpc/rpc_msg.h58
-rw-r--r--libc/sunrpc/rpc/svc.h54
-rw-r--r--libc/sunrpc/rpc/svc_auth.h56
-rw-r--r--libc/sunrpc/rpc/types.h48
-rw-r--r--libc/sunrpc/rpc/xdr.h54
-rw-r--r--libc/sunrpc/rpc_clntout.c59
-rw-r--r--libc/sunrpc/rpc_cmsg.c59
-rw-r--r--libc/sunrpc/rpc_common.c48
-rw-r--r--libc/sunrpc/rpc_cout.c53
-rw-r--r--libc/sunrpc/rpc_dtable.c51
-rw-r--r--libc/sunrpc/rpc_hout.c53
-rw-r--r--libc/sunrpc/rpc_main.c53
-rw-r--r--libc/sunrpc/rpc_parse.c53
-rw-r--r--libc/sunrpc/rpc_parse.h55
-rw-r--r--libc/sunrpc/rpc_prot.c58
-rw-r--r--libc/sunrpc/rpc_sample.c53
-rw-r--r--libc/sunrpc/rpc_scan.c53
-rw-r--r--libc/sunrpc/rpc_scan.h55
-rw-r--r--libc/sunrpc/rpc_svcout.c53
-rw-r--r--libc/sunrpc/rpc_tblout.c53
-rw-r--r--libc/sunrpc/rpc_util.c53
-rw-r--r--libc/sunrpc/rpc_util.h55
-rw-r--r--libc/sunrpc/rpcinfo.c62
-rw-r--r--libc/sunrpc/rpcsvc/bootparam_prot.x48
-rw-r--r--libc/sunrpc/rpcsvc/key_prot.x55
-rw-r--r--libc/sunrpc/rpcsvc/klm_prot.x54
-rw-r--r--libc/sunrpc/rpcsvc/mount.x48
-rw-r--r--libc/sunrpc/rpcsvc/nfs_prot.x54
-rw-r--r--libc/sunrpc/rpcsvc/rex.x48
-rw-r--r--libc/sunrpc/rpcsvc/rstat.x48
-rw-r--r--libc/sunrpc/rpcsvc/rusers.x49
-rw-r--r--libc/sunrpc/rpcsvc/sm_inter.x58
-rw-r--r--libc/sunrpc/rpcsvc/spray.x48
-rw-r--r--libc/sunrpc/rpcsvc/yppasswd.x48
-rw-r--r--libc/sunrpc/rtime.c55
-rw-r--r--libc/sunrpc/svc.c55
-rw-r--r--libc/sunrpc/svc_auth.c58
-rw-r--r--libc/sunrpc/svc_authux.c56
-rw-r--r--libc/sunrpc/svc_raw.c60
-rw-r--r--libc/sunrpc/svc_run.c49
-rw-r--r--libc/sunrpc/svc_simple.c60
-rw-r--r--libc/sunrpc/svc_tcp.c58
-rw-r--r--libc/sunrpc/svc_udp.c60
-rw-r--r--libc/sunrpc/svc_unix.c54
-rw-r--r--libc/sunrpc/svcauth_des.c52
-rw-r--r--libc/sunrpc/xcrypt.c52
-rw-r--r--libc/sunrpc/xdr.c58
-rw-r--r--libc/sunrpc/xdr_array.c62
-rw-r--r--libc/sunrpc/xdr_float.c58
-rw-r--r--libc/sunrpc/xdr_mem.c55
-rw-r--r--libc/sunrpc/xdr_rec.c56
-rw-r--r--libc/sunrpc/xdr_ref.c62
-rw-r--r--libc/sunrpc/xdr_sizeof.c53
-rw-r--r--libc/sunrpc/xdr_stdio.c54
-rw-r--r--libc/sysdeps/i386/i386-mcount.S25
-rw-r--r--libc/sysdeps/i386/i686/multiarch/Makefile3
-rw-r--r--libc/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c2
-rw-r--r--libc/sysdeps/mach/hurd/sendmsg.c12
-rw-r--r--libc/sysdeps/mach/hurd/ttyname.c8
-rw-r--r--libc/sysdeps/mach/hurd/ttyname_r.c6
-rw-r--r--libc/sysdeps/powerpc/powerpc32/970/Implies1
-rw-r--r--libc/sysdeps/powerpc/powerpc32/power5+/Implies3
-rw-r--r--libc/sysdeps/powerpc/powerpc32/power5+/fpu/Implies1
-rw-r--r--libc/sysdeps/powerpc/powerpc32/power5/Implies1
-rw-r--r--libc/sysdeps/powerpc/powerpc32/power5/fpu/Implies1
-rw-r--r--libc/sysdeps/powerpc/powerpc32/power6/Implies2
-rw-r--r--libc/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S56
-rw-r--r--libc/sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S1
-rw-r--r--libc/sysdeps/powerpc/powerpc32/power6x/Implies3
-rw-r--r--libc/sysdeps/powerpc/powerpc32/power6x/fpu/Implies3
-rw-r--r--libc/sysdeps/powerpc/powerpc32/power7/Implies2
-rw-r--r--libc/sysdeps/powerpc/powerpc64/970/Implies1
-rw-r--r--libc/sysdeps/powerpc/powerpc64/power5+/Implies3
-rw-r--r--libc/sysdeps/powerpc/powerpc64/power5+/fpu/Implies1
-rw-r--r--libc/sysdeps/powerpc/powerpc64/power5/Implies1
-rw-r--r--libc/sysdeps/powerpc/powerpc64/power5/fpu/Implies1
-rw-r--r--libc/sysdeps/powerpc/powerpc64/power6/Implies1
-rw-r--r--libc/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S56
-rw-r--r--libc/sysdeps/powerpc/powerpc64/power6/fpu/s_copysignf.S1
-rw-r--r--libc/sysdeps/powerpc/powerpc64/power6x/Implies2
-rw-r--r--libc/sysdeps/powerpc/powerpc64/power6x/fpu/Implies3
-rw-r--r--libc/sysdeps/powerpc/powerpc64/power7/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/fpathconf.c11
-rw-r--r--libc/sysdeps/unix/sysv/linux/getlogin_r.c2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/970/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/970/fpu/Implies3
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/cell/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power4/Implies (renamed from libc/sysdeps/powerpc/powerpc32/970/fpu/Implies)1
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power4/fpu/Implies3
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5+/Implies (renamed from libc/sysdeps/powerpc/powerpc32/power6/fpu/Implies)2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5+/fpu/Implies3
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5/fpu/Implies3
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/Implies3
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6x/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6x/fpu/Implies4
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/fpu/Implies4
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/970/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/970/fpu/Implies1
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/Implies (renamed from libc/sysdeps/powerpc/powerpc64/970/fpu/Implies)1
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/fpu/Implies1
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/Implies (renamed from libc/sysdeps/powerpc/powerpc64/power6/fpu/Implies)2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/fpu/Implies3
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/fpu/Implies1
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/Implies3
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/fpu/Implies4
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/Implies2
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/fpu/Implies4
-rw-r--r--libc/sysdeps/x86_64/Makefile3
-rw-r--r--libc/sysdeps/x86_64/_mcount.S38
-rw-r--r--libc/sysdeps/x86_64/locale-defines.sym11
-rw-r--r--libc/sysdeps/x86_64/memcpy.S4
-rw-r--r--libc/sysdeps/x86_64/multiarch/Makefile5
-rw-r--r--libc/sysdeps/x86_64/multiarch/bcopy.S7
-rw-r--r--libc/sysdeps/x86_64/multiarch/init-arch.c9
-rw-r--r--libc/sysdeps/x86_64/multiarch/init-arch.h16
-rw-r--r--libc/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S3169
-rw-r--r--libc/sysdeps/x86_64/multiarch/memcpy-ssse3.S3139
-rw-r--r--libc/sysdeps/x86_64/multiarch/memcpy.S73
-rw-r--r--libc/sysdeps/x86_64/multiarch/memcpy_chk.S47
-rw-r--r--libc/sysdeps/x86_64/multiarch/memmove-ssse3-back.S4
-rw-r--r--libc/sysdeps/x86_64/multiarch/memmove-ssse3.S4
-rw-r--r--libc/sysdeps/x86_64/multiarch/memmove.c24
-rw-r--r--libc/sysdeps/x86_64/multiarch/memmove_chk.c15
-rw-r--r--libc/sysdeps/x86_64/multiarch/mempcpy-ssse3-back.S4
-rw-r--r--libc/sysdeps/x86_64/multiarch/mempcpy-ssse3.S4
-rw-r--r--libc/sysdeps/x86_64/multiarch/mempcpy.S75
-rw-r--r--libc/sysdeps/x86_64/multiarch/mempcpy_chk.S47
-rw-r--r--libc/sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S5
-rw-r--r--libc/sysdeps/x86_64/multiarch/strcasecmp_l.S6
-rw-r--r--libc/sysdeps/x86_64/multiarch/strcasestr-nonascii.c50
-rw-r--r--libc/sysdeps/x86_64/multiarch/strcasestr.c4
-rw-r--r--libc/sysdeps/x86_64/multiarch/strcmp-ssse3.S8
-rw-r--r--libc/sysdeps/x86_64/multiarch/strcmp.S438
-rw-r--r--libc/sysdeps/x86_64/multiarch/strstr.c95
-rw-r--r--libc/sysdeps/x86_64/strcasecmp.S1
-rw-r--r--libc/sysdeps/x86_64/strcasecmp_l-nonascii.c5
-rw-r--r--libc/sysdeps/x86_64/strcasecmp_l.S6
-rw-r--r--libc/sysdeps/x86_64/strcmp.S145
-rw-r--r--libc/sysdeps/x86_64/strnlen.S64
-rw-r--r--libc/sysdeps/x86_64/sysdep.h3
223 files changed, 11655 insertions, 2682 deletions
diff --git a/libc/ChangeLog b/libc/ChangeLog
index 85b6e69d6..7af076ba8 100644
--- a/libc/ChangeLog
+++ b/libc/ChangeLog
@@ -1,4 +1,251 @@
-2010-06-21 Andreas Schwab <schwab@redhat.com>
+2010-07-17 Andi Kleen <ak@linux.intel.com>
+
+ * sysdeps/i386/i386-mcount.S (__fentry__): Define.
+ * sysdeps/x86_64/_mcount.S (__fentry__): Define.
+ * stdlib/Versions (__fentry__): Add for GLIBC 2.13
+ * Versions.def [GLIBC_2.13]: Add.
+
+2010-08-06 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid):
+ Also fail if tpwd after pwuid call is NULL.
+
+2010-07-31 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * hurd/hurdselect.c (_hurd_select): Round timeout up instead of down
+ when converting to ms.
+
+2010-06-06 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/mach/hurd/ttyname.c (ttyname): Replace MIG_BAD_ID and
+ EOPNOTSUPP errors with ENOTTY.
+ * sysdeps/mach/hurd/ttyname_r.c (__ttyname_r): Replace MIG_BAD_ID and
+ EOPNOTSUPP errors with ENOTTY.
+
+2010-07-31 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/multiarch/Makefile [subdir=string] (sysdep_routines):
+ Add strcasecmp_l-ssse3.
+ * sysdeps/x86_64/multiarch/strcmp.S: Add support to compile for
+ strcasecmp.
+ * sysdeps/x86_64/strcmp.S: Allow more flexible compiling of strcasecmp.
+ * sysdeps/x86_64/multiarch/strcasecmp_l.S: New file.
+ * sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S: New file.
+
+2010-07-30 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/multiarch/strcmp.S: Pretty printing.
+
+ * string/Makefile (strop-tests): Add strcasecmp.
+ * sysdeps/x86_64/Makefile [subdir=string] (sysdep_routines): Add
+ strcasecmp_l-nonascii.
+ (gen-as-const-headers): Add locale-defines.sym.
+ * sysdeps/x86_64/strcmp.S: Add support for strcasecmp implementation.
+ * sysdeps/x86_64/strcasecmp.S: New file.
+ * sysdeps/x86_64/strcasecmp_l.S: New file.
+ * sysdeps/x86_64/strcasecmp_l-nonascii.c: New file.
+ * sysdeps/x86_64/locale-defines.sym: New file.
+ * string/test-strcasecmp.c: New file.
+
+ * string/test-strcasestr.c: Test both ends of the range of characters.
+ * sysdeps/x86_64/multiarch/strstr.c: Fix UCHIGH definition.
+
+2010-07-29 Roland McGrath <roland@redhat.com>
+
+ [BZ #11856]
+ * manual/locale.texi (Yes-or-No Questions): Fix example code.
+
+2010-07-27 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/multiarch/strcmp-ssse3.S: Avoid compiling the file
+ for ld.so.
+
+2010-07-27 Andreas Schwab <schwab@redhat.com>
+
+ * manual/memory.texi (Malloc Tunable Parameters): Document
+ M_PERTURB.
+
+2010-07-26 Roland McGrath <roland@redhat.com>
+
+ [BZ #11840]
+ * configure.in (-fgnu89-inline check): Set and substitute
+ gnu89_inline, not libc_cv_gnu89_inline.
+ * configure: Regenerated.
+ * config.make.in (gnu89-inline-CFLAGS): Use @gnu89_inline@.
+
+2010-07-26 Ulrich Drepper <drepper@redhat.com>
+
+ * string/test-strnlen.c: New file.
+ * string/Makefile (strop-tests): Add strnlen.
+ * string/tester.c (test_strnlen): Add a few more test cases.
+ * string/tst-strlen.c: Better error reporting.
+
+ * sysdeps/x86_64/strnlen.S: New file.
+
+2010-07-24 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/multiarch/strstr.c (__m128i_strloadu_tolower): Use
+ lower-latency instructions.
+
+2010-07-23 Ulrich Drepper <drepper@redhat.com>
+
+ * string/test-strcasestr.c: New file.
+ * string/test-strstr.c: New file.
+ * string/Makefile (strop-tests): Add strstr and strcasestr.
+ * string/str-two-way.h: Don't undefine MAX.
+ * string/strcasestr.c: Don't define alias if NO_ALIAS is defined.
+
+2010-07-21 Andreas Schwab <schwab@redhat.com>
+
+ * sysdeps/i386/i686/multiarch/Makefile (sysdep_routines): Add
+ strcasestr-nonascii.
+ (CFLAGS-strcasestr-nonascii.c): Define.
+ * sysdeps/i386/i686/multiarch/strcasestr-nonascii.c: New file.
+ * sysdeps/x86_64/multiarch/strcasestr-nonascii.c (STRSTR_SSE42):
+ Remove unused attribute.
+
+2010-07-20 Roland McGrath <roland@redhat.com>
+
+ * elf/dl-sysdep.c (_dl_important_hwcaps): Add dsocaps mask to
+ dl_hwcap_mask as well as dl_hwcap. Without this, dsocaps matching in
+ ld.so.cache was broken. With it, there is no way to disable dsocaps
+ like LD_HWCAP_MASK can disable hwcaps.
+
+2010-06-02 Emilio Pozuelo Monfort <pochu27@gmail.com>
+
+ * sysdeps/mach/hurd/sendmsg.c (__libc_sendmsg): Fix memory leaks.
+
+2010-07-16 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/x86_64/multiarch/strstr.c: Rewrite to avoid indirect function
+ call in strcasestr.
+ * sysdeps/x86_64/multiarch/strcasestr.c: Declare
+ __strcasestr_sse42_nonascii.
+ * sysdeps/x86_64/multiarch/Makefile: Add rules to build
+ strcasestr-nonascii.c.
+ * sysdeps/x86_64/multiarch/strcasestr-nonascii.c: New file.
+
+2010-06-15 Luis Machado <luisgpm@br.ibm.com>
+
+ * sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S: New file.
+ * sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S: New file.
+ * sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S: New file.
+ * sysdeps/powerpc/powerpc64/power6/fpu/s_copysignf.S: New file.
+
+2010-07-09 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/fpathconf.c (__fpathconf): Use __fcntl not
+ fcntl.
+
+2010-07-06 Andreas Schwab <schwab@redhat.com>
+
+ * elf/dl-version.c (match_symbol): Don't pass NULL occation to
+ dl_signal_cerror.
+
+2010-07-06 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/fpathconf.c (__fpathconf): Implement
+ _PC_PIPE_BUF using F_GETPIPE_SZ.
+
+2010-07-05 Roland McGrath <roland@redhat.com>
+
+ * manual/arith.texi (Rounding Functions): Fix rint description
+ implicit in round description.
+
+2010-07-02 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/Makefile: Fix linking for a few tests to make recent linker
+ happy.
+
+2010-06-30 Andreas Schwab <schwab@redhat.com>
+
+ * dlfcn/Makefile (LDLIBS-bug-atexit3-lib.so): Readd
+ $(common-objpfx)libc_nonshared.a.
+
+2010-06-21 Luis Machado <luisgpm@br.ibm.com>
+
+ * sysdeps/powerpc/powerpc32/970/fpu/Implies: Remove.
+ * sysdeps/powerpc/powerpc32/power5/fpu/Implies: Remove.
+ * sysdeps/powerpc/powerpc32/power5+/fpu/Implies: Remove.
+ * sysdeps/powerpc/powerpc32/power6x/fpu/Implies: Remove.
+ * sysdeps/powerpc/powerpc64/970/fpu/Implies: Remove.
+ * sysdeps/powerpc/powerpc64/power5/fpu/Implies: Remove.
+ * sysdeps/powerpc/powerpc64/power5+/fpu/Implies: Remove.
+ * sysdeps/powerpc/powerpc64/power6x/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/970/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power4/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power5/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power5+/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power6x/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/970/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/fpu/Implies: Remove.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/fpu/Implies: Remove.
+ * sysdeps/powerpc/powerpc32/970/Implies: Point to power4.
+ * sysdeps/powerpc/powerpc32/power5/Implies: Point to power4.
+ * sysdeps/powerpc/powerpc32/power5+/Implies: Point to power5.
+ * sysdeps/powerpc/powerpc32/power6/Implies: Point to power5+.
+ * sysdeps/powerpc/powerpc32/power6x/Implies: Point to power6.
+ * sysdeps/powerpc/powerpc64/970/Implies: Point to power4.
+ * sysdeps/powerpc/powerpc64/power5/Implies: Point to power4.
+ * sysdeps/powerpc/powerpc64/power5+/Implies: Point to power5.
+ * sysdeps/powerpc/powerpc64/power6/Implies: Point to power5+.
+ * sysdeps/powerpc/powerpc64/power6x/Implies: Point to power6.
+ * sysdeps/powerpc/powerpc32/power7/Implies: New file.
+ * sysdeps/powerpc/powerpc64/power7/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/970/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/cell/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power4/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power5/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power6x/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/970/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/Implies: New file.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/Implies: New file.
+
+2010-06-25 H.J. Lu <hongjiu.lu@intel.com>
+
+ * debug/memmove_chk.c (__memmove_chk): Renamed to ...
+ (MEMMOVE_CHK): ...this. Default to __memmove_chk.
+ * string/memmove.c (memmove): Renamed to ...
+ (MEMMOVE): ...this. Default to memmove.
+ * sysdeps/x86_64/memcpy.S: Use ENTRY_CHK and END_CHK.
+ * sysdeps/x86_64/sysdep.h (ENTRY_CHK): Define.
+ (END_CHK): Define.
+ * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
+ memcpy-ssse3 mempcpy-ssse3 memmove-ssse3 memcpy-ssse3-back
+ mempcpy-ssse3-back memmove-ssse3-back.
+ * sysdeps/x86_64/multiarch/bcopy.S: New file .
+ * sysdeps/x86_64/multiarch/memcpy-ssse3-back.S: New file.
+ * sysdeps/x86_64/multiarch/memcpy-ssse3.S: New file.
+ * sysdeps/x86_64/multiarch/memcpy.S: New file.
+ * sysdeps/x86_64/multiarch/memcpy_chk.S: New file.
+ * sysdeps/x86_64/multiarch/memmove-ssse3-back.S: New file.
+ * sysdeps/x86_64/multiarch/memmove-ssse3.S: New file.
+ * sysdeps/x86_64/multiarch/memmove.c: New file.
+ * sysdeps/x86_64/multiarch/memmove_chk.c: New file.
+ * sysdeps/x86_64/multiarch/mempcpy-ssse3-back.S: New file.
+ * sysdeps/x86_64/multiarch/mempcpy-ssse3.S: New file.
+ * sysdeps/x86_64/multiarch/mempcpy.S: New file.
+ * sysdeps/x86_64/multiarch/mempcpy_chk.S: New file.
+ * sysdeps/x86_64/multiarch/init-arch.h (bit_Fast_Copy_Backward):
+ Define.
+ (index_Fast_Copy_Backward): Define.
+ (HAS_ARCH_FEATURE): Define.
+ (HAS_FAST_REP_STRING): Define.
+ (HAS_FAST_COPY_BACKWARD): Define.
+
+2010-06-21 Andreas Schwab <schwab@redhat.com>
* sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid):
Restore proper fallback handling.
diff --git a/libc/ChangeLog.17 b/libc/ChangeLog.17
index 6c1bff496..92f973968 100644
--- a/libc/ChangeLog.17
+++ b/libc/ChangeLog.17
@@ -3742,99 +3742,6 @@ d2009-10-30 Ulrich Drepper <drepper@redhat.com>
2009-05-20 Ulrich Drepper <drepper@redhat.com>
- Sun approved the change of the license.
- * sunrpc/auth_des.c: Replace license text.
- * sunrpc/auth_none.c: Likewise.
- * sunrpc/auth_unix.c: Likewise.
- * sunrpc/authdes_prot.c: Likewise.
- * sunrpc/authuxprot.c: Likewise.
- * sunrpc/bindrsvprt.c: Likewise.
- * sunrpc/clnt_gen.c: Likewise.
- * sunrpc/clnt_perr.c: Likewise.
- * sunrpc/clnt_raw.c: Likewise.
- * sunrpc/clnt_simp.c: Likewise.
- * sunrpc/clnt_tcp.c: Likewise.
- * sunrpc/clnt_udp.c: Likewise.
- * sunrpc/clnt_unix.c: Likewise.
- * sunrpc/des_crypt.c: Likewise.
- * sunrpc/des_soft.c: Likewise.
- * sunrpc/get_myaddr.c: Likewise.
- * sunrpc/getrpcport.c: Likewise.
- * sunrpc/key_call.c: Likewise.
- * sunrpc/key_prot.c: Likewise.
- * sunrpc/openchild.c: Likewise.
- * sunrpc/pm_getmaps.c: Likewise.
- * sunrpc/pm_getport.c: Likewise.
- * sunrpc/pmap_clnt.c: Likewise.
- * sunrpc/pmap_prot.c: Likewise.
- * sunrpc/pmap_prot2.c: Likewise.
- * sunrpc/pmap_rmt.c: Likewise.
- * sunrpc/rpc/auth.h: Likewise.
- * sunrpc/rpc/auth_unix.h: Likewise.
- * sunrpc/rpc/clnt.h: Likewise.
- * sunrpc/rpc/des_crypt.h: Likewise.
- * sunrpc/rpc/key_prot.h: Likewise.
- * sunrpc/rpc/netdb.h: Likewise.
- * sunrpc/rpc/pmap_clnt.h: Likewise.
- * sunrpc/rpc/pmap_prot.h: Likewise.
- * sunrpc/rpc/pmap_rmt.h: Likewise.
- * sunrpc/rpc/rpc.h: Likewise.
- * sunrpc/rpc/rpc_des.h: Likewise.
- * sunrpc/rpc/rpc_msg.h: Likewise.
- * sunrpc/rpc/svc.h: Likewise.
- * sunrpc/rpc/svc_auth.h: Likewise.
- * sunrpc/rpc/types.h: Likewise.
- * sunrpc/rpc/xdr.h: Likewise.
- * sunrpc/rpc_clntout.c: Likewise.
- * sunrpc/rpc_cmsg.c: Likewise.
- * sunrpc/rpc_common.c: Likewise.
- * sunrpc/rpc_cout.c: Likewise.
- * sunrpc/rpc_dtable.c: Likewise.
- * sunrpc/rpc_hout.c: Likewise.
- * sunrpc/rpc_main.c: Likewise.
- * sunrpc/rpc_parse.c: Likewise.
- * sunrpc/rpc_parse.h: Likewise.
- * sunrpc/rpc_prot.c: Likewise.
- * sunrpc/rpc_sample.c: Likewise.
- * sunrpc/rpc_scan.c: Likewise.
- * sunrpc/rpc_scan.h: Likewise.
- * sunrpc/rpc_svcout.c: Likewise.
- * sunrpc/rpc_tblout.c: Likewise.
- * sunrpc/rpc_util.c: Likewise.
- * sunrpc/rpc_util.h: Likewise.
- * sunrpc/rpcinfo.c: Likewise.
- * sunrpc/rpcsvc/bootparam_prot.x: Likewise.
- * sunrpc/rpcsvc/key_prot.x: Likewise.
- * sunrpc/rpcsvc/klm_prot.x: Likewise.
- * sunrpc/rpcsvc/mount.x: Likewise.
- * sunrpc/rpcsvc/nfs_prot.x: Likewise.
- * sunrpc/rpcsvc/rex.x: Likewise.
- * sunrpc/rpcsvc/rstat.x: Likewise.
- * sunrpc/rpcsvc/rusers.x: Likewise.
- * sunrpc/rpcsvc/sm_inter.x: Likewise.
- * sunrpc/rpcsvc/spray.x: Likewise.
- * sunrpc/rpcsvc/yppasswd.x: Likewise.
- * sunrpc/rtime.c: Likewise.
- * sunrpc/svc.c: Likewise.
- * sunrpc/svc_auth.c: Likewise.
- * sunrpc/svc_authux.c: Likewise.
- * sunrpc/svc_raw.c: Likewise.
- * sunrpc/svc_run.c: Likewise.
- * sunrpc/svc_simple.c: Likewise.
- * sunrpc/svc_tcp.c: Likewise.
- * sunrpc/svc_udp.c: Likewise.
- * sunrpc/svc_unix.c: Likewise.
- * sunrpc/svcauth_des.c: Likewise.
- * sunrpc/xcrypt.c: Likewise.
- * sunrpc/xdr.c: Likewise.
- * sunrpc/xdr_array.c: Likewise.
- * sunrpc/xdr_float.c: Likewise.
- * sunrpc/xdr_mem.c: Likewise.
- * sunrpc/xdr_rec.c: Likewise.
- * sunrpc/xdr_ref.c: Likewise.
- * sunrpc/xdr_sizeof.c: Likewise.
- * sunrpc/xdr_stdio.c: Likewise.
-
* po/da.po: Update from translation team.
2009-05-18 Kaz Kojima <kkojima@rr.iij4u.or.jp>
diff --git a/libc/NEWS b/libc/NEWS
index aafc4b055..8d9bb43ec 100644
--- a/libc/NEWS
+++ b/libc/NEWS
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes. 2010-6-19
+GNU C Library NEWS -- history of user-visible changes. 2010-7-29
Copyright (C) 1992-2009, 2010 Free Software Foundation, Inc.
See the end for copying conditions.
@@ -9,9 +9,12 @@ Version 2.13
* The following bugs are resolved with this release:
- 11640, 11701
+ 11640, 11701, 11840, 11856
* POWER7 optimizations: memset, memcmp, strncmp
+
+* New optimized string functions for x86-64: strnlen, strcasecmp
+ Implemented by Ulrich Drepper.
Version 2.12
diff --git a/libc/Versions.def b/libc/Versions.def
index eab006b83..0ccda50da 100644
--- a/libc/Versions.def
+++ b/libc/Versions.def
@@ -29,6 +29,7 @@ libc {
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
+ GLIBC_2.13
%ifdef USE_IN_LIBIO
HURD_CTHREADS_0.3
%endif
diff --git a/libc/config.make.in b/libc/config.make.in
index a62c37885..9080bccff 100644
--- a/libc/config.make.in
+++ b/libc/config.make.in
@@ -59,7 +59,7 @@ have-cpp-asm-debuginfo = @libc_cv_cpp_asm_debuginfo@
enable-check-abi = @enable_check_abi@
have-forced-unwind = @libc_cv_forced_unwind@
have-fpie = @libc_cv_fpie@
-gnu89-inline-CFLAGS = @libc_cv_gnu89_inline@
+gnu89-inline-CFLAGS = @gnu89_inline@
have-ssp = @libc_cv_ssp@
have-selinux = @have_selinux@
have-libaudit = @have_libaudit@
diff --git a/libc/configure b/libc/configure
index fbef30719..e290b57f1 100755
--- a/libc/configure
+++ b/libc/configure
@@ -682,7 +682,7 @@ libc_cv_cc_submachine
exceptions
no_whole_archive
libc_cv_have_initfini
-libc_cv_gnu89_inline
+gnu89_inline
libc_cv_ssp
fno_unit_at_a_time
libc_cv_hashstyle
@@ -6998,9 +6998,9 @@ fi
{ $as_echo "$as_me:$LINENO: result: $libc_cv_gnu89_inline" >&5
$as_echo "$libc_cv_gnu89_inline" >&6; }
if test $libc_cv_gnu89_inline = yes; then
- libc_cv_gnu89_inline=-fgnu89-inline
+ gnu89_inline=-fgnu89-inline
else
- libc_cv_gnu89_inline=
+ gnu89_inline=
fi
diff --git a/libc/configure.in b/libc/configure.in
index 292c9092a..de0cee73d 100644
--- a/libc/configure.in
+++ b/libc/configure.in
@@ -1827,11 +1827,11 @@ else
fi
rm -f conftest*])
if test $libc_cv_gnu89_inline = yes; then
- libc_cv_gnu89_inline=-fgnu89-inline
+ gnu89_inline=-fgnu89-inline
else
- libc_cv_gnu89_inline=
+ gnu89_inline=
fi
-AC_SUBST(libc_cv_gnu89_inline)
+AC_SUBST(gnu89_inline)
if test $elf != yes; then
AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
diff --git a/libc/debug/memmove_chk.c b/libc/debug/memmove_chk.c
index f3b74d23d..6a3e157d8 100644
--- a/libc/debug/memmove_chk.c
+++ b/libc/debug/memmove_chk.c
@@ -23,8 +23,12 @@
#include <memcopy.h>
#include <pagecopy.h>
+#ifndef MEMMOVE_CHK
+# define MEMMOVE_CHK __memmove_chk
+#endif
+
void *
-__memmove_chk (dest, src, len, destlen)
+MEMMOVE_CHK (dest, src, len, destlen)
void *dest;
const void *src;
size_t len;
diff --git a/libc/dlfcn/Makefile b/libc/dlfcn/Makefile
index f67466e56..da0d9d5d9 100644
--- a/libc/dlfcn/Makefile
+++ b/libc/dlfcn/Makefile
@@ -130,7 +130,7 @@ $(objpfx)bug-atexit1.out: $(objpfx)bug-atexit1-lib.so
$(objpfx)bug-atexit2: $(libdl)
$(objpfx)bug-atexit2.out: $(objpfx)bug-atexit2-lib.so
-LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh
+LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh $(common-objpfx)libc_nonshared.a
$(objpfx)bug-atexit3: $(libdl)
$(objpfx)bug-atexit3.out: $(objpfx)bug-atexit3-lib.so
diff --git a/libc/elf/Makefile b/libc/elf/Makefile
index 8c6c21cc0..31209387c 100644
--- a/libc/elf/Makefile
+++ b/libc/elf/Makefile
@@ -28,7 +28,7 @@ routines = $(dl-routines) dl-support dl-iteratephdr \
# The core dynamic linking functions are in libc for the static and
# profiled libraries.
dl-routines = $(addprefix dl-,load cache lookup object reloc deps \
- runtime error init fini debug misc \
+ runtime error init fini debug misc \
version profile conflict tls origin scope \
execstack caller open close trampoline)
all-dl-routines = $(dl-routines) $(sysdep-dl-routines)
@@ -225,7 +225,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
neededobj5 neededobj6 firstobj globalmod1 \
unload2mod unload2dep ltglobmod1 ltglobmod2 pathoptobj \
dblloadmod1 dblloadmod2 dblloadmod3 reldepmod5 reldepmod6 \
- reldep6mod0 reldep6mod1 reldep6mod2 reldep6mod3 reldep6mod4 \
+ reldep6mod0 reldep6mod1 reldep6mod2 reldep6mod3 reldep6mod4 \
reldep7mod1 reldep7mod2 \
tst-tlsmod1 tst-tlsmod2 tst-tlsmod3 tst-tlsmod4 \
tst-tlsmod5 tst-tlsmod6 tst-tlsmod7 tst-tlsmod8 \
@@ -766,11 +766,11 @@ $(objpfx)tst-tls8.out: $(objpfx)tst-tlsmod3.so $(objpfx)tst-tlsmod4.so
$(objpfx)tst-tls9: $(libdl)
$(objpfx)tst-tls9.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
-$(objpfx)tst-tls10: $(objpfx)tst-tlsmod8.so
+$(objpfx)tst-tls10: $(objpfx)tst-tlsmod8.so $(objpfx)tst-tlsmod7.so
-$(objpfx)tst-tls11: $(objpfx)tst-tlsmod10.so
+$(objpfx)tst-tls11: $(objpfx)tst-tlsmod10.so $(objpfx)tst-tlsmod9.so
-$(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so
+$(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so $(objpfx)tst-tlsmod11.so
$(objpfx)tst-tls13: $(libdl)
$(objpfx)tst-tls13.out: $(objpfx)tst-tlsmod13a.so
@@ -933,11 +933,11 @@ $(objpfx)tst-dlmodcount: $(libdl)
$(objpfx)tst-dlmodcount.out: $(test-modules)
check-data := $(firstword $(wildcard \
- $(foreach D,$(add-ons) scripts,\
- $(patsubst %,$(..)$D/data/localplt-%.data,\
- $(abi-name) \
- $(addsuffix -$(config-os),\
- $(config-machine) \
+ $(foreach D,$(add-ons) scripts,\
+ $(patsubst %,$(..)$D/data/localplt-%.data,\
+ $(abi-name) \
+ $(addsuffix -$(config-os),\
+ $(config-machine) \
$(base-machine)) \
generic))))
@@ -949,9 +949,9 @@ endif
$(objpfx)check-localplt.out: $(objpfx)check-localplt \
$(common-objpfx)libc.so \
- $(common-objpfx)math/libm.so $(thread-dso) \
- $(common-objpfx)rt/librt.so \
- $(common-objpfx)dlfcn/libdl.so \
+ $(common-objpfx)math/libm.so $(thread-dso) \
+ $(common-objpfx)rt/librt.so \
+ $(common-objpfx)dlfcn/libdl.so \
$(common-objpfx)resolv/libresolv.so \
$(common-objpfx)crypt/libcrypt.so \
$(check-data)
diff --git a/libc/elf/dl-close.c b/libc/elf/dl-close.c
index f523c3a88..c8d9e29a9 100644
--- a/libc/elf/dl-close.c
+++ b/libc/elf/dl-close.c
@@ -1,5 +1,5 @@
/* Close a shared object opened by `_dl_open'.
- Copyright (C) 1996-2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1996-2007, 2009, 2010 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
@@ -274,7 +274,7 @@ _dl_close_worker (struct link_map *map)
}
#ifdef SHARED
- /* Auditing checkpoint: we have a new object. */
+ /* Auditing checkpoint: we remove an object. */
if (__builtin_expect (do_audit, 0))
{
struct audit_ifaces *afct = GLRO(dl_audit);
diff --git a/libc/elf/dl-sysdep.c b/libc/elf/dl-sysdep.c
index 160503dac..e6c8660cf 100644
--- a/libc/elf/dl-sysdep.c
+++ b/libc/elf/dl-sysdep.c
@@ -425,6 +425,11 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
{
const ElfW(Word) mask = ((const ElfW(Word) *) dsocaps)[-1];
GLRO(dl_hwcap) |= (uint64_t) mask << _DL_FIRST_EXTRA;
+ /* Note that we add the dsocaps to the set already chosen by the
+ LD_HWCAP_MASK environment variable (or default HWCAP_IMPORTANT).
+ So there is no way to request ignoring an OS-supplied dsocap
+ string and bit like you can ignore an OS-supplied HWCAP bit. */
+ GLRO(dl_hwcap_mask) |= (uint64_t) mask << _DL_FIRST_EXTRA;
size_t len;
for (const char *p = dsocaps; p < dsocaps + dsocapslen; p += len + 1)
{
diff --git a/libc/elf/dl-version.c b/libc/elf/dl-version.c
index 053de6d76..2e9acb6ca 100644
--- a/libc/elf/dl-version.c
+++ b/libc/elf/dl-version.c
@@ -169,7 +169,7 @@ no version information available (required by ", name, ")");
result = 1;
call_cerror:
_dl_signal_cerror (0, map->l_name[0] ? map->l_name : rtld_progname,
- NULL, errstring);
+ N_("version lookup error"), errstring);
return result;
}
diff --git a/libc/hurd/hurdselect.c b/libc/hurd/hurdselect.c
index 544eee9cb..a7228f061 100644
--- a/libc/hurd/hurdselect.c
+++ b/libc/hurd/hurdselect.c
@@ -52,7 +52,7 @@ _hurd_select (int nfds,
int firstfd, lastfd;
mach_msg_timeout_t to = (timeout != NULL ?
(timeout->tv_sec * 1000 +
- timeout->tv_nsec / 1000000) :
+ (timeout->tv_nsec + 999999) / 1000000) :
0);
struct
{
diff --git a/libc/manual/arith.texi b/libc/manual/arith.texi
index b1580a06f..1b8a8c3d6 100644
--- a/libc/manual/arith.texi
+++ b/libc/manual/arith.texi
@@ -1407,7 +1407,8 @@ do not raise the inexact exception if @var{x} is not an integer.
@comment ISO
@deftypefunx {long double} roundl (long double @var{x})
These functions are similar to @code{rint}, but they round halfway
-cases away from zero instead of to the nearest even integer.
+cases away from zero instead of to the nearest integer (or other
+current rounding mode).
@end deftypefun
@comment math.h
diff --git a/libc/manual/locale.texi b/libc/manual/locale.texi
index e3e0563a3..d1a50cb0f 100644
--- a/libc/manual/locale.texi
+++ b/libc/manual/locale.texi
@@ -1210,7 +1210,7 @@ This function would normally be used like this:
/* @r{Prepare the @code{getline} call.} */
line = NULL;
len = 0;
- while (getline (&line, &len, stdout) >= 0)
+ while (getline (&line, &len, stdin) >= 0)
@{
/* @r{Check the response.} */
int res = rpmatch (line);
diff --git a/libc/manual/memory.texi b/libc/manual/memory.texi
index 59ea1ee34..db63c3313 100644
--- a/libc/manual/memory.texi
+++ b/libc/manual/memory.texi
@@ -702,6 +702,11 @@ be allocated via @code{mmap}.
@item M_MMAP_MAX
The maximum number of chunks to allocate with @code{mmap}. Setting this
to zero disables all use of @code{mmap}.
+@item M_PERTURB
+If non-zero, memory blocks are filled with values depending on some
+low order bits of this parameter when they are allocated (except when
+allocated by @code{calloc}) and freed. This can be used to debug the
+use of uninitialized or freed heap memory.
@end table
@end deftypefun
diff --git a/libc/nptl/ChangeLog b/libc/nptl/ChangeLog
index 49ead511b..c1f8620eb 100644
--- a/libc/nptl/ChangeLog
+++ b/libc/nptl/ChangeLog
@@ -1,3 +1,40 @@
+2010-07-06 Andreas Schwab <schwab@redhat.com>
+
+ * sysdeps/unix/sysv/linux/pthread_getname.c (pthread_getname_np):
+ Fix type mismatch.
+
+2010-07-03 Ulrich Drepper <drepper@redhat.com>
+
+ * tst-abstime.c (do_test): Some more cleanups
+
+2010-07-02 Ulrich Drepper <drepper@redhat.com>
+
+ * tst-abstime.c: Correct testing and add test for sem_timedwait.
+
+2010-07-01 Andreas Schwab <schwab@redhat.com>
+ Ulrich Drepper <drepper@redhat.com>
+
+ * Makefile (tests): Add tst-abstime.
+ * tst-abstime.c: New file.
+ * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
+ (__lll_timedlock_wait): Check for timestamp before the Epoch.
+ * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
+ (__lll_timedlock_wait): Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
+ (__lll_robust_timedlock_wait): Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+ (__pthread_cond_timedwait): Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
+ (pthread_rwlock_timedrdlock): Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
+ (pthread_rwlock_timedwrlock): Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
+ Likewise.
+
+2010-07-01 Ulrich Drepper <drepper@redhat.com>
+
+ * Makefile (tst-_res1): Add tst-_res1mod1 to dependency list.
+
2010-06-01 Takashi Yoshii <takashi.yoshii.zj@renesas.com>
* sysdeps/unix/sysv/linux/sh/lowlevellock.S: Fix incorrect
diff --git a/libc/nptl/Makefile b/libc/nptl/Makefile
index 658f8d192..2e037f977 100644
--- a/libc/nptl/Makefile
+++ b/libc/nptl/Makefile
@@ -259,6 +259,7 @@ tests = tst-typesizes \
tst-context1 \
tst-sched1 \
tst-oddstacklimit \
+ tst-abstime \
tst-vfork1 tst-vfork2 tst-vfork1x tst-vfork2x \
tst-getpid1 tst-getpid2 tst-getpid3 \
tst-initializers1 $(patsubst %,tst-initializers1-%,c89 gnu89 c99 gnu99)
@@ -511,7 +512,8 @@ $(objpfx)tst-rwlock14: $(common-objpfx)rt/librt.so
$(objpfx)tst-_res1mod2.so: $(objpfx)tst-_res1mod1.so
LDFLAGS-tst-_res1mod1.so = -Wl,-soname,tst-_res1mod1.so
LDFLAGS-tst-_res1mod2.so = -Wl,-soname,tst-_res1mod2.so
-$(objpfx)tst-_res1: $(objpfx)tst-_res1mod2.so $(shared-thread-library)
+$(objpfx)tst-_res1: $(objpfx)tst-_res1mod1.so $(objpfx)tst-_res1mod2.so \
+ $(shared-thread-library)
else
$(objpfx)tst-cond11: $(common-objpfx)rt/librt.a
$(objpfx)tst-cond19: $(common-objpfx)rt/librt.a
diff --git a/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S b/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
index 7578c7ece..2198ccf55 100644
--- a/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
+++ b/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2004, 2006, 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2004,2006,2007,2009,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -188,6 +188,9 @@ __lll_timedlock_wait:
je .Lreltmo
# endif
+ cmpl $0, (%edx)
+ js 8f
+
movl %ecx, %ebx
movl %esi, %ecx
movl %edx, %esi
@@ -223,6 +226,9 @@ __lll_timedlock_wait:
cfi_restore(%ebp)
ret
+8: movl $ETIMEDOUT, %eax
+ jmp 7b
+
# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
.Lreltmo:
/* Check for a valid timeout value. */
diff --git a/libc/nptl/sysdeps/unix/sysv/linux/pthread_getname.c b/libc/nptl/sysdeps/unix/sysv/linux/pthread_getname.c
index 593219b8f..6e7786f98 100644
--- a/libc/nptl/sysdeps/unix/sysv/linux/pthread_getname.c
+++ b/libc/nptl/sysdeps/unix/sysv/linux/pthread_getname.c
@@ -42,7 +42,7 @@ pthread_getname_np (th, buf, len)
if (len < TASK_COMM_LEN)
return ERANGE;
- if (th == THREAD_SELF)
+ if (pd == THREAD_SELF)
return prctl (PR_GET_NAME, buf) ? errno : 0;
#define FMT "/proc/self/task/%u/comm"
diff --git a/libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S b/libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
index 8de9cf461..3195db259 100644
--- a/libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
+++ b/libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2006, 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2006, 2007, 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -169,9 +169,13 @@ __lll_timedlock_wait:
je .Lreltmo
# endif
+ cmpq $0, (%rdx)
+ js 5f
+
pushq %r9
cfi_adjust_cfa_offset(8)
cfi_rel_offset(%r9, 0)
+
movq %rdx, %r10
movl $0xffffffff, %r9d
LOAD_FUTEX_WAIT_ABS (%esi)
@@ -202,6 +206,9 @@ __lll_timedlock_wait:
cfi_restore(%r9)
retq
+5: movl $ETIMEDOUT, %eax
+ retq
+
# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
.Lreltmo:
/* Check for a valid timeout value. */
diff --git a/libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S b/libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
index 02db0a4f9..5218a4f57 100644
--- a/libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
+++ b/libc/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
@@ -1,5 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009
- Free Software Foundation, Inc.
+/* Copyright (C) 2002=2007, 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -125,6 +124,9 @@ __lll_robust_timedlock_wait:
je .Lreltmo
# endif
+ cmpq $0, (%rdx)
+ js 7f
+
pushq %r9
cfi_adjust_cfa_offset(8)
cfi_rel_offset(%r9, 0)
@@ -180,6 +182,9 @@ __lll_robust_timedlock_wait:
cfi_adjust_cfa_offset(-8)
cfi_restore(%r9)
+7: movl $ETIMEDOUT, %eax
+ retq
+
# ifndef __ASSUME_FUTEX_CLOCK_REALTIME
.Lreltmo:
diff --git a/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S b/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
index be14fc897..e6535fb9a 100644
--- a/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+++ b/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2005, 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2005, 2007, 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -144,6 +144,10 @@ __pthread_cond_timedwait:
movq %r9, 24(%rsp)
movl %edx, 4(%rsp)
+ cmpq $0, (%r13)
+ movq $-ETIMEDOUT, %r14
+ js 36f
+
38: movl cond_futex(%rdi), %r12d
/* Unlock. */
diff --git a/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S b/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
index 23b218af3..f5d055c77 100644
--- a/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
+++ b/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2005, 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2005, 2007, 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -102,6 +102,9 @@ pthread_rwlock_timedrdlock:
je .Lreltmo
#endif
+ cmpq $0, (%r13)
+ js 16f /* Time is already up. */
+
movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi
xorl PSHARED(%r12), %esi
movq %r13, %r10
diff --git a/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S b/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
index cd867b60d..6ed8b49bd 100644
--- a/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
+++ b/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2005, 2007, 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -99,6 +99,9 @@ pthread_rwlock_timedwrlock:
je .Lreltmo
#endif
+ cmpq $0, (%r13)
+ js 16f /* Time is already up. */
+
movl $FUTEX_PRIVATE_FLAG|FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %esi
xorl PSHARED(%r12), %esi
movq %r13, %r10
diff --git a/libc/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S b/libc/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
index 0291beb16..ca49cb89d 100644
--- a/libc/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
+++ b/libc/nptl/sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002,2003,2005,2007,2009,2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -77,6 +77,9 @@ sem_timedwait:
je .Lreltmo
#endif
+ cmpq $0, (%rsi)
+ js 16f
+
/* This push is only needed to store the sem_t pointer for the
exception handler. */
pushq %rdi
@@ -169,6 +172,19 @@ sem_timedwait:
retq
+16:
+#if USE___THREAD
+ movq errno@gottpoff(%rip), %rdx
+ movl $ETIMEDOUT, %fs:(%rdx)
+#else
+ callq __errno_location@plt
+ movl $ETIMEDOUT, (%rax)
+#endif
+
+ orl $-1, %eax
+
+ retq
+
#ifndef __ASSUME_FUTEX_CLOCK_REALTIME
.Lreltmo:
pushq %r12
diff --git a/libc/nptl/tst-abstime.c b/libc/nptl/tst-abstime.c
new file mode 100644
index 000000000..50f35d539
--- /dev/null
+++ b/libc/nptl/tst-abstime.c
@@ -0,0 +1,98 @@
+/* Copyright (C) 2010 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Andreas Schwab <schwab@redhat.com>, 2010.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <pthread.h>
+#include <semaphore.h>
+#include <stdio.h>
+
+static pthread_cond_t c = PTHREAD_COND_INITIALIZER;
+static pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER;
+static pthread_rwlock_t rw1 = PTHREAD_RWLOCK_INITIALIZER;
+static pthread_rwlock_t rw2 = PTHREAD_RWLOCK_INITIALIZER;
+static sem_t sem;
+
+static void *
+th (void *arg)
+{
+ long int res = 0;
+ int r;
+ struct timespec t = { -2, 0 };
+
+ r = pthread_mutex_timedlock (&m1, &t);
+ if (r != ETIMEDOUT)
+ {
+ puts ("pthread_mutex_timedlock did not return ETIMEDOUT");
+ res = 1;
+ }
+ r = pthread_rwlock_timedrdlock (&rw1, &t);
+ if (r != ETIMEDOUT)
+ {
+ puts ("pthread_rwlock_timedrdlock did not return ETIMEDOUT");
+ res = 1;
+ }
+ r = pthread_rwlock_timedwrlock (&rw2, &t);
+ if (r != ETIMEDOUT)
+ {
+ puts ("pthread_rwlock_timedwrlock did not return ETIMEDOUT");
+ res = 1;
+ }
+ return (void *) res;
+}
+
+static int
+do_test (void)
+{
+ int res = 0;
+ int r;
+ struct timespec t = { -2, 0 };
+ pthread_t pth;
+
+ sem_init (&sem, 0, 0);
+ r = sem_timedwait (&sem, &t);
+ if (r != -1 || errno != ETIMEDOUT)
+ {
+ puts ("sem_timedwait did not fail with ETIMEDOUT");
+ res = 1;
+ }
+
+ pthread_mutex_lock (&m1);
+ pthread_rwlock_wrlock (&rw1);
+ pthread_rwlock_rdlock (&rw2);
+ pthread_mutex_lock (&m2);
+ if (pthread_create (&pth, 0, th, 0) != 0)
+ {
+ puts ("cannot create thread");
+ return 1;
+ }
+ r = pthread_cond_timedwait (&c, &m2, &t);
+ if (r != ETIMEDOUT)
+ {
+ puts ("pthread_cond_timedwait did not return ETIMEDOUT");
+ res = 1;
+ }
+ void *thres;
+ pthread_join (pth, &thres);
+ return res | (thres != NULL);
+}
+
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/libc/stdlib/Versions b/libc/stdlib/Versions
index 3e7b8921c..2aa396ecb 100644
--- a/libc/stdlib/Versions
+++ b/libc/stdlib/Versions
@@ -100,6 +100,9 @@ libc {
GLIBC_2.10 {
quick_exit; __cxa_at_quick_exit;
}
+ GLIBC_2.13 {
+ __fentry__;
+ }
GLIBC_PRIVATE {
# functions which have an additional interface since they are
# are cancelable.
diff --git a/libc/string/Makefile b/libc/string/Makefile
index 650ff47c0..7c952b06e 100644
--- a/libc/string/Makefile
+++ b/libc/string/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2002, 2005-2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1991-2002, 2005-2008, 2009, 2010 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
@@ -38,7 +38,7 @@ routines := strcat strchr strcmp strcoll strcpy strcspn \
memccpy memcpy wordcopy strsep strcasestr \
swab strfry memfrob memmem rawmemchr strchrnul \
$(addprefix argz-,append count create ctsep next \
- delete extract insert stringify \
+ delete extract insert stringify \
addsep replace) \
basename \
strcoll_l strxfrm_l string-inlines memrchr \
@@ -52,7 +52,8 @@ o-objects.ob := memcpy.o memset.o memchr.o
strop-tests := memchr memcmp memcpy memmove mempcpy memset memccpy \
stpcpy stpncpy strcat strchr strcmp strcpy strcspn \
- strlen strncmp strncpy strpbrk strrchr strspn memmem
+ strlen strncmp strncpy strpbrk strrchr strspn memmem \
+ strstr strcasestr strnlen strcasecmp
tests := tester inl-tester noinl-tester testcopy test-ffs \
tst-strlen stratcliff tst-svc tst-inlcall \
bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \
diff --git a/libc/string/memmove.c b/libc/string/memmove.c
index 16671f7bb..8e36e7c5a 100644
--- a/libc/string/memmove.c
+++ b/libc/string/memmove.c
@@ -37,9 +37,12 @@
#define rettype void *
#endif
+#ifndef MEMMOVE
+#define MEMMOVE memmove
+#endif
rettype
-memmove (a1, a2, len)
+MEMMOVE (a1, a2, len)
a1const void *a1;
a2const void *a2;
size_t len;
diff --git a/libc/string/str-two-way.h b/libc/string/str-two-way.h
index 87ed8a036..502af4704 100644
--- a/libc/string/str-two-way.h
+++ b/libc/string/str-two-way.h
@@ -1,5 +1,5 @@
/* Byte-wise substring search, using the Two-Way algorithm.
- Copyright (C) 2008 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written by Eric Blake <ebb9@byu.net>, 2008.
@@ -426,5 +426,4 @@ two_way_long_needle (const unsigned char *haystack, size_t haystack_len,
#undef AVAILABLE
#undef CANON_ELEMENT
#undef CMP_FUNC
-#undef MAX
#undef RETURN_TYPE
diff --git a/libc/string/strcasestr.c b/libc/string/strcasestr.c
index 088b5d91c..f0b2fa55b 100644
--- a/libc/string/strcasestr.c
+++ b/libc/string/strcasestr.c
@@ -1,5 +1,5 @@
/* Return the offset of one string within another.
- Copyright (C) 1994, 1996-2000, 2004, 2008, 2009
+ Copyright (C) 1994, 1996-2000, 2004, 2008, 2009, 2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -103,4 +103,6 @@ STRCASESTR (const char *haystack_start, const char *needle_start)
#undef LONG_NEEDLE_THRESHOLD
+#ifndef NO_ALIAS
weak_alias (__strcasestr, strcasestr)
+#endif
diff --git a/libc/string/test-strcasecmp.c b/libc/string/test-strcasecmp.c
new file mode 100644
index 000000000..7d1d11014
--- /dev/null
+++ b/libc/string/test-strcasecmp.c
@@ -0,0 +1,276 @@
+/* Test and measure strcasecmp functions.
+ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <ctype.h>
+#define TEST_MAIN
+#include "test-string.h"
+
+typedef int (*proto_t) (const char *, const char *);
+static int simple_strcasecmp (const char *, const char *);
+static int stupid_strcasecmp (const char *, const char *);
+
+IMPL (stupid_strcasecmp, 0)
+IMPL (simple_strcasecmp, 0)
+IMPL (strcasecmp, 1)
+
+static int
+simple_strcasecmp (const char *s1, const char *s2)
+{
+ int ret;
+
+ while ((ret = ((unsigned char) tolower (*s1)
+ - (unsigned char) tolower (*s2))) == 0
+ && *s1++)
+ ++s2;
+ return ret;
+}
+
+static int
+stupid_strcasecmp (const char *s1, const char *s2)
+{
+ size_t ns1 = strlen (s1) + 1, ns2 = strlen (s2) + 1;
+ size_t n = ns1 < ns2 ? ns1 : ns2;
+ int ret = 0;
+
+ while (n--)
+ {
+ if ((ret = ((unsigned char) tolower (*s1)
+ - (unsigned char) tolower (*s2))) != 0)
+ break;
+ ++s1;
+ ++s2;
+ }
+ return ret;
+}
+
+static void
+do_one_test (impl_t *impl, const char *s1, const char *s2, int exp_result)
+{
+ int result = CALL (impl, s1, s2);
+ if ((exp_result == 0 && result != 0)
+ || (exp_result < 0 && result >= 0)
+ || (exp_result > 0 && result <= 0))
+ {
+ error (0, 0, "Wrong result in function %s %d %d", impl->name,
+ result, exp_result);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s1, s2);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align1, size_t align2, size_t len, int max_char,
+ int exp_result)
+{
+ size_t i;
+ char *s1, *s2;
+
+ if (len == 0)
+ return;
+
+ align1 &= 7;
+ if (align1 + len + 1 >= page_size)
+ return;
+
+ align2 &= 7;
+ if (align2 + len + 1 >= page_size)
+ return;
+
+ s1 = (char *) (buf1 + align1);
+ s2 = (char *) (buf2 + align2);
+
+ for (i = 0; i < len; i++)
+ {
+ s1[i] = toupper (1 + 23 * i % max_char);
+ s2[i] = tolower (s1[i]);
+ }
+
+ s1[len] = s2[len] = 0;
+ s1[len + 1] = 23;
+ s2[len + 1] = 24 + exp_result;
+ if ((s2[len - 1] == 'z' && exp_result == -1)
+ || (s2[len - 1] == 'a' && exp_result == 1))
+ s1[len - 1] += exp_result;
+ else
+ s2[len - 1] -= exp_result;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s1, s2, exp_result);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+static void
+do_random_tests (void)
+{
+ size_t i, j, n, align1, align2, pos, len1, len2;
+ int result;
+ long r;
+ unsigned char *p1 = buf1 + page_size - 512;
+ unsigned char *p2 = buf2 + page_size - 512;
+
+ for (n = 0; n < ITERATIONS; n++)
+ {
+ align1 = random () & 31;
+ if (random () & 1)
+ align2 = random () & 31;
+ else
+ align2 = align1 + (random () & 24);
+ pos = random () & 511;
+ j = align1 > align2 ? align1 : align2;
+ if (pos + j >= 511)
+ pos = 510 - j - (random () & 7);
+ len1 = random () & 511;
+ if (pos >= len1 && (random () & 1))
+ len1 = pos + (random () & 7);
+ if (len1 + j >= 512)
+ len1 = 511 - j - (random () & 7);
+ if (pos >= len1)
+ len2 = len1;
+ else
+ len2 = len1 + (len1 != 511 - j ? random () % (511 - j - len1) : 0);
+ j = (pos > len2 ? pos : len2) + align1 + 64;
+ if (j > 512)
+ j = 512;
+ for (i = 0; i < j; ++i)
+ {
+ p1[i] = tolower (random () & 255);
+ if (i < len1 + align1 && !p1[i])
+ {
+ p1[i] = tolower (random () & 255);
+ if (!p1[i])
+ p1[i] = tolower (1 + (random () & 127));
+ }
+ }
+ for (i = 0; i < j; ++i)
+ {
+ p2[i] = toupper (random () & 255);
+ if (i < len2 + align2 && !p2[i])
+ {
+ p2[i] = toupper (random () & 255);
+ if (!p2[i])
+ toupper (p2[i] = 1 + (random () & 127));
+ }
+ }
+
+ result = 0;
+ memcpy (p2 + align2, p1 + align1, pos);
+ if (pos < len1)
+ {
+ if (tolower (p2[align2 + pos]) == p1[align1 + pos])
+ {
+ p2[align2 + pos] = toupper (random () & 255);
+ if (tolower (p2[align2 + pos]) == p1[align1 + pos])
+ p2[align2 + pos] = toupper (p1[align1 + pos]
+ + 3 + (random () & 127));
+ }
+
+ if (p1[align1 + pos] < tolower (p2[align2 + pos]))
+ result = -1;
+ else
+ result = 1;
+ }
+ p1[len1 + align1] = 0;
+ p2[len2 + align2] = 0;
+
+ FOR_EACH_IMPL (impl, 1)
+ {
+ r = CALL (impl, (char *) (p1 + align1), (char *) (p2 + align2));
+ /* Test whether on 64-bit architectures where ABI requires
+ callee to promote has the promotion been done. */
+ asm ("" : "=g" (r) : "0" (r));
+ if ((r == 0 && result)
+ || (r < 0 && result >= 0)
+ || (r > 0 && result <= 0))
+ {
+ error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p",
+ n, impl->name, align1, align2, len1, len2, pos, r, result, p1, p2);
+ ret = 1;
+ }
+ }
+ }
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 16; ++i)
+ {
+ do_test (i, i, i, 127, 0);
+ do_test (i, i, i, 127, 1);
+ do_test (i, i, i, 127, -1);
+ }
+
+ for (i = 1; i < 10; ++i)
+ {
+ do_test (0, 0, 2 << i, 127, 0);
+ do_test (0, 0, 2 << i, 254, 0);
+ do_test (0, 0, 2 << i, 127, 1);
+ do_test (0, 0, 2 << i, 254, 1);
+ do_test (0, 0, 2 << i, 127, -1);
+ do_test (0, 0, 2 << i, 254, -1);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 2 * i, 8 << i, 127, 0);
+ do_test (2 * i, i, 8 << i, 254, 0);
+ do_test (i, 2 * i, 8 << i, 127, 1);
+ do_test (2 * i, i, 8 << i, 254, 1);
+ do_test (i, 2 * i, 8 << i, 127, -1);
+ do_test (2 * i, i, 8 << i, 254, -1);
+ }
+
+ do_random_tests ();
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/libc/string/test-strcasestr.c b/libc/string/test-strcasestr.c
new file mode 100644
index 000000000..edc41f346
--- /dev/null
+++ b/libc/string/test-strcasestr.c
@@ -0,0 +1,197 @@
+/* Test and measure strcasestr functions.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Ulrich Drepper <drepper@redhat.com>, 2010.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#define TEST_MAIN
+#include "test-string.h"
+
+
+#define STRCASESTR simple_strcasestr
+#define NO_ALIAS
+#define __strncasecmp strncasecmp
+#include "strcasestr.c"
+
+
+static char *
+stupid_strcasestr (const char *s1, const char *s2)
+{
+ ssize_t s1len = strlen (s1);
+ ssize_t s2len = strlen (s2);
+
+ if (s2len > s1len)
+ return NULL;
+
+ for (ssize_t i = 0; i <= s1len - s2len; ++i)
+ {
+ size_t j;
+ for (j = 0; j < s2len; ++j)
+ if (tolower (s1[i + j]) != tolower (s2[j]))
+ break;
+ if (j == s2len)
+ return (char *) s1 + i;
+ }
+
+ return NULL;
+}
+
+
+typedef char *(*proto_t) (const char *, const char *);
+
+IMPL (stupid_strcasestr, 0)
+IMPL (simple_strcasestr, 0)
+IMPL (strcasestr, 1)
+
+
+static void
+do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result)
+{
+ char *result = CALL (impl, s1, s2);
+ if (result != exp_result)
+ {
+ error (0, 0, "Wrong result in function %s %s %s", impl->name,
+ result, exp_result);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~(hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s1, s2);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+
+static void
+do_test (size_t align1, size_t align2, size_t len1, size_t len2,
+ int fail)
+{
+ char *s1 = (char *) (buf1 + align1);
+ char *s2 = (char *) (buf2 + align2);
+
+ static const char d[] = "1234567890abcxyz";
+#define dl (sizeof (d) - 1)
+ char *ss2 = s2;
+ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0)
+ {
+ size_t t = l > dl ? dl : l;
+ ss2 = mempcpy (ss2, d, t);
+ }
+ s2[len2] = '\0';
+
+ if (fail)
+ {
+ char *ss1 = s1;
+ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0)
+ {
+ size_t t = l > dl ? dl : l;
+ memcpy (ss1, d, t);
+ ++ss1[len2 > 7 ? 7 : len2 - 1];
+ ss1 += t;
+ }
+ }
+ else
+ {
+ memset (s1, '0', len1);
+ for (size_t i = 0; i < len2; ++i)
+ s1[len1 - len2 + i] = toupper (s2[i]);
+ }
+ s1[len1] = '\0';
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:",
+ len1, len2, align1, align2, fail ? "fail" : "found");
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+
+static int
+test_main (void)
+{
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (size_t klen = 2; klen < 32; ++klen)
+ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen)
+ {
+ do_test (0, 0, hlen, klen, 0);
+ do_test (0, 0, hlen, klen, 1);
+ do_test (0, 3, hlen, klen, 0);
+ do_test (0, 3, hlen, klen, 1);
+ do_test (0, 9, hlen, klen, 0);
+ do_test (0, 9, hlen, klen, 1);
+ do_test (0, 15, hlen, klen, 0);
+ do_test (0, 15, hlen, klen, 1);
+
+ do_test (3, 0, hlen, klen, 0);
+ do_test (3, 0, hlen, klen, 1);
+ do_test (3, 3, hlen, klen, 0);
+ do_test (3, 3, hlen, klen, 1);
+ do_test (3, 9, hlen, klen, 0);
+ do_test (3, 9, hlen, klen, 1);
+ do_test (3, 15, hlen, klen, 0);
+ do_test (3, 15, hlen, klen, 1);
+
+ do_test (9, 0, hlen, klen, 0);
+ do_test (9, 0, hlen, klen, 1);
+ do_test (9, 3, hlen, klen, 0);
+ do_test (9, 3, hlen, klen, 1);
+ do_test (9, 9, hlen, klen, 0);
+ do_test (9, 9, hlen, klen, 1);
+ do_test (9, 15, hlen, klen, 0);
+ do_test (9, 15, hlen, klen, 1);
+
+ do_test (15, 0, hlen, klen, 0);
+ do_test (15, 0, hlen, klen, 1);
+ do_test (15, 3, hlen, klen, 0);
+ do_test (15, 3, hlen, klen, 1);
+ do_test (15, 9, hlen, klen, 0);
+ do_test (15, 9, hlen, klen, 1);
+ do_test (15, 15, hlen, klen, 0);
+ do_test (15, 15, hlen, klen, 1);
+ }
+
+ do_test (0, 0, page_size - 1, 16, 0);
+ do_test (0, 0, page_size - 1, 16, 1);
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/libc/string/test-strnlen.c b/libc/string/test-strnlen.c
new file mode 100644
index 000000000..cb8c80fe3
--- /dev/null
+++ b/libc/string/test-strnlen.c
@@ -0,0 +1,197 @@
+/* Test and measure strlen functions.
+ Copyright (C) 1999, 2002, 2003, 2005, 2010 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Jakub Jelinek <jakub@redhat.com>, 1999.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#define TEST_MAIN
+#include "test-string.h"
+
+typedef size_t (*proto_t) (const char *, size_t);
+size_t simple_strnlen (const char *, size_t);
+
+IMPL (simple_strnlen, 0)
+IMPL (strnlen, 1)
+
+size_t
+simple_strnlen (const char *s, size_t maxlen)
+{
+ size_t i;
+
+ for (i = 0; i < maxlen && s[i]; ++i);
+ return i;
+}
+
+static void
+do_one_test (impl_t *impl, const char *s, size_t maxlen, size_t exp_len)
+{
+ size_t len = CALL (impl, s, maxlen);
+ if (len != exp_len)
+ {
+ error (0, 0, "Wrong result in function %s %zd %zd", impl->name,
+ len, exp_len);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s, maxlen);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align, size_t len, size_t maxlen, int max_char)
+{
+ size_t i;
+
+ align &= 7;
+ if (align + len >= page_size)
+ return;
+
+ for (i = 0; i < len; ++i)
+ buf1[align + i] = 1 + 7 * i % max_char;
+ buf1[align + len] = 0;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd:", len, align);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, (char *) (buf1 + align), maxlen, MIN (len, maxlen));
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+static void
+do_random_tests (void)
+{
+ size_t i, j, n, align, len;
+ unsigned char *p = buf1 + page_size - 512;
+
+ for (n = 0; n < ITERATIONS; n++)
+ {
+ align = random () & 15;
+ len = random () & 511;
+ if (len + align > 510)
+ len = 511 - align - (random () & 7);
+ j = len + align + 64;
+ if (j > 512)
+ j = 512;
+
+ for (i = 0; i < j; i++)
+ {
+ if (i == len + align)
+ p[i] = 0;
+ else
+ {
+ p[i] = random () & 255;
+ if (i >= align && i < len + align && !p[i])
+ p[i] = (random () & 127) + 1;
+ }
+ }
+
+ FOR_EACH_IMPL (impl, 1)
+ {
+ if (len > 0
+ && CALL (impl, (char *) (p + align), len - 1) != len - 1)
+ {
+ error (0, 0, "Iteration %zd (limited) - wrong result in function %s (%zd) %zd != %zd, p %p",
+ n, impl->name, align,
+ CALL (impl, (char *) (p + align), len - 1), len - 1, p);
+ ret = 1;
+ }
+ if (CALL (impl, (char *) (p + align), len) != len)
+ {
+ error (0, 0, "Iteration %zd (exact) - wrong result in function %s (%zd) %zd != %zd, p %p",
+ n, impl->name, align,
+ CALL (impl, (char *) (p + align), len), len, p);
+ ret = 1;
+ }
+ if (CALL (impl, (char *) (p + align), len + 1) != len)
+ {
+ error (0, 0, "Iteration %zd (long) - wrong result in function %s (%zd) %zd != %zd, p %p",
+ n, impl->name, align,
+ CALL (impl, (char *) (p + align), len + 1), len, p);
+ ret = 1;
+ }
+ }
+ }
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%20s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, i, i - 1, 127);
+ do_test (0, i, i, 127);
+ do_test (0, i, i + 1, 127);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, i, i - 1, 127);
+ do_test (i, i, i, 127);
+ do_test (i, i, i + 1, 127);
+ }
+
+ for (i = 2; i <= 10; ++i)
+ {
+ do_test (0, 1 << i, 5000, 127);
+ do_test (1, 1 << i, 5000, 127);
+ }
+
+ for (i = 1; i < 8; ++i)
+ do_test (0, i, 5000, 255);
+
+ for (i = 1; i < 8; ++i)
+ do_test (i, i, 5000, 255);
+
+ for (i = 2; i <= 10; ++i)
+ {
+ do_test (0, 1 << i, 5000, 255);
+ do_test (1, 1 << i, 5000, 255);
+ }
+
+ do_random_tests ();
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/libc/string/test-strstr.c b/libc/string/test-strstr.c
new file mode 100644
index 000000000..c1da68663
--- /dev/null
+++ b/libc/string/test-strstr.c
@@ -0,0 +1,194 @@
+/* Test and measure strstr functions.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Ulrich Drepper <drepper@redhat.com>, 2010.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#define TEST_MAIN
+#include "test-string.h"
+
+
+#define STRSTR simple_strstr
+#include "strstr.c"
+
+
+static char *
+stupid_strstr (const char *s1, const char *s2)
+{
+ ssize_t s1len = strlen (s1);
+ ssize_t s2len = strlen (s2);
+
+ if (s2len > s1len)
+ return NULL;
+
+ for (ssize_t i = 0; i <= s1len - s2len; ++i)
+ {
+ size_t j;
+ for (j = 0; j < s2len; ++j)
+ if (s1[i + j] != s2[j])
+ break;
+ if (j == s2len)
+ return (char *) s1 + i;
+ }
+
+ return NULL;
+}
+
+
+typedef char *(*proto_t) (const char *, const char *);
+
+IMPL (stupid_strstr, 0)
+IMPL (simple_strstr, 0)
+IMPL (strstr, 1)
+
+
+static void
+do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result)
+{
+ char *result = CALL (impl, s1, s2);
+ if (result != exp_result)
+ {
+ error (0, 0, "Wrong result in function %s %s %s", impl->name,
+ result, exp_result);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~(hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s1, s2);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+
+static void
+do_test (size_t align1, size_t align2, size_t len1, size_t len2,
+ int fail)
+{
+ char *s1 = (char *) (buf1 + align1);
+ char *s2 = (char *) (buf2 + align2);
+
+ static const char d[] = "1234567890abcdef";
+#define dl (sizeof (d) - 1)
+ char *ss2 = s2;
+ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0)
+ {
+ size_t t = l > dl ? dl : l;
+ ss2 = mempcpy (ss2, d, t);
+ }
+ s2[len2] = '\0';
+
+ if (fail)
+ {
+ char *ss1 = s1;
+ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0)
+ {
+ size_t t = l > dl ? dl : l;
+ memcpy (ss1, d, t);
+ ++ss1[len2 > 7 ? 7 : len2 - 1];
+ ss1 += t;
+ }
+ }
+ else
+ {
+ memset (s1, '0', len1);
+ memcpy (s1 + len1 - len2, s2, len2);
+ }
+ s1[len1] = '\0';
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:",
+ len1, len2, align1, align2, fail ? "fail" : "found");
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+
+static int
+test_main (void)
+{
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (size_t klen = 2; klen < 32; ++klen)
+ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen)
+ {
+ do_test (0, 0, hlen, klen, 0);
+ do_test (0, 0, hlen, klen, 1);
+ do_test (0, 3, hlen, klen, 0);
+ do_test (0, 3, hlen, klen, 1);
+ do_test (0, 9, hlen, klen, 0);
+ do_test (0, 9, hlen, klen, 1);
+ do_test (0, 15, hlen, klen, 0);
+ do_test (0, 15, hlen, klen, 1);
+
+ do_test (3, 0, hlen, klen, 0);
+ do_test (3, 0, hlen, klen, 1);
+ do_test (3, 3, hlen, klen, 0);
+ do_test (3, 3, hlen, klen, 1);
+ do_test (3, 9, hlen, klen, 0);
+ do_test (3, 9, hlen, klen, 1);
+ do_test (3, 15, hlen, klen, 0);
+ do_test (3, 15, hlen, klen, 1);
+
+ do_test (9, 0, hlen, klen, 0);
+ do_test (9, 0, hlen, klen, 1);
+ do_test (9, 3, hlen, klen, 0);
+ do_test (9, 3, hlen, klen, 1);
+ do_test (9, 9, hlen, klen, 0);
+ do_test (9, 9, hlen, klen, 1);
+ do_test (9, 15, hlen, klen, 0);
+ do_test (9, 15, hlen, klen, 1);
+
+ do_test (15, 0, hlen, klen, 0);
+ do_test (15, 0, hlen, klen, 1);
+ do_test (15, 3, hlen, klen, 0);
+ do_test (15, 3, hlen, klen, 1);
+ do_test (15, 9, hlen, klen, 0);
+ do_test (15, 9, hlen, klen, 1);
+ do_test (15, 15, hlen, klen, 0);
+ do_test (15, 15, hlen, klen, 1);
+ }
+
+ do_test (0, 0, page_size - 1, 16, 0);
+ do_test (0, 0, page_size - 1, 16, 1);
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/libc/string/tester.c b/libc/string/tester.c
index 773e969a3..01da0465d 100644
--- a/libc/string/tester.c
+++ b/libc/string/tester.c
@@ -1,5 +1,5 @@
/* Tester for string functions.
- Copyright (C) 1995-2001, 2003, 2005, 2008 Free Software Foundation, Inc.
+ Copyright (C) 1995-2001, 2003, 2005, 2008, 2010 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
@@ -441,20 +441,21 @@ test_strnlen (void)
check (strnlen ("", 10) == 0, 1); /* Empty. */
check (strnlen ("a", 10) == 1, 2); /* Single char. */
check (strnlen ("abcd", 10) == 4, 3); /* Multiple chars. */
- check (strnlen ("foo", (size_t)-1) == 3, 4); /* limits of n. */
-
- {
- char buf[4096];
- int i;
- char *p;
- for (i=0; i < 0x100; i++)
- {
- p = (char *) ((unsigned long int)(buf + 0xff) & ~0xff) + i;
- strcpy (p, "OK");
- strcpy (p+3, "BAD/WRONG");
- check (strnlen (p, 100) == 2, 5+i);
- }
- }
+ check (strnlen ("foo", (size_t) -1) == 3, 4); /* limits of n. */
+ check (strnlen ("abcd", 0) == 0, 5); /* Restricted. */
+ check (strnlen ("abcd", 1) == 1, 6); /* Restricted. */
+ check (strnlen ("abcd", 2) == 2, 7); /* Restricted. */
+ check (strnlen ("abcd", 3) == 3, 8); /* Restricted. */
+ check (strnlen ("abcd", 4) == 4, 9); /* Restricted. */
+
+ char buf[4096];
+ for (int i = 0; i < 0x100; ++i)
+ {
+ char *p = (char *) ((unsigned long int)(buf + 0xff) & ~0xff) + i;
+ strcpy (p, "OK");
+ strcpy (p + 3, "BAD/WRONG");
+ check (strnlen (p, 100) == 2, 10 + i);
+ }
}
static void
@@ -988,7 +989,7 @@ test_memcmp (void)
int cnt = 1;
char one[21];
char two[21];
-
+
it = "memcmp";
check(memcmp("a", "a", 1) == 0, cnt++); /* Identity. */
check(memcmp("abc", "abc", 3) == 0, cnt++); /* Multicharacter. */
diff --git a/libc/string/tst-strlen.c b/libc/string/tst-strlen.c
index a1e115927..8cbe44197 100644
--- a/libc/string/tst-strlen.c
+++ b/libc/string/tst-strlen.c
@@ -31,11 +31,21 @@ main(int argc, char *argv[])
buf[words * 4 + 3] = (last & 8) != 0 ? 'e' : '\0';
buf[words * 4 + 4] = '\0';
- if (strlen (buf) != words * 4 + lens[last]
- || strnlen (buf, -1) != words * 4 + lens[last])
+ if (strlen (buf) != words * 4 + lens[last])
{
- printf ("failed for base=%Zu, words=%Zu, and last=%Zu\n",
- base, words, last);
+ printf ("\
+strlen failed for base=%Zu, words=%Zu, and last=%Zu (is %zd, expected %zd)\n",
+ base, words, last,
+ strlen (buf), words * 4 + lens[last]);
+ return 1;
+ }
+
+ if (strnlen (buf, -1) != words * 4 + lens[last])
+ {
+ printf ("\
+strnlen failed for base=%Zu, words=%Zu, and last=%Zu (is %zd, expected %zd)\n",
+ base, words, last,
+ strnlen (buf, -1), words * 4 + lens[last]);
return 1;
}
}
diff --git a/libc/sunrpc/auth_des.c b/libc/sunrpc/auth_des.c
index acd8eb4e3..a76f0278c 100644
--- a/libc/sunrpc/auth_des.c
+++ b/libc/sunrpc/auth_des.c
@@ -1,32 +1,33 @@
/*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/*
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
*/
/*
* auth_des.c, client-side implementation of DES authentication
diff --git a/libc/sunrpc/auth_none.c b/libc/sunrpc/auth_none.c
index b78f1e128..f459520a2 100644
--- a/libc/sunrpc/auth_none.c
+++ b/libc/sunrpc/auth_none.c
@@ -1,32 +1,33 @@
/*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/*
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
/*
* auth_none.c
diff --git a/libc/sunrpc/auth_unix.c b/libc/sunrpc/auth_unix.c
index 3a371c7f4..734eb088f 100644
--- a/libc/sunrpc/auth_unix.c
+++ b/libc/sunrpc/auth_unix.c
@@ -1,32 +1,33 @@
/*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/*
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
/*
* auth_unix.c, Implements UNIX style authentication parameters.
diff --git a/libc/sunrpc/authdes_prot.c b/libc/sunrpc/authdes_prot.c
index 392e0ffdf..a8891088d 100644
--- a/libc/sunrpc/authdes_prot.c
+++ b/libc/sunrpc/authdes_prot.c
@@ -1,32 +1,33 @@
/*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/*
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
*/
/*
* authdes_prot.c, XDR routines for DES authentication
diff --git a/libc/sunrpc/authuxprot.c b/libc/sunrpc/authuxprot.c
index 979cd6836..60d3ddbbf 100644
--- a/libc/sunrpc/authuxprot.c
+++ b/libc/sunrpc/authuxprot.c
@@ -1,32 +1,33 @@
/*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/*
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
/*
* authunix_prot.c
diff --git a/libc/sunrpc/bindrsvprt.c b/libc/sunrpc/bindrsvprt.c
index 22aaecd1a..003c3dfd4 100644
--- a/libc/sunrpc/bindrsvprt.c
+++ b/libc/sunrpc/bindrsvprt.c
@@ -1,32 +1,33 @@
/*
- * Copyright (c) 1987 by Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/*
+ * Copyright (c) 1987 by Sun Microsystems, Inc.
*/
#include <errno.h>
diff --git a/libc/sunrpc/clnt_gen.c b/libc/sunrpc/clnt_gen.c
index cbb4dd775..c7468f4d9 100644
--- a/libc/sunrpc/clnt_gen.c
+++ b/libc/sunrpc/clnt_gen.c
@@ -1,32 +1,33 @@
/*
- * Copyright (C) 1987, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/*
+ * Copyright (C) 1987, Sun Microsystems, Inc.
*/
#include <alloca.h>
diff --git a/libc/sunrpc/clnt_perr.c b/libc/sunrpc/clnt_perr.c
index 7c860a31a..c15796fa0 100644
--- a/libc/sunrpc/clnt_perr.c
+++ b/libc/sunrpc/clnt_perr.c
@@ -1,34 +1,41 @@
+/* @(#)clnt_perror.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * clnt_perror.c
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)clnt_perror.c 1.15 87/10/07 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * clnt_perror.c
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
#include <string.h>
diff --git a/libc/sunrpc/clnt_raw.c b/libc/sunrpc/clnt_raw.c
index d94032df7..74d90c805 100644
--- a/libc/sunrpc/clnt_raw.c
+++ b/libc/sunrpc/clnt_raw.c
@@ -1,34 +1,40 @@
+/* @(#)clnt_raw.c 2.2 88/08/01 4.0 RPCSRC */
/*
- * clnt_raw.c
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)clnt_raw.c 1.22 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * clnt_raw.c
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
* Memory based rpc for simple testing and timing.
* Interface to create an rpc client and server in the same process.
diff --git a/libc/sunrpc/clnt_simp.c b/libc/sunrpc/clnt_simp.c
index 11cdf8d7e..631ec8afb 100644
--- a/libc/sunrpc/clnt_simp.c
+++ b/libc/sunrpc/clnt_simp.c
@@ -1,35 +1,41 @@
+/* @(#)clnt_simple.c 2.2 88/08/01 4.0 RPCSRC */
/*
- * clnt_simple.c
- * Simplified front end to rpc.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)clnt_simple.c 1.35 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * clnt_simple.c
+ * Simplified front end to rpc.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#include <alloca.h>
diff --git a/libc/sunrpc/clnt_tcp.c b/libc/sunrpc/clnt_tcp.c
index d26a1268a..072dcb5c4 100644
--- a/libc/sunrpc/clnt_tcp.c
+++ b/libc/sunrpc/clnt_tcp.c
@@ -1,34 +1,40 @@
+/* @(#)clnt_tcp.c 2.2 88/08/01 4.0 RPCSRC */
/*
- * clnt_tcp.c, Implements a TCP/IP based, client side RPC.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)clnt_tcp.c 1.37 87/10/05 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * clnt_tcp.c, Implements a TCP/IP based, client side RPC.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
* TCP based RPC supports 'batched calls'.
* A sequence of calls may be batched-up in a send buffer. The rpc call
diff --git a/libc/sunrpc/clnt_udp.c b/libc/sunrpc/clnt_udp.c
index 360e26a59..d7fea08cd 100644
--- a/libc/sunrpc/clnt_udp.c
+++ b/libc/sunrpc/clnt_udp.c
@@ -1,34 +1,40 @@
+/* @(#)clnt_udp.c 2.2 88/08/01 4.0 RPCSRC */
/*
- * clnt_udp.c, Implements a UDP/IP based, client side RPC.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)clnt_udp.c 1.39 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * clnt_udp.c, Implements a UDP/IP based, client side RPC.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#include <stdio.h>
diff --git a/libc/sunrpc/clnt_unix.c b/libc/sunrpc/clnt_unix.c
index bca1273e2..b06355c4c 100644
--- a/libc/sunrpc/clnt_unix.c
+++ b/libc/sunrpc/clnt_unix.c
@@ -1,34 +1,36 @@
/*
- * clnt_unix.c, Implements a TCP/IP based, client side RPC.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+
+/*
+ * clnt_unix.c, Implements a TCP/IP based, client side RPC.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
* TCP based RPC supports 'batched calls'.
* A sequence of calls may be batched-up in a send buffer. The rpc call
diff --git a/libc/sunrpc/des_crypt.c b/libc/sunrpc/des_crypt.c
index b66589bdb..cd7b2145f 100644
--- a/libc/sunrpc/des_crypt.c
+++ b/libc/sunrpc/des_crypt.c
@@ -1,33 +1,37 @@
/*
- * des_crypt.c, DES encryption library routines
- * Copyright (C) 1986, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+#if !defined(lint) && defined(SCCSID)
+static char sccsid[] = "@(#)des_crypt.c 2.2 88/08/10 4.0 RPCSRC; from 1.13 88/02/08 SMI";
+#endif
+/*
+ * des_crypt.c, DES encryption library routines
+ * Copyright (C) 1986, Sun Microsystems, Inc.
*/
#include <sys/types.h>
diff --git a/libc/sunrpc/des_soft.c b/libc/sunrpc/des_soft.c
index 4573d9dda..521d97c79 100644
--- a/libc/sunrpc/des_soft.c
+++ b/libc/sunrpc/des_soft.c
@@ -2,32 +2,32 @@
static char sccsid[] = "@(#)des_soft.c 2.2 88/08/10 4.0 RPCSRC; from 1.13 88/02/08 SMI";
#endif
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
#include <rpc/des_crypt.h>
diff --git a/libc/sunrpc/get_myaddr.c b/libc/sunrpc/get_myaddr.c
index 7f200059c..4449c53c0 100644
--- a/libc/sunrpc/get_myaddr.c
+++ b/libc/sunrpc/get_myaddr.c
@@ -1,35 +1,41 @@
+/* @(#)get_myaddress.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * get_myaddress.c
+ * 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.
*
- * Get client's IP address via ioctl. This avoids using the yellowpages.
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)get_myaddress.c 1.4 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * get_myaddress.c
+ *
+ * Get client's IP address via ioctl. This avoids using the yellowpages.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#include <rpc/types.h>
diff --git a/libc/sunrpc/getrpcport.c b/libc/sunrpc/getrpcport.c
index 778670167..a8f1326f0 100644
--- a/libc/sunrpc/getrpcport.c
+++ b/libc/sunrpc/getrpcport.c
@@ -1,32 +1,38 @@
+/* @(#)getrpcport.c 2.1 88/07/29 4.0 RPCSRC */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)getrpcport.c 1.3 87/08/11 SMI";
+#endif
/*
- * Copyright (c) 1985 by Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * Copyright (c) 1985 by Sun Microsystems, Inc.
*/
#include <alloca.h>
diff --git a/libc/sunrpc/key_call.c b/libc/sunrpc/key_call.c
index 3ad066a0d..319d8017e 100644
--- a/libc/sunrpc/key_call.c
+++ b/libc/sunrpc/key_call.c
@@ -1,32 +1,33 @@
/*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/*
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
*/
/*
* The original source is from the RPCSRC 4.0 package from Sun Microsystems.
diff --git a/libc/sunrpc/key_prot.c b/libc/sunrpc/key_prot.c
index b2eb23384..63d253895 100644
--- a/libc/sunrpc/key_prot.c
+++ b/libc/sunrpc/key_prot.c
@@ -1,32 +1,36 @@
-/* Copyright (c) 1990, 1991 Sun Microsystems, Inc.
+/*
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
+#if 0
+#pragma ident "@(#)key_prot.x 1.7 94/04/29 SMI"
+#endif
+
+/* Copyright (c) 1990, 1991 Sun Microsystems, Inc. */
#include "rpc/key_prot.h"
diff --git a/libc/sunrpc/openchild.c b/libc/sunrpc/openchild.c
index defd93a68..29ddfa6b7 100644
--- a/libc/sunrpc/openchild.c
+++ b/libc/sunrpc/openchild.c
@@ -1,32 +1,34 @@
/*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
*/
/*
diff --git a/libc/sunrpc/pm_getmaps.c b/libc/sunrpc/pm_getmaps.c
index 983b2bae8..b21e7ea85 100644
--- a/libc/sunrpc/pm_getmaps.c
+++ b/libc/sunrpc/pm_getmaps.c
@@ -1,36 +1,42 @@
+/* @(#)pmap_getmaps.c 2.2 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)pmap_getmaps.c 1.10 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
/*
* pmap_getmap.c
* Client interface to pmap rpc service.
* contains pmap_getmaps, which is only tcp service involved
*
* Copyright (C) 1984, Sun Microsystems, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <rpc/rpc.h>
diff --git a/libc/sunrpc/pm_getport.c b/libc/sunrpc/pm_getport.c
index e37f6e73e..2d309841f 100644
--- a/libc/sunrpc/pm_getport.c
+++ b/libc/sunrpc/pm_getport.c
@@ -1,35 +1,41 @@
+/* @(#)pmap_getport.c 2.2 88/08/01 4.0 RPCSRC */
/*
- * pmap_getport.c
- * Client interface to pmap rpc service.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)pmap_getport.c 1.9 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * pmap_getport.c
+ * Client interface to pmap rpc service.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#include <stdbool.h>
diff --git a/libc/sunrpc/pmap_clnt.c b/libc/sunrpc/pmap_clnt.c
index 64a53b67d..3e4296089 100644
--- a/libc/sunrpc/pmap_clnt.c
+++ b/libc/sunrpc/pmap_clnt.c
@@ -1,32 +1,33 @@
/*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/*
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
/*
* pmap_clnt.c
diff --git a/libc/sunrpc/pmap_prot.c b/libc/sunrpc/pmap_prot.c
index cc574567e..3db27a90a 100644
--- a/libc/sunrpc/pmap_prot.c
+++ b/libc/sunrpc/pmap_prot.c
@@ -1,35 +1,41 @@
+/* @(#)pmap_prot.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * pmap_prot.c
- * Protocol for the local binder service, or pmap.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)pmap_prot.c 1.17 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * pmap_prot.c
+ * Protocol for the local binder service, or pmap.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#include <rpc/types.h>
diff --git a/libc/sunrpc/pmap_prot2.c b/libc/sunrpc/pmap_prot2.c
index 43e62e35e..9dd4925a1 100644
--- a/libc/sunrpc/pmap_prot2.c
+++ b/libc/sunrpc/pmap_prot2.c
@@ -1,35 +1,41 @@
+/* @(#)pmap_prot2.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * pmap_prot2.c
- * Protocol for the local binder service, or pmap.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)pmap_prot2.c 1.3 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * pmap_prot2.c
+ * Protocol for the local binder service, or pmap.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#include <rpc/types.h>
diff --git a/libc/sunrpc/pmap_rmt.c b/libc/sunrpc/pmap_rmt.c
index 15a959119..e06884891 100644
--- a/libc/sunrpc/pmap_rmt.c
+++ b/libc/sunrpc/pmap_rmt.c
@@ -1,36 +1,42 @@
+/* @(#)pmap_rmt.c 2.2 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)pmap_rmt.c 1.21 87/08/27 Copyr 1984 Sun Micro";
+#endif
+
/*
* pmap_rmt.c
* Client interface to pmap rpc service.
* remote call and broadcast service
*
* Copyright (C) 1984, Sun Microsystems, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <unistd.h>
diff --git a/libc/sunrpc/rpc/auth.h b/libc/sunrpc/rpc/auth.h
index 0c2663917..7c931d887 100644
--- a/libc/sunrpc/rpc/auth.h
+++ b/libc/sunrpc/rpc/auth.h
@@ -1,34 +1,37 @@
+/* @(#)auth.h 2.3 88/08/07 4.0 RPCSRC; from 1.17 88/02/08 SMI */
/*
- * auth.h, Authentication interface.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+
+/*
+ * auth.h, Authentication interface.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
* The data structures are completely opaque to the client. The client
* is required to pass a AUTH * to routines that create rpc
diff --git a/libc/sunrpc/rpc/auth_unix.h b/libc/sunrpc/rpc/auth_unix.h
index 268c2b59e..424661d9c 100644
--- a/libc/sunrpc/rpc/auth_unix.h
+++ b/libc/sunrpc/rpc/auth_unix.h
@@ -1,34 +1,38 @@
+/* @(#)auth_unix.h 2.2 88/07/29 4.0 RPCSRC; from 1.8 88/02/08 SMI */
/*
- * auth_unix.h, Protocol for UNIX style authentication parameters for RPC
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/* @(#)auth_unix.h 1.5 86/07/16 SMI */
+
+/*
+ * auth_unix.h, Protocol for UNIX style authentication parameters for RPC
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
/*
diff --git a/libc/sunrpc/rpc/clnt.h b/libc/sunrpc/rpc/clnt.h
index 5b03b86c0..265bbe252 100644
--- a/libc/sunrpc/rpc/clnt.h
+++ b/libc/sunrpc/rpc/clnt.h
@@ -1,34 +1,37 @@
+/* @(#)clnt.h 2.1 88/07/29 4.0 RPCSRC; from 1.31 88/02/08 SMI*/
/*
- * clnt.h - Client side remote procedure call interface.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+
+/*
+ * clnt.h - Client side remote procedure call interface.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#ifndef _RPC_CLNT_H
diff --git a/libc/sunrpc/rpc/des_crypt.h b/libc/sunrpc/rpc/des_crypt.h
index 6e843985b..6a65887d3 100644
--- a/libc/sunrpc/rpc/des_crypt.h
+++ b/libc/sunrpc/rpc/des_crypt.h
@@ -3,33 +3,34 @@
*
* des_crypt.h, des library routine interface
* Copyright (C) 1986, Sun Microsystems, Inc.
+ */
+/*
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
*/
#ifndef __DES_CRYPT_H__
diff --git a/libc/sunrpc/rpc/key_prot.h b/libc/sunrpc/rpc/key_prot.h
index 16f03ff3c..629e24991 100644
--- a/libc/sunrpc/rpc/key_prot.h
+++ b/libc/sunrpc/rpc/key_prot.h
@@ -8,35 +8,38 @@
#include <rpc/rpc.h>
-/* Copyright (c) 1990, 1991 Sun Microsystems, Inc.
+/*
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
+#if 0
+#pragma ident "@(#)key_prot.x 1.7 94/04/29 SMI"
+#endif
+/* Copyright (c) 1990, 1991 Sun Microsystems, Inc. */
/*
* Compiled from key_prot.x using rpcgen.
diff --git a/libc/sunrpc/rpc/netdb.h b/libc/sunrpc/rpc/netdb.h
index bcb0de29b..539d8c326 100644
--- a/libc/sunrpc/rpc/netdb.h
+++ b/libc/sunrpc/rpc/netdb.h
@@ -1,31 +1,31 @@
/* @(#)netdb.h 2.1 88/07/29 3.9 RPCSRC */
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
/* @(#)rpc.h 1.8 87/07/24 SMI */
diff --git a/libc/sunrpc/rpc/pmap_clnt.h b/libc/sunrpc/rpc/pmap_clnt.h
index 7564f992e..997dddb32 100644
--- a/libc/sunrpc/rpc/pmap_clnt.h
+++ b/libc/sunrpc/rpc/pmap_clnt.h
@@ -1,35 +1,38 @@
+/* @(#)pmap_clnt.h 2.1 88/07/29 4.0 RPCSRC; from 1.11 88/02/08 SMI */
/*
- * pmap_clnt.h
- * Supplies C routines to get to portmap services.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * pmap_clnt.h
+ * Supplies C routines to get to portmap services.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#ifndef _RPC_PMAP_CLNT_H
diff --git a/libc/sunrpc/rpc/pmap_prot.h b/libc/sunrpc/rpc/pmap_prot.h
index 39d6176e3..cd64e36de 100644
--- a/libc/sunrpc/rpc/pmap_prot.h
+++ b/libc/sunrpc/rpc/pmap_prot.h
@@ -1,35 +1,38 @@
+/* @(#)pmap_prot.h 2.1 88/07/29 4.0 RPCSRC; from 1.14 88/02/08 SMI */
/*
- * pmap_prot.h
- * Protocol for the local binder service, or pmap.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * pmap_prot.h
+ * Protocol for the local binder service, or pmap.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#ifndef _RPC_PMAP_PROT_H
diff --git a/libc/sunrpc/rpc/pmap_rmt.h b/libc/sunrpc/rpc/pmap_rmt.h
index 4ecb206cb..7a38b5f5f 100644
--- a/libc/sunrpc/rpc/pmap_rmt.h
+++ b/libc/sunrpc/rpc/pmap_rmt.h
@@ -1,35 +1,38 @@
+/* @(#)pmap_rmt.h 2.1 88/07/29 4.0 RPCSRC; from 1.2 88/02/08 SMI */
/*
- * Structures and XDR routines for parameters to and replies from
- * the portmapper remote-call-service.
+ * 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.
*
- * Copyright (C) 1986, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * Structures and XDR routines for parameters to and replies from
+ * the portmapper remote-call-service.
+ *
+ * Copyright (C) 1986, Sun Microsystems, Inc.
*/
#ifndef _RPC_PMAP_RMT_H
diff --git a/libc/sunrpc/rpc/rpc.h b/libc/sunrpc/rpc/rpc.h
index 4c16c3972..38e43859d 100644
--- a/libc/sunrpc/rpc/rpc.h
+++ b/libc/sunrpc/rpc/rpc.h
@@ -1,35 +1,38 @@
+/* @(#)rpc.h 2.3 88/08/10 4.0 RPCSRC; from 1.9 88/02/08 SMI */
/*
- * rpc.h, Just includes the billions of rpc header files necessary to
- * do remote procedure calling.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * rpc.h, Just includes the billions of rpc header files necessary to
+ * do remote procedure calling.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#ifndef _RPC_RPC_H
diff --git a/libc/sunrpc/rpc/rpc_des.h b/libc/sunrpc/rpc/rpc_des.h
index f70db03ce..96e536984 100644
--- a/libc/sunrpc/rpc/rpc_des.h
+++ b/libc/sunrpc/rpc/rpc_des.h
@@ -1,34 +1,35 @@
/*
- * Generic DES driver interface
- * Keep this file hardware independent!
- * Copyright (c) 1986 by Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/*
+ * Generic DES driver interface
+ * Keep this file hardware independent!
+ * Copyright (c) 1986 by Sun Microsystems, Inc.
*/
#ifndef _DES_H
diff --git a/libc/sunrpc/rpc/rpc_msg.h b/libc/sunrpc/rpc/rpc_msg.h
index 292cf906f..636d60ea9 100644
--- a/libc/sunrpc/rpc/rpc_msg.h
+++ b/libc/sunrpc/rpc/rpc_msg.h
@@ -1,36 +1,33 @@
+/* @(#)rpc_msg.h 2.1 88/07/29 4.0 RPCSRC */
/*
- * rpc_msg.h
- * rpc message definition
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
+/* @(#)rpc_msg.h 1.7 86/07/16 SMI */
#ifndef _RPC_MSG_H
#define _RPC_MSG_H 1
@@ -40,6 +37,13 @@
#include <rpc/xdr.h>
#include <rpc/clnt.h>
+/*
+ * rpc_msg.h
+ * rpc message definition
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
+ */
+
#define RPC_MSG_VERSION ((u_long) 2)
#define RPC_SERVICE_PORT ((u_short) 2048)
diff --git a/libc/sunrpc/rpc/svc.h b/libc/sunrpc/rpc/svc.h
index e7b126c1d..f29615d5d 100644
--- a/libc/sunrpc/rpc/svc.h
+++ b/libc/sunrpc/rpc/svc.h
@@ -1,34 +1,36 @@
/*
- * svc.h, Server-side remote procedure call interface.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+
+/*
+ * svc.h, Server-side remote procedure call interface.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#ifndef _RPC_SVC_H
diff --git a/libc/sunrpc/rpc/svc_auth.h b/libc/sunrpc/rpc/svc_auth.h
index f72f4f119..1c1a7156a 100644
--- a/libc/sunrpc/rpc/svc_auth.h
+++ b/libc/sunrpc/rpc/svc_auth.h
@@ -1,34 +1,38 @@
+/* @(#)svc_auth.h 2.1 88/07/29 4.0 RPCSRC */
/*
- * svc_auth.h, Service side of rpc authentication.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/* @(#)svc_auth.h 1.6 86/07/16 SMI */
+
+/*
+ * svc_auth.h, Service side of rpc authentication.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#ifndef _RPC_SVC_AUTH_H
diff --git a/libc/sunrpc/rpc/types.h b/libc/sunrpc/rpc/types.h
index 5744e5a4b..871f3fd6b 100644
--- a/libc/sunrpc/rpc/types.h
+++ b/libc/sunrpc/rpc/types.h
@@ -1,30 +1,30 @@
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
/* fixincludes should not add extern "C" to this file */
/*
diff --git a/libc/sunrpc/rpc/xdr.h b/libc/sunrpc/rpc/xdr.h
index f5ba7b389..75bc30298 100644
--- a/libc/sunrpc/rpc/xdr.h
+++ b/libc/sunrpc/rpc/xdr.h
@@ -1,34 +1,36 @@
/*
- * xdr.h, External Data Representation Serialization Routines.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+
+/*
+ * xdr.h, External Data Representation Serialization Routines.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#ifndef _RPC_XDR_H
diff --git a/libc/sunrpc/rpc_clntout.c b/libc/sunrpc/rpc_clntout.c
index 8c0f9cc5d..08d960121 100644
--- a/libc/sunrpc/rpc_clntout.c
+++ b/libc/sunrpc/rpc_clntout.c
@@ -1,33 +1,40 @@
/*
- * rpc_clntout.c, Client-stub outputter for the RPC protocol compiler
- * Copyright (C) 1987, Sun Microsystems, Inc.
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * From: @(#)rpc_clntout.c 1.11 89/02/22 (C) 1987 SMI
+ */
+
+/*
+ * rpc_clntout.c, Client-stub outputter for the RPC protocol compiler
+ * Copyright (C) 1987, Sun Microsystems, Inc.
*/
#include <stdio.h>
#include <string.h>
diff --git a/libc/sunrpc/rpc_cmsg.c b/libc/sunrpc/rpc_cmsg.c
index 097490302..9a7568b55 100644
--- a/libc/sunrpc/rpc_cmsg.c
+++ b/libc/sunrpc/rpc_cmsg.c
@@ -1,34 +1,41 @@
+/* @(#)rpc_callmsg.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * rpc_callmsg.c
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)rpc_callmsg.c 1.4 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * rpc_callmsg.c
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <string.h>
diff --git a/libc/sunrpc/rpc_common.c b/libc/sunrpc/rpc_common.c
index ba8995311..3fb0bda48 100644
--- a/libc/sunrpc/rpc_common.c
+++ b/libc/sunrpc/rpc_common.c
@@ -1,30 +1,30 @@
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
#include <rpc/rpc.h>
diff --git a/libc/sunrpc/rpc_cout.c b/libc/sunrpc/rpc_cout.c
index e0e653510..21056e84a 100644
--- a/libc/sunrpc/rpc_cout.c
+++ b/libc/sunrpc/rpc_cout.c
@@ -1,32 +1,35 @@
/*
- * From: @(#)rpc_cout.c 1.13 89/02/22 (C) 1987 SMI
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * From: @(#)rpc_cout.c 1.13 89/02/22 (C) 1987 SMI
*/
/*
diff --git a/libc/sunrpc/rpc_dtable.c b/libc/sunrpc/rpc_dtable.c
index 9aff675a4..fbbb3c1d5 100644
--- a/libc/sunrpc/rpc_dtable.c
+++ b/libc/sunrpc/rpc_dtable.c
@@ -1,32 +1,35 @@
/* @(#)rpc_dtablesize.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)rpc_dtablesize.c 1.2 87/08/11 Copyr 1987 Sun Micro";
+#endif
#include <unistd.h>
#include <rpc/clnt.h>
diff --git a/libc/sunrpc/rpc_hout.c b/libc/sunrpc/rpc_hout.c
index 346e15421..270d149a6 100644
--- a/libc/sunrpc/rpc_hout.c
+++ b/libc/sunrpc/rpc_hout.c
@@ -1,32 +1,35 @@
/*
- * From: @(#)rpc_hout.c 1.12 89/02/22 (C) 1987 SMI
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * From: @(#)rpc_hout.c 1.12 89/02/22 (C) 1987 SMI
*/
/*
diff --git a/libc/sunrpc/rpc_main.c b/libc/sunrpc/rpc_main.c
index 141fa8ac1..08369bb58 100644
--- a/libc/sunrpc/rpc_main.c
+++ b/libc/sunrpc/rpc_main.c
@@ -1,32 +1,35 @@
/*
- * From @(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI;
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * From @(#)rpc_main.c 1.30 89/03/30 (C) 1987 SMI;
*/
/*
diff --git a/libc/sunrpc/rpc_parse.c b/libc/sunrpc/rpc_parse.c
index 56ec1a48c..f66538701 100644
--- a/libc/sunrpc/rpc_parse.c
+++ b/libc/sunrpc/rpc_parse.c
@@ -1,32 +1,35 @@
/*
- * From: @(#)rpc_parse.c 1.8 89/02/22 (C) 1987 SMI
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * From: @(#)rpc_parse.c 1.8 89/02/22 (C) 1987 SMI
*/
/*
diff --git a/libc/sunrpc/rpc_parse.h b/libc/sunrpc/rpc_parse.h
index 815c7808c..8d48c85a0 100644
--- a/libc/sunrpc/rpc_parse.h
+++ b/libc/sunrpc/rpc_parse.h
@@ -1,33 +1,36 @@
-/* @(#)rpc_parse.h 1.3 90/08/29 (C) 1987 SMI */
-
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/* @(#)rpc_parse.h 1.3 90/08/29 (C) 1987 SMI */
+
+/*
* rpc_parse.h, Definitions for the RPCL parser
*/
diff --git a/libc/sunrpc/rpc_prot.c b/libc/sunrpc/rpc_prot.c
index d92608341..69b0b6cd9 100644
--- a/libc/sunrpc/rpc_prot.c
+++ b/libc/sunrpc/rpc_prot.c
@@ -1,34 +1,40 @@
+/* @(#)rpc_prot.c 2.3 88/08/07 4.0 RPCSRC */
/*
- * rpc_prot.c
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)rpc_prot.c 1.36 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * rpc_prot.c
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
* This set of routines implements the rpc message definition,
* its serializer and some common rpc utility routines.
diff --git a/libc/sunrpc/rpc_sample.c b/libc/sunrpc/rpc_sample.c
index 1f3bfd0cb..00b58d5bc 100644
--- a/libc/sunrpc/rpc_sample.c
+++ b/libc/sunrpc/rpc_sample.c
@@ -1,32 +1,35 @@
/*
- * From: @(#)rpc_sample.c 1.1 90/08/30 (C) 1987 SMI
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * From: @(#)rpc_sample.c 1.1 90/08/30 (C) 1987 SMI
*/
/*
diff --git a/libc/sunrpc/rpc_scan.c b/libc/sunrpc/rpc_scan.c
index d4f518f6b..af90ef697 100644
--- a/libc/sunrpc/rpc_scan.c
+++ b/libc/sunrpc/rpc_scan.c
@@ -1,32 +1,35 @@
/*
- * From: @(#)rpc_scan.c 1.11 89/02/22 (C) 1987 SMI
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * From: @(#)rpc_scan.c 1.11 89/02/22 (C) 1987 SMI
*/
/*
diff --git a/libc/sunrpc/rpc_scan.h b/libc/sunrpc/rpc_scan.h
index 384f807d7..af02479e7 100644
--- a/libc/sunrpc/rpc_scan.h
+++ b/libc/sunrpc/rpc_scan.h
@@ -1,33 +1,36 @@
-/* @(#)rpc_scan.h 1.3 90/08/29 (C) 1987 SMI */
-
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/* @(#)rpc_scan.h 1.3 90/08/29 (C) 1987 SMI */
+
+/*
* rpc_scan.h, Definitions for the RPCL scanner
*/
diff --git a/libc/sunrpc/rpc_svcout.c b/libc/sunrpc/rpc_svcout.c
index 1887b75e4..6774cc8c0 100644
--- a/libc/sunrpc/rpc_svcout.c
+++ b/libc/sunrpc/rpc_svcout.c
@@ -1,32 +1,35 @@
/*
- * From: @(#)rpc_svcout.c 1.29 89/03/30 (C) 1987 SMI
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * From: @(#)rpc_svcout.c 1.29 89/03/30 (C) 1987 SMI
*/
/*
diff --git a/libc/sunrpc/rpc_tblout.c b/libc/sunrpc/rpc_tblout.c
index 2d77c606c..8fd2b1267 100644
--- a/libc/sunrpc/rpc_tblout.c
+++ b/libc/sunrpc/rpc_tblout.c
@@ -1,32 +1,35 @@
/*
- * From: @(#)rpc_tblout.c 1.4 89/02/22 (C) 1988 SMI
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * From: @(#)rpc_tblout.c 1.4 89/02/22 (C) 1988 SMI
*/
/*
diff --git a/libc/sunrpc/rpc_util.c b/libc/sunrpc/rpc_util.c
index 6a6c0e42e..b910401a3 100644
--- a/libc/sunrpc/rpc_util.c
+++ b/libc/sunrpc/rpc_util.c
@@ -1,32 +1,35 @@
/*
- * From: @(#)rpc_util.c 1.11 89/02/22 (C) 1987 SMI
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * From: @(#)rpc_util.c 1.11 89/02/22 (C) 1987 SMI
*/
/*
diff --git a/libc/sunrpc/rpc_util.h b/libc/sunrpc/rpc_util.h
index 72f08eb34..cb1ceb992 100644
--- a/libc/sunrpc/rpc_util.h
+++ b/libc/sunrpc/rpc_util.h
@@ -1,33 +1,36 @@
-/* @(#)rpc_util.h 1.5 90/08/29 (C) 1987 SMI */
-
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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 or with the express written consent of
+ * Sun Microsystems, Inc.
+ *
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/* @(#)rpc_util.h 1.5 90/08/29 (C) 1987 SMI */
+
+/*
* rpc_util.h, Useful definitions for the RPC protocol compiler
*/
diff --git a/libc/sunrpc/rpcinfo.c b/libc/sunrpc/rpcinfo.c
index d92101d9a..1be910022 100644
--- a/libc/sunrpc/rpcinfo.c
+++ b/libc/sunrpc/rpcinfo.c
@@ -1,32 +1,11 @@
+
+/* @(#)rpcinfo.c 2.2 88/08/11 4.0 RPCSRC */
+#if !defined(lint) && defined (SCCSID)
+static char sccsid[] = "@(#)rpcinfo.c 1.22 87/08/12 SMI";
+#endif
+
/*
* Copyright (C) 1986, Sun Microsystems, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
@@ -34,6 +13,35 @@
* or dump the portmapper
*/
+/*
+ * 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
+ */
+
#include <getopt.h>
#include <string.h>
#include <unistd.h>
diff --git a/libc/sunrpc/rpcsvc/bootparam_prot.x b/libc/sunrpc/rpcsvc/bootparam_prot.x
index f272d52ae..6f75f1843 100644
--- a/libc/sunrpc/rpcsvc/bootparam_prot.x
+++ b/libc/sunrpc/rpcsvc/bootparam_prot.x
@@ -2,32 +2,32 @@
/* @(#)bootparam_prot.x 1.2 87/06/24 Copyr 1987 Sun Micro */
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
/*
diff --git a/libc/sunrpc/rpcsvc/key_prot.x b/libc/sunrpc/rpcsvc/key_prot.x
index 035025082..f385ed14b 100644
--- a/libc/sunrpc/rpcsvc/key_prot.x
+++ b/libc/sunrpc/rpcsvc/key_prot.x
@@ -1,34 +1,35 @@
+%/*
+% * 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
+% */
/*
* Key server protocol definition
* Copyright (C) 1990, 1991 Sun Microsystems, Inc.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
* The keyserver is a public key storage/encryption/decryption service
* The encryption method used is based on the Diffie-Hellman exponential
* key exchange technology.
diff --git a/libc/sunrpc/rpcsvc/klm_prot.x b/libc/sunrpc/rpcsvc/klm_prot.x
index 7b4c152f1..9dde81c51 100644
--- a/libc/sunrpc/rpcsvc/klm_prot.x
+++ b/libc/sunrpc/rpcsvc/klm_prot.x
@@ -2,35 +2,37 @@
/* @(#)klm_prot.x 1.7 87/07/08 Copyr 1987 Sun Micro */
/*
- * Kernel/lock manager protocol definition
- * Copyright (C) 1986 Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * Kernel/lock manager protocol definition
+ * Copyright (C) 1986 Sun Microsystems, Inc.
*
* protocol used between the UNIX kernel (the "client") and the
* local lock manager. The local lock manager is a deamon running
diff --git a/libc/sunrpc/rpcsvc/mount.x b/libc/sunrpc/rpcsvc/mount.x
index da61c4eee..310b4ca54 100644
--- a/libc/sunrpc/rpcsvc/mount.x
+++ b/libc/sunrpc/rpcsvc/mount.x
@@ -2,32 +2,32 @@
/* @(#)mount.x 1.2 87/09/18 Copyr 1987 Sun Micro */
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
/*
diff --git a/libc/sunrpc/rpcsvc/nfs_prot.x b/libc/sunrpc/rpcsvc/nfs_prot.x
index 2a685402b..630dab24d 100644
--- a/libc/sunrpc/rpcsvc/nfs_prot.x
+++ b/libc/sunrpc/rpcsvc/nfs_prot.x
@@ -1,35 +1,37 @@
/* @(#)nfs_prot.x 2.1 88/08/01 4.0 RPCSRC */
/*
- * nfs_prot.x 1.2 87/10/12
- * Copyright 1987 Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * nfs_prot.x 1.2 87/10/12
+ * Copyright 1987 Sun Microsystems, Inc.
*/
const NFS_PORT = 2049;
const NFS_MAXDATA = 8192;
diff --git a/libc/sunrpc/rpcsvc/rex.x b/libc/sunrpc/rpcsvc/rex.x
index 253b8a7a2..949d9f074 100644
--- a/libc/sunrpc/rpcsvc/rex.x
+++ b/libc/sunrpc/rpcsvc/rex.x
@@ -2,32 +2,32 @@
/* @(#)rex.x 1.3 87/09/18 Copyr 1987 Sun Micro */
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
/*
diff --git a/libc/sunrpc/rpcsvc/rstat.x b/libc/sunrpc/rpcsvc/rstat.x
index b2c6b6e18..51f81ee12 100644
--- a/libc/sunrpc/rpcsvc/rstat.x
+++ b/libc/sunrpc/rpcsvc/rstat.x
@@ -2,32 +2,32 @@
/* @(#)rstat.x 1.2 87/09/18 Copyr 1987 Sun Micro */
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
/*
diff --git a/libc/sunrpc/rpcsvc/rusers.x b/libc/sunrpc/rpcsvc/rusers.x
index bcf5fd2e7..b72c29390 100644
--- a/libc/sunrpc/rpcsvc/rusers.x
+++ b/libc/sunrpc/rpcsvc/rusers.x
@@ -1,31 +1,32 @@
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
+
%/*
% * Find out about remote users
% */
diff --git a/libc/sunrpc/rpcsvc/sm_inter.x b/libc/sunrpc/rpcsvc/sm_inter.x
index 9c20383ca..9cbb7011a 100644
--- a/libc/sunrpc/rpcsvc/sm_inter.x
+++ b/libc/sunrpc/rpcsvc/sm_inter.x
@@ -1,33 +1,39 @@
+/* @(#)sm_inter.x 2.2 88/08/01 4.0 RPCSRC */
+/* @(#)sm_inter.x 1.7 87/06/24 Copyr 1987 Sun Micro */
+
/*
- * Status monitor protocol specification
- * Copyright (C) 1986 Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+
+/*
+ * Status monitor protocol specification
+ * Copyright (C) 1986 Sun Microsystems, Inc.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
diff --git a/libc/sunrpc/rpcsvc/spray.x b/libc/sunrpc/rpcsvc/spray.x
index 2830722ae..943238fdf 100644
--- a/libc/sunrpc/rpcsvc/spray.x
+++ b/libc/sunrpc/rpcsvc/spray.x
@@ -2,32 +2,32 @@
/* @(#)spray.x 1.2 87/09/18 Copyr 1987 Sun Micro */
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
/*
diff --git a/libc/sunrpc/rpcsvc/yppasswd.x b/libc/sunrpc/rpcsvc/yppasswd.x
index b8ff7c275..ab2edbaa9 100644
--- a/libc/sunrpc/rpcsvc/yppasswd.x
+++ b/libc/sunrpc/rpcsvc/yppasswd.x
@@ -2,32 +2,32 @@
/* @(#)yppasswd.x 1.1 87/04/13 Copyr 1987 Sun Micro */
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
*/
/*
diff --git a/libc/sunrpc/rtime.c b/libc/sunrpc/rtime.c
index 790bf4bc8..ff71a55ae 100644
--- a/libc/sunrpc/rtime.c
+++ b/libc/sunrpc/rtime.c
@@ -1,32 +1,37 @@
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)rtime.c 2.2 88/08/10 4.0 RPCSRC; from 1.8 88/02/08 SMI";
+#endif
/*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
*/
/*
* rtime - get time from remote machine
diff --git a/libc/sunrpc/svc.c b/libc/sunrpc/svc.c
index d389a5285..60f6fcdd7 100644
--- a/libc/sunrpc/svc.c
+++ b/libc/sunrpc/svc.c
@@ -1,4 +1,32 @@
/*
+ * 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
+ */
+/*
* svc.c, Server-side remote procedure call interface.
*
* There are two sets of procedures here. The xprt routines are
@@ -6,33 +34,6 @@
* list of service routines.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <errno.h>
diff --git a/libc/sunrpc/svc_auth.c b/libc/sunrpc/svc_auth.c
index 11555c597..68ed4f100 100644
--- a/libc/sunrpc/svc_auth.c
+++ b/libc/sunrpc/svc_auth.c
@@ -1,34 +1,40 @@
+/* @(#)svc_auth.c 2.4 88/08/15 4.0 RPCSRC */
/*
- * svc_auth.c, Server-side rpc authenticator interface.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)svc_auth.c 1.19 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * svc_auth.c, Server-side rpc authenticator interface.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#include <rpc/rpc.h>
diff --git a/libc/sunrpc/svc_authux.c b/libc/sunrpc/svc_authux.c
index 477ff2502..5b64c3d03 100644
--- a/libc/sunrpc/svc_authux.c
+++ b/libc/sunrpc/svc_authux.c
@@ -1,4 +1,33 @@
/*
+ * 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
+ */
+
+/*
* svc_auth_unix.c
* Handles UNIX flavor authentication parameters on the service side of rpc.
* There are two svc auth implementations here: AUTH_UNIX and AUTH_SHORT.
@@ -7,33 +36,6 @@
* Note: the shorthand has been gutted for efficiency.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
diff --git a/libc/sunrpc/svc_raw.c b/libc/sunrpc/svc_raw.c
index 924135bb6..ff8fa7ccd 100644
--- a/libc/sunrpc/svc_raw.c
+++ b/libc/sunrpc/svc_raw.c
@@ -1,3 +1,36 @@
+/* @(#)svc_raw.c 2.1 88/07/29 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)svc_raw.c 1.15 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
/*
* svc_raw.c, This a toy for simple testing and timing.
* Interface to create an rpc client and server in the same UNIX process.
@@ -5,33 +38,6 @@
* any interference from the kernel.
*
* Copyright (C) 1984, Sun Microsystems, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <rpc/rpc.h>
diff --git a/libc/sunrpc/svc_run.c b/libc/sunrpc/svc_run.c
index 1bb8c87c0..f1f47fbf3 100644
--- a/libc/sunrpc/svc_run.c
+++ b/libc/sunrpc/svc_run.c
@@ -1,31 +1,32 @@
/*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+/*
* This is the rpc server side idle loop
* Wait for input, call server program.
*/
diff --git a/libc/sunrpc/svc_simple.c b/libc/sunrpc/svc_simple.c
index 1d6f51588..6c1c9c914 100644
--- a/libc/sunrpc/svc_simple.c
+++ b/libc/sunrpc/svc_simple.c
@@ -1,35 +1,41 @@
+/* @(#)svc_simple.c 2.2 88/08/01 4.0 RPCSRC */
/*
- * svc_simple.c
- * Simplified front end to rpc.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)svc_simple.c 1.18 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * svc_simple.c
+ * Simplified front end to rpc.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*/
#include <stdio.h>
diff --git a/libc/sunrpc/svc_tcp.c b/libc/sunrpc/svc_tcp.c
index 2048fdf0e..beeb10646 100644
--- a/libc/sunrpc/svc_tcp.c
+++ b/libc/sunrpc/svc_tcp.c
@@ -1,34 +1,40 @@
+/* @(#)svc_tcp.c 2.2 88/08/01 4.0 RPCSRC */
/*
- * svc_tcp.c, Server side for TCP/IP based RPC.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)svc_tcp.c 1.21 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * svc_tcp.c, Server side for TCP/IP based RPC.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
* Actually implements two flavors of transporter -
* a tcp rendezvouser (a listener and connection establisher)
diff --git a/libc/sunrpc/svc_udp.c b/libc/sunrpc/svc_udp.c
index b9fccab26..496d6d960 100644
--- a/libc/sunrpc/svc_udp.c
+++ b/libc/sunrpc/svc_udp.c
@@ -1,36 +1,42 @@
+/* @(#)svc_udp.c 2.2 88/07/29 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)svc_udp.c 1.24 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
/*
* svc_udp.c,
* Server side for UDP/IP based RPC. (Does some caching in the hopes of
* achieving execute-at-most-once semantics.)
*
* Copyright (C) 1984, Sun Microsystems, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <stdio.h>
diff --git a/libc/sunrpc/svc_unix.c b/libc/sunrpc/svc_unix.c
index f22a23acd..f103ed96f 100644
--- a/libc/sunrpc/svc_unix.c
+++ b/libc/sunrpc/svc_unix.c
@@ -1,34 +1,36 @@
/*
- * svc_unix.c, Server side for TCP/IP based RPC.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+
+/*
+ * svc_unix.c, Server side for TCP/IP based RPC.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
* Actually implements two flavors of transporter -
* a unix rendezvouser (a listener and connection establisher)
diff --git a/libc/sunrpc/svcauth_des.c b/libc/sunrpc/svcauth_des.c
index 573891e21..933d00134 100644
--- a/libc/sunrpc/svcauth_des.c
+++ b/libc/sunrpc/svcauth_des.c
@@ -1,33 +1,35 @@
/*
- * Copyright (c) 1988 by Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+/*
+ * Copyright (c) 1988 by Sun Microsystems, Inc.
+ */
+/*
* svcauth_des.c, server-side des authentication
*
* We insure for the service the following:
diff --git a/libc/sunrpc/xcrypt.c b/libc/sunrpc/xcrypt.c
index f430a1dab..ea8ff4510 100644
--- a/libc/sunrpc/xcrypt.c
+++ b/libc/sunrpc/xcrypt.c
@@ -1,32 +1,34 @@
/*
- * Copyright (c) 1986-1991 by Sun Microsystems Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * Copyright (c) 1986-1991 by Sun Microsystems Inc.
*/
#if 0
diff --git a/libc/sunrpc/xdr.c b/libc/sunrpc/xdr.c
index c5e961f52..8a70d2e55 100644
--- a/libc/sunrpc/xdr.c
+++ b/libc/sunrpc/xdr.c
@@ -1,34 +1,40 @@
+/* @(#)xdr.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * xdr.c, Generic XDR routines implementation.
+ * 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.
*
- * Copyright (C) 1986, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)xdr.c 1.35 87/08/12";
+#endif
+
+/*
+ * xdr.c, Generic XDR routines implementation.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright (C) 1986, Sun Microsystems, Inc.
*
* These are the "generic" xdr routines used to serialize and de-serialize
* most common data items. See xdr.h for more info on the interface to
diff --git a/libc/sunrpc/xdr_array.c b/libc/sunrpc/xdr_array.c
index 02728b08f..e7c8925f5 100644
--- a/libc/sunrpc/xdr_array.c
+++ b/libc/sunrpc/xdr_array.c
@@ -1,37 +1,43 @@
+/* @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * xdr_array.c, Generic XDR routines implementation.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * xdr_array.c, Generic XDR routines implementation.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
- * These are the "non-trivial" xdr primitives used to serialize and
- * de-serialize arrays. See xdr.h for more info on the interface to xdr.
+ * These are the "non-trivial" xdr primitives used to serialize and de-serialize
+ * arrays. See xdr.h for more info on the interface to xdr.
*/
#include <stdio.h>
diff --git a/libc/sunrpc/xdr_float.c b/libc/sunrpc/xdr_float.c
index 75dc70ca9..0a7d9707d 100644
--- a/libc/sunrpc/xdr_float.c
+++ b/libc/sunrpc/xdr_float.c
@@ -1,34 +1,40 @@
+/* @(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * xdr_float.c, Generic XDR routines implementation.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro";
+#endif
+
+/*
+ * xdr_float.c, Generic XDR routines implementation.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
* These are the "floating point" xdr routines used to (de)serialize
* most common data items. See xdr.h for more info on the interface to
diff --git a/libc/sunrpc/xdr_mem.c b/libc/sunrpc/xdr_mem.c
index f9a0b1495..7b1261bba 100644
--- a/libc/sunrpc/xdr_mem.c
+++ b/libc/sunrpc/xdr_mem.c
@@ -1,38 +1,41 @@
/*
- * xdr_mem.h, XDR implementation using memory buffers.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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
+ */
+
+/*
+ * xdr_mem.h, XDR implementation using memory buffers.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
* If you have some data to be interpreted as external data representation
* or to be converted to external data representation in a memory buffer,
* then this is the package for you.
+ *
*/
#include <string.h>
diff --git a/libc/sunrpc/xdr_rec.c b/libc/sunrpc/xdr_rec.c
index a66462c59..6854034c6 100644
--- a/libc/sunrpc/xdr_rec.c
+++ b/libc/sunrpc/xdr_rec.c
@@ -1,35 +1,37 @@
/*
- * xdr_rec.c, Implements TCP/IP based XDR streams with a "record marking"
- * layer above tcp (for rpc's use).
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * 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
+ */
+
+/*
+ * xdr_rec.c, Implements TCP/IP based XDR streams with a "record marking"
+ * layer above tcp (for rpc's use).
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
* These routines interface XDRSTREAMS to a tcp/ip connection.
* There is a record marking layer between the xdr stream
diff --git a/libc/sunrpc/xdr_ref.c b/libc/sunrpc/xdr_ref.c
index e2acb8475..532804fad 100644
--- a/libc/sunrpc/xdr_ref.c
+++ b/libc/sunrpc/xdr_ref.c
@@ -1,37 +1,43 @@
+/* @(#)xdr_reference.c 2.1 88/07/29 4.0 RPCSRC */
/*
- * xdr_reference.c, Generic XDR routines implementation.
+ * 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.
*
- * Copyright (C) 1987, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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
+ */
+#if !defined(lint) && defined(SCCSIDS)
+static char sccsid[] = "@(#)xdr_reference.c 1.11 87/08/11 SMI";
+#endif
+
+/*
+ * xdr_reference.c, Generic XDR routines implementation.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright (C) 1987, Sun Microsystems, Inc.
*
- * These are the "non-trivial" xdr primitives used to serialize and
- * de-serialize "pointers". See xdr.h for more info on the interface to xdr.
+ * These are the "non-trivial" xdr primitives used to serialize and de-serialize
+ * "pointers". See xdr.h for more info on the interface to xdr.
*/
#include <stdio.h>
diff --git a/libc/sunrpc/xdr_sizeof.c b/libc/sunrpc/xdr_sizeof.c
index d4bada3c4..dc3e19ebe 100644
--- a/libc/sunrpc/xdr_sizeof.c
+++ b/libc/sunrpc/xdr_sizeof.c
@@ -1,34 +1,35 @@
/*
- * xdr_sizeof.c
+ * 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.
*
- * Copyright 1990 Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+/*
+ * xdr_sizeof.c
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Copyright 1990 Sun Microsystems, Inc.
*
* General purpose routine to see how much space something will use
* when serialized using XDR.
diff --git a/libc/sunrpc/xdr_stdio.c b/libc/sunrpc/xdr_stdio.c
index f58465a18..e73c5a520 100644
--- a/libc/sunrpc/xdr_stdio.c
+++ b/libc/sunrpc/xdr_stdio.c
@@ -1,34 +1,36 @@
/*
- * xdr_stdio.c, XDR implementation on standard i/o file.
+ * 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.
*
- * Copyright (C) 1984, Sun Microsystems, Inc.
+ * 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.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
+ * 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.
*
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- * * Neither the name of Sun Microsystems, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
+ * 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.
*
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Sun Microsystems, Inc.
+ * 2550 Garcia Avenue
+ * Mountain View, California 94043
+ */
+
+/*
+ * xdr_stdio.c, XDR implementation on standard i/o file.
+ *
+ * Copyright (C) 1984, Sun Microsystems, Inc.
*
* This set of routines implements a XDR on a stdio stream.
* XDR_ENCODE serializes onto the stream, XDR_DECODE de-serializes
diff --git a/libc/sysdeps/i386/i386-mcount.S b/libc/sysdeps/i386/i386-mcount.S
index 8b11adb2e..43bc0194d 100644
--- a/libc/sysdeps/i386/i386-mcount.S
+++ b/libc/sysdeps/i386/i386-mcount.S
@@ -53,3 +53,28 @@ C_LABEL(_mcount)
#undef mcount
weak_alias (_mcount, mcount)
+
+ /* Same as above, but doesn't require a frame pointer */
+ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(__fentry__)
+ ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__fentry__), @function)
+ .align ALIGNARG(4)
+C_LABEL(__fentry__)
+ /* Save the caller-clobbered registers. */
+ pushl %eax
+ pushl %ecx
+ pushl %edx
+
+ movl 12(%esp), %edx
+ movl 16(%esp), %eax
+
+ /* No need to access the PLT or GOT, __mcount_internal is an
+ internal function and we can make a relative call. */
+ call C_SYMBOL_NAME(__mcount_internal)
+
+ /* Pop the saved registers. Please note that `__fentry__' has no
+ return value. */
+ popl %edx
+ popl %ecx
+ popl %eax
+ ret
+ ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(__fentry__))
diff --git a/libc/sysdeps/i386/i686/multiarch/Makefile b/libc/sysdeps/i386/i686/multiarch/Makefile
index 124595068..12bcfc273 100644
--- a/libc/sysdeps/i386/i686/multiarch/Makefile
+++ b/libc/sysdeps/i386/i686/multiarch/Makefile
@@ -9,7 +9,7 @@ sysdep_routines += bzero-sse2 memset-sse2 memcpy-ssse3 mempcpy-ssse3 \
memmove-ssse3-rep bcopy-ssse3 bcopy-ssse3-rep \
memset-sse2-rep bzero-sse2-rep strcmp-ssse3 \
strcmp-sse4 strncmp-c strncmp-ssse3 strncmp-sse4 \
- memcmp-ssse3 memcmp-sse4
+ memcmp-ssse3 memcmp-sse4 strcasestr-nonascii
ifeq (yes,$(config-cflags-sse4))
sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c
CFLAGS-strcspn-c.c += -msse4
@@ -17,6 +17,7 @@ CFLAGS-strpbrk-c.c += -msse4
CFLAGS-strspn-c.c += -msse4
CFLAGS-strstr.c += -msse4
CFLAGS-strcasestr.c += -msse4
+CFLAGS-strcasestr-nonascii.c += -msse4
endif
endif
diff --git a/libc/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c b/libc/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c
new file mode 100644
index 000000000..4cc4444f7
--- /dev/null
+++ b/libc/sysdeps/i386/i686/multiarch/strcasestr-nonascii.c
@@ -0,0 +1,2 @@
+#include <nmmintrin.h>
+#include <sysdeps/x86_64/multiarch/strcasestr-nonascii.c>
diff --git a/libc/sysdeps/mach/hurd/sendmsg.c b/libc/sysdeps/mach/hurd/sendmsg.c
index a9d1c8c1d..118fd59a5 100644
--- a/libc/sysdeps/mach/hurd/sendmsg.c
+++ b/libc/sysdeps/mach/hurd/sendmsg.c
@@ -109,14 +109,22 @@ __libc_sendmsg (int fd, const struct msghdr *message, int flags)
and talk to it with the ifsock protocol. */
file_t file = __file_name_lookup (addr->sun_path, 0, 0);
if (file == MACH_PORT_NULL)
- return -1;
+ {
+ if (dealloc)
+ __vm_deallocate (__mach_task_self (), data.addr, len);
+ return -1;
+ }
err = __ifsock_getsockaddr (file, &aport);
__mach_port_deallocate (__mach_task_self (), file);
if (err == MIG_BAD_ID || err == EOPNOTSUPP)
/* The file did not grok the ifsock protocol. */
err = ENOTSOCK;
if (err)
- return __hurd_fail (err);
+ {
+ if (dealloc)
+ __vm_deallocate (__mach_task_self (), data.addr, len);
+ return __hurd_fail (err);
+ }
}
else
err = EIEIO;
diff --git a/libc/sysdeps/mach/hurd/ttyname.c b/libc/sysdeps/mach/hurd/ttyname.c
index 927851e2e..6e2e5bf67 100644
--- a/libc/sysdeps/mach/hurd/ttyname.c
+++ b/libc/sysdeps/mach/hurd/ttyname.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1994, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1994, 1997, 2010 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
@@ -32,7 +32,11 @@ ttyname (int fd)
nodename[0] = '\0';
if (err = HURD_DPORT_USE (fd, __term_get_nodename (port, nodename)))
- return __hurd_dfail (fd, err), NULL;
+ {
+ if (err == MIG_BAD_ID || err == EOPNOTSUPP)
+ err = ENOTTY;
+ return __hurd_dfail (fd, err), NULL;
+ }
return nodename;
}
diff --git a/libc/sysdeps/mach/hurd/ttyname_r.c b/libc/sysdeps/mach/hurd/ttyname_r.c
index 889625224..5f6c9c35f 100644
--- a/libc/sysdeps/mach/hurd/ttyname_r.c
+++ b/libc/sysdeps/mach/hurd/ttyname_r.c
@@ -34,7 +34,11 @@ __ttyname_r (int fd, char *buf, size_t buflen)
nodename[0] = '\0';
if (err = HURD_DPORT_USE (fd, __term_get_nodename (port, nodename)))
- return __hurd_dfail (fd, err), errno;
+ {
+ if (err == MIG_BAD_ID || err == EOPNOTSUPP)
+ err = ENOTTY;
+ return __hurd_dfail (fd, err), errno;
+ }
len = strlen (nodename) + 1;
if (len > buflen)
diff --git a/libc/sysdeps/powerpc/powerpc32/970/Implies b/libc/sysdeps/powerpc/powerpc32/970/Implies
index 4e3a98342..17139bf21 100644
--- a/libc/sysdeps/powerpc/powerpc32/970/Implies
+++ b/libc/sysdeps/powerpc/powerpc32/970/Implies
@@ -1 +1,2 @@
+powerpc/powerpc32/power4/fpu
powerpc/powerpc32/power4
diff --git a/libc/sysdeps/powerpc/powerpc32/power5+/Implies b/libc/sysdeps/powerpc/powerpc32/power5+/Implies
index 4e3a98342..a51d2fdf9 100644
--- a/libc/sysdeps/powerpc/powerpc32/power5+/Implies
+++ b/libc/sysdeps/powerpc/powerpc32/power5+/Implies
@@ -1 +1,2 @@
-powerpc/powerpc32/power4
+powerpc/powerpc32/power5/fpu
+powerpc/powerpc32/power5
diff --git a/libc/sysdeps/powerpc/powerpc32/power5+/fpu/Implies b/libc/sysdeps/powerpc/powerpc32/power5+/fpu/Implies
deleted file mode 100644
index 7c16e45c2..000000000
--- a/libc/sysdeps/powerpc/powerpc32/power5+/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power4/fpu
diff --git a/libc/sysdeps/powerpc/powerpc32/power5/Implies b/libc/sysdeps/powerpc/powerpc32/power5/Implies
index 4e3a98342..17139bf21 100644
--- a/libc/sysdeps/powerpc/powerpc32/power5/Implies
+++ b/libc/sysdeps/powerpc/powerpc32/power5/Implies
@@ -1 +1,2 @@
+powerpc/powerpc32/power4/fpu
powerpc/powerpc32/power4
diff --git a/libc/sysdeps/powerpc/powerpc32/power5/fpu/Implies b/libc/sysdeps/powerpc/powerpc32/power5/fpu/Implies
deleted file mode 100644
index 7c16e45c2..000000000
--- a/libc/sysdeps/powerpc/powerpc32/power5/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc32/power4/fpu
diff --git a/libc/sysdeps/powerpc/powerpc32/power6/Implies b/libc/sysdeps/powerpc/powerpc32/power6/Implies
index c9a2d47f8..8e5b58a57 100644
--- a/libc/sysdeps/powerpc/powerpc32/power6/Implies
+++ b/libc/sysdeps/powerpc/powerpc32/power6/Implies
@@ -1,2 +1,2 @@
+powerpc/powerpc32/power5+/fpu
powerpc/powerpc32/power5+
-powerpc/powerpc32/power4
diff --git a/libc/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S b/libc/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
new file mode 100644
index 000000000..0e8b26d40
--- /dev/null
+++ b/libc/sysdeps/powerpc/powerpc32/power6/fpu/s_copysign.S
@@ -0,0 +1,56 @@
+/* copysign(). PowerPC32/POWER6 version.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Luis Machado <luisgpm@br.ibm.com>.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+/* double [f1] copysign (double [f1] x, double [f2] y);
+ copysign(x,y) returns a value with the magnitude of x and
+ with the sign bit of y. */
+
+ .section ".text"
+ .type __copysign, @function
+ .machine power6
+EALIGN (__copysign, 4, 0)
+ CALL_MCOUNT
+ fcpsgn fp1,fp2,fp1
+ blr
+END (__copysign)
+
+hidden_def (__copysign)
+weak_alias (__copysign, copysign)
+
+/* It turns out that the 'double' version will also always work for
+ single-precision. */
+strong_alias (__copysign, __copysignf)
+hidden_def (__copysignf)
+weak_alias (__copysignf, copysignf)
+
+#ifdef NO_LONG_DOUBLE
+strong_alias (__copysign, __copysignl)
+weak_alias (__copysign, copysignl)
+#endif
+
+#ifndef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __copysign, __copysignl, GLIBC_2_0);
+compat_symbol (libc, copysign, copysignl, GLIBC_2_0);
+# endif
+#endif
diff --git a/libc/sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S b/libc/sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S
new file mode 100644
index 000000000..d4aa702d0
--- /dev/null
+++ b/libc/sysdeps/powerpc/powerpc32/power6/fpu/s_copysignf.S
@@ -0,0 +1 @@
+/* This function uses the same code as s_copysign.S. */
diff --git a/libc/sysdeps/powerpc/powerpc32/power6x/Implies b/libc/sysdeps/powerpc/powerpc32/power6x/Implies
index 1ac063bbc..c0e1bea43 100644
--- a/libc/sysdeps/powerpc/powerpc32/power6x/Implies
+++ b/libc/sysdeps/powerpc/powerpc32/power6x/Implies
@@ -1,3 +1,2 @@
+powerpc/powerpc32/power6/fpu
powerpc/powerpc32/power6
-powerpc/powerpc32/power5+
-powerpc/powerpc32/power4
diff --git a/libc/sysdeps/powerpc/powerpc32/power6x/fpu/Implies b/libc/sysdeps/powerpc/powerpc32/power6x/fpu/Implies
deleted file mode 100644
index 081f75009..000000000
--- a/libc/sysdeps/powerpc/powerpc32/power6x/fpu/Implies
+++ /dev/null
@@ -1,3 +0,0 @@
-powerpc/powerpc32/power6/fpu
-powerpc/powerpc32/power5+/fpu
-powerpc/powerpc32/power4/fpu
diff --git a/libc/sysdeps/powerpc/powerpc32/power7/Implies b/libc/sysdeps/powerpc/powerpc32/power7/Implies
new file mode 100644
index 000000000..c0e1bea43
--- /dev/null
+++ b/libc/sysdeps/powerpc/powerpc32/power7/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc32/power6/fpu
+powerpc/powerpc32/power6
diff --git a/libc/sysdeps/powerpc/powerpc64/970/Implies b/libc/sysdeps/powerpc/powerpc64/970/Implies
index ac431fa96..bedb20b65 100644
--- a/libc/sysdeps/powerpc/powerpc64/970/Implies
+++ b/libc/sysdeps/powerpc/powerpc64/970/Implies
@@ -1 +1,2 @@
+powerpc/powerpc64/power4/fpu
powerpc/powerpc64/power4
diff --git a/libc/sysdeps/powerpc/powerpc64/power5+/Implies b/libc/sysdeps/powerpc/powerpc64/power5+/Implies
index ac431fa96..a01a13ab1 100644
--- a/libc/sysdeps/powerpc/powerpc64/power5+/Implies
+++ b/libc/sysdeps/powerpc/powerpc64/power5+/Implies
@@ -1 +1,2 @@
-powerpc/powerpc64/power4
+powerpc/powerpc64/power5/fpu
+powerpc/powerpc64/power5
diff --git a/libc/sysdeps/powerpc/powerpc64/power5+/fpu/Implies b/libc/sysdeps/powerpc/powerpc64/power5+/fpu/Implies
deleted file mode 100644
index 558a5fb17..000000000
--- a/libc/sysdeps/powerpc/powerpc64/power5+/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power4/fpu
diff --git a/libc/sysdeps/powerpc/powerpc64/power5/Implies b/libc/sysdeps/powerpc/powerpc64/power5/Implies
index ac431fa96..bedb20b65 100644
--- a/libc/sysdeps/powerpc/powerpc64/power5/Implies
+++ b/libc/sysdeps/powerpc/powerpc64/power5/Implies
@@ -1 +1,2 @@
+powerpc/powerpc64/power4/fpu
powerpc/powerpc64/power4
diff --git a/libc/sysdeps/powerpc/powerpc64/power5/fpu/Implies b/libc/sysdeps/powerpc/powerpc64/power5/fpu/Implies
deleted file mode 100644
index 558a5fb17..000000000
--- a/libc/sysdeps/powerpc/powerpc64/power5/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power4/fpu
diff --git a/libc/sysdeps/powerpc/powerpc64/power6/Implies b/libc/sysdeps/powerpc/powerpc64/power6/Implies
index 0f35f37c7..4c782d412 100644
--- a/libc/sysdeps/powerpc/powerpc64/power6/Implies
+++ b/libc/sysdeps/powerpc/powerpc64/power6/Implies
@@ -1 +1,2 @@
+powerpc/powerpc64/power5+/fpu
powerpc/powerpc64/power5+
diff --git a/libc/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S b/libc/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
new file mode 100644
index 000000000..0ff84d26e
--- /dev/null
+++ b/libc/sysdeps/powerpc/powerpc64/power6/fpu/s_copysign.S
@@ -0,0 +1,56 @@
+/* copysign(). PowerPC64/POWER6 version.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Luis Machado <luisgpm@br.ibm.com>.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <math_ldbl_opt.h>
+
+/* double [f1] copysign (double [f1] x, double [f2] y);
+ copysign(x,y) returns a value with the magnitude of x and
+ with the sign bit of y. */
+
+ .section ".text"
+ .type __copysign, @function
+ .machine power6
+EALIGN (__copysign, 4, 0)
+ CALL_MCOUNT 0
+ fcpsgn fp1,fp2,fp1
+ blr
+END (__copysign)
+
+hidden_def (__copysign)
+weak_alias (__copysign, copysign)
+
+/* It turns out that the 'double' version will also always work for
+ single-precision. */
+strong_alias (__copysign, __copysignf)
+hidden_def (__copysignf)
+weak_alias (__copysignf, copysignf)
+
+#ifdef NO_LONG_DOUBLE
+strong_alias (__copysign, __copysignl)
+weak_alias (__copysign, copysignl)
+#endif
+
+#ifndef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __copysign, __copysignl, GLIBC_2_0);
+compat_symbol (libc, copysign, copysignl, GLIBC_2_0);
+# endif
+#endif
diff --git a/libc/sysdeps/powerpc/powerpc64/power6/fpu/s_copysignf.S b/libc/sysdeps/powerpc/powerpc64/power6/fpu/s_copysignf.S
new file mode 100644
index 000000000..d4aa702d0
--- /dev/null
+++ b/libc/sysdeps/powerpc/powerpc64/power6/fpu/s_copysignf.S
@@ -0,0 +1 @@
+/* This function uses the same code as s_copysign.S. */
diff --git a/libc/sysdeps/powerpc/powerpc64/power6x/Implies b/libc/sysdeps/powerpc/powerpc64/power6x/Implies
index d993b0cd7..9d68f39d2 100644
--- a/libc/sysdeps/powerpc/powerpc64/power6x/Implies
+++ b/libc/sysdeps/powerpc/powerpc64/power6x/Implies
@@ -1,2 +1,2 @@
+powerpc/powerpc64/power6/fpu
powerpc/powerpc64/power6
-powerpc/powerpc64/power5+
diff --git a/libc/sysdeps/powerpc/powerpc64/power6x/fpu/Implies b/libc/sysdeps/powerpc/powerpc64/power6x/fpu/Implies
deleted file mode 100644
index 84510991b..000000000
--- a/libc/sysdeps/powerpc/powerpc64/power6x/fpu/Implies
+++ /dev/null
@@ -1,3 +0,0 @@
-powerpc/powerpc64/power6/fpu
-powerpc/powerpc64/power5+/fpu
-powerpc/powerpc64/power4/fpu
diff --git a/libc/sysdeps/powerpc/powerpc64/power7/Implies b/libc/sysdeps/powerpc/powerpc64/power7/Implies
new file mode 100644
index 000000000..9d68f39d2
--- /dev/null
+++ b/libc/sysdeps/powerpc/powerpc64/power7/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc64/power6/fpu
+powerpc/powerpc64/power6
diff --git a/libc/sysdeps/unix/sysv/linux/fpathconf.c b/libc/sysdeps/unix/sysv/linux/fpathconf.c
index 2701c9ec9..617a5a93c 100644
--- a/libc/sysdeps/unix/sysv/linux/fpathconf.c
+++ b/libc/sysdeps/unix/sysv/linux/fpathconf.c
@@ -1,5 +1,6 @@
/* Get file-specific information about descriptor FD. Linux version.
- Copyright (C) 1991,1995,1996,1998-2003,2008 Free Software Foundation, Inc.
+ Copyright (C) 1991,1995,1996,1998-2003,2008,2010
+ 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
@@ -17,6 +18,7 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <fcntl.h>
#include "pathconf.h"
static long int posix_fpathconf (int fd, int name);
@@ -33,6 +35,7 @@ __fpathconf (fd, name)
int name;
{
struct statfs fsbuf;
+ int r;
switch (name)
{
@@ -48,6 +51,12 @@ __fpathconf (fd, name)
case _PC_CHOWN_RESTRICTED:
return __statfs_chown_restricted (__fstatfs (fd, &fsbuf), &fsbuf);
+ case _PC_PIPE_BUF:
+ r = __fcntl (fd, F_GETPIPE_SZ);
+ if (r > 0)
+ return r;
+ /* FALLTHROUGH */
+
default:
return posix_fpathconf (fd, name);
}
diff --git a/libc/sysdeps/unix/sysv/linux/getlogin_r.c b/libc/sysdeps/unix/sysv/linux/getlogin_r.c
index 7d4d6c0ed..42041eeee 100644
--- a/libc/sysdeps/unix/sysv/linux/getlogin_r.c
+++ b/libc/sysdeps/unix/sysv/linux/getlogin_r.c
@@ -81,7 +81,7 @@ __getlogin_r_loginuid (name, namesize)
use_malloc = true;
}
- if (res != 0)
+ if (res != 0 || tpwd == NULL)
{
result = -1;
goto out;
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/970/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/970/Implies
new file mode 100644
index 000000000..0c018834a
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/970/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc32/970/fpu
+powerpc/powerpc32/970
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/970/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/970/fpu/Implies
deleted file mode 100644
index 52993ae71..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/970/fpu/Implies
+++ /dev/null
@@ -1,3 +0,0 @@
-# Make sure this comes before the powerpc/powerpc32/fpu that's
-# listed in unix/sysv/linux/powerpc/powerpc32/fpu/Implies.
-powerpc/powerpc32/970/fpu
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/cell/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/cell/Implies
new file mode 100644
index 000000000..29c49a4c2
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/cell/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc32/cell/fpu
+powerpc/powerpc32/cell
diff --git a/libc/sysdeps/powerpc/powerpc32/970/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power4/Implies
index 7c16e45c2..17139bf21 100644
--- a/libc/sysdeps/powerpc/powerpc32/970/fpu/Implies
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power4/Implies
@@ -1 +1,2 @@
powerpc/powerpc32/power4/fpu
+powerpc/powerpc32/power4
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power4/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power4/fpu/Implies
deleted file mode 100644
index 3c0690e2f..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power4/fpu/Implies
+++ /dev/null
@@ -1,3 +0,0 @@
-# Make sure this comes before the powerpc/powerpc32/fpu that's
-# listed in unix/sysv/linux/powerpc/powerpc32/fpu/Implies.
-powerpc/powerpc32/power4/fpu
diff --git a/libc/sysdeps/powerpc/powerpc32/power6/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5+/Implies
index 57b92fb13..8e5b58a57 100644
--- a/libc/sysdeps/powerpc/powerpc32/power6/fpu/Implies
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5+/Implies
@@ -1,2 +1,2 @@
powerpc/powerpc32/power5+/fpu
-powerpc/powerpc32/power4/fpu
+powerpc/powerpc32/power5+
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5+/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5+/fpu/Implies
deleted file mode 100644
index 37d43bb6f..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5+/fpu/Implies
+++ /dev/null
@@ -1,3 +0,0 @@
-# Make sure this comes before the powerpc/powerpc32/fpu that's
-# listed in unix/sysv/linux/powerpc/powerpc32/fpu/Implies.
-powerpc/powerpc32/power5+/fpu
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5/Implies
new file mode 100644
index 000000000..a51d2fdf9
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc32/power5/fpu
+powerpc/powerpc32/power5
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5/fpu/Implies
deleted file mode 100644
index d379a2dd1..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power5/fpu/Implies
+++ /dev/null
@@ -1,3 +0,0 @@
-# Make sure this comes before the powerpc/powerpc32/fpu that's
-# listed in unix/sysv/linux/powerpc/powerpc32/fpu/Implies.
-powerpc/powerpc32/power5/fpu
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/Implies
new file mode 100644
index 000000000..c0e1bea43
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc32/power6/fpu
+powerpc/powerpc32/power6
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/Implies
deleted file mode 100644
index 9fb457db9..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6/fpu/Implies
+++ /dev/null
@@ -1,3 +0,0 @@
-# Make sure this comes before the powerpc/powerpc32/fpu that's
-# listed in unix/sysv/linux/powerpc/powerpc32/fpu/Implies.
-powerpc/powerpc32/power6/fpu
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6x/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6x/Implies
new file mode 100644
index 000000000..bc9e74fcf
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6x/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc32/power6x/fpu
+powerpc/powerpc32/power6x
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6x/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6x/fpu/Implies
deleted file mode 100644
index ffca13c0e..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power6x/fpu/Implies
+++ /dev/null
@@ -1,4 +0,0 @@
-# Make sure this comes before the powerpc/powerpc32/fpu that's
-# listed in unix/sysv/linux/powerpc/powerpc32/fpu/Implies.
-powerpc/powerpc32/power6x/fpu
-powerpc/powerpc32/power6/fpu
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/Implies
new file mode 100644
index 000000000..083f3e950
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc32/power7/fpu
+powerpc/powerpc32/power7
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/fpu/Implies
deleted file mode 100644
index af946119a..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/power7/fpu/Implies
+++ /dev/null
@@ -1,4 +0,0 @@
-# Make sure this comes before the powerpc/powerpc32/fpu that's
-# listed in unix/sysv/linux/powerpc/powerpc32/fpu/Implies.
-powerpc/powerpc32/power7/fpu
-powerpc/powerpc32/power5/fpu
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/970/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/970/Implies
new file mode 100644
index 000000000..76a32ce7b
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/970/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc64/970/fpu
+powerpc/powerpc64/970
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/970/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/970/fpu/Implies
deleted file mode 100644
index 558a5fb17..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/970/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power4/fpu
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/Implies
new file mode 100644
index 000000000..583d4084a
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/cell/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc64/cell/fpu
+powerpc/powerpc64/cell
diff --git a/libc/sysdeps/powerpc/powerpc64/970/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/Implies
index 558a5fb17..bedb20b65 100644
--- a/libc/sysdeps/powerpc/powerpc64/970/fpu/Implies
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/Implies
@@ -1 +1,2 @@
powerpc/powerpc64/power4/fpu
+powerpc/powerpc64/power4
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/fpu/Implies
deleted file mode 100644
index 558a5fb17..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power4/fpu
diff --git a/libc/sysdeps/powerpc/powerpc64/power6/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/Implies
index 885e39c00..4c782d412 100644
--- a/libc/sysdeps/powerpc/powerpc64/power6/fpu/Implies
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/Implies
@@ -1,2 +1,2 @@
powerpc/powerpc64/power5+/fpu
-powerpc/powerpc64/power4/fpu
+powerpc/powerpc64/power5+
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/fpu/Implies
deleted file mode 100644
index cf5913dec..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/fpu/Implies
+++ /dev/null
@@ -1,3 +0,0 @@
-# Make sure this comes before the powerpc/powerpc64/fpu that's
-# listed in unix/sysv/linux/powerpc/powerpc64/fpu/Implies.
-powerpc/powerpc64/power5+/fpu
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/Implies
new file mode 100644
index 000000000..a01a13ab1
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc64/power5/fpu
+powerpc/powerpc64/power5
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/fpu/Implies
deleted file mode 100644
index 558a5fb17..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/fpu/Implies
+++ /dev/null
@@ -1 +0,0 @@
-powerpc/powerpc64/power4/fpu
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/Implies
new file mode 100644
index 000000000..9d68f39d2
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc64/power6/fpu
+powerpc/powerpc64/power6
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/Implies
deleted file mode 100644
index 945114726..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/fpu/Implies
+++ /dev/null
@@ -1,3 +0,0 @@
-# Make sure this comes before the powerpc/powerpc64/fpu that's
-# listed in unix/sysv/linux/powerpc/powerpc64/fpu/Implies.
-powerpc/powerpc64/power6/fpu
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/Implies
new file mode 100644
index 000000000..901977825
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc64/power6x/fpu
+powerpc/powerpc64/power6x
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/fpu/Implies
deleted file mode 100644
index fd74b8341..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/fpu/Implies
+++ /dev/null
@@ -1,4 +0,0 @@
-# Make sure this comes before the powerpc/powerpc64/fpu that's
-# listed in unix/sysv/linux/powerpc/powerpc64/fpu/Implies.
-powerpc/powerpc64/power6x/fpu
-powerpc/powerpc64/power6/fpu
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/Implies
new file mode 100644
index 000000000..9a5e3c727
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/Implies
@@ -0,0 +1,2 @@
+powerpc/powerpc64/power7/fpu
+powerpc/powerpc64/power7
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/fpu/Implies b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/fpu/Implies
deleted file mode 100644
index ca112208d..000000000
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/fpu/Implies
+++ /dev/null
@@ -1,4 +0,0 @@
-# Make sure this comes before the powerpc/powerpc64/fpu that's
-# listed in unix/sysv/linux/powerpc/powerpc64/fpu/Implies.
-powerpc/powerpc64/power7/fpu
-powerpc/powerpc64/power5/fpu
diff --git a/libc/sysdeps/x86_64/Makefile b/libc/sysdeps/x86_64/Makefile
index e8d0285e2..f7eeb155e 100644
--- a/libc/sysdeps/x86_64/Makefile
+++ b/libc/sysdeps/x86_64/Makefile
@@ -12,7 +12,8 @@ sysdep_routines += _mcount
endif
ifeq ($(subdir),string)
-sysdep_routines += cacheinfo
+sysdep_routines += cacheinfo strcasecmp_l-nonascii
+gen-as-const-headers += locale-defines.sym
endif
ifeq ($(subdir),elf)
diff --git a/libc/sysdeps/x86_64/_mcount.S b/libc/sysdeps/x86_64/_mcount.S
index c005932c0..ef046dc3c 100644
--- a/libc/sysdeps/x86_64/_mcount.S
+++ b/libc/sysdeps/x86_64/_mcount.S
@@ -65,3 +65,41 @@ C_LABEL(_mcount)
#undef mcount
weak_alias (_mcount, mcount)
+
+ ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(__fentry__)
+ ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__fentry__), @function)
+ .align ALIGNARG(4)
+C_LABEL(__fentry__)
+ /* Allocate space for 7 registers. */
+ subq $64,%rsp
+ movq %rax,(%rsp)
+ movq %rcx,8(%rsp)
+ movq %rdx,16(%rsp)
+ movq %rsi,24(%rsp)
+ movq %rdi,32(%rsp)
+ movq %r8,40(%rsp)
+ movq %r9,48(%rsp)
+
+ /* Setup parameter for __mcount_internal. */
+ /* selfpc is the return address on the stack. */
+ movq 64(%rsp),%rsi
+ /* caller is the return address above it */
+ movq 72(%rsp),%rdi
+#ifdef PIC
+ call C_SYMBOL_NAME(__mcount_internal)@PLT
+#else
+ call C_SYMBOL_NAME(__mcount_internal)
+#endif
+ /* Pop the saved registers. Please note that `__fentry__' has no
+ return value. */
+ movq 48(%rsp),%r9
+ movq 40(%rsp),%r8
+ movq 32(%rsp),%rdi
+ movq 24(%rsp),%rsi
+ movq 16(%rsp),%rdx
+ movq 8(%rsp),%rcx
+ movq (%rsp),%rax
+ addq $64,%rsp
+ ret
+
+ ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(__fentry__))
diff --git a/libc/sysdeps/x86_64/locale-defines.sym b/libc/sysdeps/x86_64/locale-defines.sym
new file mode 100644
index 000000000..aebff9a4f
--- /dev/null
+++ b/libc/sysdeps/x86_64/locale-defines.sym
@@ -0,0 +1,11 @@
+#include <locale/localeinfo.h>
+#include <langinfo.h>
+#include <stddef.h>
+
+--
+
+LOCALE_T___LOCALES offsetof (struct __locale_struct, __locales)
+LC_CTYPE
+_NL_CTYPE_NONASCII_CASE
+LOCALE_DATA_VALUES offsetof (struct __locale_data, values)
+SIZEOF_VALUES sizeof (((struct __locale_data *) 0)->values[0])
diff --git a/libc/sysdeps/x86_64/memcpy.S b/libc/sysdeps/x86_64/memcpy.S
index b25646b8c..b4545ac9f 100644
--- a/libc/sysdeps/x86_64/memcpy.S
+++ b/libc/sysdeps/x86_64/memcpy.S
@@ -40,12 +40,12 @@
.text
#if defined PIC && !defined NOT_IN_libc
-ENTRY (__memcpy_chk)
+ENTRY_CHK (__memcpy_chk)
cmpq %rdx, %rcx
jb HIDDEN_JUMPTARGET (__chk_fail)
-END (__memcpy_chk)
+END_CHK (__memcpy_chk)
#endif
ENTRY(memcpy) /* (void *, const void*, size_t) */
diff --git a/libc/sysdeps/x86_64/multiarch/Makefile b/libc/sysdeps/x86_64/multiarch/Makefile
index c61cf7034..5113dc1ce 100644
--- a/libc/sysdeps/x86_64/multiarch/Makefile
+++ b/libc/sysdeps/x86_64/multiarch/Makefile
@@ -5,7 +5,9 @@ endif
ifeq ($(subdir),string)
sysdep_routines += stpncpy-c strncpy-c strcmp-ssse3 strncmp-ssse3 \
- strend-sse4 memcmp-sse4
+ strend-sse4 memcmp-sse4 memcpy-ssse3 mempcpy-ssse3 \
+ memmove-ssse3 memcpy-ssse3-back mempcpy-ssse3-back \
+ memmove-ssse3-back strcasestr-nonascii strcasecmp_l-ssse3
ifeq (yes,$(config-cflags-sse4))
sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c
CFLAGS-strcspn-c.c += -msse4
@@ -13,5 +15,6 @@ CFLAGS-strpbrk-c.c += -msse4
CFLAGS-strspn-c.c += -msse4
CFLAGS-strstr.c += -msse4
CFLAGS-strcasestr.c += -msse4
+CFLAGS-strcasestr-nonascii.c += -msse4
endif
endif
diff --git a/libc/sysdeps/x86_64/multiarch/bcopy.S b/libc/sysdeps/x86_64/multiarch/bcopy.S
new file mode 100644
index 000000000..11e250f1c
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/bcopy.S
@@ -0,0 +1,7 @@
+#include <sysdep.h>
+
+ .text
+ENTRY(bcopy)
+ xchg %rdi, %rsi
+ jmp HIDDEN_BUILTIN_JUMPTARGET(memmove)
+END(bcopy)
diff --git a/libc/sysdeps/x86_64/multiarch/init-arch.c b/libc/sysdeps/x86_64/multiarch/init-arch.c
index f13a9f4b7..55c9f54f9 100644
--- a/libc/sysdeps/x86_64/multiarch/init-arch.c
+++ b/libc/sysdeps/x86_64/multiarch/init-arch.c
@@ -78,10 +78,13 @@ __init_cpu_features (void)
case 0x25:
case 0x2e:
case 0x2f:
- /* Rep string instructions are fast on Intel Core i3, i5
- and i7. */
+ /* Rep string instructions and copy backward are fast on
+ Intel Core i3, i5 and i7. */
+#if index_Fast_Rep_String != index_Fast_Copy_Backward
+# error index_Fast_Rep_String != index_Fast_Copy_Backward
+#endif
__cpu_features.feature[index_Fast_Rep_String]
- |= bit_Fast_Rep_String;
+ |= bit_Fast_Rep_String | bit_Fast_Copy_Backward;
break;
}
}
diff --git a/libc/sysdeps/x86_64/multiarch/init-arch.h b/libc/sysdeps/x86_64/multiarch/init-arch.h
index b2f2de379..4a211c086 100644
--- a/libc/sysdeps/x86_64/multiarch/init-arch.h
+++ b/libc/sysdeps/x86_64/multiarch/init-arch.h
@@ -17,6 +17,7 @@
02111-1307 USA. */
#define bit_Fast_Rep_String (1 << 0)
+#define bit_Fast_Copy_Backward (1 << 1)
#ifdef __ASSEMBLER__
@@ -32,7 +33,8 @@
# define index_SSE4_1 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET
# define index_SSE4_2 COMMON_CPUID_INDEX_1*CPUID_SIZE+CPUID_ECX_OFFSET
-#define index_Fast_Rep_String FEATURE_INDEX_1*FEATURE_SIZE
+# define index_Fast_Rep_String FEATURE_INDEX_1*FEATURE_SIZE
+# define index_Fast_Copy_Backward FEATURE_INDEX_1*FEATURE_SIZE
#else /* __ASSEMBLER__ */
@@ -102,6 +104,16 @@ extern const struct cpu_features *__get_cpu_features (void)
# define HAS_SSE4_2 HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 20)
# define HAS_FMA HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 12)
-# define index_Fast_Rep_String FEATURE_INDEX_1
+# define index_Fast_Rep_String FEATURE_INDEX_1
+# define index_Fast_Copy_Backward FEATURE_INDEX_1
+
+#define HAS_ARCH_FEATURE(idx, bit) \
+ ((__get_cpu_features ()->feature[idx] & (bit)) != 0)
+
+#define HAS_FAST_REP_STRING \
+ HAS_ARCH_FEATURE (index_Fast_Rep_String, bit_Fast_Rep_String)
+
+#define HAS_FAST_COPY_BACKWARD \
+ HAS_ARCH_FEATURE (index_Fast_Copy_Backward, bit_Fast_Copy_Backward)
#endif /* __ASSEMBLER__ */
diff --git a/libc/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S b/libc/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S
new file mode 100644
index 000000000..48c974e97
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S
@@ -0,0 +1,3169 @@
+/* memcpy with SSSE3 and REP string
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+
+#if !defined NOT_IN_libc \
+ && (defined SHARED \
+ || defined USE_AS_MEMMOVE \
+ || !defined USE_MULTIARCH)
+
+#include "asm-syntax.h"
+
+#ifndef MEMCPY
+# define MEMCPY __memcpy_ssse3_back
+# define MEMCPY_CHK __memcpy_chk_ssse3_back
+#endif
+
+#ifndef ALIGN
+# define ALIGN(n) .p2align n
+#endif
+
+#define JMPTBL(I, B) I - B
+
+/* Branch to an entry in a jump table. TABLE is a jump table with
+ relative offsets. INDEX is a register contains the index into the
+ jump table. SCALE is the scale of INDEX. */
+#define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \
+ lea TABLE(%rip), %r11; \
+ movslq (%r11, INDEX, SCALE), INDEX; \
+ lea (%r11, INDEX), INDEX; \
+ jmp *INDEX; \
+ ud2
+
+ .section .text.ssse3,"ax",@progbits
+#if defined SHARED && !defined NOT_IN_libc
+ENTRY (MEMCPY_CHK)
+ cmpq %rdx, %rcx
+ jb HIDDEN_JUMPTARGET (__chk_fail)
+END (MEMCPY_CHK)
+#endif
+
+ENTRY (MEMCPY)
+ mov %rdi, %rax
+#ifdef USE_AS_MEMPCPY
+ add %rdx, %rax
+#endif
+
+#ifdef USE_AS_MEMMOVE
+ cmp %rsi, %rdi
+ jb L(copy_forward)
+ je L(bwd_write_0bytes)
+ cmp $144, %rdx
+ jae L(copy_backward)
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+L(copy_forward):
+#endif
+ cmp $144, %rdx
+ jae L(144bytesormore)
+
+L(fwd_write_less32bytes):
+#ifndef USE_AS_MEMMOVE
+ cmp %dil, %sil
+ jbe L(bk_write)
+#endif
+ add %rdx, %rsi
+ add %rdx, %rdi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+#ifndef USE_AS_MEMMOVE
+L(bk_write):
+
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+#endif
+
+ ALIGN (4)
+L(144bytesormore):
+
+#ifndef USE_AS_MEMMOVE
+ cmp %dil, %sil
+ jle L(copy_backward)
+#endif
+ movdqu (%rsi), %xmm0
+ mov %rdi, %r8
+ and $-16, %rdi
+ add $16, %rdi
+ mov %rdi, %r9
+ sub %r8, %r9
+ sub %r9, %rdx
+ add %r9, %rsi
+ mov %rsi, %r9
+ and $0xf, %r9
+ jz L(shl_0)
+#ifdef DATA_CACHE_SIZE
+ mov $DATA_CACHE_SIZE, %rcx
+#else
+ mov __x86_64_data_cache_size(%rip), %rcx
+#endif
+ cmp %rcx, %rdx
+ jae L(gobble_mem_fwd)
+ lea L(shl_table_fwd)(%rip), %r11
+ sub $0x80, %rdx
+ movslq (%r11, %r9, 4), %r9
+ add %r11, %r9
+ jmp *%r9
+ ud2
+
+ ALIGN (4)
+L(copy_backward):
+#ifdef DATA_CACHE_SIZE
+ mov $DATA_CACHE_SIZE, %rcx
+#else
+ mov __x86_64_data_cache_size(%rip), %rcx
+#endif
+ shl $1, %rcx
+ cmp %rcx, %rdx
+ ja L(gobble_mem_bwd)
+
+ add %rdx, %rdi
+ add %rdx, %rsi
+ movdqu -16(%rsi), %xmm0
+ lea -16(%rdi), %r8
+ mov %rdi, %r9
+ and $0xf, %r9
+ xor %r9, %rdi
+ sub %r9, %rsi
+ sub %r9, %rdx
+ mov %rsi, %r9
+ and $0xf, %r9
+ jz L(shl_0_bwd)
+ lea L(shl_table_bwd)(%rip), %r11
+ sub $0x80, %rdx
+ movslq (%r11, %r9, 4), %r9
+ add %r11, %r9
+ jmp *%r9
+ ud2
+
+ ALIGN (4)
+L(shl_0):
+
+ mov %rdx, %r9
+ shr $8, %r9
+ add %rdx, %r9
+#ifdef DATA_CACHE_SIZE
+ cmp $DATA_CACHE_SIZE_HALF, %r9
+#else
+ cmp __x86_64_data_cache_size_half(%rip), %r9
+#endif
+ jae L(gobble_mem_fwd)
+ sub $0x80, %rdx
+ ALIGN (4)
+L(shl_0_loop):
+ movdqa (%rsi), %xmm1
+ movdqa %xmm1, (%rdi)
+ movaps 0x10(%rsi), %xmm2
+ movaps %xmm2, 0x10(%rdi)
+ movaps 0x20(%rsi), %xmm3
+ movaps %xmm3, 0x20(%rdi)
+ movaps 0x30(%rsi), %xmm4
+ movaps %xmm4, 0x30(%rdi)
+ movaps 0x40(%rsi), %xmm1
+ movaps %xmm1, 0x40(%rdi)
+ movaps 0x50(%rsi), %xmm2
+ movaps %xmm2, 0x50(%rdi)
+ movaps 0x60(%rsi), %xmm3
+ movaps %xmm3, 0x60(%rdi)
+ movaps 0x70(%rsi), %xmm4
+ movaps %xmm4, 0x70(%rdi)
+ sub $0x80, %rdx
+ lea 0x80(%rsi), %rsi
+ lea 0x80(%rdi), %rdi
+ jae L(shl_0_loop)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rsi
+ add %rdx, %rdi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_0_bwd):
+ sub $0x80, %rdx
+L(copy_backward_loop):
+ movaps -0x10(%rsi), %xmm1
+ movaps %xmm1, -0x10(%rdi)
+ movaps -0x20(%rsi), %xmm2
+ movaps %xmm2, -0x20(%rdi)
+ movaps -0x30(%rsi), %xmm3
+ movaps %xmm3, -0x30(%rdi)
+ movaps -0x40(%rsi), %xmm4
+ movaps %xmm4, -0x40(%rdi)
+ movaps -0x50(%rsi), %xmm5
+ movaps %xmm5, -0x50(%rdi)
+ movaps -0x60(%rsi), %xmm5
+ movaps %xmm5, -0x60(%rdi)
+ movaps -0x70(%rsi), %xmm5
+ movaps %xmm5, -0x70(%rdi)
+ movaps -0x80(%rsi), %xmm5
+ movaps %xmm5, -0x80(%rdi)
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(copy_backward_loop)
+
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_1):
+ sub $0x80, %rdx
+ movaps -0x01(%rsi), %xmm1
+ movaps 0x0f(%rsi), %xmm2
+ movaps 0x1f(%rsi), %xmm3
+ movaps 0x2f(%rsi), %xmm4
+ movaps 0x3f(%rsi), %xmm5
+ movaps 0x4f(%rsi), %xmm6
+ movaps 0x5f(%rsi), %xmm7
+ movaps 0x6f(%rsi), %xmm8
+ movaps 0x7f(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $1, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $1, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $1, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $1, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $1, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $1, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $1, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $1, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_1)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_1_bwd):
+ movaps -0x01(%rsi), %xmm1
+
+ movaps -0x11(%rsi), %xmm2
+ palignr $1, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x21(%rsi), %xmm3
+ palignr $1, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x31(%rsi), %xmm4
+ palignr $1, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x41(%rsi), %xmm5
+ palignr $1, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x51(%rsi), %xmm6
+ palignr $1, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x61(%rsi), %xmm7
+ palignr $1, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x71(%rsi), %xmm8
+ palignr $1, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x81(%rsi), %xmm9
+ palignr $1, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_1_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_2):
+ sub $0x80, %rdx
+ movaps -0x02(%rsi), %xmm1
+ movaps 0x0e(%rsi), %xmm2
+ movaps 0x1e(%rsi), %xmm3
+ movaps 0x2e(%rsi), %xmm4
+ movaps 0x3e(%rsi), %xmm5
+ movaps 0x4e(%rsi), %xmm6
+ movaps 0x5e(%rsi), %xmm7
+ movaps 0x6e(%rsi), %xmm8
+ movaps 0x7e(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $2, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $2, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $2, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $2, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $2, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $2, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $2, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $2, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_2)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_2_bwd):
+ movaps -0x02(%rsi), %xmm1
+
+ movaps -0x12(%rsi), %xmm2
+ palignr $2, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x22(%rsi), %xmm3
+ palignr $2, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x32(%rsi), %xmm4
+ palignr $2, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x42(%rsi), %xmm5
+ palignr $2, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x52(%rsi), %xmm6
+ palignr $2, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x62(%rsi), %xmm7
+ palignr $2, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x72(%rsi), %xmm8
+ palignr $2, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x82(%rsi), %xmm9
+ palignr $2, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_2_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_3):
+ sub $0x80, %rdx
+ movaps -0x03(%rsi), %xmm1
+ movaps 0x0d(%rsi), %xmm2
+ movaps 0x1d(%rsi), %xmm3
+ movaps 0x2d(%rsi), %xmm4
+ movaps 0x3d(%rsi), %xmm5
+ movaps 0x4d(%rsi), %xmm6
+ movaps 0x5d(%rsi), %xmm7
+ movaps 0x6d(%rsi), %xmm8
+ movaps 0x7d(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $3, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $3, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $3, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $3, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $3, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $3, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $3, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $3, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_3)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_3_bwd):
+ movaps -0x03(%rsi), %xmm1
+
+ movaps -0x13(%rsi), %xmm2
+ palignr $3, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x23(%rsi), %xmm3
+ palignr $3, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x33(%rsi), %xmm4
+ palignr $3, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x43(%rsi), %xmm5
+ palignr $3, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x53(%rsi), %xmm6
+ palignr $3, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x63(%rsi), %xmm7
+ palignr $3, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x73(%rsi), %xmm8
+ palignr $3, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x83(%rsi), %xmm9
+ palignr $3, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_3_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_4):
+ sub $0x80, %rdx
+ movaps -0x04(%rsi), %xmm1
+ movaps 0x0c(%rsi), %xmm2
+ movaps 0x1c(%rsi), %xmm3
+ movaps 0x2c(%rsi), %xmm4
+ movaps 0x3c(%rsi), %xmm5
+ movaps 0x4c(%rsi), %xmm6
+ movaps 0x5c(%rsi), %xmm7
+ movaps 0x6c(%rsi), %xmm8
+ movaps 0x7c(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $4, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $4, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $4, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $4, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $4, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $4, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $4, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $4, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_4)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_4_bwd):
+ movaps -0x04(%rsi), %xmm1
+
+ movaps -0x14(%rsi), %xmm2
+ palignr $4, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x24(%rsi), %xmm3
+ palignr $4, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x34(%rsi), %xmm4
+ palignr $4, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x44(%rsi), %xmm5
+ palignr $4, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x54(%rsi), %xmm6
+ palignr $4, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x64(%rsi), %xmm7
+ palignr $4, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x74(%rsi), %xmm8
+ palignr $4, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x84(%rsi), %xmm9
+ palignr $4, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_4_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_5):
+ sub $0x80, %rdx
+ movaps -0x05(%rsi), %xmm1
+ movaps 0x0b(%rsi), %xmm2
+ movaps 0x1b(%rsi), %xmm3
+ movaps 0x2b(%rsi), %xmm4
+ movaps 0x3b(%rsi), %xmm5
+ movaps 0x4b(%rsi), %xmm6
+ movaps 0x5b(%rsi), %xmm7
+ movaps 0x6b(%rsi), %xmm8
+ movaps 0x7b(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $5, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $5, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $5, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $5, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $5, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $5, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $5, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $5, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_5)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_5_bwd):
+ movaps -0x05(%rsi), %xmm1
+
+ movaps -0x15(%rsi), %xmm2
+ palignr $5, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x25(%rsi), %xmm3
+ palignr $5, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x35(%rsi), %xmm4
+ palignr $5, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x45(%rsi), %xmm5
+ palignr $5, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x55(%rsi), %xmm6
+ palignr $5, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x65(%rsi), %xmm7
+ palignr $5, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x75(%rsi), %xmm8
+ palignr $5, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x85(%rsi), %xmm9
+ palignr $5, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_5_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_6):
+ sub $0x80, %rdx
+ movaps -0x06(%rsi), %xmm1
+ movaps 0x0a(%rsi), %xmm2
+ movaps 0x1a(%rsi), %xmm3
+ movaps 0x2a(%rsi), %xmm4
+ movaps 0x3a(%rsi), %xmm5
+ movaps 0x4a(%rsi), %xmm6
+ movaps 0x5a(%rsi), %xmm7
+ movaps 0x6a(%rsi), %xmm8
+ movaps 0x7a(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $6, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $6, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $6, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $6, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $6, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $6, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $6, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $6, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_6)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_6_bwd):
+ movaps -0x06(%rsi), %xmm1
+
+ movaps -0x16(%rsi), %xmm2
+ palignr $6, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x26(%rsi), %xmm3
+ palignr $6, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x36(%rsi), %xmm4
+ palignr $6, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x46(%rsi), %xmm5
+ palignr $6, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x56(%rsi), %xmm6
+ palignr $6, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x66(%rsi), %xmm7
+ palignr $6, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x76(%rsi), %xmm8
+ palignr $6, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x86(%rsi), %xmm9
+ palignr $6, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_6_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_7):
+ sub $0x80, %rdx
+ movaps -0x07(%rsi), %xmm1
+ movaps 0x09(%rsi), %xmm2
+ movaps 0x19(%rsi), %xmm3
+ movaps 0x29(%rsi), %xmm4
+ movaps 0x39(%rsi), %xmm5
+ movaps 0x49(%rsi), %xmm6
+ movaps 0x59(%rsi), %xmm7
+ movaps 0x69(%rsi), %xmm8
+ movaps 0x79(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $7, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $7, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $7, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $7, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $7, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $7, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $7, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $7, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_7)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_7_bwd):
+ movaps -0x07(%rsi), %xmm1
+
+ movaps -0x17(%rsi), %xmm2
+ palignr $7, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x27(%rsi), %xmm3
+ palignr $7, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x37(%rsi), %xmm4
+ palignr $7, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x47(%rsi), %xmm5
+ palignr $7, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x57(%rsi), %xmm6
+ palignr $7, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x67(%rsi), %xmm7
+ palignr $7, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x77(%rsi), %xmm8
+ palignr $7, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x87(%rsi), %xmm9
+ palignr $7, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_7_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_8):
+ sub $0x80, %rdx
+ movaps -0x08(%rsi), %xmm1
+ movaps 0x08(%rsi), %xmm2
+ movaps 0x18(%rsi), %xmm3
+ movaps 0x28(%rsi), %xmm4
+ movaps 0x38(%rsi), %xmm5
+ movaps 0x48(%rsi), %xmm6
+ movaps 0x58(%rsi), %xmm7
+ movaps 0x68(%rsi), %xmm8
+ movaps 0x78(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $8, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $8, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $8, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $8, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $8, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $8, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $8, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $8, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_8)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_8_bwd):
+ movaps -0x08(%rsi), %xmm1
+
+ movaps -0x18(%rsi), %xmm2
+ palignr $8, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x28(%rsi), %xmm3
+ palignr $8, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x38(%rsi), %xmm4
+ palignr $8, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x48(%rsi), %xmm5
+ palignr $8, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x58(%rsi), %xmm6
+ palignr $8, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x68(%rsi), %xmm7
+ palignr $8, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x78(%rsi), %xmm8
+ palignr $8, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x88(%rsi), %xmm9
+ palignr $8, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_8_bwd)
+L(shl_8_end_bwd):
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_9):
+ sub $0x80, %rdx
+ movaps -0x09(%rsi), %xmm1
+ movaps 0x07(%rsi), %xmm2
+ movaps 0x17(%rsi), %xmm3
+ movaps 0x27(%rsi), %xmm4
+ movaps 0x37(%rsi), %xmm5
+ movaps 0x47(%rsi), %xmm6
+ movaps 0x57(%rsi), %xmm7
+ movaps 0x67(%rsi), %xmm8
+ movaps 0x77(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $9, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $9, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $9, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $9, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $9, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $9, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $9, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $9, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_9)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_9_bwd):
+ movaps -0x09(%rsi), %xmm1
+
+ movaps -0x19(%rsi), %xmm2
+ palignr $9, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x29(%rsi), %xmm3
+ palignr $9, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x39(%rsi), %xmm4
+ palignr $9, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x49(%rsi), %xmm5
+ palignr $9, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x59(%rsi), %xmm6
+ palignr $9, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x69(%rsi), %xmm7
+ palignr $9, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x79(%rsi), %xmm8
+ palignr $9, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x89(%rsi), %xmm9
+ palignr $9, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_9_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_10):
+ sub $0x80, %rdx
+ movaps -0x0a(%rsi), %xmm1
+ movaps 0x06(%rsi), %xmm2
+ movaps 0x16(%rsi), %xmm3
+ movaps 0x26(%rsi), %xmm4
+ movaps 0x36(%rsi), %xmm5
+ movaps 0x46(%rsi), %xmm6
+ movaps 0x56(%rsi), %xmm7
+ movaps 0x66(%rsi), %xmm8
+ movaps 0x76(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $10, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $10, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $10, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $10, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $10, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $10, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $10, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $10, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_10)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_10_bwd):
+ movaps -0x0a(%rsi), %xmm1
+
+ movaps -0x1a(%rsi), %xmm2
+ palignr $10, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x2a(%rsi), %xmm3
+ palignr $10, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x3a(%rsi), %xmm4
+ palignr $10, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x4a(%rsi), %xmm5
+ palignr $10, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x5a(%rsi), %xmm6
+ palignr $10, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x6a(%rsi), %xmm7
+ palignr $10, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x7a(%rsi), %xmm8
+ palignr $10, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x8a(%rsi), %xmm9
+ palignr $10, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_10_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_11):
+ sub $0x80, %rdx
+ movaps -0x0b(%rsi), %xmm1
+ movaps 0x05(%rsi), %xmm2
+ movaps 0x15(%rsi), %xmm3
+ movaps 0x25(%rsi), %xmm4
+ movaps 0x35(%rsi), %xmm5
+ movaps 0x45(%rsi), %xmm6
+ movaps 0x55(%rsi), %xmm7
+ movaps 0x65(%rsi), %xmm8
+ movaps 0x75(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $11, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $11, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $11, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $11, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $11, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $11, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $11, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $11, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_11)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_11_bwd):
+ movaps -0x0b(%rsi), %xmm1
+
+ movaps -0x1b(%rsi), %xmm2
+ palignr $11, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x2b(%rsi), %xmm3
+ palignr $11, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x3b(%rsi), %xmm4
+ palignr $11, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x4b(%rsi), %xmm5
+ palignr $11, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x5b(%rsi), %xmm6
+ palignr $11, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x6b(%rsi), %xmm7
+ palignr $11, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x7b(%rsi), %xmm8
+ palignr $11, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x8b(%rsi), %xmm9
+ palignr $11, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_11_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_12):
+ sub $0x80, %rdx
+ movdqa -0x0c(%rsi), %xmm1
+ movaps 0x04(%rsi), %xmm2
+ movaps 0x14(%rsi), %xmm3
+ movaps 0x24(%rsi), %xmm4
+ movaps 0x34(%rsi), %xmm5
+ movaps 0x44(%rsi), %xmm6
+ movaps 0x54(%rsi), %xmm7
+ movaps 0x64(%rsi), %xmm8
+ movaps 0x74(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $12, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $12, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $12, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $12, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $12, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $12, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $12, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $12, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+
+ lea 0x80(%rdi), %rdi
+ jae L(shl_12)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_12_bwd):
+ movaps -0x0c(%rsi), %xmm1
+
+ movaps -0x1c(%rsi), %xmm2
+ palignr $12, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x2c(%rsi), %xmm3
+ palignr $12, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x3c(%rsi), %xmm4
+ palignr $12, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x4c(%rsi), %xmm5
+ palignr $12, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x5c(%rsi), %xmm6
+ palignr $12, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x6c(%rsi), %xmm7
+ palignr $12, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x7c(%rsi), %xmm8
+ palignr $12, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x8c(%rsi), %xmm9
+ palignr $12, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_12_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_13):
+ sub $0x80, %rdx
+ movaps -0x0d(%rsi), %xmm1
+ movaps 0x03(%rsi), %xmm2
+ movaps 0x13(%rsi), %xmm3
+ movaps 0x23(%rsi), %xmm4
+ movaps 0x33(%rsi), %xmm5
+ movaps 0x43(%rsi), %xmm6
+ movaps 0x53(%rsi), %xmm7
+ movaps 0x63(%rsi), %xmm8
+ movaps 0x73(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $13, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $13, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $13, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $13, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $13, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $13, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $13, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $13, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_13)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_13_bwd):
+ movaps -0x0d(%rsi), %xmm1
+
+ movaps -0x1d(%rsi), %xmm2
+ palignr $13, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x2d(%rsi), %xmm3
+ palignr $13, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x3d(%rsi), %xmm4
+ palignr $13, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x4d(%rsi), %xmm5
+ palignr $13, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x5d(%rsi), %xmm6
+ palignr $13, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x6d(%rsi), %xmm7
+ palignr $13, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x7d(%rsi), %xmm8
+ palignr $13, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x8d(%rsi), %xmm9
+ palignr $13, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_13_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_14):
+ sub $0x80, %rdx
+ movaps -0x0e(%rsi), %xmm1
+ movaps 0x02(%rsi), %xmm2
+ movaps 0x12(%rsi), %xmm3
+ movaps 0x22(%rsi), %xmm4
+ movaps 0x32(%rsi), %xmm5
+ movaps 0x42(%rsi), %xmm6
+ movaps 0x52(%rsi), %xmm7
+ movaps 0x62(%rsi), %xmm8
+ movaps 0x72(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $14, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $14, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $14, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $14, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $14, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $14, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $14, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $14, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_14)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_14_bwd):
+ movaps -0x0e(%rsi), %xmm1
+
+ movaps -0x1e(%rsi), %xmm2
+ palignr $14, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x2e(%rsi), %xmm3
+ palignr $14, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x3e(%rsi), %xmm4
+ palignr $14, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x4e(%rsi), %xmm5
+ palignr $14, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x5e(%rsi), %xmm6
+ palignr $14, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x6e(%rsi), %xmm7
+ palignr $14, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x7e(%rsi), %xmm8
+ palignr $14, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x8e(%rsi), %xmm9
+ palignr $14, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_14_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_15):
+ sub $0x80, %rdx
+ movaps -0x0f(%rsi), %xmm1
+ movaps 0x01(%rsi), %xmm2
+ movaps 0x11(%rsi), %xmm3
+ movaps 0x21(%rsi), %xmm4
+ movaps 0x31(%rsi), %xmm5
+ movaps 0x41(%rsi), %xmm6
+ movaps 0x51(%rsi), %xmm7
+ movaps 0x61(%rsi), %xmm8
+ movaps 0x71(%rsi), %xmm9
+ lea 0x80(%rsi), %rsi
+ palignr $15, %xmm8, %xmm9
+ movaps %xmm9, 0x70(%rdi)
+ palignr $15, %xmm7, %xmm8
+ movaps %xmm8, 0x60(%rdi)
+ palignr $15, %xmm6, %xmm7
+ movaps %xmm7, 0x50(%rdi)
+ palignr $15, %xmm5, %xmm6
+ movaps %xmm6, 0x40(%rdi)
+ palignr $15, %xmm4, %xmm5
+ movaps %xmm5, 0x30(%rdi)
+ palignr $15, %xmm3, %xmm4
+ movaps %xmm4, 0x20(%rdi)
+ palignr $15, %xmm2, %xmm3
+ movaps %xmm3, 0x10(%rdi)
+ palignr $15, %xmm1, %xmm2
+ movaps %xmm2, (%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(shl_15)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(shl_15_bwd):
+ movaps -0x0f(%rsi), %xmm1
+
+ movaps -0x1f(%rsi), %xmm2
+ palignr $15, %xmm2, %xmm1
+ movaps %xmm1, -0x10(%rdi)
+
+ movaps -0x2f(%rsi), %xmm3
+ palignr $15, %xmm3, %xmm2
+ movaps %xmm2, -0x20(%rdi)
+
+ movaps -0x3f(%rsi), %xmm4
+ palignr $15, %xmm4, %xmm3
+ movaps %xmm3, -0x30(%rdi)
+
+ movaps -0x4f(%rsi), %xmm5
+ palignr $15, %xmm5, %xmm4
+ movaps %xmm4, -0x40(%rdi)
+
+ movaps -0x5f(%rsi), %xmm6
+ palignr $15, %xmm6, %xmm5
+ movaps %xmm5, -0x50(%rdi)
+
+ movaps -0x6f(%rsi), %xmm7
+ palignr $15, %xmm7, %xmm6
+ movaps %xmm6, -0x60(%rdi)
+
+ movaps -0x7f(%rsi), %xmm8
+ palignr $15, %xmm8, %xmm7
+ movaps %xmm7, -0x70(%rdi)
+
+ movaps -0x8f(%rsi), %xmm9
+ palignr $15, %xmm9, %xmm8
+ movaps %xmm8, -0x80(%rdi)
+
+ sub $0x80, %rdx
+ lea -0x80(%rdi), %rdi
+ lea -0x80(%rsi), %rsi
+ jae L(shl_15_bwd)
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rdi
+ sub %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ ALIGN (4)
+L(gobble_mem_fwd):
+ movdqu (%rsi), %xmm1
+ movdqu %xmm0, (%r8)
+ movdqa %xmm1, (%rdi)
+ sub $16, %rdx
+ add $16, %rsi
+ add $16, %rdi
+
+#ifdef SHARED_CACHE_SIZE_HALF
+ mov $SHARED_CACHE_SIZE_HALF, %rcx
+#else
+ mov __x86_64_shared_cache_size_half(%rip), %rcx
+#endif
+#ifdef USE_AS_MEMMOVE
+ mov %rsi, %r9
+ sub %rdi, %r9
+ cmp %rdx, %r9
+ jae L(memmove_is_memcpy_fwd)
+ cmp %rcx, %r9
+ jbe L(ll_cache_copy_fwd_start)
+L(memmove_is_memcpy_fwd):
+#endif
+ cmp %rcx, %rdx
+ ja L(bigger_in_fwd)
+ mov %rdx, %rcx
+L(bigger_in_fwd):
+ sub %rcx, %rdx
+ cmp $0x1000, %rdx
+ jbe L(ll_cache_copy_fwd)
+
+ mov %rcx, %r9
+ shl $3, %r9
+ cmp %r9, %rdx
+ jbe L(2steps_copy_fwd)
+ add %rcx, %rdx
+ xor %rcx, %rcx
+L(2steps_copy_fwd):
+ sub $0x80, %rdx
+L(gobble_mem_fwd_loop):
+ sub $0x80, %rdx
+ prefetcht0 0x200(%rsi)
+ prefetcht0 0x300(%rsi)
+ movdqu (%rsi), %xmm0
+ movdqu 0x10(%rsi), %xmm1
+ movdqu 0x20(%rsi), %xmm2
+ movdqu 0x30(%rsi), %xmm3
+ movdqu 0x40(%rsi), %xmm4
+ movdqu 0x50(%rsi), %xmm5
+ movdqu 0x60(%rsi), %xmm6
+ movdqu 0x70(%rsi), %xmm7
+ lfence
+ movntdq %xmm0, (%rdi)
+ movntdq %xmm1, 0x10(%rdi)
+ movntdq %xmm2, 0x20(%rdi)
+ movntdq %xmm3, 0x30(%rdi)
+ movntdq %xmm4, 0x40(%rdi)
+ movntdq %xmm5, 0x50(%rdi)
+ movntdq %xmm6, 0x60(%rdi)
+ movntdq %xmm7, 0x70(%rdi)
+ lea 0x80(%rsi), %rsi
+ lea 0x80(%rdi), %rdi
+ jae L(gobble_mem_fwd_loop)
+ sfence
+ cmp $0x80, %rcx
+ jb L(gobble_mem_fwd_end)
+ add $0x80, %rdx
+L(ll_cache_copy_fwd):
+ add %rcx, %rdx
+L(ll_cache_copy_fwd_start):
+ sub $0x80, %rdx
+L(gobble_ll_loop_fwd):
+ prefetchnta 0x1c0(%rsi)
+ prefetchnta 0x280(%rsi)
+ prefetchnta 0x1c0(%rdi)
+ prefetchnta 0x280(%rdi)
+ sub $0x80, %rdx
+ movdqu (%rsi), %xmm0
+ movdqu 0x10(%rsi), %xmm1
+ movdqu 0x20(%rsi), %xmm2
+ movdqu 0x30(%rsi), %xmm3
+ movdqu 0x40(%rsi), %xmm4
+ movdqu 0x50(%rsi), %xmm5
+ movdqu 0x60(%rsi), %xmm6
+ movdqu 0x70(%rsi), %xmm7
+ movdqa %xmm0, (%rdi)
+ movdqa %xmm1, 0x10(%rdi)
+ movdqa %xmm2, 0x20(%rdi)
+ movdqa %xmm3, 0x30(%rdi)
+ movdqa %xmm4, 0x40(%rdi)
+ movdqa %xmm5, 0x50(%rdi)
+ movdqa %xmm6, 0x60(%rdi)
+ movdqa %xmm7, 0x70(%rdi)
+ lea 0x80(%rsi), %rsi
+ lea 0x80(%rdi), %rdi
+ jae L(gobble_ll_loop_fwd)
+L(gobble_mem_fwd_end):
+ add $0x80, %rdx
+ add %rdx, %rsi
+ add %rdx, %rdi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_fwd), %rdx, 4)
+
+ ALIGN (4)
+L(gobble_mem_bwd):
+ add %rdx, %rsi
+ add %rdx, %rdi
+
+ movdqu -16(%rsi), %xmm0
+ lea -16(%rdi), %r8
+ mov %rdi, %r9
+ and $-16, %rdi
+ sub %rdi, %r9
+ sub %r9, %rsi
+ sub %r9, %rdx
+
+
+#ifdef SHARED_CACHE_SIZE_HALF
+ mov $SHARED_CACHE_SIZE_HALF, %rcx
+#else
+ mov __x86_64_shared_cache_size_half(%rip), %rcx
+#endif
+#ifdef USE_AS_MEMMOVE
+ mov %rdi, %r9
+ sub %rsi, %r9
+ cmp %rdx, %r9
+ jae L(memmove_is_memcpy_bwd)
+ cmp %rcx, %r9
+ jbe L(ll_cache_copy_bwd_start)
+L(memmove_is_memcpy_bwd):
+#endif
+ cmp %rcx, %rdx
+ ja L(bigger)
+ mov %rdx, %rcx
+L(bigger):
+ sub %rcx, %rdx
+ cmp $0x1000, %rdx
+ jbe L(ll_cache_copy)
+
+ mov %rcx, %r9
+ shl $3, %r9
+ cmp %r9, %rdx
+ jbe L(2steps_copy)
+ add %rcx, %rdx
+ xor %rcx, %rcx
+L(2steps_copy):
+ sub $0x80, %rdx
+L(gobble_mem_bwd_loop):
+ sub $0x80, %rdx
+ prefetcht0 -0x200(%rsi)
+ prefetcht0 -0x300(%rsi)
+ movdqu -0x10(%rsi), %xmm1
+ movdqu -0x20(%rsi), %xmm2
+ movdqu -0x30(%rsi), %xmm3
+ movdqu -0x40(%rsi), %xmm4
+ movdqu -0x50(%rsi), %xmm5
+ movdqu -0x60(%rsi), %xmm6
+ movdqu -0x70(%rsi), %xmm7
+ movdqu -0x80(%rsi), %xmm8
+ lfence
+ movntdq %xmm1, -0x10(%rdi)
+ movntdq %xmm2, -0x20(%rdi)
+ movntdq %xmm3, -0x30(%rdi)
+ movntdq %xmm4, -0x40(%rdi)
+ movntdq %xmm5, -0x50(%rdi)
+ movntdq %xmm6, -0x60(%rdi)
+ movntdq %xmm7, -0x70(%rdi)
+ movntdq %xmm8, -0x80(%rdi)
+ lea -0x80(%rsi), %rsi
+ lea -0x80(%rdi), %rdi
+ jae L(gobble_mem_bwd_loop)
+ sfence
+ cmp $0x80, %rcx
+ jb L(gobble_mem_bwd_end)
+ add $0x80, %rdx
+L(ll_cache_copy):
+ add %rcx, %rdx
+L(ll_cache_copy_bwd_start):
+ sub $0x80, %rdx
+L(gobble_ll_loop):
+ prefetchnta -0x1c0(%rsi)
+ prefetchnta -0x280(%rsi)
+ prefetchnta -0x1c0(%rdi)
+ prefetchnta -0x280(%rdi)
+ sub $0x80, %rdx
+ movdqu -0x10(%rsi), %xmm1
+ movdqu -0x20(%rsi), %xmm2
+ movdqu -0x30(%rsi), %xmm3
+ movdqu -0x40(%rsi), %xmm4
+ movdqu -0x50(%rsi), %xmm5
+ movdqu -0x60(%rsi), %xmm6
+ movdqu -0x70(%rsi), %xmm7
+ movdqu -0x80(%rsi), %xmm8
+ movdqa %xmm1, -0x10(%rdi)
+ movdqa %xmm2, -0x20(%rdi)
+ movdqa %xmm3, -0x30(%rdi)
+ movdqa %xmm4, -0x40(%rdi)
+ movdqa %xmm5, -0x50(%rdi)
+ movdqa %xmm6, -0x60(%rdi)
+ movdqa %xmm7, -0x70(%rdi)
+ movdqa %xmm8, -0x80(%rdi)
+ lea -0x80(%rsi), %rsi
+ lea -0x80(%rdi), %rdi
+ jae L(gobble_ll_loop)
+L(gobble_mem_bwd_end):
+ movdqu %xmm0, (%r8)
+ add $0x80, %rdx
+ sub %rdx, %rsi
+ sub %rdx, %rdi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4)
+
+ .p2align 4
+L(fwd_write_128bytes):
+ lddqu -128(%rsi), %xmm0
+ movdqu %xmm0, -128(%rdi)
+L(fwd_write_112bytes):
+ lddqu -112(%rsi), %xmm0
+ movdqu %xmm0, -112(%rdi)
+L(fwd_write_96bytes):
+ lddqu -96(%rsi), %xmm0
+ movdqu %xmm0, -96(%rdi)
+L(fwd_write_80bytes):
+ lddqu -80(%rsi), %xmm0
+ movdqu %xmm0, -80(%rdi)
+L(fwd_write_64bytes):
+ lddqu -64(%rsi), %xmm0
+ movdqu %xmm0, -64(%rdi)
+L(fwd_write_48bytes):
+ lddqu -48(%rsi), %xmm0
+ movdqu %xmm0, -48(%rdi)
+L(fwd_write_32bytes):
+ lddqu -32(%rsi), %xmm0
+ movdqu %xmm0, -32(%rdi)
+L(fwd_write_16bytes):
+ lddqu -16(%rsi), %xmm0
+ movdqu %xmm0, -16(%rdi)
+L(fwd_write_0bytes):
+ ret
+
+
+ .p2align 4
+L(fwd_write_143bytes):
+ lddqu -143(%rsi), %xmm0
+ movdqu %xmm0, -143(%rdi)
+L(fwd_write_127bytes):
+ lddqu -127(%rsi), %xmm0
+ movdqu %xmm0, -127(%rdi)
+L(fwd_write_111bytes):
+ lddqu -111(%rsi), %xmm0
+ movdqu %xmm0, -111(%rdi)
+L(fwd_write_95bytes):
+ lddqu -95(%rsi), %xmm0
+ movdqu %xmm0, -95(%rdi)
+L(fwd_write_79bytes):
+ lddqu -79(%rsi), %xmm0
+ movdqu %xmm0, -79(%rdi)
+L(fwd_write_63bytes):
+ lddqu -63(%rsi), %xmm0
+ movdqu %xmm0, -63(%rdi)
+L(fwd_write_47bytes):
+ lddqu -47(%rsi), %xmm0
+ movdqu %xmm0, -47(%rdi)
+L(fwd_write_31bytes):
+ lddqu -31(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -31(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_15bytes):
+ mov -15(%rsi), %rdx
+ mov -8(%rsi), %rcx
+ mov %rdx, -15(%rdi)
+ mov %rcx, -8(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_142bytes):
+ lddqu -142(%rsi), %xmm0
+ movdqu %xmm0, -142(%rdi)
+L(fwd_write_126bytes):
+ lddqu -126(%rsi), %xmm0
+ movdqu %xmm0, -126(%rdi)
+L(fwd_write_110bytes):
+ lddqu -110(%rsi), %xmm0
+ movdqu %xmm0, -110(%rdi)
+L(fwd_write_94bytes):
+ lddqu -94(%rsi), %xmm0
+ movdqu %xmm0, -94(%rdi)
+L(fwd_write_78bytes):
+ lddqu -78(%rsi), %xmm0
+ movdqu %xmm0, -78(%rdi)
+L(fwd_write_62bytes):
+ lddqu -62(%rsi), %xmm0
+ movdqu %xmm0, -62(%rdi)
+L(fwd_write_46bytes):
+ lddqu -46(%rsi), %xmm0
+ movdqu %xmm0, -46(%rdi)
+L(fwd_write_30bytes):
+ lddqu -30(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -30(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_14bytes):
+ mov -14(%rsi), %rdx
+ mov -8(%rsi), %rcx
+ mov %rdx, -14(%rdi)
+ mov %rcx, -8(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_141bytes):
+ lddqu -141(%rsi), %xmm0
+ movdqu %xmm0, -141(%rdi)
+L(fwd_write_125bytes):
+ lddqu -125(%rsi), %xmm0
+ movdqu %xmm0, -125(%rdi)
+L(fwd_write_109bytes):
+ lddqu -109(%rsi), %xmm0
+ movdqu %xmm0, -109(%rdi)
+L(fwd_write_93bytes):
+ lddqu -93(%rsi), %xmm0
+ movdqu %xmm0, -93(%rdi)
+L(fwd_write_77bytes):
+ lddqu -77(%rsi), %xmm0
+ movdqu %xmm0, -77(%rdi)
+L(fwd_write_61bytes):
+ lddqu -61(%rsi), %xmm0
+ movdqu %xmm0, -61(%rdi)
+L(fwd_write_45bytes):
+ lddqu -45(%rsi), %xmm0
+ movdqu %xmm0, -45(%rdi)
+L(fwd_write_29bytes):
+ lddqu -29(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -29(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_13bytes):
+ mov -13(%rsi), %rdx
+ mov -8(%rsi), %rcx
+ mov %rdx, -13(%rdi)
+ mov %rcx, -8(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_140bytes):
+ lddqu -140(%rsi), %xmm0
+ movdqu %xmm0, -140(%rdi)
+L(fwd_write_124bytes):
+ lddqu -124(%rsi), %xmm0
+ movdqu %xmm0, -124(%rdi)
+L(fwd_write_108bytes):
+ lddqu -108(%rsi), %xmm0
+ movdqu %xmm0, -108(%rdi)
+L(fwd_write_92bytes):
+ lddqu -92(%rsi), %xmm0
+ movdqu %xmm0, -92(%rdi)
+L(fwd_write_76bytes):
+ lddqu -76(%rsi), %xmm0
+ movdqu %xmm0, -76(%rdi)
+L(fwd_write_60bytes):
+ lddqu -60(%rsi), %xmm0
+ movdqu %xmm0, -60(%rdi)
+L(fwd_write_44bytes):
+ lddqu -44(%rsi), %xmm0
+ movdqu %xmm0, -44(%rdi)
+L(fwd_write_28bytes):
+ lddqu -28(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -28(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_12bytes):
+ mov -12(%rsi), %rdx
+ mov -4(%rsi), %ecx
+ mov %rdx, -12(%rdi)
+ mov %ecx, -4(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_139bytes):
+ lddqu -139(%rsi), %xmm0
+ movdqu %xmm0, -139(%rdi)
+L(fwd_write_123bytes):
+ lddqu -123(%rsi), %xmm0
+ movdqu %xmm0, -123(%rdi)
+L(fwd_write_107bytes):
+ lddqu -107(%rsi), %xmm0
+ movdqu %xmm0, -107(%rdi)
+L(fwd_write_91bytes):
+ lddqu -91(%rsi), %xmm0
+ movdqu %xmm0, -91(%rdi)
+L(fwd_write_75bytes):
+ lddqu -75(%rsi), %xmm0
+ movdqu %xmm0, -75(%rdi)
+L(fwd_write_59bytes):
+ lddqu -59(%rsi), %xmm0
+ movdqu %xmm0, -59(%rdi)
+L(fwd_write_43bytes):
+ lddqu -43(%rsi), %xmm0
+ movdqu %xmm0, -43(%rdi)
+L(fwd_write_27bytes):
+ lddqu -27(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -27(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_11bytes):
+ mov -11(%rsi), %rdx
+ mov -4(%rsi), %ecx
+ mov %rdx, -11(%rdi)
+ mov %ecx, -4(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_138bytes):
+ lddqu -138(%rsi), %xmm0
+ movdqu %xmm0, -138(%rdi)
+L(fwd_write_122bytes):
+ lddqu -122(%rsi), %xmm0
+ movdqu %xmm0, -122(%rdi)
+L(fwd_write_106bytes):
+ lddqu -106(%rsi), %xmm0
+ movdqu %xmm0, -106(%rdi)
+L(fwd_write_90bytes):
+ lddqu -90(%rsi), %xmm0
+ movdqu %xmm0, -90(%rdi)
+L(fwd_write_74bytes):
+ lddqu -74(%rsi), %xmm0
+ movdqu %xmm0, -74(%rdi)
+L(fwd_write_58bytes):
+ lddqu -58(%rsi), %xmm0
+ movdqu %xmm0, -58(%rdi)
+L(fwd_write_42bytes):
+ lddqu -42(%rsi), %xmm0
+ movdqu %xmm0, -42(%rdi)
+L(fwd_write_26bytes):
+ lddqu -26(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -26(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_10bytes):
+ mov -10(%rsi), %rdx
+ mov -4(%rsi), %ecx
+ mov %rdx, -10(%rdi)
+ mov %ecx, -4(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_137bytes):
+ lddqu -137(%rsi), %xmm0
+ movdqu %xmm0, -137(%rdi)
+L(fwd_write_121bytes):
+ lddqu -121(%rsi), %xmm0
+ movdqu %xmm0, -121(%rdi)
+L(fwd_write_105bytes):
+ lddqu -105(%rsi), %xmm0
+ movdqu %xmm0, -105(%rdi)
+L(fwd_write_89bytes):
+ lddqu -89(%rsi), %xmm0
+ movdqu %xmm0, -89(%rdi)
+L(fwd_write_73bytes):
+ lddqu -73(%rsi), %xmm0
+ movdqu %xmm0, -73(%rdi)
+L(fwd_write_57bytes):
+ lddqu -57(%rsi), %xmm0
+ movdqu %xmm0, -57(%rdi)
+L(fwd_write_41bytes):
+ lddqu -41(%rsi), %xmm0
+ movdqu %xmm0, -41(%rdi)
+L(fwd_write_25bytes):
+ lddqu -25(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -25(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_9bytes):
+ mov -9(%rsi), %rdx
+ mov -4(%rsi), %ecx
+ mov %rdx, -9(%rdi)
+ mov %ecx, -4(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_136bytes):
+ lddqu -136(%rsi), %xmm0
+ movdqu %xmm0, -136(%rdi)
+L(fwd_write_120bytes):
+ lddqu -120(%rsi), %xmm0
+ movdqu %xmm0, -120(%rdi)
+L(fwd_write_104bytes):
+ lddqu -104(%rsi), %xmm0
+ movdqu %xmm0, -104(%rdi)
+L(fwd_write_88bytes):
+ lddqu -88(%rsi), %xmm0
+ movdqu %xmm0, -88(%rdi)
+L(fwd_write_72bytes):
+ lddqu -72(%rsi), %xmm0
+ movdqu %xmm0, -72(%rdi)
+L(fwd_write_56bytes):
+ lddqu -56(%rsi), %xmm0
+ movdqu %xmm0, -56(%rdi)
+L(fwd_write_40bytes):
+ lddqu -40(%rsi), %xmm0
+ movdqu %xmm0, -40(%rdi)
+L(fwd_write_24bytes):
+ lddqu -24(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -24(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_8bytes):
+ mov -8(%rsi), %rdx
+ mov %rdx, -8(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_135bytes):
+ lddqu -135(%rsi), %xmm0
+ movdqu %xmm0, -135(%rdi)
+L(fwd_write_119bytes):
+ lddqu -119(%rsi), %xmm0
+ movdqu %xmm0, -119(%rdi)
+L(fwd_write_103bytes):
+ lddqu -103(%rsi), %xmm0
+ movdqu %xmm0, -103(%rdi)
+L(fwd_write_87bytes):
+ lddqu -87(%rsi), %xmm0
+ movdqu %xmm0, -87(%rdi)
+L(fwd_write_71bytes):
+ lddqu -71(%rsi), %xmm0
+ movdqu %xmm0, -71(%rdi)
+L(fwd_write_55bytes):
+ lddqu -55(%rsi), %xmm0
+ movdqu %xmm0, -55(%rdi)
+L(fwd_write_39bytes):
+ lddqu -39(%rsi), %xmm0
+ movdqu %xmm0, -39(%rdi)
+L(fwd_write_23bytes):
+ lddqu -23(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -23(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_7bytes):
+ mov -7(%rsi), %edx
+ mov -4(%rsi), %ecx
+ mov %edx, -7(%rdi)
+ mov %ecx, -4(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_134bytes):
+ lddqu -134(%rsi), %xmm0
+ movdqu %xmm0, -134(%rdi)
+L(fwd_write_118bytes):
+ lddqu -118(%rsi), %xmm0
+ movdqu %xmm0, -118(%rdi)
+L(fwd_write_102bytes):
+ lddqu -102(%rsi), %xmm0
+ movdqu %xmm0, -102(%rdi)
+L(fwd_write_86bytes):
+ lddqu -86(%rsi), %xmm0
+ movdqu %xmm0, -86(%rdi)
+L(fwd_write_70bytes):
+ lddqu -70(%rsi), %xmm0
+ movdqu %xmm0, -70(%rdi)
+L(fwd_write_54bytes):
+ lddqu -54(%rsi), %xmm0
+ movdqu %xmm0, -54(%rdi)
+L(fwd_write_38bytes):
+ lddqu -38(%rsi), %xmm0
+ movdqu %xmm0, -38(%rdi)
+L(fwd_write_22bytes):
+ lddqu -22(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -22(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_6bytes):
+ mov -6(%rsi), %edx
+ mov -4(%rsi), %ecx
+ mov %edx, -6(%rdi)
+ mov %ecx, -4(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_133bytes):
+ lddqu -133(%rsi), %xmm0
+ movdqu %xmm0, -133(%rdi)
+L(fwd_write_117bytes):
+ lddqu -117(%rsi), %xmm0
+ movdqu %xmm0, -117(%rdi)
+L(fwd_write_101bytes):
+ lddqu -101(%rsi), %xmm0
+ movdqu %xmm0, -101(%rdi)
+L(fwd_write_85bytes):
+ lddqu -85(%rsi), %xmm0
+ movdqu %xmm0, -85(%rdi)
+L(fwd_write_69bytes):
+ lddqu -69(%rsi), %xmm0
+ movdqu %xmm0, -69(%rdi)
+L(fwd_write_53bytes):
+ lddqu -53(%rsi), %xmm0
+ movdqu %xmm0, -53(%rdi)
+L(fwd_write_37bytes):
+ lddqu -37(%rsi), %xmm0
+ movdqu %xmm0, -37(%rdi)
+L(fwd_write_21bytes):
+ lddqu -21(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -21(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_5bytes):
+ mov -5(%rsi), %edx
+ mov -4(%rsi), %ecx
+ mov %edx, -5(%rdi)
+ mov %ecx, -4(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_132bytes):
+ lddqu -132(%rsi), %xmm0
+ movdqu %xmm0, -132(%rdi)
+L(fwd_write_116bytes):
+ lddqu -116(%rsi), %xmm0
+ movdqu %xmm0, -116(%rdi)
+L(fwd_write_100bytes):
+ lddqu -100(%rsi), %xmm0
+ movdqu %xmm0, -100(%rdi)
+L(fwd_write_84bytes):
+ lddqu -84(%rsi), %xmm0
+ movdqu %xmm0, -84(%rdi)
+L(fwd_write_68bytes):
+ lddqu -68(%rsi), %xmm0
+ movdqu %xmm0, -68(%rdi)
+L(fwd_write_52bytes):
+ lddqu -52(%rsi), %xmm0
+ movdqu %xmm0, -52(%rdi)
+L(fwd_write_36bytes):
+ lddqu -36(%rsi), %xmm0
+ movdqu %xmm0, -36(%rdi)
+L(fwd_write_20bytes):
+ lddqu -20(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -20(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_4bytes):
+ mov -4(%rsi), %edx
+ mov %edx, -4(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_131bytes):
+ lddqu -131(%rsi), %xmm0
+ movdqu %xmm0, -131(%rdi)
+L(fwd_write_115bytes):
+ lddqu -115(%rsi), %xmm0
+ movdqu %xmm0, -115(%rdi)
+L(fwd_write_99bytes):
+ lddqu -99(%rsi), %xmm0
+ movdqu %xmm0, -99(%rdi)
+L(fwd_write_83bytes):
+ lddqu -83(%rsi), %xmm0
+ movdqu %xmm0, -83(%rdi)
+L(fwd_write_67bytes):
+ lddqu -67(%rsi), %xmm0
+ movdqu %xmm0, -67(%rdi)
+L(fwd_write_51bytes):
+ lddqu -51(%rsi), %xmm0
+ movdqu %xmm0, -51(%rdi)
+L(fwd_write_35bytes):
+ lddqu -35(%rsi), %xmm0
+ movdqu %xmm0, -35(%rdi)
+L(fwd_write_19bytes):
+ lddqu -19(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -19(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_3bytes):
+ mov -3(%rsi), %dx
+ mov -2(%rsi), %cx
+ mov %dx, -3(%rdi)
+ mov %cx, -2(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_130bytes):
+ lddqu -130(%rsi), %xmm0
+ movdqu %xmm0, -130(%rdi)
+L(fwd_write_114bytes):
+ lddqu -114(%rsi), %xmm0
+ movdqu %xmm0, -114(%rdi)
+L(fwd_write_98bytes):
+ lddqu -98(%rsi), %xmm0
+ movdqu %xmm0, -98(%rdi)
+L(fwd_write_82bytes):
+ lddqu -82(%rsi), %xmm0
+ movdqu %xmm0, -82(%rdi)
+L(fwd_write_66bytes):
+ lddqu -66(%rsi), %xmm0
+ movdqu %xmm0, -66(%rdi)
+L(fwd_write_50bytes):
+ lddqu -50(%rsi), %xmm0
+ movdqu %xmm0, -50(%rdi)
+L(fwd_write_34bytes):
+ lddqu -34(%rsi), %xmm0
+ movdqu %xmm0, -34(%rdi)
+L(fwd_write_18bytes):
+ lddqu -18(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -18(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_2bytes):
+ movzwl -2(%rsi), %edx
+ mov %dx, -2(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_129bytes):
+ lddqu -129(%rsi), %xmm0
+ movdqu %xmm0, -129(%rdi)
+L(fwd_write_113bytes):
+ lddqu -113(%rsi), %xmm0
+ movdqu %xmm0, -113(%rdi)
+L(fwd_write_97bytes):
+ lddqu -97(%rsi), %xmm0
+ movdqu %xmm0, -97(%rdi)
+L(fwd_write_81bytes):
+ lddqu -81(%rsi), %xmm0
+ movdqu %xmm0, -81(%rdi)
+L(fwd_write_65bytes):
+ lddqu -65(%rsi), %xmm0
+ movdqu %xmm0, -65(%rdi)
+L(fwd_write_49bytes):
+ lddqu -49(%rsi), %xmm0
+ movdqu %xmm0, -49(%rdi)
+L(fwd_write_33bytes):
+ lddqu -33(%rsi), %xmm0
+ movdqu %xmm0, -33(%rdi)
+L(fwd_write_17bytes):
+ lddqu -17(%rsi), %xmm0
+ lddqu -16(%rsi), %xmm1
+ movdqu %xmm0, -17(%rdi)
+ movdqu %xmm1, -16(%rdi)
+ ret
+
+ .p2align 4
+L(fwd_write_1bytes):
+ movzbl -1(%rsi), %edx
+ mov %dl, -1(%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_128bytes):
+ lddqu 112(%rsi), %xmm0
+ movdqu %xmm0, 112(%rdi)
+L(bwd_write_112bytes):
+ lddqu 96(%rsi), %xmm0
+ movdqu %xmm0, 96(%rdi)
+L(bwd_write_96bytes):
+ lddqu 80(%rsi), %xmm0
+ movdqu %xmm0, 80(%rdi)
+L(bwd_write_80bytes):
+ lddqu 64(%rsi), %xmm0
+ movdqu %xmm0, 64(%rdi)
+L(bwd_write_64bytes):
+ lddqu 48(%rsi), %xmm0
+ movdqu %xmm0, 48(%rdi)
+L(bwd_write_48bytes):
+ lddqu 32(%rsi), %xmm0
+ movdqu %xmm0, 32(%rdi)
+L(bwd_write_32bytes):
+ lddqu 16(%rsi), %xmm0
+ movdqu %xmm0, 16(%rdi)
+L(bwd_write_16bytes):
+ lddqu (%rsi), %xmm0
+ movdqu %xmm0, (%rdi)
+L(bwd_write_0bytes):
+ ret
+
+ .p2align 4
+L(bwd_write_143bytes):
+ lddqu 127(%rsi), %xmm0
+ movdqu %xmm0, 127(%rdi)
+L(bwd_write_127bytes):
+ lddqu 111(%rsi), %xmm0
+ movdqu %xmm0, 111(%rdi)
+L(bwd_write_111bytes):
+ lddqu 95(%rsi), %xmm0
+ movdqu %xmm0, 95(%rdi)
+L(bwd_write_95bytes):
+ lddqu 79(%rsi), %xmm0
+ movdqu %xmm0, 79(%rdi)
+L(bwd_write_79bytes):
+ lddqu 63(%rsi), %xmm0
+ movdqu %xmm0, 63(%rdi)
+L(bwd_write_63bytes):
+ lddqu 47(%rsi), %xmm0
+ movdqu %xmm0, 47(%rdi)
+L(bwd_write_47bytes):
+ lddqu 31(%rsi), %xmm0
+ movdqu %xmm0, 31(%rdi)
+L(bwd_write_31bytes):
+ lddqu 15(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 15(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+
+ .p2align 4
+L(bwd_write_15bytes):
+ mov 7(%rsi), %rdx
+ mov (%rsi), %rcx
+ mov %rdx, 7(%rdi)
+ mov %rcx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_142bytes):
+ lddqu 126(%rsi), %xmm0
+ movdqu %xmm0, 126(%rdi)
+L(bwd_write_126bytes):
+ lddqu 110(%rsi), %xmm0
+ movdqu %xmm0, 110(%rdi)
+L(bwd_write_110bytes):
+ lddqu 94(%rsi), %xmm0
+ movdqu %xmm0, 94(%rdi)
+L(bwd_write_94bytes):
+ lddqu 78(%rsi), %xmm0
+ movdqu %xmm0, 78(%rdi)
+L(bwd_write_78bytes):
+ lddqu 62(%rsi), %xmm0
+ movdqu %xmm0, 62(%rdi)
+L(bwd_write_62bytes):
+ lddqu 46(%rsi), %xmm0
+ movdqu %xmm0, 46(%rdi)
+L(bwd_write_46bytes):
+ lddqu 30(%rsi), %xmm0
+ movdqu %xmm0, 30(%rdi)
+L(bwd_write_30bytes):
+ lddqu 14(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 14(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_14bytes):
+ mov 6(%rsi), %rdx
+ mov (%rsi), %rcx
+ mov %rdx, 6(%rdi)
+ mov %rcx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_141bytes):
+ lddqu 125(%rsi), %xmm0
+ movdqu %xmm0, 125(%rdi)
+L(bwd_write_125bytes):
+ lddqu 109(%rsi), %xmm0
+ movdqu %xmm0, 109(%rdi)
+L(bwd_write_109bytes):
+ lddqu 93(%rsi), %xmm0
+ movdqu %xmm0, 93(%rdi)
+L(bwd_write_93bytes):
+ lddqu 77(%rsi), %xmm0
+ movdqu %xmm0, 77(%rdi)
+L(bwd_write_77bytes):
+ lddqu 61(%rsi), %xmm0
+ movdqu %xmm0, 61(%rdi)
+L(bwd_write_61bytes):
+ lddqu 45(%rsi), %xmm0
+ movdqu %xmm0, 45(%rdi)
+L(bwd_write_45bytes):
+ lddqu 29(%rsi), %xmm0
+ movdqu %xmm0, 29(%rdi)
+L(bwd_write_29bytes):
+ lddqu 13(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 13(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_13bytes):
+ mov 5(%rsi), %rdx
+ mov (%rsi), %rcx
+ mov %rdx, 5(%rdi)
+ mov %rcx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_140bytes):
+ lddqu 124(%rsi), %xmm0
+ movdqu %xmm0, 124(%rdi)
+L(bwd_write_124bytes):
+ lddqu 108(%rsi), %xmm0
+ movdqu %xmm0, 108(%rdi)
+L(bwd_write_108bytes):
+ lddqu 92(%rsi), %xmm0
+ movdqu %xmm0, 92(%rdi)
+L(bwd_write_92bytes):
+ lddqu 76(%rsi), %xmm0
+ movdqu %xmm0, 76(%rdi)
+L(bwd_write_76bytes):
+ lddqu 60(%rsi), %xmm0
+ movdqu %xmm0, 60(%rdi)
+L(bwd_write_60bytes):
+ lddqu 44(%rsi), %xmm0
+ movdqu %xmm0, 44(%rdi)
+L(bwd_write_44bytes):
+ lddqu 28(%rsi), %xmm0
+ movdqu %xmm0, 28(%rdi)
+L(bwd_write_28bytes):
+ lddqu 12(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 12(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_12bytes):
+ mov 4(%rsi), %rdx
+ mov (%rsi), %rcx
+ mov %rdx, 4(%rdi)
+ mov %rcx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_139bytes):
+ lddqu 123(%rsi), %xmm0
+ movdqu %xmm0, 123(%rdi)
+L(bwd_write_123bytes):
+ lddqu 107(%rsi), %xmm0
+ movdqu %xmm0, 107(%rdi)
+L(bwd_write_107bytes):
+ lddqu 91(%rsi), %xmm0
+ movdqu %xmm0, 91(%rdi)
+L(bwd_write_91bytes):
+ lddqu 75(%rsi), %xmm0
+ movdqu %xmm0, 75(%rdi)
+L(bwd_write_75bytes):
+ lddqu 59(%rsi), %xmm0
+ movdqu %xmm0, 59(%rdi)
+L(bwd_write_59bytes):
+ lddqu 43(%rsi), %xmm0
+ movdqu %xmm0, 43(%rdi)
+L(bwd_write_43bytes):
+ lddqu 27(%rsi), %xmm0
+ movdqu %xmm0, 27(%rdi)
+L(bwd_write_27bytes):
+ lddqu 11(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 11(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_11bytes):
+ mov 3(%rsi), %rdx
+ mov (%rsi), %rcx
+ mov %rdx, 3(%rdi)
+ mov %rcx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_138bytes):
+ lddqu 122(%rsi), %xmm0
+ movdqu %xmm0, 122(%rdi)
+L(bwd_write_122bytes):
+ lddqu 106(%rsi), %xmm0
+ movdqu %xmm0, 106(%rdi)
+L(bwd_write_106bytes):
+ lddqu 90(%rsi), %xmm0
+ movdqu %xmm0, 90(%rdi)
+L(bwd_write_90bytes):
+ lddqu 74(%rsi), %xmm0
+ movdqu %xmm0, 74(%rdi)
+L(bwd_write_74bytes):
+ lddqu 58(%rsi), %xmm0
+ movdqu %xmm0, 58(%rdi)
+L(bwd_write_58bytes):
+ lddqu 42(%rsi), %xmm0
+ movdqu %xmm0, 42(%rdi)
+L(bwd_write_42bytes):
+ lddqu 26(%rsi), %xmm0
+ movdqu %xmm0, 26(%rdi)
+L(bwd_write_26bytes):
+ lddqu 10(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 10(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_10bytes):
+ mov 2(%rsi), %rdx
+ mov (%rsi), %rcx
+ mov %rdx, 2(%rdi)
+ mov %rcx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_137bytes):
+ lddqu 121(%rsi), %xmm0
+ movdqu %xmm0, 121(%rdi)
+L(bwd_write_121bytes):
+ lddqu 105(%rsi), %xmm0
+ movdqu %xmm0, 105(%rdi)
+L(bwd_write_105bytes):
+ lddqu 89(%rsi), %xmm0
+ movdqu %xmm0, 89(%rdi)
+L(bwd_write_89bytes):
+ lddqu 73(%rsi), %xmm0
+ movdqu %xmm0, 73(%rdi)
+L(bwd_write_73bytes):
+ lddqu 57(%rsi), %xmm0
+ movdqu %xmm0, 57(%rdi)
+L(bwd_write_57bytes):
+ lddqu 41(%rsi), %xmm0
+ movdqu %xmm0, 41(%rdi)
+L(bwd_write_41bytes):
+ lddqu 25(%rsi), %xmm0
+ movdqu %xmm0, 25(%rdi)
+L(bwd_write_25bytes):
+ lddqu 9(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 9(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_9bytes):
+ mov 1(%rsi), %rdx
+ mov (%rsi), %rcx
+ mov %rdx, 1(%rdi)
+ mov %rcx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_136bytes):
+ lddqu 120(%rsi), %xmm0
+ movdqu %xmm0, 120(%rdi)
+L(bwd_write_120bytes):
+ lddqu 104(%rsi), %xmm0
+ movdqu %xmm0, 104(%rdi)
+L(bwd_write_104bytes):
+ lddqu 88(%rsi), %xmm0
+ movdqu %xmm0, 88(%rdi)
+L(bwd_write_88bytes):
+ lddqu 72(%rsi), %xmm0
+ movdqu %xmm0, 72(%rdi)
+L(bwd_write_72bytes):
+ lddqu 56(%rsi), %xmm0
+ movdqu %xmm0, 56(%rdi)
+L(bwd_write_56bytes):
+ lddqu 40(%rsi), %xmm0
+ movdqu %xmm0, 40(%rdi)
+L(bwd_write_40bytes):
+ lddqu 24(%rsi), %xmm0
+ movdqu %xmm0, 24(%rdi)
+L(bwd_write_24bytes):
+ lddqu 8(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 8(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_8bytes):
+ mov (%rsi), %rdx
+ mov %rdx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_135bytes):
+ lddqu 119(%rsi), %xmm0
+ movdqu %xmm0, 119(%rdi)
+L(bwd_write_119bytes):
+ lddqu 103(%rsi), %xmm0
+ movdqu %xmm0, 103(%rdi)
+L(bwd_write_103bytes):
+ lddqu 87(%rsi), %xmm0
+ movdqu %xmm0, 87(%rdi)
+L(bwd_write_87bytes):
+ lddqu 71(%rsi), %xmm0
+ movdqu %xmm0, 71(%rdi)
+L(bwd_write_71bytes):
+ lddqu 55(%rsi), %xmm0
+ movdqu %xmm0, 55(%rdi)
+L(bwd_write_55bytes):
+ lddqu 39(%rsi), %xmm0
+ movdqu %xmm0, 39(%rdi)
+L(bwd_write_39bytes):
+ lddqu 23(%rsi), %xmm0
+ movdqu %xmm0, 23(%rdi)
+L(bwd_write_23bytes):
+ lddqu 7(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 7(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_7bytes):
+ mov 3(%rsi), %edx
+ mov (%rsi), %ecx
+ mov %edx, 3(%rdi)
+ mov %ecx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_134bytes):
+ lddqu 118(%rsi), %xmm0
+ movdqu %xmm0, 118(%rdi)
+L(bwd_write_118bytes):
+ lddqu 102(%rsi), %xmm0
+ movdqu %xmm0, 102(%rdi)
+L(bwd_write_102bytes):
+ lddqu 86(%rsi), %xmm0
+ movdqu %xmm0, 86(%rdi)
+L(bwd_write_86bytes):
+ lddqu 70(%rsi), %xmm0
+ movdqu %xmm0, 70(%rdi)
+L(bwd_write_70bytes):
+ lddqu 54(%rsi), %xmm0
+ movdqu %xmm0, 54(%rdi)
+L(bwd_write_54bytes):
+ lddqu 38(%rsi), %xmm0
+ movdqu %xmm0, 38(%rdi)
+L(bwd_write_38bytes):
+ lddqu 22(%rsi), %xmm0
+ movdqu %xmm0, 22(%rdi)
+L(bwd_write_22bytes):
+ lddqu 6(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 6(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_6bytes):
+ mov 2(%rsi), %edx
+ mov (%rsi), %ecx
+ mov %edx, 2(%rdi)
+ mov %ecx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_133bytes):
+ lddqu 117(%rsi), %xmm0
+ movdqu %xmm0, 117(%rdi)
+L(bwd_write_117bytes):
+ lddqu 101(%rsi), %xmm0
+ movdqu %xmm0, 101(%rdi)
+L(bwd_write_101bytes):
+ lddqu 85(%rsi), %xmm0
+ movdqu %xmm0, 85(%rdi)
+L(bwd_write_85bytes):
+ lddqu 69(%rsi), %xmm0
+ movdqu %xmm0, 69(%rdi)
+L(bwd_write_69bytes):
+ lddqu 53(%rsi), %xmm0
+ movdqu %xmm0, 53(%rdi)
+L(bwd_write_53bytes):
+ lddqu 37(%rsi), %xmm0
+ movdqu %xmm0, 37(%rdi)
+L(bwd_write_37bytes):
+ lddqu 21(%rsi), %xmm0
+ movdqu %xmm0, 21(%rdi)
+L(bwd_write_21bytes):
+ lddqu 5(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 5(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_5bytes):
+ mov 1(%rsi), %edx
+ mov (%rsi), %ecx
+ mov %edx, 1(%rdi)
+ mov %ecx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_132bytes):
+ lddqu 116(%rsi), %xmm0
+ movdqu %xmm0, 116(%rdi)
+L(bwd_write_116bytes):
+ lddqu 100(%rsi), %xmm0
+ movdqu %xmm0, 100(%rdi)
+L(bwd_write_100bytes):
+ lddqu 84(%rsi), %xmm0
+ movdqu %xmm0, 84(%rdi)
+L(bwd_write_84bytes):
+ lddqu 68(%rsi), %xmm0
+ movdqu %xmm0, 68(%rdi)
+L(bwd_write_68bytes):
+ lddqu 52(%rsi), %xmm0
+ movdqu %xmm0, 52(%rdi)
+L(bwd_write_52bytes):
+ lddqu 36(%rsi), %xmm0
+ movdqu %xmm0, 36(%rdi)
+L(bwd_write_36bytes):
+ lddqu 20(%rsi), %xmm0
+ movdqu %xmm0, 20(%rdi)
+L(bwd_write_20bytes):
+ lddqu 4(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 4(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_4bytes):
+ mov (%rsi), %edx
+ mov %edx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_131bytes):
+ lddqu 115(%rsi), %xmm0
+ movdqu %xmm0, 115(%rdi)
+L(bwd_write_115bytes):
+ lddqu 99(%rsi), %xmm0
+ movdqu %xmm0, 99(%rdi)
+L(bwd_write_99bytes):
+ lddqu 83(%rsi), %xmm0
+ movdqu %xmm0, 83(%rdi)
+L(bwd_write_83bytes):
+ lddqu 67(%rsi), %xmm0
+ movdqu %xmm0, 67(%rdi)
+L(bwd_write_67bytes):
+ lddqu 51(%rsi), %xmm0
+ movdqu %xmm0, 51(%rdi)
+L(bwd_write_51bytes):
+ lddqu 35(%rsi), %xmm0
+ movdqu %xmm0, 35(%rdi)
+L(bwd_write_35bytes):
+ lddqu 19(%rsi), %xmm0
+ movdqu %xmm0, 19(%rdi)
+L(bwd_write_19bytes):
+ lddqu 3(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 3(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_3bytes):
+ mov 1(%rsi), %dx
+ mov (%rsi), %cx
+ mov %dx, 1(%rdi)
+ mov %cx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_130bytes):
+ lddqu 114(%rsi), %xmm0
+ movdqu %xmm0, 114(%rdi)
+L(bwd_write_114bytes):
+ lddqu 98(%rsi), %xmm0
+ movdqu %xmm0, 98(%rdi)
+L(bwd_write_98bytes):
+ lddqu 82(%rsi), %xmm0
+ movdqu %xmm0, 82(%rdi)
+L(bwd_write_82bytes):
+ lddqu 66(%rsi), %xmm0
+ movdqu %xmm0, 66(%rdi)
+L(bwd_write_66bytes):
+ lddqu 50(%rsi), %xmm0
+ movdqu %xmm0, 50(%rdi)
+L(bwd_write_50bytes):
+ lddqu 34(%rsi), %xmm0
+ movdqu %xmm0, 34(%rdi)
+L(bwd_write_34bytes):
+ lddqu 18(%rsi), %xmm0
+ movdqu %xmm0, 18(%rdi)
+L(bwd_write_18bytes):
+ lddqu 2(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 2(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_2bytes):
+ movzwl (%rsi), %edx
+ mov %dx, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_129bytes):
+ lddqu 113(%rsi), %xmm0
+ movdqu %xmm0, 113(%rdi)
+L(bwd_write_113bytes):
+ lddqu 97(%rsi), %xmm0
+ movdqu %xmm0, 97(%rdi)
+L(bwd_write_97bytes):
+ lddqu 81(%rsi), %xmm0
+ movdqu %xmm0, 81(%rdi)
+L(bwd_write_81bytes):
+ lddqu 65(%rsi), %xmm0
+ movdqu %xmm0, 65(%rdi)
+L(bwd_write_65bytes):
+ lddqu 49(%rsi), %xmm0
+ movdqu %xmm0, 49(%rdi)
+L(bwd_write_49bytes):
+ lddqu 33(%rsi), %xmm0
+ movdqu %xmm0, 33(%rdi)
+L(bwd_write_33bytes):
+ lddqu 17(%rsi), %xmm0
+ movdqu %xmm0, 17(%rdi)
+L(bwd_write_17bytes):
+ lddqu 1(%rsi), %xmm0
+ lddqu (%rsi), %xmm1
+ movdqu %xmm0, 1(%rdi)
+ movdqu %xmm1, (%rdi)
+ ret
+
+ .p2align 4
+L(bwd_write_1bytes):
+ movzbl (%rsi), %edx
+ mov %dl, (%rdi)
+ ret
+
+END (MEMCPY)
+
+ .section .rodata.ssse3,"a",@progbits
+ ALIGN (3)
+L(table_144_bytes_bwd):
+ .int JMPTBL (L(bwd_write_0bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_1bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_2bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_3bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_4bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_5bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_6bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_7bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_8bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_9bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_10bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_11bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_12bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_13bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_14bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_15bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_16bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_17bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_18bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_19bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_20bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_21bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_22bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_23bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_24bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_25bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_26bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_27bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_28bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_29bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_30bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_31bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_32bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_33bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_34bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_35bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_36bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_37bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_38bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_39bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_40bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_41bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_42bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_43bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_44bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_45bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_46bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_47bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_48bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_49bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_50bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_51bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_52bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_53bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_54bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_55bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_56bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_57bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_58bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_59bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_60bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_61bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_62bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_63bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_64bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_65bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_66bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_67bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_68bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_69bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_70bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_71bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_72bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_73bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_74bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_75bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_76bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_77bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_78bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_79bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_80bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_81bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_82bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_83bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_84bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_85bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_86bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_87bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_88bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_89bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_90bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_91bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_92bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_93bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_94bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_95bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_96bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_97bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_98bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_99bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_100bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_101bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_102bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_103bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_104bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_105bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_106bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_107bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_108bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_109bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_110bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_111bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_112bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_113bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_114bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_115bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_116bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_117bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_118bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_119bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_120bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_121bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_122bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_123bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_124bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_125bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_126bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_127bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_128bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_129bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_130bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_131bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_132bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_133bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_134bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_135bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_136bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_137bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_138bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_139bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_140bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_141bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_142bytes), L(table_144_bytes_bwd))
+ .int JMPTBL (L(bwd_write_143bytes), L(table_144_bytes_bwd))
+
+ ALIGN (3)
+L(table_144_bytes_fwd):
+ .int JMPTBL (L(fwd_write_0bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_1bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_2bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_3bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_4bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_5bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_6bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_7bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_8bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_9bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_10bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_11bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_12bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_13bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_14bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_15bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_16bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_17bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_18bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_19bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_20bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_21bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_22bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_23bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_24bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_25bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_26bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_27bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_28bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_29bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_30bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_31bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_32bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_33bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_34bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_35bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_36bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_37bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_38bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_39bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_40bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_41bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_42bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_43bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_44bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_45bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_46bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_47bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_48bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_49bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_50bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_51bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_52bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_53bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_54bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_55bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_56bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_57bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_58bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_59bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_60bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_61bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_62bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_63bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_64bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_65bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_66bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_67bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_68bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_69bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_70bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_71bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_72bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_73bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_74bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_75bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_76bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_77bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_78bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_79bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_80bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_81bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_82bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_83bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_84bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_85bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_86bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_87bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_88bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_89bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_90bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_91bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_92bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_93bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_94bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_95bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_96bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_97bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_98bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_99bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_100bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_101bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_102bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_103bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_104bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_105bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_106bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_107bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_108bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_109bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_110bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_111bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_112bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_113bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_114bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_115bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_116bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_117bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_118bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_119bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_120bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_121bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_122bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_123bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_124bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_125bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_126bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_127bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_128bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_129bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_130bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_131bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_132bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_133bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_134bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_135bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_136bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_137bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_138bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_139bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_140bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_141bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_142bytes), L(table_144_bytes_fwd))
+ .int JMPTBL (L(fwd_write_143bytes), L(table_144_bytes_fwd))
+
+ ALIGN (3)
+L(shl_table_fwd):
+ .int JMPTBL (L(shl_0), L(shl_table_fwd))
+ .int JMPTBL (L(shl_1), L(shl_table_fwd))
+ .int JMPTBL (L(shl_2), L(shl_table_fwd))
+ .int JMPTBL (L(shl_3), L(shl_table_fwd))
+ .int JMPTBL (L(shl_4), L(shl_table_fwd))
+ .int JMPTBL (L(shl_5), L(shl_table_fwd))
+ .int JMPTBL (L(shl_6), L(shl_table_fwd))
+ .int JMPTBL (L(shl_7), L(shl_table_fwd))
+ .int JMPTBL (L(shl_8), L(shl_table_fwd))
+ .int JMPTBL (L(shl_9), L(shl_table_fwd))
+ .int JMPTBL (L(shl_10), L(shl_table_fwd))
+ .int JMPTBL (L(shl_11), L(shl_table_fwd))
+ .int JMPTBL (L(shl_12), L(shl_table_fwd))
+ .int JMPTBL (L(shl_13), L(shl_table_fwd))
+ .int JMPTBL (L(shl_14), L(shl_table_fwd))
+ .int JMPTBL (L(shl_15), L(shl_table_fwd))
+
+ ALIGN (3)
+L(shl_table_bwd):
+ .int JMPTBL (L(shl_0_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_1_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_2_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_3_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_4_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_5_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_6_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_7_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_8_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_9_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_10_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_11_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_12_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_13_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_14_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_15_bwd), L(shl_table_bwd))
+
+#endif
diff --git a/libc/sysdeps/x86_64/multiarch/memcpy-ssse3.S b/libc/sysdeps/x86_64/multiarch/memcpy-ssse3.S
new file mode 100644
index 000000000..9a878d35f
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/memcpy-ssse3.S
@@ -0,0 +1,3139 @@
+/* memcpy with SSSE3
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+
+#if !defined NOT_IN_libc \
+ && (defined SHARED \
+ || defined USE_AS_MEMMOVE \
+ || !defined USE_MULTIARCH)
+
+#include "asm-syntax.h"
+
+#ifndef MEMCPY
+# define MEMCPY __memcpy_ssse3
+# define MEMCPY_CHK __memcpy_chk_ssse3
+#endif
+
+#ifndef ALIGN
+# define ALIGN(n) .p2align n
+#endif
+
+#define JMPTBL(I, B) I - B
+
+/* Branch to an entry in a jump table. TABLE is a jump table with
+ relative offsets. INDEX is a register contains the index into the
+ jump table. SCALE is the scale of INDEX. */
+#define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \
+ lea TABLE(%rip), %r11; \
+ movslq (%r11, INDEX, SCALE), INDEX; \
+ lea (%r11, INDEX), INDEX; \
+ jmp *INDEX; \
+ ud2
+
+ .section .text.ssse3,"ax",@progbits
+#if defined SHARED && !defined NOT_IN_libc
+ENTRY (MEMCPY_CHK)
+ cmpq %rdx, %rcx
+ jb HIDDEN_JUMPTARGET (__chk_fail)
+END (MEMCPY_CHK)
+#endif
+
+ENTRY (MEMCPY)
+ mov %rdi, %rax
+#ifdef USE_AS_MEMPCPY
+ add %rdx, %rax
+#endif
+
+#ifdef USE_AS_MEMMOVE
+ cmp %rsi, %rdi
+ jb L(copy_forward)
+ je L(write_0bytes)
+ cmp $79, %rdx
+ jbe L(copy_forward)
+ jmp L(copy_backward)
+L(copy_forward):
+#endif
+ cmp $79, %rdx
+ lea L(table_less_80bytes)(%rip), %r11
+ ja L(80bytesormore)
+ movslq (%r11, %rdx, 4), %r9
+ add %rdx, %rsi
+ add %rdx, %rdi
+ add %r11, %r9
+ jmp *%r9
+ ud2
+
+ ALIGN (4)
+L(80bytesormore):
+#ifndef USE_AS_MEMMOVE
+ cmp %dil, %sil
+ jle L(copy_backward)
+#endif
+
+ movdqu (%rsi), %xmm0
+ mov %rdi, %rcx
+ and $-16, %rdi
+ add $16, %rdi
+ mov %rcx, %r8
+ sub %rdi, %rcx
+ add %rcx, %rdx
+ sub %rcx, %rsi
+
+#ifdef SHARED_CACHE_SIZE_HALF
+ mov $SHARED_CACHE_SIZE_HALF, %rcx
+#else
+ mov __x86_64_shared_cache_size_half(%rip), %rcx
+#endif
+ cmp %rcx, %rdx
+ mov %rsi, %r9
+ ja L(large_page_fwd)
+ and $0xf, %r9
+ jz L(shl_0)
+#ifdef DATA_CACHE_SIZE_HALF
+ mov $DATA_CACHE_SIZE_HALF, %rcx
+#else
+ mov __x86_64_data_cache_size_half(%rip), %rcx
+#endif
+ BRANCH_TO_JMPTBL_ENTRY (L(shl_table), %r9, 4)
+
+ ALIGN (4)
+L(copy_backward):
+ movdqu -16(%rsi, %rdx), %xmm0
+ add %rdx, %rsi
+ lea -16(%rdi, %rdx), %r8
+ add %rdx, %rdi
+
+ mov %rdi, %rcx
+ and $0xf, %rcx
+ xor %rcx, %rdi
+ sub %rcx, %rdx
+ sub %rcx, %rsi
+
+#ifdef SHARED_CACHE_SIZE_HALF
+ mov $SHARED_CACHE_SIZE_HALF, %rcx
+#else
+ mov __x86_64_shared_cache_size_half(%rip), %rcx
+#endif
+
+ cmp %rcx, %rdx
+ mov %rsi, %r9
+ ja L(large_page_bwd)
+ and $0xf, %r9
+ jz L(shl_0_bwd)
+#ifdef DATA_CACHE_SIZE_HALF
+ mov $DATA_CACHE_SIZE_HALF, %rcx
+#else
+ mov __x86_64_data_cache_size_half(%rip), %rcx
+#endif
+ BRANCH_TO_JMPTBL_ENTRY (L(shl_table_bwd), %r9, 4)
+
+ ALIGN (4)
+L(shl_0):
+ sub $16, %rdx
+ movdqa (%rsi), %xmm1
+ add $16, %rsi
+ movdqa %xmm1, (%rdi)
+ add $16, %rdi
+ cmp $128, %rdx
+ movdqu %xmm0, (%r8)
+ ja L(shl_0_gobble)
+ cmp $64, %rdx
+ jb L(shl_0_less_64bytes)
+ movaps (%rsi), %xmm4
+ movaps 16(%rsi), %xmm1
+ movaps 32(%rsi), %xmm2
+ movaps 48(%rsi), %xmm3
+ movaps %xmm4, (%rdi)
+ movaps %xmm1, 16(%rdi)
+ movaps %xmm2, 32(%rdi)
+ movaps %xmm3, 48(%rdi)
+ sub $64, %rdx
+ add $64, %rsi
+ add $64, %rdi
+L(shl_0_less_64bytes):
+ add %rdx, %rsi
+ add %rdx, %rdi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_0_gobble):
+#ifdef DATA_CACHE_SIZE_HALF
+ cmp $DATA_CACHE_SIZE_HALF, %rdx
+#else
+ cmp __x86_64_data_cache_size_half(%rip), %rdx
+#endif
+ lea -128(%rdx), %rdx
+ jae L(shl_0_gobble_mem_loop)
+L(shl_0_gobble_cache_loop):
+ movdqa (%rsi), %xmm4
+ movaps 0x10(%rsi), %xmm1
+ movaps 0x20(%rsi), %xmm2
+ movaps 0x30(%rsi), %xmm3
+
+ movdqa %xmm4, (%rdi)
+ movaps %xmm1, 0x10(%rdi)
+ movaps %xmm2, 0x20(%rdi)
+ movaps %xmm3, 0x30(%rdi)
+
+ sub $128, %rdx
+ movaps 0x40(%rsi), %xmm4
+ movaps 0x50(%rsi), %xmm5
+ movaps 0x60(%rsi), %xmm6
+ movaps 0x70(%rsi), %xmm7
+ lea 0x80(%rsi), %rsi
+ movaps %xmm4, 0x40(%rdi)
+ movaps %xmm5, 0x50(%rdi)
+ movaps %xmm6, 0x60(%rdi)
+ movaps %xmm7, 0x70(%rdi)
+ lea 0x80(%rdi), %rdi
+
+ jae L(shl_0_gobble_cache_loop)
+ cmp $-0x40, %rdx
+ lea 0x80(%rdx), %rdx
+ jl L(shl_0_cache_less_64bytes)
+
+ movdqa (%rsi), %xmm4
+ sub $0x40, %rdx
+ movdqa 0x10(%rsi), %xmm1
+
+ movdqa %xmm4, (%rdi)
+ movdqa %xmm1, 0x10(%rdi)
+
+ movdqa 0x20(%rsi), %xmm4
+ movdqa 0x30(%rsi), %xmm1
+ add $0x40, %rsi
+
+ movdqa %xmm4, 0x20(%rdi)
+ movdqa %xmm1, 0x30(%rdi)
+ add $0x40, %rdi
+L(shl_0_cache_less_64bytes):
+ add %rdx, %rsi
+ add %rdx, %rdi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_0_gobble_mem_loop):
+ prefetcht0 0x1c0(%rsi)
+ prefetcht0 0x280(%rsi)
+
+ movdqa (%rsi), %xmm0
+ movdqa 0x10(%rsi), %xmm1
+ movdqa 0x20(%rsi), %xmm2
+ movdqa 0x30(%rsi), %xmm3
+ movdqa 0x40(%rsi), %xmm4
+ movdqa 0x50(%rsi), %xmm5
+ movdqa 0x60(%rsi), %xmm6
+ movdqa 0x70(%rsi), %xmm7
+ lea 0x80(%rsi), %rsi
+ sub $0x80, %rdx
+ movdqa %xmm0, (%rdi)
+ movdqa %xmm1, 0x10(%rdi)
+ movdqa %xmm2, 0x20(%rdi)
+ movdqa %xmm3, 0x30(%rdi)
+ movdqa %xmm4, 0x40(%rdi)
+ movdqa %xmm5, 0x50(%rdi)
+ movdqa %xmm6, 0x60(%rdi)
+ movdqa %xmm7, 0x70(%rdi)
+ lea 0x80(%rdi), %rdi
+
+ jae L(shl_0_gobble_mem_loop)
+ cmp $-0x40, %rdx
+ lea 0x80(%rdx), %rdx
+ jl L(shl_0_mem_less_64bytes)
+
+ movdqa (%rsi), %xmm0
+ sub $0x40, %rdx
+ movdqa 0x10(%rsi), %xmm1
+
+ movdqa %xmm0, (%rdi)
+ movdqa %xmm1, 0x10(%rdi)
+
+ movdqa 0x20(%rsi), %xmm0
+ movdqa 0x30(%rsi), %xmm1
+ add $0x40, %rsi
+
+ movdqa %xmm0, 0x20(%rdi)
+ movdqa %xmm1, 0x30(%rdi)
+ add $0x40, %rdi
+L(shl_0_mem_less_64bytes):
+ cmp $0x20, %rdx
+ jb L(shl_0_mem_less_32bytes)
+ movdqa (%rsi), %xmm0
+ sub $0x20, %rdx
+ movdqa 0x10(%rsi), %xmm1
+ add $0x20, %rsi
+ movdqa %xmm0, (%rdi)
+ movdqa %xmm1, 0x10(%rdi)
+ add $0x20, %rdi
+L(shl_0_mem_less_32bytes):
+ add %rdx, %rdi
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_0_bwd):
+ sub $16, %rdx
+ movdqa -0x10(%rsi), %xmm1
+ sub $16, %rsi
+ movdqa %xmm1, -0x10(%rdi)
+ sub $16, %rdi
+ cmp $0x80, %rdx
+ movdqu %xmm0, (%r8)
+ ja L(shl_0_gobble_bwd)
+ cmp $64, %rdx
+ jb L(shl_0_less_64bytes_bwd)
+ movaps -0x10(%rsi), %xmm0
+ movaps -0x20(%rsi), %xmm1
+ movaps -0x30(%rsi), %xmm2
+ movaps -0x40(%rsi), %xmm3
+ movaps %xmm0, -0x10(%rdi)
+ movaps %xmm1, -0x20(%rdi)
+ movaps %xmm2, -0x30(%rdi)
+ movaps %xmm3, -0x40(%rdi)
+ sub $64, %rdx
+ sub $0x40, %rsi
+ sub $0x40, %rdi
+L(shl_0_less_64bytes_bwd):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_0_gobble_bwd):
+#ifdef DATA_CACHE_SIZE_HALF
+ cmp $DATA_CACHE_SIZE_HALF, %rdx
+#else
+ cmp __x86_64_data_cache_size_half(%rip), %rdx
+#endif
+ lea -128(%rdx), %rdx
+ jae L(shl_0_gobble_mem_bwd_loop)
+L(shl_0_gobble_bwd_loop):
+ movdqa -0x10(%rsi), %xmm0
+ movaps -0x20(%rsi), %xmm1
+ movaps -0x30(%rsi), %xmm2
+ movaps -0x40(%rsi), %xmm3
+
+ movdqa %xmm0, -0x10(%rdi)
+ movaps %xmm1, -0x20(%rdi)
+ movaps %xmm2, -0x30(%rdi)
+ movaps %xmm3, -0x40(%rdi)
+
+ sub $0x80, %rdx
+ movaps -0x50(%rsi), %xmm4
+ movaps -0x60(%rsi), %xmm5
+ movaps -0x70(%rsi), %xmm6
+ movaps -0x80(%rsi), %xmm7
+ lea -0x80(%rsi), %rsi
+ movaps %xmm4, -0x50(%rdi)
+ movaps %xmm5, -0x60(%rdi)
+ movaps %xmm6, -0x70(%rdi)
+ movaps %xmm7, -0x80(%rdi)
+ lea -0x80(%rdi), %rdi
+
+ jae L(shl_0_gobble_bwd_loop)
+ cmp $-0x40, %rdx
+ lea 0x80(%rdx), %rdx
+ jl L(shl_0_gobble_bwd_less_64bytes)
+
+ movdqa -0x10(%rsi), %xmm0
+ sub $0x40, %rdx
+ movdqa -0x20(%rsi), %xmm1
+
+ movdqa %xmm0, -0x10(%rdi)
+ movdqa %xmm1, -0x20(%rdi)
+
+ movdqa -0x30(%rsi), %xmm0
+ movdqa -0x40(%rsi), %xmm1
+ sub $0x40, %rsi
+
+ movdqa %xmm0, -0x30(%rdi)
+ movdqa %xmm1, -0x40(%rdi)
+ sub $0x40, %rdi
+L(shl_0_gobble_bwd_less_64bytes):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_0_gobble_mem_bwd_loop):
+ prefetcht0 -0x1c0(%rsi)
+ prefetcht0 -0x280(%rsi)
+ movdqa -0x10(%rsi), %xmm0
+ movdqa -0x20(%rsi), %xmm1
+ movdqa -0x30(%rsi), %xmm2
+ movdqa -0x40(%rsi), %xmm3
+ movdqa -0x50(%rsi), %xmm4
+ movdqa -0x60(%rsi), %xmm5
+ movdqa -0x70(%rsi), %xmm6
+ movdqa -0x80(%rsi), %xmm7
+ lea -0x80(%rsi), %rsi
+ sub $0x80, %rdx
+ movdqa %xmm0, -0x10(%rdi)
+ movdqa %xmm1, -0x20(%rdi)
+ movdqa %xmm2, -0x30(%rdi)
+ movdqa %xmm3, -0x40(%rdi)
+ movdqa %xmm4, -0x50(%rdi)
+ movdqa %xmm5, -0x60(%rdi)
+ movdqa %xmm6, -0x70(%rdi)
+ movdqa %xmm7, -0x80(%rdi)
+ lea -0x80(%rdi), %rdi
+
+ jae L(shl_0_gobble_mem_bwd_loop)
+ cmp $-0x40, %rdx
+ lea 0x80(%rdx), %rdx
+ jl L(shl_0_mem_bwd_less_64bytes)
+
+ movdqa -0x10(%rsi), %xmm0
+ sub $0x40, %rdx
+ movdqa -0x20(%rsi), %xmm1
+
+ movdqa %xmm0, -0x10(%rdi)
+ movdqa %xmm1, -0x20(%rdi)
+
+ movdqa -0x30(%rsi), %xmm0
+ movdqa -0x40(%rsi), %xmm1
+ sub $0x40, %rsi
+
+ movdqa %xmm0, -0x30(%rdi)
+ movdqa %xmm1, -0x40(%rdi)
+ sub $0x40, %rdi
+L(shl_0_mem_bwd_less_64bytes):
+ cmp $0x20, %rdx
+ jb L(shl_0_mem_bwd_less_32bytes)
+ movdqa -0x10(%rsi), %xmm0
+ sub $0x20, %rdx
+ movdqa -0x20(%rsi), %xmm1
+ sub $0x20, %rsi
+ movdqa %xmm0, -0x10(%rdi)
+ movdqa %xmm1, -0x20(%rdi)
+ sub $0x20, %rdi
+L(shl_0_mem_bwd_less_32bytes):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_1):
+ lea (L(shl_1_loop_L1)-L(shl_1))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x01(%rsi), %xmm1
+ jb L(L1_fwd)
+ lea (L(shl_1_loop_L2)-L(shl_1_loop_L1))(%r9), %r9
+L(L1_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_1_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_1_loop_L1):
+ sub $64, %rdx
+ movaps 0x0f(%rsi), %xmm2
+ movaps 0x1f(%rsi), %xmm3
+ movaps 0x2f(%rsi), %xmm4
+ movaps 0x3f(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $1, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $1, %xmm3, %xmm4
+ palignr $1, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $1, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_1_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_1_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_1_bwd):
+ lea (L(shl_1_bwd_loop_L1)-L(shl_1_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x01(%rsi), %xmm1
+ jb L(L1_bwd)
+ lea (L(shl_1_bwd_loop_L2)-L(shl_1_bwd_loop_L1))(%r9), %r9
+L(L1_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_1_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_1_bwd_loop_L1):
+ movaps -0x11(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x21(%rsi), %xmm3
+ movaps -0x31(%rsi), %xmm4
+ movaps -0x41(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $1, %xmm2, %xmm1
+ palignr $1, %xmm3, %xmm2
+ palignr $1, %xmm4, %xmm3
+ palignr $1, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_1_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_1_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_2):
+ lea (L(shl_2_loop_L1)-L(shl_2))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x02(%rsi), %xmm1
+ jb L(L2_fwd)
+ lea (L(shl_2_loop_L2)-L(shl_2_loop_L1))(%r9), %r9
+L(L2_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_2_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_2_loop_L1):
+ sub $64, %rdx
+ movaps 0x0e(%rsi), %xmm2
+ movaps 0x1e(%rsi), %xmm3
+ movaps 0x2e(%rsi), %xmm4
+ movaps 0x3e(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $2, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $2, %xmm3, %xmm4
+ palignr $2, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $2, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_2_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_2_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_2_bwd):
+ lea (L(shl_2_bwd_loop_L1)-L(shl_2_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x02(%rsi), %xmm1
+ jb L(L2_bwd)
+ lea (L(shl_2_bwd_loop_L2)-L(shl_2_bwd_loop_L1))(%r9), %r9
+L(L2_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_2_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_2_bwd_loop_L1):
+ movaps -0x12(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x22(%rsi), %xmm3
+ movaps -0x32(%rsi), %xmm4
+ movaps -0x42(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $2, %xmm2, %xmm1
+ palignr $2, %xmm3, %xmm2
+ palignr $2, %xmm4, %xmm3
+ palignr $2, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_2_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_2_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_3):
+ lea (L(shl_3_loop_L1)-L(shl_3))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x03(%rsi), %xmm1
+ jb L(L3_fwd)
+ lea (L(shl_3_loop_L2)-L(shl_3_loop_L1))(%r9), %r9
+L(L3_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_3_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_3_loop_L1):
+ sub $64, %rdx
+ movaps 0x0d(%rsi), %xmm2
+ movaps 0x1d(%rsi), %xmm3
+ movaps 0x2d(%rsi), %xmm4
+ movaps 0x3d(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $3, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $3, %xmm3, %xmm4
+ palignr $3, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $3, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_3_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_3_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_3_bwd):
+ lea (L(shl_3_bwd_loop_L1)-L(shl_3_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x03(%rsi), %xmm1
+ jb L(L3_bwd)
+ lea (L(shl_3_bwd_loop_L2)-L(shl_3_bwd_loop_L1))(%r9), %r9
+L(L3_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_3_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_3_bwd_loop_L1):
+ movaps -0x13(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x23(%rsi), %xmm3
+ movaps -0x33(%rsi), %xmm4
+ movaps -0x43(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $3, %xmm2, %xmm1
+ palignr $3, %xmm3, %xmm2
+ palignr $3, %xmm4, %xmm3
+ palignr $3, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_3_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_3_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_4):
+ lea (L(shl_4_loop_L1)-L(shl_4))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x04(%rsi), %xmm1
+ jb L(L4_fwd)
+ lea (L(shl_4_loop_L2)-L(shl_4_loop_L1))(%r9), %r9
+L(L4_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_4_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_4_loop_L1):
+ sub $64, %rdx
+ movaps 0x0c(%rsi), %xmm2
+ movaps 0x1c(%rsi), %xmm3
+ movaps 0x2c(%rsi), %xmm4
+ movaps 0x3c(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $4, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $4, %xmm3, %xmm4
+ palignr $4, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $4, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_4_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_4_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_4_bwd):
+ lea (L(shl_4_bwd_loop_L1)-L(shl_4_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x04(%rsi), %xmm1
+ jb L(L4_bwd)
+ lea (L(shl_4_bwd_loop_L2)-L(shl_4_bwd_loop_L1))(%r9), %r9
+L(L4_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_4_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_4_bwd_loop_L1):
+ movaps -0x14(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x24(%rsi), %xmm3
+ movaps -0x34(%rsi), %xmm4
+ movaps -0x44(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $4, %xmm2, %xmm1
+ palignr $4, %xmm3, %xmm2
+ palignr $4, %xmm4, %xmm3
+ palignr $4, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_4_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_4_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_5):
+ lea (L(shl_5_loop_L1)-L(shl_5))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x05(%rsi), %xmm1
+ jb L(L5_fwd)
+ lea (L(shl_5_loop_L2)-L(shl_5_loop_L1))(%r9), %r9
+L(L5_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_5_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_5_loop_L1):
+ sub $64, %rdx
+ movaps 0x0b(%rsi), %xmm2
+ movaps 0x1b(%rsi), %xmm3
+ movaps 0x2b(%rsi), %xmm4
+ movaps 0x3b(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $5, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $5, %xmm3, %xmm4
+ palignr $5, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $5, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_5_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_5_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_5_bwd):
+ lea (L(shl_5_bwd_loop_L1)-L(shl_5_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x05(%rsi), %xmm1
+ jb L(L5_bwd)
+ lea (L(shl_5_bwd_loop_L2)-L(shl_5_bwd_loop_L1))(%r9), %r9
+L(L5_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_5_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_5_bwd_loop_L1):
+ movaps -0x15(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x25(%rsi), %xmm3
+ movaps -0x35(%rsi), %xmm4
+ movaps -0x45(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $5, %xmm2, %xmm1
+ palignr $5, %xmm3, %xmm2
+ palignr $5, %xmm4, %xmm3
+ palignr $5, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_5_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_5_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_6):
+ lea (L(shl_6_loop_L1)-L(shl_6))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x06(%rsi), %xmm1
+ jb L(L6_fwd)
+ lea (L(shl_6_loop_L2)-L(shl_6_loop_L1))(%r9), %r9
+L(L6_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_6_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_6_loop_L1):
+ sub $64, %rdx
+ movaps 0x0a(%rsi), %xmm2
+ movaps 0x1a(%rsi), %xmm3
+ movaps 0x2a(%rsi), %xmm4
+ movaps 0x3a(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $6, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $6, %xmm3, %xmm4
+ palignr $6, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $6, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_6_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_6_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_6_bwd):
+ lea (L(shl_6_bwd_loop_L1)-L(shl_6_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x06(%rsi), %xmm1
+ jb L(L6_bwd)
+ lea (L(shl_6_bwd_loop_L2)-L(shl_6_bwd_loop_L1))(%r9), %r9
+L(L6_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_6_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_6_bwd_loop_L1):
+ movaps -0x16(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x26(%rsi), %xmm3
+ movaps -0x36(%rsi), %xmm4
+ movaps -0x46(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $6, %xmm2, %xmm1
+ palignr $6, %xmm3, %xmm2
+ palignr $6, %xmm4, %xmm3
+ palignr $6, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_6_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_6_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_7):
+ lea (L(shl_7_loop_L1)-L(shl_7))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x07(%rsi), %xmm1
+ jb L(L7_fwd)
+ lea (L(shl_7_loop_L2)-L(shl_7_loop_L1))(%r9), %r9
+L(L7_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_7_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_7_loop_L1):
+ sub $64, %rdx
+ movaps 0x09(%rsi), %xmm2
+ movaps 0x19(%rsi), %xmm3
+ movaps 0x29(%rsi), %xmm4
+ movaps 0x39(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $7, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $7, %xmm3, %xmm4
+ palignr $7, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $7, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_7_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_7_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_7_bwd):
+ lea (L(shl_7_bwd_loop_L1)-L(shl_7_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x07(%rsi), %xmm1
+ jb L(L7_bwd)
+ lea (L(shl_7_bwd_loop_L2)-L(shl_7_bwd_loop_L1))(%r9), %r9
+L(L7_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_7_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_7_bwd_loop_L1):
+ movaps -0x17(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x27(%rsi), %xmm3
+ movaps -0x37(%rsi), %xmm4
+ movaps -0x47(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $7, %xmm2, %xmm1
+ palignr $7, %xmm3, %xmm2
+ palignr $7, %xmm4, %xmm3
+ palignr $7, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_7_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_7_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_8):
+ lea (L(shl_8_loop_L1)-L(shl_8))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x08(%rsi), %xmm1
+ jb L(L8_fwd)
+ lea (L(shl_8_loop_L2)-L(shl_8_loop_L1))(%r9), %r9
+L(L8_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+L(shl_8_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_8_loop_L1):
+ sub $64, %rdx
+ movaps 0x08(%rsi), %xmm2
+ movaps 0x18(%rsi), %xmm3
+ movaps 0x28(%rsi), %xmm4
+ movaps 0x38(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $8, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $8, %xmm3, %xmm4
+ palignr $8, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $8, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_8_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+ ALIGN (4)
+L(shl_8_end):
+ lea 64(%rdx), %rdx
+ movaps %xmm4, -0x20(%rdi)
+ add %rdx, %rsi
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_8_bwd):
+ lea (L(shl_8_bwd_loop_L1)-L(shl_8_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x08(%rsi), %xmm1
+ jb L(L8_bwd)
+ lea (L(shl_8_bwd_loop_L2)-L(shl_8_bwd_loop_L1))(%r9), %r9
+L(L8_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_8_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_8_bwd_loop_L1):
+ movaps -0x18(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x28(%rsi), %xmm3
+ movaps -0x38(%rsi), %xmm4
+ movaps -0x48(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $8, %xmm2, %xmm1
+ palignr $8, %xmm3, %xmm2
+ palignr $8, %xmm4, %xmm3
+ palignr $8, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_8_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_8_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_9):
+ lea (L(shl_9_loop_L1)-L(shl_9))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x09(%rsi), %xmm1
+ jb L(L9_fwd)
+ lea (L(shl_9_loop_L2)-L(shl_9_loop_L1))(%r9), %r9
+L(L9_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_9_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_9_loop_L1):
+ sub $64, %rdx
+ movaps 0x07(%rsi), %xmm2
+ movaps 0x17(%rsi), %xmm3
+ movaps 0x27(%rsi), %xmm4
+ movaps 0x37(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $9, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $9, %xmm3, %xmm4
+ palignr $9, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $9, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_9_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_9_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_9_bwd):
+ lea (L(shl_9_bwd_loop_L1)-L(shl_9_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x09(%rsi), %xmm1
+ jb L(L9_bwd)
+ lea (L(shl_9_bwd_loop_L2)-L(shl_9_bwd_loop_L1))(%r9), %r9
+L(L9_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_9_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_9_bwd_loop_L1):
+ movaps -0x19(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x29(%rsi), %xmm3
+ movaps -0x39(%rsi), %xmm4
+ movaps -0x49(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $9, %xmm2, %xmm1
+ palignr $9, %xmm3, %xmm2
+ palignr $9, %xmm4, %xmm3
+ palignr $9, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_9_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_9_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_10):
+ lea (L(shl_10_loop_L1)-L(shl_10))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x0a(%rsi), %xmm1
+ jb L(L10_fwd)
+ lea (L(shl_10_loop_L2)-L(shl_10_loop_L1))(%r9), %r9
+L(L10_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_10_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_10_loop_L1):
+ sub $64, %rdx
+ movaps 0x06(%rsi), %xmm2
+ movaps 0x16(%rsi), %xmm3
+ movaps 0x26(%rsi), %xmm4
+ movaps 0x36(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $10, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $10, %xmm3, %xmm4
+ palignr $10, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $10, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_10_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_10_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_10_bwd):
+ lea (L(shl_10_bwd_loop_L1)-L(shl_10_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x0a(%rsi), %xmm1
+ jb L(L10_bwd)
+ lea (L(shl_10_bwd_loop_L2)-L(shl_10_bwd_loop_L1))(%r9), %r9
+L(L10_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_10_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_10_bwd_loop_L1):
+ movaps -0x1a(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x2a(%rsi), %xmm3
+ movaps -0x3a(%rsi), %xmm4
+ movaps -0x4a(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $10, %xmm2, %xmm1
+ palignr $10, %xmm3, %xmm2
+ palignr $10, %xmm4, %xmm3
+ palignr $10, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_10_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_10_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_11):
+ lea (L(shl_11_loop_L1)-L(shl_11))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x0b(%rsi), %xmm1
+ jb L(L11_fwd)
+ lea (L(shl_11_loop_L2)-L(shl_11_loop_L1))(%r9), %r9
+L(L11_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_11_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_11_loop_L1):
+ sub $64, %rdx
+ movaps 0x05(%rsi), %xmm2
+ movaps 0x15(%rsi), %xmm3
+ movaps 0x25(%rsi), %xmm4
+ movaps 0x35(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $11, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $11, %xmm3, %xmm4
+ palignr $11, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $11, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_11_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_11_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_11_bwd):
+ lea (L(shl_11_bwd_loop_L1)-L(shl_11_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x0b(%rsi), %xmm1
+ jb L(L11_bwd)
+ lea (L(shl_11_bwd_loop_L2)-L(shl_11_bwd_loop_L1))(%r9), %r9
+L(L11_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_11_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_11_bwd_loop_L1):
+ movaps -0x1b(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x2b(%rsi), %xmm3
+ movaps -0x3b(%rsi), %xmm4
+ movaps -0x4b(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $11, %xmm2, %xmm1
+ palignr $11, %xmm3, %xmm2
+ palignr $11, %xmm4, %xmm3
+ palignr $11, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_11_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_11_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_12):
+ lea (L(shl_12_loop_L1)-L(shl_12))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x0c(%rsi), %xmm1
+ jb L(L12_fwd)
+ lea (L(shl_12_loop_L2)-L(shl_12_loop_L1))(%r9), %r9
+L(L12_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_12_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_12_loop_L1):
+ sub $64, %rdx
+ movaps 0x04(%rsi), %xmm2
+ movaps 0x14(%rsi), %xmm3
+ movaps 0x24(%rsi), %xmm4
+ movaps 0x34(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $12, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $12, %xmm3, %xmm4
+ palignr $12, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $12, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_12_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_12_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_12_bwd):
+ lea (L(shl_12_bwd_loop_L1)-L(shl_12_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x0c(%rsi), %xmm1
+ jb L(L12_bwd)
+ lea (L(shl_12_bwd_loop_L2)-L(shl_12_bwd_loop_L1))(%r9), %r9
+L(L12_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_12_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_12_bwd_loop_L1):
+ movaps -0x1c(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x2c(%rsi), %xmm3
+ movaps -0x3c(%rsi), %xmm4
+ movaps -0x4c(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $12, %xmm2, %xmm1
+ palignr $12, %xmm3, %xmm2
+ palignr $12, %xmm4, %xmm3
+ palignr $12, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_12_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_12_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_13):
+ lea (L(shl_13_loop_L1)-L(shl_13))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x0d(%rsi), %xmm1
+ jb L(L13_fwd)
+ lea (L(shl_13_loop_L2)-L(shl_13_loop_L1))(%r9), %r9
+L(L13_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_13_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_13_loop_L1):
+ sub $64, %rdx
+ movaps 0x03(%rsi), %xmm2
+ movaps 0x13(%rsi), %xmm3
+ movaps 0x23(%rsi), %xmm4
+ movaps 0x33(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $13, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $13, %xmm3, %xmm4
+ palignr $13, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $13, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_13_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_13_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_13_bwd):
+ lea (L(shl_13_bwd_loop_L1)-L(shl_13_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x0d(%rsi), %xmm1
+ jb L(L13_bwd)
+ lea (L(shl_13_bwd_loop_L2)-L(shl_13_bwd_loop_L1))(%r9), %r9
+L(L13_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_13_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_13_bwd_loop_L1):
+ movaps -0x1d(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x2d(%rsi), %xmm3
+ movaps -0x3d(%rsi), %xmm4
+ movaps -0x4d(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $13, %xmm2, %xmm1
+ palignr $13, %xmm3, %xmm2
+ palignr $13, %xmm4, %xmm3
+ palignr $13, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_13_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_13_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_14):
+ lea (L(shl_14_loop_L1)-L(shl_14))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x0e(%rsi), %xmm1
+ jb L(L14_fwd)
+ lea (L(shl_14_loop_L2)-L(shl_14_loop_L1))(%r9), %r9
+L(L14_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_14_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_14_loop_L1):
+ sub $64, %rdx
+ movaps 0x02(%rsi), %xmm2
+ movaps 0x12(%rsi), %xmm3
+ movaps 0x22(%rsi), %xmm4
+ movaps 0x32(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $14, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $14, %xmm3, %xmm4
+ palignr $14, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $14, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_14_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_14_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_14_bwd):
+ lea (L(shl_14_bwd_loop_L1)-L(shl_14_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x0e(%rsi), %xmm1
+ jb L(L14_bwd)
+ lea (L(shl_14_bwd_loop_L2)-L(shl_14_bwd_loop_L1))(%r9), %r9
+L(L14_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_14_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_14_bwd_loop_L1):
+ movaps -0x1e(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x2e(%rsi), %xmm3
+ movaps -0x3e(%rsi), %xmm4
+ movaps -0x4e(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $14, %xmm2, %xmm1
+ palignr $14, %xmm3, %xmm2
+ palignr $14, %xmm4, %xmm3
+ palignr $14, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_14_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_14_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_15):
+ lea (L(shl_15_loop_L1)-L(shl_15))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x0f(%rsi), %xmm1
+ jb L(L15_fwd)
+ lea (L(shl_15_loop_L2)-L(shl_15_loop_L1))(%r9), %r9
+L(L15_fwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_15_loop_L2):
+ prefetchnta 0x1c0(%rsi)
+L(shl_15_loop_L1):
+ sub $64, %rdx
+ movaps 0x01(%rsi), %xmm2
+ movaps 0x11(%rsi), %xmm3
+ movaps 0x21(%rsi), %xmm4
+ movaps 0x31(%rsi), %xmm5
+ movdqa %xmm5, %xmm6
+ palignr $15, %xmm4, %xmm5
+ lea 64(%rsi), %rsi
+ palignr $15, %xmm3, %xmm4
+ palignr $15, %xmm2, %xmm3
+ lea 64(%rdi), %rdi
+ palignr $15, %xmm1, %xmm2
+ movdqa %xmm6, %xmm1
+ movdqa %xmm2, -0x40(%rdi)
+ movaps %xmm3, -0x30(%rdi)
+ jb L(shl_15_end)
+ movaps %xmm4, -0x20(%rdi)
+ movaps %xmm5, -0x10(%rdi)
+ jmp *%r9
+ ud2
+L(shl_15_end):
+ movaps %xmm4, -0x20(%rdi)
+ lea 64(%rdx), %rdx
+ movaps %xmm5, -0x10(%rdi)
+ add %rdx, %rdi
+ movdqu %xmm0, (%r8)
+ add %rdx, %rsi
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(shl_15_bwd):
+ lea (L(shl_15_bwd_loop_L1)-L(shl_15_bwd))(%r9), %r9
+ cmp %rcx, %rdx
+ movaps -0x0f(%rsi), %xmm1
+ jb L(L15_bwd)
+ lea (L(shl_15_bwd_loop_L2)-L(shl_15_bwd_loop_L1))(%r9), %r9
+L(L15_bwd):
+ lea -64(%rdx), %rdx
+ jmp *%r9
+ ud2
+L(shl_15_bwd_loop_L2):
+ prefetchnta -0x1c0(%rsi)
+L(shl_15_bwd_loop_L1):
+ movaps -0x1f(%rsi), %xmm2
+ sub $0x40, %rdx
+ movaps -0x2f(%rsi), %xmm3
+ movaps -0x3f(%rsi), %xmm4
+ movaps -0x4f(%rsi), %xmm5
+ lea -0x40(%rsi), %rsi
+ palignr $15, %xmm2, %xmm1
+ palignr $15, %xmm3, %xmm2
+ palignr $15, %xmm4, %xmm3
+ palignr $15, %xmm5, %xmm4
+
+ movaps %xmm1, -0x10(%rdi)
+ movaps %xmm5, %xmm1
+
+ movaps %xmm2, -0x20(%rdi)
+ lea -0x40(%rdi), %rdi
+
+ movaps %xmm3, 0x10(%rdi)
+ jb L(shl_15_bwd_end)
+ movaps %xmm4, (%rdi)
+ jmp *%r9
+ ud2
+L(shl_15_bwd_end):
+ movaps %xmm4, (%rdi)
+ lea 64(%rdx), %rdx
+ movdqu %xmm0, (%r8)
+ BRANCH_TO_JMPTBL_ENTRY(L(table_less_80bytes), %rdx, 4)
+
+ ALIGN (4)
+L(write_72bytes):
+ movdqu -72(%rsi), %xmm0
+ movdqu -56(%rsi), %xmm1
+ mov -40(%rsi), %r8
+ mov -32(%rsi), %r9
+ mov -24(%rsi), %r10
+ mov -16(%rsi), %r11
+ mov -8(%rsi), %rcx
+ movdqu %xmm0, -72(%rdi)
+ movdqu %xmm1, -56(%rdi)
+ mov %r8, -40(%rdi)
+ mov %r9, -32(%rdi)
+ mov %r10, -24(%rdi)
+ mov %r11, -16(%rdi)
+ mov %rcx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_64bytes):
+ movdqu -64(%rsi), %xmm0
+ mov -48(%rsi), %rcx
+ mov -40(%rsi), %r8
+ mov -32(%rsi), %r9
+ mov -24(%rsi), %r10
+ mov -16(%rsi), %r11
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -64(%rdi)
+ mov %rcx, -48(%rdi)
+ mov %r8, -40(%rdi)
+ mov %r9, -32(%rdi)
+ mov %r10, -24(%rdi)
+ mov %r11, -16(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_56bytes):
+ movdqu -56(%rsi), %xmm0
+ mov -40(%rsi), %r8
+ mov -32(%rsi), %r9
+ mov -24(%rsi), %r10
+ mov -16(%rsi), %r11
+ mov -8(%rsi), %rcx
+ movdqu %xmm0, -56(%rdi)
+ mov %r8, -40(%rdi)
+ mov %r9, -32(%rdi)
+ mov %r10, -24(%rdi)
+ mov %r11, -16(%rdi)
+ mov %rcx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_48bytes):
+ mov -48(%rsi), %rcx
+ mov -40(%rsi), %r8
+ mov -32(%rsi), %r9
+ mov -24(%rsi), %r10
+ mov -16(%rsi), %r11
+ mov -8(%rsi), %rdx
+ mov %rcx, -48(%rdi)
+ mov %r8, -40(%rdi)
+ mov %r9, -32(%rdi)
+ mov %r10, -24(%rdi)
+ mov %r11, -16(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_40bytes):
+ mov -40(%rsi), %r8
+ mov -32(%rsi), %r9
+ mov -24(%rsi), %r10
+ mov -16(%rsi), %r11
+ mov -8(%rsi), %rdx
+ mov %r8, -40(%rdi)
+ mov %r9, -32(%rdi)
+ mov %r10, -24(%rdi)
+ mov %r11, -16(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_32bytes):
+ mov -32(%rsi), %r9
+ mov -24(%rsi), %r10
+ mov -16(%rsi), %r11
+ mov -8(%rsi), %rdx
+ mov %r9, -32(%rdi)
+ mov %r10, -24(%rdi)
+ mov %r11, -16(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_24bytes):
+ mov -24(%rsi), %r10
+ mov -16(%rsi), %r11
+ mov -8(%rsi), %rdx
+ mov %r10, -24(%rdi)
+ mov %r11, -16(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_16bytes):
+ mov -16(%rsi), %r11
+ mov -8(%rsi), %rdx
+ mov %r11, -16(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_8bytes):
+ mov -8(%rsi), %rdx
+ mov %rdx, -8(%rdi)
+L(write_0bytes):
+ ret
+
+ ALIGN (4)
+L(write_73bytes):
+ movdqu -73(%rsi), %xmm0
+ movdqu -57(%rsi), %xmm1
+ mov -41(%rsi), %rcx
+ mov -33(%rsi), %r9
+ mov -25(%rsi), %r10
+ mov -17(%rsi), %r11
+ mov -9(%rsi), %r8
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -73(%rdi)
+ movdqu %xmm1, -57(%rdi)
+ mov %rcx, -41(%rdi)
+ mov %r9, -33(%rdi)
+ mov %r10, -25(%rdi)
+ mov %r11, -17(%rdi)
+ mov %r8, -9(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_65bytes):
+ movdqu -65(%rsi), %xmm0
+ movdqu -49(%rsi), %xmm1
+ mov -33(%rsi), %r9
+ mov -25(%rsi), %r10
+ mov -17(%rsi), %r11
+ mov -9(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -65(%rdi)
+ movdqu %xmm1, -49(%rdi)
+ mov %r9, -33(%rdi)
+ mov %r10, -25(%rdi)
+ mov %r11, -17(%rdi)
+ mov %rcx, -9(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_57bytes):
+ movdqu -57(%rsi), %xmm0
+ mov -41(%rsi), %r8
+ mov -33(%rsi), %r9
+ mov -25(%rsi), %r10
+ mov -17(%rsi), %r11
+ mov -9(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -57(%rdi)
+ mov %r8, -41(%rdi)
+ mov %r9, -33(%rdi)
+ mov %r10, -25(%rdi)
+ mov %r11, -17(%rdi)
+ mov %rcx, -9(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_49bytes):
+ movdqu -49(%rsi), %xmm0
+ mov -33(%rsi), %r9
+ mov -25(%rsi), %r10
+ mov -17(%rsi), %r11
+ mov -9(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -49(%rdi)
+ mov %r9, -33(%rdi)
+ mov %r10, -25(%rdi)
+ mov %r11, -17(%rdi)
+ mov %rcx, -9(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_41bytes):
+ mov -41(%rsi), %r8
+ mov -33(%rsi), %r9
+ mov -25(%rsi), %r10
+ mov -17(%rsi), %r11
+ mov -9(%rsi), %rcx
+ mov -1(%rsi), %dl
+ mov %r8, -41(%rdi)
+ mov %r9, -33(%rdi)
+ mov %r10, -25(%rdi)
+ mov %r11, -17(%rdi)
+ mov %rcx, -9(%rdi)
+ mov %dl, -1(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_33bytes):
+ mov -33(%rsi), %r9
+ mov -25(%rsi), %r10
+ mov -17(%rsi), %r11
+ mov -9(%rsi), %rcx
+ mov -1(%rsi), %dl
+ mov %r9, -33(%rdi)
+ mov %r10, -25(%rdi)
+ mov %r11, -17(%rdi)
+ mov %rcx, -9(%rdi)
+ mov %dl, -1(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_25bytes):
+ mov -25(%rsi), %r10
+ mov -17(%rsi), %r11
+ mov -9(%rsi), %rcx
+ mov -1(%rsi), %dl
+ mov %r10, -25(%rdi)
+ mov %r11, -17(%rdi)
+ mov %rcx, -9(%rdi)
+ mov %dl, -1(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_17bytes):
+ mov -17(%rsi), %r11
+ mov -9(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r11, -17(%rdi)
+ mov %rcx, -9(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_9bytes):
+ mov -9(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %rcx, -9(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_1bytes):
+ mov -1(%rsi), %dl
+ mov %dl, -1(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_74bytes):
+ movdqu -74(%rsi), %xmm0
+ movdqu -58(%rsi), %xmm1
+ mov -42(%rsi), %r8
+ mov -34(%rsi), %r9
+ mov -26(%rsi), %r10
+ mov -18(%rsi), %r11
+ mov -10(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -74(%rdi)
+ movdqu %xmm1, -58(%rdi)
+ mov %r8, -42(%rdi)
+ mov %r9, -34(%rdi)
+ mov %r10, -26(%rdi)
+ mov %r11, -18(%rdi)
+ mov %rcx, -10(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_66bytes):
+ movdqu -66(%rsi), %xmm0
+ movdqu -50(%rsi), %xmm1
+ mov -42(%rsi), %r8
+ mov -34(%rsi), %r9
+ mov -26(%rsi), %r10
+ mov -18(%rsi), %r11
+ mov -10(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -66(%rdi)
+ movdqu %xmm1, -50(%rdi)
+ mov %r8, -42(%rdi)
+ mov %r9, -34(%rdi)
+ mov %r10, -26(%rdi)
+ mov %r11, -18(%rdi)
+ mov %rcx, -10(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_58bytes):
+ movdqu -58(%rsi), %xmm1
+ mov -42(%rsi), %r8
+ mov -34(%rsi), %r9
+ mov -26(%rsi), %r10
+ mov -18(%rsi), %r11
+ mov -10(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm1, -58(%rdi)
+ mov %r8, -42(%rdi)
+ mov %r9, -34(%rdi)
+ mov %r10, -26(%rdi)
+ mov %r11, -18(%rdi)
+ mov %rcx, -10(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_50bytes):
+ movdqu -50(%rsi), %xmm0
+ mov -34(%rsi), %r9
+ mov -26(%rsi), %r10
+ mov -18(%rsi), %r11
+ mov -10(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -50(%rdi)
+ mov %r9, -34(%rdi)
+ mov %r10, -26(%rdi)
+ mov %r11, -18(%rdi)
+ mov %rcx, -10(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_42bytes):
+ mov -42(%rsi), %r8
+ mov -34(%rsi), %r9
+ mov -26(%rsi), %r10
+ mov -18(%rsi), %r11
+ mov -10(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r8, -42(%rdi)
+ mov %r9, -34(%rdi)
+ mov %r10, -26(%rdi)
+ mov %r11, -18(%rdi)
+ mov %rcx, -10(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_34bytes):
+ mov -34(%rsi), %r9
+ mov -26(%rsi), %r10
+ mov -18(%rsi), %r11
+ mov -10(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r9, -34(%rdi)
+ mov %r10, -26(%rdi)
+ mov %r11, -18(%rdi)
+ mov %rcx, -10(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_26bytes):
+ mov -26(%rsi), %r10
+ mov -18(%rsi), %r11
+ mov -10(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r10, -26(%rdi)
+ mov %r11, -18(%rdi)
+ mov %rcx, -10(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_18bytes):
+ mov -18(%rsi), %r11
+ mov -10(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r11, -18(%rdi)
+ mov %rcx, -10(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_10bytes):
+ mov -10(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %rcx, -10(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_2bytes):
+ mov -2(%rsi), %dx
+ mov %dx, -2(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_75bytes):
+ movdqu -75(%rsi), %xmm0
+ movdqu -59(%rsi), %xmm1
+ mov -43(%rsi), %r8
+ mov -35(%rsi), %r9
+ mov -27(%rsi), %r10
+ mov -19(%rsi), %r11
+ mov -11(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -75(%rdi)
+ movdqu %xmm1, -59(%rdi)
+ mov %r8, -43(%rdi)
+ mov %r9, -35(%rdi)
+ mov %r10, -27(%rdi)
+ mov %r11, -19(%rdi)
+ mov %rcx, -11(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_67bytes):
+ movdqu -67(%rsi), %xmm0
+ movdqu -59(%rsi), %xmm1
+ mov -43(%rsi), %r8
+ mov -35(%rsi), %r9
+ mov -27(%rsi), %r10
+ mov -19(%rsi), %r11
+ mov -11(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -67(%rdi)
+ movdqu %xmm1, -59(%rdi)
+ mov %r8, -43(%rdi)
+ mov %r9, -35(%rdi)
+ mov %r10, -27(%rdi)
+ mov %r11, -19(%rdi)
+ mov %rcx, -11(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_59bytes):
+ movdqu -59(%rsi), %xmm0
+ mov -43(%rsi), %r8
+ mov -35(%rsi), %r9
+ mov -27(%rsi), %r10
+ mov -19(%rsi), %r11
+ mov -11(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -59(%rdi)
+ mov %r8, -43(%rdi)
+ mov %r9, -35(%rdi)
+ mov %r10, -27(%rdi)
+ mov %r11, -19(%rdi)
+ mov %rcx, -11(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_51bytes):
+ movdqu -51(%rsi), %xmm0
+ mov -35(%rsi), %r9
+ mov -27(%rsi), %r10
+ mov -19(%rsi), %r11
+ mov -11(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -51(%rdi)
+ mov %r9, -35(%rdi)
+ mov %r10, -27(%rdi)
+ mov %r11, -19(%rdi)
+ mov %rcx, -11(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_43bytes):
+ mov -43(%rsi), %r8
+ mov -35(%rsi), %r9
+ mov -27(%rsi), %r10
+ mov -19(%rsi), %r11
+ mov -11(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r8, -43(%rdi)
+ mov %r9, -35(%rdi)
+ mov %r10, -27(%rdi)
+ mov %r11, -19(%rdi)
+ mov %rcx, -11(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_35bytes):
+ mov -35(%rsi), %r9
+ mov -27(%rsi), %r10
+ mov -19(%rsi), %r11
+ mov -11(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r9, -35(%rdi)
+ mov %r10, -27(%rdi)
+ mov %r11, -19(%rdi)
+ mov %rcx, -11(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_27bytes):
+ mov -27(%rsi), %r10
+ mov -19(%rsi), %r11
+ mov -11(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r10, -27(%rdi)
+ mov %r11, -19(%rdi)
+ mov %rcx, -11(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_19bytes):
+ mov -19(%rsi), %r11
+ mov -11(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r11, -19(%rdi)
+ mov %rcx, -11(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_11bytes):
+ mov -11(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %rcx, -11(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_3bytes):
+ mov -3(%rsi), %dx
+ mov -2(%rsi), %cx
+ mov %dx, -3(%rdi)
+ mov %cx, -2(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_76bytes):
+ movdqu -76(%rsi), %xmm0
+ movdqu -60(%rsi), %xmm1
+ mov -44(%rsi), %r8
+ mov -36(%rsi), %r9
+ mov -28(%rsi), %r10
+ mov -20(%rsi), %r11
+ mov -12(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -76(%rdi)
+ movdqu %xmm1, -60(%rdi)
+ mov %r8, -44(%rdi)
+ mov %r9, -36(%rdi)
+ mov %r10, -28(%rdi)
+ mov %r11, -20(%rdi)
+ mov %rcx, -12(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_68bytes):
+ movdqu -68(%rsi), %xmm0
+ movdqu -52(%rsi), %xmm1
+ mov -36(%rsi), %r9
+ mov -28(%rsi), %r10
+ mov -20(%rsi), %r11
+ mov -12(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -68(%rdi)
+ movdqu %xmm1, -52(%rdi)
+ mov %r9, -36(%rdi)
+ mov %r10, -28(%rdi)
+ mov %r11, -20(%rdi)
+ mov %rcx, -12(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_60bytes):
+ movdqu -60(%rsi), %xmm0
+ mov -44(%rsi), %r8
+ mov -36(%rsi), %r9
+ mov -28(%rsi), %r10
+ mov -20(%rsi), %r11
+ mov -12(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -60(%rdi)
+ mov %r8, -44(%rdi)
+ mov %r9, -36(%rdi)
+ mov %r10, -28(%rdi)
+ mov %r11, -20(%rdi)
+ mov %rcx, -12(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_52bytes):
+ movdqu -52(%rsi), %xmm0
+ mov -36(%rsi), %r9
+ mov -28(%rsi), %r10
+ mov -20(%rsi), %r11
+ mov -12(%rsi), %rcx
+ mov -4(%rsi), %edx
+ movdqu %xmm0, -52(%rdi)
+ mov %r9, -36(%rdi)
+ mov %r10, -28(%rdi)
+ mov %r11, -20(%rdi)
+ mov %rcx, -12(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_44bytes):
+ mov -44(%rsi), %r8
+ mov -36(%rsi), %r9
+ mov -28(%rsi), %r10
+ mov -20(%rsi), %r11
+ mov -12(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r8, -44(%rdi)
+ mov %r9, -36(%rdi)
+ mov %r10, -28(%rdi)
+ mov %r11, -20(%rdi)
+ mov %rcx, -12(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_36bytes):
+ mov -36(%rsi), %r9
+ mov -28(%rsi), %r10
+ mov -20(%rsi), %r11
+ mov -12(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r9, -36(%rdi)
+ mov %r10, -28(%rdi)
+ mov %r11, -20(%rdi)
+ mov %rcx, -12(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_28bytes):
+ mov -28(%rsi), %r10
+ mov -20(%rsi), %r11
+ mov -12(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r10, -28(%rdi)
+ mov %r11, -20(%rdi)
+ mov %rcx, -12(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_20bytes):
+ mov -20(%rsi), %r11
+ mov -12(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %r11, -20(%rdi)
+ mov %rcx, -12(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_12bytes):
+ mov -12(%rsi), %rcx
+ mov -4(%rsi), %edx
+ mov %rcx, -12(%rdi)
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_4bytes):
+ mov -4(%rsi), %edx
+ mov %edx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_77bytes):
+ movdqu -77(%rsi), %xmm0
+ movdqu -61(%rsi), %xmm1
+ mov -45(%rsi), %r8
+ mov -37(%rsi), %r9
+ mov -29(%rsi), %r10
+ mov -21(%rsi), %r11
+ mov -13(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -77(%rdi)
+ movdqu %xmm1, -61(%rdi)
+ mov %r8, -45(%rdi)
+ mov %r9, -37(%rdi)
+ mov %r10, -29(%rdi)
+ mov %r11, -21(%rdi)
+ mov %rcx, -13(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_69bytes):
+ movdqu -69(%rsi), %xmm0
+ movdqu -53(%rsi), %xmm1
+ mov -37(%rsi), %r9
+ mov -29(%rsi), %r10
+ mov -21(%rsi), %r11
+ mov -13(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -69(%rdi)
+ movdqu %xmm1, -53(%rdi)
+ mov %r9, -37(%rdi)
+ mov %r10, -29(%rdi)
+ mov %r11, -21(%rdi)
+ mov %rcx, -13(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_61bytes):
+ movdqu -61(%rsi), %xmm0
+ mov -45(%rsi), %r8
+ mov -37(%rsi), %r9
+ mov -29(%rsi), %r10
+ mov -21(%rsi), %r11
+ mov -13(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -61(%rdi)
+ mov %r8, -45(%rdi)
+ mov %r9, -37(%rdi)
+ mov %r10, -29(%rdi)
+ mov %r11, -21(%rdi)
+ mov %rcx, -13(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_53bytes):
+ movdqu -53(%rsi), %xmm0
+ mov -45(%rsi), %r8
+ mov -37(%rsi), %r9
+ mov -29(%rsi), %r10
+ mov -21(%rsi), %r11
+ mov -13(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -53(%rdi)
+ mov %r9, -37(%rdi)
+ mov %r10, -29(%rdi)
+ mov %r11, -21(%rdi)
+ mov %rcx, -13(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_45bytes):
+ mov -45(%rsi), %r8
+ mov -37(%rsi), %r9
+ mov -29(%rsi), %r10
+ mov -21(%rsi), %r11
+ mov -13(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %r8, -45(%rdi)
+ mov %r9, -37(%rdi)
+ mov %r10, -29(%rdi)
+ mov %r11, -21(%rdi)
+ mov %rcx, -13(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_37bytes):
+ mov -37(%rsi), %r9
+ mov -29(%rsi), %r10
+ mov -21(%rsi), %r11
+ mov -13(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %r9, -37(%rdi)
+ mov %r10, -29(%rdi)
+ mov %r11, -21(%rdi)
+ mov %rcx, -13(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_29bytes):
+ mov -29(%rsi), %r10
+ mov -21(%rsi), %r11
+ mov -13(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %r10, -29(%rdi)
+ mov %r11, -21(%rdi)
+ mov %rcx, -13(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_21bytes):
+ mov -21(%rsi), %r11
+ mov -13(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %r11, -21(%rdi)
+ mov %rcx, -13(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_13bytes):
+ mov -13(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %rcx, -13(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_5bytes):
+ mov -5(%rsi), %edx
+ mov -4(%rsi), %ecx
+ mov %edx, -5(%rdi)
+ mov %ecx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_78bytes):
+ movdqu -78(%rsi), %xmm0
+ movdqu -62(%rsi), %xmm1
+ mov -46(%rsi), %r8
+ mov -38(%rsi), %r9
+ mov -30(%rsi), %r10
+ mov -22(%rsi), %r11
+ mov -14(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -78(%rdi)
+ movdqu %xmm1, -62(%rdi)
+ mov %r8, -46(%rdi)
+ mov %r9, -38(%rdi)
+ mov %r10, -30(%rdi)
+ mov %r11, -22(%rdi)
+ mov %rcx, -14(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_70bytes):
+ movdqu -70(%rsi), %xmm0
+ movdqu -54(%rsi), %xmm1
+ mov -38(%rsi), %r9
+ mov -30(%rsi), %r10
+ mov -22(%rsi), %r11
+ mov -14(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -70(%rdi)
+ movdqu %xmm1, -54(%rdi)
+ mov %r9, -38(%rdi)
+ mov %r10, -30(%rdi)
+ mov %r11, -22(%rdi)
+ mov %rcx, -14(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_62bytes):
+ movdqu -62(%rsi), %xmm0
+ mov -46(%rsi), %r8
+ mov -38(%rsi), %r9
+ mov -30(%rsi), %r10
+ mov -22(%rsi), %r11
+ mov -14(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -62(%rdi)
+ mov %r8, -46(%rdi)
+ mov %r9, -38(%rdi)
+ mov %r10, -30(%rdi)
+ mov %r11, -22(%rdi)
+ mov %rcx, -14(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_54bytes):
+ movdqu -54(%rsi), %xmm0
+ mov -38(%rsi), %r9
+ mov -30(%rsi), %r10
+ mov -22(%rsi), %r11
+ mov -14(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -54(%rdi)
+ mov %r9, -38(%rdi)
+ mov %r10, -30(%rdi)
+ mov %r11, -22(%rdi)
+ mov %rcx, -14(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_46bytes):
+ mov -46(%rsi), %r8
+ mov -38(%rsi), %r9
+ mov -30(%rsi), %r10
+ mov -22(%rsi), %r11
+ mov -14(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %r8, -46(%rdi)
+ mov %r9, -38(%rdi)
+ mov %r10, -30(%rdi)
+ mov %r11, -22(%rdi)
+ mov %rcx, -14(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_38bytes):
+ mov -38(%rsi), %r9
+ mov -30(%rsi), %r10
+ mov -22(%rsi), %r11
+ mov -14(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %r9, -38(%rdi)
+ mov %r10, -30(%rdi)
+ mov %r11, -22(%rdi)
+ mov %rcx, -14(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_30bytes):
+ mov -30(%rsi), %r10
+ mov -22(%rsi), %r11
+ mov -14(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %r10, -30(%rdi)
+ mov %r11, -22(%rdi)
+ mov %rcx, -14(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_22bytes):
+ mov -22(%rsi), %r11
+ mov -14(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %r11, -22(%rdi)
+ mov %rcx, -14(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_14bytes):
+ mov -14(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %rcx, -14(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_6bytes):
+ mov -6(%rsi), %edx
+ mov -4(%rsi), %ecx
+ mov %edx, -6(%rdi)
+ mov %ecx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_79bytes):
+ movdqu -79(%rsi), %xmm0
+ movdqu -63(%rsi), %xmm1
+ mov -47(%rsi), %r8
+ mov -39(%rsi), %r9
+ mov -31(%rsi), %r10
+ mov -23(%rsi), %r11
+ mov -15(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -79(%rdi)
+ movdqu %xmm1, -63(%rdi)
+ mov %r8, -47(%rdi)
+ mov %r9, -39(%rdi)
+ mov %r10, -31(%rdi)
+ mov %r11, -23(%rdi)
+ mov %rcx, -15(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_71bytes):
+ movdqu -71(%rsi), %xmm0
+ movdqu -55(%rsi), %xmm1
+ mov -39(%rsi), %r9
+ mov -31(%rsi), %r10
+ mov -23(%rsi), %r11
+ mov -15(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -71(%rdi)
+ movdqu %xmm1, -55(%rdi)
+ mov %r9, -39(%rdi)
+ mov %r10, -31(%rdi)
+ mov %r11, -23(%rdi)
+ mov %rcx, -15(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_63bytes):
+ movdqu -63(%rsi), %xmm0
+ mov -47(%rsi), %r8
+ mov -39(%rsi), %r9
+ mov -31(%rsi), %r10
+ mov -23(%rsi), %r11
+ mov -15(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -63(%rdi)
+ mov %r8, -47(%rdi)
+ mov %r9, -39(%rdi)
+ mov %r10, -31(%rdi)
+ mov %r11, -23(%rdi)
+ mov %rcx, -15(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_55bytes):
+ movdqu -55(%rsi), %xmm0
+ mov -39(%rsi), %r9
+ mov -31(%rsi), %r10
+ mov -23(%rsi), %r11
+ mov -15(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ movdqu %xmm0, -55(%rdi)
+ mov %r9, -39(%rdi)
+ mov %r10, -31(%rdi)
+ mov %r11, -23(%rdi)
+ mov %rcx, -15(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_47bytes):
+ mov -47(%rsi), %r8
+ mov -39(%rsi), %r9
+ mov -31(%rsi), %r10
+ mov -23(%rsi), %r11
+ mov -15(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %r8, -47(%rdi)
+ mov %r9, -39(%rdi)
+ mov %r10, -31(%rdi)
+ mov %r11, -23(%rdi)
+ mov %rcx, -15(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_39bytes):
+ mov -39(%rsi), %r9
+ mov -31(%rsi), %r10
+ mov -23(%rsi), %r11
+ mov -15(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %r9, -39(%rdi)
+ mov %r10, -31(%rdi)
+ mov %r11, -23(%rdi)
+ mov %rcx, -15(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_31bytes):
+ mov -31(%rsi), %r10
+ mov -23(%rsi), %r11
+ mov -15(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %r10, -31(%rdi)
+ mov %r11, -23(%rdi)
+ mov %rcx, -15(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_23bytes):
+ mov -23(%rsi), %r11
+ mov -15(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %r11, -23(%rdi)
+ mov %rcx, -15(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_15bytes):
+ mov -15(%rsi), %rcx
+ mov -8(%rsi), %rdx
+ mov %rcx, -15(%rdi)
+ mov %rdx, -8(%rdi)
+ ret
+
+ ALIGN (4)
+L(write_7bytes):
+ mov -7(%rsi), %edx
+ mov -4(%rsi), %ecx
+ mov %edx, -7(%rdi)
+ mov %ecx, -4(%rdi)
+ ret
+
+ ALIGN (4)
+L(large_page_fwd):
+ movdqu (%rsi), %xmm1
+ lea 16(%rsi), %rsi
+ movdqu %xmm0, (%r8)
+ movntdq %xmm1, (%rdi)
+ lea 16(%rdi), %rdi
+ lea -0x90(%rdx), %rdx
+#ifdef USE_AS_MEMMOVE
+ mov %rsi, %r9
+ sub %rdi, %r9
+ cmp %rdx, %r9
+ jae L(memmove_is_memcpy_fwd)
+ shl $2, %rcx
+ cmp %rcx, %rdx
+ jb L(ll_cache_copy_fwd_start)
+L(memmove_is_memcpy_fwd):
+#endif
+L(large_page_loop):
+ movdqu (%rsi), %xmm0
+ movdqu 0x10(%rsi), %xmm1
+ movdqu 0x20(%rsi), %xmm2
+ movdqu 0x30(%rsi), %xmm3
+ movdqu 0x40(%rsi), %xmm4
+ movdqu 0x50(%rsi), %xmm5
+ movdqu 0x60(%rsi), %xmm6
+ movdqu 0x70(%rsi), %xmm7
+ lea 0x80(%rsi), %rsi
+
+ sub $0x80, %rdx
+ movntdq %xmm0, (%rdi)
+ movntdq %xmm1, 0x10(%rdi)
+ movntdq %xmm2, 0x20(%rdi)
+ movntdq %xmm3, 0x30(%rdi)
+ movntdq %xmm4, 0x40(%rdi)
+ movntdq %xmm5, 0x50(%rdi)
+ movntdq %xmm6, 0x60(%rdi)
+ movntdq %xmm7, 0x70(%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(large_page_loop)
+ cmp $-0x40, %rdx
+ lea 0x80(%rdx), %rdx
+ jl L(large_page_less_64bytes)
+
+ movdqu (%rsi), %xmm0
+ movdqu 0x10(%rsi), %xmm1
+ movdqu 0x20(%rsi), %xmm2
+ movdqu 0x30(%rsi), %xmm3
+ lea 0x40(%rsi), %rsi
+
+ movntdq %xmm0, (%rdi)
+ movntdq %xmm1, 0x10(%rdi)
+ movntdq %xmm2, 0x20(%rdi)
+ movntdq %xmm3, 0x30(%rdi)
+ lea 0x40(%rdi), %rdi
+ sub $0x40, %rdx
+L(large_page_less_64bytes):
+ add %rdx, %rsi
+ add %rdx, %rdi
+ sfence
+ BRANCH_TO_JMPTBL_ENTRY (L(table_less_80bytes), %rdx, 4)
+
+#ifdef USE_AS_MEMMOVE
+ ALIGN (4)
+L(ll_cache_copy_fwd_start):
+ prefetcht0 0x1c0(%rsi)
+ prefetcht0 0x200(%rsi)
+ movdqu (%rsi), %xmm0
+ movdqu 0x10(%rsi), %xmm1
+ movdqu 0x20(%rsi), %xmm2
+ movdqu 0x30(%rsi), %xmm3
+ movdqu 0x40(%rsi), %xmm4
+ movdqu 0x50(%rsi), %xmm5
+ movdqu 0x60(%rsi), %xmm6
+ movdqu 0x70(%rsi), %xmm7
+ lea 0x80(%rsi), %rsi
+
+ sub $0x80, %rdx
+ movaps %xmm0, (%rdi)
+ movaps %xmm1, 0x10(%rdi)
+ movaps %xmm2, 0x20(%rdi)
+ movaps %xmm3, 0x30(%rdi)
+ movaps %xmm4, 0x40(%rdi)
+ movaps %xmm5, 0x50(%rdi)
+ movaps %xmm6, 0x60(%rdi)
+ movaps %xmm7, 0x70(%rdi)
+ lea 0x80(%rdi), %rdi
+ jae L(ll_cache_copy_fwd_start)
+ cmp $-0x40, %rdx
+ lea 0x80(%rdx), %rdx
+ jl L(large_page_ll_less_fwd_64bytes)
+
+ movdqu (%rsi), %xmm0
+ movdqu 0x10(%rsi), %xmm1
+ movdqu 0x20(%rsi), %xmm2
+ movdqu 0x30(%rsi), %xmm3
+ lea 0x40(%rsi), %rsi
+
+ movaps %xmm0, (%rdi)
+ movaps %xmm1, 0x10(%rdi)
+ movaps %xmm2, 0x20(%rdi)
+ movaps %xmm3, 0x30(%rdi)
+ lea 0x40(%rdi), %rdi
+ sub $0x40, %rdx
+L(large_page_ll_less_fwd_64bytes):
+ add %rdx, %rsi
+ add %rdx, %rdi
+ BRANCH_TO_JMPTBL_ENTRY (L(table_less_80bytes), %rdx, 4)
+
+#endif
+ ALIGN (4)
+L(large_page_bwd):
+ movdqu -0x10(%rsi), %xmm1
+ lea -16(%rsi), %rsi
+ movdqu %xmm0, (%r8)
+ movdqa %xmm1, -0x10(%rdi)
+ lea -16(%rdi), %rdi
+ lea -0x90(%rdx), %rdx
+#ifdef USE_AS_MEMMOVE
+ mov %rdi, %r9
+ sub %rsi, %r9
+ cmp %rdx, %r9
+ jae L(memmove_is_memcpy_bwd)
+ cmp %rcx, %r9
+ jb L(ll_cache_copy_bwd_start)
+L(memmove_is_memcpy_bwd):
+#endif
+L(large_page_bwd_loop):
+ movdqu -0x10(%rsi), %xmm0
+ movdqu -0x20(%rsi), %xmm1
+ movdqu -0x30(%rsi), %xmm2
+ movdqu -0x40(%rsi), %xmm3
+ movdqu -0x50(%rsi), %xmm4
+ movdqu -0x60(%rsi), %xmm5
+ movdqu -0x70(%rsi), %xmm6
+ movdqu -0x80(%rsi), %xmm7
+ lea -0x80(%rsi), %rsi
+
+ sub $0x80, %rdx
+ movntdq %xmm0, -0x10(%rdi)
+ movntdq %xmm1, -0x20(%rdi)
+ movntdq %xmm2, -0x30(%rdi)
+ movntdq %xmm3, -0x40(%rdi)
+ movntdq %xmm4, -0x50(%rdi)
+ movntdq %xmm5, -0x60(%rdi)
+ movntdq %xmm6, -0x70(%rdi)
+ movntdq %xmm7, -0x80(%rdi)
+ lea -0x80(%rdi), %rdi
+ jae L(large_page_bwd_loop)
+ cmp $-0x40, %rdx
+ lea 0x80(%rdx), %rdx
+ jl L(large_page_less_bwd_64bytes)
+
+ movdqu -0x10(%rsi), %xmm0
+ movdqu -0x20(%rsi), %xmm1
+ movdqu -0x30(%rsi), %xmm2
+ movdqu -0x40(%rsi), %xmm3
+ lea -0x40(%rsi), %rsi
+
+ movntdq %xmm0, -0x10(%rdi)
+ movntdq %xmm1, -0x20(%rdi)
+ movntdq %xmm2, -0x30(%rdi)
+ movntdq %xmm3, -0x40(%rdi)
+ lea -0x40(%rdi), %rdi
+ sub $0x40, %rdx
+L(large_page_less_bwd_64bytes):
+ sfence
+ BRANCH_TO_JMPTBL_ENTRY (L(table_less_80bytes), %rdx, 4)
+
+#ifdef USE_AS_MEMMOVE
+ ALIGN (4)
+L(ll_cache_copy_bwd_start):
+ prefetcht0 -0x1c0(%rsi)
+ prefetcht0 -0x200(%rsi)
+ movdqu -0x10(%rsi), %xmm0
+ movdqu -0x20(%rsi), %xmm1
+ movdqu -0x30(%rsi), %xmm2
+ movdqu -0x40(%rsi), %xmm3
+ movdqu -0x50(%rsi), %xmm4
+ movdqu -0x60(%rsi), %xmm5
+ movdqu -0x70(%rsi), %xmm6
+ movdqu -0x80(%rsi), %xmm7
+ lea -0x80(%rsi), %rsi
+
+ sub $0x80, %rdx
+ movaps %xmm0, -0x10(%rdi)
+ movaps %xmm1, -0x20(%rdi)
+ movaps %xmm2, -0x30(%rdi)
+ movaps %xmm3, -0x40(%rdi)
+ movaps %xmm4, -0x50(%rdi)
+ movaps %xmm5, -0x60(%rdi)
+ movaps %xmm6, -0x70(%rdi)
+ movaps %xmm7, -0x80(%rdi)
+ lea -0x80(%rdi), %rdi
+ jae L(ll_cache_copy_bwd_start)
+ cmp $-0x40, %rdx
+ lea 0x80(%rdx), %rdx
+ jl L(large_page_ll_less_bwd_64bytes)
+
+ movdqu -0x10(%rsi), %xmm0
+ movdqu -0x20(%rsi), %xmm1
+ movdqu -0x30(%rsi), %xmm2
+ movdqu -0x40(%rsi), %xmm3
+ lea -0x40(%rsi), %rsi
+
+ movaps %xmm0, -0x10(%rdi)
+ movaps %xmm1, -0x20(%rdi)
+ movaps %xmm2, -0x30(%rdi)
+ movaps %xmm3, -0x40(%rdi)
+ lea -0x40(%rdi), %rdi
+ sub $0x40, %rdx
+L(large_page_ll_less_bwd_64bytes):
+ BRANCH_TO_JMPTBL_ENTRY (L(table_less_80bytes), %rdx, 4)
+#endif
+
+END (MEMCPY)
+
+ .section .rodata.ssse3,"a",@progbits
+ ALIGN (3)
+L(table_less_80bytes):
+ .int JMPTBL (L(write_0bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_1bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_2bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_3bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_4bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_5bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_6bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_7bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_8bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_9bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_10bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_11bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_12bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_13bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_14bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_15bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_16bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_17bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_18bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_19bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_20bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_21bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_22bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_23bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_24bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_25bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_26bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_27bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_28bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_29bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_30bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_31bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_32bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_33bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_34bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_35bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_36bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_37bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_38bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_39bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_40bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_41bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_42bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_43bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_44bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_45bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_46bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_47bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_48bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_49bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_50bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_51bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_52bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_53bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_54bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_55bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_56bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_57bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_58bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_59bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_60bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_61bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_62bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_63bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_64bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_65bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_66bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_67bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_68bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_69bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_70bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_71bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_72bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_73bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_74bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_75bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_76bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_77bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_78bytes), L(table_less_80bytes))
+ .int JMPTBL (L(write_79bytes), L(table_less_80bytes))
+
+ ALIGN (3)
+L(shl_table):
+ .int JMPTBL (L(shl_0), L(shl_table))
+ .int JMPTBL (L(shl_1), L(shl_table))
+ .int JMPTBL (L(shl_2), L(shl_table))
+ .int JMPTBL (L(shl_3), L(shl_table))
+ .int JMPTBL (L(shl_4), L(shl_table))
+ .int JMPTBL (L(shl_5), L(shl_table))
+ .int JMPTBL (L(shl_6), L(shl_table))
+ .int JMPTBL (L(shl_7), L(shl_table))
+ .int JMPTBL (L(shl_8), L(shl_table))
+ .int JMPTBL (L(shl_9), L(shl_table))
+ .int JMPTBL (L(shl_10), L(shl_table))
+ .int JMPTBL (L(shl_11), L(shl_table))
+ .int JMPTBL (L(shl_12), L(shl_table))
+ .int JMPTBL (L(shl_13), L(shl_table))
+ .int JMPTBL (L(shl_14), L(shl_table))
+ .int JMPTBL (L(shl_15), L(shl_table))
+
+ ALIGN (3)
+L(shl_table_bwd):
+ .int JMPTBL (L(shl_0_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_1_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_2_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_3_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_4_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_5_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_6_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_7_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_8_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_9_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_10_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_11_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_12_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_13_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_14_bwd), L(shl_table_bwd))
+ .int JMPTBL (L(shl_15_bwd), L(shl_table_bwd))
+
+#endif
diff --git a/libc/sysdeps/x86_64/multiarch/memcpy.S b/libc/sysdeps/x86_64/multiarch/memcpy.S
new file mode 100644
index 000000000..8e9fb190d
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/memcpy.S
@@ -0,0 +1,73 @@
+/* Multiple versions of memcpy
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib and for
+ DSO. In static binaries we need memcpy before the initialization
+ happened. */
+#if defined SHARED && !defined NOT_IN_libc
+ .text
+ENTRY(memcpy)
+ .type memcpy, @gnu_indirect_function
+ cmpl $0, KIND_OFFSET+__cpu_features(%rip)
+ jne 1f
+ call __init_cpu_features
+1: leaq __memcpy_sse2(%rip), %rax
+ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
+ jz 2f
+ leaq __memcpy_ssse3(%rip), %rax
+ testl $bit_Fast_Copy_Backward, __cpu_features+FEATURE_OFFSET+index_Fast_Copy_Backward(%rip)
+ jz 2f
+ leaq __memcpy_ssse3_back(%rip), %rax
+2: ret
+END(memcpy)
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __memcpy_sse2, @function; \
+ .p2align 4; \
+ __memcpy_sse2: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __memcpy_sse2, .-__memcpy_sse2
+
+# undef ENTRY_CHK
+# define ENTRY_CHK(name) \
+ .type __memcpy_chk_sse2, @function; \
+ .globl __memcpy_chk_sse2; \
+ .p2align 4; \
+ __memcpy_chk_sse2: cfi_startproc; \
+ CALL_MCOUNT
+# undef END_CHK
+# define END_CHK(name) \
+ cfi_endproc; .size __memcpy_chk_sse2, .-__memcpy_chk_sse2
+
+# undef libc_hidden_builtin_def
+/* It doesn't make sense to send libc-internal memcpy calls through a PLT.
+ The speedup we get from using SSSE3 instruction is likely eaten away
+ by the indirect call in the PLT. */
+# define libc_hidden_builtin_def(name) \
+ .globl __GI_memcpy; __GI_memcpy = __memcpy_sse2
+#endif
+
+#include "../memcpy.S"
diff --git a/libc/sysdeps/x86_64/multiarch/memcpy_chk.S b/libc/sysdeps/x86_64/multiarch/memcpy_chk.S
new file mode 100644
index 000000000..948f61cc5
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/memcpy_chk.S
@@ -0,0 +1,47 @@
+/* Multiple versions of __memcpy_chk
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib and for
+ DSO. There are no multiarch memcpy functions for static binaries.
+ */
+#ifndef NOT_IN_libc
+# ifdef SHARED
+ .text
+ENTRY(__memcpy_chk)
+ .type __memcpy_chk, @gnu_indirect_function
+ cmpl $0, KIND_OFFSET+__cpu_features(%rip)
+ jne 1f
+ call __init_cpu_features
+1: leaq __memcpy_chk_sse2(%rip), %rax
+ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
+ jz 2f
+ leaq __memcpy_chk_ssse3(%rip), %rax
+ testl $bit_Fast_Copy_Backward, __cpu_features+FEATURE_OFFSET+index_Fast_Copy_Backward(%rip)
+ jz 2f
+ leaq __memcpy_chk_ssse3_back(%rip), %rax
+2: ret
+END(__memcpy_chk)
+# else
+# include "../memcpy_chk.S"
+# endif
+#endif
diff --git a/libc/sysdeps/x86_64/multiarch/memmove-ssse3-back.S b/libc/sysdeps/x86_64/multiarch/memmove-ssse3-back.S
new file mode 100644
index 000000000..f9a4e9aff
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/memmove-ssse3-back.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMMOVE
+#define MEMCPY __memmove_ssse3_back
+#define MEMCPY_CHK __memmove_chk_ssse3_back
+#include "memcpy-ssse3-back.S"
diff --git a/libc/sysdeps/x86_64/multiarch/memmove-ssse3.S b/libc/sysdeps/x86_64/multiarch/memmove-ssse3.S
new file mode 100644
index 000000000..295430b1e
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/memmove-ssse3.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMMOVE
+#define MEMCPY __memmove_ssse3
+#define MEMCPY_CHK __memmove_chk_ssse3
+#include "memcpy-ssse3.S"
diff --git a/libc/sysdeps/x86_64/multiarch/memmove.c b/libc/sysdeps/x86_64/multiarch/memmove.c
new file mode 100644
index 000000000..bbe96273b
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/memmove.c
@@ -0,0 +1,24 @@
+#ifndef NOT_IN_libc
+#include "init-arch.h"
+
+#define MEMMOVE __memmove_sse2
+#ifdef SHARED
+# undef libc_hidden_builtin_def
+# define libc_hidden_builtin_def(name) \
+ __hidden_ver1 (__memmove_sse2, __GI_memmove, __memmove_sse2);
+#endif
+#endif
+
+#include "string/memmove.c"
+
+#ifndef NOT_IN_libc
+extern __typeof (__memmove_sse2) __memmove_sse2 attribute_hidden;
+extern __typeof (__memmove_sse2) __memmove_ssse3 attribute_hidden;
+extern __typeof (__memmove_sse2) __memmove_ssse3_back attribute_hidden;
+
+libc_ifunc (memmove,
+ HAS_SSSE3
+ ? (HAS_FAST_COPY_BACKWARD
+ ? __memmove_ssse3_back : __memmove_ssse3)
+ : __memmove_sse2);
+#endif
diff --git a/libc/sysdeps/x86_64/multiarch/memmove_chk.c b/libc/sysdeps/x86_64/multiarch/memmove_chk.c
new file mode 100644
index 000000000..a474f5f5e
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/memmove_chk.c
@@ -0,0 +1,15 @@
+#include "init-arch.h"
+
+#define MEMMOVE_CHK __memmove_chk_sse2
+
+#include "debug/memmove_chk.c"
+
+extern __typeof (__memmove_chk_sse2) __memmove_chk_sse2 attribute_hidden;
+extern __typeof (__memmove_chk_sse2) __memmove_chk_ssse3 attribute_hidden;
+extern __typeof (__memmove_chk_sse2) __memmove_chk_ssse3_back attribute_hidden;
+
+libc_ifunc (__memmove_chk,
+ HAS_SSSE3
+ ? (HAS_FAST_COPY_BACKWARD
+ ? __memmove_chk_ssse3_back : __memmove_chk_ssse3)
+ : __memmove_chk_sse2);
diff --git a/libc/sysdeps/x86_64/multiarch/mempcpy-ssse3-back.S b/libc/sysdeps/x86_64/multiarch/mempcpy-ssse3-back.S
new file mode 100644
index 000000000..82ffacb8f
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/mempcpy-ssse3-back.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMPCPY
+#define MEMCPY __mempcpy_ssse3_back
+#define MEMCPY_CHK __mempcpy_chk_ssse3_back
+#include "memcpy-ssse3-back.S"
diff --git a/libc/sysdeps/x86_64/multiarch/mempcpy-ssse3.S b/libc/sysdeps/x86_64/multiarch/mempcpy-ssse3.S
new file mode 100644
index 000000000..822d98e95
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/mempcpy-ssse3.S
@@ -0,0 +1,4 @@
+#define USE_AS_MEMPCPY
+#define MEMCPY __mempcpy_ssse3
+#define MEMCPY_CHK __mempcpy_chk_ssse3
+#include "memcpy-ssse3.S"
diff --git a/libc/sysdeps/x86_64/multiarch/mempcpy.S b/libc/sysdeps/x86_64/multiarch/mempcpy.S
new file mode 100644
index 000000000..e8152d6d6
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/mempcpy.S
@@ -0,0 +1,75 @@
+/* Multiple versions of mempcpy
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib and for
+ DSO. In static binaries we need mempcpy before the initialization
+ happened. */
+#if defined SHARED && !defined NOT_IN_libc
+ENTRY(__mempcpy)
+ .type __mempcpy, @gnu_indirect_function
+ cmpl $0, KIND_OFFSET+__cpu_features(%rip)
+ jne 1f
+ call __init_cpu_features
+1: leaq __mempcpy_sse2(%rip), %rax
+ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
+ jz 2f
+ leaq __mempcpy_ssse3(%rip), %rax
+ testl $bit_Fast_Copy_Backward, __cpu_features+FEATURE_OFFSET+index_Fast_Copy_Backward(%rip)
+ jz 2f
+ leaq __mempcpy_ssse3_back(%rip), %rax
+2: ret
+END(__mempcpy)
+
+# undef ENTRY
+# define ENTRY(name) \
+ .type __mempcpy_sse2, @function; \
+ .p2align 4; \
+ __mempcpy_sse2: cfi_startproc; \
+ CALL_MCOUNT
+# undef END
+# define END(name) \
+ cfi_endproc; .size __mempcpy_sse2, .-__mempcpy_sse2
+
+# undef ENTRY_CHK
+# define ENTRY_CHK(name) \
+ .type __mempcpy_chk_sse2, @function; \
+ .globl __mempcpy_chk_sse2; \
+ .p2align 4; \
+ __mempcpy_chk_sse2: cfi_startproc; \
+ CALL_MCOUNT
+# undef END_CHK
+# define END_CHK(name) \
+ cfi_endproc; .size __mempcpy_chk_sse2, .-__mempcpy_chk_sse2
+
+# undef libc_hidden_def
+# undef libc_hidden_builtin_def
+/* It doesn't make sense to send libc-internal mempcpy calls through a PLT.
+ The speedup we get from using SSSE3 instruction is likely eaten away
+ by the indirect call in the PLT. */
+# define libc_hidden_def(name) \
+ .globl __GI_mempcpy; __GI_mempcpy = __mempcpy_sse2
+# define libc_hidden_builtin_def(name) \
+ .globl __GI___mempcpy; __GI___mempcpy = __mempcpy_sse2
+#endif
+
+#include "../mempcpy.S"
diff --git a/libc/sysdeps/x86_64/multiarch/mempcpy_chk.S b/libc/sysdeps/x86_64/multiarch/mempcpy_chk.S
new file mode 100644
index 000000000..024c775e9
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/mempcpy_chk.S
@@ -0,0 +1,47 @@
+/* Multiple versions of __mempcpy_chk
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Intel Corporation.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+#include <init-arch.h>
+
+/* Define multiple versions only for the definition in lib and for
+ DSO. There are no multiarch mempcpy functions for static binaries.
+ */
+#ifndef NOT_IN_libc
+# ifdef SHARED
+ .text
+ENTRY(__mempcpy_chk)
+ .type __mempcpy_chk, @gnu_indirect_function
+ cmpl $0, KIND_OFFSET+__cpu_features(%rip)
+ jne 1f
+ call __init_cpu_features
+1: leaq __mempcpy_chk_sse2(%rip), %rax
+ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
+ jz 2f
+ leaq __mempcpy_chk_ssse3(%rip), %rax
+ testl $bit_Fast_Copy_Backward, __cpu_features+FEATURE_OFFSET+index_Fast_Copy_Backward(%rip)
+ jz 2f
+ leaq __mempcpy_chk_ssse3_back(%rip), %rax
+2: ret
+END(__mempcpy_chk)
+# else
+# include "../mempcpy_chk.S"
+# endif
+#endif
diff --git a/libc/sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S b/libc/sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S
new file mode 100644
index 000000000..bc0eb5bab
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/strcasecmp_l-ssse3.S
@@ -0,0 +1,5 @@
+#define USE_SSSE3 1
+#define USE_AS_STRCASECMP_L
+#define STRCMP __strcasecmp_l_ssse3
+#define __strcasecmp __strcasecmp_ssse3
+#include "../strcmp.S"
diff --git a/libc/sysdeps/x86_64/multiarch/strcasecmp_l.S b/libc/sysdeps/x86_64/multiarch/strcasecmp_l.S
new file mode 100644
index 000000000..5456b3a49
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/strcasecmp_l.S
@@ -0,0 +1,6 @@
+#define STRCMP __strcasecmp_l
+#define USE_AS_STRCASECMP_L
+#include "strcmp.S"
+
+weak_alias (__strcasecmp_l, strcasecmp_l)
+libc_hidden_def (strcasecmp_l)
diff --git a/libc/sysdeps/x86_64/multiarch/strcasestr-nonascii.c b/libc/sysdeps/x86_64/multiarch/strcasestr-nonascii.c
new file mode 100644
index 000000000..8e1e6cfdd
--- /dev/null
+++ b/libc/sysdeps/x86_64/multiarch/strcasestr-nonascii.c
@@ -0,0 +1,50 @@
+/* strstr with SSE4.2 intrinsics
+ Copyright (C) 2010 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
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+# include <ctype.h>
+
+
+/* Similar to __m128i_strloadu. Convert to lower case for none-POSIX/C
+ locale. */
+static inline __m128i
+__m128i_strloadu_tolower (const unsigned char *p)
+{
+ union
+ {
+ char b[16];
+ __m128i x;
+ } u;
+
+ for (int i = 0; i < 16; ++i)
+ if (p[i] == 0)
+ {
+ u.b[i] = 0;
+ break;
+ }
+ else
+ u.b[i] = tolower (p[i]);
+
+ return u.x;
+}
+
+
+#define STRCASESTR_NONASCII
+#define USE_AS_STRCASESTR
+#define STRSTR_SSE42 __strcasestr_sse42_nonascii
+#include "strstr.c"
diff --git a/libc/sysdeps/x86_64/multiarch/strcasestr.c b/libc/sysdeps/x86_64/multiarch/strcasestr.c
index 064e3ef4f..d1cfb3b26 100644
--- a/libc/sysdeps/x86_64/multiarch/strcasestr.c
+++ b/libc/sysdeps/x86_64/multiarch/strcasestr.c
@@ -1,3 +1,7 @@
+extern char *__strcasestr_sse42_nonascii (const unsigned char *s1,
+ const unsigned char *s2)
+ attribute_hidden;
+
#define USE_AS_STRCASESTR
#define STRSTR_SSE42 __strcasestr_sse42
#include "strstr.c"
diff --git a/libc/sysdeps/x86_64/multiarch/strcmp-ssse3.S b/libc/sysdeps/x86_64/multiarch/strcmp-ssse3.S
index 98cecb894..43b3f300b 100644
--- a/libc/sysdeps/x86_64/multiarch/strcmp-ssse3.S
+++ b/libc/sysdeps/x86_64/multiarch/strcmp-ssse3.S
@@ -1,3 +1,5 @@
-#define USE_SSSE3 1
-#define STRCMP __strcmp_ssse3
-#include "../strcmp.S"
+#ifndef NOT_IN_libc
+# define USE_SSSE3 1
+# define STRCMP __strcmp_ssse3
+# include "../strcmp.S"
+#endif
diff --git a/libc/sysdeps/x86_64/multiarch/strcmp.S b/libc/sysdeps/x86_64/multiarch/strcmp.S
index 1d939195a..3726dbe4d 100644
--- a/libc/sysdeps/x86_64/multiarch/strcmp.S
+++ b/libc/sysdeps/x86_64/multiarch/strcmp.S
@@ -1,5 +1,5 @@
/* strcmp with SSE4.2
- Copyright (C) 2009 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2010 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -24,7 +24,7 @@
#ifdef USE_AS_STRNCMP
/* Since the counter, %r11, is unsigned, we branch to strcmp_exitz
if the new counter > the old one or is 0. */
-#define UPDATE_STRNCMP_COUNTER \
+# define UPDATE_STRNCMP_COUNTER \
/* calculate left number to compare */ \
lea -16(%rcx, %r11), %r9; \
cmp %r9, %r11; \
@@ -33,23 +33,32 @@
je LABEL(strcmp_exitz_sse4_2); \
mov %r9, %r11
-#define STRCMP_SSE42 __strncmp_sse42
-#define STRCMP_SSSE3 __strncmp_ssse3
-#define STRCMP_SSE2 __strncmp_sse2
-#define __GI_STRCMP __GI_strncmp
+# define STRCMP_SSE42 __strncmp_sse42
+# define STRCMP_SSSE3 __strncmp_ssse3
+# define STRCMP_SSE2 __strncmp_sse2
+# define __GI_STRCMP __GI_strncmp
+#elif defined USE_AS_STRCASECMP_L
+# include "locale-defines.h"
+
+# define UPDATE_STRNCMP_COUNTER
+
+# define STRCMP_SSE42 __strcasecmp_l_sse42
+# define STRCMP_SSSE3 __strcasecmp_l_ssse3
+# define STRCMP_SSE2 __strcasecmp_l_sse2
+# define __GI_STRCMP __GI___strcasecmp_l
#else
-#define UPDATE_STRNCMP_COUNTER
-#ifndef STRCMP
-#define STRCMP strcmp
-#define STRCMP_SSE42 __strcmp_sse42
-#define STRCMP_SSSE3 __strcmp_ssse3
-#define STRCMP_SSE2 __strcmp_sse2
-#define __GI_STRCMP __GI_strcmp
-#endif
+# define UPDATE_STRNCMP_COUNTER
+# ifndef STRCMP
+# define STRCMP strcmp
+# define STRCMP_SSE42 __strcmp_sse42
+# define STRCMP_SSSE3 __strcmp_ssse3
+# define STRCMP_SSE2 __strcmp_sse2
+# define __GI_STRCMP __GI_strcmp
+# endif
#endif
#ifndef LABEL
-#define LABEL(l) L(l)
+# define LABEL(l) L(l)
#endif
/* Define multiple versions only for the definition in libc. Don't
@@ -73,6 +82,25 @@ ENTRY(STRCMP)
2: ret
END(STRCMP)
+# ifdef USE_AS_STRCASECMP_L
+ENTRY(__strcasecmp)
+ .type __strcasecmp, @gnu_indirect_function
+ cmpl $0, __cpu_features+KIND_OFFSET(%rip)
+ jne 1f
+ call __init_cpu_features
+1:
+ leaq __strcasecmp_sse42(%rip), %rax
+ testl $bit_SSE4_2, __cpu_features+CPUID_OFFSET+index_SSE4_2(%rip)
+ jnz 2f
+ leaq __strcasecmp_ssse3(%rip), %rax
+ testl $bit_SSSE3, __cpu_features+CPUID_OFFSET+index_SSSE3(%rip)
+ jnz 2f
+ leaq __strcasecmp_sse2(%rip), %rax
+2: ret
+END(__strcasecmp)
+weak_alias (__strcasecmp, strcasecmp)
+# endif
+
/* We use 0x1a:
_SIDD_SBYTE_OPS
| _SIDD_CMP_EQUAL_EACH
@@ -101,8 +129,18 @@ END(STRCMP)
/* Put all SSE 4.2 functions together. */
.section .text.sse4.2,"ax",@progbits
- .align 16
+ .align 16
.type STRCMP_SSE42, @function
+#ifdef USE_AS_STRCASECMP_L
+ /* 5-byte NOP. */
+ .byte 0x0f,0x1f,0x44,0x00,0x00
+ENTRY (__strcasecmp_sse42)
+ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax
+ movq %fs:(%rax),%rdx
+END (__strcasecmp_sse42)
+ /* FALLTHROUGH to strcasecmp_l. */
+#endif
+
STRCMP_SSE42:
cfi_startproc
CALL_MCOUNT
@@ -110,6 +148,18 @@ STRCMP_SSE42:
/*
* This implementation uses SSE to compare up to 16 bytes at a time.
*/
+#ifdef USE_AS_STRCASECMP_L
+ /* We have to fall back on the C implementation for locales
+ with encodings not matching ASCII for single bytes. */
+# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0
+ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rdx), %rax
+# else
+ movq (%rdx), %rax
+# endif
+ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax)
+ jne __strcasecmp_l_nonascii
+#endif
+
#ifdef USE_AS_STRNCMP
test %rdx, %rdx
je LABEL(strcmp_exitz_sse4_2)
@@ -122,12 +172,52 @@ STRCMP_SSE42:
/* Use 64bit AND here to avoid long NOP padding. */
and $0x3f, %rcx /* rsi alignment in cache line */
and $0x3f, %rax /* rdi alignment in cache line */
+#ifdef USE_AS_STRCASECMP_L
+ .section .rodata.cst16,"aM",@progbits,16
+ .align 16
+.Lbelowupper_sse4:
+ .quad 0x4040404040404040
+ .quad 0x4040404040404040
+.Ltopupper_sse4:
+ .quad 0x5b5b5b5b5b5b5b5b
+ .quad 0x5b5b5b5b5b5b5b5b
+.Ltouppermask_sse4:
+ .quad 0x2020202020202020
+ .quad 0x2020202020202020
+ .previous
+ movdqa .Lbelowupper_sse4(%rip), %xmm4
+# define UCLOW_reg %xmm4
+ movdqa .Ltopupper_sse4(%rip), %xmm5
+# define UCHIGH_reg %xmm5
+ movdqa .Ltouppermask_sse4(%rip), %xmm6
+# define LCQWORD_reg %xmm6
+#endif
cmp $0x30, %ecx
ja LABEL(crosscache_sse4_2)/* rsi: 16-byte load will cross cache line */
cmp $0x30, %eax
ja LABEL(crosscache_sse4_2)/* rdi: 16-byte load will cross cache line */
movdqu (%rdi), %xmm1
movdqu (%rsi), %xmm2
+# ifdef USE_AS_STRCASECMP_L
+# define TOLOWER(reg1, reg2) \
+ movdqa reg1, %xmm7; \
+ movdqa UCHIGH_reg, %xmm8; \
+ movdqa reg2, %xmm9; \
+ movdqa UCHIGH_reg, %xmm10; \
+ pcmpgtb UCLOW_reg, %xmm7; \
+ pcmpgtb reg1, %xmm8; \
+ pcmpgtb UCLOW_reg, %xmm9; \
+ pcmpgtb reg2, %xmm10; \
+ pand %xmm8, %xmm7; \
+ pand %xmm10, %xmm9; \
+ pand LCQWORD_reg, %xmm7; \
+ pand LCQWORD_reg, %xmm9; \
+ por %xmm7, reg1; \
+ por %xmm9, reg2
+ TOLOWER (%xmm1, %xmm2)
+# else
+# define TOLOWER(reg1, reg2)
+# endif
pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */
pcmpeqb %xmm1, %xmm0 /* Any null chars? */
pcmpeqb %xmm2, %xmm1 /* compare first 16 bytes for equality */
@@ -180,7 +270,13 @@ LABEL(ashr_0_sse4_2):
movdqa (%rsi), %xmm1
pxor %xmm0, %xmm0 /* clear %xmm0 for null char check */
pcmpeqb %xmm1, %xmm0 /* Any null chars? */
+#ifndef USE_AS_STRCASECMP_L
pcmpeqb (%rdi), %xmm1 /* compare 16 bytes for equality */
+#else
+ movdqa (%rdi), %xmm2
+ TOLOWER (%xmm1, %xmm2)
+ pcmpeqb %xmm2, %xmm1 /* compare 16 bytes for equality */
+#endif
psubb %xmm0, %xmm1 /* packed sub of comparison results*/
pmovmskb %xmm1, %r9d
shr %cl, %edx /* adjust 0xffff for offset */
@@ -204,7 +300,13 @@ LABEL(ashr_0_sse4_2):
.p2align 4
LABEL(ashr_0_use_sse4_2):
movdqa (%rdi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
lea 16(%rdx), %rdx
jbe LABEL(ashr_0_use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
@@ -213,7 +315,13 @@ LABEL(ashr_0_use_sse4_2):
#endif
movdqa (%rdi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
lea 16(%rdx), %rdx
jbe LABEL(ashr_0_use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
@@ -233,15 +341,19 @@ LABEL(ashr_0_use_sse4_2_exit):
lea -16(%rdx, %rcx), %rcx
movzbl (%rdi, %rcx), %eax
movzbl (%rsi, %rcx), %edx
+# ifdef USE_AS_STRCASECMP_L
+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rcx
+ movl (%rcx,%rax,4), %eax
+ movl (%rcx,%rdx,4), %edx
+# endif
sub %edx, %eax
ret
-
/*
* The following cases will be handled by ashr_1
- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
* n(15) n -15 0(15 +(n-15) - n) ashr_1
*/
.p2align 4
@@ -251,6 +363,7 @@ LABEL(ashr_1_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0 /* Any null chars? */
pslldq $15, %xmm2 /* shift first string to align with second */
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2 /* compare 16 bytes for equality */
psubb %xmm0, %xmm2 /* packed sub of comparison results*/
pmovmskb %xmm2, %r9d
@@ -281,7 +394,13 @@ LABEL(loop_ashr_1_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $1, -16(%rdi, %rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -294,7 +413,13 @@ LABEL(loop_ashr_1_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $1, -16(%rdi, %rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -320,7 +445,7 @@ LABEL(nibble_ashr_1_use_sse4_2):
/*
* The following cases will be handled by ashr_2
- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
* n(14~15) n -14 1(15 +(n-14) - n) ashr_2
*/
.p2align 4
@@ -330,6 +455,7 @@ LABEL(ashr_2_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $14, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -360,7 +486,13 @@ LABEL(loop_ashr_2_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $2, -16(%rdi, %rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -373,7 +505,13 @@ LABEL(loop_ashr_2_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $2, -16(%rdi, %rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -409,6 +547,7 @@ LABEL(ashr_3_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $13, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -439,7 +578,13 @@ LABEL(loop_ashr_3_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $3, -16(%rdi, %rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -452,7 +597,13 @@ LABEL(loop_ashr_3_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $3, -16(%rdi, %rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -488,6 +639,7 @@ LABEL(ashr_4_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $12, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -519,7 +671,13 @@ LABEL(loop_ashr_4_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $4, -16(%rdi, %rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -532,7 +690,13 @@ LABEL(loop_ashr_4_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $4, -16(%rdi, %rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -559,7 +723,7 @@ LABEL(nibble_ashr_4_use_sse4_2):
/*
* The following cases will be handled by ashr_5
* rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
- * n(11~15) n - 11 4(15 +(n-11) - n) ashr_5
+ * n(11~15) n - 11 4(15 +(n-11) - n) ashr_5
*/
.p2align 4
LABEL(ashr_5_sse4_2):
@@ -568,6 +732,7 @@ LABEL(ashr_5_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $11, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -599,7 +764,13 @@ LABEL(loop_ashr_5_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $5, -16(%rdi, %rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -613,7 +784,13 @@ LABEL(loop_ashr_5_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $5, -16(%rdi, %rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -640,7 +817,7 @@ LABEL(nibble_ashr_5_use_sse4_2):
/*
* The following cases will be handled by ashr_6
* rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
- * n(10~15) n - 10 5(15 +(n-10) - n) ashr_6
+ * n(10~15) n - 10 5(15 +(n-10) - n) ashr_6
*/
.p2align 4
LABEL(ashr_6_sse4_2):
@@ -649,6 +826,7 @@ LABEL(ashr_6_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $10, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -680,7 +858,13 @@ LABEL(loop_ashr_6_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $6, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -693,7 +877,13 @@ LABEL(loop_ashr_6_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $6, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -720,7 +910,7 @@ LABEL(nibble_ashr_6_use_sse4_2):
/*
* The following cases will be handled by ashr_7
* rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
- * n(9~15) n - 9 6(15 +(n - 9) - n) ashr_7
+ * n(9~15) n - 9 6(15 +(n - 9) - n) ashr_7
*/
.p2align 4
LABEL(ashr_7_sse4_2):
@@ -729,6 +919,7 @@ LABEL(ashr_7_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $9, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -760,7 +951,13 @@ LABEL(loop_ashr_7_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $7, -16(%rdi, %rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -773,7 +970,13 @@ LABEL(loop_ashr_7_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $7, -16(%rdi, %rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -800,7 +1003,7 @@ LABEL(nibble_ashr_7_use_sse4_2):
/*
* The following cases will be handled by ashr_8
* rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
- * n(8~15) n - 8 7(15 +(n - 8) - n) ashr_8
+ * n(8~15) n - 8 7(15 +(n - 8) - n) ashr_8
*/
.p2align 4
LABEL(ashr_8_sse4_2):
@@ -809,6 +1012,7 @@ LABEL(ashr_8_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $8, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -840,7 +1044,13 @@ LABEL(loop_ashr_8_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $8, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -853,7 +1063,13 @@ LABEL(loop_ashr_8_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $8, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -880,7 +1096,7 @@ LABEL(nibble_ashr_8_use_sse4_2):
/*
* The following cases will be handled by ashr_9
* rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
- * n(7~15) n - 7 8(15 +(n - 7) - n) ashr_9
+ * n(7~15) n - 7 8(15 +(n - 7) - n) ashr_9
*/
.p2align 4
LABEL(ashr_9_sse4_2):
@@ -889,6 +1105,7 @@ LABEL(ashr_9_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $7, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -921,7 +1138,13 @@ LABEL(loop_ashr_9_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $9, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -934,7 +1157,13 @@ LABEL(loop_ashr_9_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $9, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -961,7 +1190,7 @@ LABEL(nibble_ashr_9_use_sse4_2):
/*
* The following cases will be handled by ashr_10
* rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
- * n(6~15) n - 6 9(15 +(n - 6) - n) ashr_10
+ * n(6~15) n - 6 9(15 +(n - 6) - n) ashr_10
*/
.p2align 4
LABEL(ashr_10_sse4_2):
@@ -970,6 +1199,7 @@ LABEL(ashr_10_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $6, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1001,7 +1231,13 @@ LABEL(loop_ashr_10_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $10, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -1014,7 +1250,13 @@ LABEL(loop_ashr_10_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $10, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -1041,7 +1283,7 @@ LABEL(nibble_ashr_10_use_sse4_2):
/*
* The following cases will be handled by ashr_11
* rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
- * n(5~15) n - 5 10(15 +(n - 5) - n) ashr_11
+ * n(5~15) n - 5 10(15 +(n - 5) - n) ashr_11
*/
.p2align 4
LABEL(ashr_11_sse4_2):
@@ -1050,6 +1292,7 @@ LABEL(ashr_11_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $5, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1081,7 +1324,13 @@ LABEL(loop_ashr_11_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $11, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -1094,7 +1343,13 @@ LABEL(loop_ashr_11_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $11, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -1121,7 +1376,7 @@ LABEL(nibble_ashr_11_use_sse4_2):
/*
* The following cases will be handled by ashr_12
* rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
- * n(4~15) n - 4 11(15 +(n - 4) - n) ashr_12
+ * n(4~15) n - 4 11(15 +(n - 4) - n) ashr_12
*/
.p2align 4
LABEL(ashr_12_sse4_2):
@@ -1130,6 +1385,7 @@ LABEL(ashr_12_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $4, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1161,7 +1417,13 @@ LABEL(loop_ashr_12_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $12, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -1174,7 +1436,13 @@ LABEL(loop_ashr_12_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $12, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -1201,7 +1469,7 @@ LABEL(nibble_ashr_12_use_sse4_2):
/*
* The following cases will be handled by ashr_13
* rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
- * n(3~15) n - 3 12(15 +(n - 3) - n) ashr_13
+ * n(3~15) n - 3 12(15 +(n - 3) - n) ashr_13
*/
.p2align 4
LABEL(ashr_13_sse4_2):
@@ -1210,6 +1478,7 @@ LABEL(ashr_13_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $3, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1242,7 +1511,13 @@ LABEL(loop_ashr_13_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $13, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -1255,7 +1530,13 @@ LABEL(loop_ashr_13_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $13, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -1282,7 +1563,7 @@ LABEL(nibble_ashr_13_use_sse4_2):
/*
* The following cases will be handled by ashr_14
* rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
- * n(2~15) n - 2 13(15 +(n - 2) - n) ashr_14
+ * n(2~15) n - 2 13(15 +(n - 2) - n) ashr_14
*/
.p2align 4
LABEL(ashr_14_sse4_2):
@@ -1291,6 +1572,7 @@ LABEL(ashr_14_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $2, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1323,7 +1605,13 @@ LABEL(loop_ashr_14_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $14, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -1336,7 +1624,13 @@ LABEL(loop_ashr_14_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $14, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -1363,7 +1657,7 @@ LABEL(nibble_ashr_14_use_sse4_2):
/*
* The following cases will be handled by ashr_15
* rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
- * n(1~15) n - 1 14(15 +(n - 1) - n) ashr_15
+ * n(1~15) n - 1 14(15 +(n - 1) - n) ashr_15
*/
.p2align 4
LABEL(ashr_15_sse4_2):
@@ -1372,6 +1666,7 @@ LABEL(ashr_15_sse4_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $1, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1406,7 +1701,13 @@ LABEL(loop_ashr_15_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $15, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -1419,7 +1720,13 @@ LABEL(loop_ashr_15_use_sse4_2):
movdqa (%rdi, %rdx), %xmm0
palignr $15, -16(%rdi, %rdx), %xmm0
- pcmpistri $0x1a,(%rsi,%rdx), %xmm0
+#ifndef USE_AS_STRCASECMP_L
+ pcmpistri $0x1a, (%rsi,%rdx), %xmm0
+#else
+ movdqa (%rsi,%rdx), %xmm1
+ TOLOWER (%xmm0, %xmm1)
+ pcmpistri $0x1a, %xmm1, %xmm0
+#endif
jbe LABEL(use_sse4_2_exit)
#ifdef USE_AS_STRNCMP
sub $16, %r11
@@ -1458,6 +1765,12 @@ LABEL(use_sse4_2_exit):
jz LABEL(use_sse4_2_ret_sse4_2)
xchg %eax, %edx
LABEL(use_sse4_2_ret_sse4_2):
+# ifdef USE_AS_STRCASECMP_L
+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rcx
+ movl (%rcx,%rdx,4), %edx
+ movl (%rcx,%rax,4), %eax
+# endif
+
sub %edx, %eax
ret
@@ -1480,6 +1793,12 @@ LABEL(less16bytes_sse4_2):
movzbl (%rsi, %rdx), %ecx
movzbl (%rdi, %rdx), %eax
+# ifdef USE_AS_STRCASECMP_L
+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx
+ movl (%rdx,%rcx,4), %ecx
+ movl (%rdx,%rax,4), %eax
+# endif
+
sub %ecx, %eax
ret
@@ -1488,15 +1807,27 @@ LABEL(strcmp_exitz_sse4_2):
ret
.p2align 4
+ // XXX Same as code above
LABEL(Byte0_sse4_2):
movzx (%rsi), %ecx
movzx (%rdi), %eax
+# ifdef USE_AS_STRCASECMP_L
+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx
+ movl (%rdx,%rcx,4), %ecx
+ movl (%rdx,%rax,4), %eax
+# endif
+
sub %ecx, %eax
ret
cfi_endproc
.size STRCMP_SSE42, .-STRCMP_SSE42
+# undef UCLOW_reg
+# undef UCHIGH_reg
+# undef LCQWORD_reg
+# undef TOLOWER
+
/* Put all SSE 4.2 functions together. */
.section .rodata.sse4.2,"a",@progbits
.p2align 3
@@ -1528,6 +1859,17 @@ LABEL(unaligned_table_sse4_2):
# undef END
# define END(name) \
cfi_endproc; .size STRCMP_SSE2, .-STRCMP_SSE2
+
+# ifdef USE_AS_STRCASECMP_L
+# define ENTRY2(name) \
+ .type __strcasecmp_sse2, @function; \
+ .align 16; \
+ __strcasecmp_sse2: cfi_startproc; \
+ CALL_MCOUNT
+# define END2(name) \
+ cfi_endproc; .size __strcasecmp_sse2, .-__strcasecmp_sse2
+# endif
+
# undef libc_hidden_builtin_def
/* It doesn't make sense to send libc-internal strcmp calls through a PLT.
The speedup we get from using SSE4.2 instruction is likely eaten away
diff --git a/libc/sysdeps/x86_64/multiarch/strstr.c b/libc/sysdeps/x86_64/multiarch/strstr.c
index 76d5ad16d..45d7a550a 100644
--- a/libc/sysdeps/x86_64/multiarch/strstr.c
+++ b/libc/sysdeps/x86_64/multiarch/strstr.c
@@ -1,5 +1,5 @@
/* strstr with SSE4.2 intrinsics
- Copyright (C) 2009 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2010 Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -67,10 +67,10 @@
case ECX CFlag ZFlag SFlag
3 X 1 0 0/1
- 4a 0 1 0 0
- 4b 0 1 0 1
- 4c 0 < X 1 0 0/1
- 5 16 0 1 0
+ 4a 0 1 0 0
+ 4b 0 1 0 1
+ 4c 0 < X 1 0 0/1
+ 5 16 0 1 0
3. An initial ordered-comparison fragment match, we fix up to do
subsequent string comparison
@@ -147,8 +147,7 @@ __m128i_shift_right (__m128i value, int offset)
If EOS occurs within less than 16B before 4KB boundary, we don't
cross to next page. */
-static __m128i
-__attribute__ ((section (".text.sse4.2")))
+static inline __m128i
__m128i_strloadu (const unsigned char * p)
{
int offset = ((size_t) p & (16 - 1));
@@ -164,59 +163,36 @@ __m128i_strloadu (const unsigned char * p)
return _mm_loadu_si128 ((__m128i *) p);
}
-#ifdef USE_AS_STRCASESTR
+#if defined USE_AS_STRCASESTR && !defined STRCASESTR_NONASCII
/* Similar to __m128i_strloadu. Convert to lower case for POSIX/C
locale. */
-
-static __m128i
-__attribute__ ((section (".text.sse4.2")))
-__m128i_strloadu_tolower_posix (const unsigned char * p)
+static inline __m128i
+__m128i_strloadu_tolower (const unsigned char *p, __m128i rangeuc,
+ __m128i u2ldelta)
{
__m128i frag = __m128i_strloadu (p);
- /* Convert frag to lower case for POSIX/C locale. */
- __m128i rangeuc = _mm_set_epi64x (0x0, 0x5a41);
- __m128i u2ldelta = _mm_set1_epi64x (0xe0e0e0e0e0e0e0e0);
- __m128i mask1 = _mm_cmpistrm (rangeuc, frag, 0x44);
- __m128i mask2 = _mm_blendv_epi8 (u2ldelta, frag, mask1);
- mask2 = _mm_sub_epi8 (mask2, u2ldelta);
- return _mm_blendv_epi8 (frag, mask2, mask1);
+#define UCLOW 0x4040404040404040ULL
+#define UCHIGH 0x5b5b5b5b5b5b5b5bULL
+#define LCQWORD 0x2020202020202020ULL
+ /* Compare if 'Z' > bytes. Inverted way to get a mask for byte <= 'Z'. */
+ __m128i r2 = _mm_cmpgt_epi8 (_mm_set1_epi64x (UCHIGH), frag);
+ /* Compare if bytes are > 'A' - 1. */
+ __m128i r1 = _mm_cmpgt_epi8 (frag, _mm_set1_epi64x (UCLOW));
+ /* Mask byte == ff if byte(r2) <= 'Z' and byte(r1) > 'A' - 1. */
+ __m128i mask = _mm_and_si128 (r2, r1);
+ /* Apply lowercase bit 6 mask for above mask bytes == ff. */
+ return _mm_or_si128 (frag, _mm_and_si128 (mask, _mm_set1_epi64x (LCQWORD)));
}
-/* Similar to __m128i_strloadu. Convert to lower case for none-POSIX/C
- locale. */
-
-static __m128i
-__attribute__ ((section (".text.sse4.2")))
-__m128i_strloadu_tolower (const unsigned char * p)
-{
- union
- {
- char b[16];
- __m128i x;
- } u;
-
- for (int i = 0; i < 16; i++)
- if (p[i] == 0)
- {
- u.b[i] = 0;
- break;
- }
- else
- u.b[i] = tolower (p[i]);
-
- return u.x;
-}
#endif
/* Calculate Knuth-Morris-Pratt string searching algorithm (or KMP
algorithm) overlap for a fully populated 16B vector.
Input parameter: 1st 16Byte loaded from the reference string of a
strstr function.
- We don't use KMP algorithm if reference string is less than 16B.
- */
-
+ We don't use KMP algorithm if reference string is less than 16B. */
static int
__inline__ __attribute__ ((__always_inline__,))
KMP16Bovrlap (__m128i s2)
@@ -236,7 +212,7 @@ KMP16Bovrlap (__m128i s2)
return 1;
else if (!k1)
{
- /* There are al least two ditinct char in s2. If byte 0 and 1 are
+ /* There are al least two distinct chars in s2. If byte 0 and 1 are
idential and the distinct value lies farther down, we can deduce
the next byte offset to restart full compare is least no earlier
than byte 3. */
@@ -256,23 +232,30 @@ STRSTR_SSE42 (const unsigned char *s1, const unsigned char *s2)
#define p1 s1
const unsigned char *p2 = s2;
- if (p2[0] == '\0')
+#ifndef STRCASESTR_NONASCII
+ if (__builtin_expect (p2[0] == '\0', 0))
return (char *) p1;
- if (p1[0] == '\0')
+ if (__builtin_expect (p1[0] == '\0', 0))
return NULL;
/* Check if p1 length is 1 byte long. */
- if (p1[1] == '\0')
+ if (__builtin_expect (p1[1] == '\0', 0))
return p2[1] == '\0' && CMPBYTE (p1[0], p2[0]) ? (char *) p1 : NULL;
+#endif
#ifdef USE_AS_STRCASESTR
- __m128i (*strloadu) (const unsigned char *);
-
- if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_NONASCII_CASE) == 0)
- strloadu = __m128i_strloadu_tolower_posix;
- else
- strloadu = __m128i_strloadu_tolower;
+# ifndef STRCASESTR_NONASCII
+ if (__builtin_expect (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_NONASCII_CASE)
+ != 0, 0))
+ return __strcasestr_sse42_nonascii (s1, s2);
+
+ const __m128i rangeuc = _mm_set_epi64x (0x0, 0x5a41);
+ const __m128i u2ldelta = _mm_set1_epi64x (0xe0e0e0e0e0e0e0e0);
+# define strloadu(p) __m128i_strloadu_tolower (p, rangeuc, u2ldelta)
+# else
+# define strloadu __m128i_strloadu_tolower
+# endif
#else
# define strloadu __m128i_strloadu
#endif
diff --git a/libc/sysdeps/x86_64/strcasecmp.S b/libc/sysdeps/x86_64/strcasecmp.S
new file mode 100644
index 000000000..fe49e820f
--- /dev/null
+++ b/libc/sysdeps/x86_64/strcasecmp.S
@@ -0,0 +1 @@
+/* In strcasecmp_l.S. */
diff --git a/libc/sysdeps/x86_64/strcasecmp_l-nonascii.c b/libc/sysdeps/x86_64/strcasecmp_l-nonascii.c
new file mode 100644
index 000000000..7a0a04f34
--- /dev/null
+++ b/libc/sysdeps/x86_64/strcasecmp_l-nonascii.c
@@ -0,0 +1,5 @@
+#include <string.h>
+
+#define __strcasecmp_l __strcasecmp_l_nonascii
+#define USE_IN_EXTENDED_LOCALE_MODEL 1
+#include <string/strcasecmp.c>
diff --git a/libc/sysdeps/x86_64/strcasecmp_l.S b/libc/sysdeps/x86_64/strcasecmp_l.S
new file mode 100644
index 000000000..5456b3a49
--- /dev/null
+++ b/libc/sysdeps/x86_64/strcasecmp_l.S
@@ -0,0 +1,6 @@
+#define STRCMP __strcasecmp_l
+#define USE_AS_STRCASECMP_L
+#include "strcmp.S"
+
+weak_alias (__strcasecmp_l, strcasecmp_l)
+libc_hidden_def (strcasecmp_l)
diff --git a/libc/sysdeps/x86_64/strcmp.S b/libc/sysdeps/x86_64/strcmp.S
index ac3fe1467..d36fef225 100644
--- a/libc/sysdeps/x86_64/strcmp.S
+++ b/libc/sysdeps/x86_64/strcmp.S
@@ -51,6 +51,15 @@
je LABEL(strcmp_exitz); \
mov %r9, %r11
+#elif defined USE_AS_STRCASECMP_L
+# include "locale-defines.h"
+
+/* No support for strcasecmp outside libc so far since it is not needed. */
+# ifdef NOT_IN_lib
+# error "strcasecmp_l not implemented so far"
+# endif
+
+# define UPDATE_STRNCMP_COUNTER
#else
# define UPDATE_STRNCMP_COUNTER
# ifndef STRCMP
@@ -64,6 +73,28 @@
.section .text.ssse3,"ax",@progbits
#endif
+#ifdef USE_AS_STRCASECMP_L
+# ifndef ENTRY2
+# define ENTRY2(name) ENTRY (name)
+# define END2(name) END (name)
+# define NO_NOLOCALE_ALIAS
+# endif
+
+ ENTRY2 (__strcasecmp)
+ movq __libc_tsd_LOCALE@gottpoff(%rip),%rax
+ movq %fs:(%rax),%rdx
+
+ // XXX 5 byte should be before the function
+ /* 5-byte NOP. */
+ .byte 0x0f,0x1f,0x44,0x00,0x00
+END2 (__strcasecmp)
+# ifndef NO_NOLOCALE_ALIAS
+weak_alias (__strcasecmp, strcasecmp)
+libc_hidden_def (__strcasecmp)
+# endif
+ /* FALLTHROUGH to strcasecmp_l. */
+#endif
+
ENTRY (BP_SYM (STRCMP))
#ifdef NOT_IN_libc
/* Simple version since we can't use SSE registers in ld.so. */
@@ -84,6 +115,18 @@ L(neq): movl $1, %eax
ret
END (BP_SYM (STRCMP))
#else /* NOT_IN_libc */
+# ifdef USE_AS_STRCASECMP_L
+ /* We have to fall back on the C implementation for locales
+ with encodings not matching ASCII for single bytes. */
+# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0
+ movq LOCALE_T___LOCALES+LC_CTYPE*8(%rdx), %rax
+# else
+ movq (%rdx), %rax
+# endif
+ testl $0, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%rax)
+ jne __strcasecmp_l_nonascii
+# endif
+
/*
* This implementation uses SSE to compare up to 16 bytes at a time.
*/
@@ -99,6 +142,26 @@ END (BP_SYM (STRCMP))
/* Use 64bit AND here to avoid long NOP padding. */
and $0x3f, %rcx /* rsi alignment in cache line */
and $0x3f, %rax /* rdi alignment in cache line */
+# ifdef USE_AS_STRCASECMP_L
+ .section .rodata.cst16,"aM",@progbits,16
+ .align 16
+.Lbelowupper:
+ .quad 0x4040404040404040
+ .quad 0x4040404040404040
+.Ltopupper:
+ .quad 0x5b5b5b5b5b5b5b5b
+ .quad 0x5b5b5b5b5b5b5b5b
+.Ltouppermask:
+ .quad 0x2020202020202020
+ .quad 0x2020202020202020
+ .previous
+ movdqa .Lbelowupper(%rip), %xmm5
+# define UCLOW_reg %xmm5
+ movdqa .Ltopupper(%rip), %xmm6
+# define UCHIGH_reg %xmm6
+ movdqa .Ltouppermask(%rip), %xmm7
+# define LCQWORD_reg %xmm7
+# endif
cmp $0x30, %ecx
ja LABEL(crosscache) /* rsi: 16-byte load will cross cache line */
cmp $0x30, %eax
@@ -107,6 +170,26 @@ END (BP_SYM (STRCMP))
movlpd (%rsi), %xmm2
movhpd 8(%rdi), %xmm1
movhpd 8(%rsi), %xmm2
+# ifdef USE_AS_STRCASECMP_L
+# define TOLOWER(reg1, reg2) \
+ movdqa reg1, %xmm8; \
+ movdqa UCHIGH_reg, %xmm9; \
+ movdqa reg2, %xmm10; \
+ movdqa UCHIGH_reg, %xmm11; \
+ pcmpgtb UCLOW_reg, %xmm8; \
+ pcmpgtb reg1, %xmm9; \
+ pcmpgtb UCLOW_reg, %xmm10; \
+ pcmpgtb reg2, %xmm11; \
+ pand %xmm9, %xmm8; \
+ pand %xmm11, %xmm10; \
+ pand LCQWORD_reg, %xmm8; \
+ pand LCQWORD_reg, %xmm10; \
+ por %xmm8, reg1; \
+ por %xmm10, reg2
+ TOLOWER (%xmm1, %xmm2)
+# else
+# define TOLOWER(reg1, reg2)
+# endif
pxor %xmm0, %xmm0 /* clear %xmm0 for null char checks */
pcmpeqb %xmm1, %xmm0 /* Any null chars? */
pcmpeqb %xmm2, %xmm1 /* compare first 16 bytes for equality */
@@ -159,7 +242,13 @@ LABEL(ashr_0):
movdqa (%rsi), %xmm1
pxor %xmm0, %xmm0 /* clear %xmm0 for null char check */
pcmpeqb %xmm1, %xmm0 /* Any null chars? */
+# ifndef USE_AS_STRCASECMP_L
pcmpeqb (%rdi), %xmm1 /* compare 16 bytes for equality */
+# else
+ movdqa (%rdi), %xmm2
+ TOLOWER (%xmm1, %xmm2)
+ pcmpeqb %xmm2, %xmm1 /* compare 16 bytes for equality */
+# endif
psubb %xmm0, %xmm1 /* packed sub of comparison results*/
pmovmskb %xmm1, %r9d
shr %cl, %edx /* adjust 0xffff for offset */
@@ -183,6 +272,7 @@ LABEL(ashr_0):
LABEL(loop_ashr_0):
movdqa (%rsi, %rcx), %xmm1
movdqa (%rdi, %rcx), %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -198,6 +288,7 @@ LABEL(loop_ashr_0):
add $16, %rcx
movdqa (%rsi, %rcx), %xmm1
movdqa (%rdi, %rcx), %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -214,7 +305,7 @@ LABEL(loop_ashr_0):
/*
* The following cases will be handled by ashr_1
- * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
+ * rcx(offset of rsi) rax(offset of rdi) relative offset corresponding case
* n(15) n -15 0(15 +(n-15) - n) ashr_1
*/
.p2align 4
@@ -224,6 +315,7 @@ LABEL(ashr_1):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0 /* Any null chars? */
pslldq $15, %xmm2 /* shift first string to align with second */
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2 /* compare 16 bytes for equality */
psubb %xmm0, %xmm2 /* packed sub of comparison results*/
pmovmskb %xmm2, %r9d
@@ -263,6 +355,7 @@ LABEL(gobble_ashr_1):
# else
palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -292,6 +385,7 @@ LABEL(gobble_ashr_1):
# else
palignr $1, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -351,6 +445,7 @@ LABEL(ashr_2):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $14, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -390,6 +485,7 @@ LABEL(gobble_ashr_2):
# else
palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -420,6 +516,7 @@ LABEL(gobble_ashr_2):
# else
palignr $2, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -472,6 +569,7 @@ LABEL(ashr_3):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $13, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -512,6 +610,7 @@ LABEL(gobble_ashr_3):
# else
palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -542,6 +641,7 @@ LABEL(gobble_ashr_3):
# else
palignr $3, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -594,6 +694,7 @@ LABEL(ashr_4):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $12, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -634,6 +735,7 @@ LABEL(gobble_ashr_4):
# else
palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -664,6 +766,7 @@ LABEL(gobble_ashr_4):
# else
palignr $4, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -716,6 +819,7 @@ LABEL(ashr_5):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $11, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -756,6 +860,7 @@ LABEL(gobble_ashr_5):
# else
palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -786,6 +891,7 @@ LABEL(gobble_ashr_5):
# else
palignr $5, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -838,6 +944,7 @@ LABEL(ashr_6):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $10, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -878,6 +985,7 @@ LABEL(gobble_ashr_6):
# else
palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -908,6 +1016,7 @@ LABEL(gobble_ashr_6):
# else
palignr $6, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -960,6 +1069,7 @@ LABEL(ashr_7):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $9, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1000,6 +1110,7 @@ LABEL(gobble_ashr_7):
# else
palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1030,6 +1141,7 @@ LABEL(gobble_ashr_7):
# else
palignr $7, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1082,6 +1194,7 @@ LABEL(ashr_8):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $8, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1122,6 +1235,7 @@ LABEL(gobble_ashr_8):
# else
palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1152,6 +1266,7 @@ LABEL(gobble_ashr_8):
# else
palignr $8, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1204,6 +1319,7 @@ LABEL(ashr_9):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $7, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1244,6 +1360,7 @@ LABEL(gobble_ashr_9):
# else
palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1274,6 +1391,7 @@ LABEL(gobble_ashr_9):
# else
palignr $9, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1326,6 +1444,7 @@ LABEL(ashr_10):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $6, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1366,6 +1485,7 @@ LABEL(gobble_ashr_10):
# else
palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1396,6 +1516,7 @@ LABEL(gobble_ashr_10):
# else
palignr $10, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1448,6 +1569,7 @@ LABEL(ashr_11):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $5, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1488,6 +1610,7 @@ LABEL(gobble_ashr_11):
# else
palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1518,6 +1641,7 @@ LABEL(gobble_ashr_11):
# else
palignr $11, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1570,6 +1694,7 @@ LABEL(ashr_12):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $4, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1610,6 +1735,7 @@ LABEL(gobble_ashr_12):
# else
palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1640,6 +1766,7 @@ LABEL(gobble_ashr_12):
# else
palignr $12, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1692,6 +1819,7 @@ LABEL(ashr_13):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $3, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1732,6 +1860,7 @@ LABEL(gobble_ashr_13):
# else
palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1762,6 +1891,7 @@ LABEL(gobble_ashr_13):
# else
palignr $13, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1814,6 +1944,7 @@ LABEL(ashr_14):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $2, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1854,6 +1985,7 @@ LABEL(gobble_ashr_14):
# else
palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1884,6 +2016,7 @@ LABEL(gobble_ashr_14):
# else
palignr $14, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -1936,6 +2069,7 @@ LABEL(ashr_15):
movdqa (%rsi), %xmm1
pcmpeqb %xmm1, %xmm0
pslldq $1, %xmm2
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm2
psubb %xmm0, %xmm2
pmovmskb %xmm2, %r9d
@@ -1978,6 +2112,7 @@ LABEL(gobble_ashr_15):
# else
palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -2008,6 +2143,7 @@ LABEL(gobble_ashr_15):
# else
palignr $15, %xmm3, %xmm2 /* merge into one 16byte value */
# endif
+ TOLOWER (%xmm1, %xmm2)
pcmpeqb %xmm1, %xmm0
pcmpeqb %xmm2, %xmm1
@@ -2049,6 +2185,7 @@ LABEL(ashr_15_exittail):
.p2align 4
LABEL(aftertail):
+ TOLOWER (%xmm1, %xmm3)
pcmpeqb %xmm3, %xmm1
psubb %xmm0, %xmm1
pmovmskb %xmm1, %edx
@@ -2076,6 +2213,12 @@ LABEL(less16bytes):
movzbl (%rsi, %rdx), %ecx
movzbl (%rdi, %rdx), %eax
+# ifdef USE_AS_STRCASECMP_L
+ leaq _nl_C_LC_CTYPE_tolower+128*4(%rip), %rdx
+ movl (%rdx,%rcx,4), %ecx
+ movl (%rdx,%rax,4), %eax
+# endif
+
sub %ecx, %eax
ret
diff --git a/libc/sysdeps/x86_64/strnlen.S b/libc/sysdeps/x86_64/strnlen.S
new file mode 100644
index 000000000..939782d3f
--- /dev/null
+++ b/libc/sysdeps/x86_64/strnlen.S
@@ -0,0 +1,64 @@
+/* strnlen(str,maxlen) -- determine the length of the string STR up to MAXLEN.
+ Copyright (C) 2010 Free Software Foundation, Inc.
+ Contributed by Ulrich Drepper <drepper@redhat.com>.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <sysdep.h>
+
+
+ .text
+ENTRY(__strnlen)
+ movq %rsi, %rax
+ testq %rsi, %rsi
+ jz 3f
+ pxor %xmm2, %xmm2
+ movq %rdi, %rcx
+ movq %rdi, %r8
+ movq $16, %r9
+ andq $~15, %rdi
+ movdqa %xmm2, %xmm1
+ pcmpeqb (%rdi), %xmm2
+ orl $0xffffffff, %r10d
+ subq %rdi, %rcx
+ shll %cl, %r10d
+ subq %rcx, %r9
+ pmovmskb %xmm2, %edx
+ andl %r10d, %edx
+ jnz 1f
+ subq %r9, %rsi
+ jbe 3f
+
+2: movdqa 16(%rdi), %xmm0
+ leaq 16(%rdi), %rdi
+ pcmpeqb %xmm1, %xmm0
+ pmovmskb %xmm0, %edx
+ testl %edx, %edx
+ jnz 1f
+ subq $16, %rsi
+ jnbe 2b
+3: ret
+
+1: subq %r8, %rdi
+ bsfl %edx, %edx
+ addq %rdi, %rdx
+ cmpq %rdx, %rax
+ cmovnbq %rdx, %rax
+ ret
+END(__strnlen)
+weak_alias (__strnlen, strnlen)
+libc_hidden_def (strnlen)
diff --git a/libc/sysdeps/x86_64/sysdep.h b/libc/sysdeps/x86_64/sysdep.h
index 122270f91..1d35f8fd1 100644
--- a/libc/sysdeps/x86_64/sysdep.h
+++ b/libc/sysdeps/x86_64/sysdep.h
@@ -58,6 +58,9 @@
cfi_endproc; \
ASM_SIZE_DIRECTIVE(name)
+#define ENTRY_CHK(name) ENTRY (name)
+#define END_CHK(name) END (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