From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 01:23:50 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C20C0106566B; Sun, 17 Jul 2011 01:23:50 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 98C178FC18; Sun, 17 Jul 2011 01:23:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6H1NoZi052065; Sun, 17 Jul 2011 01:23:50 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6H1Novg052062; Sun, 17 Jul 2011 01:23:50 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201107170123.p6H1Novg052062@svn.freebsd.org> From: John Baldwin Date: Sun, 17 Jul 2011 01:23:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224120 - in head/sys: conf i386/xen X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 01:23:50 -0000 Author: jhb Date: Sun Jul 17 01:23:50 2011 New Revision: 224120 URL: http://svn.freebsd.org/changeset/base/224120 Log: Don't include mptable_pci.c in Xen kernels. It is only meant for systems that truly have an MPTable. The MPTable code in Xen is really a Xen specific CPU enumerator and probably shouldn't be using the mptable name at all. Modified: head/sys/conf/files.i386 head/sys/i386/xen/mptable.c Modified: head/sys/conf/files.i386 ============================================================================== --- head/sys/conf/files.i386 Sat Jul 16 22:01:18 2011 (r224119) +++ head/sys/conf/files.i386 Sun Jul 17 01:23:50 2011 (r224120) @@ -412,7 +412,7 @@ x86/x86/io_apic.c optional apic x86/x86/local_apic.c optional apic x86/x86/mca.c standard x86/x86/mptable.c optional apic native -x86/x86/mptable_pci.c optional apic pci +x86/x86/mptable_pci.c optional apic native pci x86/x86/msi.c optional apic pci x86/x86/nexus.c standard x86/x86/tsc.c standard Modified: head/sys/i386/xen/mptable.c ============================================================================== --- head/sys/i386/xen/mptable.c Sat Jul 16 22:01:18 2011 (r224119) +++ head/sys/i386/xen/mptable.c Sun Jul 17 01:23:50 2011 (r224120) @@ -28,29 +28,16 @@ __FBSDID("$FreeBSD$"); #include -#include #include #include -#include -#ifdef NEW_PCIB -#include -#endif #include #include #include -#ifdef NEW_PCIB -#include -#include -#endif -#include -#include #include #include #include -#include -#include #include #include @@ -118,20 +105,3 @@ mptable_register(void *dummy __unused) } SYSINIT(mptable_register, SI_SUB_TUNABLES - 1, SI_ORDER_FIRST, mptable_register, NULL); - - - -int -mptable_pci_probe_table(int bus) -{ - - return (0); -} - -int -mptable_pci_route_interrupt(device_t pcib, device_t dev, int pin) -{ - - return (0); -} - From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 03:44:06 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 496DA106564A; Sun, 17 Jul 2011 03:44:06 +0000 (UTC) (envelope-from zack@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1FC318FC0C; Sun, 17 Jul 2011 03:44:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6H3i6HH056417; Sun, 17 Jul 2011 03:44:06 GMT (envelope-from zack@svn.freebsd.org) Received: (from zack@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6H3i5S5056414; Sun, 17 Jul 2011 03:44:05 GMT (envelope-from zack@svn.freebsd.org) Message-Id: <201107170344.p6H3i5S5056414@svn.freebsd.org> From: Zack Kirsch Date: Sun, 17 Jul 2011 03:44:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224121 - head/sys/fs/nfs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 03:44:06 -0000 Author: zack Date: Sun Jul 17 03:44:05 2011 New Revision: 224121 URL: http://svn.freebsd.org/changeset/base/224121 Log: Revert revision 224079 as Rick pointed out that I would be calling VOP_PATHCONF without the vnode lock held. Implicitly approved by: zml (mentor) Modified: head/sys/fs/nfs/nfs_commonport.c head/sys/fs/nfs/nfs_commonsubs.c Modified: head/sys/fs/nfs/nfs_commonport.c ============================================================================== --- head/sys/fs/nfs/nfs_commonport.c Sun Jul 17 01:23:50 2011 (r224120) +++ head/sys/fs/nfs/nfs_commonport.c Sun Jul 17 03:44:05 2011 (r224121) @@ -554,7 +554,7 @@ nfs_supportsnfsv4acls(struct vnode *vp) if (nfsrv_useacl == 0) return (0); - error = nfsvno_pathconf(vp, _PC_ACL_NFS4, &retval, NULL, NULL); + error = VOP_PATHCONF(vp, _PC_ACL_NFS4, &retval); if (error == 0 && retval != 0) return (1); return (0); Modified: head/sys/fs/nfs/nfs_commonsubs.c ============================================================================== --- head/sys/fs/nfs/nfs_commonsubs.c Sun Jul 17 01:23:50 2011 (r224120) +++ head/sys/fs/nfs/nfs_commonsubs.c Sun Jul 17 03:44:05 2011 (r224121) @@ -795,7 +795,6 @@ nfsv4_loadattr(struct nfsrv_descript *nd struct dqblk dqb; uid_t savuid; #endif - register_t chownres; if (compare) { retnotsup = 0; @@ -1038,7 +1037,8 @@ nfsv4_loadattr(struct nfsrv_descript *nd acl_free(naclp); goto nfsmout; } - if (aceerr || nfsrv_compareacl(aclp, naclp)) + if (aceerr || aclp == NULL || + nfsrv_compareacl(aclp, naclp)) *retcmpp = NFSERR_NOTSAME; acl_free(naclp); } else { @@ -1128,12 +1128,8 @@ nfsv4_loadattr(struct nfsrv_descript *nd NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED); if (compare) { if (!(*retcmpp)) { - error = nfsvno_pathconf(vp, - _PC_CHOWN_RESTRICTED, &chownres, - nd->nd_cred, p); - if (*tl != (chownres != 0 ? - newnfs_true : newnfs_false)) - *retcmpp = NFSERR_NOTSAME; + if (*tl != newnfs_true) + *retcmpp = NFSERR_NOTSAME; } } else if (pc != NULL) { pc->pc_chownrestricted = @@ -1987,7 +1983,6 @@ nfsv4_fillattr(struct nfsrv_descript *nd struct dqblk dqb; uid_t savuid; #endif - register_t chownres; /* * First, set the bits that can be filled and get fsinfo. @@ -2167,9 +2162,7 @@ nfsv4_fillattr(struct nfsrv_descript *nd break; case NFSATTRBIT_CHOWNRESTRICTED: NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED); - error = nfsvno_pathconf(vp, _PC_CHOWN_RESTRICTED, - &chownres, nd->nd_cred, p); - *tl = (chownres ? newnfs_true : newnfs_false); + *tl = newnfs_true; retnum += NFSX_UNSIGNED; break; case NFSATTRBIT_FILEHANDLE: From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 04:10:00 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8CB54106564A; Sun, 17 Jul 2011 04:10:00 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7308F8FC0A; Sun, 17 Jul 2011 04:10:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6H4A0Ns057356; Sun, 17 Jul 2011 04:10:00 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6H4A0W4057354; Sun, 17 Jul 2011 04:10:00 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201107170410.p6H4A0W4057354@svn.freebsd.org> From: Doug Barton Date: Sun, 17 Jul 2011 04:10:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224122 - head/usr.sbin/named X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 04:10:00 -0000 Author: dougb Date: Sun Jul 17 04:10:00 2011 New Revision: 224122 URL: http://svn.freebsd.org/changeset/base/224122 Log: Fix the location of the default pid file in named.8 Problem pointed out in the PR PR: conf/155006 Submitted by: Helmut Schneider Modified: head/usr.sbin/named/Makefile Modified: head/usr.sbin/named/Makefile ============================================================================== --- head/usr.sbin/named/Makefile Sun Jul 17 03:44:05 2011 (r224121) +++ head/usr.sbin/named/Makefile Sun Jul 17 04:10:00 2011 (r224122) @@ -57,7 +57,8 @@ LDADD+= ${BIND_LDADD} ${CRYPTO_LDADD} $ MAN= named.8 lwresd.8 named.conf.5 -MANFILTER= sed -e "s@/etc/named\.conf@/etc/namedb/named.conf@g" +MANFILTER= sed -e "s@/etc/named\.conf@/etc/namedb/named.conf@g" \ + -e "s@/var\/run\/named\/named.pid@/var/run/named/pid@" LINKS= ${BINDIR}/named ${BINDIR}/lwresd From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 05:33:22 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B6A18106564A; Sun, 17 Jul 2011 05:33:22 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A6E2F8FC08; Sun, 17 Jul 2011 05:33:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6H5XMfv059835; Sun, 17 Jul 2011 05:33:22 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6H5XMMB059833; Sun, 17 Jul 2011 05:33:22 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201107170533.p6H5XMMB059833@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sun, 17 Jul 2011 05:33:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224123 - head/sys/compat/linux X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 05:33:22 -0000 Author: bz Date: Sun Jul 17 05:33:22 2011 New Revision: 224123 URL: http://svn.freebsd.org/changeset/base/224123 Log: Remove the 'either' from the comment as it'll be less obvious that we removed semmap in a bit of time from now. Re-wrap. Suggested by: jhb Modified: head/sys/compat/linux/linux_ipc.c Modified: head/sys/compat/linux/linux_ipc.c ============================================================================== --- head/sys/compat/linux/linux_ipc.c Sun Jul 17 04:10:00 2011 (r224122) +++ head/sys/compat/linux/linux_ipc.c Sun Jul 17 05:33:22 2011 (r224123) @@ -578,10 +578,10 @@ linux_semctl(struct thread *td, struct l bcopy(&seminfo, &linux_seminfo.semmni, sizeof(linux_seminfo) - sizeof(linux_seminfo.semmap) ); /* - * Linux does not use the semmap field either but populates it - * with the defined value from SEMMAP, which really is redefined - * to SEMMNS, which they define as SEMMNI * SEMMSL. - * Try to simulate this returning our dynamic semmns value. + * Linux does not use the semmap field but populates it with + * the defined value from SEMMAP, which really is redefined to + * SEMMNS, which they define as SEMMNI * SEMMSL. Try to + * simulate this returning our dynamic semmns value. */ linux_seminfo.semmap = linux_seminfo.semmns; /* XXX BSD equivalent? From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 06:05:45 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2928E1065672; Sun, 17 Jul 2011 06:05:45 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 19AAE8FC12; Sun, 17 Jul 2011 06:05:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6H65imO060795; Sun, 17 Jul 2011 06:05:44 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6H65iUg060793; Sun, 17 Jul 2011 06:05:44 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201107170605.p6H65iUg060793@svn.freebsd.org> From: Doug Barton Date: Sun, 17 Jul 2011 06:05:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224124 - head/etc/namedb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 06:05:45 -0000 Author: dougb Date: Sun Jul 17 06:05:44 2011 New Revision: 224124 URL: http://svn.freebsd.org/changeset/base/224124 Log: Pick up the 2011-06-08 update to this file, the addition of an IPv6 address for D. Modified: head/etc/namedb/named.root Modified: head/etc/namedb/named.root ============================================================================== --- head/etc/namedb/named.root Sun Jul 17 05:33:22 2011 (r224123) +++ head/etc/namedb/named.root Sun Jul 17 06:05:44 2011 (r224124) @@ -13,8 +13,8 @@ ; on server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ; -; last update: Jun 17, 2010 -; related version of root zone: 2010061700 +; last update: Jun 8, 2011 +; related version of root zone: 2011060800 ; ; formerly NS.INTERNIC.NET ; @@ -36,6 +36,7 @@ C.ROOT-SERVERS.NET. 3600000 A ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 +D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2D::D ; ; FORMERLY NS.NASA.GOV ; From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 06:20:48 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 56E3E106566B; Sun, 17 Jul 2011 06:20:48 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3CD378FC08; Sun, 17 Jul 2011 06:20:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6H6KmMM061242; Sun, 17 Jul 2011 06:20:48 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6H6Kmnl061240; Sun, 17 Jul 2011 06:20:48 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201107170620.p6H6Kmnl061240@svn.freebsd.org> From: Doug Barton Date: Sun, 17 Jul 2011 06:20:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224125 - head/etc/namedb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 06:20:48 -0000 Author: dougb Date: Sun Jul 17 06:20:47 2011 New Revision: 224125 URL: http://svn.freebsd.org/changeset/base/224125 Log: Commemorate the release of RFC 6303 by updating the comments regarding our default empty zones. No functional changes. Modified: head/etc/namedb/named.conf Modified: head/etc/namedb/named.conf ============================================================================== --- head/etc/namedb/named.conf Sun Jul 17 06:05:44 2011 (r224124) +++ head/etc/namedb/named.conf Sun Jul 17 06:20:47 2011 (r224125) @@ -122,18 +122,18 @@ zone "arpa" { 1. Faster local resolution for your users 2. No spurious traffic will be sent from your network to the roots */ -// RFCs 1912 and 5735 (and BCP 32 for localhost) +// RFCs 1912, 5735 and 6303 (and BCP 32 for localhost) zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; }; zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; }; zone "255.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// RFC 1912-style zone for IPv6 localhost address +// RFC 1912-style zone for IPv6 localhost address (RFC 6303) zone "0.ip6.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; }; -// "This" Network (RFCs 1912 and 5735) +// "This" Network (RFCs 1912, 5735 and 6303) zone "0.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// Private Use Networks (RFCs 1918 and 5735) +// Private Use Networks (RFCs 1918, 5735 and 6303) zone "10.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "16.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "17.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; @@ -153,18 +153,18 @@ zone "30.172.in-addr.arpa" { type master zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// Link-local/APIPA (RFCs 3927 and 5735) +// Link-local/APIPA (RFCs 3927, 5735 and 6303) zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // IETF protocol assignments (RFCs 5735 and 5736) zone "0.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// TEST-NET-[1-3] for Documentation (RFCs 5735 and 5737) +// TEST-NET-[1-3] for Documentation (RFCs 5735, 5737 and 6303) zone "2.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "100.51.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "113.0.203.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// IPv6 Range for Documentation (RFC 3849) +// IPv6 Example Range for Documentation (RFCs 3849 and 6303) zone "8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // Domain Names for Documentation and Testing (BCP 32) @@ -231,17 +231,17 @@ zone "5.e.f.ip6.arpa" { type master; fil zone "6.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "7.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// IPv6 ULA (RFC 4193) +// IPv6 ULA (RFCs 4193 and 6303) zone "c.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "d.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// IPv6 Link Local (RFC 4291) +// IPv6 Link Local (RFCs 4291 and 6303) zone "8.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "9.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "a.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "b.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// IPv6 Deprecated Site-Local Addresses (RFC 3879) +// IPv6 Deprecated Site-Local Addresses (RFCs 3879 and 6303) zone "c.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "d.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "e.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 08:19:20 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 13424106564A; Sun, 17 Jul 2011 08:19:20 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 007588FC14; Sun, 17 Jul 2011 08:19:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6H8JJqb064867; Sun, 17 Jul 2011 08:19:19 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6H8JJYM064855; Sun, 17 Jul 2011 08:19:19 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201107170819.p6H8JJYM064855@svn.freebsd.org> From: Ed Schouten Date: Sun, 17 Jul 2011 08:19:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224126 - in head/sys: dev/adb dev/atkbdc dev/kbd dev/kbdmux dev/syscons dev/uart dev/usb/input dev/vkbd i386/ibcs2 pc98/cbus sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 08:19:20 -0000 Author: ed Date: Sun Jul 17 08:19:19 2011 New Revision: 224126 URL: http://svn.freebsd.org/changeset/base/224126 Log: Restore binary compatibility for GIO_KEYMAP and PIO_KEYMAP. Back in 2009 I changed the ABI of the GIO_KEYMAP and PIO_KEYMAP ioctls to support wide characters. I created a patch to add ABI compatibility for the old calls, but I didn't get any feedback to that. It seems now people are upgrading from 8 to 9 they experience this issue, so add it anyway. Modified: head/sys/dev/adb/adb_kbd.c head/sys/dev/atkbdc/atkbd.c head/sys/dev/kbd/kbd.c head/sys/dev/kbdmux/kbdmux.c head/sys/dev/syscons/syscons.c head/sys/dev/uart/uart_kbd_sun.c head/sys/dev/usb/input/ukbd.c head/sys/dev/vkbd/vkbd.c head/sys/i386/ibcs2/ibcs2_ioctl.c head/sys/pc98/cbus/pckbd.c head/sys/sys/kbio.h Modified: head/sys/dev/adb/adb_kbd.c ============================================================================== --- head/sys/dev/adb/adb_kbd.c Sun Jul 17 06:20:47 2011 (r224125) +++ head/sys/dev/adb/adb_kbd.c Sun Jul 17 08:19:19 2011 (r224126) @@ -747,6 +747,7 @@ static int akbd_ioctl(keyboard_t *kbd, u break; case PIO_KEYMAP: + case OPIO_KEYMAP: case PIO_KEYMAPENT: case PIO_DEADKEYMAP: default: Modified: head/sys/dev/atkbdc/atkbd.c ============================================================================== --- head/sys/dev/atkbdc/atkbd.c Sun Jul 17 06:20:47 2011 (r224125) +++ head/sys/dev/atkbdc/atkbd.c Sun Jul 17 08:19:19 2011 (r224126) @@ -982,6 +982,7 @@ atkbd_ioctl(keyboard_t *kbd, u_long cmd, return error; case PIO_KEYMAP: /* set keyboard translation table */ + case OPIO_KEYMAP: /* set keyboard translation table (compat) */ case PIO_KEYMAPENT: /* set keyboard translation table entry */ case PIO_DEADKEYMAP: /* set accent key translation table */ state->ks_accents = 0; Modified: head/sys/dev/kbd/kbd.c ============================================================================== --- head/sys/dev/kbd/kbd.c Sun Jul 17 06:20:47 2011 (r224125) +++ head/sys/dev/kbd/kbd.c Sun Jul 17 08:19:19 2011 (r224126) @@ -837,13 +837,12 @@ static int fkey_change_ok(fkeytab_t *, f int genkbd_commonioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) { -#ifndef KBD_DISABLE_KEYMAP_LOAD keymap_t *mapp; -#endif + okeymap_t *omapp; keyarg_t *keyp; fkeyarg_t *fkeyp; int s; - int i; + int i, j; int error; s = spltty(); @@ -874,14 +873,39 @@ genkbd_commonioctl(keyboard_t *kbd, u_lo sizeof(keymap_t)); splx(s); return (error); + case OGIO_KEYMAP: /* get keyboard translation table (compat) */ + mapp = kbd->kb_keymap; + omapp = (okeymap_t *)arg; + omapp->n_keys = mapp->n_keys; + for (i = 0; i < NUM_KEYS; i++) { + for (j = 0; j < NUM_STATES; j++) + omapp->key[i].map[j] = + mapp->key[i].map[j]; + omapp->key[i].spcl = mapp->key[i].spcl; + omapp->key[i].flgs = mapp->key[i].flgs; + } + return (0); case PIO_KEYMAP: /* set keyboard translation table */ + case OPIO_KEYMAP: /* set keyboard translation table (compat) */ #ifndef KBD_DISABLE_KEYMAP_LOAD mapp = malloc(sizeof *mapp, M_TEMP, M_NOWAIT); - error = copyin(*(void **)arg, mapp, sizeof *mapp); - if (error != 0) { - splx(s); - free(mapp, M_TEMP); - return (error); + if (cmd == OPIO_KEYMAP) { + omapp = (okeymap_t *)arg; + mapp->n_keys = omapp->n_keys; + for (i = 0; i < NUM_KEYS; i++) { + for (j = 0; j < NUM_STATES; j++) + mapp->key[i].map[j] = + omapp->key[i].map[j]; + mapp->key[i].spcl = omapp->key[i].spcl; + mapp->key[i].flgs = omapp->key[i].flgs; + } + } else { + error = copyin(*(void **)arg, mapp, sizeof *mapp); + if (error != 0) { + splx(s); + free(mapp, M_TEMP); + return (error); + } } error = keymap_change_ok(kbd->kb_keymap, mapp, curthread); Modified: head/sys/dev/kbdmux/kbdmux.c ============================================================================== --- head/sys/dev/kbdmux/kbdmux.c Sun Jul 17 06:20:47 2011 (r224125) +++ head/sys/dev/kbdmux/kbdmux.c Sun Jul 17 08:19:19 2011 (r224126) @@ -1198,6 +1198,7 @@ kbdmux_ioctl(keyboard_t *kbd, u_long cmd break; case PIO_KEYMAP: /* set keyboard translation table */ + case OPIO_KEYMAP: /* set keyboard translation table (compat) */ case PIO_KEYMAPENT: /* set keyboard translation table entry */ case PIO_DEADKEYMAP: /* set accent key translation table */ KBDMUX_LOCK(state); Modified: head/sys/dev/syscons/syscons.c ============================================================================== --- head/sys/dev/syscons/syscons.c Sun Jul 17 06:20:47 2011 (r224125) +++ head/sys/dev/syscons/syscons.c Sun Jul 17 08:19:19 2011 (r224126) @@ -1450,6 +1450,8 @@ sctty_ioctl(struct tty *tp, u_long cmd, case GIO_KEYMAP: /* get keyboard translation table */ case PIO_KEYMAP: /* set keyboard translation table */ + case OGIO_KEYMAP: /* get keyboard translation table (compat) */ + case OPIO_KEYMAP: /* set keyboard translation table (compat) */ case GIO_DEADKEYMAP: /* get accent key translation table */ case PIO_DEADKEYMAP: /* set accent key translation table */ case GETFKEY: /* get function key string */ Modified: head/sys/dev/uart/uart_kbd_sun.c ============================================================================== --- head/sys/dev/uart/uart_kbd_sun.c Sun Jul 17 06:20:47 2011 (r224125) +++ head/sys/dev/uart/uart_kbd_sun.c Sun Jul 17 08:19:19 2011 (r224126) @@ -739,6 +739,7 @@ sunkbd_ioctl(keyboard_t *kbd, u_long cmd case KDSETRAD: break; case PIO_KEYMAP: + case OPIO_KEYMAP: case PIO_KEYMAPENT: case PIO_DEADKEYMAP: default: Modified: head/sys/dev/usb/input/ukbd.c ============================================================================== --- head/sys/dev/usb/input/ukbd.c Sun Jul 17 06:20:47 2011 (r224125) +++ head/sys/dev/usb/input/ukbd.c Sun Jul 17 08:19:19 2011 (r224126) @@ -1929,6 +1929,8 @@ ukbd_ioctl(keyboard_t *kbd, u_long cmd, return (ukbd_set_typematic(kbd, *(int *)arg)); case PIO_KEYMAP: /* set keyboard translation table */ + case OPIO_KEYMAP: /* set keyboard translation table + * (compat) */ case PIO_KEYMAPENT: /* set keyboard translation table * entry */ case PIO_DEADKEYMAP: /* set accent key translation table */ Modified: head/sys/dev/vkbd/vkbd.c ============================================================================== --- head/sys/dev/vkbd/vkbd.c Sun Jul 17 06:20:47 2011 (r224125) +++ head/sys/dev/vkbd/vkbd.c Sun Jul 17 08:19:19 2011 (r224126) @@ -1208,6 +1208,7 @@ vkbd_ioctl(keyboard_t *kbd, u_long cmd, break; case PIO_KEYMAP: /* set keyboard translation table */ + case OPIO_KEYMAP: /* set keyboard translation table (compat) */ case PIO_KEYMAPENT: /* set keyboard translation table entry */ case PIO_DEADKEYMAP: /* set accent key translation table */ state->ks_accents = 0; Modified: head/sys/i386/ibcs2/ibcs2_ioctl.c ============================================================================== --- head/sys/i386/ibcs2/ibcs2_ioctl.c Sun Jul 17 06:20:47 2011 (r224125) +++ head/sys/i386/ibcs2/ibcs2_ioctl.c Sun Jul 17 08:19:19 2011 (r224126) @@ -654,12 +654,12 @@ ibcs2_ioctl(td, uap) break; case IBCS2_GIO_KEYMAP: /* Get keyboard map table */ - uap->cmd = GIO_KEYMAP; + uap->cmd = OGIO_KEYMAP; error = ioctl(td, (struct ioctl_args *)uap); break; case IBCS2_PIO_KEYMAP: /* Set keyboard map table */ - uap->cmd = PIO_KEYMAP; + uap->cmd = OPIO_KEYMAP; error = ioctl(td, (struct ioctl_args *)uap); break; Modified: head/sys/pc98/cbus/pckbd.c ============================================================================== --- head/sys/pc98/cbus/pckbd.c Sun Jul 17 06:20:47 2011 (r224125) +++ head/sys/pc98/cbus/pckbd.c Sun Jul 17 08:19:19 2011 (r224126) @@ -799,6 +799,7 @@ pckbd_ioctl(keyboard_t *kbd, u_long cmd, break; case PIO_KEYMAP: /* set keyboard translation table */ + case OPIO_KEYMAP: /* set keyboard translation table (compat) */ case PIO_KEYMAPENT: /* set keyboard translation table entry */ case PIO_DEADKEYMAP: /* set accent key translation table */ state->ks_accents = 0; Modified: head/sys/sys/kbio.h ============================================================================== --- head/sys/sys/kbio.h Sun Jul 17 06:20:47 2011 (r224125) +++ head/sys/sys/kbio.h Sun Jul 17 08:19:19 2011 (r224126) @@ -120,6 +120,20 @@ struct keymap { }; typedef struct keymap keymap_t; +#ifdef _KERNEL +struct okeyent_t { + u_char map[NUM_STATES]; + u_char spcl; + u_char flgs; +}; + +struct okeymap { + u_short n_keys; + struct okeyent_t key[NUM_KEYS]; +}; +typedef struct okeymap okeymap_t; +#endif /* _KERNEL */ + #endif /* !_KEYMAP_DECLARED */ /* defines for "special" keys (spcl bit set in keymap) */ @@ -223,6 +237,10 @@ typedef struct fkeyarg fkeyarg_t; /* XXX: Should have keymap_t as an argument, but that's too big for ioctl()! */ #define GIO_KEYMAP _IO('k', 6) #define PIO_KEYMAP _IO('k', 7) +#ifdef _KERNEL +#define OGIO_KEYMAP _IOR('k', 6, okeymap_t) +#define OPIO_KEYMAP _IOW('k', 7, okeymap_t) +#endif /* _KERNEL */ #define GIO_DEADKEYMAP _IOR('k', 8, accentmap_t) #define PIO_DEADKEYMAP _IOW('k', 9, accentmap_t) #define GIO_KEYMAPENT _IOWR('k', 10, keyarg_t) From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 09:49:44 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1A1DD1065672; Sun, 17 Jul 2011 09:49:44 +0000 (UTC) (envelope-from ache@vniz.net) Received: from vniz.net (vniz.net [194.87.13.69]) by mx1.freebsd.org (Postfix) with ESMTP id 8BF198FC08; Sun, 17 Jul 2011 09:49:43 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by vniz.net (8.14.5/8.14.5) with ESMTP id p6H9nf93003558; Sun, 17 Jul 2011 13:49:41 +0400 (MSK) (envelope-from ache@vniz.net) Received: (from ache@localhost) by localhost (8.14.5/8.14.5/Submit) id p6H9nfKI003557; Sun, 17 Jul 2011 13:49:41 +0400 (MSK) (envelope-from ache) Date: Sun, 17 Jul 2011 13:49:40 +0400 From: Andrey Chernov To: Doug Barton Message-ID: <20110717094940.GA3503@vniz.net> Mail-Followup-To: Andrey Chernov , Doug Barton , src-committers@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, svn-src-head@FreeBSD.ORG References: <201107170410.p6H4A0W4057354@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201107170410.p6H4A0W4057354@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, src-committers@FreeBSD.ORG Subject: Re: svn commit: r224122 - head/usr.sbin/named X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 09:49:44 -0000 On Sun, Jul 17, 2011 at 04:10:00AM +0000, Doug Barton wrote: > Author: dougb > Date: Sun Jul 17 04:10:00 2011 > New Revision: 224122 > URL: http://svn.freebsd.org/changeset/base/224122 > > Log: > Fix the location of the default pid file in named.8 There something wrong now with another default or missing file. I got named[3322]: managed-keys-zone ./IN: loading from master file managed-keys.bind failed: file not found on every named start, unless I manually issue touch /var/named/etc/namedb/working/managed-keys.bind and I am not sure it is 100% correct solution. -- http://ache.vniz.net/ From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 10:13:34 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 22605106566B; Sun, 17 Jul 2011 10:13:34 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1133A8FC19; Sun, 17 Jul 2011 10:13:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HADXrp069600; Sun, 17 Jul 2011 10:13:33 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HADXaK069597; Sun, 17 Jul 2011 10:13:33 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201107171013.p6HADXaK069597@svn.freebsd.org> From: Konstantin Belousov Date: Sun, 17 Jul 2011 10:13:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224127 - stable/8/sys/vm X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 10:13:34 -0000 Author: kib Date: Sun Jul 17 10:13:33 2011 New Revision: 224127 URL: http://svn.freebsd.org/changeset/base/224127 Log: MFC r223914: Extract the code to translate VM error into errno, into an exported function vm_mmap_to_errno(). Sponsored by: The FreeBSD Foundation Modified: stable/8/sys/vm/vm_extern.h stable/8/sys/vm/vm_mmap.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/vm/vm_extern.h ============================================================================== --- stable/8/sys/vm/vm_extern.h Sun Jul 17 08:19:19 2011 (r224126) +++ stable/8/sys/vm/vm_extern.h Sun Jul 17 10:13:33 2011 (r224127) @@ -66,6 +66,7 @@ int vm_fault_wire(vm_map_t, vm_offset_t, int vm_forkproc(struct thread *, struct proc *, struct thread *, struct vmspace *, int); void vm_waitproc(struct proc *); int vm_mmap(vm_map_t, vm_offset_t *, vm_size_t, vm_prot_t, vm_prot_t, int, objtype_t, void *, vm_ooffset_t); +int vm_mmap_to_errno(int rv); void vm_set_page_size(void); void vm_sync_icache(vm_map_t, vm_offset_t, vm_size_t); struct vmspace *vmspace_alloc(vm_offset_t, vm_offset_t); Modified: stable/8/sys/vm/vm_mmap.c ============================================================================== --- stable/8/sys/vm/vm_mmap.c Sun Jul 17 08:19:19 2011 (r224126) +++ stable/8/sys/vm/vm_mmap.c Sun Jul 17 10:13:33 2011 (r224127) @@ -1434,6 +1434,13 @@ vm_mmap(vm_map_t map, vm_offset_t *addr, vm_map_wire(map, *addr, *addr + size, VM_MAP_WIRE_USER|VM_MAP_WIRE_NOHOLES); + return (vm_mmap_to_errno(rv)); +} + +int +vm_mmap_to_errno(int rv) +{ + switch (rv) { case KERN_SUCCESS: return (0); From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 10:42:58 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.ORG Received: from mx2.freebsd.org (mx2.freebsd.org [IPv6:2001:4f8:fff6::35]) by hub.freebsd.org (Postfix) with ESMTP id 554791065673; Sun, 17 Jul 2011 10:42:58 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from 65-241-43-4.globalsuite.net (hub.freebsd.org [IPv6:2001:4f8:fff6::36]) by mx2.freebsd.org (Postfix) with ESMTP id 9B86914F76B; Sun, 17 Jul 2011 10:42:57 +0000 (UTC) Message-ID: <4E22BCB1.3050804@FreeBSD.org> Date: Sun, 17 Jul 2011 03:42:57 -0700 From: Doug Barton Organization: http://SupersetSolutions.com/ User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:5.0) Gecko/20110706 Thunderbird/5.0 MIME-Version: 1.0 To: Andrey Chernov , src-committers@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, svn-src-head@FreeBSD.ORG References: <201107170410.p6H4A0W4057354@svn.freebsd.org> <20110717094940.GA3503@vniz.net> In-Reply-To: <20110717094940.GA3503@vniz.net> X-Enigmail-Version: 1.2pre OpenPGP: id=1A1ABC84 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Subject: Re: svn commit: r224122 - head/usr.sbin/named X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 10:42:58 -0000 On 07/17/2011 02:49, Andrey Chernov wrote: > There something wrong now with another default or missing file. > I got > named[3322]: managed-keys-zone ./IN: loading from master file managed-keys.bind failed: file not found > on every named start, unless I manually issue > touch /var/named/etc/namedb/working/managed-keys.bind > and I am not sure it is 100% correct solution. That'll silence the warning, and is harmless. I'm more interested in why you're getting the error, since I can't reproduce it. How are you starting named? Are you using the rc.d script? If so, what options do you have in rc.conf? Can the bind user write to /etc/namedb/working? Doug -- Nothin' ever doesn't change, but nothin' changes much. -- OK Go Breadth of IT experience, and depth of knowledge in the DNS. Yours for the right price. :) http://SupersetSolutions.com/ From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 11:03:16 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4EA89106566C; Sun, 17 Jul 2011 11:03:16 +0000 (UTC) (envelope-from ache@vniz.net) Received: from vniz.net (vniz.net [194.87.13.69]) by mx1.freebsd.org (Postfix) with ESMTP id BE5168FC14; Sun, 17 Jul 2011 11:03:15 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by vniz.net (8.14.5/8.14.5) with ESMTP id p6HB3EN2010987; Sun, 17 Jul 2011 15:03:14 +0400 (MSK) (envelope-from ache@vniz.net) Received: (from ache@localhost) by localhost (8.14.5/8.14.5/Submit) id p6HB3EnQ010986; Sun, 17 Jul 2011 15:03:14 +0400 (MSK) (envelope-from ache) Date: Sun, 17 Jul 2011 15:03:14 +0400 From: Andrey Chernov To: Doug Barton Message-ID: <20110717110314.GA10943@vniz.net> Mail-Followup-To: Andrey Chernov , Doug Barton , src-committers@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, svn-src-head@FreeBSD.ORG References: <201107170410.p6H4A0W4057354@svn.freebsd.org> <20110717094940.GA3503@vniz.net> <4E22BCB1.3050804@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E22BCB1.3050804@FreeBSD.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, src-committers@FreeBSD.ORG Subject: Re: svn commit: r224122 - head/usr.sbin/named X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 11:03:16 -0000 On Sun, Jul 17, 2011 at 03:42:57AM -0700, Doug Barton wrote: > On 07/17/2011 02:49, Andrey Chernov wrote: > > > There something wrong now with another default or missing file. > > I got > > named[3322]: managed-keys-zone ./IN: loading from master file managed-keys.bind failed: file not found > > on every named start, unless I manually issue > > touch /var/named/etc/namedb/working/managed-keys.bind > > and I am not sure it is 100% correct solution. > > That'll silence the warning, and is harmless. I'm more interested in why > you're getting the error, since I can't reproduce it. > > How are you starting named? Are you using the rc.d script? If so, what > options do you have in rc.conf? Can the bind user write to > /etc/namedb/working? It starts to happen only after recent update. Yes, I use rc.d script without any additional options, only named_enable="YES". Yes, bind is owner of 'working' and able to write there. No I don't use any DNSSEC (for which managed-keys-zone is, as I assume). -- http://ache.vniz.net/ From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 12:07:22 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9FEFC106566C; Sun, 17 Jul 2011 12:07:22 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 902468FC13; Sun, 17 Jul 2011 12:07:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HC7MjY072889; Sun, 17 Jul 2011 12:07:22 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HC7M3F072887; Sun, 17 Jul 2011 12:07:22 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201107171207.p6HC7M3F072887@svn.freebsd.org> From: Doug Barton Date: Sun, 17 Jul 2011 12:07:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224129 - head/lib/bind X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 12:07:22 -0000 Author: dougb Date: Sun Jul 17 12:07:22 2011 New Revision: 224129 URL: http://svn.freebsd.org/changeset/base/224129 Log: Fixes to make the WITH_BIND_LIBS option functional with BIND 9.8.x Modified: head/lib/bind/config.mk Modified: head/lib/bind/config.mk ============================================================================== --- head/lib/bind/config.mk Sun Jul 17 11:24:34 2011 (r224128) +++ head/lib/bind/config.mk Sun Jul 17 12:07:22 2011 (r224129) @@ -107,6 +107,13 @@ BIND_DPADD= ${LIBBIND9} ${LIBDNS} ${LIBI ${LIBISC} ${LIBLWRES} .if ${MK_BIND_LIBS} != "no" BIND_LDADD= -lbind9 -ldns -lisccc -lisccfg -lisc -llwres +CFLAGS+= -I${BIND_DIR}/lib/isc/include +CFLAGS+= -I${BIND_DIR}/lib/isc/unix/include +CFLAGS+= -I${BIND_DIR}/lib/isc/pthreads/include +CFLAGS+= -I${.CURDIR}/../dns +CFLAGS+= -I${BIND_DIR}/lib/dns/include +CFLAGS+= -I${BIND_DIR}/lib/isccfg/include +CFLAGS+= -I${.CURDIR}/../isc .else BIND_LDADD= ${BIND_DPADD} .endif @@ -121,8 +128,7 @@ CRYPTO_LDADD= -lcrypto CFLAGS+= -DHAVE_LIBXML2 CFLAGS+= -I/usr/local/include -I/usr/local/include/libxml2 .if ${MK_BIND_LIBS} != "no" -CFLAGS+= -L/usr/local/lib -BIND_LDADD+= -lxml2 -lz -liconv -lm +BIND_LDADD+= -L/usr/local/lib -lxml2 -lz -liconv -lm .else BIND_DPADD+= /usr/local/lib/libxml2.a ${LIBZ} BIND_DPADD+= /usr/local/lib/libiconv.a ${LIBM} From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 12:35:13 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E29B01065673; Sun, 17 Jul 2011 12:35:13 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id B874F8FC17; Sun, 17 Jul 2011 12:35:13 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 6BB6346B0A; Sun, 17 Jul 2011 08:35:13 -0400 (EDT) Received: from kavik.baldwin.cx (c-68-36-150-83.hsd1.nj.comcast.net [68.36.150.83]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 3C3A38A02C; Sun, 17 Jul 2011 08:35:11 -0400 (EDT) From: John Baldwin To: Ed Schouten Date: Sun, 17 Jul 2011 08:35:09 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-RELEASE-p2; KDE/4.5.5; i386; ; ) References: <201107170819.p6H8JJYM064855@svn.freebsd.org> In-Reply-To: <201107170819.p6H8JJYM064855@svn.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201107170835.09767.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.6 (bigwig.baldwin.cx); Sun, 17 Jul 2011 08:35:13 -0400 (EDT) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r224126 - in head/sys: dev/adb dev/atkbdc dev/kbd dev/kbdmux dev/syscons dev/uart dev/usb/input dev/vkbd i386/ibcs2 pc98/cbus sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 12:35:14 -0000 On Sunday, July 17, 2011 04:19:19 am Ed Schouten wrote: > Author: ed > Date: Sun Jul 17 08:19:19 2011 > New Revision: 224126 > URL: http://svn.freebsd.org/changeset/base/224126 > > Log: > Restore binary compatibility for GIO_KEYMAP and PIO_KEYMAP. > > Back in 2009 I changed the ABI of the GIO_KEYMAP and PIO_KEYMAP ioctls > to support wide characters. I created a patch to add ABI compatibility > for the old calls, but I didn't get any feedback to that. > > It seems now people are upgrading from 8 to 9 they experience this > issue, so add it anyway. Would it be worth adding a COMPAT_FREEBSD8 and sticking this under that? -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 12:42:51 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6BBDE106566C; Sun, 17 Jul 2011 12:42:51 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5C2E58FC14; Sun, 17 Jul 2011 12:42:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HCgpsu073979; Sun, 17 Jul 2011 12:42:51 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HCgpxf073977; Sun, 17 Jul 2011 12:42:51 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201107171242.p6HCgpxf073977@svn.freebsd.org> From: John Baldwin Date: Sun, 17 Jul 2011 12:42:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224130 - head/sys/dev/acpica X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 12:42:51 -0000 Author: jhb Date: Sun Jul 17 12:42:51 2011 New Revision: 224130 URL: http://svn.freebsd.org/changeset/base/224130 Log: Don't ignore negatively decoded address ranges. Reported by: scottl Modified: head/sys/dev/acpica/acpi_pcib_acpi.c Modified: head/sys/dev/acpica/acpi_pcib_acpi.c ============================================================================== --- head/sys/dev/acpica/acpi_pcib_acpi.c Sun Jul 17 12:07:22 2011 (r224129) +++ head/sys/dev/acpica/acpi_pcib_acpi.c Sun Jul 17 12:42:51 2011 (r224130) @@ -238,13 +238,6 @@ acpi_pcib_producer_handler(ACPI_RESOURCE return (AE_OK); } - /* XXX: Not sure this is correct? */ - if (res->Data.Address.Decode != ACPI_POS_DECODE) { - device_printf(sc->ap_dev, - "Ignoring %d range (%#jx-%#jx) due to negative decode\n", - type, (uintmax_t)min, (uintmax_t)max); - break; - } if (min + length - 1 != max) device_printf(sc->ap_dev, "Length mismatch for %d range: %jx vs %jx\n", type, From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 12:42:53 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 53F8B1065670; Sun, 17 Jul 2011 12:42:53 +0000 (UTC) (envelope-from vadim@nuclight.avtf.net) Received: from nuclight.avtf.net (208.88.188.90.adsl.tomsknet.ru [90.188.88.208]) by mx1.freebsd.org (Postfix) with ESMTP id 9C7758FC0A; Sun, 17 Jul 2011 12:42:51 +0000 (UTC) Received: from kernblitz.nuclight.avtf.net (vadim@localhost [127.0.0.1]) by nuclight.avtf.net (8.14.4/8.14.4) with ESMTP id p6HCglcg028610; Sun, 17 Jul 2011 19:42:47 +0700 (NOVST) (envelope-from vadim@kernblitz.nuclight.avtf.net) Received: (from vadim@localhost) by kernblitz.nuclight.avtf.net (8.14.4/8.14.4/Submit) id p6HCgknb028607; Sun, 17 Jul 2011 19:42:46 +0700 (NOVST) (envelope-from vadim) Message-Id: <201107171242.p6HCgknb028607@kernblitz.nuclight.avtf.net> To: Nathan Whitehorn From: Vadim Goncharov In-Reply-To: =?UTF-8?Q?=3C4E2054AF=2E2040701=5F=5F44463=2E8588619002=241?= =?UTF-8?Q?310741734=24gmane=24org=40freebsd=2Eorg=3E?= References: <201107092301.p69N1sUp019626__19145.5060652972$1310252550$gmane$org@svn.freebsd.org> <201107121004.p6CA4apj070450@kernblitz.nuclight.avtf.net> <4E1C4955.7010206@freebsd.org> <201107151416.p6FEGQgQ018154@kernblitz.nuclight.avtf.net> <4E2054AF.2040701__44463.8588619002$1310741734$gmane$org@freebsd.org> X-Comment-To: Nathan Whitehorn Date: Sun, 17 Jul 2011 19:42:45 +0700 User-Agent: slrn/0.9.9p1 (FreeBSD) Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: doceng@freebsd.org, svn-src-all@freebsd.org, Team , FreeBSD Subject: Re: svn commit: r223897 - in head: release usr.sbin/bsdinstall/scripts X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: vadim_nuclight@mail.ru List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 12:42:53 -0000 Hi Nathan Whitehorn! On Fri, 15 Jul 2011 09:54:39 -0500; Nathan Whitehorn wrote about 'Re: svn commit: r223897 - in head: release usr.sbin/bsdinstall/scripts': >>>> Umm, _configured network_ even for original English docs? In 8.2R those doc >>>> packages for every lang were installed by sysinstall from CD (DVD1 actually), >>>> as it should really be for new user - e.g. if network could be configured only >>>> after reading Handbook, installing mpd5 from CD/DVD packages, and so on. >>>> >>>> Or am I missing something, and it will still be available on the disk? >>>> >>> The packages are really big (40 MB per), and there's only a small amount >>> of space available on the disc. >> But they were so a lot while: >> >> 7.4-RELEASE$ du -chd 0 /usr/share/doc/??_* >> 832K /usr/share/doc/bn_BD.ISO10646-1 >> 212K /usr/share/doc/da_DK.ISO8859-1 > [...] >> >> And still a packed onto installation disks. Why was there space earlier? >> And for it is wasted nowadays? > The installation CDs are live CDs now, which means that they provide a > functional fixit environment (ls, for instance) That's a good news. > as well as letting > people try out the operating system and expanding the range of system > functionality available to the installer. This takes space. Some of that > space is at the expense of other things, but I personally believe that > trade-off is very much worth while. This shouldn't trade off really. Is that stuff using geom_uzip(4) to save space? This is just as simple as doing mkuzip -v mfs_root.md and tweaking loader.conf for vfs.root.mountfrom, mfsroot_name and module loading. >>> We *could* fit the English ones, but it >>> badly complicates the release scripts to begin doing package generation, >>> and Marc and I decided to do it this way. >> How this can complicate release scripts, when packing release image and >> generating packages are two logically separated steps? >> >> Anyway, the impact on user's perception of FreeBSD will be too bad to measure >> it the amount of scirpts work. The system just can't live without beginner's >> documentation, and I've already given one very practical example when this is >> absolutely needed. >> > This was the decision of the documentation team, and as far as > documentation is concerned, I will do whatever they ask with regard to Presumably this decision is wrong, especially with regard to a way to compress some more space on disk using geom_uzip(4). This kernel module was used e.g. to build a Frenzy LiveCD, containing X Window and many packages on 250 Mb mini-CD. > the release scripts and the installer. Presumably, the release will also > include a second CD (or DVD) full of packages, which will contain the > full handbook. That's also a variant, but the commit says about requirement to have network, not CD2, or am I missing something? > The complication for the release building scripts is that > they generate finished ISOs, so anything that goes on the image must be > available to the script. The scripts no longer build packages of any > kind, and so building even one package substantially adds to their > complication. That's sounds strange - installation disks always included some packages. How it is done, then? > I also personally think it's not required or even important to provide a > way to install the handbook from disc1. The main documentation format > for it is HTML, for which we package no readers on disc1. Additionally, There was also a .txt version earlier days. > I'm guessing that basically all of our users read it on www.freebsd.org > these days instead of from /usr/local/share, which potentially makes it > superfluous to package it at all. Further, without the handbook, how > would a new user know to look for it at that path? The typical path is that user has heard about Handbook and even looked into a chapter or two on the site. Nobody reads entire Handbook before install, however (this is just impractical and boring), so he proceeds and then founds that there is no network in FreeBSD out-of-box for his particular ISP and he needs to read Handbook (and use mpd5 package) - but now there will be no Handbook, alas. -- WBR, Vadim Goncharov. ICQ#166852181 mailto:vadim_nuclight@mail.ru [Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight] From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 13:09:33 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AEABD106564A; Sun, 17 Jul 2011 13:09:33 +0000 (UTC) (envelope-from eugen@eg.sd.rdtc.ru) Received: from eg.sd.rdtc.ru (unknown [IPv6:2a03:3100:c:13::5]) by mx1.freebsd.org (Postfix) with ESMTP id 16F568FC08; Sun, 17 Jul 2011 13:09:32 +0000 (UTC) Received: from eg.sd.rdtc.ru (localhost [127.0.0.1]) by eg.sd.rdtc.ru (8.14.4/8.14.4) with ESMTP id p6HD9TlU060337; Sun, 17 Jul 2011 20:09:29 +0700 (NOVST) (envelope-from eugen@eg.sd.rdtc.ru) Received: (from eugen@localhost) by eg.sd.rdtc.ru (8.14.4/8.14.4/Submit) id p6HD9ONj060336; Sun, 17 Jul 2011 20:09:24 +0700 (NOVST) (envelope-from eugen) Date: Sun, 17 Jul 2011 20:09:24 +0700 From: Eugene Grosbein To: Nathan Whitehorn Message-ID: <20110717130924.GA60315@rdtc.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201107171242.p6HCgknb028607@kernblitz.nuclight.avtf.net> User-Agent: Mutt/1.4.2.3i Cc: doceng@freebsd.org, svn-src-all@freebsd.org, re@freebsd.org Subject: Re: svn commit: r223897 - in head: release usr.sbin/bsdinstall/scripts X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 13:09:33 -0000 Hi! Geom_uzip(4) is really good solution to compress distribution and also to make reading from CD much faster these days. And for new users, Handbook in disk1 is a must. However, one should not blindly load big uzip images using loader as it has limited virtual space for kernel, modules and images. It's more preferable to mount big uzip images from userspace after kernel has already started. Eugene Grosbein From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 13:50:22 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2BC2A106564A; Sun, 17 Jul 2011 13:50:22 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 02D318FC18; Sun, 17 Jul 2011 13:50:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HDoLp1075963; Sun, 17 Jul 2011 13:50:21 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HDoLsV075959; Sun, 17 Jul 2011 13:50:21 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201107171350.p6HDoLsV075959@svn.freebsd.org> From: Dimitry Andric Date: Sun, 17 Jul 2011 13:50:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224131 - in head/sys/boot/i386: . boot2 zfsboot X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 13:50:22 -0000 Author: dim Date: Sun Jul 17 13:50:21 2011 New Revision: 224131 URL: http://svn.freebsd.org/changeset/base/224131 Log: When building some of the boot loaders with clang, and DEBUG_FLAGS or CFLAGS having '-g' in it, clang outputs several assembly directives that are too new for our version of binutils. Therefore, assemble the resulting .s files with clang instead. A more general solution can be implemented when a GNU as-compatible driver for clang's integrated assembler appears. Reported by: dougb Modified: head/sys/boot/i386/Makefile.inc head/sys/boot/i386/boot2/Makefile head/sys/boot/i386/zfsboot/Makefile Modified: head/sys/boot/i386/Makefile.inc ============================================================================== --- head/sys/boot/i386/Makefile.inc Sun Jul 17 12:42:51 2011 (r224130) +++ head/sys/boot/i386/Makefile.inc Sun Jul 17 13:50:21 2011 (r224131) @@ -11,6 +11,7 @@ LDFLAGS+= -nostdlib .if ${MACHINE_CPUARCH} == "amd64" CFLAGS+= -m32 -march=i386 +ACFLAGS+= -m32 LDFLAGS+= -m elf_i386_fbsd AFLAGS+= --32 .endif Modified: head/sys/boot/i386/boot2/Makefile ============================================================================== --- head/sys/boot/i386/boot2/Makefile Sun Jul 17 12:42:51 2011 (r224130) +++ head/sys/boot/i386/boot2/Makefile Sun Jul 17 13:50:21 2011 (r224131) @@ -89,6 +89,9 @@ boot2.out: ${BTXCRT} boot2.o sio.o ${LD} ${LDFLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} boot2.o: boot2.s +.if ${CC:T:Mclang} == "clang" + ${CC} ${ACFLAGS} -c boot2.s +.endif SRCS= boot2.c boot2.h Modified: head/sys/boot/i386/zfsboot/Makefile ============================================================================== --- head/sys/boot/i386/zfsboot/Makefile Sun Jul 17 12:42:51 2011 (r224130) +++ head/sys/boot/i386/zfsboot/Makefile Sun Jul 17 13:50:21 2011 (r224131) @@ -86,6 +86,9 @@ zfsboot.out: ${BTXCRT} zfsboot.o sio.o d ${LD} ${LDFLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} ${LIBSTAND} zfsboot.o: zfsboot.s +.if ${CC:T:Mclang} == "clang" + ${CC} ${ACFLAGS} -c zfsboot.s +.endif SRCS= zfsboot.c From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 14:52:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5B5F2106566B; Sun, 17 Jul 2011 14:52:56 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4BF578FC12; Sun, 17 Jul 2011 14:52:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HEqut4077854; Sun, 17 Jul 2011 14:52:56 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HEquP7077852; Sun, 17 Jul 2011 14:52:56 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201107171452.p6HEquP7077852@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 17 Jul 2011 14:52:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224132 - head/etc/rc.d X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 14:52:56 -0000 Author: jilles Date: Sun Jul 17 14:52:55 2011 New Revision: 224132 URL: http://svn.freebsd.org/changeset/base/224132 Log: rc.d/routing: Fix ugly output with additional routing options. Print a separate "Additional routing options" line for each address family which has additional options, so that it does not get mixed up with the output from adding routes. This also reverts r224048 which added newlines to two arbitrary routing options. Modified: head/etc/rc.d/routing Modified: head/etc/rc.d/routing ============================================================================== --- head/etc/rc.d/routing Sun Jul 17 13:50:21 2011 (r224131) +++ head/etc/rc.d/routing Sun Jul 17 14:52:55 2011 (r224132) @@ -48,7 +48,6 @@ routing_start() done ;; esac - [ -n "${_ropts_initdone}" ] && echo '.' } routing_stop() @@ -250,19 +249,19 @@ static_ipx() { } -_ropts_initdone= ropts_init() { if [ -z "${_ropts_initdone}" ]; then - echo -n 'Additional routing options:' + echo -n "Additional $1 routing options:" _ropts_initdone=yes fi } options_inet() { + _ropts_initdone= if checkyesno icmp_bmcastecho; then - ropts_init + ropts_init inet echo -n ' broadcast ping responses=YES' ${SYSCTL} net.inet.icmp.bmcastecho=1 > /dev/null else @@ -270,7 +269,7 @@ options_inet() fi if checkyesno icmp_drop_redirect; then - ropts_init + ropts_init inet echo -n ' ignore ICMP redirect=YES' ${SYSCTL} net.inet.icmp.drop_redirect=1 > /dev/null else @@ -278,7 +277,7 @@ options_inet() fi if checkyesno icmp_log_redirect; then - ropts_init + ropts_init inet echo -n ' log ICMP redirect=YES' ${SYSCTL} net.inet.icmp.log_redirect=1 > /dev/null else @@ -286,15 +285,15 @@ options_inet() fi if checkyesno gateway_enable; then - ropts_init - echo ' IPv4 gateway=YES' + ropts_init inet + echo -n ' gateway=YES' ${SYSCTL} net.inet.ip.forwarding=1 > /dev/null else ${SYSCTL} net.inet.ip.forwarding=0 > /dev/null fi if checkyesno forward_sourceroute; then - ropts_init + ropts_init inet echo -n ' do source routing=YES' ${SYSCTL} net.inet.ip.sourceroute=1 > /dev/null else @@ -302,7 +301,7 @@ options_inet() fi if checkyesno accept_sourceroute; then - ropts_init + ropts_init inet echo -n ' accept source routing=YES' ${SYSCTL} net.inet.ip.accept_sourceroute=1 > /dev/null else @@ -310,38 +309,51 @@ options_inet() fi if checkyesno arpproxy_all; then - ropts_init + ropts_init inet echo -n ' ARP proxyall=YES' ${SYSCTL} net.link.ether.inet.proxyall=1 > /dev/null else ${SYSCTL} net.link.ether.inet.proxyall=0 > /dev/null fi + + [ -n "${_ropts_initdone}" ] && echo '.' } options_inet6() { + _ropts_initdone= + if checkyesno ipv6_gateway_enable; then - ropts_init - echo ' IPv6 gateway=YES' + ropts_init inet6 + echo -n ' gateway=YES' ${SYSCTL} net.inet6.ip6.forwarding=1 > /dev/null else ${SYSCTL} net.inet6.ip6.forwarding=0 > /dev/null fi + + [ -n "${_ropts_initdone}" ] && echo '.' } options_atm() { + _ropts_initdone= + + [ -n "${_ropts_initdone}" ] && echo '.' } options_ipx() { + _ropts_initdone= + if checkyesno ipxgateway_enable; then - ropts_init - echo -n ' IPX gateway=YES' + ropts_init ipx + echo -n ' gateway=YES' ${SYSCTL} net.ipx.ipx.ipxforwarding=1 > /dev/null else ${SYSCTL} net.ipx.ipx.ipxforwarding=0 > /dev/null fi + + [ -n "${_ropts_initdone}" ] && echo '.' } load_rc_config $name From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 15:36:59 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 13F86106564A; Sun, 17 Jul 2011 15:36:59 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F3F488FC08; Sun, 17 Jul 2011 15:36:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HFawwI079172; Sun, 17 Jul 2011 15:36:58 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HFaw6v079156; Sun, 17 Jul 2011 15:36:58 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201107171536.p6HFaw6v079156@svn.freebsd.org> From: Dimitry Andric Date: Sun, 17 Jul 2011 15:36:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224133 - in vendor/llvm/dist: . autoconf bindings/ocaml/llvm cmake cmake/modules docs docs/tutorial examples/BrainF examples/ExceptionDemo examples/Kaleidoscope/Chapter3 examples/Kalei... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 15:36:59 -0000 Author: dim Date: Sun Jul 17 15:36:56 2011 New Revision: 224133 URL: http://svn.freebsd.org/changeset/base/224133 Log: Vendor import of llvm trunk r135360: http://llvm.org/svn/llvm-project/llvm/trunk@135360 Added: vendor/llvm/dist/docs/BranchWeightMetadata.html vendor/llvm/dist/include/llvm/Analysis/BlockFrequency.h vendor/llvm/dist/include/llvm/Analysis/BlockFrequencyImpl.h vendor/llvm/dist/include/llvm/CodeGen/MachineBlockFrequency.h vendor/llvm/dist/include/llvm/CodeGen/MachineBranchProbabilityInfo.h vendor/llvm/dist/include/llvm/MC/MCInstrDesc.h vendor/llvm/dist/include/llvm/MC/MCInstrInfo.h vendor/llvm/dist/include/llvm/MC/MCInstrItineraries.h vendor/llvm/dist/include/llvm/MC/MCRegisterInfo.h vendor/llvm/dist/include/llvm/MC/MCSubtargetInfo.h vendor/llvm/dist/include/llvm/MC/SubtargetFeature.h vendor/llvm/dist/include/llvm/Object/Binary.h vendor/llvm/dist/include/llvm/Object/COFF.h vendor/llvm/dist/include/llvm/Object/Error.h vendor/llvm/dist/include/llvm/Target/TargetSubtargetInfo.h vendor/llvm/dist/lib/Analysis/BlockFrequency.cpp vendor/llvm/dist/lib/CodeGen/MachineBlockFrequency.cpp vendor/llvm/dist/lib/CodeGen/MachineBranchProbabilityInfo.cpp vendor/llvm/dist/lib/CodeGen/RegisterCoalescer.h vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp vendor/llvm/dist/lib/MC/MCSubtargetInfo.cpp vendor/llvm/dist/lib/MC/SubtargetFeature.cpp vendor/llvm/dist/lib/Object/Binary.cpp vendor/llvm/dist/lib/Object/Error.cpp vendor/llvm/dist/lib/Target/ARM/ARMMachObjectWriter.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMMCAsmInfo.h vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/Alpha/MCTargetDesc/ vendor/llvm/dist/lib/Target/Alpha/MCTargetDesc/AlphaMCAsmInfo.cpp vendor/llvm/dist/lib/Target/Alpha/MCTargetDesc/AlphaMCAsmInfo.h vendor/llvm/dist/lib/Target/Alpha/MCTargetDesc/AlphaMCTargetDesc.cpp vendor/llvm/dist/lib/Target/Alpha/MCTargetDesc/AlphaMCTargetDesc.h vendor/llvm/dist/lib/Target/Alpha/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/Alpha/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/Blackfin/MCTargetDesc/ vendor/llvm/dist/lib/Target/Blackfin/MCTargetDesc/BlackfinMCAsmInfo.cpp vendor/llvm/dist/lib/Target/Blackfin/MCTargetDesc/BlackfinMCAsmInfo.h vendor/llvm/dist/lib/Target/Blackfin/MCTargetDesc/BlackfinMCTargetDesc.cpp vendor/llvm/dist/lib/Target/Blackfin/MCTargetDesc/BlackfinMCTargetDesc.h vendor/llvm/dist/lib/Target/Blackfin/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/Blackfin/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/CellSPU/MCTargetDesc/ vendor/llvm/dist/lib/Target/CellSPU/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/CellSPU/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.cpp vendor/llvm/dist/lib/Target/CellSPU/MCTargetDesc/SPUMCAsmInfo.h vendor/llvm/dist/lib/Target/CellSPU/MCTargetDesc/SPUMCTargetDesc.cpp vendor/llvm/dist/lib/Target/CellSPU/MCTargetDesc/SPUMCTargetDesc.h vendor/llvm/dist/lib/Target/MBlaze/MCTargetDesc/ vendor/llvm/dist/lib/Target/MBlaze/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/MBlaze/MCTargetDesc/MBlazeMCAsmInfo.cpp vendor/llvm/dist/lib/Target/MBlaze/MCTargetDesc/MBlazeMCAsmInfo.h vendor/llvm/dist/lib/Target/MBlaze/MCTargetDesc/MBlazeMCTargetDesc.cpp vendor/llvm/dist/lib/Target/MBlaze/MCTargetDesc/MBlazeMCTargetDesc.h vendor/llvm/dist/lib/Target/MBlaze/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/MSP430/MCTargetDesc/ vendor/llvm/dist/lib/Target/MSP430/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/MSP430/MCTargetDesc/MSP430MCAsmInfo.cpp vendor/llvm/dist/lib/Target/MSP430/MCTargetDesc/MSP430MCAsmInfo.h vendor/llvm/dist/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.cpp vendor/llvm/dist/lib/Target/MSP430/MCTargetDesc/MSP430MCTargetDesc.h vendor/llvm/dist/lib/Target/MSP430/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/Mips/InstPrinter/ vendor/llvm/dist/lib/Target/Mips/InstPrinter/CMakeLists.txt vendor/llvm/dist/lib/Target/Mips/InstPrinter/Makefile vendor/llvm/dist/lib/Target/Mips/InstPrinter/MipsInstPrinter.cpp vendor/llvm/dist/lib/Target/Mips/InstPrinter/MipsInstPrinter.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/ vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsMCAsmInfo.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h vendor/llvm/dist/lib/Target/Mips/MipsAsmPrinter.h vendor/llvm/dist/lib/Target/Mips/MipsMCInstLower.cpp vendor/llvm/dist/lib/Target/Mips/MipsMCInstLower.h vendor/llvm/dist/lib/Target/Mips/MipsMCSymbolRefExpr.cpp vendor/llvm/dist/lib/Target/Mips/MipsMCSymbolRefExpr.h vendor/llvm/dist/lib/Target/PTX/MCTargetDesc/ vendor/llvm/dist/lib/Target/PTX/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/PTX/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/PTX/MCTargetDesc/PTXMCAsmInfo.cpp vendor/llvm/dist/lib/Target/PTX/MCTargetDesc/PTXMCAsmInfo.h vendor/llvm/dist/lib/Target/PTX/MCTargetDesc/PTXMCTargetDesc.cpp vendor/llvm/dist/lib/Target/PTX/MCTargetDesc/PTXMCTargetDesc.h vendor/llvm/dist/lib/Target/PTX/PTXCallingConv.td vendor/llvm/dist/lib/Target/PTX/generate-register-td.py (contents, props changed) vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/ vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.h vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/ vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.h vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.cpp vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.h vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/ vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.cpp vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmInfo.h vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.cpp vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h vendor/llvm/dist/lib/Target/TargetSubtargetInfo.cpp vendor/llvm/dist/lib/Target/X86/MCTargetDesc/ vendor/llvm/dist/lib/Target/X86/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/X86/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.h vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.cpp vendor/llvm/dist/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h vendor/llvm/dist/lib/Target/XCore/MCTargetDesc/ vendor/llvm/dist/lib/Target/XCore/MCTargetDesc/CMakeLists.txt vendor/llvm/dist/lib/Target/XCore/MCTargetDesc/Makefile vendor/llvm/dist/lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.cpp vendor/llvm/dist/lib/Target/XCore/MCTargetDesc/XCoreMCAsmInfo.h vendor/llvm/dist/lib/Target/XCore/MCTargetDesc/XCoreMCTargetDesc.cpp vendor/llvm/dist/lib/Target/XCore/MCTargetDesc/XCoreMCTargetDesc.h vendor/llvm/dist/lib/Transforms/Scalar/ObjCARC.cpp vendor/llvm/dist/lib/Transforms/Utils/LowerExpectIntrinsic.cpp vendor/llvm/dist/test/Analysis/CallGraph/no-intrinsics.ll vendor/llvm/dist/test/Assembler/named-metadata.ll vendor/llvm/dist/test/CodeGen/ARM/2011-06-16-TailCallByVal.ll vendor/llvm/dist/test/CodeGen/ARM/2011-06-29-MergeGlobalsAlign.ll vendor/llvm/dist/test/CodeGen/ARM/2011-07-10-GlobalMergeBug.ll vendor/llvm/dist/test/CodeGen/ARM/debug-info-blocks.ll vendor/llvm/dist/test/CodeGen/ARM/fold-const.ll vendor/llvm/dist/test/CodeGen/ARM/jumptable-label.ll vendor/llvm/dist/test/CodeGen/ARM/vcvt_combine.ll vendor/llvm/dist/test/CodeGen/ARM/vdiv_combine.ll vendor/llvm/dist/test/CodeGen/CBackend/2011-06-08-addWithOverflow.ll vendor/llvm/dist/test/CodeGen/CBackend/X86/ vendor/llvm/dist/test/CodeGen/CBackend/X86/2008-06-04-IndirectMem.ll vendor/llvm/dist/test/CodeGen/CBackend/X86/dg.exp vendor/llvm/dist/test/CodeGen/Generic/2011-07-07-ScheduleDAGCrash.ll vendor/llvm/dist/test/CodeGen/Generic/builtin-expect.ll vendor/llvm/dist/test/CodeGen/Generic/edge-bundles-blockIDs.ll vendor/llvm/dist/test/CodeGen/Mips/inlineasmmemop.ll vendor/llvm/dist/test/CodeGen/PTX/aggregates.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc32-vaarg.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-32bit-addic.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-crash.ll vendor/llvm/dist/test/CodeGen/Thumb/2011-06-16-NoGPRs.ll vendor/llvm/dist/test/CodeGen/Thumb/inlineasm-thumb.ll vendor/llvm/dist/test/CodeGen/X86/2011-06-12-FastAllocSpill.ll vendor/llvm/dist/test/CodeGen/X86/2011-06-14-PreschedRegalias.ll vendor/llvm/dist/test/CodeGen/X86/2011-06-14-mmx-inlineasm.ll vendor/llvm/dist/test/CodeGen/X86/2011-07-13-BadFrameIndexDisplacement.ll vendor/llvm/dist/test/CodeGen/X86/4char-promote.ll vendor/llvm/dist/test/CodeGen/X86/allrem-moddi3.ll vendor/llvm/dist/test/CodeGen/X86/asm-label.ll vendor/llvm/dist/test/CodeGen/X86/asm-label2.ll vendor/llvm/dist/test/CodeGen/X86/atomic-or.ll vendor/llvm/dist/test/CodeGen/X86/avx-256-arith.ll vendor/llvm/dist/test/CodeGen/X86/avx-256-arith.s vendor/llvm/dist/test/CodeGen/X86/avx-256-logic.ll vendor/llvm/dist/test/CodeGen/X86/avx-load-store.ll vendor/llvm/dist/test/CodeGen/X86/dbg-i128-const.ll vendor/llvm/dist/test/CodeGen/X86/fma.ll vendor/llvm/dist/test/CodeGen/X86/fp-stack-O0.ll vendor/llvm/dist/test/CodeGen/X86/mem-promote-integers.ll vendor/llvm/dist/test/CodeGen/X86/membarrier.ll vendor/llvm/dist/test/CodeGen/X86/muloti.ll vendor/llvm/dist/test/CodeGen/X86/non-lazy-bind.ll vendor/llvm/dist/test/CodeGen/X86/promote-trunc.ll vendor/llvm/dist/test/CodeGen/X86/reghinting.ll vendor/llvm/dist/test/CodeGen/X86/sdiv-exact.ll vendor/llvm/dist/test/CodeGen/X86/shl_undef.ll vendor/llvm/dist/test/CodeGen/X86/sibcall-byval.ll vendor/llvm/dist/test/CodeGen/X86/tail-dup-addr.ll vendor/llvm/dist/test/CodeGen/X86/tail-threshold.ll vendor/llvm/dist/test/CodeGen/X86/undef-label.ll vendor/llvm/dist/test/CodeGen/X86/zext-fold.ll vendor/llvm/dist/test/DebugInfo/X86/earlydup-crash.ll vendor/llvm/dist/test/DebugInfo/X86/pr9951.ll vendor/llvm/dist/test/Linker/inlineasm.ll vendor/llvm/dist/test/MC/ARM/arm-arithmetic-aliases.s vendor/llvm/dist/test/MC/ARM/basic-arm-instructions.s vendor/llvm/dist/test/MC/ARM/diagnostics.s vendor/llvm/dist/test/MC/ARM/mode-switch.s vendor/llvm/dist/test/MC/ARM/thumb2-movt-fixup.s vendor/llvm/dist/test/MC/ARM/vpush-vpop.s vendor/llvm/dist/test/MC/Disassembler/X86/x86-32.txt vendor/llvm/dist/test/Transforms/GVN/2011-04-27-phioperands.ll vendor/llvm/dist/test/Transforms/GVN/2011-07-07-MatchIntrinsicExtract.ll vendor/llvm/dist/test/Transforms/InstCombine/2011-06-13-nsw-alloca.ll vendor/llvm/dist/test/Transforms/InstSimplify/undef.ll vendor/llvm/dist/test/Transforms/LICM/2011-07-06-Alignment.ll vendor/llvm/dist/test/Transforms/LoopDeletion/2011-06-21-phioperands.ll vendor/llvm/dist/test/Transforms/LoopIdiom/memset_noidiom.ll vendor/llvm/dist/test/Transforms/LowerExpectIntrinsic/ vendor/llvm/dist/test/Transforms/LowerExpectIntrinsic/basic.ll vendor/llvm/dist/test/Transforms/LowerExpectIntrinsic/dg.exp vendor/llvm/dist/test/Transforms/Mem2Reg/ignore-lifetime.ll vendor/llvm/dist/test/Transforms/ObjCARC/ vendor/llvm/dist/test/Transforms/ObjCARC/basic.ll vendor/llvm/dist/test/Transforms/ObjCARC/cfg-hazards.ll vendor/llvm/dist/test/Transforms/ObjCARC/contract-marker.ll vendor/llvm/dist/test/Transforms/ObjCARC/contract-storestrong-ivar.ll vendor/llvm/dist/test/Transforms/ObjCARC/contract-storestrong.ll vendor/llvm/dist/test/Transforms/ObjCARC/contract-testcases.ll vendor/llvm/dist/test/Transforms/ObjCARC/contract.ll vendor/llvm/dist/test/Transforms/ObjCARC/dg.exp vendor/llvm/dist/test/Transforms/ObjCARC/expand.ll vendor/llvm/dist/test/Transforms/ObjCARC/gvn.ll vendor/llvm/dist/test/Transforms/ObjCARC/invoke.ll vendor/llvm/dist/test/Transforms/ObjCARC/move-and-form-retain-autorelease.ll vendor/llvm/dist/test/Transforms/ObjCARC/move-and-merge-autorelease.ll vendor/llvm/dist/test/Transforms/ObjCARC/post-inlining.ll vendor/llvm/dist/test/Transforms/ObjCARC/retain-not-declared.ll vendor/llvm/dist/test/Transforms/ObjCARC/rle-s2l.ll vendor/llvm/dist/test/Transforms/ObjCARC/rv.ll vendor/llvm/dist/test/Transforms/ObjCARC/weak-contract.ll vendor/llvm/dist/test/Transforms/ObjCARC/weak-copies.ll vendor/llvm/dist/test/Transforms/ObjCARC/weak.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2011-06-17-VectorPartialMemset.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/ForwardSwitchConditionToPHI.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/lifetime.ll vendor/llvm/dist/unittests/ADT/PackedVectorTest.cpp vendor/llvm/dist/utils/TableGen/Error.cpp vendor/llvm/dist/utils/TableGen/Error.h vendor/llvm/dist/utils/TableGen/PseudoLoweringEmitter.cpp vendor/llvm/dist/utils/TableGen/PseudoLoweringEmitter.h Deleted: vendor/llvm/dist/include/llvm/AbstractTypeUser.h vendor/llvm/dist/include/llvm/CodeGen/RegisterCoalescer.h vendor/llvm/dist/include/llvm/Target/SubtargetFeature.h vendor/llvm/dist/include/llvm/Target/TargetInstrDesc.h vendor/llvm/dist/include/llvm/Target/TargetInstrItineraries.h vendor/llvm/dist/include/llvm/Target/TargetSubtarget.h vendor/llvm/dist/include/llvm/TypeSymbolTable.h vendor/llvm/dist/lib/CodeGen/PreAllocSplitting.cpp vendor/llvm/dist/lib/CodeGen/SimpleRegisterCoalescing.cpp vendor/llvm/dist/lib/CodeGen/SimpleRegisterCoalescing.h vendor/llvm/dist/lib/Target/ARM/ARMMCAsmInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMMCAsmInfo.h vendor/llvm/dist/lib/Target/Alpha/AlphaMCAsmInfo.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaMCAsmInfo.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinMCAsmInfo.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinMCAsmInfo.h vendor/llvm/dist/lib/Target/CellSPU/SPUMCAsmInfo.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUMCAsmInfo.h vendor/llvm/dist/lib/Target/MBlaze/MBlazeMCAsmInfo.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeMCAsmInfo.h vendor/llvm/dist/lib/Target/MSP430/MSP430MCAsmInfo.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430MCAsmInfo.h vendor/llvm/dist/lib/Target/Mips/MipsMCAsmInfo.cpp vendor/llvm/dist/lib/Target/Mips/MipsMCAsmInfo.h vendor/llvm/dist/lib/Target/PTX/PTXMCAsmInfo.cpp vendor/llvm/dist/lib/Target/PTX/PTXMCAsmInfo.h vendor/llvm/dist/lib/Target/PowerPC/PPCMCAsmInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCMCAsmInfo.h vendor/llvm/dist/lib/Target/Sparc/SparcMCAsmInfo.cpp vendor/llvm/dist/lib/Target/Sparc/SparcMCAsmInfo.h vendor/llvm/dist/lib/Target/SubtargetFeature.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZMCAsmInfo.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZMCAsmInfo.h vendor/llvm/dist/lib/Target/TargetSubtarget.cpp vendor/llvm/dist/lib/Target/X86/X86MCAsmInfo.cpp vendor/llvm/dist/lib/Target/X86/X86MCAsmInfo.h vendor/llvm/dist/lib/Target/XCore/XCoreMCAsmInfo.cpp vendor/llvm/dist/lib/Target/XCore/XCoreMCAsmInfo.h vendor/llvm/dist/lib/Transforms/IPO/DeadTypeElimination.cpp vendor/llvm/dist/lib/Transforms/Utils/CloneLoop.cpp vendor/llvm/dist/lib/VMCore/TypeSymbolTable.cpp vendor/llvm/dist/lib/VMCore/TypesContext.h vendor/llvm/dist/test/Analysis/BasicAA/2004-12-08-BasicAACrash.ll vendor/llvm/dist/test/Analysis/BasicAA/2004-12-08-BasicAACrash2.ll vendor/llvm/dist/test/Analysis/BasicAA/2005-03-09-BrokenBasicAA.ll vendor/llvm/dist/test/Assembler/2002-01-24-BadSymbolTableAssert.ll vendor/llvm/dist/test/Assembler/2002-01-24-ValueRefineAbsType.ll vendor/llvm/dist/test/Assembler/2002-02-19-TypeParsing.ll vendor/llvm/dist/test/Assembler/2002-04-04-PureVirtMethCall.ll vendor/llvm/dist/test/Assembler/2002-04-04-PureVirtMethCall2.ll vendor/llvm/dist/test/Assembler/2002-04-05-TypeParsing.ll vendor/llvm/dist/test/Assembler/2002-05-02-ParseError.ll vendor/llvm/dist/test/Assembler/2002-07-08-HugePerformanceProblem.ll vendor/llvm/dist/test/Assembler/2002-07-14-InternalLossage.ll vendor/llvm/dist/test/Assembler/2002-07-25-ParserAssertionFailure.ll vendor/llvm/dist/test/Assembler/2002-10-15-NameClash.ll vendor/llvm/dist/test/Assembler/2003-06-30-RecursiveTypeProblem.ll vendor/llvm/dist/test/Assembler/2003-10-04-NotMergingGlobalConstants.ll vendor/llvm/dist/test/Assembler/2003-12-30-TypeMapInvalidMemory.ll vendor/llvm/dist/test/Assembler/2005-02-09-AsmWriterStoreBug.ll vendor/llvm/dist/test/Assembler/2006-05-26-VarargsCallEncode.ll vendor/llvm/dist/test/Assembler/2007-07-30-AutoUpgradeZextSext.ll vendor/llvm/dist/test/Assembler/2007-11-27-AutoUpgradeAttributes.ll vendor/llvm/dist/test/Assembler/2008-02-20-MultipleReturnValue.ll vendor/llvm/dist/test/Assembler/2008-10-14-NamedTypeOnInteger.ll vendor/llvm/dist/test/Assembler/AutoUpgradeMMXIntrinsics.ll vendor/llvm/dist/test/Assembler/private.ll vendor/llvm/dist/test/Bitcode/AutoUpgradeIntrinsics.ll vendor/llvm/dist/test/Bitcode/AutoUpgradeIntrinsics.ll.bc vendor/llvm/dist/test/Bitcode/memcpy.ll vendor/llvm/dist/test/Bitcode/neon-intrinsics.ll vendor/llvm/dist/test/Bitcode/neon-intrinsics.ll.bc vendor/llvm/dist/test/Bitcode/sse2_loadl_pd.ll vendor/llvm/dist/test/Bitcode/sse2_loadl_pd.ll.bc vendor/llvm/dist/test/Bitcode/sse2_movl_dq.ll vendor/llvm/dist/test/Bitcode/sse2_movl_dq.ll.bc vendor/llvm/dist/test/Bitcode/sse2_movs_d.ll vendor/llvm/dist/test/Bitcode/sse2_movs_d.ll.bc vendor/llvm/dist/test/Bitcode/sse2_punpck_qdq.ll vendor/llvm/dist/test/Bitcode/sse2_punpck_qdq.ll.bc vendor/llvm/dist/test/Bitcode/sse2_shuf_pd.ll vendor/llvm/dist/test/Bitcode/sse2_shuf_pd.ll.bc vendor/llvm/dist/test/Bitcode/sse2_unpck_pd.ll vendor/llvm/dist/test/Bitcode/sse2_unpck_pd.ll.bc vendor/llvm/dist/test/Bitcode/sse41_pmulld.ll vendor/llvm/dist/test/Bitcode/sse41_pmulld.ll.bc vendor/llvm/dist/test/CodeGen/ARM/2007-03-26-RegScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2007-05-07-jumptoentry.ll vendor/llvm/dist/test/CodeGen/ARM/2007-05-31-RegScavengerInfiniteLoop.ll vendor/llvm/dist/test/CodeGen/ARM/2008-09-14-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-06-12-RegScavengerAssert.ll vendor/llvm/dist/test/CodeGen/Alpha/2005-07-12-TwoMallocCalls.ll vendor/llvm/dist/test/CodeGen/Blackfin/burg.ll vendor/llvm/dist/test/CodeGen/CBackend/2002-08-20-RecursiveTypes.ll vendor/llvm/dist/test/CodeGen/CBackend/2002-10-15-OpaqueTypeProblem.ll vendor/llvm/dist/test/CodeGen/CBackend/2002-10-30-FunctionPointerAlloca.ll vendor/llvm/dist/test/CodeGen/CBackend/2005-03-08-RecursiveTypeCrash.ll vendor/llvm/dist/test/CodeGen/CBackend/2007-01-15-NamedArrayType.ll vendor/llvm/dist/test/CodeGen/CBackend/2008-05-21-MRV-InlineAsm.ll vendor/llvm/dist/test/CodeGen/CBackend/2008-06-04-IndirectMem.ll vendor/llvm/dist/test/CodeGen/CPP/llvm2cpp.ll vendor/llvm/dist/test/CodeGen/Generic/2005-07-12-memcpy-i64-length.ll vendor/llvm/dist/test/CodeGen/Generic/2007-11-21-UndeadIllegalNode.ll vendor/llvm/dist/test/CodeGen/Generic/BurgBadRegAlloc.ll vendor/llvm/dist/test/CodeGen/Generic/badlive.ll vendor/llvm/dist/test/CodeGen/Generic/getresult-undef.ll vendor/llvm/dist/test/CodeGen/Generic/legalize-dbg-value.ll vendor/llvm/dist/test/CodeGen/Generic/spillccr.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-10-30-IllegalShift.ll vendor/llvm/dist/test/CodeGen/PowerPC/2009-11-15-ReMatBug.ll vendor/llvm/dist/test/CodeGen/PowerPC/invalid-memcpy.ll vendor/llvm/dist/test/CodeGen/PowerPC/multiple-return-values.ll vendor/llvm/dist/test/CodeGen/Thumb/2007-03-06-AddR7.ll vendor/llvm/dist/test/CodeGen/Thumb/2009-07-19-SPDecBug.ll vendor/llvm/dist/test/CodeGen/X86/2004-02-12-Memcpy.ll vendor/llvm/dist/test/CodeGen/X86/2006-11-28-Memcpy.ll vendor/llvm/dist/test/CodeGen/X86/2007-06-04-tailmerge4.ll vendor/llvm/dist/test/CodeGen/X86/2007-06-05-LSR-Dominator.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-05-3AddrConvert.ll vendor/llvm/dist/test/CodeGen/X86/2007-11-02-BadAsm.ll vendor/llvm/dist/test/CodeGen/X86/2007-12-11-FoldImpDefSpill.ll vendor/llvm/dist/test/CodeGen/X86/2008-06-04-MemCpyLoweringBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-08-23-X86-64AsmBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-12-05-SpillerCrash.ll vendor/llvm/dist/test/CodeGen/X86/2009-01-29-LocalRegAllocBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-02-20-PreAllocSplit-Crash.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-09-InlineAsmCrash.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-20-LinearScanOpt.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-27-LiveIntervalsBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-10-08-MachineLICMBug.ll vendor/llvm/dist/test/CodeGen/X86/GC/simple_ocaml.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-fpstack2.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-fpstack3.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-fpstack4.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-fpstack5.ll vendor/llvm/dist/test/CodeGen/X86/memmove-4.ll vendor/llvm/dist/test/CodeGen/X86/multiple-return-values.ll vendor/llvm/dist/test/CodeGen/X86/pr2623.ll vendor/llvm/dist/test/CodeGen/X86/pre-split1.ll vendor/llvm/dist/test/CodeGen/X86/pre-split10.ll vendor/llvm/dist/test/CodeGen/X86/pre-split11.ll vendor/llvm/dist/test/CodeGen/X86/pre-split2.ll vendor/llvm/dist/test/CodeGen/X86/pre-split3.ll vendor/llvm/dist/test/CodeGen/X86/pre-split4.ll vendor/llvm/dist/test/CodeGen/X86/pre-split5.ll vendor/llvm/dist/test/CodeGen/X86/pre-split6.ll vendor/llvm/dist/test/CodeGen/X86/pre-split7.ll vendor/llvm/dist/test/CodeGen/X86/pre-split8.ll vendor/llvm/dist/test/CodeGen/X86/pre-split9.ll vendor/llvm/dist/test/CodeGen/X86/twoaddr-remat.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-malloc.ll vendor/llvm/dist/test/DebugInfo/pr9951.ll vendor/llvm/dist/test/ExecutionEngine/test-malloc.ll vendor/llvm/dist/test/Feature/globalredefinition.ll vendor/llvm/dist/test/Feature/noalias-ret.ll vendor/llvm/dist/test/Feature/opaquetypes.ll vendor/llvm/dist/test/Feature/testmemory.ll vendor/llvm/dist/test/FrontendC/2008-07-29-EHLabel.ll vendor/llvm/dist/test/Integer/BitArith.ll vendor/llvm/dist/test/Integer/BitBit.ll vendor/llvm/dist/test/Integer/BitCast.ll vendor/llvm/dist/test/Integer/BitIcmp.ll vendor/llvm/dist/test/Integer/BitMem.ll vendor/llvm/dist/test/Integer/BitMisc.ll vendor/llvm/dist/test/Integer/alignment_bt.ll vendor/llvm/dist/test/Integer/cfgstructures_bt.ll vendor/llvm/dist/test/Integer/forwardreftest_bt.ll vendor/llvm/dist/test/Integer/globalredefinition_bt.ll vendor/llvm/dist/test/Integer/globalvars_bt.ll vendor/llvm/dist/test/Integer/indirectcall2_bt.ll vendor/llvm/dist/test/Integer/indirectcall_bt.ll vendor/llvm/dist/test/Integer/opaquetypes_bt.ll vendor/llvm/dist/test/Integer/paramattrs_bt.ll vendor/llvm/dist/test/Integer/prototype_bt.ll vendor/llvm/dist/test/Integer/recursivetype_bt.ll vendor/llvm/dist/test/Integer/simplecalltest_bt.ll vendor/llvm/dist/test/Integer/small_bt.ll vendor/llvm/dist/test/Integer/testalloca_bt.ll vendor/llvm/dist/test/Integer/testarith_bt.ll vendor/llvm/dist/test/Integer/testconstants_bt.ll vendor/llvm/dist/test/Integer/testicmp_bt.ll vendor/llvm/dist/test/Integer/testlogical_bt.ll vendor/llvm/dist/test/Integer/testlogical_new_bt.ll vendor/llvm/dist/test/Integer/testmemory_bt.ll vendor/llvm/dist/test/Integer/testswitch_bt.ll vendor/llvm/dist/test/Integer/testvarargs_bt.ll vendor/llvm/dist/test/Linker/2003-10-21-ConflictingTypesTolerance.ll vendor/llvm/dist/test/Transforms/CodeExtractor/2004-03-17-OutputMismatch.ll vendor/llvm/dist/test/Transforms/FunctionAttrs/2008-10-04-LocalMemory.ll vendor/llvm/dist/test/Transforms/FunctionAttrs/2009-05-06-Malloc.ll vendor/llvm/dist/test/Transforms/GVN/2008-02-24-NonDominatedMemcpy.ll vendor/llvm/dist/test/Transforms/GVN/2008-02-26-MemCpySize.ll vendor/llvm/dist/test/Transforms/Inline/2008-03-04-StructRet.ll vendor/llvm/dist/test/Transforms/Inline/2008-03-07-Inline-2.ll vendor/llvm/dist/test/Transforms/Inline/2008-03-07-Inline.ll vendor/llvm/dist/test/Transforms/InstCombine/2006-11-03-Memmove64.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-04-04-BadFoldBitcastIntoMalloc.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-05-04-Crash.ll vendor/llvm/dist/test/Transforms/InstCombine/2011-02-16-InsertelementHang.ll vendor/llvm/dist/test/Transforms/InstCombine/malloc.ll vendor/llvm/dist/test/Transforms/InstCombine/malloc2.ll vendor/llvm/dist/test/Transforms/InstCombine/malloc3.ll vendor/llvm/dist/test/Transforms/LICM/2005-03-24-LICM-Aggregate-Crash.ll vendor/llvm/dist/test/Transforms/PruneEH/2008-09-05-CGUpdate.ll vendor/llvm/dist/test/Transforms/SCCP/2002-05-02-EdgeFailure.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2007-05-24-LargeAggregate.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2005-08-03-PHIFactorCrash.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2008-04-23-MergeMultipleResultRet.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2008-04-27-MultipleReturnCrash.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/2009-03-05-Speculative-Hoist-Dbg.ll vendor/llvm/dist/test/Verifier/2005-03-21-UndefinedTypeReference.ll vendor/llvm/dist/test/Verifier/byval-2.ll vendor/llvm/dist/unittests/VMCore/DerivedTypesTest.cpp Modified: vendor/llvm/dist/CREDITS.TXT vendor/llvm/dist/LICENSE.TXT vendor/llvm/dist/Makefile.config.in vendor/llvm/dist/Makefile.rules vendor/llvm/dist/autoconf/configure.ac vendor/llvm/dist/bindings/ocaml/llvm/llvm.ml vendor/llvm/dist/bindings/ocaml/llvm/llvm.mli vendor/llvm/dist/bindings/ocaml/llvm/llvm_ocaml.c vendor/llvm/dist/cmake/config-ix.cmake vendor/llvm/dist/cmake/modules/LLVMLibDeps.cmake vendor/llvm/dist/configure vendor/llvm/dist/docs/ExtendingLLVM.html vendor/llvm/dist/docs/LangRef.html vendor/llvm/dist/docs/ProgrammersManual.html vendor/llvm/dist/docs/ReleaseNotes.html vendor/llvm/dist/docs/WritingAnLLVMBackend.html vendor/llvm/dist/docs/index.html vendor/llvm/dist/docs/tutorial/OCamlLangImpl3.html vendor/llvm/dist/examples/BrainF/BrainF.cpp vendor/llvm/dist/examples/ExceptionDemo/ExceptionDemo.cpp vendor/llvm/dist/examples/Kaleidoscope/Chapter3/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/Chapter4/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/Chapter5/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/Chapter6/toy.cpp vendor/llvm/dist/examples/Kaleidoscope/Chapter7/toy.cpp vendor/llvm/dist/include/llvm-c/Core.h vendor/llvm/dist/include/llvm-c/Target.h vendor/llvm/dist/include/llvm-c/Transforms/IPO.h vendor/llvm/dist/include/llvm/ADT/APFloat.h vendor/llvm/dist/include/llvm/ADT/APInt.h vendor/llvm/dist/include/llvm/ADT/ArrayRef.h vendor/llvm/dist/include/llvm/ADT/ImmutableList.h vendor/llvm/dist/include/llvm/ADT/PackedVector.h vendor/llvm/dist/include/llvm/ADT/SmallVector.h vendor/llvm/dist/include/llvm/ADT/StringMap.h vendor/llvm/dist/include/llvm/ADT/Triple.h vendor/llvm/dist/include/llvm/Analysis/BranchProbabilityInfo.h vendor/llvm/dist/include/llvm/Analysis/DIBuilder.h vendor/llvm/dist/include/llvm/Analysis/IVUsers.h vendor/llvm/dist/include/llvm/Analysis/MemoryDependenceAnalysis.h vendor/llvm/dist/include/llvm/Analysis/Passes.h vendor/llvm/dist/include/llvm/Analysis/ScalarEvolutionExpander.h vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h vendor/llvm/dist/include/llvm/Assembly/Writer.h vendor/llvm/dist/include/llvm/Attributes.h vendor/llvm/dist/include/llvm/BasicBlock.h vendor/llvm/dist/include/llvm/Bitcode/BitstreamReader.h vendor/llvm/dist/include/llvm/Bitcode/LLVMBitCodes.h vendor/llvm/dist/include/llvm/CodeGen/Analysis.h vendor/llvm/dist/include/llvm/CodeGen/AsmPrinter.h vendor/llvm/dist/include/llvm/CodeGen/FunctionLoweringInfo.h vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h vendor/llvm/dist/include/llvm/CodeGen/LinkAllCodegenComponents.h vendor/llvm/dist/include/llvm/CodeGen/MachineBasicBlock.h vendor/llvm/dist/include/llvm/CodeGen/MachineFunction.h vendor/llvm/dist/include/llvm/CodeGen/MachineInstr.h vendor/llvm/dist/include/llvm/CodeGen/MachineInstrBuilder.h vendor/llvm/dist/include/llvm/CodeGen/MachineOperand.h vendor/llvm/dist/include/llvm/CodeGen/MachineRegisterInfo.h vendor/llvm/dist/include/llvm/CodeGen/Passes.h vendor/llvm/dist/include/llvm/CodeGen/RegAllocPBQP.h vendor/llvm/dist/include/llvm/CodeGen/RuntimeLibcalls.h vendor/llvm/dist/include/llvm/CodeGen/ScheduleDAG.h vendor/llvm/dist/include/llvm/CodeGen/ScoreboardHazardRecognizer.h vendor/llvm/dist/include/llvm/CodeGen/SelectionDAG.h vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGNodes.h vendor/llvm/dist/include/llvm/CodeGen/SlotIndexes.h vendor/llvm/dist/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h vendor/llvm/dist/include/llvm/CodeGen/ValueTypes.h vendor/llvm/dist/include/llvm/CodeGen/ValueTypes.td vendor/llvm/dist/include/llvm/Config/config.h.cmake vendor/llvm/dist/include/llvm/Config/config.h.in vendor/llvm/dist/include/llvm/Config/llvm-config.h.cmake vendor/llvm/dist/include/llvm/Config/llvm-config.h.in vendor/llvm/dist/include/llvm/Constant.h vendor/llvm/dist/include/llvm/Constants.h vendor/llvm/dist/include/llvm/DefaultPasses.h vendor/llvm/dist/include/llvm/DerivedTypes.h vendor/llvm/dist/include/llvm/ExecutionEngine/RuntimeDyld.h vendor/llvm/dist/include/llvm/Function.h vendor/llvm/dist/include/llvm/GlobalAlias.h vendor/llvm/dist/include/llvm/GlobalValue.h vendor/llvm/dist/include/llvm/GlobalVariable.h vendor/llvm/dist/include/llvm/InitializePasses.h vendor/llvm/dist/include/llvm/InlineAsm.h vendor/llvm/dist/include/llvm/Instructions.h vendor/llvm/dist/include/llvm/Intrinsics.h vendor/llvm/dist/include/llvm/Intrinsics.td vendor/llvm/dist/include/llvm/LLVMContext.h vendor/llvm/dist/include/llvm/LinkAllPasses.h vendor/llvm/dist/include/llvm/MC/MCAsmInfo.h vendor/llvm/dist/include/llvm/MC/MCContext.h vendor/llvm/dist/include/llvm/MC/MCMachObjectWriter.h vendor/llvm/dist/include/llvm/MC/MCObjectStreamer.h vendor/llvm/dist/include/llvm/MC/MCParser/MCParsedAsmOperand.h vendor/llvm/dist/include/llvm/MC/MCStreamer.h vendor/llvm/dist/include/llvm/Module.h vendor/llvm/dist/include/llvm/Object/ObjectFile.h vendor/llvm/dist/include/llvm/Support/BranchProbability.h vendor/llvm/dist/include/llvm/Support/CFG.h vendor/llvm/dist/include/llvm/Support/ConstantFolder.h vendor/llvm/dist/include/llvm/Support/DebugLoc.h vendor/llvm/dist/include/llvm/Support/ELF.h vendor/llvm/dist/include/llvm/Support/Endian.h vendor/llvm/dist/include/llvm/Support/IRBuilder.h vendor/llvm/dist/include/llvm/Support/NoFolder.h vendor/llvm/dist/include/llvm/Support/PassManagerBuilder.h vendor/llvm/dist/include/llvm/Support/TargetFolder.h vendor/llvm/dist/include/llvm/Support/TypeBuilder.h vendor/llvm/dist/include/llvm/Support/system_error.h vendor/llvm/dist/include/llvm/Target/Target.td vendor/llvm/dist/include/llvm/Target/TargetAsmInfo.h vendor/llvm/dist/include/llvm/Target/TargetAsmParser.h vendor/llvm/dist/include/llvm/Target/TargetData.h vendor/llvm/dist/include/llvm/Target/TargetFrameLowering.h vendor/llvm/dist/include/llvm/Target/TargetInstrInfo.h vendor/llvm/dist/include/llvm/Target/TargetLowering.h vendor/llvm/dist/include/llvm/Target/TargetLoweringObjectFile.h vendor/llvm/dist/include/llvm/Target/TargetMachine.h vendor/llvm/dist/include/llvm/Target/TargetOpcodes.h vendor/llvm/dist/include/llvm/Target/TargetOptions.h vendor/llvm/dist/include/llvm/Target/TargetRegisterInfo.h vendor/llvm/dist/include/llvm/Target/TargetRegistry.h vendor/llvm/dist/include/llvm/Target/TargetSelect.h vendor/llvm/dist/include/llvm/Target/TargetSelectionDAG.td vendor/llvm/dist/include/llvm/Transforms/IPO.h vendor/llvm/dist/include/llvm/Transforms/Scalar.h vendor/llvm/dist/include/llvm/Transforms/Utils/Cloning.h vendor/llvm/dist/include/llvm/Transforms/Utils/SSAUpdater.h vendor/llvm/dist/include/llvm/Transforms/Utils/ValueMapper.h vendor/llvm/dist/include/llvm/Type.h vendor/llvm/dist/include/llvm/Use.h vendor/llvm/dist/include/llvm/Value.h vendor/llvm/dist/lib/Analysis/Analysis.cpp vendor/llvm/dist/lib/Analysis/BranchProbabilityInfo.cpp vendor/llvm/dist/lib/Analysis/CMakeLists.txt vendor/llvm/dist/lib/Analysis/ConstantFolding.cpp vendor/llvm/dist/lib/Analysis/DIBuilder.cpp vendor/llvm/dist/lib/Analysis/DebugInfo.cpp vendor/llvm/dist/lib/Analysis/IPA/FindUsedTypes.cpp vendor/llvm/dist/lib/Analysis/IVUsers.cpp vendor/llvm/dist/lib/Analysis/InstructionSimplify.cpp vendor/llvm/dist/lib/Analysis/Lint.cpp vendor/llvm/dist/lib/Analysis/MemDepPrinter.cpp vendor/llvm/dist/lib/Analysis/MemoryBuiltins.cpp vendor/llvm/dist/lib/Analysis/MemoryDependenceAnalysis.cpp vendor/llvm/dist/lib/Analysis/ScalarEvolutionExpander.cpp vendor/llvm/dist/lib/Analysis/ValueTracking.cpp vendor/llvm/dist/lib/AsmParser/LLLexer.cpp vendor/llvm/dist/lib/AsmParser/LLLexer.h vendor/llvm/dist/lib/AsmParser/LLParser.cpp vendor/llvm/dist/lib/AsmParser/LLParser.h vendor/llvm/dist/lib/AsmParser/LLToken.h vendor/llvm/dist/lib/Bitcode/Reader/BitcodeReader.cpp vendor/llvm/dist/lib/Bitcode/Reader/BitcodeReader.h vendor/llvm/dist/lib/Bitcode/Writer/BitcodeWriter.cpp vendor/llvm/dist/lib/Bitcode/Writer/ValueEnumerator.cpp vendor/llvm/dist/lib/Bitcode/Writer/ValueEnumerator.h vendor/llvm/dist/lib/CodeGen/AggressiveAntiDepBreaker.cpp vendor/llvm/dist/lib/CodeGen/AggressiveAntiDepBreaker.h vendor/llvm/dist/lib/CodeGen/AllocationOrder.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinter.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfException.cpp vendor/llvm/dist/lib/CodeGen/BranchFolding.cpp vendor/llvm/dist/lib/CodeGen/BranchFolding.h vendor/llvm/dist/lib/CodeGen/CMakeLists.txt vendor/llvm/dist/lib/CodeGen/CalcSpillWeights.cpp vendor/llvm/dist/lib/CodeGen/CodeGen.cpp vendor/llvm/dist/lib/CodeGen/CriticalAntiDepBreaker.cpp vendor/llvm/dist/lib/CodeGen/CriticalAntiDepBreaker.h vendor/llvm/dist/lib/CodeGen/DeadMachineInstructionElim.cpp vendor/llvm/dist/lib/CodeGen/DwarfEHPrepare.cpp vendor/llvm/dist/lib/CodeGen/ELFWriter.cpp vendor/llvm/dist/lib/CodeGen/ELFWriter.h vendor/llvm/dist/lib/CodeGen/EdgeBundles.cpp vendor/llvm/dist/lib/CodeGen/ExpandISelPseudos.cpp vendor/llvm/dist/lib/CodeGen/IfConversion.cpp vendor/llvm/dist/lib/CodeGen/InlineSpiller.cpp vendor/llvm/dist/lib/CodeGen/InterferenceCache.cpp vendor/llvm/dist/lib/CodeGen/InterferenceCache.h vendor/llvm/dist/lib/CodeGen/IntrinsicLowering.cpp vendor/llvm/dist/lib/CodeGen/LLVMTargetMachine.cpp vendor/llvm/dist/lib/CodeGen/LiveDebugVariables.cpp vendor/llvm/dist/lib/CodeGen/LiveIntervalUnion.cpp vendor/llvm/dist/lib/CodeGen/LiveIntervalUnion.h vendor/llvm/dist/lib/CodeGen/LiveRangeEdit.cpp vendor/llvm/dist/lib/CodeGen/MachineBasicBlock.cpp vendor/llvm/dist/lib/CodeGen/MachineCSE.cpp vendor/llvm/dist/lib/CodeGen/MachineFunction.cpp vendor/llvm/dist/lib/CodeGen/MachineInstr.cpp vendor/llvm/dist/lib/CodeGen/MachineLICM.cpp vendor/llvm/dist/lib/CodeGen/MachineRegisterInfo.cpp vendor/llvm/dist/lib/CodeGen/MachineVerifier.cpp vendor/llvm/dist/lib/CodeGen/PeepholeOptimizer.cpp vendor/llvm/dist/lib/CodeGen/PostRASchedulerList.cpp vendor/llvm/dist/lib/CodeGen/PrologEpilogInserter.cpp vendor/llvm/dist/lib/CodeGen/RegAllocBasic.cpp vendor/llvm/dist/lib/CodeGen/RegAllocFast.cpp vendor/llvm/dist/lib/CodeGen/RegAllocGreedy.cpp vendor/llvm/dist/lib/CodeGen/RegAllocLinearScan.cpp vendor/llvm/dist/lib/CodeGen/RegAllocPBQP.cpp vendor/llvm/dist/lib/CodeGen/RegisterClassInfo.cpp vendor/llvm/dist/lib/CodeGen/RegisterClassInfo.h vendor/llvm/dist/lib/CodeGen/RegisterCoalescer.cpp vendor/llvm/dist/lib/CodeGen/RenderMachineFunction.cpp vendor/llvm/dist/lib/CodeGen/ScheduleDAG.cpp vendor/llvm/dist/lib/CodeGen/ScheduleDAGEmit.cpp vendor/llvm/dist/lib/CodeGen/ScheduleDAGInstrs.cpp vendor/llvm/dist/lib/CodeGen/ScoreboardHazardRecognizer.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/FastISel.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/InstrEmitter.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/InstrEmitter.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAG.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/TargetLowering.cpp vendor/llvm/dist/lib/CodeGen/ShadowStackGC.cpp vendor/llvm/dist/lib/CodeGen/SjLjEHPrepare.cpp vendor/llvm/dist/lib/CodeGen/SplitKit.cpp vendor/llvm/dist/lib/CodeGen/SplitKit.h vendor/llvm/dist/lib/CodeGen/Splitter.cpp vendor/llvm/dist/lib/CodeGen/StackProtector.cpp vendor/llvm/dist/lib/CodeGen/StackSlotColoring.cpp vendor/llvm/dist/lib/CodeGen/TailDuplication.cpp vendor/llvm/dist/lib/CodeGen/TargetInstrInfoImpl.cpp vendor/llvm/dist/lib/CodeGen/TargetLoweringObjectFileImpl.cpp vendor/llvm/dist/lib/CodeGen/TwoAddressInstructionPass.cpp vendor/llvm/dist/lib/CodeGen/VirtRegMap.h vendor/llvm/dist/lib/CodeGen/VirtRegRewriter.cpp vendor/llvm/dist/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp vendor/llvm/dist/lib/ExecutionEngine/JIT/JIT.cpp vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/CMakeLists.txt vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp vendor/llvm/dist/lib/ExecutionEngine/TargetSelect.cpp vendor/llvm/dist/lib/Linker/LinkModules.cpp vendor/llvm/dist/lib/MC/CMakeLists.txt vendor/llvm/dist/lib/MC/MCAsmInfo.cpp vendor/llvm/dist/lib/MC/MCAsmStreamer.cpp vendor/llvm/dist/lib/MC/MCDisassembler/Disassembler.cpp vendor/llvm/dist/lib/MC/MCDisassembler/EDDisassembler.cpp vendor/llvm/dist/lib/MC/MCDisassembler/EDDisassembler.h vendor/llvm/dist/lib/MC/MCDisassembler/EDInfo.h vendor/llvm/dist/lib/MC/MCDisassembler/EDOperand.cpp vendor/llvm/dist/lib/MC/MCDwarf.cpp vendor/llvm/dist/lib/MC/MCELFStreamer.cpp vendor/llvm/dist/lib/MC/MCELFStreamer.h vendor/llvm/dist/lib/MC/MCLoggingStreamer.cpp vendor/llvm/dist/lib/MC/MCMachOStreamer.cpp vendor/llvm/dist/lib/MC/MCNullStreamer.cpp vendor/llvm/dist/lib/MC/MCObjectStreamer.cpp vendor/llvm/dist/lib/MC/MCParser/AsmParser.cpp vendor/llvm/dist/lib/MC/MCParser/COFFAsmParser.cpp vendor/llvm/dist/lib/MC/MCParser/MCAsmParser.cpp vendor/llvm/dist/lib/MC/MCParser/TargetAsmParser.cpp vendor/llvm/dist/lib/MC/MCStreamer.cpp vendor/llvm/dist/lib/MC/MCWin64EH.cpp vendor/llvm/dist/lib/MC/MachObjectWriter.cpp vendor/llvm/dist/lib/Object/CMakeLists.txt vendor/llvm/dist/lib/Object/COFFObjectFile.cpp vendor/llvm/dist/lib/Object/ELFObjectFile.cpp vendor/llvm/dist/lib/Object/MachOObjectFile.cpp vendor/llvm/dist/lib/Object/Object.cpp vendor/llvm/dist/lib/Object/ObjectFile.cpp vendor/llvm/dist/lib/Support/APFloat.cpp vendor/llvm/dist/lib/Support/APInt.cpp vendor/llvm/dist/lib/Support/CommandLine.cpp vendor/llvm/dist/lib/Support/ConstantRange.cpp vendor/llvm/dist/lib/Support/Host.cpp vendor/llvm/dist/lib/Support/Triple.cpp vendor/llvm/dist/lib/Support/Twine.cpp vendor/llvm/dist/lib/Support/Unix/Path.inc vendor/llvm/dist/lib/Support/Windows/DynamicLibrary.inc vendor/llvm/dist/lib/Support/Windows/explicit_symbols.inc vendor/llvm/dist/lib/Target/ARM/ARM.h vendor/llvm/dist/lib/Target/ARM/ARM.td vendor/llvm/dist/lib/Target/ARM/ARMAsmBackend.cpp vendor/llvm/dist/lib/Target/ARM/ARMAsmPrinter.cpp vendor/llvm/dist/lib/Target/ARM/ARMAsmPrinter.h vendor/llvm/dist/lib/Target/ARM/ARMBaseInfo.h vendor/llvm/dist/lib/Target/ARM/ARMBaseInstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMBaseInstrInfo.h vendor/llvm/dist/lib/Target/ARM/ARMBaseRegisterInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMBaseRegisterInfo.h vendor/llvm/dist/lib/Target/ARM/ARMCodeEmitter.cpp vendor/llvm/dist/lib/Target/ARM/ARMConstantIslandPass.cpp vendor/llvm/dist/lib/Target/ARM/ARMExpandPseudoInsts.cpp vendor/llvm/dist/lib/Target/ARM/ARMFastISel.cpp vendor/llvm/dist/lib/Target/ARM/ARMFrameLowering.cpp vendor/llvm/dist/lib/Target/ARM/ARMGlobalMerge.cpp vendor/llvm/dist/lib/Target/ARM/ARMHazardRecognizer.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.h vendor/llvm/dist/lib/Target/ARM/ARMInstrFormats.td vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.td vendor/llvm/dist/lib/Target/ARM/ARMInstrNEON.td vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb.td vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb2.td vendor/llvm/dist/lib/Target/ARM/ARMInstrVFP.td vendor/llvm/dist/lib/Target/ARM/ARMLoadStoreOptimizer.cpp vendor/llvm/dist/lib/Target/ARM/ARMMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/ARM/ARMMCInstLower.cpp vendor/llvm/dist/lib/Target/ARM/ARMRegisterInfo.td vendor/llvm/dist/lib/Target/ARM/ARMSubtarget.cpp vendor/llvm/dist/lib/Target/ARM/ARMSubtarget.h vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.cpp vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.h vendor/llvm/dist/lib/Target/ARM/AsmParser/ARMAsmLexer.cpp vendor/llvm/dist/lib/Target/ARM/AsmParser/ARMAsmParser.cpp vendor/llvm/dist/lib/Target/ARM/CMakeLists.txt vendor/llvm/dist/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp vendor/llvm/dist/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h vendor/llvm/dist/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp vendor/llvm/dist/lib/Target/ARM/InstPrinter/ARMInstPrinter.h vendor/llvm/dist/lib/Target/ARM/MLxExpansionPass.cpp vendor/llvm/dist/lib/Target/ARM/Makefile vendor/llvm/dist/lib/Target/ARM/NEONMoveFix.cpp vendor/llvm/dist/lib/Target/ARM/README.txt vendor/llvm/dist/lib/Target/ARM/Thumb1FrameLowering.cpp vendor/llvm/dist/lib/Target/ARM/Thumb1InstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/Thumb1RegisterInfo.cpp vendor/llvm/dist/lib/Target/ARM/Thumb2ITBlockPass.cpp vendor/llvm/dist/lib/Target/ARM/Thumb2InstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/Thumb2SizeReduction.cpp vendor/llvm/dist/lib/Target/Alpha/Alpha.h vendor/llvm/dist/lib/Target/Alpha/AlphaISelLowering.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaISelLowering.h vendor/llvm/dist/lib/Target/Alpha/AlphaInstrInfo.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaInstrInfo.h vendor/llvm/dist/lib/Target/Alpha/AlphaRegisterInfo.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaRegisterInfo.h vendor/llvm/dist/lib/Target/Alpha/AlphaRegisterInfo.td vendor/llvm/dist/lib/Target/Alpha/AlphaSubtarget.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaSubtarget.h vendor/llvm/dist/lib/Target/Alpha/AlphaTargetMachine.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaTargetMachine.h vendor/llvm/dist/lib/Target/Alpha/CMakeLists.txt vendor/llvm/dist/lib/Target/Alpha/Makefile vendor/llvm/dist/lib/Target/Blackfin/Blackfin.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinISelLowering.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinISelLowering.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinInstrInfo.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinInstrInfo.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinIntrinsicInfo.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinRegisterInfo.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinRegisterInfo.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinRegisterInfo.td vendor/llvm/dist/lib/Target/Blackfin/BlackfinSubtarget.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinSubtarget.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinTargetMachine.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinTargetMachine.h vendor/llvm/dist/lib/Target/Blackfin/CMakeLists.txt vendor/llvm/dist/lib/Target/Blackfin/Makefile vendor/llvm/dist/lib/Target/CBackend/CBackend.cpp vendor/llvm/dist/lib/Target/CBackend/CTargetMachine.h vendor/llvm/dist/lib/Target/CMakeLists.txt vendor/llvm/dist/lib/Target/CellSPU/CMakeLists.txt vendor/llvm/dist/lib/Target/CellSPU/Makefile vendor/llvm/dist/lib/Target/CellSPU/SPU.h vendor/llvm/dist/lib/Target/CellSPU/SPUFrameLowering.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUISelLowering.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUInstrInfo.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUInstrInfo.h vendor/llvm/dist/lib/Target/CellSPU/SPURegisterInfo.cpp vendor/llvm/dist/lib/Target/CellSPU/SPURegisterInfo.h vendor/llvm/dist/lib/Target/CellSPU/SPURegisterInfo.td vendor/llvm/dist/lib/Target/CellSPU/SPURegisterNames.h vendor/llvm/dist/lib/Target/CellSPU/SPUSubtarget.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUSubtarget.h vendor/llvm/dist/lib/Target/CellSPU/SPUTargetMachine.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUTargetMachine.h vendor/llvm/dist/lib/Target/CppBackend/CPPBackend.cpp vendor/llvm/dist/lib/Target/CppBackend/CPPTargetMachine.h vendor/llvm/dist/lib/Target/MBlaze/AsmParser/MBlazeAsmLexer.cpp vendor/llvm/dist/lib/Target/MBlaze/AsmParser/MBlazeAsmParser.cpp vendor/llvm/dist/lib/Target/MBlaze/CMakeLists.txt vendor/llvm/dist/lib/Target/MBlaze/Disassembler/MBlazeDisassembler.cpp vendor/llvm/dist/lib/Target/MBlaze/InstPrinter/MBlazeInstPrinter.h vendor/llvm/dist/lib/Target/MBlaze/MBlaze.h vendor/llvm/dist/lib/Target/MBlaze/MBlazeAsmPrinter.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeDelaySlotFiller.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeISelLowering.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeISelLowering.h vendor/llvm/dist/lib/Target/MBlaze/MBlazeInstrInfo.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeInstrInfo.h vendor/llvm/dist/lib/Target/MBlaze/MBlazeIntrinsicInfo.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeRegisterInfo.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeRegisterInfo.h vendor/llvm/dist/lib/Target/MBlaze/MBlazeRegisterInfo.td vendor/llvm/dist/lib/Target/MBlaze/MBlazeSubtarget.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeSubtarget.h vendor/llvm/dist/lib/Target/MBlaze/MBlazeTargetMachine.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeTargetMachine.h vendor/llvm/dist/lib/Target/MBlaze/Makefile vendor/llvm/dist/lib/Target/MSP430/CMakeLists.txt vendor/llvm/dist/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.h vendor/llvm/dist/lib/Target/MSP430/MSP430.h vendor/llvm/dist/lib/Target/MSP430/MSP430AsmPrinter.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430InstrInfo.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430InstrInfo.h vendor/llvm/dist/lib/Target/MSP430/MSP430RegisterInfo.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430RegisterInfo.h vendor/llvm/dist/lib/Target/MSP430/MSP430RegisterInfo.td vendor/llvm/dist/lib/Target/MSP430/MSP430Subtarget.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430Subtarget.h vendor/llvm/dist/lib/Target/MSP430/MSP430TargetMachine.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430TargetMachine.h vendor/llvm/dist/lib/Target/MSP430/Makefile vendor/llvm/dist/lib/Target/Mips/CMakeLists.txt vendor/llvm/dist/lib/Target/Mips/Makefile vendor/llvm/dist/lib/Target/Mips/Mips.h vendor/llvm/dist/lib/Target/Mips/Mips.td vendor/llvm/dist/lib/Target/Mips/MipsAsmPrinter.cpp vendor/llvm/dist/lib/Target/Mips/MipsCallingConv.td vendor/llvm/dist/lib/Target/Mips/MipsDelaySlotFiller.cpp vendor/llvm/dist/lib/Target/Mips/MipsEmitGPRestore.cpp vendor/llvm/dist/lib/Target/Mips/MipsExpandPseudo.cpp vendor/llvm/dist/lib/Target/Mips/MipsISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/Mips/MipsISelLowering.cpp vendor/llvm/dist/lib/Target/Mips/MipsISelLowering.h vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.cpp vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.h vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.td vendor/llvm/dist/lib/Target/Mips/MipsMachineFunction.h vendor/llvm/dist/lib/Target/Mips/MipsRegisterInfo.cpp vendor/llvm/dist/lib/Target/Mips/MipsRegisterInfo.h vendor/llvm/dist/lib/Target/Mips/MipsRegisterInfo.td vendor/llvm/dist/lib/Target/Mips/MipsSubtarget.cpp vendor/llvm/dist/lib/Target/Mips/MipsSubtarget.h vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.cpp vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.h vendor/llvm/dist/lib/Target/PTX/CMakeLists.txt vendor/llvm/dist/lib/Target/PTX/Makefile vendor/llvm/dist/lib/Target/PTX/PTX.h vendor/llvm/dist/lib/Target/PTX/PTX.td vendor/llvm/dist/lib/Target/PTX/PTXAsmPrinter.cpp vendor/llvm/dist/lib/Target/PTX/PTXISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/PTX/PTXISelLowering.cpp vendor/llvm/dist/lib/Target/PTX/PTXISelLowering.h vendor/llvm/dist/lib/Target/PTX/PTXInstrFormats.td vendor/llvm/dist/lib/Target/PTX/PTXInstrInfo.cpp vendor/llvm/dist/lib/Target/PTX/PTXInstrInfo.h vendor/llvm/dist/lib/Target/PTX/PTXInstrInfo.td vendor/llvm/dist/lib/Target/PTX/PTXIntrinsicInstrInfo.td vendor/llvm/dist/lib/Target/PTX/PTXMCAsmStreamer.cpp vendor/llvm/dist/lib/Target/PTX/PTXMFInfoExtract.cpp vendor/llvm/dist/lib/Target/PTX/PTXMachineFunctionInfo.h vendor/llvm/dist/lib/Target/PTX/PTXRegisterInfo.cpp vendor/llvm/dist/lib/Target/PTX/PTXRegisterInfo.h vendor/llvm/dist/lib/Target/PTX/PTXRegisterInfo.td vendor/llvm/dist/lib/Target/PTX/PTXSubtarget.cpp vendor/llvm/dist/lib/Target/PTX/PTXSubtarget.h vendor/llvm/dist/lib/Target/PTX/PTXTargetMachine.cpp vendor/llvm/dist/lib/Target/PTX/PTXTargetMachine.h vendor/llvm/dist/lib/Target/PowerPC/CMakeLists.txt vendor/llvm/dist/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h vendor/llvm/dist/lib/Target/PowerPC/Makefile vendor/llvm/dist/lib/Target/PowerPC/PPC.h vendor/llvm/dist/lib/Target/PowerPC/PPCAsmBackend.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCAsmPrinter.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCHazardRecognizers.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.h vendor/llvm/dist/lib/Target/PowerPC/PPCJITInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.h vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.td vendor/llvm/dist/lib/Target/PowerPC/PPCSubtarget.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCSubtarget.h vendor/llvm/dist/lib/Target/PowerPC/PPCTargetMachine.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCTargetMachine.h vendor/llvm/dist/lib/Target/README.txt vendor/llvm/dist/lib/Target/Sparc/CMakeLists.txt vendor/llvm/dist/lib/Target/Sparc/DelaySlotFiller.cpp vendor/llvm/dist/lib/Target/Sparc/Makefile vendor/llvm/dist/lib/Target/Sparc/Sparc.h vendor/llvm/dist/lib/Target/Sparc/SparcISelLowering.cpp vendor/llvm/dist/lib/Target/Sparc/SparcISelLowering.h vendor/llvm/dist/lib/Target/Sparc/SparcInstrInfo.cpp vendor/llvm/dist/lib/Target/Sparc/SparcInstrInfo.h vendor/llvm/dist/lib/Target/Sparc/SparcRegisterInfo.cpp vendor/llvm/dist/lib/Target/Sparc/SparcRegisterInfo.h vendor/llvm/dist/lib/Target/Sparc/SparcRegisterInfo.td vendor/llvm/dist/lib/Target/Sparc/SparcSubtarget.cpp vendor/llvm/dist/lib/Target/Sparc/SparcSubtarget.h vendor/llvm/dist/lib/Target/Sparc/SparcTargetMachine.cpp vendor/llvm/dist/lib/Target/Sparc/SparcTargetMachine.h vendor/llvm/dist/lib/Target/SystemZ/CMakeLists.txt vendor/llvm/dist/lib/Target/SystemZ/Makefile vendor/llvm/dist/lib/Target/SystemZ/SystemZ.h vendor/llvm/dist/lib/Target/SystemZ/SystemZISelLowering.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrBuilder.h vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrInfo.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrInfo.h vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.h vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.td vendor/llvm/dist/lib/Target/SystemZ/SystemZSubtarget.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZSubtarget.h vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetMachine.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetMachine.h vendor/llvm/dist/lib/Target/Target.cpp vendor/llvm/dist/lib/Target/TargetAsmInfo.cpp vendor/llvm/dist/lib/Target/TargetData.cpp vendor/llvm/dist/lib/Target/TargetInstrInfo.cpp vendor/llvm/dist/lib/Target/TargetLoweringObjectFile.cpp vendor/llvm/dist/lib/Target/TargetMachine.cpp vendor/llvm/dist/lib/Target/TargetRegisterInfo.cpp vendor/llvm/dist/lib/Target/X86/AsmParser/X86AsmParser.cpp vendor/llvm/dist/lib/Target/X86/CMakeLists.txt vendor/llvm/dist/lib/Target/X86/Disassembler/X86Disassembler.cpp vendor/llvm/dist/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp vendor/llvm/dist/lib/Target/X86/InstPrinter/X86ATTInstPrinter.h vendor/llvm/dist/lib/Target/X86/InstPrinter/X86InstComments.cpp vendor/llvm/dist/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp vendor/llvm/dist/lib/Target/X86/InstPrinter/X86IntelInstPrinter.h vendor/llvm/dist/lib/Target/X86/Makefile vendor/llvm/dist/lib/Target/X86/X86.h vendor/llvm/dist/lib/Target/X86/X86.td vendor/llvm/dist/lib/Target/X86/X86AsmBackend.cpp vendor/llvm/dist/lib/Target/X86/X86AsmPrinter.cpp vendor/llvm/dist/lib/Target/X86/X86CallingConv.td vendor/llvm/dist/lib/Target/X86/X86CodeEmitter.cpp vendor/llvm/dist/lib/Target/X86/X86FastISel.cpp vendor/llvm/dist/lib/Target/X86/X86FloatingPoint.cpp vendor/llvm/dist/lib/Target/X86/X86FrameLowering.cpp vendor/llvm/dist/lib/Target/X86/X86FrameLowering.h vendor/llvm/dist/lib/Target/X86/X86ISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/X86/X86ISelLowering.cpp vendor/llvm/dist/lib/Target/X86/X86ISelLowering.h vendor/llvm/dist/lib/Target/X86/X86InstrBuilder.h vendor/llvm/dist/lib/Target/X86/X86InstrCompiler.td vendor/llvm/dist/lib/Target/X86/X86InstrFPStack.td vendor/llvm/dist/lib/Target/X86/X86InstrFormats.td vendor/llvm/dist/lib/Target/X86/X86InstrFragmentsSIMD.td vendor/llvm/dist/lib/Target/X86/X86InstrInfo.cpp vendor/llvm/dist/lib/Target/X86/X86InstrInfo.h vendor/llvm/dist/lib/Target/X86/X86InstrInfo.td vendor/llvm/dist/lib/Target/X86/X86InstrSSE.td vendor/llvm/dist/lib/Target/X86/X86InstrSystem.td vendor/llvm/dist/lib/Target/X86/X86MCCodeEmitter.cpp vendor/llvm/dist/lib/Target/X86/X86MCInstLower.cpp vendor/llvm/dist/lib/Target/X86/X86MachObjectWriter.cpp vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.cpp vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.h vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.td vendor/llvm/dist/lib/Target/X86/X86Subtarget.cpp vendor/llvm/dist/lib/Target/X86/X86Subtarget.h vendor/llvm/dist/lib/Target/X86/X86TargetMachine.cpp vendor/llvm/dist/lib/Target/X86/X86TargetMachine.h vendor/llvm/dist/lib/Target/XCore/CMakeLists.txt vendor/llvm/dist/lib/Target/XCore/Makefile vendor/llvm/dist/lib/Target/XCore/XCore.h vendor/llvm/dist/lib/Target/XCore/XCoreAsmPrinter.cpp vendor/llvm/dist/lib/Target/XCore/XCoreISelLowering.cpp vendor/llvm/dist/lib/Target/XCore/XCoreISelLowering.h vendor/llvm/dist/lib/Target/XCore/XCoreInstrInfo.cpp vendor/llvm/dist/lib/Target/XCore/XCoreInstrInfo.h vendor/llvm/dist/lib/Target/XCore/XCoreRegisterInfo.cpp vendor/llvm/dist/lib/Target/XCore/XCoreRegisterInfo.h vendor/llvm/dist/lib/Target/XCore/XCoreRegisterInfo.td vendor/llvm/dist/lib/Target/XCore/XCoreSubtarget.cpp vendor/llvm/dist/lib/Target/XCore/XCoreSubtarget.h vendor/llvm/dist/lib/Target/XCore/XCoreTargetMachine.cpp vendor/llvm/dist/lib/Target/XCore/XCoreTargetMachine.h vendor/llvm/dist/lib/Transforms/IPO/ArgumentPromotion.cpp vendor/llvm/dist/lib/Transforms/IPO/CMakeLists.txt vendor/llvm/dist/lib/Transforms/IPO/DeadArgumentElimination.cpp vendor/llvm/dist/lib/Transforms/IPO/GlobalOpt.cpp vendor/llvm/dist/lib/Transforms/IPO/IPO.cpp vendor/llvm/dist/lib/Transforms/IPO/LowerSetJmp.cpp vendor/llvm/dist/lib/Transforms/IPO/MergeFunctions.cpp vendor/llvm/dist/lib/Transforms/IPO/PruneEH.cpp vendor/llvm/dist/lib/Transforms/IPO/StripSymbols.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCalls.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCasts.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCompares.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineSelect.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstructionCombining.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/GCOVProfiling.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/PathProfiling.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/ProfilingUtils.cpp vendor/llvm/dist/lib/Transforms/Scalar/CMakeLists.txt vendor/llvm/dist/lib/Transforms/Scalar/DeadStoreElimination.cpp vendor/llvm/dist/lib/Transforms/Scalar/GVN.cpp vendor/llvm/dist/lib/Transforms/Scalar/IndVarSimplify.cpp vendor/llvm/dist/lib/Transforms/Scalar/JumpThreading.cpp vendor/llvm/dist/lib/Transforms/Scalar/LICM.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopDeletion.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopIdiomRecognize.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopRotation.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopStrengthReduce.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopUnswitch.cpp vendor/llvm/dist/lib/Transforms/Scalar/MemCpyOptimizer.cpp vendor/llvm/dist/lib/Transforms/Scalar/Reassociate.cpp vendor/llvm/dist/lib/Transforms/Scalar/Scalar.cpp vendor/llvm/dist/lib/Transforms/Scalar/ScalarReplAggregates.cpp vendor/llvm/dist/lib/Transforms/Scalar/SimplifyCFGPass.cpp vendor/llvm/dist/lib/Transforms/Scalar/SimplifyLibCalls.cpp vendor/llvm/dist/lib/Transforms/Utils/BasicBlockUtils.cpp vendor/llvm/dist/lib/Transforms/Utils/BreakCriticalEdges.cpp vendor/llvm/dist/lib/Transforms/Utils/CMakeLists.txt vendor/llvm/dist/lib/Transforms/Utils/CloneFunction.cpp vendor/llvm/dist/lib/Transforms/Utils/CloneModule.cpp vendor/llvm/dist/lib/Transforms/Utils/CodeExtractor.cpp vendor/llvm/dist/lib/Transforms/Utils/InlineFunction.cpp vendor/llvm/dist/lib/Transforms/Utils/Local.cpp vendor/llvm/dist/lib/Transforms/Utils/LoopSimplify.cpp vendor/llvm/dist/lib/Transforms/Utils/LoopUnroll.cpp vendor/llvm/dist/lib/Transforms/Utils/LowerInvoke.cpp vendor/llvm/dist/lib/Transforms/Utils/PromoteMemoryToRegister.cpp vendor/llvm/dist/lib/Transforms/Utils/SSAUpdater.cpp vendor/llvm/dist/lib/Transforms/Utils/SimplifyCFG.cpp vendor/llvm/dist/lib/Transforms/Utils/ValueMapper.cpp vendor/llvm/dist/lib/VMCore/AsmWriter.cpp vendor/llvm/dist/lib/VMCore/Attributes.cpp vendor/llvm/dist/lib/VMCore/AutoUpgrade.cpp vendor/llvm/dist/lib/VMCore/BasicBlock.cpp vendor/llvm/dist/lib/VMCore/CMakeLists.txt vendor/llvm/dist/lib/VMCore/ConstantFold.cpp vendor/llvm/dist/lib/VMCore/ConstantFold.h vendor/llvm/dist/lib/VMCore/Constants.cpp vendor/llvm/dist/lib/VMCore/ConstantsContext.h vendor/llvm/dist/lib/VMCore/Core.cpp vendor/llvm/dist/lib/VMCore/DebugLoc.cpp vendor/llvm/dist/lib/VMCore/Function.cpp vendor/llvm/dist/lib/VMCore/Globals.cpp vendor/llvm/dist/lib/VMCore/IRBuilder.cpp vendor/llvm/dist/lib/VMCore/InlineAsm.cpp vendor/llvm/dist/lib/VMCore/Instruction.cpp vendor/llvm/dist/lib/VMCore/Instructions.cpp vendor/llvm/dist/lib/VMCore/LLVMContext.cpp vendor/llvm/dist/lib/VMCore/LLVMContextImpl.cpp vendor/llvm/dist/lib/VMCore/LLVMContextImpl.h vendor/llvm/dist/lib/VMCore/Metadata.cpp vendor/llvm/dist/lib/VMCore/Module.cpp vendor/llvm/dist/lib/VMCore/Type.cpp vendor/llvm/dist/lib/VMCore/Use.cpp vendor/llvm/dist/lib/VMCore/User.cpp vendor/llvm/dist/lib/VMCore/Value.cpp vendor/llvm/dist/lib/VMCore/ValueSymbolTable.cpp vendor/llvm/dist/lib/VMCore/ValueTypes.cpp vendor/llvm/dist/lib/VMCore/Verifier.cpp vendor/llvm/dist/runtime/libprofile/GCDAProfiling.c vendor/llvm/dist/runtime/libprofile/Makefile vendor/llvm/dist/test/Analysis/BasicAA/args-rets-allocas-loads.ll vendor/llvm/dist/test/Analysis/BasicAA/getmodrefinfo-cs-cs.ll vendor/llvm/dist/test/Analysis/BasicAA/modref.ll vendor/llvm/dist/test/Analysis/GlobalsModRef/indirect-global.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/SolveQuadraticEquation.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/avoid-infinite-recursion-1.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/avoid-smax-1.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/pr3909.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count2.ll vendor/llvm/dist/test/Analysis/ScalarEvolution/trip-count3.ll vendor/llvm/dist/test/Archive/extract.ll vendor/llvm/dist/test/Assembler/2002-07-25-ReturnPtrFunction.ll vendor/llvm/dist/test/Assembler/2002-12-15-GlobalResolve.ll vendor/llvm/dist/test/Assembler/2003-04-15-ConstantInitAssertion.ll vendor/llvm/dist/test/Assembler/2003-05-21-MalformedStructCrash.ll vendor/llvm/dist/test/Assembler/2004-11-28-InvalidTypeCrash.ll vendor/llvm/dist/test/Assembler/2009-02-28-CastOpc.ll vendor/llvm/dist/test/Assembler/AutoUpgradeIntrinsics.ll vendor/llvm/dist/test/Assembler/getelementptr.ll vendor/llvm/dist/test/Bindings/Ocaml/bitreader.ml vendor/llvm/dist/test/Bindings/Ocaml/bitwriter.ml vendor/llvm/dist/test/Bindings/Ocaml/vmcore.ml vendor/llvm/dist/test/Bitcode/metadata-2.ll vendor/llvm/dist/test/CMakeLists.txt vendor/llvm/dist/test/CodeGen/ARM/2007-05-03-BadPostIndexedLd.ll vendor/llvm/dist/test/CodeGen/ARM/2007-05-07-tailmerge-1.ll vendor/llvm/dist/test/CodeGen/ARM/2007-05-09-tailmerge-2.ll vendor/llvm/dist/test/CodeGen/ARM/2007-05-22-tailmerge-3.ll vendor/llvm/dist/test/CodeGen/ARM/2008-04-04-ScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2008-04-10-ScavengerAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2009-03-07-SpillerBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-08-21-PostRAKill3.ll vendor/llvm/dist/test/CodeGen/ARM/2009-08-31-LSDA-Name.ll vendor/llvm/dist/test/CodeGen/ARM/2009-10-30.ll vendor/llvm/dist/test/CodeGen/ARM/2009-11-01-NeonMoves.ll vendor/llvm/dist/test/CodeGen/ARM/2010-08-04-StackVariable.ll vendor/llvm/dist/test/CodeGen/ARM/2010-10-19-mc-elf-objheader.ll vendor/llvm/dist/test/CodeGen/ARM/arm-modifier.ll vendor/llvm/dist/test/CodeGen/ARM/armv4.ll vendor/llvm/dist/test/CodeGen/ARM/bfi.ll vendor/llvm/dist/test/CodeGen/ARM/bfx.ll vendor/llvm/dist/test/CodeGen/ARM/call-tc.ll vendor/llvm/dist/test/CodeGen/ARM/call.ll vendor/llvm/dist/test/CodeGen/ARM/carry.ll vendor/llvm/dist/test/CodeGen/ARM/constants.ll vendor/llvm/dist/test/CodeGen/ARM/dyn-stackalloc.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel-static.ll vendor/llvm/dist/test/CodeGen/ARM/fast-isel.ll vendor/llvm/dist/test/CodeGen/ARM/fp.ll vendor/llvm/dist/test/CodeGen/ARM/globals.ll vendor/llvm/dist/test/CodeGen/ARM/hello.ll vendor/llvm/dist/test/CodeGen/ARM/iabs.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt1.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt2.ll vendor/llvm/dist/test/CodeGen/ARM/ifcvt3.ll vendor/llvm/dist/test/CodeGen/ARM/indirectbr.ll vendor/llvm/dist/test/CodeGen/ARM/inlineasm3.ll vendor/llvm/dist/test/CodeGen/ARM/ldr_frame.ll vendor/llvm/dist/test/CodeGen/ARM/long.ll vendor/llvm/dist/test/CodeGen/ARM/lsr-unfolded-offset.ll vendor/llvm/dist/test/CodeGen/ARM/memcpy-inline.ll vendor/llvm/dist/test/CodeGen/ARM/memfunc.ll vendor/llvm/dist/test/CodeGen/ARM/phi.ll vendor/llvm/dist/test/CodeGen/ARM/prefetch.ll vendor/llvm/dist/test/CodeGen/ARM/private.ll vendor/llvm/dist/test/CodeGen/ARM/reg_sequence.ll vendor/llvm/dist/test/CodeGen/ARM/rev.ll vendor/llvm/dist/test/CodeGen/ARM/section.ll vendor/llvm/dist/test/CodeGen/ARM/select-imm.ll vendor/llvm/dist/test/CodeGen/ARM/select_xform.ll vendor/llvm/dist/test/CodeGen/ARM/sub.ll vendor/llvm/dist/test/CodeGen/ARM/sxt_rot.ll vendor/llvm/dist/test/CodeGen/ARM/truncstore-dag-combine.ll vendor/llvm/dist/test/CodeGen/ARM/uxt_rot.ll vendor/llvm/dist/test/CodeGen/ARM/vargs_align.ll vendor/llvm/dist/test/CodeGen/ARM/vmul.ll vendor/llvm/dist/test/CodeGen/ARM/vpadd.ll vendor/llvm/dist/test/CodeGen/ARM/vqdmul.ll vendor/llvm/dist/test/CodeGen/Alpha/add.ll vendor/llvm/dist/test/CodeGen/Alpha/i32_sub_1.ll vendor/llvm/dist/test/CodeGen/Alpha/private.ll vendor/llvm/dist/test/CodeGen/Alpha/zapnot.ll vendor/llvm/dist/test/CodeGen/Blackfin/add-overflow.ll vendor/llvm/dist/test/CodeGen/Blackfin/many-args.ll vendor/llvm/dist/test/CodeGen/CellSPU/and_ops.ll vendor/llvm/dist/test/CodeGen/CellSPU/eqv.ll vendor/llvm/dist/test/CodeGen/CellSPU/mul-with-overflow.ll vendor/llvm/dist/test/CodeGen/CellSPU/nand.ll vendor/llvm/dist/test/CodeGen/CellSPU/or_ops.ll vendor/llvm/dist/test/CodeGen/CellSPU/private.ll vendor/llvm/dist/test/CodeGen/CellSPU/shift_ops.ll vendor/llvm/dist/test/CodeGen/CellSPU/struct_1.ll vendor/llvm/dist/test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll vendor/llvm/dist/test/CodeGen/Generic/crash.ll vendor/llvm/dist/test/CodeGen/Generic/invalid-memcpy.ll vendor/llvm/dist/test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll vendor/llvm/dist/test/CodeGen/Mips/2008-07-15-SmallSection.ll vendor/llvm/dist/test/CodeGen/Mips/2008-07-16-SignExtInReg.ll vendor/llvm/dist/test/CodeGen/Mips/alloca.ll vendor/llvm/dist/test/CodeGen/Mips/i64arg.ll vendor/llvm/dist/test/CodeGen/Mips/internalfunc.ll vendor/llvm/dist/test/CodeGen/Mips/largeimmprinting.ll vendor/llvm/dist/test/CodeGen/Mips/o32_cc_byval.ll vendor/llvm/dist/test/CodeGen/Mips/private.ll vendor/llvm/dist/test/CodeGen/PTX/add.ll vendor/llvm/dist/test/CodeGen/PTX/bitwise.ll vendor/llvm/dist/test/CodeGen/PTX/bra.ll vendor/llvm/dist/test/CodeGen/PTX/cvt.ll vendor/llvm/dist/test/CodeGen/PTX/fdiv-sm10.ll vendor/llvm/dist/test/CodeGen/PTX/fdiv-sm13.ll vendor/llvm/dist/test/CodeGen/PTX/fneg.ll vendor/llvm/dist/test/CodeGen/PTX/intrinsic.ll vendor/llvm/dist/test/CodeGen/PTX/ld.ll vendor/llvm/dist/test/CodeGen/PTX/llvm-intrinsic.ll vendor/llvm/dist/test/CodeGen/PTX/mad.ll vendor/llvm/dist/test/CodeGen/PTX/mov.ll vendor/llvm/dist/test/CodeGen/PTX/mul.ll vendor/llvm/dist/test/CodeGen/PTX/options.ll vendor/llvm/dist/test/CodeGen/PTX/parameter-order.ll vendor/llvm/dist/test/CodeGen/PTX/selp.ll vendor/llvm/dist/test/CodeGen/PTX/setp.ll vendor/llvm/dist/test/CodeGen/PTX/shl.ll vendor/llvm/dist/test/CodeGen/PTX/shr.ll vendor/llvm/dist/test/CodeGen/PTX/st.ll vendor/llvm/dist/test/CodeGen/PTX/sub.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-01-15-AsmDialect.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-05-22-tailmerge-3.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-05-30-dagcombine-miscomp.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-03-24-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-07-15-SignExtendInreg.ll vendor/llvm/dist/test/CodeGen/PowerPC/and-elim.ll vendor/llvm/dist/test/CodeGen/PowerPC/and_sext.ll vendor/llvm/dist/test/CodeGen/PowerPC/atomic-1.ll vendor/llvm/dist/test/CodeGen/PowerPC/atomic-2.ll vendor/llvm/dist/test/CodeGen/PowerPC/calls.ll vendor/llvm/dist/test/CodeGen/PowerPC/mul-with-overflow.ll vendor/llvm/dist/test/CodeGen/PowerPC/small-arguments.ll vendor/llvm/dist/test/CodeGen/PowerPC/vector.ll vendor/llvm/dist/test/CodeGen/SPARC/private.ll vendor/llvm/dist/test/CodeGen/SystemZ/02-MemArith.ll vendor/llvm/dist/test/CodeGen/SystemZ/03-RetAddImmSubreg.ll vendor/llvm/dist/test/CodeGen/SystemZ/03-RetAddSubreg.ll vendor/llvm/dist/test/CodeGen/SystemZ/03-RetAndImmSubreg.ll vendor/llvm/dist/test/CodeGen/SystemZ/03-RetAndSubreg.ll vendor/llvm/dist/test/CodeGen/SystemZ/03-RetArgSubreg.ll vendor/llvm/dist/test/CodeGen/SystemZ/03-RetImmSubreg.ll vendor/llvm/dist/test/CodeGen/SystemZ/03-RetOrImmSubreg.ll vendor/llvm/dist/test/CodeGen/SystemZ/03-RetOrSubreg.ll vendor/llvm/dist/test/CodeGen/SystemZ/03-RetSubImmSubreg.ll vendor/llvm/dist/test/CodeGen/SystemZ/03-RetSubSubreg.ll vendor/llvm/dist/test/CodeGen/SystemZ/03-RetXorImmSubreg.ll vendor/llvm/dist/test/CodeGen/SystemZ/03-RetXorSubreg.ll vendor/llvm/dist/test/CodeGen/SystemZ/11-BSwap.ll vendor/llvm/dist/test/CodeGen/Thumb/barrier.ll vendor/llvm/dist/test/CodeGen/Thumb/dyn-stackalloc.ll vendor/llvm/dist/test/CodeGen/Thumb/select.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-02-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-04-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-04-ScavengerAssert.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-08-04-SubregLoweringBug.ll vendor/llvm/dist/test/CodeGen/Thumb2/2009-10-15-ITBlockBranch.ll vendor/llvm/dist/test/CodeGen/Thumb2/2010-06-14-NEONCoalescer.ll vendor/llvm/dist/test/CodeGen/Thumb2/2011-06-07-TwoAddrEarlyClobber.ll vendor/llvm/dist/test/CodeGen/Thumb2/ldr-str-imm12.ll vendor/llvm/dist/test/CodeGen/Thumb2/lsr-deficiency.ll vendor/llvm/dist/test/CodeGen/Thumb2/machine-licm.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-add.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-bcc.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-branch.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-clz.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-ifcvt1.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-mulhi.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-rev.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-sbc.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-smla.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-smul.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-sxt_rot.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-teq.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-teq2.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-tst.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-tst2.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-uxt_rot.ll vendor/llvm/dist/test/CodeGen/X86/2006-11-12-CSRetCC.ll vendor/llvm/dist/test/CodeGen/X86/2007-02-04-OrAddrMode.ll vendor/llvm/dist/test/CodeGen/X86/2007-02-23-DAGCombine-Miscompile.ll vendor/llvm/dist/test/CodeGen/X86/2007-03-16-InlineAsm.ll vendor/llvm/dist/test/CodeGen/X86/2007-03-24-InlineAsmXConstraint.ll vendor/llvm/dist/test/CodeGen/X86/2007-05-05-Personality.ll vendor/llvm/dist/test/CodeGen/X86/2007-05-07-InvokeSRet.ll vendor/llvm/dist/test/CodeGen/X86/2007-05-14-LiveIntervalAssert.ll vendor/llvm/dist/test/CodeGen/X86/2007-08-01-LiveVariablesBug.ll vendor/llvm/dist/test/CodeGen/X86/2007-08-10-SignExtSubreg.ll vendor/llvm/dist/test/CodeGen/X86/2007-09-17-ObjcFrameEH.ll vendor/llvm/dist/test/CodeGen/X86/2007-09-27-LDIntrinsics.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-12-SpillerUnfold2.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-15-CoalescerCrash.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-19-SpillerUnfold.ll vendor/llvm/dist/test/CodeGen/X86/2007-10-29-ExtendSetCC.ll vendor/llvm/dist/test/CodeGen/X86/2008-02-25-X86-64-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-03-13-TwoAddrPassCrash.ll vendor/llvm/dist/test/CodeGen/X86/2008-04-16-ReMatBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-04-17-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-04-26-Asm-Optimize-Imm.ll vendor/llvm/dist/test/CodeGen/X86/2008-09-25-sseregparm-1.ll vendor/llvm/dist/test/CodeGen/X86/2008-10-27-StackRealignment.ll vendor/llvm/dist/test/CodeGen/X86/2009-01-25-NoSSE.ll vendor/llvm/dist/test/CodeGen/X86/2009-02-12-InlineAsm-nieZ-constraints.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-12-FastIselOverflowCrash.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-13-2AddrAssert-2.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-29-LinearScanBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-29-RegAllocAssert.ll vendor/llvm/dist/test/CodeGen/X86/2009-06-04-VirtualLiveIn.ll vendor/llvm/dist/test/CodeGen/X86/2009-08-06-branchfolder-crash.ll vendor/llvm/dist/test/CodeGen/X86/2009-08-14-Win64MemoryIndirectArg.ll vendor/llvm/dist/test/CodeGen/X86/2009-09-19-earlyclobber.ll vendor/llvm/dist/test/CodeGen/X86/2009-11-16-UnfoldMemOpBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-12-01-EarlyClobberBug.ll vendor/llvm/dist/test/CodeGen/X86/2010-02-12-CoalescerBug-Impdef.ll vendor/llvm/dist/test/CodeGen/X86/2010-04-08-CoalescerBug.ll vendor/llvm/dist/test/CodeGen/X86/2010-06-25-CoalescerSubRegDefDead.ll vendor/llvm/dist/test/CodeGen/X86/2010-07-11-FPStackLoneUse.ll vendor/llvm/dist/test/CodeGen/X86/2010-09-17-SideEffectsInChain.ll vendor/llvm/dist/test/CodeGen/X86/2010-11-09-MOVLPS.ll vendor/llvm/dist/test/CodeGen/X86/2011-04-13-SchedCmpJmp.ll vendor/llvm/dist/test/CodeGen/X86/adde-carry.ll vendor/llvm/dist/test/CodeGen/X86/asm-global-imm.ll vendor/llvm/dist/test/CodeGen/X86/avx-128.ll vendor/llvm/dist/test/CodeGen/X86/bswap.ll vendor/llvm/dist/test/CodeGen/X86/byval2.ll vendor/llvm/dist/test/CodeGen/X86/byval3.ll vendor/llvm/dist/test/CodeGen/X86/byval4.ll vendor/llvm/dist/test/CodeGen/X86/byval5.ll vendor/llvm/dist/test/CodeGen/X86/change-compare-stride-0.ll vendor/llvm/dist/test/CodeGen/X86/change-compare-stride-1.ll vendor/llvm/dist/test/CodeGen/X86/change-compare-stride-trickiness-1.ll vendor/llvm/dist/test/CodeGen/X86/coalescer-cross.ll vendor/llvm/dist/test/CodeGen/X86/crash.ll vendor/llvm/dist/test/CodeGen/X86/dag-rauw-cse.ll vendor/llvm/dist/test/CodeGen/X86/darwin-bzero.ll vendor/llvm/dist/test/CodeGen/X86/divide-by-constant.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-bail.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-call.ll vendor/llvm/dist/test/CodeGen/X86/fast-isel-gep.ll vendor/llvm/dist/test/CodeGen/X86/fold-add.ll vendor/llvm/dist/test/CodeGen/X86/fold-sext-trunc.ll vendor/llvm/dist/test/CodeGen/X86/fp-stack-2results.ll vendor/llvm/dist/test/CodeGen/X86/fp-stack-ret.ll vendor/llvm/dist/test/CodeGen/X86/h-registers-2.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-error.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-fpstack.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-mrv.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm-q-regs.ll vendor/llvm/dist/test/CodeGen/X86/inline-asm.ll vendor/llvm/dist/test/CodeGen/X86/isel-sink.ll vendor/llvm/dist/test/CodeGen/X86/longlong-deadload.ll vendor/llvm/dist/test/CodeGen/X86/loop-strength-reduce2.ll vendor/llvm/dist/test/CodeGen/X86/lsr-nonaffine.ll vendor/llvm/dist/test/CodeGen/X86/lsr-redundant-addressing.ll vendor/llvm/dist/test/CodeGen/X86/lsr-reuse-trunc.ll vendor/llvm/dist/test/CodeGen/X86/memcpy-2.ll vendor/llvm/dist/test/CodeGen/X86/memcpy.ll vendor/llvm/dist/test/CodeGen/X86/memset-2.ll vendor/llvm/dist/test/CodeGen/X86/memset-3.ll vendor/llvm/dist/test/CodeGen/X86/memset.ll vendor/llvm/dist/test/CodeGen/X86/memset64-on-x86-32.ll vendor/llvm/dist/test/CodeGen/X86/mmx-shuffle.ll vendor/llvm/dist/test/CodeGen/X86/multiple-return-values-cross-block.ll vendor/llvm/dist/test/CodeGen/X86/opt-ext-uses.ll vendor/llvm/dist/test/CodeGen/X86/optimize-max-0.ll vendor/llvm/dist/test/CodeGen/X86/peep-test-3.ll vendor/llvm/dist/test/CodeGen/X86/personality.ll vendor/llvm/dist/test/CodeGen/X86/pic_jumptable.ll vendor/llvm/dist/test/CodeGen/X86/pr1505b.ll vendor/llvm/dist/test/CodeGen/X86/pr2182.ll vendor/llvm/dist/test/CodeGen/X86/pr3216.ll vendor/llvm/dist/test/CodeGen/X86/pr3317.ll vendor/llvm/dist/test/CodeGen/X86/prefetch.ll vendor/llvm/dist/test/CodeGen/X86/private.ll vendor/llvm/dist/test/CodeGen/X86/promote-i16.ll vendor/llvm/dist/test/CodeGen/X86/sext-trunc.ll vendor/llvm/dist/test/CodeGen/X86/shift-codegen.ll vendor/llvm/dist/test/CodeGen/X86/sibcall.ll vendor/llvm/dist/test/CodeGen/X86/sse1.ll vendor/llvm/dist/test/CodeGen/X86/sse3.ll vendor/llvm/dist/test/CodeGen/X86/switch-bt.ll vendor/llvm/dist/test/CodeGen/X86/tailcallbyval.ll vendor/llvm/dist/test/CodeGen/X86/tailcallbyval64.ll vendor/llvm/dist/test/CodeGen/X86/testl-commute.ll vendor/llvm/dist/test/CodeGen/X86/tlv-1.ll vendor/llvm/dist/test/CodeGen/X86/trunc-to-bool.ll vendor/llvm/dist/test/CodeGen/X86/umul-with-overflow.ll vendor/llvm/dist/test/CodeGen/X86/unaligned-load.ll vendor/llvm/dist/test/CodeGen/X86/variable-sized-darwin-bzero.ll vendor/llvm/dist/test/CodeGen/X86/vec_insert-2.ll vendor/llvm/dist/test/CodeGen/X86/vec_set-A.ll vendor/llvm/dist/test/CodeGen/X86/vector.ll vendor/llvm/dist/test/CodeGen/X86/x86-64-shortint.ll vendor/llvm/dist/test/CodeGen/XCore/private.ll vendor/llvm/dist/test/Feature/alignment.ll vendor/llvm/dist/test/Feature/calltest.ll vendor/llvm/dist/test/Feature/forwardreftest.ll vendor/llvm/dist/test/Feature/globalvars.ll vendor/llvm/dist/test/Feature/paramattrs.ll vendor/llvm/dist/test/Feature/testtype.ll vendor/llvm/dist/test/Feature/weak_constant.ll vendor/llvm/dist/test/FrontendC/2010-11-16-asmblock.c vendor/llvm/dist/test/FrontendC/ARM/inline-asm-multichar.c vendor/llvm/dist/test/FrontendC/asm-reg-var-local.c vendor/llvm/dist/test/FrontendC/mmx-inline-asm.c vendor/llvm/dist/test/Linker/2003-01-30-LinkerRename.ll vendor/llvm/dist/test/Linker/2003-01-30-LinkerTypeRename.ll vendor/llvm/dist/test/Linker/2003-05-31-LinkerRename.ll vendor/llvm/dist/test/Linker/2003-08-23-GlobalVarLinking.ll vendor/llvm/dist/test/Linker/2003-08-23-RecursiveOpaqueTypeResolve.ll vendor/llvm/dist/test/Linker/2003-08-28-TypeResolvesGlobal.ll vendor/llvm/dist/test/Linker/testlink1.ll vendor/llvm/dist/test/Linker/testlink2.ll vendor/llvm/dist/test/Linker/unnamed-addr1-a.ll vendor/llvm/dist/test/MC/ARM/arm_instructions.s vendor/llvm/dist/test/MC/ARM/prefetch.ll vendor/llvm/dist/test/MC/ARM/simple-encoding.ll vendor/llvm/dist/test/MC/ARM/thumb.s vendor/llvm/dist/test/MC/ARM/thumb2.s vendor/llvm/dist/test/MC/AsmParser/directive_comm.s vendor/llvm/dist/test/MC/AsmParser/exprs-invalid.s vendor/llvm/dist/test/MC/Disassembler/ARM/arm-tests.txt vendor/llvm/dist/test/MC/Disassembler/ARM/neon-tests.txt vendor/llvm/dist/test/MC/X86/padlock.s vendor/llvm/dist/test/MC/X86/x86-32-coverage.s vendor/llvm/dist/test/MC/X86/x86-64.s vendor/llvm/dist/test/Makefile vendor/llvm/dist/test/Other/constant-fold-gep.ll vendor/llvm/dist/test/Transforms/ADCE/2002-01-31-UseStuckAround.ll vendor/llvm/dist/test/Transforms/ConstProp/extractvalue.ll vendor/llvm/dist/test/Transforms/ConstProp/insertvalue.ll vendor/llvm/dist/test/Transforms/ConstProp/overflow-ops.ll vendor/llvm/dist/test/Transforms/DeadArgElim/2007-12-20-ParamAttrs.ll vendor/llvm/dist/test/Transforms/DeadArgElim/keepalive.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/crash.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/free.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/lifetime.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/memintrinsics.ll vendor/llvm/dist/test/Transforms/DeadStoreElimination/simple.ll vendor/llvm/dist/test/Transforms/GVN/nonescaping-malloc.ll vendor/llvm/dist/test/Transforms/GVN/rle.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2005-09-27-Crash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2007-04-05-Crash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2008-12-16-HeapSRACrash-2.ll vendor/llvm/dist/test/Transforms/GlobalOpt/2008-12-16-HeapSRACrash.ll vendor/llvm/dist/test/Transforms/GlobalOpt/memcpy.ll vendor/llvm/dist/test/Transforms/GlobalOpt/memset.ll vendor/llvm/dist/test/Transforms/IPConstantProp/return-constants.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/2008-09-02-IVType.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/ada-loops.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/iv-zext.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/no-iv-rewrite.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/preserve-signed-wrap.ll vendor/llvm/dist/test/Transforms/IndVarSimplify/variable-stride-ivs-0.ll vendor/llvm/dist/test/Transforms/Inline/inline-invoke-tail.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-05-18-CastFoldBug.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-09-11-Trampoline.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-10-10-EliminateMemCpy.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-11-07-OpaqueAlignCrash.ll vendor/llvm/dist/test/Transforms/InstCombine/2007-11-25-CompatibleAttributes.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-01-06-BitCastAttributes.ll vendor/llvm/dist/test/Transforms/InstCombine/2008-01-13-NoBitCastAttributes.ll vendor/llvm/dist/test/Transforms/InstCombine/2009-02-20-InstCombine-SROA.ll vendor/llvm/dist/test/Transforms/InstCombine/bswap-fold.ll vendor/llvm/dist/test/Transforms/InstCombine/call2.ll vendor/llvm/dist/test/Transforms/InstCombine/cast.ll vendor/llvm/dist/test/Transforms/InstCombine/getelementptr.ll vendor/llvm/dist/test/Transforms/InstCombine/icmp.ll vendor/llvm/dist/test/Transforms/InstCombine/intrinsics.ll vendor/llvm/dist/test/Transforms/InstCombine/malloc-free-delete.ll vendor/llvm/dist/test/Transforms/InstCombine/memcpy-to-load.ll vendor/llvm/dist/test/Transforms/InstCombine/memmove.ll vendor/llvm/dist/test/Transforms/InstCombine/memset.ll vendor/llvm/dist/test/Transforms/InstCombine/not.ll vendor/llvm/dist/test/Transforms/InstCombine/objsize.ll vendor/llvm/dist/test/Transforms/InstCombine/phi.ll vendor/llvm/dist/test/Transforms/InstCombine/select-crash.ll vendor/llvm/dist/test/Transforms/InstCombine/sqrt.ll vendor/llvm/dist/test/Transforms/InstCombine/stack-overalign.ll vendor/llvm/dist/test/Transforms/InstCombine/sub.ll vendor/llvm/dist/test/Transforms/InstCombine/vec_narrow.ll vendor/llvm/dist/test/Transforms/InstCombine/vec_shuffle.ll vendor/llvm/dist/test/Transforms/InstCombine/zext-or-icmp.ll vendor/llvm/dist/test/Transforms/JumpThreading/crash.ll vendor/llvm/dist/test/Transforms/LoopRotate/PhiRename-1.ll vendor/llvm/dist/test/Transforms/LoopRotate/crash.ll vendor/llvm/dist/test/Transforms/LoopSimplify/2007-10-28-InvokeCrash.ll vendor/llvm/dist/test/Transforms/LowerSetJmp/simpletest.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/2008-02-24-MultipleUseofSRet.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/2008-03-13-ReturnSlotBitcast.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/memcpy.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/memmove.ll vendor/llvm/dist/test/Transforms/MemCpyOpt/sret.ll vendor/llvm/dist/test/Transforms/Reassociate/2011-01-26-UseAfterFree.ll vendor/llvm/dist/test/Transforms/SCCP/2008-04-22-multiple-ret-sccp.ll vendor/llvm/dist/test/Transforms/SCCP/ipsccp-basic.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2003-10-29-ArrayProblem.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2007-05-29-MemcpyPreserve.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2007-11-03-bigendian_apint.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2008-06-22-LargeArray.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2008-08-22-out-of-range-array-promote.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2008-09-22-vector-gep.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2009-03-04-MemCpyAlign.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2009-03-05-Aggre2Scalar-dbg.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2009-12-11-NeonTypes.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2010-01-18-SelfCopy.ll vendor/llvm/dist/test/Transforms/ScalarRepl/2011-06-08-VectorExtractValue.ll vendor/llvm/dist/test/Transforms/ScalarRepl/badarray.ll vendor/llvm/dist/test/Transforms/ScalarRepl/copy-aggregate.ll vendor/llvm/dist/test/Transforms/ScalarRepl/crash.ll vendor/llvm/dist/test/Transforms/ScalarRepl/memcpy-from-global.ll vendor/llvm/dist/test/Transforms/ScalarRepl/memset-aggregate.ll vendor/llvm/dist/test/Transforms/ScalarRepl/phi-select.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/switch_switch_fold_dbginfo.ll vendor/llvm/dist/test/Transforms/SimplifyLibCalls/MemCpy.ll vendor/llvm/dist/test/Transforms/TailCallElim/inf-recursion.ll vendor/llvm/dist/test/Unit/lit.cfg vendor/llvm/dist/test/Verifier/2002-04-13-RetTypes.ll vendor/llvm/dist/test/Verifier/2008-11-15-RetVoid.ll vendor/llvm/dist/test/lit.cfg vendor/llvm/dist/test/lit.site.cfg.in vendor/llvm/dist/tools/CMakeLists.txt vendor/llvm/dist/tools/bugpoint/ExtractFunction.cpp vendor/llvm/dist/tools/bugpoint/Miscompilation.cpp vendor/llvm/dist/tools/llc/llc.cpp vendor/llvm/dist/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp vendor/llvm/dist/tools/llvm-dis/llvm-dis.cpp vendor/llvm/dist/tools/llvm-extract/llvm-extract.cpp vendor/llvm/dist/tools/llvm-mc/Disassembler.cpp vendor/llvm/dist/tools/llvm-mc/Disassembler.h vendor/llvm/dist/tools/llvm-mc/llvm-mc.cpp vendor/llvm/dist/tools/llvm-nm/llvm-nm.cpp vendor/llvm/dist/tools/llvm-objdump/llvm-objdump.cpp vendor/llvm/dist/tools/llvmc/src/Hooks.cpp vendor/llvm/dist/tools/lto/LTOCodeGenerator.cpp vendor/llvm/dist/tools/lto/LTOModule.cpp vendor/llvm/dist/unittests/ADT/APFloatTest.cpp vendor/llvm/dist/unittests/ADT/APIntTest.cpp vendor/llvm/dist/unittests/ADT/SmallVectorTest.cpp vendor/llvm/dist/unittests/ADT/StringMapTest.cpp vendor/llvm/dist/unittests/Analysis/ScalarEvolutionTest.cpp vendor/llvm/dist/unittests/CMakeLists.txt vendor/llvm/dist/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp vendor/llvm/dist/unittests/ExecutionEngine/JIT/JITTest.cpp vendor/llvm/dist/unittests/Support/ConstantRangeTest.cpp vendor/llvm/dist/unittests/Support/TypeBuilderTest.cpp vendor/llvm/dist/unittests/VMCore/PassManagerTest.cpp vendor/llvm/dist/utils/TableGen/ARMDecoderEmitter.cpp vendor/llvm/dist/utils/TableGen/AsmMatcherEmitter.cpp vendor/llvm/dist/utils/TableGen/AsmWriterEmitter.cpp vendor/llvm/dist/utils/TableGen/CMakeLists.txt vendor/llvm/dist/utils/TableGen/ClangDiagnosticsEmitter.cpp vendor/llvm/dist/utils/TableGen/CodeEmitterGen.cpp vendor/llvm/dist/utils/TableGen/CodeGenDAGPatterns.cpp vendor/llvm/dist/utils/TableGen/CodeGenDAGPatterns.h vendor/llvm/dist/utils/TableGen/CodeGenInstruction.cpp vendor/llvm/dist/utils/TableGen/CodeGenInstruction.h vendor/llvm/dist/utils/TableGen/CodeGenRegisters.cpp vendor/llvm/dist/utils/TableGen/CodeGenRegisters.h vendor/llvm/dist/utils/TableGen/CodeGenTarget.cpp vendor/llvm/dist/utils/TableGen/CodeGenTarget.h vendor/llvm/dist/utils/TableGen/DAGISelMatcherGen.cpp vendor/llvm/dist/utils/TableGen/DisassemblerEmitter.cpp vendor/llvm/dist/utils/TableGen/EDEmitter.cpp vendor/llvm/dist/utils/TableGen/FastISelEmitter.cpp vendor/llvm/dist/utils/TableGen/FixedLenDecoderEmitter.cpp vendor/llvm/dist/utils/TableGen/InstrInfoEmitter.cpp vendor/llvm/dist/utils/TableGen/InstrInfoEmitter.h vendor/llvm/dist/utils/TableGen/IntrinsicEmitter.cpp vendor/llvm/dist/utils/TableGen/LLVMCConfigurationEmitter.cpp vendor/llvm/dist/utils/TableGen/NeonEmitter.cpp vendor/llvm/dist/utils/TableGen/Record.cpp vendor/llvm/dist/utils/TableGen/Record.h vendor/llvm/dist/utils/TableGen/RegisterInfoEmitter.cpp vendor/llvm/dist/utils/TableGen/RegisterInfoEmitter.h vendor/llvm/dist/utils/TableGen/SetTheory.cpp vendor/llvm/dist/utils/TableGen/SetTheory.h vendor/llvm/dist/utils/TableGen/SubtargetEmitter.cpp vendor/llvm/dist/utils/TableGen/SubtargetEmitter.h vendor/llvm/dist/utils/TableGen/TGLexer.cpp vendor/llvm/dist/utils/TableGen/TGLexer.h vendor/llvm/dist/utils/TableGen/TGParser.h vendor/llvm/dist/utils/TableGen/TableGen.cpp vendor/llvm/dist/utils/TableGen/X86RecognizableInstr.cpp vendor/llvm/dist/utils/TableGen/X86RecognizableInstr.h vendor/llvm/dist/utils/lit/lit/LitConfig.py vendor/llvm/dist/utils/lit/lit/Util.py vendor/llvm/dist/utils/llvm.grm vendor/llvm/dist/utils/llvmbuild Modified: vendor/llvm/dist/CREDITS.TXT ============================================================================== --- vendor/llvm/dist/CREDITS.TXT Sun Jul 17 14:52:55 2011 (r224132) +++ vendor/llvm/dist/CREDITS.TXT Sun Jul 17 15:36:56 2011 (r224133) @@ -294,6 +294,10 @@ E: peckw@wesleypeck.com W: http://wesleypeck.com/ D: MicroBlaze backend +N: Francois Pichet +E: pichet2000@gmail.com +D: MSVC support + N: Vladimir Prus W: http://vladimir_prus.blogspot.com E: ghost@cs.msu.su Modified: vendor/llvm/dist/LICENSE.TXT ============================================================================== --- vendor/llvm/dist/LICENSE.TXT Sun Jul 17 14:52:55 2011 (r224132) +++ vendor/llvm/dist/LICENSE.TXT Sun Jul 17 15:36:56 2011 (r224133) @@ -4,7 +4,7 @@ LLVM Release License University of Illinois/NCSA Open Source License -Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign. +Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: Modified: vendor/llvm/dist/Makefile.config.in ============================================================================== --- vendor/llvm/dist/Makefile.config.in Sun Jul 17 14:52:55 2011 (r224132) +++ vendor/llvm/dist/Makefile.config.in Sun Jul 17 15:36:56 2011 (r224133) @@ -123,6 +123,9 @@ TARGET_TRIPLE=@target@ # Extra options to compile LLVM with EXTRA_OPTIONS=@EXTRA_OPTIONS@ +# Extra options to link LLVM with +EXTRA_LD_OPTIONS=@EXTRA_LD_OPTIONS@ + # Endian-ness of the target ENDIAN=@ENDIAN@ Modified: vendor/llvm/dist/Makefile.rules ============================================================================== --- vendor/llvm/dist/Makefile.rules Sun Jul 17 14:52:55 2011 (r224132) +++ vendor/llvm/dist/Makefile.rules Sun Jul 17 15:36:56 2011 (r224133) @@ -123,9 +123,6 @@ $(BUILT_SOURCES) : $(ObjMakefiles) reconfigure: $(Echo) Reconfiguring $(PROJ_OBJ_ROOT) $(Verb) cd $(PROJ_OBJ_ROOT) && \ - if test -w $(PROJ_OBJ_ROOT)/config.cache ; then \ - $(RM) $(PROJ_OBJ_ROOT)/config.cache ; \ - fi ; \ $(ConfigStatusScript) --recheck $(ConfigureScriptFLAGS) && \ $(ConfigStatusScript) @@ -133,9 +130,6 @@ reconfigure: $(ConfigStatusScript): $(ConfigureScript) $(Echo) Reconfiguring with $< $(Verb) cd $(PROJ_OBJ_ROOT) && \ - if test -w $(PROJ_OBJ_ROOT)/config.cache ; then \ - $(RM) $(PROJ_OBJ_ROOT)/config.cache ; \ - fi ; \ $(ConfigStatusScript) --recheck $(ConfigureScriptFLAGS) && \ $(ConfigStatusScript) @@ -582,6 +576,10 @@ endif # Options To Invoke Tools #---------------------------------------------------------- +ifdef EXTRA_LD_OPTIONS +LD.Flags += $(EXTRA_LD_OPTIONS) +endif + ifndef NO_PEDANTIC CompileCommonOpts += -pedantic -Wno-long-long endif @@ -1379,7 +1377,7 @@ endif #--------------------------------------------------------- ifeq ($(HOST_OS),Darwin) -ifdef TOOL_ORDER_FINE +ifdef TOOL_ORDER_FILE LD.Flags += -Wl,-order_file,$(TOOL_ORDER_FILE) @@ -1722,30 +1720,15 @@ TDFiles := $(strip $(wildcard $(PROJ_SRC # All of these files depend on tblgen and the .td files. $(INCTMPFiles) : $(TBLGEN) $(TDFiles) -$(TARGET:%=$(ObjDir)/%GenRegisterNames.inc.tmp): \ -$(ObjDir)/%GenRegisterNames.inc.tmp : %.td $(ObjDir)/.dir - $(Echo) "Building $( string = "llvm_data_layout" external set_data_layout: string -> llmodule -> unit = "llvm_set_data_layout" -external define_type_name : string -> lltype -> llmodule -> bool - = "llvm_add_type_name" -external delete_type_name : string -> llmodule -> unit - = "llvm_delete_type_name" -external type_by_name : llmodule -> string -> lltype option - = "llvm_type_by_name" external dump_module : llmodule -> unit = "llvm_dump_module" external set_module_inline_asm : llmodule -> string -> unit = "llvm_set_module_inline_asm" @@ -222,16 +214,9 @@ external address_space : lltype -> int = external vector_size : lltype -> int = "llvm_vector_size" (*--... Operations on other types ..........................................--*) -external opaque_type : llcontext -> lltype = "llvm_opaque_type" external void_type : llcontext -> lltype = "llvm_void_type" external label_type : llcontext -> lltype = "llvm_label_type" -(*--... Operations on type handles .........................................--*) -external handle_to_type : lltype -> lltypehandle = "llvm_handle_to_type" -external type_of_handle : lltypehandle -> lltype = "llvm_type_of_handle" -external refine_type : lltype -> lltype -> unit = "llvm_refine_type" - - (*===-- Values ------------------------------------------------------------===*) external type_of : llvalue -> lltype = "llvm_type_of" external value_name : llvalue -> string = "llvm_value_name" @@ -1049,7 +1034,6 @@ let rec string_of_lltype ty = " x " ^ (string_of_lltype (element_type ty)) ^ "]" | TypeKind.Vector -> "<" ^ (string_of_int (vector_size ty)) ^ " x " ^ (string_of_lltype (element_type ty)) ^ ">" - | TypeKind.Opaque -> "opaque" | TypeKind.Function -> string_of_lltype (return_type ty) ^ " (" ^ (concat2 ", " ( Array.map string_of_lltype (param_types ty) Modified: vendor/llvm/dist/bindings/ocaml/llvm/llvm.mli ============================================================================== --- vendor/llvm/dist/bindings/ocaml/llvm/llvm.mli Sun Jul 17 14:52:55 2011 (r224132) +++ vendor/llvm/dist/bindings/ocaml/llvm/llvm.mli Sun Jul 17 15:36:56 2011 (r224133) @@ -29,11 +29,6 @@ type llmodule [llvm::Type] class. *) type lltype -(** When building recursive types using {!refine_type}, [lltype] values may - become invalid; use [lltypehandle] to resolve this problem. See the - [llvm::AbstractTypeHolder] class. *) -type lltypehandle - (** Any value in the LLVM IR. Functions, instructions, global variables, constants, and much more are all [llvalues]. See the [llvm::Value] class. This type covers a wide range of subclasses. *) @@ -69,7 +64,6 @@ module TypeKind : sig | Struct | Array | Pointer - | Opaque | Vector | Metadata end @@ -261,24 +255,6 @@ val data_layout: llmodule -> string to the string [s]. See the method [llvm::Module::setDataLayout]. *) val set_data_layout: string -> llmodule -> unit - -(** [define_type_name name ty m] adds a named type to the module's symbol table. - Returns [true] if successful. If such a name already exists, then no entry - is added and [false] is returned. See the [llvm::Module::addTypeName] - method. *) -val define_type_name : string -> lltype -> llmodule -> bool - - -(** [delete_type_name name] removes a type name from the module's symbol - table. *) -val delete_type_name : string -> llmodule -> unit - - -(** [type_by_name m n] returns the type in the module [m] named [n], or [None] - if it does not exist. See the method [llvm::Module::getTypeByName]. *) -val type_by_name : llmodule -> string -> lltype option - - (** [dump_module m] prints the .ll representation of the module [m] to standard error. See the method [llvm::Module::dump]. *) val dump_module : llmodule -> unit @@ -447,11 +423,6 @@ val vector_size : lltype -> int (** {7 Operations on other types} *) -(** [opaque_type c] creates a new opaque type distinct from any other in the - context [c]. Opaque types are useful for building recursive types in - combination with {!refine_type}. See [llvm::OpaqueType::get]. *) -val opaque_type : llcontext -> lltype - (** [void_type c] creates a type of a function which does not return any value in the context [c]. See [llvm::Type::VoidTy]. *) val void_type : llcontext -> lltype @@ -460,25 +431,6 @@ val void_type : llcontext -> lltype [llvm::Type::LabelTy]. *) val label_type : llcontext -> lltype -(** {7 Operations on type handles} *) - -(** [handle_to_type ty] creates a handle to the type [ty]. If [ty] is later - refined as a result of a call to {!refine_type}, the handle will be updated; - any bare [lltype] references will become invalid. - See the class [llvm::PATypeHolder]. *) -val handle_to_type : lltype -> lltypehandle - -(** [type_of_handle tyh] resolves the type handle [tyh]. - See the method [llvm::PATypeHolder::get()]. *) -val type_of_handle : lltypehandle -> lltype - -(** [refine_type opaque_ty ty] replaces the abstract type [opaque_ty] with the - concrete type [ty] in all users. Warning: This may invalidate {!lltype} - values! Use {!lltypehandle} to manipulate potentially abstract types. See - the method [llvm::Type::refineAbstractType]. *) -val refine_type : lltype -> lltype -> unit - - (* {6 Values} *) (** [type_of v] returns the type of the value [v]. Modified: vendor/llvm/dist/bindings/ocaml/llvm/llvm_ocaml.c ============================================================================== --- vendor/llvm/dist/bindings/ocaml/llvm/llvm_ocaml.c Sun Jul 17 14:52:55 2011 (r224132) +++ vendor/llvm/dist/bindings/ocaml/llvm/llvm_ocaml.c Sun Jul 17 15:36:56 2011 (r224133) @@ -152,30 +152,6 @@ CAMLprim value llvm_set_data_layout(valu return Val_unit; } -/* string -> lltype -> llmodule -> bool */ -CAMLprim value llvm_add_type_name(value Name, LLVMTypeRef Ty, LLVMModuleRef M) { - int res = LLVMAddTypeName(M, String_val(Name), Ty); - return Val_bool(res == 0); -} - -/* string -> llmodule -> unit */ -CAMLprim value llvm_delete_type_name(value Name, LLVMModuleRef M) { - LLVMDeleteTypeName(M, String_val(Name)); - return Val_unit; -} - -/* llmodule -> string -> lltype option */ -CAMLprim value llvm_type_by_name(LLVMModuleRef M, value Name) { - CAMLparam1(Name); - LLVMTypeRef T; - if ((T = LLVMGetTypeByName(M, String_val(Name)))) { - value Option = alloc(1, 0); - Field(Option, 0) = (value) T; - CAMLreturn(Option); - } - CAMLreturn(Val_int(0)); -} - /* llmodule -> unit */ CAMLprim value llvm_dump_module(LLVMModuleRef M) { LLVMDumpModule(M); @@ -373,44 +349,6 @@ CAMLprim LLVMTypeRef llvm_label_type(LLV return LLVMLabelTypeInContext(Context); } -/* llcontext -> lltype */ -CAMLprim LLVMTypeRef llvm_opaque_type(LLVMContextRef Context) { - return LLVMOpaqueTypeInContext(Context); -} - -/*--... Operations on type handles .........................................--*/ - -#define Typehandle_val(v) (*(LLVMTypeHandleRef *)(Data_custom_val(v))) - -static void llvm_finalize_handle(value TH) { - LLVMDisposeTypeHandle(Typehandle_val(TH)); -} - -static struct custom_operations typehandle_ops = { - (char *) "LLVMTypeHandle", - llvm_finalize_handle, - custom_compare_default, - custom_hash_default, - custom_serialize_default, - custom_deserialize_default -}; - -CAMLprim value llvm_handle_to_type(LLVMTypeRef PATy) { - value TH = alloc_custom(&typehandle_ops, sizeof(LLVMBuilderRef), 0, 1); - Typehandle_val(TH) = LLVMCreateTypeHandle(PATy); - return TH; -} - -CAMLprim LLVMTypeRef llvm_type_of_handle(value TH) { - return LLVMResolveTypeHandle(Typehandle_val(TH)); -} - -CAMLprim value llvm_refine_type(LLVMTypeRef AbstractTy, LLVMTypeRef ConcreteTy){ - LLVMRefineType(AbstractTy, ConcreteTy); - return Val_unit; -} - - /*===-- VALUES ------------------------------------------------------------===*/ /* llvalue -> lltype */ Modified: vendor/llvm/dist/cmake/config-ix.cmake ============================================================================== --- vendor/llvm/dist/cmake/config-ix.cmake Sun Jul 17 14:52:55 2011 (r224132) +++ vendor/llvm/dist/cmake/config-ix.cmake Sun Jul 17 15:36:56 2011 (r224133) @@ -336,6 +336,7 @@ else () message(STATUS "Native target architecture is ${LLVM_NATIVE_ARCH}") set(LLVM_NATIVE_TARGET LLVMInitialize${LLVM_NATIVE_ARCH}Target) set(LLVM_NATIVE_TARGETINFO LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo) + set(LLVM_NATIVE_MCASMINFO LLVMInitialize${LLVM_NATIVE_ARCH}MCAsmInfo) set(LLVM_NATIVE_ASMPRINTER LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter) endif () @@ -349,7 +350,6 @@ endif( MINGW ) if( MSVC ) set(error_t int) - set(mode_t "unsigned short") set(LTDL_SHLIBPATH_VAR "PATH") set(LTDL_SYSSEARCHPATH "") set(LTDL_DLOPEN_DEPLIBS 1) Modified: vendor/llvm/dist/cmake/modules/LLVMLibDeps.cmake ============================================================================== --- vendor/llvm/dist/cmake/modules/LLVMLibDeps.cmake Sun Jul 17 14:52:55 2011 (r224132) +++ vendor/llvm/dist/cmake/modules/LLVMLibDeps.cmake Sun Jul 17 15:36:56 2011 (r224133) @@ -1,9 +1,11 @@ set(MSVC_LIB_DEPS_LLVMARMAsmParser LLVMARMCodeGen LLVMARMInfo LLVMMC LLVMMCParser LLVMSupport LLVMTarget) set(MSVC_LIB_DEPS_LLVMARMAsmPrinter LLVMMC LLVMSupport) -set(MSVC_LIB_DEPS_LLVMARMCodeGen LLVMARMAsmPrinter LLVMARMInfo LLVMAnalysis LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget) -set(MSVC_LIB_DEPS_LLVMARMDisassembler LLVMARMCodeGen LLVMARMInfo LLVMMC LLVMSupport) +set(MSVC_LIB_DEPS_LLVMARMCodeGen LLVMARMAsmPrinter LLVMARMDesc LLVMARMInfo LLVMAnalysis LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMARMDesc LLVMARMInfo LLVMMC LLVMSupport) +set(MSVC_LIB_DEPS_LLVMARMDisassembler LLVMARMCodeGen LLVMARMDesc LLVMARMInfo LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMARMInfo LLVMMC LLVMSupport) -set(MSVC_LIB_DEPS_LLVMAlphaCodeGen LLVMAlphaInfo LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMAlphaCodeGen LLVMAlphaDesc LLVMAlphaInfo LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMAlphaDesc LLVMAlphaInfo LLVMMC) set(MSVC_LIB_DEPS_LLVMAlphaInfo LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMAnalysis LLVMCore LLVMSupport LLVMTarget) set(MSVC_LIB_DEPS_LLVMArchive LLVMBitReader LLVMCore LLVMSupport) @@ -11,17 +13,19 @@ set(MSVC_LIB_DEPS_LLVMAsmParser LLVMCore set(MSVC_LIB_DEPS_LLVMAsmPrinter LLVMAnalysis LLVMCodeGen LLVMCore LLVMMC LLVMMCParser LLVMSupport LLVMTarget) set(MSVC_LIB_DEPS_LLVMBitReader LLVMCore LLVMSupport) set(MSVC_LIB_DEPS_LLVMBitWriter LLVMCore LLVMSupport) -set(MSVC_LIB_DEPS_LLVMBlackfinCodeGen LLVMAsmPrinter LLVMBlackfinInfo LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMBlackfinCodeGen LLVMAsmPrinter LLVMBlackfinDesc LLVMBlackfinInfo LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMBlackfinDesc LLVMBlackfinInfo LLVMMC) set(MSVC_LIB_DEPS_LLVMBlackfinInfo LLVMMC LLVMSupport) -set(MSVC_LIB_DEPS_LLVMCBackend LLVMAnalysis LLVMCBackendInfo LLVMCodeGen LLVMCore LLVMMC LLVMScalarOpts LLVMSupport LLVMTarget LLVMTransformUtils LLVMipa) +set(MSVC_LIB_DEPS_LLVMCBackend LLVMAnalysis LLVMCBackendInfo LLVMCodeGen LLVMCore LLVMMC LLVMScalarOpts LLVMSupport LLVMTarget LLVMTransformUtils) set(MSVC_LIB_DEPS_LLVMCBackendInfo LLVMMC LLVMSupport) -set(MSVC_LIB_DEPS_LLVMCellSPUCodeGen LLVMAsmPrinter LLVMCellSPUInfo LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMCellSPUCodeGen LLVMAsmPrinter LLVMCellSPUDesc LLVMCellSPUInfo LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMCellSPUDesc LLVMCellSPUInfo LLVMMC) set(MSVC_LIB_DEPS_LLVMCellSPUInfo LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMCodeGen LLVMAnalysis LLVMCore LLVMMC LLVMScalarOpts LLVMSupport LLVMTarget LLVMTransformUtils) set(MSVC_LIB_DEPS_LLVMCore LLVMSupport) set(MSVC_LIB_DEPS_LLVMCppBackend LLVMCore LLVMCppBackendInfo LLVMSupport LLVMTarget) set(MSVC_LIB_DEPS_LLVMCppBackendInfo LLVMMC LLVMSupport) -set(MSVC_LIB_DEPS_LLVMExecutionEngine LLVMCore LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMExecutionEngine LLVMCore LLVMMC LLVMSupport LLVMTarget) set(MSVC_LIB_DEPS_LLVMInstCombine LLVMAnalysis LLVMCore LLVMSupport LLVMTarget LLVMTransformUtils) set(MSVC_LIB_DEPS_LLVMInstrumentation LLVMAnalysis LLVMCore LLVMSupport LLVMTransformUtils) set(MSVC_LIB_DEPS_LLVMInterpreter LLVMCodeGen LLVMCore LLVMExecutionEngine LLVMSupport LLVMTarget) @@ -29,41 +33,51 @@ set(MSVC_LIB_DEPS_LLVMJIT LLVMCodeGen LL set(MSVC_LIB_DEPS_LLVMLinker LLVMArchive LLVMBitReader LLVMCore LLVMSupport LLVMTransformUtils) set(MSVC_LIB_DEPS_LLVMMBlazeAsmParser LLVMMBlazeCodeGen LLVMMBlazeInfo LLVMMC LLVMMCParser LLVMSupport LLVMTarget) set(MSVC_LIB_DEPS_LLVMMBlazeAsmPrinter LLVMMC LLVMSupport) -set(MSVC_LIB_DEPS_LLVMMBlazeCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMBlazeAsmPrinter LLVMMBlazeInfo LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget) -set(MSVC_LIB_DEPS_LLVMMBlazeDisassembler LLVMMBlazeCodeGen LLVMMBlazeInfo LLVMMC) +set(MSVC_LIB_DEPS_LLVMMBlazeCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMBlazeAsmPrinter LLVMMBlazeDesc LLVMMBlazeInfo LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMMBlazeDesc LLVMMBlazeInfo LLVMMC LLVMSupport) +set(MSVC_LIB_DEPS_LLVMMBlazeDisassembler LLVMMBlazeCodeGen LLVMMBlazeDesc LLVMMBlazeInfo LLVMMC) set(MSVC_LIB_DEPS_LLVMMBlazeInfo LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMMC LLVMSupport) -set(MSVC_LIB_DEPS_LLVMMCDisassembler LLVMARMAsmParser LLVMARMCodeGen LLVMARMDisassembler LLVMARMInfo LLVMAlphaCodeGen LLVMAlphaInfo LLVMBlackfinCodeGen LLVMBlackfinInfo LLVMCBackend LLVMCBackendInfo LLVMCellSPUCodeGen LLVMCellSPUInfo LLVMCppBackend LLVMCppBackendInfo LLVMMBlazeAsmParser LLVMMBlazeCodeGen LLVMMBlazeDisassembler LLVMMBlazeInfo LLVMMC LLVMMCParser LLVMMSP430CodeGen LLVMMSP430Info LLVMMipsCodeGen LLVMMipsInfo LLVMPTXCodeGen LLVMPTXInfo LLVMPowerPCCodeGen LLVMPowerPCInfo LLVMSparcCodeGen LLVMSparcInfo LLVMSupport LLVMSystemZCodeGen LLVMSystemZInfo LLVMTarget LLVMX86AsmParser LLVMX86CodeGen LLVMX86Disassembler LLVMX86Info LLVMXCoreCodeGen LLVMXCoreInfo) +set(MSVC_LIB_DEPS_LLVMMCDisassembler LLVMARMAsmParser LLVMARMCodeGen LLVMARMDesc LLVMARMDisassembler LLVMARMInfo LLVMAlphaCodeGen LLVMAlphaDesc LLVMAlphaInfo LLVMBlackfinCodeGen LLVMBlackfinDesc LLVMBlackfinInfo LLVMCBackend LLVMCBackendInfo LLVMCellSPUCodeGen LLVMCellSPUDesc LLVMCellSPUInfo LLVMCppBackend LLVMCppBackendInfo LLVMMBlazeAsmParser LLVMMBlazeCodeGen LLVMMBlazeDesc LLVMMBlazeDisassembler LLVMMBlazeInfo LLVMMC LLVMMCParser LLVMMSP430CodeGen LLVMMSP430Desc LLVMMSP430Info LLVMMipsCodeGen LLVMMipsDesc LLVMMipsInfo LLVMPTXCodeGen LLVMPTXDesc LLVMPTXInfo LLVMPowerPCCodeGen LLVMPowerPCDesc LLVMPowerPCInfo LLVMSparcCodeGen LLVMSparcDesc LLVMSparcInfo LLVMSupport LLVMSystemZCodeGen LLVMSystemZDesc LLVMSystemZInfo LLVMTarget LLVMX86AsmParser LLVMX86CodeGen LLVMX86Desc LLVMX86Disassembler LLVMX86Info LLVMXCoreCodeGen LLVMXCoreDesc LLVMXCoreInfo) set(MSVC_LIB_DEPS_LLVMMCJIT LLVMCore LLVMExecutionEngine LLVMRuntimeDyld LLVMSupport LLVMTarget) set(MSVC_LIB_DEPS_LLVMMCParser LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMMSP430AsmPrinter LLVMMC LLVMSupport) -set(MSVC_LIB_DEPS_LLVMMSP430CodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMMSP430AsmPrinter LLVMMSP430Info LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMMSP430CodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMMSP430AsmPrinter LLVMMSP430Desc LLVMMSP430Info LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMMSP430Desc LLVMMC LLVMMSP430Info) set(MSVC_LIB_DEPS_LLVMMSP430Info LLVMMC LLVMSupport) -set(MSVC_LIB_DEPS_LLVMMipsCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMMipsInfo LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMMipsAsmPrinter LLVMMC LLVMSupport) +set(MSVC_LIB_DEPS_LLVMMipsCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMMipsAsmPrinter LLVMMipsDesc LLVMMipsInfo LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMMipsDesc LLVMMC LLVMMipsInfo LLVMSupport) set(MSVC_LIB_DEPS_LLVMMipsInfo LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMObject LLVMSupport) -set(MSVC_LIB_DEPS_LLVMPTXCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMPTXInfo LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMPTXCodeGen LLVMAnalysis LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMPTXDesc LLVMPTXInfo LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMPTXDesc LLVMMC LLVMPTXInfo LLVMSupport) set(MSVC_LIB_DEPS_LLVMPTXInfo LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMPowerPCAsmPrinter LLVMMC LLVMSupport) -set(MSVC_LIB_DEPS_LLVMPowerPCCodeGen LLVMAnalysis LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMPowerPCAsmPrinter LLVMPowerPCInfo LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMPowerPCCodeGen LLVMAnalysis LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMPowerPCAsmPrinter LLVMPowerPCDesc LLVMPowerPCInfo LLVMSelectionDAG LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMPowerPCDesc LLVMMC LLVMPowerPCInfo LLVMSupport) set(MSVC_LIB_DEPS_LLVMPowerPCInfo LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMRuntimeDyld LLVMObject LLVMSupport) set(MSVC_LIB_DEPS_LLVMScalarOpts LLVMAnalysis LLVMCore LLVMInstCombine LLVMSupport LLVMTarget LLVMTransformUtils) set(MSVC_LIB_DEPS_LLVMSelectionDAG LLVMAnalysis LLVMCodeGen LLVMCore LLVMMC LLVMSupport LLVMTarget LLVMTransformUtils) -set(MSVC_LIB_DEPS_LLVMSparcCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSparcInfo LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMSparcCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSparcDesc LLVMSparcInfo LLVMSupport LLVMTarget) +set(MSVC_LIB_DEPS_LLVMSparcDesc LLVMMC LLVMSparcInfo LLVMSupport) set(MSVC_LIB_DEPS_LLVMSparcInfo LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMSupport ) -set(MSVC_LIB_DEPS_LLVMSystemZCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMSystemZInfo LLVMTarget) +set(MSVC_LIB_DEPS_LLVMSystemZCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMSystemZDesc LLVMSystemZInfo LLVMTarget) +set(MSVC_LIB_DEPS_LLVMSystemZDesc LLVMMC LLVMSystemZInfo) set(MSVC_LIB_DEPS_LLVMSystemZInfo LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMTarget LLVMCore LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMTransformUtils LLVMAnalysis LLVMCore LLVMSupport LLVMTarget LLVMipa) set(MSVC_LIB_DEPS_LLVMX86AsmParser LLVMMC LLVMMCParser LLVMSupport LLVMTarget LLVMX86Info) set(MSVC_LIB_DEPS_LLVMX86AsmPrinter LLVMMC LLVMSupport LLVMX86Utils) -set(MSVC_LIB_DEPS_LLVMX86CodeGen LLVMAnalysis LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget LLVMX86AsmPrinter LLVMX86Info LLVMX86Utils) +set(MSVC_LIB_DEPS_LLVMX86CodeGen LLVMAnalysis LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget LLVMX86AsmPrinter LLVMX86Desc LLVMX86Info LLVMX86Utils) +set(MSVC_LIB_DEPS_LLVMX86Desc LLVMMC LLVMSupport LLVMX86Info) set(MSVC_LIB_DEPS_LLVMX86Disassembler LLVMMC LLVMSupport LLVMX86Info) set(MSVC_LIB_DEPS_LLVMX86Info LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMX86Utils LLVMCore LLVMSupport) -set(MSVC_LIB_DEPS_LLVMXCoreCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget LLVMXCoreInfo) +set(MSVC_LIB_DEPS_LLVMXCoreCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMSelectionDAG LLVMSupport LLVMTarget LLVMXCoreDesc LLVMXCoreInfo) +set(MSVC_LIB_DEPS_LLVMXCoreDesc LLVMMC LLVMXCoreInfo) set(MSVC_LIB_DEPS_LLVMXCoreInfo LLVMMC LLVMSupport) set(MSVC_LIB_DEPS_LLVMipa LLVMAnalysis LLVMCore LLVMSupport) set(MSVC_LIB_DEPS_LLVMipo LLVMAnalysis LLVMCore LLVMScalarOpts LLVMSupport LLVMTarget LLVMTransformUtils LLVMipa) Modified: vendor/llvm/dist/configure ============================================================================== --- vendor/llvm/dist/configure Sun Jul 17 14:52:55 2011 (r224132) +++ vendor/llvm/dist/configure Sun Jul 17 15:36:56 2011 (r224133) @@ -9,7 +9,7 @@ # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # -# Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign. +# Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## @@ -707,6 +707,7 @@ CLANGXXPATH ENABLE_BUILT_CLANG OPTIMIZE_OPTION EXTRA_OPTIONS +EXTRA_LD_OPTIONS BINUTILS_INCDIR CXX CXXFLAGS @@ -1454,6 +1455,7 @@ Optional Packages: --with-optimize-option Select the compiler options to use for optimized builds --with-extra-options Specify additional options to compile LLVM with + --with-extra-ld-options Specify additional options to link LLVM with --with-ocaml-libdir Specify install location for ocaml bindings (default is stdlib) --with-clang-resource-dir @@ -1559,7 +1561,7 @@ Copyright (C) 1992, 1993, 1994, 1995, 19 This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. -Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign. +Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign. _ACEOF exit fi @@ -1921,7 +1923,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -LLVM_COPYRIGHT="Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign." +LLVM_COPYRIGHT="Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign." @@ -2335,6 +2337,8 @@ else llvm_cv_target_os_type="MingW" ;; *-*-haiku*) llvm_cv_target_os_type="Haiku" ;; + *-*-rtems*) + llvm_cv_target_os_type="RTEMS" ;; *-unknown-eabi*) llvm_cv_target_os_type="Freestanding" ;; *) @@ -5116,6 +5120,7 @@ _ACEOF LLVM_NATIVE_TARGET="LLVMInitialize${LLVM_NATIVE_ARCH}Target" LLVM_NATIVE_TARGETINFO="LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo" + LLVM_NATIVE_MCASMINFO="LLVMInitialize${LLVM_NATIVE_ARCH}MCAsmInfo" LLVM_NATIVE_ASMPRINTER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter" if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then LLVM_NATIVE_ASMPARSER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser" @@ -5132,6 +5137,11 @@ _ACEOF cat >>confdefs.h <<_ACEOF +#define LLVM_NATIVE_MCASMINFO $LLVM_NATIVE_MCASMINFO +_ACEOF + + +cat >>confdefs.h <<_ACEOF #define LLVM_NATIVE_ASMPRINTER $LLVM_NATIVE_ASMPRINTER _ACEOF @@ -5346,6 +5356,21 @@ esac EXTRA_OPTIONS=$EXTRA_OPTIONS + +# Check whether --with-extra-ld-options was given. +if test "${with_extra_ld_options+set}" = set; then + withval=$with_extra_ld_options; +else + withval=default +fi + +case "$withval" in + default) EXTRA_LD_OPTIONS= ;; + *) EXTRA_LD_OPTIONS=$withval ;; +esac +EXTRA_LD_OPTIONS=$EXTRA_LD_OPTIONS + + # Check whether --enable-bindings was given. if test "${enable_bindings+set}" = set; then enableval=$enable_bindings; @@ -11571,7 +11596,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <conf$$subs.sed <<_ACEOF +OCAML_LIBDIR!$OCAML_LIBDIR$ac_delim ENABLE_VISIBILITY_INLINES_HIDDEN!$ENABLE_VISIBILITY_INLINES_HIDDEN$ac_delim RPATH!$RPATH$ac_delim RDYNAMIC!$RDYNAMIC$ac_delim @@ -23564,7 +23590,7 @@ LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 5; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 6; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 Added: vendor/llvm/dist/docs/BranchWeightMetadata.html ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/llvm/dist/docs/BranchWeightMetadata.html Sun Jul 17 15:36:56 2011 (r224133) @@ -0,0 +1,163 @@ + + + + LLVM Branch Weight Metadata + + + + +

+ LLVM Branch Weight Metadata +

+ +
    +
  1. Introduction
  2. +
  3. Supported Instructions
  4. +
  5. Built-in "expect" Instruction
  6. +
  7. CFG Modifications
  8. +
+ +
+

Written by Jakub Staszak

+
+ +

+ Introduction +

+
+

Branch Weight Metadata represents branch weights as its likeliness to +be taken. Metadata is assigned to the TerminatorInst as a +MDNode of the MD_prof kind. The first operator is always a +MDString node with the string "branch_weights". Number of operators +depends on the terminator type.

+ +

Branch weights might be fetch from the profiling file, or generated based on +__builtin_expect instruction. +

+ +

All weights are represented as an unsigned 32-bit values, where higher value +indicates greater chance to be taken.

+
+ +

+ Supported Instructions +

+ +
+

BranchInst

+
+

Metadata is only assign to the conditional branches. There are two extra + operarands, for the true and the false branch.

+
+
+
+!0 = metadata !{
+  metadata !"branch_weights",
+  i32 <TRUE_BRANCH_WEIGHT>,
+  i32 <FALSE_BRANCH_WEIGHT>
+}
+  
+
+ +

SwitchInst

+
+

Branch weights are assign to every case (including default case + which is always case #0).

+
+
+
+!0 = metadata !{
+  metadata !"branch_weights",
+  i32 <DEFAULT_BRANCH_WEIGHT>
+  [ , i32 <CASE_BRANCH_WEIGHT> ... ]
+}
+  
+
+ +

IndirectBrInst

+
+

Branch weights are assign to every destination.

+
+
+
+!0 = metadata !{
+  metadata !"branch_weights",
+  i32 <LABEL_BRANCH_WEIGHT>
+  [ , i32 <LABEL_BRANCH_WEIGHT> ... ]
+}
+  
+
+ +

Other

+
+

Other terminator instructions are not allowed to contain Branch Weight + Metadata.

+
+
+ +

+ Built-in "expect" Instructions +

+
+

__builtin_expect(long exp, long c) instruction provides branch + prediction information. The return value is the value of exp.

+ +

It is especially useful in conditional statements. Currently Clang supports + two conditional statements: +

+

if statement

+
+

The exp parameter is the condition. The c parameter is + the expected comparision value. If it is equal to 1 (true), the condition is + likely to be true, in other case condition is likely to be false. For example: +

+
+
+
+  if (__builtin_expect(x > 0, 1)) {
+    // This block is likely to be taken.
+  }
+  
+
+ +

switch statement

+
+

The exp parameter is the value. The c parameter is the + expected value. If the expected value doesn't show on the cases list, the + default case is assumed to be likely taken.

+
+
+
+  switch (__builtin_expect(x, 5)) {
+  default: break;
+  case 0:  // ...
+  case 3:  // ...
+  case 5:  // This case is likely to be taken.
+  }
+  
+
+
+ +

+ CFG Modifications +

+
+

Branch Weight Metatada is not proof against CFG changes. If terminator +operands' are changed some action should be taken. In other case some +misoptimizations may occur due to incorrent branch prediction information.

+
+ +
+
+ Valid CSS + Valid HTML 4.01 + + Jakub Staszak
+ LLVM Compiler Infrastructure
+
+ + + Modified: vendor/llvm/dist/docs/ExtendingLLVM.html ============================================================================== --- vendor/llvm/dist/docs/ExtendingLLVM.html Sun Jul 17 14:52:55 2011 (r224132) +++ vendor/llvm/dist/docs/ExtendingLLVM.html Sun Jul 17 15:36:56 2011 (r224133) @@ -146,7 +146,7 @@ cases, new nodes have been added to allo complicated behavior in a single node (rotate).

    -
  1. include/llvm/CodeGen/SelectionDAGNodes.h: +
  2. include/llvm/CodeGen/ISDOpcodes.h: Add an enum value for the new SelectionDAG node.
  3. lib/CodeGen/SelectionDAG/SelectionDAG.cpp: Add code to print the node to getOperationName. If your new node @@ -384,7 +384,7 @@ void calcTypeName(const Type *Ty, The LLVM Compiler Infrastructure
    - Last modified: $Date: 2011-04-23 02:30:22 +0200 (Sat, 23 Apr 2011) $ + Last modified: $Date: 2011-06-30 08:37:07 +0200 (Thu, 30 Jun 2011) $ Modified: vendor/llvm/dist/docs/LangRef.html ============================================================================== --- vendor/llvm/dist/docs/LangRef.html Sun Jul 17 14:52:55 2011 (r224132) +++ vendor/llvm/dist/docs/LangRef.html Sun Jul 17 15:36:56 2011 (r224133) @@ -74,16 +74,14 @@
    1. Array Type
    2. Structure Type
    3. -
    4. Packed Structure Type
    5. +
    6. Opaque Type
    7. Vector Type
  4. Function Type
  5. Pointer Type
  6. -
  7. Opaque Type
-
  • Type Up-references
  • Constants @@ -241,6 +239,7 @@
  • 'llvm.pow.*' Intrinsic
  • 'llvm.exp.*' Intrinsic
  • 'llvm.log.*' Intrinsic
  • +
  • 'llvm.fma.*' Intrinsic
  • Bit Manipulation Intrinsics @@ -1164,6 +1163,11 @@ define void @f() optsize { ... } Most of the functions in the Windows system DLLs in Windows XP SP2 or higher were compiled in this fashion. +
    nonlazybind
    +
    This attribute suppresses lazy symbol binding for the function. This + may make calls to the function faster, at the cost of extra program + startup time if the function is not called during program startup.
    +
    inlinehint
    This attribute indicates that the source code contained a hint that inlining this function is desirable (such as the "inline" keyword in C/C++). It @@ -1529,7 +1533,6 @@ synchronization behavior.

    function, pointer, structure, - packed structure, vector, opaque. @@ -1697,7 +1700,9 @@ synchronization behavior.

    possible to have a two dimensional array, using an array as the element type of another array.

    - + + +

    Aggregate Types @@ -1836,9 +1841,7 @@ synchronization behavior.

    Overview:

    The structure type is used to represent a collection of data members together - in memory. The packing of the field types is defined to match the ABI of the - underlying processor. The elements of a structure may be any type that has a - size.

    + in memory. The elements of a structure may be any type that has a size.

    Structures in memory are accessed using 'load' and 'store' by getting a pointer to a field @@ -1846,66 +1849,76 @@ synchronization behavior.

    Structures in registers are accessed using the 'extractvalue' and 'insertvalue' instructions.

    + +

    Structures may optionally be "packed" structures, which indicate that the + alignment of the struct is one byte, and that there is no padding between + the elements. In non-packed structs, padding between field types is defined + by the target data string to match the underlying processor.

    + +

    Structures can either be "anonymous" or "named". An anonymous structure is + defined inline with other types (e.g. {i32, i32}*) and a named types + are always defined at the top level with a name. Anonmyous types are uniqued + by their contents and can never be recursive since there is no way to write + one. Named types can be recursive. +

    +
    Syntax:
    -  { <type list> }
    +  %T1 = type { <type list> }     ; Named normal struct type
    +  %T2 = type <{ <type list> }>   ; Named packed struct type
     
    - +
    Examples:
    - + + + + + +
    { i32, i32, i32 } A triple of three i32 values
    { float, i32 (i32) * } A pair, where the first element is a float and the second element is a pointer to a function that takes an i32, returning an i32.
    <{ i8, i32 }>A packed struct known to be 5 bytes in size.
    - +

    - Packed Structure Type + Opaque Type

    Overview:
    -

    The packed structure type is used to represent a collection of data members - together in memory. There is no padding between fields. Further, the *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 15:38:20 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 793C4106567A; Sun, 17 Jul 2011 15:38:20 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5102A8FC1A; Sun, 17 Jul 2011 15:38:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HFcKNu079248; Sun, 17 Jul 2011 15:38:20 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HFcKdV079247; Sun, 17 Jul 2011 15:38:20 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201107171538.p6HFcKdV079247@svn.freebsd.org> From: Dimitry Andric Date: Sun, 17 Jul 2011 15:38:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224134 - vendor/llvm/llvm-r135360 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 15:38:20 -0000 Author: dim Date: Sun Jul 17 15:38:20 2011 New Revision: 224134 URL: http://svn.freebsd.org/changeset/base/224134 Log: Tag llvm r135360. Added: vendor/llvm/llvm-r135360/ - copied from r224133, vendor/llvm/dist/ From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 15:40:57 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 26083106564A; Sun, 17 Jul 2011 15:40:57 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 122E68FC21; Sun, 17 Jul 2011 15:40:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HFevrq079364; Sun, 17 Jul 2011 15:40:57 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HFeuLs079350; Sun, 17 Jul 2011 15:40:56 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201107171540.p6HFeuLs079350@svn.freebsd.org> From: Dimitry Andric Date: Sun, 17 Jul 2011 15:40:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224135 - in vendor/clang/dist: . INPUTS bindings/python/clang bindings/python/tests/cindex clang.xcodeproj docs examples/Tooling include/clang-c include/clang/ARCMigrate include/clang/... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 15:40:57 -0000 Author: dim Date: Sun Jul 17 15:40:56 2011 New Revision: 224135 URL: http://svn.freebsd.org/changeset/base/224135 Log: Vendor import of clang trunk r135360: http://llvm.org/svn/llvm-project/cfe/trunk@135360 Added: vendor/clang/dist/INPUTS/cfg-big-switch.c vendor/clang/dist/INPUTS/cfg-long-chain1.c vendor/clang/dist/INPUTS/cfg-long-chain2.c vendor/clang/dist/INPUTS/cfg-long-chain3.c vendor/clang/dist/INPUTS/cfg-nested-switches.c vendor/clang/dist/docs/AutomaticReferenceCounting.html vendor/clang/dist/include/clang/ARCMigrate/ vendor/clang/dist/include/clang/ARCMigrate/ARCMT.h vendor/clang/dist/include/clang/ARCMigrate/ARCMTActions.h vendor/clang/dist/include/clang/ARCMigrate/FileRemapper.h vendor/clang/dist/include/clang/AST/GlobalDecl.h vendor/clang/dist/include/clang/Basic/DelayedCleanupPool.h vendor/clang/dist/include/clang/Basic/DiagnosticCategories.h vendor/clang/dist/include/clang/Driver/ObjCRuntime.h vendor/clang/dist/include/clang/Sema/LocInfoType.h vendor/clang/dist/include/clang/Sema/TypoCorrection.h vendor/clang/dist/lib/ARCMigrate/ vendor/clang/dist/lib/ARCMigrate/ARCMT.cpp vendor/clang/dist/lib/ARCMigrate/ARCMTActions.cpp vendor/clang/dist/lib/ARCMigrate/CMakeLists.txt vendor/clang/dist/lib/ARCMigrate/FileRemapper.cpp vendor/clang/dist/lib/ARCMigrate/Internals.h vendor/clang/dist/lib/ARCMigrate/Makefile vendor/clang/dist/lib/ARCMigrate/TransARCAssign.cpp vendor/clang/dist/lib/ARCMigrate/TransAutoreleasePool.cpp vendor/clang/dist/lib/ARCMigrate/TransBlockObjCVariable.cpp vendor/clang/dist/lib/ARCMigrate/TransEmptyStatementsAndDealloc.cpp vendor/clang/dist/lib/ARCMigrate/TransProperties.cpp vendor/clang/dist/lib/ARCMigrate/TransRetainReleaseDealloc.cpp vendor/clang/dist/lib/ARCMigrate/TransUnbridgedCasts.cpp vendor/clang/dist/lib/ARCMigrate/TransUnusedInitDelegate.cpp vendor/clang/dist/lib/ARCMigrate/TransZeroOutPropsInDealloc.cpp vendor/clang/dist/lib/ARCMigrate/TransformActions.cpp vendor/clang/dist/lib/ARCMigrate/Transforms.cpp vendor/clang/dist/lib/ARCMigrate/Transforms.h vendor/clang/dist/lib/Sema/SemaExprMember.cpp vendor/clang/dist/test/ARCMT/ vendor/clang/dist/test/ARCMT/Common.h vendor/clang/dist/test/ARCMT/Inputs/ vendor/clang/dist/test/ARCMT/Inputs/test.h vendor/clang/dist/test/ARCMT/Inputs/test.h.result vendor/clang/dist/test/ARCMT/Inputs/test1.m.in vendor/clang/dist/test/ARCMT/Inputs/test1.m.in.result vendor/clang/dist/test/ARCMT/Inputs/test2.m.in vendor/clang/dist/test/ARCMT/Inputs/test2.m.in.result vendor/clang/dist/test/ARCMT/assign-prop-no-arc-runtime.m vendor/clang/dist/test/ARCMT/assign-prop-no-arc-runtime.m.result vendor/clang/dist/test/ARCMT/assign-prop-with-arc-runtime.m vendor/clang/dist/test/ARCMT/assign-prop-with-arc-runtime.m.result vendor/clang/dist/test/ARCMT/atautorelease-2.m vendor/clang/dist/test/ARCMT/atautorelease-2.m.result vendor/clang/dist/test/ARCMT/atautorelease-3.m vendor/clang/dist/test/ARCMT/atautorelease-3.m.result vendor/clang/dist/test/ARCMT/atautorelease-check.m vendor/clang/dist/test/ARCMT/atautorelease.m vendor/clang/dist/test/ARCMT/atautorelease.m.result vendor/clang/dist/test/ARCMT/autoreleases.m vendor/clang/dist/test/ARCMT/autoreleases.m.result vendor/clang/dist/test/ARCMT/checking.m vendor/clang/dist/test/ARCMT/cxx-checking.mm vendor/clang/dist/test/ARCMT/cxx-rewrite.mm vendor/clang/dist/test/ARCMT/cxx-rewrite.mm.result vendor/clang/dist/test/ARCMT/dealloc.m vendor/clang/dist/test/ARCMT/dealloc.m.result vendor/clang/dist/test/ARCMT/driver-migrate.m vendor/clang/dist/test/ARCMT/init.m vendor/clang/dist/test/ARCMT/init.m.result vendor/clang/dist/test/ARCMT/migrate.m vendor/clang/dist/test/ARCMT/nonobjc-to-objc-cast-2.m vendor/clang/dist/test/ARCMT/nonobjc-to-objc-cast.m vendor/clang/dist/test/ARCMT/nonobjc-to-objc-cast.m.result vendor/clang/dist/test/ARCMT/releases-driver.m vendor/clang/dist/test/ARCMT/releases-driver.m.result vendor/clang/dist/test/ARCMT/releases.m vendor/clang/dist/test/ARCMT/releases.m.result vendor/clang/dist/test/ARCMT/remove-dealloc-method.m vendor/clang/dist/test/ARCMT/remove-dealloc-method.m.result vendor/clang/dist/test/ARCMT/remove-dealloc-zerouts.m vendor/clang/dist/test/ARCMT/remove-dealloc-zerouts.m.result vendor/clang/dist/test/ARCMT/remove-statements.m vendor/clang/dist/test/ARCMT/remove-statements.m.result vendor/clang/dist/test/ARCMT/retains.m vendor/clang/dist/test/ARCMT/retains.m.result vendor/clang/dist/test/ARCMT/rewrite-block-var.m vendor/clang/dist/test/ARCMT/rewrite-block-var.m.result vendor/clang/dist/test/ARCMT/safe-arc-assign.m vendor/clang/dist/test/ARCMT/safe-arc-assign.m.result vendor/clang/dist/test/ARCMT/with-arc-mode-check.m vendor/clang/dist/test/ARCMT/with-arc-mode-migrate.m vendor/clang/dist/test/ARCMT/with-arc-mode-migrate.m.result vendor/clang/dist/test/ARCMT/with-arc-mode-modify.m vendor/clang/dist/test/ARCMT/with-arc-mode-modify.m.result vendor/clang/dist/test/Analysis/objc-arc.m vendor/clang/dist/test/Analysis/retain-release-path-notes-gc.m vendor/clang/dist/test/Analysis/retain-release-path-notes.m vendor/clang/dist/test/Analysis/string-fail.c vendor/clang/dist/test/CXX/class/p6-0x.cpp vendor/clang/dist/test/CXX/except/except.spec/canonical.cpp vendor/clang/dist/test/CXX/temp/p3.cpp vendor/clang/dist/test/CodeGen/arm-asm-variable.c vendor/clang/dist/test/CodeGen/attr-weak-import.c vendor/clang/dist/test/CodeGen/call.c vendor/clang/dist/test/CodeGen/complex-indirect.c vendor/clang/dist/test/CodeGen/darwin-thread-specifier.c vendor/clang/dist/test/CodeGen/debug-info-iv.c vendor/clang/dist/test/CodeGen/debug-info-member.c vendor/clang/dist/test/CodeGen/private-extern-redef.c vendor/clang/dist/test/CodeGen/x86_32-arguments-nommx.c vendor/clang/dist/test/CodeGenCXX/compound-literals.cpp vendor/clang/dist/test/CodeGenCXX/new-overflow.cpp vendor/clang/dist/test/CodeGenCXX/noinline-template.cpp vendor/clang/dist/test/CodeGenCXX/partial-destruction.cpp vendor/clang/dist/test/CodeGenCXX/vla.cpp vendor/clang/dist/test/CodeGenObjC/arc-arm.m vendor/clang/dist/test/CodeGenObjC/arc-block-ivar-layout.m vendor/clang/dist/test/CodeGenObjC/arc-bridged-cast.m vendor/clang/dist/test/CodeGenObjC/arc-compound-stmt.m vendor/clang/dist/test/CodeGenObjC/arc-foreach.m vendor/clang/dist/test/CodeGenObjC/arc-ivar-layout.m vendor/clang/dist/test/CodeGenObjC/arc-no-runtime.m vendor/clang/dist/test/CodeGenObjC/arc-related-result-type.m vendor/clang/dist/test/CodeGenObjC/arc-unbridged-cast.m vendor/clang/dist/test/CodeGenObjC/arc-unopt.m vendor/clang/dist/test/CodeGenObjC/arc-weak-property.m vendor/clang/dist/test/CodeGenObjC/arc.m vendor/clang/dist/test/CodeGenObjC/autorelease.m vendor/clang/dist/test/CodeGenObjC/gc.m vendor/clang/dist/test/CodeGenObjC/mrr-autorelease.m vendor/clang/dist/test/CodeGenObjC/nonlazy-msgSend.m vendor/clang/dist/test/CodeGenObjC/related-result-type.m vendor/clang/dist/test/CodeGenObjC/terminate.m vendor/clang/dist/test/CodeGenObjCXX/arc-globals.mm vendor/clang/dist/test/CodeGenObjCXX/arc-mangle.mm vendor/clang/dist/test/CodeGenObjCXX/arc-move.mm vendor/clang/dist/test/CodeGenObjCXX/arc-new-delete.mm vendor/clang/dist/test/CodeGenObjCXX/arc-pseudo-destructors.mm vendor/clang/dist/test/CodeGenObjCXX/arc-references.mm vendor/clang/dist/test/CodeGenObjCXX/arc-special-member-functions.mm vendor/clang/dist/test/CodeGenObjCXX/arc.mm vendor/clang/dist/test/CodeGenObjCXX/catch-id-type.mm vendor/clang/dist/test/CodeGenObjCXX/copy.mm vendor/clang/dist/test/CodeGenObjCXX/gc.mm vendor/clang/dist/test/CodeGenOpenCL/vector_literals_valid.cl vendor/clang/dist/test/Driver/arc-exceptions.m vendor/clang/dist/test/Driver/arc.c vendor/clang/dist/test/Driver/gnu-runtime.m vendor/clang/dist/test/Driver/ios-simulator-arcruntime.c vendor/clang/dist/test/Driver/mg.c vendor/clang/dist/test/Driver/no-objc-arr.m vendor/clang/dist/test/Driver/noexecstack.c vendor/clang/dist/test/FixIt/typo-crash.cpp vendor/clang/dist/test/Index/arc-annotate.m vendor/clang/dist/test/Index/arc-complete.m vendor/clang/dist/test/Index/werror.c vendor/clang/dist/test/Lexer/has_feature_objc_arc.m vendor/clang/dist/test/PCH/Inputs/arc.h vendor/clang/dist/test/PCH/Inputs/typo.hpp vendor/clang/dist/test/PCH/arc.m vendor/clang/dist/test/PCH/typo.cpp vendor/clang/dist/test/Parser/parenthesis-balance.cpp vendor/clang/dist/test/Preprocessor/pragma_diagnostic_output.c vendor/clang/dist/test/Preprocessor/warn-macro-unused.h vendor/clang/dist/test/Sema/inline-redef.c vendor/clang/dist/test/Sema/no-format-y2k-turnsoff-format.c vendor/clang/dist/test/Sema/nonnull.c vendor/clang/dist/test/Sema/paren-list-expr-type.cpp vendor/clang/dist/test/Sema/sign-conversion.c vendor/clang/dist/test/Sema/warn-sizeof-arrayarg.c vendor/clang/dist/test/SemaCXX/PR10243.cpp vendor/clang/dist/test/SemaCXX/PR7410.cpp vendor/clang/dist/test/SemaCXX/for-range-unused.cpp vendor/clang/dist/test/SemaCXX/function-overload-typo-crash.cpp vendor/clang/dist/test/SemaCXX/missing-namespace-qualifier-typo-corrections.cpp vendor/clang/dist/test/SemaCXX/null_in_arithmetic_ops.cpp vendor/clang/dist/test/SemaCXX/nullptr_in_arithmetic_ops.cpp vendor/clang/dist/test/SemaCXX/warn-memset-bad-sizeof.cpp vendor/clang/dist/test/SemaObjC/Inputs/ vendor/clang/dist/test/SemaObjC/Inputs/arc-system-header.h vendor/clang/dist/test/SemaObjC/arc-bridged-cast.m vendor/clang/dist/test/SemaObjC/arc-decls.m vendor/clang/dist/test/SemaObjC/arc-jump-block.m vendor/clang/dist/test/SemaObjC/arc-no-runtime.m vendor/clang/dist/test/SemaObjC/arc-non-pod-memaccess.m vendor/clang/dist/test/SemaObjC/arc-peformselector.m vendor/clang/dist/test/SemaObjC/arc-property-decl-attrs.m vendor/clang/dist/test/SemaObjC/arc-property-lifetime.m vendor/clang/dist/test/SemaObjC/arc-property.m vendor/clang/dist/test/SemaObjC/arc-system-header.m vendor/clang/dist/test/SemaObjC/arc-type-conversion.m vendor/clang/dist/test/SemaObjC/arc-unavailable-for-weakref.m vendor/clang/dist/test/SemaObjC/arc-unbridged-cast.m vendor/clang/dist/test/SemaObjC/arc-unsafe-assigns.m vendor/clang/dist/test/SemaObjC/arc-unsafe_unretained.m vendor/clang/dist/test/SemaObjC/arc.m vendor/clang/dist/test/SemaObjC/autoreleasepool.m vendor/clang/dist/test/SemaObjC/debugger-support.m vendor/clang/dist/test/SemaObjC/no-warning-unavail-unimp.m vendor/clang/dist/test/SemaObjC/property-ns-returns-not-retained-attr.m vendor/clang/dist/test/SemaObjC/warn-retain-cycle.m vendor/clang/dist/test/SemaObjC/weak-property.m vendor/clang/dist/test/SemaObjCXX/Inputs/ vendor/clang/dist/test/SemaObjCXX/Inputs/arc-system-header.h vendor/clang/dist/test/SemaObjCXX/arc-0x.mm vendor/clang/dist/test/SemaObjCXX/arc-bool-conversion.mm vendor/clang/dist/test/SemaObjCXX/arc-bridged-cast.mm vendor/clang/dist/test/SemaObjCXX/arc-libcxx.mm vendor/clang/dist/test/SemaObjCXX/arc-libstdcxx.mm vendor/clang/dist/test/SemaObjCXX/arc-memfunc.mm vendor/clang/dist/test/SemaObjCXX/arc-non-pod.mm vendor/clang/dist/test/SemaObjCXX/arc-object-init-destroy.mm vendor/clang/dist/test/SemaObjCXX/arc-overloading.mm vendor/clang/dist/test/SemaObjCXX/arc-system-header.mm vendor/clang/dist/test/SemaObjCXX/arc-templates.mm vendor/clang/dist/test/SemaObjCXX/arc-type-conversion.mm vendor/clang/dist/test/SemaObjCXX/arc-type-traits.mm vendor/clang/dist/test/SemaObjCXX/arc-unavailable-for-weakref.mm vendor/clang/dist/test/SemaObjCXX/null_objc_pointer.mm vendor/clang/dist/test/SemaObjCXX/property-type-mismatch.mm vendor/clang/dist/test/SemaOpenCL/vector_literals_invalid.cl vendor/clang/dist/test/SemaTemplate/member-inclass-init-value-dependent.cpp vendor/clang/dist/test/SemaTemplate/unresolved-construct.cpp vendor/clang/dist/tools/arcmt-test/ vendor/clang/dist/tools/arcmt-test/CMakeLists.txt vendor/clang/dist/tools/arcmt-test/Makefile vendor/clang/dist/tools/arcmt-test/arcmt-test.cpp vendor/clang/dist/tools/c-arcmt-test/ vendor/clang/dist/tools/c-arcmt-test/CMakeLists.txt vendor/clang/dist/tools/c-arcmt-test/Makefile vendor/clang/dist/tools/c-arcmt-test/c-arcmt-test.c vendor/clang/dist/tools/libclang/ARCMigrate.cpp Deleted: vendor/clang/dist/docs/index.html vendor/clang/dist/examples/Tooling/ vendor/clang/dist/include/clang/Tooling/ vendor/clang/dist/lib/CodeGen/GlobalDecl.h vendor/clang/dist/lib/Frontend/BoostConAction.cpp vendor/clang/dist/lib/Tooling/ vendor/clang/dist/test/CodeGen/call-knr-indirect.c vendor/clang/dist/test/CodeGenObjC/debug-info-foreach.m vendor/clang/dist/unittests/Tooling/ Modified: vendor/clang/dist/CMakeLists.txt vendor/clang/dist/LICENSE.TXT vendor/clang/dist/bindings/python/clang/cindex.py vendor/clang/dist/bindings/python/tests/cindex/test_cursor_kind.py vendor/clang/dist/bindings/python/tests/cindex/test_translation_unit.py vendor/clang/dist/clang.xcodeproj/project.pbxproj vendor/clang/dist/docs/Block-ABI-Apple.txt vendor/clang/dist/docs/BlockLanguageSpec.txt vendor/clang/dist/docs/DriverInternals.html vendor/clang/dist/docs/InternalsManual.html vendor/clang/dist/docs/LanguageExtensions.html vendor/clang/dist/docs/UsersManual.html vendor/clang/dist/include/clang-c/Index.h vendor/clang/dist/include/clang/AST/ASTContext.h vendor/clang/dist/include/clang/AST/ASTDiagnostic.h vendor/clang/dist/include/clang/AST/CanonicalType.h vendor/clang/dist/include/clang/AST/Decl.h vendor/clang/dist/include/clang/AST/DeclBase.h vendor/clang/dist/include/clang/AST/DeclCXX.h vendor/clang/dist/include/clang/AST/DeclObjC.h vendor/clang/dist/include/clang/AST/DeclTemplate.h vendor/clang/dist/include/clang/AST/DeclarationName.h vendor/clang/dist/include/clang/AST/Expr.h vendor/clang/dist/include/clang/AST/ExprCXX.h vendor/clang/dist/include/clang/AST/ExprObjC.h vendor/clang/dist/include/clang/AST/ExternalASTSource.h vendor/clang/dist/include/clang/AST/NestedNameSpecifier.h vendor/clang/dist/include/clang/AST/OperationKinds.h vendor/clang/dist/include/clang/AST/ParentMap.h vendor/clang/dist/include/clang/AST/PrettyPrinter.h vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h vendor/clang/dist/include/clang/AST/Stmt.h vendor/clang/dist/include/clang/AST/StmtObjC.h vendor/clang/dist/include/clang/AST/TemplateBase.h vendor/clang/dist/include/clang/AST/TemplateName.h vendor/clang/dist/include/clang/AST/Type.h vendor/clang/dist/include/clang/Analysis/Analyses/UninitializedValues.h vendor/clang/dist/include/clang/Analysis/AnalysisContext.h vendor/clang/dist/include/clang/Analysis/DomainSpecific/CocoaConventions.h vendor/clang/dist/include/clang/Basic/Attr.td vendor/clang/dist/include/clang/Basic/Builtins.def vendor/clang/dist/include/clang/Basic/Builtins.h vendor/clang/dist/include/clang/Basic/BuiltinsX86.def vendor/clang/dist/include/clang/Basic/Diagnostic.h vendor/clang/dist/include/clang/Basic/DiagnosticCommonKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticDriverKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticFrontendKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td vendor/clang/dist/include/clang/Basic/DiagnosticIDs.h vendor/clang/dist/include/clang/Basic/DiagnosticLexKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticParseKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td vendor/clang/dist/include/clang/Basic/FileManager.h vendor/clang/dist/include/clang/Basic/IdentifierTable.h vendor/clang/dist/include/clang/Basic/LangOptions.h vendor/clang/dist/include/clang/Basic/SourceManager.h vendor/clang/dist/include/clang/Basic/SourceManagerInternals.h vendor/clang/dist/include/clang/Basic/Specifiers.h vendor/clang/dist/include/clang/Basic/StmtNodes.td vendor/clang/dist/include/clang/Basic/TargetInfo.h vendor/clang/dist/include/clang/Basic/TokenKinds.def vendor/clang/dist/include/clang/Basic/arm_neon.td vendor/clang/dist/include/clang/CodeGen/BackendUtil.h vendor/clang/dist/include/clang/Driver/CC1Options.td vendor/clang/dist/include/clang/Driver/Compilation.h vendor/clang/dist/include/clang/Driver/Driver.h vendor/clang/dist/include/clang/Driver/Option.h vendor/clang/dist/include/clang/Driver/Options.td vendor/clang/dist/include/clang/Driver/ToolChain.h vendor/clang/dist/include/clang/Frontend/ASTUnit.h vendor/clang/dist/include/clang/Frontend/CodeGenOptions.h vendor/clang/dist/include/clang/Frontend/DependencyOutputOptions.h vendor/clang/dist/include/clang/Frontend/DiagnosticOptions.h vendor/clang/dist/include/clang/Frontend/FrontendAction.h vendor/clang/dist/include/clang/Frontend/FrontendActions.h vendor/clang/dist/include/clang/Frontend/FrontendOptions.h vendor/clang/dist/include/clang/Frontend/HeaderSearchOptions.h vendor/clang/dist/include/clang/Frontend/PreprocessorOptions.h vendor/clang/dist/include/clang/Frontend/TextDiagnosticPrinter.h vendor/clang/dist/include/clang/Frontend/Utils.h vendor/clang/dist/include/clang/Lex/Lexer.h vendor/clang/dist/include/clang/Lex/LiteralSupport.h vendor/clang/dist/include/clang/Lex/MacroInfo.h vendor/clang/dist/include/clang/Lex/PPCallbacks.h vendor/clang/dist/include/clang/Lex/PreprocessingRecord.h vendor/clang/dist/include/clang/Lex/Preprocessor.h vendor/clang/dist/include/clang/Lex/Token.h vendor/clang/dist/include/clang/Lex/TokenLexer.h vendor/clang/dist/include/clang/Parse/Parser.h vendor/clang/dist/include/clang/Rewrite/FixItRewriter.h vendor/clang/dist/include/clang/Rewrite/Rewriter.h vendor/clang/dist/include/clang/Sema/AnalysisBasedWarnings.h vendor/clang/dist/include/clang/Sema/AttributeList.h vendor/clang/dist/include/clang/Sema/CodeCompleteConsumer.h vendor/clang/dist/include/clang/Sema/DeclSpec.h vendor/clang/dist/include/clang/Sema/DelayedDiagnostic.h vendor/clang/dist/include/clang/Sema/ExternalSemaSource.h vendor/clang/dist/include/clang/Sema/Initialization.h vendor/clang/dist/include/clang/Sema/Overload.h vendor/clang/dist/include/clang/Sema/Scope.h vendor/clang/dist/include/clang/Sema/Sema.h vendor/clang/dist/include/clang/Serialization/ASTBitCodes.h vendor/clang/dist/include/clang/Serialization/ASTReader.h vendor/clang/dist/include/clang/Serialization/ASTWriter.h vendor/clang/dist/include/clang/Serialization/ChainedIncludesSource.h vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/GRStateTrait.h vendor/clang/dist/lib/AST/ASTContext.cpp vendor/clang/dist/lib/AST/ASTDiagnostic.cpp vendor/clang/dist/lib/AST/ASTImporter.cpp vendor/clang/dist/lib/AST/Decl.cpp vendor/clang/dist/lib/AST/DeclBase.cpp vendor/clang/dist/lib/AST/DeclCXX.cpp vendor/clang/dist/lib/AST/DeclObjC.cpp vendor/clang/dist/lib/AST/DeclPrinter.cpp vendor/clang/dist/lib/AST/DeclarationName.cpp vendor/clang/dist/lib/AST/Expr.cpp vendor/clang/dist/lib/AST/ExprCXX.cpp vendor/clang/dist/lib/AST/ExprClassification.cpp vendor/clang/dist/lib/AST/ExprConstant.cpp vendor/clang/dist/lib/AST/ExternalASTSource.cpp vendor/clang/dist/lib/AST/ItaniumMangle.cpp vendor/clang/dist/lib/AST/NestedNameSpecifier.cpp vendor/clang/dist/lib/AST/ParentMap.cpp vendor/clang/dist/lib/AST/RecordLayoutBuilder.cpp vendor/clang/dist/lib/AST/Stmt.cpp vendor/clang/dist/lib/AST/StmtPrinter.cpp vendor/clang/dist/lib/AST/StmtProfile.cpp vendor/clang/dist/lib/AST/TemplateBase.cpp vendor/clang/dist/lib/AST/TemplateName.cpp vendor/clang/dist/lib/AST/Type.cpp vendor/clang/dist/lib/AST/TypePrinter.cpp vendor/clang/dist/lib/Analysis/CFG.cpp vendor/clang/dist/lib/Analysis/CocoaConventions.cpp vendor/clang/dist/lib/Analysis/FormatString.cpp vendor/clang/dist/lib/Analysis/ReachableCode.cpp vendor/clang/dist/lib/Analysis/UninitializedValues.cpp vendor/clang/dist/lib/Basic/Builtins.cpp vendor/clang/dist/lib/Basic/Diagnostic.cpp vendor/clang/dist/lib/Basic/DiagnosticIDs.cpp vendor/clang/dist/lib/Basic/IdentifierTable.cpp vendor/clang/dist/lib/Basic/SourceManager.cpp vendor/clang/dist/lib/Basic/TargetInfo.cpp vendor/clang/dist/lib/Basic/Targets.cpp vendor/clang/dist/lib/CMakeLists.txt vendor/clang/dist/lib/CodeGen/ABIInfo.h vendor/clang/dist/lib/CodeGen/BackendUtil.cpp vendor/clang/dist/lib/CodeGen/CGBlocks.cpp vendor/clang/dist/lib/CodeGen/CGBlocks.h vendor/clang/dist/lib/CodeGen/CGBuiltin.cpp vendor/clang/dist/lib/CodeGen/CGCXXABI.cpp vendor/clang/dist/lib/CodeGen/CGCXXABI.h vendor/clang/dist/lib/CodeGen/CGCall.cpp vendor/clang/dist/lib/CodeGen/CGCall.h vendor/clang/dist/lib/CodeGen/CGClass.cpp vendor/clang/dist/lib/CodeGen/CGCleanup.cpp vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp vendor/clang/dist/lib/CodeGen/CGDebugInfo.h vendor/clang/dist/lib/CodeGen/CGDecl.cpp vendor/clang/dist/lib/CodeGen/CGDeclCXX.cpp vendor/clang/dist/lib/CodeGen/CGException.cpp vendor/clang/dist/lib/CodeGen/CGExpr.cpp vendor/clang/dist/lib/CodeGen/CGExprAgg.cpp vendor/clang/dist/lib/CodeGen/CGExprCXX.cpp vendor/clang/dist/lib/CodeGen/CGExprComplex.cpp vendor/clang/dist/lib/CodeGen/CGExprConstant.cpp vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp vendor/clang/dist/lib/CodeGen/CGObjC.cpp vendor/clang/dist/lib/CodeGen/CGObjCGNU.cpp vendor/clang/dist/lib/CodeGen/CGObjCMac.cpp vendor/clang/dist/lib/CodeGen/CGObjCRuntime.cpp vendor/clang/dist/lib/CodeGen/CGObjCRuntime.h vendor/clang/dist/lib/CodeGen/CGRTTI.cpp vendor/clang/dist/lib/CodeGen/CGRecordLayout.h vendor/clang/dist/lib/CodeGen/CGRecordLayoutBuilder.cpp vendor/clang/dist/lib/CodeGen/CGStmt.cpp vendor/clang/dist/lib/CodeGen/CGTemporaries.cpp vendor/clang/dist/lib/CodeGen/CGVTT.cpp vendor/clang/dist/lib/CodeGen/CGVTables.cpp vendor/clang/dist/lib/CodeGen/CGVTables.h vendor/clang/dist/lib/CodeGen/CGValue.h vendor/clang/dist/lib/CodeGen/CodeGenAction.cpp vendor/clang/dist/lib/CodeGen/CodeGenFunction.cpp vendor/clang/dist/lib/CodeGen/CodeGenFunction.h vendor/clang/dist/lib/CodeGen/CodeGenModule.cpp vendor/clang/dist/lib/CodeGen/CodeGenModule.h vendor/clang/dist/lib/CodeGen/CodeGenTypes.cpp vendor/clang/dist/lib/CodeGen/CodeGenTypes.h vendor/clang/dist/lib/CodeGen/ItaniumCXXABI.cpp vendor/clang/dist/lib/CodeGen/TargetInfo.cpp vendor/clang/dist/lib/CodeGen/TargetInfo.h vendor/clang/dist/lib/Driver/Arg.cpp vendor/clang/dist/lib/Driver/ArgList.cpp vendor/clang/dist/lib/Driver/Driver.cpp vendor/clang/dist/lib/Driver/Option.cpp vendor/clang/dist/lib/Driver/ToolChain.cpp vendor/clang/dist/lib/Driver/ToolChains.cpp vendor/clang/dist/lib/Driver/ToolChains.h vendor/clang/dist/lib/Driver/Tools.cpp vendor/clang/dist/lib/Driver/Tools.h vendor/clang/dist/lib/Frontend/ASTUnit.cpp vendor/clang/dist/lib/Frontend/CMakeLists.txt vendor/clang/dist/lib/Frontend/CacheTokens.cpp vendor/clang/dist/lib/Frontend/CompilerInstance.cpp vendor/clang/dist/lib/Frontend/CompilerInvocation.cpp vendor/clang/dist/lib/Frontend/DependencyFile.cpp vendor/clang/dist/lib/Frontend/FrontendAction.cpp vendor/clang/dist/lib/Frontend/InitHeaderSearch.cpp vendor/clang/dist/lib/Frontend/InitPreprocessor.cpp vendor/clang/dist/lib/Frontend/PrintPreprocessedOutput.cpp vendor/clang/dist/lib/Frontend/TextDiagnosticPrinter.cpp vendor/clang/dist/lib/FrontendTool/CMakeLists.txt vendor/clang/dist/lib/FrontendTool/ExecuteCompilerInvocation.cpp vendor/clang/dist/lib/Headers/float.h vendor/clang/dist/lib/Headers/stdarg.h vendor/clang/dist/lib/Lex/HeaderSearch.cpp vendor/clang/dist/lib/Lex/Lexer.cpp vendor/clang/dist/lib/Lex/MacroArgs.cpp vendor/clang/dist/lib/Lex/MacroArgs.h vendor/clang/dist/lib/Lex/MacroInfo.cpp vendor/clang/dist/lib/Lex/PPDirectives.cpp vendor/clang/dist/lib/Lex/PPLexerChange.cpp vendor/clang/dist/lib/Lex/PPMacroExpansion.cpp vendor/clang/dist/lib/Lex/Pragma.cpp vendor/clang/dist/lib/Lex/PreprocessingRecord.cpp vendor/clang/dist/lib/Lex/Preprocessor.cpp vendor/clang/dist/lib/Lex/TokenLexer.cpp vendor/clang/dist/lib/Makefile vendor/clang/dist/lib/Parse/ParseAST.cpp vendor/clang/dist/lib/Parse/ParseDecl.cpp vendor/clang/dist/lib/Parse/ParseDeclCXX.cpp vendor/clang/dist/lib/Parse/ParseExpr.cpp vendor/clang/dist/lib/Parse/ParseExprCXX.cpp vendor/clang/dist/lib/Parse/ParseObjc.cpp vendor/clang/dist/lib/Parse/ParseStmt.cpp vendor/clang/dist/lib/Parse/ParseTemplate.cpp vendor/clang/dist/lib/Parse/ParseTentative.cpp vendor/clang/dist/lib/Parse/Parser.cpp vendor/clang/dist/lib/Rewrite/FixItRewriter.cpp vendor/clang/dist/lib/Rewrite/HTMLRewrite.cpp vendor/clang/dist/lib/Rewrite/RewriteObjC.cpp vendor/clang/dist/lib/Rewrite/Rewriter.cpp vendor/clang/dist/lib/Sema/AnalysisBasedWarnings.cpp vendor/clang/dist/lib/Sema/AttributeList.cpp vendor/clang/dist/lib/Sema/CMakeLists.txt vendor/clang/dist/lib/Sema/CodeCompleteConsumer.cpp vendor/clang/dist/lib/Sema/DeclSpec.cpp vendor/clang/dist/lib/Sema/DelayedDiagnostic.cpp vendor/clang/dist/lib/Sema/JumpDiagnostics.cpp vendor/clang/dist/lib/Sema/Sema.cpp vendor/clang/dist/lib/Sema/SemaCXXCast.cpp vendor/clang/dist/lib/Sema/SemaCXXScopeSpec.cpp vendor/clang/dist/lib/Sema/SemaChecking.cpp vendor/clang/dist/lib/Sema/SemaCodeComplete.cpp vendor/clang/dist/lib/Sema/SemaDecl.cpp vendor/clang/dist/lib/Sema/SemaDeclAttr.cpp vendor/clang/dist/lib/Sema/SemaDeclCXX.cpp vendor/clang/dist/lib/Sema/SemaDeclObjC.cpp vendor/clang/dist/lib/Sema/SemaExpr.cpp vendor/clang/dist/lib/Sema/SemaExprCXX.cpp vendor/clang/dist/lib/Sema/SemaExprObjC.cpp vendor/clang/dist/lib/Sema/SemaInit.cpp vendor/clang/dist/lib/Sema/SemaLookup.cpp vendor/clang/dist/lib/Sema/SemaObjCProperty.cpp vendor/clang/dist/lib/Sema/SemaOverload.cpp vendor/clang/dist/lib/Sema/SemaStmt.cpp vendor/clang/dist/lib/Sema/SemaTemplate.cpp vendor/clang/dist/lib/Sema/SemaTemplateDeduction.cpp vendor/clang/dist/lib/Sema/SemaTemplateInstantiate.cpp vendor/clang/dist/lib/Sema/SemaTemplateInstantiateDecl.cpp vendor/clang/dist/lib/Sema/SemaTemplateVariadic.cpp vendor/clang/dist/lib/Sema/SemaType.cpp vendor/clang/dist/lib/Sema/TreeTransform.h vendor/clang/dist/lib/Sema/TypeLocBuilder.h vendor/clang/dist/lib/Serialization/ASTReader.cpp vendor/clang/dist/lib/Serialization/ASTReaderDecl.cpp vendor/clang/dist/lib/Serialization/ASTReaderStmt.cpp vendor/clang/dist/lib/Serialization/ASTWriter.cpp vendor/clang/dist/lib/Serialization/ASTWriterDecl.cpp vendor/clang/dist/lib/Serialization/ASTWriterStmt.cpp vendor/clang/dist/lib/Serialization/ChainedIncludesSource.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/CStringChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/Checkers.td vendor/clang/dist/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/IteratorsChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/MacOSXAPIChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/CFRefCount.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/Environment.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/ExprEngine.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/RegionStore.cpp vendor/clang/dist/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp vendor/clang/dist/runtime/compiler-rt/Makefile vendor/clang/dist/test/Analysis/bstring.c vendor/clang/dist/test/Analysis/misc-ps-eager-assume.m vendor/clang/dist/test/Analysis/nullptr.cpp vendor/clang/dist/test/Analysis/pr4209.m vendor/clang/dist/test/Analysis/retain-release-gc-only.m vendor/clang/dist/test/Analysis/retain-release.m vendor/clang/dist/test/Analysis/retain-release.mm vendor/clang/dist/test/Analysis/string.c vendor/clang/dist/test/Analysis/uninit-ps-rdar6145427.m vendor/clang/dist/test/Analysis/uninit-vals-ps-region.m vendor/clang/dist/test/Analysis/uninit-vals.m vendor/clang/dist/test/Analysis/variadic-method-types.m vendor/clang/dist/test/CMakeLists.txt vendor/clang/dist/test/CXX/basic/basic.lookup/basic.lookup.argdep/p4.cpp vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.stc/p1.cpp vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p5.cpp vendor/clang/dist/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p6.cpp vendor/clang/dist/test/CXX/except/except.spec/p14-ir.cpp vendor/clang/dist/test/CXX/special/class.copy/p33-0x.cpp vendor/clang/dist/test/CXX/stmt.stmt/stmt.dcl/p3-0x.cpp vendor/clang/dist/test/CXX/stmt.stmt/stmt.iter/stmt.ranged/p1.cpp vendor/clang/dist/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p3.cpp vendor/clang/dist/test/CXX/temp/temp.res/temp.local/p3.cpp vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p7.cpp vendor/clang/dist/test/CodeGen/annotate.c vendor/clang/dist/test/CodeGen/arm-arguments.c vendor/clang/dist/test/CodeGen/asm-errors.c vendor/clang/dist/test/CodeGen/asm-inout.c vendor/clang/dist/test/CodeGen/asm.c vendor/clang/dist/test/CodeGen/attributes.c vendor/clang/dist/test/CodeGen/bitfield-2.c vendor/clang/dist/test/CodeGen/blocksignature.c vendor/clang/dist/test/CodeGen/blockstret.c vendor/clang/dist/test/CodeGen/builtin-expect.c vendor/clang/dist/test/CodeGen/byval-memcpy-elim.c vendor/clang/dist/test/CodeGen/complex.c vendor/clang/dist/test/CodeGen/compound-literal.c vendor/clang/dist/test/CodeGen/const-init.c vendor/clang/dist/test/CodeGen/debug-info.c vendor/clang/dist/test/CodeGen/decl.c vendor/clang/dist/test/CodeGen/designated-initializers.c vendor/clang/dist/test/CodeGen/flexible-array-init.c vendor/clang/dist/test/CodeGen/functions.c vendor/clang/dist/test/CodeGen/global-init.c vendor/clang/dist/test/CodeGen/init.c vendor/clang/dist/test/CodeGen/libcalls.c vendor/clang/dist/test/CodeGen/mmx-inline-asm.c vendor/clang/dist/test/CodeGen/ms-anonymous-struct.c vendor/clang/dist/test/CodeGen/packed-union.c vendor/clang/dist/test/CodeGen/pragma-pack-3.c vendor/clang/dist/test/CodeGen/struct-init.c vendor/clang/dist/test/CodeGen/struct.c vendor/clang/dist/test/CodeGen/trapv.c vendor/clang/dist/test/CodeGen/union-init2.c vendor/clang/dist/test/CodeGen/vla.c vendor/clang/dist/test/CodeGen/volatile-1.c vendor/clang/dist/test/CodeGen/volatile-2.c vendor/clang/dist/test/CodeGen/x86_32-arguments-darwin.c vendor/clang/dist/test/CodeGen/x86_32-arguments-linux.c vendor/clang/dist/test/CodeGen/x86_64-arguments.c vendor/clang/dist/test/CodeGenCXX/anonymous-union-member-initializer.cpp vendor/clang/dist/test/CodeGenCXX/attr-used.cpp vendor/clang/dist/test/CodeGenCXX/block-byref-cxx-objc.cpp vendor/clang/dist/test/CodeGenCXX/blocks.cpp vendor/clang/dist/test/CodeGenCXX/class-layout.cpp vendor/clang/dist/test/CodeGenCXX/const-init.cpp vendor/clang/dist/test/CodeGenCXX/constructor-init.cpp vendor/clang/dist/test/CodeGenCXX/constructors.cpp vendor/clang/dist/test/CodeGenCXX/copy-constructor-elim-2.cpp vendor/clang/dist/test/CodeGenCXX/copy-constructor-synthesis-2.cpp vendor/clang/dist/test/CodeGenCXX/copy-initialization.cpp vendor/clang/dist/test/CodeGenCXX/cxx0x-defaulted-templates.cpp vendor/clang/dist/test/CodeGenCXX/cxx0x-delegating-ctors.cpp vendor/clang/dist/test/CodeGenCXX/default-constructor-default-argument.cpp vendor/clang/dist/test/CodeGenCXX/default-constructor-template-member.cpp vendor/clang/dist/test/CodeGenCXX/delete.cpp vendor/clang/dist/test/CodeGenCXX/destructors.cpp vendor/clang/dist/test/CodeGenCXX/eh.cpp vendor/clang/dist/test/CodeGenCXX/elide-call-reference.cpp vendor/clang/dist/test/CodeGenCXX/for-range.cpp vendor/clang/dist/test/CodeGenCXX/global-init.cpp vendor/clang/dist/test/CodeGenCXX/implicit-copy-constructor.cpp vendor/clang/dist/test/CodeGenCXX/init-incomplete-type.cpp vendor/clang/dist/test/CodeGenCXX/mangle-subst-std.cpp vendor/clang/dist/test/CodeGenCXX/mangle-template.cpp vendor/clang/dist/test/CodeGenCXX/mangle.cpp vendor/clang/dist/test/CodeGenCXX/member-function-pointers.cpp vendor/clang/dist/test/CodeGenCXX/member-init-assignment.cpp vendor/clang/dist/test/CodeGenCXX/member-init-ctor.cpp vendor/clang/dist/test/CodeGenCXX/new.cpp vendor/clang/dist/test/CodeGenCXX/nrvo.cpp vendor/clang/dist/test/CodeGenCXX/pointers-to-data-members.cpp vendor/clang/dist/test/CodeGenCXX/pr9965.cpp vendor/clang/dist/test/CodeGenCXX/references.cpp vendor/clang/dist/test/CodeGenCXX/static-init-3.cpp vendor/clang/dist/test/CodeGenCXX/static-init.cpp vendor/clang/dist/test/CodeGenCXX/stmtexpr.cpp vendor/clang/dist/test/CodeGenCXX/template-anonymous-types.cpp vendor/clang/dist/test/CodeGenCXX/temporaries.cpp vendor/clang/dist/test/CodeGenCXX/value-init.cpp vendor/clang/dist/test/CodeGenCXX/variadic-templates.cpp vendor/clang/dist/test/CodeGenCXX/virt-call-offsets.cpp vendor/clang/dist/test/CodeGenCXX/virtual-base-destructor-call.cpp vendor/clang/dist/test/CodeGenCXX/virtual-bases.cpp vendor/clang/dist/test/CodeGenCXX/virtual-functions-incomplete-types.cpp vendor/clang/dist/test/CodeGenCXX/virtual-pseudo-destructor-call.cpp vendor/clang/dist/test/CodeGenCXX/visibility-inlines-hidden.cpp vendor/clang/dist/test/CodeGenCXX/visibility.cpp vendor/clang/dist/test/CodeGenCXX/volatile-1.cpp vendor/clang/dist/test/CodeGenCXX/vtable-pointer-initialization.cpp vendor/clang/dist/test/CodeGenCXX/x86_32-arguments.cpp vendor/clang/dist/test/CodeGenCXX/x86_64-arguments.cpp vendor/clang/dist/test/CodeGenObjC/block-6.m vendor/clang/dist/test/CodeGenObjC/blocks.m vendor/clang/dist/test/CodeGenObjC/encode-test.m vendor/clang/dist/test/CodeGenObjC/exceptions-nonfragile.m vendor/clang/dist/test/CodeGenObjC/property-list-in-class.m vendor/clang/dist/test/CodeGenObjC/variadic-sends.m vendor/clang/dist/test/CodeGenObjCXX/encode.mm vendor/clang/dist/test/CodeGenObjCXX/property-object-conditional-exp.mm vendor/clang/dist/test/CodeGenObjCXX/property-objects.mm vendor/clang/dist/test/CodeGenOpenCL/2011-04-15-vec-init-from-vec.cl vendor/clang/dist/test/Driver/darwin-ld.c vendor/clang/dist/test/Driver/darwin-objc-options.m vendor/clang/dist/test/Driver/darwin-xarch.c vendor/clang/dist/test/Driver/rewrite-objc.m vendor/clang/dist/test/Driver/sysroot.c vendor/clang/dist/test/Driver/x86_features.c vendor/clang/dist/test/FixIt/fixit-objc.m vendor/clang/dist/test/FixIt/fixit.c vendor/clang/dist/test/FixIt/typo.cpp vendor/clang/dist/test/Frontend/dependency-gen.c vendor/clang/dist/test/Index/annotate-tokens-pp.c vendor/clang/dist/test/Index/annotate-tokens.cpp vendor/clang/dist/test/Index/annotate-tokens.m vendor/clang/dist/test/Index/c-index-api-loadTU-test.m vendor/clang/dist/test/Index/c-index-getCursor-pp.c vendor/clang/dist/test/Index/c-index-getCursor-test.m vendor/clang/dist/test/Index/code-completion.cpp vendor/clang/dist/test/Index/complete-exprs.m vendor/clang/dist/test/Index/complete-natural.m vendor/clang/dist/test/Index/complete-property-flags.m vendor/clang/dist/test/Index/get-cursor.cpp vendor/clang/dist/test/Index/nested-macro-instantiations.cpp vendor/clang/dist/test/Makefile vendor/clang/dist/test/Misc/caret-diags-macros.c vendor/clang/dist/test/Misc/diag-aka-types.cpp vendor/clang/dist/test/Misc/include-stack-for-note-flag.cpp vendor/clang/dist/test/Misc/macro-backtrace-limit.c vendor/clang/dist/test/PCH/variables.c vendor/clang/dist/test/PCH/variables.h vendor/clang/dist/test/Parser/MicrosoftExtensions.c vendor/clang/dist/test/Parser/recovery.c vendor/clang/dist/test/Parser/switch-recovery.cpp vendor/clang/dist/test/Preprocessor/include-directive2.c vendor/clang/dist/test/Preprocessor/init.c vendor/clang/dist/test/Preprocessor/macro_paste_bad.c vendor/clang/dist/test/Preprocessor/macro_paste_hashhash.c vendor/clang/dist/test/Preprocessor/macro_paste_simple.c vendor/clang/dist/test/Preprocessor/warn-macro-unused.c vendor/clang/dist/test/Sema/arm-neon-types.c vendor/clang/dist/test/Sema/asm.c vendor/clang/dist/test/Sema/attr-deprecated.c vendor/clang/dist/test/Sema/attr-naked.c vendor/clang/dist/test/Sema/attr-unavailable-message.c vendor/clang/dist/test/Sema/attr-weak.c vendor/clang/dist/test/Sema/bitfield.c vendor/clang/dist/test/Sema/compare.c vendor/clang/dist/test/Sema/const-eval.c vendor/clang/dist/test/Sema/conversion-64-32.c vendor/clang/dist/test/Sema/conversion.c vendor/clang/dist/test/Sema/ext_vector_casts.c vendor/clang/dist/test/Sema/extern-redecl.c vendor/clang/dist/test/Sema/format-strings.c vendor/clang/dist/test/Sema/i-c-e.c vendor/clang/dist/test/Sema/incomplete-decl.c vendor/clang/dist/test/Sema/inline.c vendor/clang/dist/test/Sema/parentheses.c vendor/clang/dist/test/Sema/parentheses.cpp vendor/clang/dist/test/Sema/pointer-addition.c vendor/clang/dist/test/Sema/pointer-subtract-compat.c vendor/clang/dist/test/Sema/shift.c vendor/clang/dist/test/Sema/struct-decl.c vendor/clang/dist/test/Sema/typecheck-binop.c vendor/clang/dist/test/Sema/typedef-variable-type.c vendor/clang/dist/test/Sema/uninit-variables.c vendor/clang/dist/test/Sema/varargs.c vendor/clang/dist/test/Sema/vla.c vendor/clang/dist/test/Sema/x86-builtin-palignr.c vendor/clang/dist/test/SemaCXX/PR9459.cpp vendor/clang/dist/test/SemaCXX/alignof-sizeof-reference.cpp vendor/clang/dist/test/SemaCXX/attr-unavailable.cpp vendor/clang/dist/test/SemaCXX/c99-variable-length-array.cpp vendor/clang/dist/test/SemaCXX/condition.cpp vendor/clang/dist/test/SemaCXX/conversion-function.cpp vendor/clang/dist/test/SemaCXX/copy-assignment.cpp vendor/clang/dist/test/SemaCXX/crashes.cpp vendor/clang/dist/test/SemaCXX/decltype.cpp vendor/clang/dist/test/SemaCXX/enum-scoped.cpp vendor/clang/dist/test/SemaCXX/expressions.cpp vendor/clang/dist/test/SemaCXX/generalized-initializers.cpp vendor/clang/dist/test/SemaCXX/i-c-e-cxx.cpp vendor/clang/dist/test/SemaCXX/member-init.cpp vendor/clang/dist/test/SemaCXX/member-pointer.cpp vendor/clang/dist/test/SemaCXX/nested-name-spec.cpp vendor/clang/dist/test/SemaCXX/new-delete.cpp vendor/clang/dist/test/SemaCXX/overloaded-name.cpp vendor/clang/dist/test/SemaCXX/return.cpp vendor/clang/dist/test/SemaCXX/vararg-non-pod.cpp vendor/clang/dist/test/SemaCXX/vector.cpp vendor/clang/dist/test/SemaCXX/virtuals.cpp vendor/clang/dist/test/SemaCXX/warn-bad-memaccess.cpp vendor/clang/dist/test/SemaCXX/warn-pure-virtual-call-from-ctor-dtor.cpp vendor/clang/dist/test/SemaCXX/warn-unused-variables.cpp vendor/clang/dist/test/SemaObjC/class-proto-1.m vendor/clang/dist/test/SemaObjC/class-unavail-warning.m vendor/clang/dist/test/SemaObjC/error-property-gc-attr.m vendor/clang/dist/test/SemaObjC/forward-class-1.m vendor/clang/dist/test/SemaObjC/ivar-ref-misuse.m vendor/clang/dist/test/SemaObjC/method-lookup-3.m vendor/clang/dist/test/SemaObjC/property-10.m vendor/clang/dist/test/SemaObjC/property-inherited.m vendor/clang/dist/test/SemaObjC/related-result-type-inference.m vendor/clang/dist/test/SemaObjC/selector-3.m vendor/clang/dist/test/SemaObjC/self-declared-in-block.m vendor/clang/dist/test/SemaObjC/sizeof-interface.m vendor/clang/dist/test/SemaObjC/special-dep-unavail-warning.m vendor/clang/dist/test/SemaObjC/synthesized-ivar.m vendor/clang/dist/test/SemaObjC/typedef-class.m vendor/clang/dist/test/SemaObjC/undef-superclass-1.m vendor/clang/dist/test/SemaObjCXX/exceptions-fragile.mm vendor/clang/dist/test/SemaObjCXX/gc-attributes.mm vendor/clang/dist/test/SemaObjCXX/nullptr.mm vendor/clang/dist/test/SemaObjCXX/related-result-type-inference.mm vendor/clang/dist/test/SemaTemplate/class-template-decl.cpp vendor/clang/dist/test/SemaTemplate/deduction.cpp vendor/clang/dist/test/SemaTemplate/default-arguments.cpp vendor/clang/dist/test/SemaTemplate/dependent-names-no-std.cpp vendor/clang/dist/test/SemaTemplate/dependent-names.cpp vendor/clang/dist/test/SemaTemplate/ext-vector-type.cpp vendor/clang/dist/test/SemaTemplate/instantiate-call.cpp vendor/clang/dist/test/SemaTemplate/instantiate-function-2.cpp vendor/clang/dist/test/SemaTemplate/instantiate-member-class.cpp vendor/clang/dist/test/SemaTemplate/instantiate-try-catch.cpp vendor/clang/dist/test/Unit/lit.cfg vendor/clang/dist/tools/CMakeLists.txt vendor/clang/dist/tools/Makefile vendor/clang/dist/tools/c-index-test/Makefile vendor/clang/dist/tools/c-index-test/c-index-test.c vendor/clang/dist/tools/driver/CMakeLists.txt vendor/clang/dist/tools/driver/Makefile vendor/clang/dist/tools/driver/cc1_main.cpp vendor/clang/dist/tools/driver/cc1as_main.cpp vendor/clang/dist/tools/driver/driver.cpp vendor/clang/dist/tools/libclang/CIndex.cpp vendor/clang/dist/tools/libclang/CIndexCodeCompletion.cpp vendor/clang/dist/tools/libclang/CMakeLists.txt vendor/clang/dist/tools/libclang/CXCursor.cpp vendor/clang/dist/tools/libclang/CXCursor.h vendor/clang/dist/tools/libclang/CXType.cpp vendor/clang/dist/tools/libclang/Makefile vendor/clang/dist/tools/libclang/libclang.darwin.exports vendor/clang/dist/tools/libclang/libclang.exports vendor/clang/dist/tools/scan-build/ccc-analyzer vendor/clang/dist/unittests/Basic/FileManagerTest.cpp vendor/clang/dist/unittests/Frontend/Makefile vendor/clang/dist/www/compatibility.html Modified: vendor/clang/dist/CMakeLists.txt ============================================================================== --- vendor/clang/dist/CMakeLists.txt Sun Jul 17 15:38:20 2011 (r224134) +++ vendor/clang/dist/CMakeLists.txt Sun Jul 17 15:40:56 2011 (r224135) @@ -20,7 +20,11 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURR endif() if( NOT EXISTS "${CLANG_PATH_TO_LLVM_BUILD}/bin/tblgen${CMAKE_EXECUTABLE_SUFFIX}" ) - message(FATAL_ERROR "Please set CLANG_PATH_TO_LLVM_BUILD to a directory containing a LLVM build.") + # Looking for bin/Debug/tblgen is a complete hack. How can we get + # around this? + if( NOT EXISTS "${CLANG_PATH_TO_LLVM_BUILD}/bin/Debug/tblgen${CMAKE_EXECUTABLE_SUFFIX}" ) + message(FATAL_ERROR "Please set CLANG_PATH_TO_LLVM_BUILD to a directory containing a LLVM build.") + endif() endif() list(APPEND CMAKE_MODULE_PATH "${CLANG_PATH_TO_LLVM_BUILD}/share/llvm/cmake") @@ -42,7 +46,12 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURR include_directories("${PATH_TO_LLVM_BUILD}/include" "${LLVM_MAIN_INCLUDE_DIR}") link_directories("${PATH_TO_LLVM_BUILD}/lib") - set(LLVM_TABLEGEN_EXE "${PATH_TO_LLVM_BUILD}/bin/tblgen") + if( EXISTS "${CLANG_PATH_TO_LLVM_BUILD}/bin/tblgen${CMAKE_EXECUTABLE_SUFFIX}" ) + set(LLVM_TABLEGEN_EXE "${PATH_TO_LLVM_BUILD}/bin/tblgen") + else() + # FIXME: This is an utter hack. + set(LLVM_TABLEGEN_EXE "${PATH_TO_LLVM_BUILD}/bin/Debug/tblgen") + endif() set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin ) set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib ) Added: vendor/clang/dist/INPUTS/cfg-big-switch.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/INPUTS/cfg-big-switch.c Sun Jul 17 15:40:56 2011 (r224135) @@ -0,0 +1,27 @@ +#define EXPAND_2_CASES(i, x, y) CASE(i, x, y); CASE(i + 1, x, y); +#define EXPAND_4_CASES(i, x, y) EXPAND_2_CASES(i, x, y) EXPAND_2_CASES(i + 2, x, y) +#define EXPAND_8_CASES(i, x, y) EXPAND_4_CASES(i, x, y) EXPAND_4_CASES(i + 4, x, y) +#define EXPAND_16_CASES(i, x, y) EXPAND_8_CASES(i, x, y) EXPAND_8_CASES(i + 8, x, y) +#define EXPAND_32_CASES(i, x, y) EXPAND_16_CASES(i, x, y) EXPAND_16_CASES(i + 16, x, y) +#define EXPAND_64_CASES(i, x, y) EXPAND_32_CASES(i, x, y) EXPAND_32_CASES(i + 32, x, y) +#define EXPAND_128_CASES(i, x, y) EXPAND_64_CASES(i, x, y) EXPAND_64_CASES(i + 64, x, y) +#define EXPAND_256_CASES(i, x, y) EXPAND_128_CASES(i, x, y) EXPAND_128_CASES(i + 128, x, y) +#define EXPAND_512_CASES(i, x, y) EXPAND_256_CASES(i, x, y) EXPAND_256_CASES(i + 256, x, y) +#define EXPAND_1024_CASES(i, x, y) EXPAND_512_CASES(i, x, y) EXPAND_512_CASES(i + 512, x, y) +#define EXPAND_2048_CASES(i, x, y) EXPAND_1024_CASES(i, x, y) EXPAND_1024_CASES(i + 1024, x, y) +#define EXPAND_4096_CASES(i, x, y) EXPAND_2048_CASES(i, x, y) EXPAND_2048_CASES(i + 2048, x, y) + +// This has a *monstrous* single fan-out in the CFG, across 8000 blocks inside +// the while loop. +unsigned cfg_big_switch(int x) { + unsigned y = 0; + while (x > 0) { + switch(x) { +#define CASE(i, x, y) \ + case i: { int case_var = 3*x + i; y += case_var - 1; break; } +EXPAND_4096_CASES(0, x, y); + } + --x; + } + return y; +} Added: vendor/clang/dist/INPUTS/cfg-long-chain1.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/INPUTS/cfg-long-chain1.c Sun Jul 17 15:40:56 2011 (r224135) @@ -0,0 +1,20 @@ +#define EXPAND_2_BRANCHES(i, x, y) BRANCH(i, x, y); BRANCH(i + 1, x, y); +#define EXPAND_4_BRANCHES(i, x, y) EXPAND_2_BRANCHES(i, x, y) EXPAND_2_BRANCHES(i + 2, x, y) +#define EXPAND_8_BRANCHES(i, x, y) EXPAND_4_BRANCHES(i, x, y) EXPAND_4_BRANCHES(i + 4, x, y) +#define EXPAND_16_BRANCHES(i, x, y) EXPAND_8_BRANCHES(i, x, y) EXPAND_8_BRANCHES(i + 8, x, y) +#define EXPAND_32_BRANCHES(i, x, y) EXPAND_16_BRANCHES(i, x, y) EXPAND_16_BRANCHES(i + 16, x, y) +#define EXPAND_64_BRANCHES(i, x, y) EXPAND_32_BRANCHES(i, x, y) EXPAND_32_BRANCHES(i + 32, x, y) +#define EXPAND_128_BRANCHES(i, x, y) EXPAND_64_BRANCHES(i, x, y) EXPAND_64_BRANCHES(i + 64, x, y) +#define EXPAND_256_BRANCHES(i, x, y) EXPAND_128_BRANCHES(i, x, y) EXPAND_128_BRANCHES(i + 128, x, y) +#define EXPAND_512_BRANCHES(i, x, y) EXPAND_256_BRANCHES(i, x, y) EXPAND_256_BRANCHES(i + 256, x, y) +#define EXPAND_1024_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i + 512, x, y) +#define EXPAND_2048_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i + 1024, x, y) +#define EXPAND_4096_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i + 2048, x, y) + +unsigned cfg_long_chain_single_exit(unsigned x) { + unsigned y = 0; +#define BRANCH(i, x, y) if ((x % 13171) < i) { int var = x / 13171; y ^= var; } + EXPAND_4096_BRANCHES(1, x, y); +#undef BRANCH + return y; +} Added: vendor/clang/dist/INPUTS/cfg-long-chain2.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/INPUTS/cfg-long-chain2.c Sun Jul 17 15:40:56 2011 (r224135) @@ -0,0 +1,20 @@ +#define EXPAND_2_BRANCHES(i, x, y) BRANCH(i, x, y); BRANCH(i + 1, x, y); +#define EXPAND_4_BRANCHES(i, x, y) EXPAND_2_BRANCHES(i, x, y) EXPAND_2_BRANCHES(i + 2, x, y) +#define EXPAND_8_BRANCHES(i, x, y) EXPAND_4_BRANCHES(i, x, y) EXPAND_4_BRANCHES(i + 4, x, y) +#define EXPAND_16_BRANCHES(i, x, y) EXPAND_8_BRANCHES(i, x, y) EXPAND_8_BRANCHES(i + 8, x, y) +#define EXPAND_32_BRANCHES(i, x, y) EXPAND_16_BRANCHES(i, x, y) EXPAND_16_BRANCHES(i + 16, x, y) +#define EXPAND_64_BRANCHES(i, x, y) EXPAND_32_BRANCHES(i, x, y) EXPAND_32_BRANCHES(i + 32, x, y) +#define EXPAND_128_BRANCHES(i, x, y) EXPAND_64_BRANCHES(i, x, y) EXPAND_64_BRANCHES(i + 64, x, y) +#define EXPAND_256_BRANCHES(i, x, y) EXPAND_128_BRANCHES(i, x, y) EXPAND_128_BRANCHES(i + 128, x, y) +#define EXPAND_512_BRANCHES(i, x, y) EXPAND_256_BRANCHES(i, x, y) EXPAND_256_BRANCHES(i + 256, x, y) +#define EXPAND_1024_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i + 512, x, y) +#define EXPAND_2048_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i + 1024, x, y) +#define EXPAND_4096_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i + 2048, x, y) + +unsigned cfg_long_chain_multiple_exit(unsigned x) { + unsigned y = 0; +#define BRANCH(i, x, y) if (((x % 13171) + ++y) < i) { int var = x / 13171 + y; return var; } + EXPAND_4096_BRANCHES(1, x, y); +#undef BRANCH + return 42; +} Added: vendor/clang/dist/INPUTS/cfg-long-chain3.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/INPUTS/cfg-long-chain3.c Sun Jul 17 15:40:56 2011 (r224135) @@ -0,0 +1,21 @@ +#define EXPAND_2_BRANCHES(i, x, y) BRANCH(i, x, y); BRANCH(i + 1, x, y); +#define EXPAND_4_BRANCHES(i, x, y) EXPAND_2_BRANCHES(i, x, y) EXPAND_2_BRANCHES(i + 2, x, y) +#define EXPAND_8_BRANCHES(i, x, y) EXPAND_4_BRANCHES(i, x, y) EXPAND_4_BRANCHES(i + 4, x, y) +#define EXPAND_16_BRANCHES(i, x, y) EXPAND_8_BRANCHES(i, x, y) EXPAND_8_BRANCHES(i + 8, x, y) +#define EXPAND_32_BRANCHES(i, x, y) EXPAND_16_BRANCHES(i, x, y) EXPAND_16_BRANCHES(i + 16, x, y) +#define EXPAND_64_BRANCHES(i, x, y) EXPAND_32_BRANCHES(i, x, y) EXPAND_32_BRANCHES(i + 32, x, y) +#define EXPAND_128_BRANCHES(i, x, y) EXPAND_64_BRANCHES(i, x, y) EXPAND_64_BRANCHES(i + 64, x, y) +#define EXPAND_256_BRANCHES(i, x, y) EXPAND_128_BRANCHES(i, x, y) EXPAND_128_BRANCHES(i + 128, x, y) +#define EXPAND_512_BRANCHES(i, x, y) EXPAND_256_BRANCHES(i, x, y) EXPAND_256_BRANCHES(i + 256, x, y) +#define EXPAND_1024_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i, x, y) EXPAND_512_BRANCHES(i + 512, x, y) +#define EXPAND_2048_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i, x, y) EXPAND_1024_BRANCHES(i + 1024, x, y) +#define EXPAND_4096_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i, x, y) EXPAND_2048_BRANCHES(i + 2048, x, y) + +unsigned cfg_long_chain_many_preds(unsigned x) { + unsigned y = 0; +#define BRANCH(i, x, y) if ((x % 13171) < i) { int var = x / 13171; y ^= var; } else + EXPAND_4096_BRANCHES(1, x, y); +#undef BRANCH + int var = x / 13171; y^= var; + return y; +} Added: vendor/clang/dist/INPUTS/cfg-nested-switches.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/INPUTS/cfg-nested-switches.c Sun Jul 17 15:40:56 2011 (r224135) @@ -0,0 +1,36 @@ +#define EXPAND_2_INNER_CASES(i, x, y) INNER_CASE(i, x, y); INNER_CASE(i + 1, x, y); +#define EXPAND_4_INNER_CASES(i, x, y) EXPAND_2_INNER_CASES(i, x, y) EXPAND_2_INNER_CASES(i + 2, x, y) +#define EXPAND_8_INNER_CASES(i, x, y) EXPAND_4_INNER_CASES(i, x, y) EXPAND_4_INNER_CASES(i + 4, x, y) +#define EXPAND_16_INNER_CASES(i, x, y) EXPAND_8_INNER_CASES(i, x, y) EXPAND_8_INNER_CASES(i + 8, x, y) +#define EXPAND_32_INNER_CASES(i, x, y) EXPAND_16_INNER_CASES(i, x, y) EXPAND_16_INNER_CASES(i + 16, x, y) +#define EXPAND_64_INNER_CASES(i, x, y) EXPAND_32_INNER_CASES(i, x, y) EXPAND_32_INNER_CASES(i + 32, x, y) + +#define EXPAND_2_OUTER_CASES(i, x, y) OUTER_CASE(i, x, y); OUTER_CASE(i + 1, x, y); +#define EXPAND_4_OUTER_CASES(i, x, y) EXPAND_2_OUTER_CASES(i, x, y) EXPAND_2_OUTER_CASES(i + 2, x, y) +#define EXPAND_8_OUTER_CASES(i, x, y) EXPAND_4_OUTER_CASES(i, x, y) EXPAND_4_OUTER_CASES(i + 4, x, y) +#define EXPAND_16_OUTER_CASES(i, x, y) EXPAND_8_OUTER_CASES(i, x, y) EXPAND_8_OUTER_CASES(i + 8, x, y) +#define EXPAND_32_OUTER_CASES(i, x, y) EXPAND_16_OUTER_CASES(i, x, y) EXPAND_16_OUTER_CASES(i + 16, x, y) +#define EXPAND_64_OUTER_CASES(i, x, y) EXPAND_32_OUTER_CASES(i, x, y) EXPAND_32_OUTER_CASES(i + 32, x, y) + +// Rather than a single monstrous fan-out, this fans out in smaller increments, +// but to a similar size. +unsigned cfg_nested_switch(int x) { + unsigned y = 0; + while (x > 0) { + switch (x) { +#define INNER_CASE(i, x, y) \ + case i: { int case_var = 3*x + i; y += case_var - 1; break; } +#define OUTER_CASE(i, x, y) \ + case i: { \ + int case_var = y >> 8; \ + switch (case_var) { \ + EXPAND_64_INNER_CASES(0, x, y); \ + } \ + break; \ + } +EXPAND_64_OUTER_CASES(0, x, y); + } + --x; + } + return y; +} Modified: vendor/clang/dist/LICENSE.TXT ============================================================================== --- vendor/clang/dist/LICENSE.TXT Sun Jul 17 15:38:20 2011 (r224134) +++ vendor/clang/dist/LICENSE.TXT Sun Jul 17 15:40:56 2011 (r224135) @@ -4,7 +4,7 @@ LLVM Release License University of Illinois/NCSA Open Source License -Copyright (c) 2007-2010 University of Illinois at Urbana-Champaign. +Copyright (c) 2007-2011 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: Modified: vendor/clang/dist/bindings/python/clang/cindex.py ============================================================================== --- vendor/clang/dist/bindings/python/clang/cindex.py Sun Jul 17 15:38:20 2011 (r224134) +++ vendor/clang/dist/bindings/python/clang/cindex.py Sun Jul 17 15:40:56 2011 (r224135) @@ -321,6 +321,10 @@ class CursorKind(object): """Test if this is a statement kind.""" return CursorKind_is_stmt(self) + def is_attribute(self): + """Test if this is an attribute kind.""" + return CursorKind_is_attribute(self) + def is_invalid(self): """Test if this is an invalid kind.""" return CursorKind_is_inv(self) @@ -978,8 +982,9 @@ class TranslationUnit(ClangObject): headers. """ def visitor(fobj, lptr, depth, includes): - loc = lptr.contents - includes.append(FileInclusion(loc.file, File(fobj), loc, depth)) + if depth > 0: + loc = lptr.contents + includes.append(FileInclusion(loc.file, File(fobj), loc, depth)) # Automatically adapt CIndex/ctype pointers to python objects includes = [] @@ -1074,7 +1079,7 @@ class File(ClangObject): @property def name(self): """Return the complete file and path name of the file.""" - return File_name(self) + return _CXString_getCString(File_name(self)) @property def time(self): @@ -1147,6 +1152,10 @@ CursorKind_is_stmt = lib.clang_isStateme CursorKind_is_stmt.argtypes = [CursorKind] CursorKind_is_stmt.restype = bool +CursorKind_is_attribute = lib.clang_isAttribute +CursorKind_is_attribute.argtypes = [CursorKind] +CursorKind_is_attribute.restype = bool + CursorKind_is_inv = lib.clang_isInvalid CursorKind_is_inv.argtypes = [CursorKind] CursorKind_is_inv.restype = bool @@ -1183,6 +1192,11 @@ Cursor_spelling.argtypes = [Cursor] Cursor_spelling.restype = _CXString Cursor_spelling.errcheck = _CXString.from_result +Cursor_displayname = lib.clang_getCursorDisplayName +Cursor_displayname.argtypes = [Cursor] +Cursor_displayname.restype = _CXString +Cursor_displayname.errcheck = _CXString.from_result + Cursor_loc = lib.clang_getCursorLocation Cursor_loc.argtypes = [Cursor] Cursor_loc.restype = SourceLocation @@ -1253,7 +1267,7 @@ TranslationUnit_includes.argtypes = [Tra # File Functions File_name = lib.clang_getFileName File_name.argtypes = [File] -File_name.restype = c_char_p +File_name.restype = _CXString File_time = lib.clang_getFileTime File_time.argtypes = [File] Modified: vendor/clang/dist/bindings/python/tests/cindex/test_cursor_kind.py ============================================================================== --- vendor/clang/dist/bindings/python/tests/cindex/test_cursor_kind.py Sun Jul 17 15:38:20 2011 (r224134) +++ vendor/clang/dist/bindings/python/tests/cindex/test_cursor_kind.py Sun Jul 17 15:40:56 2011 (r224135) @@ -18,10 +18,14 @@ def test_kind_groups(): for k in CursorKind.get_all_kinds(): group = [n for n in ('is_declaration', 'is_reference', 'is_expression', - 'is_statement', 'is_invalid') + 'is_statement', 'is_invalid', 'is_attribute') if getattr(k, n)()] - if k == CursorKind.TRANSLATION_UNIT: + if k in ( CursorKind.TRANSLATION_UNIT, + CursorKind.MACRO_DEFINITION, + CursorKind.MACRO_INSTANTIATION, + CursorKind.INCLUSION_DIRECTIVE, + CursorKind.PREPROCESSING_DIRECTIVE): assert len(group) == 0 else: assert len(group) == 1 Modified: vendor/clang/dist/bindings/python/tests/cindex/test_translation_unit.py ============================================================================== --- vendor/clang/dist/bindings/python/tests/cindex/test_translation_unit.py Sun Jul 17 15:38:20 2011 (r224134) +++ vendor/clang/dist/bindings/python/tests/cindex/test_translation_unit.py Sun Jul 17 15:40:56 2011 (r224135) @@ -58,24 +58,27 @@ def test_unsaved_files_2(): spellings = [c.spelling for c in tu.cursor.get_children()] assert spellings[-1] == 'x' +def normpaths_equal(path1, path2): + """ Compares two paths for equality after normalizing them with + os.path.normpath + """ + return os.path.normpath(path1) == os.path.normpath(path2) def test_includes(): def eq(expected, actual): if not actual.is_input_file: - return expected[0] == actual.source.name and \ - expected[1] == actual.include.name + return normpaths_equal(expected[0], actual.source.name) and \ + normpaths_equal(expected[1], actual.include.name) else: - return expected[1] == actual.include.name + return normpaths_equal(expected[1], actual.include.name) src = os.path.join(kInputsDir, 'include.cpp') h1 = os.path.join(kInputsDir, "header1.h") h2 = os.path.join(kInputsDir, "header2.h") h3 = os.path.join(kInputsDir, "header3.h") - inc = [(None, src), (src, h1), (h1, h3), (src, h2), (h2, h3)] + inc = [(src, h1), (h1, h3), (src, h2), (h2, h3)] index = Index.create() tu = index.parse(src) for i in zip(inc, tu.get_includes()): assert eq(i[0], i[1]) - - Modified: vendor/clang/dist/clang.xcodeproj/project.pbxproj ============================================================================== --- vendor/clang/dist/clang.xcodeproj/project.pbxproj Sun Jul 17 15:38:20 2011 (r224134) +++ vendor/clang/dist/clang.xcodeproj/project.pbxproj Sun Jul 17 15:40:56 2011 (r224135) @@ -373,6 +373,12 @@ 90FD6D90103C3D80005F5B73 /* TypeXML.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = TypeXML.def; path = clang/Frontend/TypeXML.def; sourceTree = ""; }; 90FD6D91103C3D80005F5B73 /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = clang/Frontend/Utils.h; sourceTree = ""; }; 90FD6DB5103D977E005F5B73 /* index-test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "index-test.cpp"; path = "tools/index-test/index-test.cpp"; sourceTree = ""; }; + BB20603B131EDDBF003C3343 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + BB20603C131EDDBF003C3343 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + BB206041131EDDDA003C3343 /* ARRMT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ARRMT.h; sourceTree = ""; }; + BB206043131EDE03003C3343 /* arrmt-test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "arrmt-test.cpp"; sourceTree = ""; }; + BB206044131EDE03003C3343 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + BB206045131EDE03003C3343 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; BB5C372812A5057500259F53 /* DumpXML.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DumpXML.cpp; path = /Volumes/Data/llvm/tools/clang/lib/AST/DumpXML.cpp; sourceTree = ""; }; BBA5AB141309C2FA000B38F1 /* AdjustedReturnValueChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AdjustedReturnValueChecker.cpp; sourceTree = ""; }; BBA5AB151309C2FA000B38F1 /* AnalyzerStatsChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AnalyzerStatsChecker.cpp; sourceTree = ""; }; @@ -561,7 +567,6 @@ BF9FEE321225E898003A8B71 /* ItaniumCXXABI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ItaniumCXXABI.cpp; path = lib/CodeGen/ItaniumCXXABI.cpp; sourceTree = ""; }; BF9FEE341225E8B1003A8B71 /* MicrosoftCXXABI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MicrosoftCXXABI.cpp; path = lib/CodeGen/MicrosoftCXXABI.cpp; sourceTree = ""; }; BF9FEE361225E8CF003A8B71 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README.txt; path = lib/CodeGen/README.txt; sourceTree = ""; }; - BF9FEE371225E925003A8B71 /* BoostConAction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BoostConAction.cpp; path = lib/Frontend/BoostConAction.cpp; sourceTree = ""; }; BF9FEE451225EA24003A8B71 /* DelayedDiagnostic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DelayedDiagnostic.h; path = clang/Sema/DelayedDiagnostic.h; sourceTree = ""; }; BF9FEE511226FE9F003A8B71 /* ParseAST.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ParseAST.cpp; path = lib/Parse/ParseAST.cpp; sourceTree = ""; }; BF9FEE531226FEC1003A8B71 /* RAIIObjectsForParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAIIObjectsForParser.h; path = lib/Parse/RAIIObjectsForParser.h; sourceTree = ""; }; @@ -777,6 +782,7 @@ 08FB7795FE84155DC02AAC07 /* Libraries */ = { isa = PBXGroup; children = ( + BB20603A131EDDBF003C3343 /* ARRMigrate */, BBA5AB121309C2FA000B38F1 /* StaticAnalyzer */, 57EB5660121B034300ECA335 /* Serialization */, BFE2F67911DA95590007EDC0 /* Rewrite */, @@ -899,7 +905,6 @@ 352246E00F5C6BC000D0D279 /* Frontend */ = { isa = PBXGroup; children = ( - BF9FEE371225E925003A8B71 /* BoostConAction.cpp */, 1AFDD8701161085D00AE030A /* ASTMerge.cpp */, 9012911C1048068D0083456D /* ASTUnit.cpp */, 1A2A54A50FD1DD1C00F4CE45 /* ASTConsumers.cpp */, @@ -1105,6 +1110,38 @@ name = "index-test"; sourceTree = ""; }; + BB20603A131EDDBF003C3343 /* ARRMigrate */ = { + isa = PBXGroup; + children = ( + BB20603B131EDDBF003C3343 /* CMakeLists.txt */, + BB20603C131EDDBF003C3343 /* Makefile */, + BDDF60E91337BF40009F1764 /* Transforms.cpp */, + ); + name = ARRMigrate; + path = lib/ARRMigrate; + sourceTree = ""; + }; + BB206040131EDDDA003C3343 /* ARRMigrate */ = { + isa = PBXGroup; + children = ( + BB206041131EDDDA003C3343 /* ARRMT.h */, + ); + name = ARRMigrate; + path = clang/ARRMigrate; + sourceTree = ""; + }; + BB206042131EDE03003C3343 /* arrmt-test */ = { + isa = PBXGroup; + children = ( + BD8A47E7133D32660066FE40 /* ARRMT.cpp */, + BB206043131EDE03003C3343 /* arrmt-test.cpp */, + BB206044131EDE03003C3343 /* CMakeLists.txt */, + BB206045131EDE03003C3343 /* Makefile */, + ); + name = "arrmt-test"; + path = "tools/arrmt-test"; + sourceTree = ""; + }; BBA5AB121309C2FA000B38F1 /* StaticAnalyzer */ = { isa = PBXGroup; children = ( @@ -1575,6 +1612,7 @@ DED7D72E0A524295003AD0FB /* include */ = { isa = PBXGroup; children = ( + BB206040131EDDDA003C3343 /* ARRMigrate */, DED7D7300A524295003AD0FB /* Basic */, DED7D7390A524295003AD0FB /* Lex */, DE1F21F20A7D84E800FBF588 /* Parse */, @@ -1724,6 +1762,7 @@ DEDFE61F0F7B3AE10035BD10 /* Tools */ = { isa = PBXGroup; children = ( + BB206042131EDE03003C3343 /* arrmt-test */, 90F9EFA8104ABDC400D09A15 /* c-index-test */, 9012911E104812DA0083456D /* CIndex */, 90FD6DB4103D9763005F5B73 /* index-test */, Added: vendor/clang/dist/docs/AutomaticReferenceCounting.html ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/docs/AutomaticReferenceCounting.html Sun Jul 17 15:40:56 2011 (r224135) @@ -0,0 +1,1857 @@ + + +Objective-C Automatic Reference Counting (ARC) + + + + + + + + + + +

    +

    Automatic Reference Counting

    + +
    +
    + +
    +

    About this document

    + +
    +

    Purpose

    + +

    The first and primary purpose of this document is to serve as a +complete technical specification of Automatic Reference Counting. +Given a core Objective-C compiler and runtime, it should be possible +to write a compiler and runtime which implements these new +semantics.

    + +

    The secondary purpose is to act as a rationale for why ARC was +designed in this way. This should remain tightly focused on the +technical design and should not stray into marketing speculation.

    + +
    + +
    +

    Background

    + +

    This document assumes a basic familiarity with C.

    + +

    Blocks are a C language extension for +creating anonymous functions. Users interact with and transfer block +objects using block pointers, which are +represented like a normal pointer. A block may capture values from +local variables; when this occurs, memory must be dynamically +allocated. The initial allocation is done on the stack, but the +runtime provides a Block_copy function which, given a block +pointer, either copies the underlying block object to the heap, +setting its reference count to 1 and returning the new block pointer, +or (if the block object is already on the heap) increases its +reference count by 1. The paired function is Block_release, +which decreases the reference count by 1 and destroys the object if +the count reaches zero and is on the heap.

    + +

    Objective-C is a set of language extensions, significant enough to +be considered a different language. It is a strict superset of C. +The extensions can also be imposed on C++, producing a language called +Objective-C++. The primary feature is a single-inheritance object +system; we briefly describe the modern dialect.

    + +

    Objective-C defines a new type kind, collectively called +the object pointer types. This kind has two +notable builtin members, id and Class; id +is the final supertype of all object pointers. The validity of +conversions between object pointer types is not checked at runtime. +Users may define classes; each class is a +type, and the pointer to that type is an object pointer type. A class +may have a superclass; its pointer type is a subtype of its +superclass's pointer type. A class has a set +of ivars, fields which appear on all +instances of that class. For every class T there's an +associated metaclass; it has no fields, its superclass is the +metaclass of T's superclass, and its metaclass is a global +class. Every class has a global object whose class is the +class's metaclass; metaclasses have no associated type, so pointers to +this object have type Class.

    + +

    A class declaration (@interface) declares a set +of methods. A method has a return type, a +list of argument types, and a selector: a +name like foo:bar:baz:, where the number of colons +corresponds to the number of formal arguments. A method may be an +instance method, in which case it can be invoked on objects of the +class, or a class method, in which case it can be invoked on objects +of the metaclass. A method may be invoked by providing an object +(called the receiver) and a list of formal +arguments interspersed with the selector, like so:

    + +
    [receiver foo: fooArg bar: barArg baz: bazArg]
    + +

    This looks in the dynamic class of the receiver for a method with +this name, then in that class's superclass, etc., until it finds +something it can execute. The receiver expression may also be +the name of a class, in which case the actual receiver is the class +object for that class, or (within method definitions) it may +be super, in which case the lookup algorithm starts with the +static superclass instead of the dynamic class. The actual methods +dynamically found in a class are not those declared in the +@interface, but those defined in a separate +@implementation declaration; however, when compiling a +call, typechecking is done based on the methods declared in the +@interface.

    + +

    Method declarations may also be grouped into +protocols, which are not inherently +associated with any class, but which classes may claim to follow. +Object pointer types may be qualified with additional protocols that +the object is known to support.

    + +

    Class extensions are collections of ivars +and methods, designed to allow a class's @interface to be +split across multiple files; however, there is still a primary +implementation file which must see the @interfaces of all +class extensions. +Categories allow methods (but not ivars) to +be declared post hoc on an arbitrary class; the methods in the +category's @implementation will be dynamically added to that +class's method tables which the category is loaded at runtime, +replacing those methods in case of a collision.

    + +

    In the standard environment, objects are allocated on the heap, and +their lifetime is manually managed using a reference count. This is +done using two instance methods which all classes are expected to +implement: retain increases the object's reference count by +1, whereas release decreases it by 1 and calls the instance +method dealloc if the count reaches 0. To simplify certain +operations, there is also an autorelease +pool, a thread-local list of objects to call release +on later; an object can be added to this pool by +calling autorelease on it.

    + +

    Block pointers may be converted to type id; block objects +are laid out in a way that makes them compatible with Objective-C +objects. There is a builtin class that all block objects are +considered to be objects of; this class implements retain by +adjusting the reference count, not by calling Block_copy.

    + +
    + +
    + +
    +

    General

    + +

    Automatic Reference Counting implements automatic memory management +for Objective-C objects and blocks, freeing the programmer from the +need explicitly insert retains and releases. It does not provide a +cycle collector; users must explicitly manage lifetime instead.

    + +

    ARC may be explicitly enabled with the compiler +flag -fobjc-arc. It may also be explicitly disabled with the +compiler flag -fno-objc-arc. The last of these two flags +appearing on the compile line wins.

    + +

    If ARC is enabled, __has_feature(objc_arc) will expand to +1 in the preprocessor. For more information about __has_feature, +see the language +extensions document.

    + +
    + +
    +

    Retainable object pointers

    + +

    This section describes retainable object pointers, their basic +operations, and the restrictions imposed on their use under ARC. Note +in particular that it covers the rules for pointer values +(patterns of bits indicating the location of a pointed-to object), not +pointer +objects (locations in memory which store pointer values). +The rules for objects are covered in the next section.

    + +

    A retainable object pointer +(or retainable pointer) is a value of +a retainable object pointer type +(retainable type). There are three kinds of retainable object +pointer types:

    +
      +
    • block pointers (formed by applying the caret (^) +declarator sigil to a function type)
    • +
    • Objective-C object pointers (id, Class, NSFoo*, etc.)
    • +
    • typedefs marked with __attribute__((NSObject))
    • +
    + +

    Other pointer types, such as int* and CFStringRef, +are not subject to ARC's semantics and restrictions.

    + +
    + +

    Rationale: We are not at liberty to require +all code to be recompiled with ARC; therefore, ARC must interoperate +with Objective-C code which manages retains and releases manually. In +general, there are three requirements in order for a +compiler-supported reference-count system to provide reliable +interoperation:

    + +
      +
    • The type system must reliably identify which objects are to be +managed. An int* might be a pointer to a malloc'ed +array, or it might be a interior pointer to such an array, or it might +point to some field or local variable. In contrast, values of the +retainable object pointer types are never interior.
    • +
    • The type system must reliably indicate how to +manage objects of a type. This usually means that the type must imply +a procedure for incrementing and decrementing retain counts. +Supporting single-ownership objects requires a lot more explicit +mediation in the language.
    • +
    • There must be reliable conventions for whether and +when ownership is passed between caller and callee, for both +arguments and return values. Objective-C methods follow such a +convention very reliably, at least for system libraries on Mac OS X, +and functions always pass objects at +0. The C-based APIs for Core +Foundation objects, on the other hand, have much more varied transfer +semantics.
    • +
    +
    + +

    The use of __attribute__((NSObject)) typedefs is not +recommended. If it's absolutely necessary to use this attribute, be +very explicit about using the typedef, and do not assume that it will +be preserved by language features like __typeof and C++ +template argument substitution.

    + +

    Rationale: any compiler operation which +incidentally strips type sugar from a type will yield a type +without the attribute, which may result in unexpected +behavior.

    + +
    +

    Retain count semantics

    + +

    A retainable object pointer is either a null +pointer or a pointer to a valid object. Furthermore, if it has +block pointer type and is not null then it must actually be a +pointer to a block object, and if it has Class type (possibly +protocol-qualified) then it must actually be a pointer to a class +object. Otherwise ARC does not enforce the Objective-C type system as +long as the implementing methods follow the signature of the static +type. It is undefined behavior if ARC is exposed to an invalid +pointer.

    + +

    For ARC's purposes, a valid object is one with well-behaved +retaining operations. Specifically, the object must be laid out such +that the Objective-C message send machinery can successfully send it +the following messages:

    + +
      +
    • retain, taking no arguments and returning a pointer to +the object.
    • +
    • release, taking no arguments and returning void.
    • +
    • autorelease, taking no arguments and returning a pointer +to the object.
    • +
    + +

    The behavior of these methods is constrained in the following ways. +The term high-level semantics is an +intentionally vague term; the intent is that programmers must +implement these methods in a way such that the compiler, modifying +code in ways it deems safe according to these constraints, will not +violate their requirements. For example, if the user puts logging +statements in retain, they should not be surprised if those +statements are executed more or less often depending on optimization +settings. These constraints are not exhaustive of the optimization +opportunities: values held in local variables are subject to +additional restrictions, described later in this document.

    + +

    It is undefined behavior if a computation history featuring a send +of retain followed by a send of release to the same +object, with no intervening release on that object, is not +equivalent under the high-level semantics to a computation +history in which these sends are removed. Note that this implies that +these methods may not raise exceptions.

    + +

    It is undefined behavior if a computation history features any use +whatsoever of an object following the completion of a send +of release that is not preceded by a send of retain +to the same object.

    + +

    The behavior of autorelease must be equivalent to sending +release when one of the autorelease pools currently in scope +is popped. It may not throw an exception.

    + +

    When the semantics call for performing one of these operations on a +retainable object pointer, if that pointer is null then the +effect is a no-op.

    + +

    All of the semantics described in this document are subject to +additional optimization rules which permit +the removal or optimization of operations based on local knowledge of +data flow. The semantics describe the high-level behaviors that the +compiler implements, not an exact sequence of operations that a +program will be compiled into.

    + +
    + +
    +

    Retainable object pointers as operands and arguments

    + +

    In general, ARC does not perform retain or release operations when +simply using a retainable object pointer as an operand within an +expression. This includes:

    +
      +
    • loading a retainable pointer from an object with non-weak +ownership,
    • +
    • passing a retainable pointer as an argument to a function or +method, and
    • +
    • receiving a retainable pointer as the result of a function or +method call.
    • +
    + +

    Rationale: while this might seem +uncontroversial, it is actually unsafe when multiple expressions are +evaluated in parallel, as with binary operators and calls, +because (for example) one expression might load from an object while +another writes to it. However, C and C++ already call this undefined +behavior because the evaluations are unsequenced, and ARC simply +exploits that here to avoid needing to retain arguments across a large +number of calls.

    + +

    The remainder of this section describes exceptions to these rules, +how those exceptions are detected, and what those exceptions imply +semantically.

    + +
    +

    Consumed parameters

    + +

    A function or method parameter of retainable object pointer type +may be marked as consumed, signifying that +the callee expects to take ownership of a +1 retain count. This is +done by adding the ns_consumed attribute to the parameter +declaration, like so:

    + +
    void foo(__attribute((ns_consumed)) id x);
    +- (void) foo: (id) __attribute((ns_consumed)) x;
    + +

    This attribute is part of the type of the function or method, not +the type of the parameter. It controls only how the argument is +passed and received.

    + +

    When passing such an argument, ARC retains the argument prior to +making the call.

    + +

    When receiving such an argument, ARC releases the argument at the +end of the function, subject to the usual optimizations for local +values.

    + +

    Rationale: this formalizes direct transfers +of ownership from a caller to a callee. The most common scenario here +is passing the self parameter to init, but it is +useful to generalize. Typically, local optimization will remove any +extra retains and releases: on the caller side the retain will be +merged with a +1 source, and on the callee side the release will be +rolled into the initialization of the parameter.

    + +

    The implicit self parameter of a method may be marked as +consumed by adding __attribute__((ns_consumes_self)) to the +method declaration. Methods in the init +family are treated as if they were implicitly +marked with this attribute.

    + +

    It is undefined behavior if an Objective-C message send to a method +with ns_consumed parameters (other than self) is made with a +null receiver. It is undefined behavior if the method to which an +Objective-C message send statically resolves to has a different set +of ns_consumed parameters than the method it dynamically +resolves to. It is undefined behavior if a block or function call is +made through a static type with a different set of ns_consumed +parameters than the implementation of the called block or function.

    + +

    Rationale: consumed parameters with null +receiver are a guaranteed leak. Mismatches with consumed parameters +will cause over-retains or over-releases, depending on the direction. +The rule about function calls is really just an application of the +existing C/C++ rule about calling functions through an incompatible +function type, but it's useful to state it explicitly.

    + +
    + +
    +

    Retained return values

    + +

    A function or method which returns a retainable object pointer type +may be marked as returning a retained value, signifying that the +caller expects to take ownership of a +1 retain count. This is done +by adding the ns_returns_retained attribute to the function or +method declaration, like so:

    + +
    id foo(void) __attribute((ns_returns_retained));
    +- (id) foo __attribute((ns_returns_retained));
    + +

    This attribute is part of the type of the function or method.

    + +

    When returning from such a function or method, ARC retains the +value at the point of evaluation of the return statement, before +leaving all local scopes.

    + +

    When receiving a return result from such a function or method, ARC +releases the value at the end of the full-expression it is contained +within, subject to the usual optimizations for local values.

    + +

    Rationale: this formalizes direct transfers of +ownership from a callee to a caller. The most common scenario this +models is the retained return from init, alloc, +new, and copy methods, but there are other cases in +the frameworks. After optimization there are typically no extra +retains and releases required.

    + +

    Methods in +the alloc, copy, init, mutableCopy, +and new families are implicitly marked +__attribute__((ns_returns_retained)). This may be suppressed +by explicitly marking the +method __attribute__((ns_returns_not_retained)).

    +
    + +

    It is undefined behavior if the method to which an Objective-C +message send statically resolves has different retain semantics on its +result from the method it dynamically resolves to. It is undefined +behavior if a block or function call is made through a static type +with different retain semantics on its result from the implementation +of the called block or function.

    + +

    Rationale: Mismatches with returned results +will cause over-retains or over-releases, depending on the direction. +Again, the rule about function calls is really just an application of +the existing C/C++ rule about calling functions through an +incompatible function type.

    + + +
    +

    Unretained return values

    + +

    A method or function which returns a retainable object type but +does not return a retained value must ensure that the object is +still valid across the return boundary.

    + +

    When returning from such a function or method, ARC retains the +value at the point of evaluation of the return statement, then leaves +all local scopes, and then balances out the retain while ensuring that +the value lives across the call boundary. In the worst case, this may +involve an autorelease, but callers must not assume that the +value is actually in the autorelease pool.

    + +

    ARC performs no extra mandatory work on the caller side, although +it may elect to do something to shorten the lifetime of the returned +value.

    + +

    Rationale: it is common in non-ARC code to not +return an autoreleased value; therefore the convention does not force +either path. It is convenient to not be required to do unnecessary +retains and autoreleases; this permits optimizations such as eliding +retain/autoreleases when it can be shown that the original pointer +will still be valid at the point of return.

    + +

    A method or function may be marked +with __attribute__((ns_returns_autoreleased)) to indicate +that it returns a pointer which is guaranteed to be valid at least as +long as the innermost autorelease pool. There are no additional +semantics enforced in the definition of such a method; it merely +enables optimizations in callers.

    +
    + +
    +

    Bridged casts

    + +

    A bridged cast is a C-style cast +annotated with one of three keywords:

    + +
      +
    • (__bridge T) op casts the operand to the destination +type T. If T is a retainable object pointer type, +then op must have a non-retainable pointer type. +If T is a non-retainable pointer type, then op must +have a retainable object pointer type. Otherwise the cast is +ill-formed. There is no transfer of ownership, and ARC inserts +no retain operations.
    • + +
    • (__bridge_retained T) op casts the operand, which must +have retainable object pointer type, to the destination type, which +must be a non-retainable pointer type. ARC retains the value, subject +to the usual optimizations on local values, and the recipient is +responsible for balancing that +1.
    • + +
    • (__bridge_transfer T) op casts the operand, which must +have non-retainable pointer type, to the destination type, which must +be a retainable object pointer type. ARC will release the value at +the end of the enclosing full-expression, subject to the usual +optimizations on local values.
    • +
    + +

    These casts are required in order to transfer objects in and out of +ARC control; see the rationale in the section +on conversion of retainable +object pointers.

    + +

    Using a __bridge_retained or __bridge_transfer +cast purely to convince ARC to emit an unbalanced retain or release, +respectively, is poor form.

    + +
    + +
    + +
    +

    Restrictions

    + +
    +

    Conversion of retainable object pointers

    + +

    In general, a program which attempts to implicitly or explicitly +convert a value of retainable object pointer type to any +non-retainable type, or vice-versa, is ill-formed. For example, an +Objective-C object pointer shall not be converted to void*. +As an exception, cast to intptr_t is allowed becuase such +casts are not transferring ownership. The bridged +casts may be used to perform these conversions where +necessary.

    + +

    Rationale: we cannot ensure the correct +management of the lifetime of objects if they may be freely passed +around as unmanaged types. The bridged casts are provided so that the +programmer may explicitly describe whether the cast transfers control +into or out of ARC.

    +
    + +

    An unbridged cast to a retainable object pointer type of the return +value of a Objective-C message send which yields a non-retainable +pointer is treated as a __bridge_transfer cast +if:

    + +
      +
    • the method has the cf_returns_retained attribute, or if +not that,
    • *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 15:41:32 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C51131065740; Sun, 17 Jul 2011 15:41:32 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9CAE18FC1A; Sun, 17 Jul 2011 15:41:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HFfWqF079421; Sun, 17 Jul 2011 15:41:32 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HFfW1e079420; Sun, 17 Jul 2011 15:41:32 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201107171541.p6HFfW1e079420@svn.freebsd.org> From: Dimitry Andric Date: Sun, 17 Jul 2011 15:41:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224136 - vendor/clang/clang-r135360 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 15:41:32 -0000 Author: dim Date: Sun Jul 17 15:41:32 2011 New Revision: 224136 URL: http://svn.freebsd.org/changeset/base/224136 Log: Tag clang r135360. Added: vendor/clang/clang-r135360/ - copied from r224135, vendor/clang/dist/ From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 15:44:37 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A07EA106566C; Sun, 17 Jul 2011 15:44:37 +0000 (UTC) (envelope-from marc@blackend.org) Received: from smtp6-g21.free.fr (unknown [IPv6:2a01:e0c:1:1599::15]) by mx1.freebsd.org (Postfix) with ESMTP id 7F4DE8FC19; Sun, 17 Jul 2011 15:44:33 +0000 (UTC) Received: from emphyrio.blackend.org (unknown [88.179.1.53]) by smtp6-g21.free.fr (Postfix) with ESMTP id 27AF8822D6; Sun, 17 Jul 2011 17:44:25 +0200 (CEST) Received: from emphyrio.blackend.org (localhost [127.0.0.1]) by emphyrio.blackend.org (8.14.5/8.14.4) with ESMTP id p6HFjhUl097715; Sun, 17 Jul 2011 17:45:43 +0200 (CEST) (envelope-from marc@emphyrio.blackend.org) Received: (from marc@localhost) by emphyrio.blackend.org (8.14.5/8.14.4/Submit) id p6HFjhTS097714; Sun, 17 Jul 2011 17:45:43 +0200 (CEST) (envelope-from marc) Date: Sun, 17 Jul 2011 17:45:42 +0200 From: Marc Fonvieille To: Nathan Whitehorn Message-ID: <20110717154542.GA1927@emphyrio.blackend.org> References: <201107092301.p69N1sUp019626__19145.5060652972$1310252550$gmane$org@svn.freebsd.org> <201107121004.p6CA4apj070450@kernblitz.nuclight.avtf.net> <4E1C4955.7010206@freebsd.org> <201107151416.p6FEGQgQ018154@kernblitz.nuclight.avtf.net> <4E2054AF.2040701@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4E2054AF.2040701@freebsd.org> X-Useless-Header: blackend.org X-Operating-System: FreeBSD 8.2-STABLE User-Agent: Mutt/1.5.21 (2010-09-15) Cc: vadim_nuclight@mail.ru, doceng@freebsd.org, svn-src-all@freebsd.org, FreeBSD Release Engineering Team Subject: Re: svn commit: r223897 - in head: release usr.sbin/bsdinstall/scripts X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 15:44:37 -0000 On Fri, Jul 15, 2011 at 09:54:39AM -0500, Nathan Whitehorn wrote: > On 07/15/11 09:16, Vadim Goncharov wrote: [...] > >>> Umm, _configured network_ even for original English docs? In 8.2R those doc > >>> packages for every lang were installed by sysinstall from CD (DVD1 actually), > >>> as it should really be for new user - e.g. if network could be configured only > >>> after reading Handbook, installing mpd5 from CD/DVD packages, and so on. > >>> > >>> Or am I missing something, and it will still be available on the disk? > >>> > >> The packages are really big (40 MB per), and there's only a small amount > >> of space available on the disc. > > But they were so a lot while: > > > > 7.4-RELEASE$ du -chd 0 /usr/share/doc/??_* > > 832K /usr/share/doc/bn_BD.ISO10646-1 > > 212K /usr/share/doc/da_DK.ISO8859-1 > [...] > > > > And still a packed onto installation disks. Why was there space earlier? > > And for it is wasted nowadays? > > The installation CDs are live CDs now, which means that they provide a > functional fixit environment (ls, for instance) as well as letting > people try out the operating system and expanding the range of system > functionality available to the installer. This takes space. Some of that > space is at the expense of other things, but I personally believe that > trade-off is very much worth while. > > >> We *could* fit the English ones, but it > >> badly complicates the release scripts to begin doing package generation, > >> and Marc and I decided to do it this way. > > How this can complicate release scripts, when packing release image and > > generating packages are two logically separated steps? > > > > Anyway, the impact on user's perception of FreeBSD will be too bad to measure > > it the amount of scirpts work. The system just can't live without beginner's > > documentation, and I've already given one very practical example when this is > > absolutely needed. > > > > This was the decision of the documentation team, and as far as > documentation is concerned, I will do whatever they ask with regard to > the release scripts and the installer. Presumably, the release will also > include a second CD (or DVD) full of packages, which will contain the > full handbook. The complication for the release building scripts is that > they generate finished ISOs, so anything that goes on the image must be > available to the script. The scripts no longer build packages of any > kind, and so building even one package substantially adds to their > complication. > [...] In the current state of things there is not enough disk space for the docs packages, so the chosen decision is to allow a remote installation of these packages directly from the installer. A second CD/DVD will include the full set of docs packages (with the rest of packages). There is maybe a way to increase the available space on the disc1 but this problem will arise again in future with the increase of the binaries and docs size. -- Marc From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 16:06:17 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3DF08106566B; Sun, 17 Jul 2011 16:06:17 +0000 (UTC) (envelope-from nwhitehorn@freebsd.org) Received: from argol.doit.wisc.edu (argol.doit.wisc.edu [144.92.197.212]) by mx1.freebsd.org (Postfix) with ESMTP id 0EEAD8FC08; Sun, 17 Jul 2011 16:06:16 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII; format=flowed Received: from avs-daemon.smtpauth3.wiscmail.wisc.edu by smtpauth3.wiscmail.wisc.edu (Sun Java(tm) System Messaging Server 7u2-7.05 32bit (built Jul 30 2009)) id <0LOH00M00JEGN600@smtpauth3.wiscmail.wisc.edu>; Sun, 17 Jul 2011 11:06:16 -0500 (CDT) Received: from comporellon.tachypleus.net ([unknown] [76.210.68.180]) by smtpauth3.wiscmail.wisc.edu (Sun Java(tm) System Messaging Server 7u2-7.05 32bit (built Jul 30 2009)) with ESMTPSA id <0LOH00J5OJEFCO10@smtpauth3.wiscmail.wisc.edu>; Sun, 17 Jul 2011 11:06:15 -0500 (CDT) Date: Sun, 17 Jul 2011 11:06:14 -0500 From: Nathan Whitehorn In-reply-to: <201107171242.p6HCgknb028607@kernblitz.nuclight.avtf.net> To: vadim_nuclight@mail.ru Message-id: <4E230876.5050400@freebsd.org> X-Spam-Report: AuthenticatedSender=yes, SenderIP=76.210.68.180 X-Spam-PmxInfo: Server=avs-12, Version=5.6.1.2065439, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2011.7.17.155115, SenderIP=76.210.68.180 References: <201107092301.p69N1sUp019626__19145.5060652972$1310252550$gmane$org@svn.freebsd.org> <201107121004.p6CA4apj070450@kernblitz.nuclight.avtf.net> <4E1C4955.7010206@freebsd.org> <201107151416.p6FEGQgQ018154@kernblitz.nuclight.avtf.net> <4E2054AF.2040701__44463.8588619002$1310741734$gmane$org@freebsd.org> <201107171242.p6HCgknb028607@kernblitz.nuclight.avtf.net> User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:5.0) Gecko/20110704 Thunderbird/5.0 Cc: doceng@freebsd.org, svn-src-all@freebsd.org, FreeBSD Release Engineering Team Subject: Re: svn commit: r223897 - in head: release usr.sbin/bsdinstall/scripts X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 16:06:17 -0000 On 07/17/11 07:42, Vadim Goncharov wrote: > Hi Nathan Whitehorn! > > On Fri, 15 Jul 2011 09:54:39 -0500; Nathan Whitehorn wrote about 'Re: svn commit: r223897 - in head: release usr.sbin/bsdinstall/scripts': > > >> as well as letting >> people try out the operating system and expanding the range of system >> functionality available to the installer. This takes space. Some of that >> space is at the expense of other things, but I personally believe that >> trade-off is very much worth while. > This shouldn't trade off really. Is that stuff using geom_uzip(4) to save > space? This is just as simple as doing mkuzip -v mfs_root.md and tweaking > loader.conf for vfs.root.mountfrom, mfsroot_name and module loading. The installation disks are also straight ISO9660 now. There is no mdroot, so none of this is possible. > >> the release scripts and the installer. Presumably, the release will also >> include a second CD (or DVD) full of packages, which will contain the >> full handbook. > That's also a variant, but the commit says about requirement to have network, > not CD2, or am I missing something? There isn't a CD2 anymore. Also, because there is no MDROOT, you can't use a CD2 from the installer without two CD drives. >> The complication for the release building scripts is that >> they generate finished ISOs, so anything that goes on the image must be >> available to the script. The scripts no longer build packages of any >> kind, and so building even one package substantially adds to their >> complication. > That's sounds strange - installation disks always included some packages. > How it is done, then? Package installation is treated as a post-install issue. With the specific exception of the documentation installation, the installer doesn't know anything about packages and can't install them. >> I also personally think it's not required or even important to provide a >> way to install the handbook from disc1. The main documentation format >> for it is HTML, for which we package no readers on disc1. Additionally, > There was also a .txt version earlier days. > >> I'm guessing that basically all of our users read it on www.freebsd.org >> these days instead of from /usr/local/share, which potentially makes it >> superfluous to package it at all. Further, without the handbook, how >> would a new user know to look for it at that path? > The typical path is that user has heard about Handbook and even looked > into a chapter or two on the site. Nobody reads entire Handbook before > install, however (this is just impractical and boring), so he proceeds > and then founds that there is no network in FreeBSD out-of-box for his > particular ISP and he needs to read Handbook (and use mpd5 package) - > but now there will be no Handbook, alas. There will be on the second packages disk. The user may also have another computer, have printed out bits of the handbook, be dual-booting etc. I know I've never used the installed handbook before (preferring the online one), and didn't even know where it had installed itself to until starting to work on the release-building code. -Nathan From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 16:50:13 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2C395106564A; Sun, 17 Jul 2011 16:50:13 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1CC328FC08; Sun, 17 Jul 2011 16:50:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HGoDe3081571; Sun, 17 Jul 2011 16:50:13 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HGoCDa081569; Sun, 17 Jul 2011 16:50:12 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201107171650.p6HGoCDa081569@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sun, 17 Jul 2011 16:50:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224139 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 16:50:13 -0000 Author: bz Date: Sun Jul 17 16:50:12 2011 New Revision: 224139 URL: http://svn.freebsd.org/changeset/base/224139 Log: Fix compilation of mips kernels adding apropriate #ifdefs after r224115. Pointed out by: Luiz Otavio O Souza (lists.br gmail.com) Modified: head/sys/mips/mips/cache.c Modified: head/sys/mips/mips/cache.c ============================================================================== --- head/sys/mips/mips/cache.c Sun Jul 17 16:30:57 2011 (r224138) +++ head/sys/mips/mips/cache.c Sun Jul 17 16:50:12 2011 (r224139) @@ -80,10 +80,12 @@ __FBSDID("$FreeBSD$"); struct mips_cache_ops mips_cache_ops; +#if defined(MIPS_DISABLE_L1_CACHE) || defined(CPU_RMI) || defined(CPU_NLM) static void cache_noop(vm_offset_t va, vm_size_t size) { } +#endif void mips_config_cache(struct mips_cpuinfo * cpuinfo) From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 17:12:17 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7079C106566C; Sun, 17 Jul 2011 17:12:17 +0000 (UTC) (envelope-from marck@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 60E1A8FC15; Sun, 17 Jul 2011 17:12:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HHCHDP082261; Sun, 17 Jul 2011 17:12:17 GMT (envelope-from marck@svn.freebsd.org) Received: (from marck@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HHCHhA082259; Sun, 17 Jul 2011 17:12:17 GMT (envelope-from marck@svn.freebsd.org) Message-Id: <201107171712.p6HHCHhA082259@svn.freebsd.org> From: Dmitry Morozovsky Date: Sun, 17 Jul 2011 17:12:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224140 - head/sys/compat/freebsd32 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 17:12:17 -0000 Author: marck (doc committer) Date: Sun Jul 17 17:12:17 2011 New Revision: 224140 URL: http://svn.freebsd.org/changeset/base/224140 Log: Correct small typo in a do{}while(0) define Approved by: kib MFC after: 2 weeks Modified: head/sys/compat/freebsd32/freebsd32.h Modified: head/sys/compat/freebsd32/freebsd32.h ============================================================================== --- head/sys/compat/freebsd32/freebsd32.h Sun Jul 17 16:50:12 2011 (r224139) +++ head/sys/compat/freebsd32/freebsd32.h Sun Jul 17 17:12:17 2011 (r224140) @@ -58,7 +58,7 @@ struct timespec32 { #define TS_CP(src,dst,fld) do { \ CP((src).fld,(dst).fld,tv_sec); \ CP((src).fld,(dst).fld,tv_nsec); \ -} while (0); +} while (0) struct rusage32 { struct timeval32 ru_utime; From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 17:33:39 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C8D9F1065670; Sun, 17 Jul 2011 17:33:39 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B91188FC15; Sun, 17 Jul 2011 17:33:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HHXdLR082997; Sun, 17 Jul 2011 17:33:39 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HHXdXe082995; Sun, 17 Jul 2011 17:33:39 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201107171733.p6HHXdXe082995@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sun, 17 Jul 2011 17:33:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224141 - head/contrib/pf/man X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 17:33:39 -0000 Author: bz Date: Sun Jul 17 17:33:39 2011 New Revision: 224141 URL: http://svn.freebsd.org/changeset/base/224141 Log: Correct the description of struct pfioc_state_kill. PR: kern/158997 Submitted by: ohauer Modified: head/contrib/pf/man/pf.4 Modified: head/contrib/pf/man/pf.4 ============================================================================== --- head/contrib/pf/man/pf.4 Sun Jul 17 17:12:17 2011 (r224140) +++ head/contrib/pf/man/pf.4 Sun Jul 17 17:33:39 2011 (r224141) @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 28 2011 +.Dd July 17 2011 .Dt PF 4 .Os .Sh NAME @@ -308,14 +308,17 @@ structure from the state table. .It Dv DIOCKILLSTATES Fa "struct pfioc_state_kill *psk" Remove matching entries from the state table. This ioctl returns the number of killed states in -.Va psk_af . +.Va psk_killed . .Bd -literal struct pfioc_state_kill { + struct pf_state_cmp psk_pfcmp; sa_family_t psk_af; int psk_proto; struct pf_rule_addr psk_src; struct pf_rule_addr psk_dst; char psk_ifname[IFNAMSIZ]; + char psk_label[PF_RULE_LABEL_SIZE]; + u_int psk_killed; }; .Ed .It Dv DIOCCLRSTATES Fa "struct pfioc_state_kill *psk" From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 18:51:51 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BA0CC106564A; Sun, 17 Jul 2011 18:51:51 +0000 (UTC) (envelope-from jchandra@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A93A98FC08; Sun, 17 Jul 2011 18:51:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HIppGN085558; Sun, 17 Jul 2011 18:51:51 GMT (envelope-from jchandra@svn.freebsd.org) Received: (from jchandra@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HIppPL085556; Sun, 17 Jul 2011 18:51:51 GMT (envelope-from jchandra@svn.freebsd.org) Message-Id: <201107171851.p6HIppPL085556@svn.freebsd.org> From: "Jayachandran C." Date: Sun, 17 Jul 2011 18:51:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224143 - head/sys/mips/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 18:51:51 -0000 Author: jchandra Date: Sun Jul 17 18:51:51 2011 New Revision: 224143 URL: http://svn.freebsd.org/changeset/base/224143 Log: Comment out KDB/DDB related options for N32 kernel. DDB files have warnings in this ABI which will break the kernel build unless Werror is ignored Reported by: bz Modified: head/sys/mips/conf/XLPN32 Modified: head/sys/mips/conf/XLPN32 ============================================================================== --- head/sys/mips/conf/XLPN32 Sun Jul 17 18:24:05 2011 (r224142) +++ head/sys/mips/conf/XLPN32 Sun Jul 17 18:51:51 2011 (r224143) @@ -63,11 +63,11 @@ options NO_SWAPPING #Debugging options options KTRACE # ktrace(1) support -options DDB -options KDB -options GDB -options BREAK_TO_DEBUGGER -options ALT_BREAK_TO_DEBUGGER +#options DDB +#options KDB +#options GDB +#options BREAK_TO_DEBUGGER +#options ALT_BREAK_TO_DEBUGGER #options DEADLKRES #Enable the deadlock resolver #options INVARIANTS #Enable calls of extra sanity checking #options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 19:24:54 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6C8A41065670; Sun, 17 Jul 2011 19:24:54 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 599378FC0A; Sun, 17 Jul 2011 19:24:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HJOsgg086748; Sun, 17 Jul 2011 19:24:54 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HJOsxZ086740; Sun, 17 Jul 2011 19:24:54 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201107171924.p6HJOsxZ086740@svn.freebsd.org> From: Hiroki Sato Date: Sun, 17 Jul 2011 19:24:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224144 - in head/usr.sbin: . rtadvctl rtadvd X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 19:24:54 -0000 Author: hrs Date: Sun Jul 17 19:24:54 2011 New Revision: 224144 URL: http://svn.freebsd.org/changeset/base/224144 Log: - Improve interface list handling. The rtadvd(8) now supports dynamically- added/removed interfaces in a more consistent manner and reloading the configuration file. - Implement burst unsolicited RA sending into the internal RA timer framework when AdvSendAdvertisements and/or configuration entries are changed as described in RFC 4861 6.2.4. This fixes issues that make termination of the rtadvd(8) daemon take very long time. An interface now has three internal states, UNCONFIGURED, TRANSITIVE, or CONFIGURED, and the burst unsolicited sending happens in TRANSITIVE. See rtadvd.h for the details. - rtadvd(8) now accepts non-existent interfaces as well in the command line. - Add control socket support and rtadvctl(8) utility to show the RA information in rtadvd(8). Dumping by SIGUSR1 has been removed in favor of it. Added: - copied from r224006, user/hrs/ipv6/usr.sbin/rtadvctl/ head/usr.sbin/rtadvd/control.c (contents, props changed) - copied, changed from r224006, user/hrs/ipv6/usr.sbin/rtadvd/control.c - copied unchanged from r224006, user/hrs/ipv6/usr.sbin/rtadvd/control.h - copied unchanged from r224006, user/hrs/ipv6/usr.sbin/rtadvd/control_client.c - copied unchanged from r224006, user/hrs/ipv6/usr.sbin/rtadvd/control_client.h head/usr.sbin/rtadvd/control_server.c (contents, props changed) - copied, changed from r224006, user/hrs/ipv6/usr.sbin/rtadvd/control_server.c head/usr.sbin/rtadvd/control_server.h (contents, props changed) - copied, changed from r224006, user/hrs/ipv6/usr.sbin/rtadvd/control_server.h head/usr.sbin/rtadvd/timer_subr.c (contents, props changed) - copied, changed from r224006, user/hrs/ipv6/usr.sbin/rtadvd/timer_subr.c head/usr.sbin/rtadvd/timer_subr.h (contents, props changed) - copied, changed from r224006, user/hrs/ipv6/usr.sbin/rtadvd/timer_subr.h Directory Properties: head/usr.sbin/rtadvctl/ (props changed) head/usr.sbin/rtadvd/control.h (props changed) head/usr.sbin/rtadvd/control_client.c (props changed) head/usr.sbin/rtadvd/control_client.h (props changed) Deleted: head/usr.sbin/rtadvd/dump.c head/usr.sbin/rtadvd/dump.h Modified: head/usr.sbin/Makefile head/usr.sbin/rtadvctl/Makefile (contents, props changed) head/usr.sbin/rtadvctl/rtadvctl.8 (contents, props changed) head/usr.sbin/rtadvctl/rtadvctl.c (contents, props changed) head/usr.sbin/rtadvd/Makefile head/usr.sbin/rtadvd/config.c head/usr.sbin/rtadvd/config.h head/usr.sbin/rtadvd/if.c head/usr.sbin/rtadvd/if.h head/usr.sbin/rtadvd/pathnames.h head/usr.sbin/rtadvd/rrenum.c head/usr.sbin/rtadvd/rtadvd.8 head/usr.sbin/rtadvd/rtadvd.c head/usr.sbin/rtadvd/rtadvd.h head/usr.sbin/rtadvd/timer.c head/usr.sbin/rtadvd/timer.h Directory Properties: head/usr.sbin/rtadvd/ (props changed) Modified: head/usr.sbin/Makefile ============================================================================== --- head/usr.sbin/Makefile Sun Jul 17 18:51:51 2011 (r224143) +++ head/usr.sbin/Makefile Sun Jul 17 19:24:54 2011 (r224144) @@ -178,6 +178,7 @@ SUBDIR+= ndp SUBDIR+= rip6query SUBDIR+= route6d SUBDIR+= rrenumd +SUBDIR+= rtadvctl SUBDIR+= rtadvd SUBDIR+= rtsold SUBDIR+= traceroute6 Modified: head/usr.sbin/rtadvctl/Makefile ============================================================================== --- user/hrs/ipv6/usr.sbin/rtadvctl/Makefile Thu Jul 14 10:09:58 2011 (r224006) +++ head/usr.sbin/rtadvctl/Makefile Sun Jul 17 19:24:54 2011 (r224144) @@ -7,7 +7,7 @@ MAN= rtadvctl.8 SRCS= rtadvctl.c control.c control_client.c if.c timer_subr.c -CFLAGS+= -DROUTEINFO -I${.CURDIR} -I${.CURDIR}/../rtadvd -WARNS?= 3 +CFLAGS+= -I${.CURDIR} -I${.CURDIR}/../rtadvd +WARNS?= 1 .include Modified: head/usr.sbin/rtadvctl/rtadvctl.8 ============================================================================== --- user/hrs/ipv6/usr.sbin/rtadvctl/rtadvctl.8 Thu Jul 14 10:09:58 2011 (r224006) +++ head/usr.sbin/rtadvctl/rtadvctl.8 Sun Jul 17 19:24:54 2011 (r224144) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 14, 2011 +.Dd July 16, 2011 .Dt RTADVCTL 8 .Os .Sh NAME @@ -39,54 +39,65 @@ .Op Ar interface ... .Sh DESCRIPTION .Nm -is a utility that communicates +is a utility that communicates with .Xr rtadvd 8 -daemon and displays information on Router Advertisement messages being -sent on each interfaces. +daemon and displays information about Router Advertisement messages being +sent on each interface. .Pp This utility provides several options and subcommands. The options are as follows: .Bl -tag -width indent .\" .It Fl v -Increase verbose level. When specified once, the +Increase verbosity level. +When specified once, the .Nm -utility shows additional information on prefixes, RDNSS, and DNSSL +utility shows additional information about prefixes, RDNSS, and DNSSL options. -When twice, it shows information on inactive interfaces and -some statistics. +When given twice, it additionally shows information about +inactive interfaces and some statistics. .El .Pp The subcommands are as follows: .Bl -tag -width indent .\" -.It reload -Specifies reloading the configuration file. +.It reload Op interfaces... +Specifies to reload the configuration file. If one or more +.Ar interface +is specified, configuration entries for the interfaces will be reloaded +selectively. +.It enable interfaces... +Specifies to mark the interface as enable and to try to reload the +configuration entry. +This subcommand is useful for dynamically-added interfaces. +.Pp +The +.Xr rtadvd 8 +daemon marks an interface as enable if the interface exists and the +configuration file has a valid entry for that when it is invoked. +.It disable interfaces... +Specifies to mark the interface as disable. .It shutdown -Makes +Makes the +.Xr rtadvd 8 +daemon shut down. +Note that the .Xr rtadvd 8 -daemon shut down immediately. +daemon will send several RAs with zero lifetime to invalidate the old +information on each interface. +It will take at most nine seconds. .It show Op interfaces... Displays information on Router Advertisement messages being sent -on each interfaces. +on each interface. .Sh SEE ALSO -.Xr rtadv 8 , +.Xr rtadvd 8 , .Xr rtadvd.conf 5 .Sh HISTORY The .Nm command first appeared in .Fx 9.0 . -.Sh BUGS -The -.Xr rtadvd 8 -daemon stops responding to -.Nm -for a while just after reloading the configuration file by the reload -subcommand. -This is because in the current implementation it cannot communicate -with +.Sh AUTHORS .Nm -during sending some additional RAs for graceful transition from one -configuration to another. -It will take at most nine seconds for each interface. +was written by +.An "Hiroki Sato" Aq hrs@FreeBSD.org . Modified: head/usr.sbin/rtadvctl/rtadvctl.c ============================================================================== --- user/hrs/ipv6/usr.sbin/rtadvctl/rtadvctl.c Thu Jul 14 10:09:58 2011 (r224006) +++ head/usr.sbin/rtadvctl/rtadvctl.c Sun Jul 17 19:24:54 2011 (r224144) @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -60,6 +61,7 @@ #include "rtadvd.h" #include "if.h" #include "timer_subr.h" +#include "timer.h" #include "control.h" #include "control_client.h" @@ -84,9 +86,7 @@ static int action_shutdown(int, char **) static int action_show(int, char **); static int action_show_prefix(struct prefix *); -#ifdef ROUTEINFO static int action_show_rtinfo(struct rtinfo *); -#endif static int action_show_rdnss(void *); static int action_show_dnssl(void *); @@ -108,14 +108,17 @@ static struct dispatch_table { { "show", action_show }, { "reload", action_reload }, { "shutdown", action_shutdown }, - { NULL, NULL }, { "enable", action_enable }, { "disable", action_disable }, + { NULL, NULL }, { "echo", action_echo }, { "version", action_version }, { NULL, NULL }, }; +static char errmsgbuf[1024]; +static char *errmsg = NULL; + static void mysyslog(int priority, const char * restrict fmt, ...) { @@ -177,13 +180,17 @@ main(int argc, char *argv[]) } } - if (action != NULL) { - error = (dtable[i].dt_act)(--argc, ++argv); - if (error) - fprintf(stderr, "%s failed.\n", dtable[i].dt_comm); - } else + if (action == NULL) usage(); + error = (dtable[i].dt_act)(--argc, ++argv); + if (error) { + fprintf(stderr, "%s failed", dtable[i].dt_comm); + if (errmsg != NULL) + fprintf(stderr, ": %s", errmsg); + fprintf(stderr, ".\n"); + } + return (error); } @@ -295,33 +302,69 @@ action_propset(char *argv) return (action_plgeneric(CM_TYPE_REQ_SET_PROP, argv, buf)); } -/* XXX */ static int -action_enable(int argc, char **argv) +action_disable(int argc, char **argv) { - argc = argc; - argv = argv; + char *action_argv; + char argv_disable[IFNAMSIZ + sizeof(":disable=")]; + int i; + int error; - return (0); + if (argc < 1) + return (1); + + error = 0; + for (i = 0; i < argc; i++) { + sprintf(argv_disable, "%s:disable=", argv[i]); + action_argv = argv_disable; + error += action_propset(action_argv); + } + + return (error); } -/* XXX */ static int -action_disable(int argc, char **argv) +action_enable(int argc, char **argv) { - argc = argc; - argv = argv; + char *action_argv; + char argv_enable[IFNAMSIZ + sizeof(":enable=")]; + int i; + int error; - return (0); + if (argc < 1) + return (1); + + error = 0; + for (i = 0; i < argc; i++) { + sprintf(argv_enable, "%s:enable=", argv[i]); + action_argv = argv_enable; + error += action_propset(action_argv); + } + + return (error); } static int -action_reload(int argc __unused, char **argv __unused) +action_reload(int argc, char **argv) { char *action_argv; + char argv_reload[IFNAMSIZ + sizeof(":reload=")]; + int i; + int error; - action_argv = strdup("reload"); - return(action_propset(action_argv)); + if (argc == 0) { + action_argv = strdup(":reload="); + return (action_propset(action_argv)); + } + + error = 0; + for (i = 0; i < argc; i++) { + sprintf(argv_reload, "%s:reload=", argv[i]); + action_argv = argv_reload; + error += action_propset(action_argv); + } + + return (error); } static int @@ -330,7 +373,7 @@ action_echo(int argc __unused, char **ar char *action_argv; action_argv = strdup("echo"); - return(action_propset(action_argv)); + return (action_propset(action_argv)); } static int @@ -339,7 +382,7 @@ action_shutdown(int argc __unused, char char *action_argv; action_argv = strdup("shutdown"); - return(action_propset(action_argv)); + return (action_propset(action_argv)); } /* XXX */ @@ -366,10 +409,9 @@ action_show(int argc, char **argv) char argv_ifilist[sizeof(":ifilist=")] = ":ifilist="; char argv_ifi[IFNAMSIZ + sizeof(":ifi=")]; char argv_rai[IFNAMSIZ + sizeof(":rai=")]; -#ifdef ROUTEINFO char argv_rti[IFNAMSIZ + sizeof(":rti=")]; -#endif char argv_pfx[IFNAMSIZ + sizeof(":pfx=")]; + char argv_ifi_ra_timer[IFNAMSIZ + sizeof(":ifi_ra_timer=")]; char argv_rdnss[IFNAMSIZ + sizeof(":rdnss=")]; char argv_dnssl[IFNAMSIZ + sizeof(":dnssl=")]; char ssbuf[SSBUFLEN]; @@ -394,7 +436,7 @@ action_show(int argc, char **argv) while (p < endp) { ifi = malloc(sizeof(*ifi)); if (ifi == NULL) - exit(1); + return (1); memset(ifi, 0, sizeof(*ifi)); strcpy(ifi->ifi_ifname, p); @@ -406,23 +448,27 @@ action_show(int argc, char **argv) for (i = 0; i < argc; i++) { ifi = malloc(sizeof(*ifi)); if (ifi == NULL) - exit(1); + return (1); memset(ifi, 0, sizeof(*ifi)); strcpy(ifi->ifi_ifname, argv[i]); ifi->ifi_ifindex = if_nametoindex(ifi->ifi_ifname); - if (ifi->ifi_ifindex == 0) - exit(1); + if (ifi->ifi_ifindex == 0) { + sprintf(errmsgbuf, "invalid interface %s", + ifi->ifi_ifname); + errmsg = errmsgbuf; + return (1); + } + TAILQ_INSERT_TAIL(&ifl, ifi, ifi_next); } } TAILQ_FOREACH(ifi, &ifl, ifi_next) { struct ifinfo *ifi_s; + struct rtadvd_timer *rat; struct rainfo *rai; -#ifdef ROUTEINFO struct rtinfo *rti; -#endif struct prefix *pfx; int c; int ra_ifstatus; @@ -439,33 +485,52 @@ action_show(int argc, char **argv) printf("%s: flags=<", ifi->ifi_ifname); - /* - * RA_RECV = UP + CONFIGURED + ACCEPT_RTADV - * RA_SEND = UP + CONFIGURED + IPV6FORWARDING - */ - c = 0; if (ifi_s->ifi_ifindex == 0) c += printf("NONEXISTENT"); else c += printf("%s", (ifi_s->ifi_flags & IFF_UP) ? "UP" : "DOWN"); - if (ifi_s->ifi_state == IFI_STATE_CONFIGURED) + switch (ifi_s->ifi_state) { + case IFI_STATE_CONFIGURED: c += printf("%s%s", (c) ? "," : "", "CONFIGURED"); - + break; + case IFI_STATE_TRANSITIVE: + c += printf("%s%s", (c) ? "," : "", "TRANSITIVE"); + break; + } if (ifi_s->ifi_persist) c += printf("%s%s", (c) ? "," : "", "PERSIST"); printf(">"); ra_ifstatus = RA_IFSTATUS_INACTIVE; if ((ifi_s->ifi_flags & IFF_UP) && - (ifi_s->ifi_state == IFI_STATE_CONFIGURED)) { + ((ifi_s->ifi_state == IFI_STATE_CONFIGURED) || + (ifi_s->ifi_state == IFI_STATE_TRANSITIVE))) { +#if (__FreeBSD_version < 900000) + /* + * RA_RECV: !ip6.forwarding && ip6.accept_rtadv + * RA_SEND: ip6.forwarding + */ + if (getinet6sysctl(IPV6CTL_FORWARDING) == 0) { + if (getinet6sysctl(IPV6CTL_ACCEPT_RTADV)) + ra_ifstatus = RA_IFSTATUS_RA_RECV; + else + ra_ifstatus = RA_IFSTATUS_INACTIVE; + } else + ra_ifstatus = RA_IFSTATUS_RA_SEND; +#else + /* + * RA_RECV: ND6_IFF_ACCEPT_RTADV + * RA_SEND: ip6.forwarding + */ if (ifi_s->ifi_nd_flags & ND6_IFF_ACCEPT_RTADV) ra_ifstatus = RA_IFSTATUS_RA_RECV; else if (getinet6sysctl(IPV6CTL_FORWARDING)) ra_ifstatus = RA_IFSTATUS_RA_SEND; else ra_ifstatus = RA_IFSTATUS_INACTIVE; +#endif } c = 0; @@ -478,7 +543,11 @@ action_show(int argc, char **argv) printf("%s%s", (c) ? "," : "", "RA_SEND"); printf("> "); - if (ifi_s->ifi_state != IFI_STATE_CONFIGURED) { + switch (ifi_s->ifi_state) { + case IFI_STATE_CONFIGURED: + case IFI_STATE_TRANSITIVE: + break; + default: printf("\n"); continue; } @@ -533,14 +602,33 @@ action_show(int argc, char **argv) rai->rai_hoplimit); printf("\tAdvIfPrefixes: %s\n", rai->rai_advifprefix ? "yes" : "no"); + + /* RA timer */ + rat = NULL; + if (ifi_s->ifi_ra_timer != NULL) { + sprintf(argv_ifi_ra_timer, "%s:ifi_ra_timer=", + ifi->ifi_ifname); + action_argv = argv_ifi_ra_timer; + + error = action_propget(action_argv, &cp); + if (error) + return (error); + + rat = (struct rtadvd_timer *)cp.cp_val; + } + printf("\tNext RA send: %s", + (rat == NULL) ? "never\n" : + ctime((time_t *)&rat->rat_tm.tv_sec)); + printf("\tLast RA sent: %s", + (ifi_s->ifi_ra_lastsent.tv_sec == 0) ? "never\n" : + ctime((time_t *)&ifi_s->ifi_ra_lastsent.tv_sec)); if (rai->rai_clockskew) - printf("\tClock skew: %ldsec\n", + printf("\tClock skew: %" PRIu16 "sec\n", rai->rai_clockskew); if (vflag < LOG_WARNING) continue; -#ifdef ROUTEINFO /* route information */ sprintf(argv_rti, "%s:rti=", ifi->ifi_ifname); action_argv = argv_rti; @@ -556,7 +644,7 @@ action_show(int argc, char **argv) for (i = 0; i < len; i++) action_show_rtinfo(&rti[i]); } -#endif + /* prefix information */ sprintf(argv_pfx, "%s:pfx=", ifi->ifi_ifname); action_argv = argv_pfx; @@ -583,7 +671,7 @@ action_show(int argc, char **argv) if (error) continue; - len = *((u_int16_t *)cp.cp_val); + len = *((uint16_t *)cp.cp_val); if (len > 0) { printf("\tRDNSS entries:\n"); @@ -598,7 +686,7 @@ action_show(int argc, char **argv) if (error) continue; - len = *((u_int16_t *)cp.cp_val); + len = *((uint16_t *)cp.cp_val); if (len > 0) { printf("\tDNSSL entries:\n"); @@ -610,28 +698,34 @@ action_show(int argc, char **argv) printf("\n"); - printf("\tLast RA sent: %s", - (rai->rai_lastsent.tv_sec == 0) ? "never\n" : - ctime((time_t *)&rai->rai_lastsent.tv_sec)); - printf("\tRA initcounts/waits: %d/%d\n", - rai->rai_initcounter, - rai->rai_waiting); - printf("\tRA out/in/inconsistent: %llu/%llu/%llu\n", - ifi_s->ifi_raoutput, + printf("\tCounters\n" + "\t RA burst counts: %" PRIu16 " (interval: %s)\n" + "\t RS wait counts: %" PRIu16 "\n", + ifi_s->ifi_burstcount, + sec2str(ifi_s->ifi_burstinterval, ssbuf), + ifi_s->ifi_rs_waitcount); + + printf("\tOutputs\n" + "\t RA: %" PRIu64 "\n", ifi_s->ifi_raoutput); + + printf("\tInputs\n" + "\t RA: %" PRIu64 " (normal)\n" + "\t RA: %" PRIu64 " (inconsistent)\n" + "\t RS: %" PRIu64 "\n", ifi_s->ifi_rainput, - ifi_s->ifi_rainconsistent); - printf("\tRS in: %llu\n", + ifi_s->ifi_rainconsistent, ifi_s->ifi_rsinput); printf("\n"); +#if 0 /* Not implemented yet */ printf("\tReceived RAs:\n"); +#endif } return (0); } -#ifdef ROUTEINFO static int action_show_rtinfo(struct rtinfo *rti) { @@ -648,7 +742,6 @@ action_show_rtinfo(struct rtinfo *rti) return (0); } -#endif static int action_show_prefix(struct prefix *pfx) @@ -726,17 +819,17 @@ action_show_rdnss(void *msg) { struct rdnss *rdn; struct rdnss_addr *rda; - u_int16_t *rdn_cnt; - u_int16_t *rda_cnt; + uint16_t *rdn_cnt; + uint16_t *rda_cnt; int i; int j; char *p; - u_int32_t ltime; + uint32_t ltime; char ntopbuf[INET6_ADDRSTRLEN]; char ssbuf[SSBUFLEN]; p = msg; - rdn_cnt = (u_int16_t *)p; + rdn_cnt = (uint16_t *)p; p += sizeof(*rdn_cnt); if (*rdn_cnt > 0) { @@ -745,7 +838,7 @@ action_show_rdnss(void *msg) ltime = rdn->rd_ltime; p += sizeof(*rdn); - rda_cnt = (u_int16_t *)p; + rda_cnt = (uint16_t *)p; p += sizeof(*rda_cnt); if (*rda_cnt > 0) for (j = 0; j < *rda_cnt; j++) { @@ -769,17 +862,17 @@ action_show_dnssl(void *msg) { struct dnssl *dns; struct dnssl_addr *dna; - u_int16_t *dns_cnt; - u_int16_t *dna_cnt; + uint16_t *dns_cnt; + uint16_t *dna_cnt; int i; int j; char *p; - u_int32_t ltime; + uint32_t ltime; char hbuf[NI_MAXHOST]; char ssbuf[SSBUFLEN]; p = msg; - dns_cnt = (u_int16_t *)p; + dns_cnt = (uint16_t *)p; p += sizeof(*dns_cnt); if (*dns_cnt > 0) { @@ -788,7 +881,7 @@ action_show_dnssl(void *msg) ltime = dns->dn_ltime; p += sizeof(*dns); - dna_cnt = (u_int16_t *)p; + dna_cnt = (uint16_t *)p; p += sizeof(*dna_cnt); if (*dna_cnt > 0) for (j = 0; j < *dna_cnt; j++) { Modified: head/usr.sbin/rtadvd/Makefile ============================================================================== --- head/usr.sbin/rtadvd/Makefile Sun Jul 17 18:51:51 2011 (r224143) +++ head/usr.sbin/rtadvd/Makefile Sun Jul 17 19:24:54 2011 (r224144) @@ -16,12 +16,13 @@ PROG= rtadvd MAN= rtadvd.conf.5 rtadvd.8 -SRCS= rtadvd.c rrenum.c advcap.c if.c config.c timer.c dump.c +SRCS= rtadvd.c rrenum.c advcap.c if.c config.c timer.c timer_subr.c \ + control.c control_server.c DPADD= ${LIBUTIL} LDADD= -lutil -CFLAGS+= -DHAVE_ARC4RANDOM -DHAVE_POLL_H -DROUTEINFO +CFLAGS+= -DHAVE_ARC4RANDOM WARNS?= 1 Modified: head/usr.sbin/rtadvd/config.c ============================================================================== --- head/usr.sbin/rtadvd/config.c Sun Jul 17 18:51:51 2011 (r224143) +++ head/usr.sbin/rtadvd/config.c Sun Jul 17 19:24:54 2011 (r224144) @@ -3,6 +3,7 @@ /* * Copyright (C) 1998 WIDE Project. + * Copyright (C) 2011 Hiroki Sato * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -52,6 +53,7 @@ #include #include #include +#include #include #include #include @@ -130,48 +132,153 @@ dname_labelenc(char *dst, const char *sr var = def; \ } while (0) -#define ELM_MALLOC(p,error_action) \ - do { \ - p = malloc(sizeof(*p)); \ - if (p == NULL) { \ - syslog(LOG_ERR, "<%s> malloc failed: %s", \ - __func__, strerror(errno)); \ - error_action; \ - } \ - memset(p, 0, sizeof(*p)); \ - } while(0) +int +loadconfig_index(int idx) +{ + char ifname[IFNAMSIZ]; + + syslog(LOG_DEBUG, "<%s> enter", __func__); + + if (if_indextoname(idx, ifname) != NULL) + return (loadconfig_ifname(ifname)); + else + return (1); +} int -loadconfig(char *ifl_names[], const int ifl_len) +loadconfig_ifname(char *ifname) { - int i; - int idx; - int error; + struct ifinfo *ifi; + + syslog(LOG_DEBUG, "<%s> enter", __func__); + + update_ifinfo(&ifilist, UPDATE_IFINFO_ALL); + TAILQ_FOREACH(ifi, &ifilist, ifi_next) { + /* NULL means all IFs will be processed. */ + if (ifname != NULL && + strcmp(ifi->ifi_ifname, ifname) != 0) + continue; + + if (!ifi->ifi_persist) { + syslog(LOG_INFO, + "<%s> %s is not a target interface. " + "Ignored at this moment.", __func__, + ifi->ifi_ifname); + continue; - for (i = 0; i < ifl_len; i++) { - idx = if_nametoindex(ifl_names[i]); - if (idx == 0) { + } + if (ifi->ifi_ifindex == 0) { syslog(LOG_ERR, - "<%s> interface %s not found. " - "Ignored at this moment.", __func__, ifl_names[i]); + "<%s> %s not found. " + "Ignored at this moment.", __func__, + ifi->ifi_ifname); continue; } - syslog(LOG_INFO, - "<%s> loading config for %s.", __func__, ifl_names[i]); - error = getconfig(idx); - if (error) + if (getconfig(ifi) == NULL) { syslog(LOG_ERR, "<%s> invalid configuration for %s. " - "Ignored at this moment.", __func__, ifl_names[i]); + "Ignored at this moment.", __func__, + ifi->ifi_ifname); + continue; + } } + return (0); +} + +int +rm_ifinfo_index(int idx) +{ + struct ifinfo *ifi; + ifi = if_indextoifinfo(idx); + if (ifi == NULL) { + syslog(LOG_ERR, "<%s>: ifinfo not found (idx=%d)", + __func__, idx); + return (-1); + } + + return (rm_ifinfo(ifi)); +} + +int +rm_ifinfo(struct ifinfo *ifi) +{ + int error; + + syslog(LOG_DEBUG, "<%s> enter (%s).", __func__, ifi->ifi_ifname); + switch (ifi->ifi_state) { + case IFI_STATE_UNCONFIGURED: + return (0); + break; + default: + ifi->ifi_state = IFI_STATE_UNCONFIGURED; + syslog(LOG_DEBUG, + "<%s> ifname=%s marked as UNCONFIGURED.", + __func__, ifi->ifi_ifname); + + /* XXX: No MC leaving here becasue index is disappeared */ + + /* Inactivate timer */ + rtadvd_remove_timer(ifi->ifi_ra_timer); + ifi->ifi_ra_timer = NULL; + break; + } + + /* clean up ifi */ + if (!ifi->ifi_persist) { + TAILQ_REMOVE(&ifilist, ifi, ifi_next); + syslog(LOG_DEBUG, "<%s>: ifinfo (idx=%d) removed.", + __func__, ifi->ifi_ifindex); + free(ifi); + } else { + /* recreate an empty entry */ + update_persist_ifinfo(&ifilist, ifi->ifi_ifname); + syslog(LOG_DEBUG, "<%s>: ifname=%s is persistent.", + __func__, ifi->ifi_ifname); + } + + /* clean up rai if any */ + switch (ifi->ifi_state) { + case IFI_STATE_CONFIGURED: + if (ifi->ifi_rainfo != NULL) { + error = rm_rainfo(ifi->ifi_rainfo); + if (error) + return (error); + ifi->ifi_rainfo = NULL; + } + break; + case IFI_STATE_TRANSITIVE: + if (ifi->ifi_rainfo == ifi->ifi_rainfo_trans) { + if (ifi->ifi_rainfo != NULL) { + error = rm_rainfo(ifi->ifi_rainfo); + if (error) + return (error); + ifi->ifi_rainfo = NULL; + ifi->ifi_rainfo_trans = NULL; + } + } else { + if (ifi->ifi_rainfo != NULL) { + error = rm_rainfo(ifi->ifi_rainfo); + if (error) + return (error); + ifi->ifi_rainfo = NULL; + } + if (ifi->ifi_rainfo_trans != NULL) { + error = rm_rainfo(ifi->ifi_rainfo_trans); + if (error) + return (error); + ifi->ifi_rainfo_trans = NULL; + } + } + } + + syslog(LOG_DEBUG, "<%s> leave (%s).", __func__, ifi->ifi_ifname); return (0); } int -rmconfig(int idx) +rm_rainfo(struct rainfo *rai) { - struct rainfo *rai; struct prefix *pfx; struct soliciter *sol; struct rdnss *rdn; @@ -179,26 +286,16 @@ rmconfig(int idx) struct dnssl *dns; struct rtinfo *rti; - rai = if_indextorainfo(idx); - if (rai == NULL) { - syslog(LOG_ERR, "<%s>: rainfo not found (idx=%d)", - __func__, idx); - return (-1); - } + syslog(LOG_DEBUG, "<%s>: enter", __func__); TAILQ_REMOVE(&railist, rai, rai_next); - syslog(LOG_DEBUG, "<%s>: rainfo (idx=%d) removed.", - __func__, idx); - - /* Free all of allocated memories for this entry. */ - rtadvd_remove_timer(rai->rai_timer); + if (rai->rai_ifinfo != NULL) + syslog(LOG_DEBUG, "<%s>: rainfo (idx=%d) removed.", + __func__, rai->rai_ifinfo->ifi_ifindex); if (rai->rai_ra_data != NULL) free(rai->rai_ra_data); - if (rai->rai_sdl != NULL) - free(rai->rai_sdl); - while ((pfx = TAILQ_FIRST(&rai->rai_prefix)) != NULL) { TAILQ_REMOVE(&rai->rai_prefix, pfx, pfx_next); free(pfx); @@ -224,51 +321,51 @@ rmconfig(int idx) free(rti); } free(rai); - + syslog(LOG_DEBUG, "<%s>: leave", __func__); + return (0); } -int -getconfig(int idx) +struct ifinfo * +getconfig(struct ifinfo *ifi) { int stat, i; + int error; char tbuf[BUFSIZ]; struct rainfo *rai; struct rainfo *rai_old; - long val; + int32_t val; int64_t val64; char buf[BUFSIZ]; char *bp = buf; char *addr, *flagstr; - char intface[IFNAMSIZ]; - if (if_indextoname(idx, intface) == NULL) { - syslog(LOG_ERR, "<%s> invalid index number (%d)", - __func__, idx); - return (-1); - } + if (ifi == NULL) /* if does not exist */ + return (NULL); - TAILQ_FOREACH(rai_old, &railist, rai_next) - if (idx == rai_old->rai_ifindex) - break; + if (ifi->ifi_state == IFI_STATE_TRANSITIVE && + ifi->ifi_rainfo == NULL) { + syslog(LOG_INFO, "<%s> %s is shutting down. Skipped.", + __func__, ifi->ifi_ifname); + return (NULL); + } - if ((stat = agetent(tbuf, intface)) <= 0) { + if ((stat = agetent(tbuf, ifi->ifi_ifname)) <= 0) { memset(tbuf, 0, sizeof(tbuf)); syslog(LOG_INFO, "<%s> %s isn't defined in the configuration file" " or the configuration file doesn't exist." " Treat it as default", - __func__, intface); + __func__, ifi->ifi_ifname); } ELM_MALLOC(rai, exit(1)); TAILQ_INIT(&rai->rai_prefix); -#ifdef ROUTEINFO TAILQ_INIT(&rai->rai_route); -#endif TAILQ_INIT(&rai->rai_rdnss); TAILQ_INIT(&rai->rai_dnssl); TAILQ_INIT(&rai->rai_soliciter); + rai->rai_ifinfo = ifi; /* gather on-link prefixes from the network interfaces. */ if (agetflag("noifprefix")) @@ -282,25 +379,12 @@ getconfig(int idx) else rai->rai_advlinkopt = 1; if (rai->rai_advlinkopt) { - if ((rai->rai_sdl = if_nametosdl(intface)) == NULL) { + if (ifi->ifi_sdl.sdl_type == 0) { syslog(LOG_ERR, "<%s> can't get information of %s", - __func__, intface); + __func__, ifi->ifi_ifname); goto getconfig_free_rai; } - rai->rai_ifindex = rai->rai_sdl->sdl_index; - } else - rai->rai_ifindex = if_nametoindex(intface); - strncpy(rai->rai_ifname, intface, sizeof(rai->rai_ifname)); - syslog(LOG_DEBUG, - "<%s> ifindex = %d on %s", __func__, rai->rai_ifindex, - rai->rai_ifname); - - if ((rai->rai_phymtu = if_getmtu(intface)) == 0) { - rai->rai_phymtu = IPV6_MMTU; - syslog(LOG_WARNING, - "<%s> can't get interface mtu of %s. Treat as %d", - __func__, intface, IPV6_MMTU); } /* @@ -309,24 +393,24 @@ getconfig(int idx) MAYHAVE(val, "maxinterval", DEF_MAXRTRADVINTERVAL); if (val < MIN_MAXINTERVAL || val > MAX_MAXINTERVAL) { syslog(LOG_ERR, - "<%s> maxinterval (%ld) on %s is invalid " + "<%s> maxinterval (%" PRIu32 ") on %s is invalid " "(must be between %u and %u)", __func__, val, - intface, MIN_MAXINTERVAL, MAX_MAXINTERVAL); + ifi->ifi_ifname, MIN_MAXINTERVAL, MAX_MAXINTERVAL); goto getconfig_free_rai; } - rai->rai_maxinterval = (u_int)val; + rai->rai_maxinterval = (uint16_t)val; MAYHAVE(val, "mininterval", rai->rai_maxinterval/3); - if ((u_int)val < MIN_MININTERVAL || - (u_int)val > (rai->rai_maxinterval * 3) / 4) { + if ((uint16_t)val < MIN_MININTERVAL || + (uint16_t)val > (rai->rai_maxinterval * 3) / 4) { syslog(LOG_ERR, - "<%s> mininterval (%ld) on %s is invalid " + "<%s> mininterval (%" PRIu32 ") on %s is invalid " "(must be between %d and %d)", - __func__, val, intface, MIN_MININTERVAL, + __func__, val, ifi->ifi_ifname, MIN_MININTERVAL, (rai->rai_maxinterval * 3) / 4); goto getconfig_free_rai; } - rai->rai_mininterval = (u_int)val; + rai->rai_mininterval = (uint16_t)val; MAYHAVE(val, "chlim", DEF_ADVCURHOPLIMIT); rai->rai_hoplimit = val & 0xff; @@ -359,17 +443,17 @@ getconfig(int idx) rai->rai_rtpref = val & ND_RA_FLAG_RTPREF_MASK; if (rai->rai_rtpref == ND_RA_FLAG_RTPREF_RSV) { syslog(LOG_ERR, "<%s> invalid router preference (%02x) on %s", - __func__, rai->rai_rtpref, intface); + __func__, rai->rai_rtpref, ifi->ifi_ifname); goto getconfig_free_rai; } MAYHAVE(val, "rltime", rai->rai_maxinterval * 3); - if ((u_int)val && ((u_int)val < rai->rai_maxinterval || - (u_int)val > MAXROUTERLIFETIME)) { + if ((uint16_t)val && ((uint16_t)val < rai->rai_maxinterval || + (uint16_t)val > MAXROUTERLIFETIME)) { syslog(LOG_ERR, - "<%s> router lifetime (%ld) on %s is invalid " + "<%s> router lifetime (%" PRIu32 ") on %s is invalid " "(must be 0 or between %d and %d)", - __func__, val, intface, rai->rai_maxinterval, + __func__, val, ifi->ifi_ifname, rai->rai_maxinterval, MAXROUTERLIFETIME); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 19:51:41 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C29A8106564A; Sun, 17 Jul 2011 19:51:41 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ABE398FC0C; Sun, 17 Jul 2011 19:51:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HJpfen087651; Sun, 17 Jul 2011 19:51:41 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HJpfim087629; Sun, 17 Jul 2011 19:51:41 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201107171951.p6HJpfim087629@svn.freebsd.org> From: Dimitry Andric Date: Sun, 17 Jul 2011 19:51:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224145 - in head: contrib/llvm/include/llvm contrib/llvm/include/llvm-c contrib/llvm/include/llvm-c/Transforms contrib/llvm/include/llvm/ADT contrib/llvm/include/llvm/Analysis contrib/... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 19:51:41 -0000 Author: dim Date: Sun Jul 17 19:51:40 2011 New Revision: 224145 URL: http://svn.freebsd.org/changeset/base/224145 Log: Upgrade our copy of llvm/clang to r135360, from upstream's trunk. Added: head/contrib/llvm/include/llvm/Analysis/BlockFrequency.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/Analysis/BlockFrequency.h head/contrib/llvm/include/llvm/Analysis/BlockFrequencyImpl.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/Analysis/BlockFrequencyImpl.h head/contrib/llvm/include/llvm/CodeGen/MachineBlockFrequency.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/CodeGen/MachineBlockFrequency.h head/contrib/llvm/include/llvm/CodeGen/MachineBranchProbabilityInfo.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/CodeGen/MachineBranchProbabilityInfo.h head/contrib/llvm/include/llvm/MC/MCInstrDesc.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/MC/MCInstrDesc.h head/contrib/llvm/include/llvm/MC/MCInstrInfo.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/MC/MCInstrInfo.h head/contrib/llvm/include/llvm/MC/MCInstrItineraries.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/MC/MCInstrItineraries.h head/contrib/llvm/include/llvm/MC/MCRegisterInfo.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/MC/MCRegisterInfo.h head/contrib/llvm/include/llvm/MC/MCSubtargetInfo.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/MC/MCSubtargetInfo.h head/contrib/llvm/include/llvm/MC/SubtargetFeature.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/MC/SubtargetFeature.h head/contrib/llvm/include/llvm/Object/Binary.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/Object/Binary.h head/contrib/llvm/include/llvm/Object/COFF.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/Object/COFF.h head/contrib/llvm/include/llvm/Object/Error.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/Object/Error.h head/contrib/llvm/include/llvm/Target/TargetSubtargetInfo.h - copied unchanged from r224136, vendor/llvm/dist/include/llvm/Target/TargetSubtargetInfo.h head/contrib/llvm/lib/Analysis/BlockFrequency.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/Analysis/BlockFrequency.cpp head/contrib/llvm/lib/CodeGen/MachineBlockFrequency.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/CodeGen/MachineBlockFrequency.cpp head/contrib/llvm/lib/CodeGen/MachineBranchProbabilityInfo.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/CodeGen/MachineBranchProbabilityInfo.cpp head/contrib/llvm/lib/CodeGen/RegisterCoalescer.h - copied unchanged from r224136, vendor/llvm/dist/lib/CodeGen/RegisterCoalescer.h head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h - copied unchanged from r224136, vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp head/contrib/llvm/lib/MC/MCSubtargetInfo.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/MC/MCSubtargetInfo.cpp head/contrib/llvm/lib/MC/SubtargetFeature.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/MC/SubtargetFeature.cpp head/contrib/llvm/lib/Object/Binary.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/Object/Binary.cpp head/contrib/llvm/lib/Object/Error.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/Object/Error.cpp head/contrib/llvm/lib/Target/ARM/ARMMachObjectWriter.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/Target/ARM/ARMMachObjectWriter.cpp head/contrib/llvm/lib/Target/ARM/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/ARM/MCTargetDesc/ head/contrib/llvm/lib/Target/Alpha/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/Alpha/MCTargetDesc/ head/contrib/llvm/lib/Target/Blackfin/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/Blackfin/MCTargetDesc/ head/contrib/llvm/lib/Target/CellSPU/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/CellSPU/MCTargetDesc/ head/contrib/llvm/lib/Target/MBlaze/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/MBlaze/MCTargetDesc/ head/contrib/llvm/lib/Target/MSP430/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/MSP430/MCTargetDesc/ head/contrib/llvm/lib/Target/Mips/InstPrinter/ - copied from r224136, vendor/llvm/dist/lib/Target/Mips/InstPrinter/ head/contrib/llvm/lib/Target/Mips/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/ head/contrib/llvm/lib/Target/Mips/MipsAsmPrinter.h - copied unchanged from r224136, vendor/llvm/dist/lib/Target/Mips/MipsAsmPrinter.h head/contrib/llvm/lib/Target/Mips/MipsMCInstLower.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/Target/Mips/MipsMCInstLower.cpp head/contrib/llvm/lib/Target/Mips/MipsMCInstLower.h - copied unchanged from r224136, vendor/llvm/dist/lib/Target/Mips/MipsMCInstLower.h head/contrib/llvm/lib/Target/Mips/MipsMCSymbolRefExpr.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/Target/Mips/MipsMCSymbolRefExpr.cpp head/contrib/llvm/lib/Target/Mips/MipsMCSymbolRefExpr.h - copied unchanged from r224136, vendor/llvm/dist/lib/Target/Mips/MipsMCSymbolRefExpr.h head/contrib/llvm/lib/Target/PTX/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/PTX/MCTargetDesc/ head/contrib/llvm/lib/Target/PTX/PTXCallingConv.td - copied unchanged from r224136, vendor/llvm/dist/lib/Target/PTX/PTXCallingConv.td head/contrib/llvm/lib/Target/PTX/generate-register-td.py - copied unchanged from r224136, vendor/llvm/dist/lib/Target/PTX/generate-register-td.py head/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/PowerPC/MCTargetDesc/ head/contrib/llvm/lib/Target/Sparc/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/Sparc/MCTargetDesc/ head/contrib/llvm/lib/Target/SystemZ/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/SystemZ/MCTargetDesc/ head/contrib/llvm/lib/Target/TargetSubtargetInfo.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/Target/TargetSubtargetInfo.cpp head/contrib/llvm/lib/Target/X86/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/X86/MCTargetDesc/ head/contrib/llvm/lib/Target/XCore/MCTargetDesc/ - copied from r224136, vendor/llvm/dist/lib/Target/XCore/MCTargetDesc/ head/contrib/llvm/lib/Transforms/Scalar/ObjCARC.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/Transforms/Scalar/ObjCARC.cpp head/contrib/llvm/lib/Transforms/Utils/LowerExpectIntrinsic.cpp - copied unchanged from r224136, vendor/llvm/dist/lib/Transforms/Utils/LowerExpectIntrinsic.cpp head/contrib/llvm/tools/clang/include/clang/ARCMigrate/ - copied from r224136, vendor/clang/dist/include/clang/ARCMigrate/ head/contrib/llvm/tools/clang/include/clang/AST/GlobalDecl.h - copied unchanged from r224136, vendor/clang/dist/include/clang/AST/GlobalDecl.h head/contrib/llvm/tools/clang/include/clang/Basic/DelayedCleanupPool.h - copied unchanged from r224136, vendor/clang/dist/include/clang/Basic/DelayedCleanupPool.h head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticCategories.h - copied unchanged from r224136, vendor/clang/dist/include/clang/Basic/DiagnosticCategories.h head/contrib/llvm/tools/clang/include/clang/Driver/ObjCRuntime.h - copied unchanged from r224136, vendor/clang/dist/include/clang/Driver/ObjCRuntime.h head/contrib/llvm/tools/clang/include/clang/Sema/LocInfoType.h - copied unchanged from r224136, vendor/clang/dist/include/clang/Sema/LocInfoType.h head/contrib/llvm/tools/clang/include/clang/Sema/TypoCorrection.h - copied unchanged from r224136, vendor/clang/dist/include/clang/Sema/TypoCorrection.h head/contrib/llvm/tools/clang/lib/ARCMigrate/ - copied from r224136, vendor/clang/dist/lib/ARCMigrate/ head/contrib/llvm/tools/clang/lib/Sema/SemaExprMember.cpp - copied unchanged from r224136, vendor/clang/dist/lib/Sema/SemaExprMember.cpp head/contrib/llvm/utils/TableGen/Error.cpp - copied unchanged from r224136, vendor/llvm/dist/utils/TableGen/Error.cpp head/contrib/llvm/utils/TableGen/Error.h - copied unchanged from r224136, vendor/llvm/dist/utils/TableGen/Error.h head/contrib/llvm/utils/TableGen/PseudoLoweringEmitter.cpp - copied unchanged from r224136, vendor/llvm/dist/utils/TableGen/PseudoLoweringEmitter.cpp head/contrib/llvm/utils/TableGen/PseudoLoweringEmitter.h - copied unchanged from r224136, vendor/llvm/dist/utils/TableGen/PseudoLoweringEmitter.h head/lib/clang/include/ARMGenMCPseudoLowering.inc (contents, props changed) head/lib/clang/include/ARMGenSubtargetInfo.inc (contents, props changed) head/lib/clang/include/MipsGenSubtargetInfo.inc (contents, props changed) head/lib/clang/include/PPCGenSubtargetInfo.inc (contents, props changed) head/lib/clang/include/X86GenSubtargetInfo.inc (contents, props changed) head/lib/clang/libclangarcmigrate/ head/lib/clang/libclangarcmigrate/Makefile (contents, props changed) head/lib/clang/libllvmarmdesc/ head/lib/clang/libllvmarmdesc/Makefile (contents, props changed) head/lib/clang/libllvmmipsdesc/ head/lib/clang/libllvmmipsdesc/Makefile (contents, props changed) head/lib/clang/libllvmmipsinstprinter/ head/lib/clang/libllvmmipsinstprinter/Makefile (contents, props changed) head/lib/clang/libllvmpowerpcdesc/ head/lib/clang/libllvmpowerpcdesc/Makefile (contents, props changed) head/lib/clang/libllvmx86desc/ head/lib/clang/libllvmx86desc/Makefile (contents, props changed) Deleted: head/contrib/llvm/include/llvm/AbstractTypeUser.h head/contrib/llvm/include/llvm/CodeGen/RegisterCoalescer.h head/contrib/llvm/include/llvm/Target/SubtargetFeature.h head/contrib/llvm/include/llvm/Target/TargetInstrDesc.h head/contrib/llvm/include/llvm/Target/TargetInstrItineraries.h head/contrib/llvm/include/llvm/Target/TargetSubtarget.h head/contrib/llvm/include/llvm/TypeSymbolTable.h head/contrib/llvm/lib/CodeGen/PreAllocSplitting.cpp head/contrib/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp head/contrib/llvm/lib/CodeGen/SimpleRegisterCoalescing.h head/contrib/llvm/lib/Target/ARM/ARMMCAsmInfo.cpp head/contrib/llvm/lib/Target/ARM/ARMMCAsmInfo.h head/contrib/llvm/lib/Target/Alpha/AlphaMCAsmInfo.cpp head/contrib/llvm/lib/Target/Alpha/AlphaMCAsmInfo.h head/contrib/llvm/lib/Target/Blackfin/BlackfinMCAsmInfo.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinMCAsmInfo.h head/contrib/llvm/lib/Target/CellSPU/SPUMCAsmInfo.cpp head/contrib/llvm/lib/Target/CellSPU/SPUMCAsmInfo.h head/contrib/llvm/lib/Target/MBlaze/MBlazeMCAsmInfo.cpp head/contrib/llvm/lib/Target/MBlaze/MBlazeMCAsmInfo.h head/contrib/llvm/lib/Target/MSP430/MSP430MCAsmInfo.cpp head/contrib/llvm/lib/Target/MSP430/MSP430MCAsmInfo.h head/contrib/llvm/lib/Target/Mips/MipsMCAsmInfo.cpp head/contrib/llvm/lib/Target/Mips/MipsMCAsmInfo.h head/contrib/llvm/lib/Target/PTX/PTXMCAsmInfo.cpp head/contrib/llvm/lib/Target/PTX/PTXMCAsmInfo.h head/contrib/llvm/lib/Target/PowerPC/PPCMCAsmInfo.cpp head/contrib/llvm/lib/Target/PowerPC/PPCMCAsmInfo.h head/contrib/llvm/lib/Target/Sparc/SparcMCAsmInfo.cpp head/contrib/llvm/lib/Target/Sparc/SparcMCAsmInfo.h head/contrib/llvm/lib/Target/SubtargetFeature.cpp head/contrib/llvm/lib/Target/SystemZ/SystemZMCAsmInfo.cpp head/contrib/llvm/lib/Target/SystemZ/SystemZMCAsmInfo.h head/contrib/llvm/lib/Target/TargetSubtarget.cpp head/contrib/llvm/lib/Target/X86/X86MCAsmInfo.cpp head/contrib/llvm/lib/Target/X86/X86MCAsmInfo.h head/contrib/llvm/lib/Target/XCore/XCoreMCAsmInfo.cpp head/contrib/llvm/lib/Target/XCore/XCoreMCAsmInfo.h head/contrib/llvm/lib/Transforms/IPO/DeadTypeElimination.cpp head/contrib/llvm/lib/Transforms/Utils/CloneLoop.cpp head/contrib/llvm/lib/VMCore/TypeSymbolTable.cpp head/contrib/llvm/lib/VMCore/TypesContext.h head/contrib/llvm/tools/clang/include/clang/Tooling/ head/contrib/llvm/tools/clang/lib/CodeGen/GlobalDecl.h head/contrib/llvm/tools/clang/lib/Frontend/BoostConAction.cpp head/contrib/llvm/tools/clang/lib/Tooling/ head/lib/clang/include/ARMGenInstrNames.inc head/lib/clang/include/ARMGenRegisterInfo.h.inc head/lib/clang/include/ARMGenRegisterNames.inc head/lib/clang/include/ARMGenSubtarget.inc head/lib/clang/include/IA64GenInstrNames.inc head/lib/clang/include/IA64GenRegisterInfo.h.inc head/lib/clang/include/IA64GenRegisterNames.inc head/lib/clang/include/MipsGenInstrNames.inc head/lib/clang/include/MipsGenRegisterInfo.h.inc head/lib/clang/include/MipsGenRegisterNames.inc head/lib/clang/include/MipsGenSubtarget.inc head/lib/clang/include/PPCGenInstrNames.inc head/lib/clang/include/PPCGenRegisterInfo.h.inc head/lib/clang/include/PPCGenRegisterNames.inc head/lib/clang/include/PPCGenSubtarget.inc head/lib/clang/include/X86GenInstrNames.inc head/lib/clang/include/X86GenRegisterInfo.h.inc head/lib/clang/include/X86GenRegisterNames.inc head/lib/clang/include/X86GenSubtarget.inc Modified: head/contrib/llvm/include/llvm-c/Core.h head/contrib/llvm/include/llvm-c/Target.h head/contrib/llvm/include/llvm-c/Transforms/IPO.h head/contrib/llvm/include/llvm/ADT/APFloat.h head/contrib/llvm/include/llvm/ADT/APInt.h head/contrib/llvm/include/llvm/ADT/ArrayRef.h head/contrib/llvm/include/llvm/ADT/ImmutableList.h head/contrib/llvm/include/llvm/ADT/PackedVector.h head/contrib/llvm/include/llvm/ADT/SmallVector.h head/contrib/llvm/include/llvm/ADT/StringMap.h head/contrib/llvm/include/llvm/ADT/Triple.h head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h head/contrib/llvm/include/llvm/Analysis/DIBuilder.h head/contrib/llvm/include/llvm/Analysis/IVUsers.h head/contrib/llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h head/contrib/llvm/include/llvm/Analysis/Passes.h head/contrib/llvm/include/llvm/Analysis/ScalarEvolutionExpander.h head/contrib/llvm/include/llvm/Analysis/ValueTracking.h head/contrib/llvm/include/llvm/Assembly/Writer.h head/contrib/llvm/include/llvm/Attributes.h head/contrib/llvm/include/llvm/BasicBlock.h head/contrib/llvm/include/llvm/Bitcode/BitstreamReader.h head/contrib/llvm/include/llvm/Bitcode/LLVMBitCodes.h head/contrib/llvm/include/llvm/CodeGen/Analysis.h head/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h head/contrib/llvm/include/llvm/CodeGen/FunctionLoweringInfo.h head/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h head/contrib/llvm/include/llvm/CodeGen/LinkAllCodegenComponents.h head/contrib/llvm/include/llvm/CodeGen/MachineBasicBlock.h head/contrib/llvm/include/llvm/CodeGen/MachineFunction.h head/contrib/llvm/include/llvm/CodeGen/MachineInstr.h head/contrib/llvm/include/llvm/CodeGen/MachineInstrBuilder.h head/contrib/llvm/include/llvm/CodeGen/MachineOperand.h head/contrib/llvm/include/llvm/CodeGen/MachineRegisterInfo.h head/contrib/llvm/include/llvm/CodeGen/Passes.h head/contrib/llvm/include/llvm/CodeGen/RegAllocPBQP.h head/contrib/llvm/include/llvm/CodeGen/RuntimeLibcalls.h head/contrib/llvm/include/llvm/CodeGen/ScheduleDAG.h head/contrib/llvm/include/llvm/CodeGen/ScoreboardHazardRecognizer.h head/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h head/contrib/llvm/include/llvm/CodeGen/SelectionDAGNodes.h head/contrib/llvm/include/llvm/CodeGen/SlotIndexes.h head/contrib/llvm/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h head/contrib/llvm/include/llvm/CodeGen/ValueTypes.h head/contrib/llvm/include/llvm/CodeGen/ValueTypes.td head/contrib/llvm/include/llvm/Constant.h head/contrib/llvm/include/llvm/Constants.h head/contrib/llvm/include/llvm/DefaultPasses.h head/contrib/llvm/include/llvm/DerivedTypes.h head/contrib/llvm/include/llvm/ExecutionEngine/RuntimeDyld.h head/contrib/llvm/include/llvm/Function.h head/contrib/llvm/include/llvm/GlobalAlias.h head/contrib/llvm/include/llvm/GlobalValue.h head/contrib/llvm/include/llvm/GlobalVariable.h head/contrib/llvm/include/llvm/InitializePasses.h head/contrib/llvm/include/llvm/InlineAsm.h head/contrib/llvm/include/llvm/Instructions.h head/contrib/llvm/include/llvm/Intrinsics.h head/contrib/llvm/include/llvm/Intrinsics.td head/contrib/llvm/include/llvm/LLVMContext.h head/contrib/llvm/include/llvm/LinkAllPasses.h head/contrib/llvm/include/llvm/MC/MCAsmInfo.h head/contrib/llvm/include/llvm/MC/MCContext.h head/contrib/llvm/include/llvm/MC/MCMachObjectWriter.h head/contrib/llvm/include/llvm/MC/MCObjectStreamer.h head/contrib/llvm/include/llvm/MC/MCParser/MCParsedAsmOperand.h head/contrib/llvm/include/llvm/MC/MCStreamer.h head/contrib/llvm/include/llvm/Module.h head/contrib/llvm/include/llvm/Object/ObjectFile.h head/contrib/llvm/include/llvm/Support/BranchProbability.h head/contrib/llvm/include/llvm/Support/CFG.h head/contrib/llvm/include/llvm/Support/ConstantFolder.h head/contrib/llvm/include/llvm/Support/DebugLoc.h head/contrib/llvm/include/llvm/Support/ELF.h head/contrib/llvm/include/llvm/Support/Endian.h head/contrib/llvm/include/llvm/Support/IRBuilder.h head/contrib/llvm/include/llvm/Support/NoFolder.h head/contrib/llvm/include/llvm/Support/PassManagerBuilder.h head/contrib/llvm/include/llvm/Support/TargetFolder.h head/contrib/llvm/include/llvm/Support/TypeBuilder.h head/contrib/llvm/include/llvm/Support/system_error.h head/contrib/llvm/include/llvm/Target/Target.td head/contrib/llvm/include/llvm/Target/TargetAsmInfo.h head/contrib/llvm/include/llvm/Target/TargetAsmParser.h head/contrib/llvm/include/llvm/Target/TargetData.h head/contrib/llvm/include/llvm/Target/TargetFrameLowering.h head/contrib/llvm/include/llvm/Target/TargetInstrInfo.h head/contrib/llvm/include/llvm/Target/TargetLowering.h head/contrib/llvm/include/llvm/Target/TargetLoweringObjectFile.h head/contrib/llvm/include/llvm/Target/TargetMachine.h head/contrib/llvm/include/llvm/Target/TargetOpcodes.h head/contrib/llvm/include/llvm/Target/TargetOptions.h head/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h head/contrib/llvm/include/llvm/Target/TargetRegistry.h head/contrib/llvm/include/llvm/Target/TargetSelect.h head/contrib/llvm/include/llvm/Target/TargetSelectionDAG.td head/contrib/llvm/include/llvm/Transforms/IPO.h head/contrib/llvm/include/llvm/Transforms/Scalar.h head/contrib/llvm/include/llvm/Transforms/Utils/Cloning.h head/contrib/llvm/include/llvm/Transforms/Utils/SSAUpdater.h head/contrib/llvm/include/llvm/Transforms/Utils/ValueMapper.h head/contrib/llvm/include/llvm/Type.h head/contrib/llvm/include/llvm/Use.h head/contrib/llvm/include/llvm/Value.h head/contrib/llvm/lib/Analysis/Analysis.cpp head/contrib/llvm/lib/Analysis/BranchProbabilityInfo.cpp head/contrib/llvm/lib/Analysis/ConstantFolding.cpp head/contrib/llvm/lib/Analysis/DIBuilder.cpp head/contrib/llvm/lib/Analysis/DebugInfo.cpp head/contrib/llvm/lib/Analysis/IPA/FindUsedTypes.cpp head/contrib/llvm/lib/Analysis/IVUsers.cpp head/contrib/llvm/lib/Analysis/InstructionSimplify.cpp head/contrib/llvm/lib/Analysis/Lint.cpp head/contrib/llvm/lib/Analysis/MemDepPrinter.cpp head/contrib/llvm/lib/Analysis/MemoryBuiltins.cpp head/contrib/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp head/contrib/llvm/lib/Analysis/ScalarEvolutionExpander.cpp head/contrib/llvm/lib/Analysis/ValueTracking.cpp head/contrib/llvm/lib/AsmParser/LLLexer.cpp head/contrib/llvm/lib/AsmParser/LLLexer.h head/contrib/llvm/lib/AsmParser/LLParser.cpp head/contrib/llvm/lib/AsmParser/LLParser.h head/contrib/llvm/lib/AsmParser/LLToken.h head/contrib/llvm/lib/Bitcode/Reader/BitcodeReader.cpp head/contrib/llvm/lib/Bitcode/Reader/BitcodeReader.h head/contrib/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp head/contrib/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp head/contrib/llvm/lib/Bitcode/Writer/ValueEnumerator.h head/contrib/llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp head/contrib/llvm/lib/CodeGen/AggressiveAntiDepBreaker.h head/contrib/llvm/lib/CodeGen/AllocationOrder.cpp head/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp head/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h head/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp head/contrib/llvm/lib/CodeGen/BranchFolding.cpp head/contrib/llvm/lib/CodeGen/BranchFolding.h head/contrib/llvm/lib/CodeGen/CalcSpillWeights.cpp head/contrib/llvm/lib/CodeGen/CodeGen.cpp head/contrib/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp head/contrib/llvm/lib/CodeGen/CriticalAntiDepBreaker.h head/contrib/llvm/lib/CodeGen/DeadMachineInstructionElim.cpp head/contrib/llvm/lib/CodeGen/DwarfEHPrepare.cpp head/contrib/llvm/lib/CodeGen/ELFWriter.cpp head/contrib/llvm/lib/CodeGen/ELFWriter.h head/contrib/llvm/lib/CodeGen/EdgeBundles.cpp head/contrib/llvm/lib/CodeGen/ExpandISelPseudos.cpp head/contrib/llvm/lib/CodeGen/IfConversion.cpp head/contrib/llvm/lib/CodeGen/InlineSpiller.cpp head/contrib/llvm/lib/CodeGen/InterferenceCache.cpp head/contrib/llvm/lib/CodeGen/InterferenceCache.h head/contrib/llvm/lib/CodeGen/IntrinsicLowering.cpp head/contrib/llvm/lib/CodeGen/LLVMTargetMachine.cpp head/contrib/llvm/lib/CodeGen/LiveDebugVariables.cpp head/contrib/llvm/lib/CodeGen/LiveIntervalUnion.cpp head/contrib/llvm/lib/CodeGen/LiveIntervalUnion.h head/contrib/llvm/lib/CodeGen/LiveRangeEdit.cpp head/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp head/contrib/llvm/lib/CodeGen/MachineCSE.cpp head/contrib/llvm/lib/CodeGen/MachineFunction.cpp head/contrib/llvm/lib/CodeGen/MachineInstr.cpp head/contrib/llvm/lib/CodeGen/MachineLICM.cpp head/contrib/llvm/lib/CodeGen/MachineRegisterInfo.cpp head/contrib/llvm/lib/CodeGen/MachineVerifier.cpp head/contrib/llvm/lib/CodeGen/PeepholeOptimizer.cpp head/contrib/llvm/lib/CodeGen/PostRASchedulerList.cpp head/contrib/llvm/lib/CodeGen/PrologEpilogInserter.cpp head/contrib/llvm/lib/CodeGen/RegAllocBasic.cpp head/contrib/llvm/lib/CodeGen/RegAllocFast.cpp head/contrib/llvm/lib/CodeGen/RegAllocGreedy.cpp head/contrib/llvm/lib/CodeGen/RegAllocLinearScan.cpp head/contrib/llvm/lib/CodeGen/RegAllocPBQP.cpp head/contrib/llvm/lib/CodeGen/RegisterClassInfo.cpp head/contrib/llvm/lib/CodeGen/RegisterClassInfo.h head/contrib/llvm/lib/CodeGen/RegisterCoalescer.cpp head/contrib/llvm/lib/CodeGen/RenderMachineFunction.cpp head/contrib/llvm/lib/CodeGen/ScheduleDAG.cpp head/contrib/llvm/lib/CodeGen/ScheduleDAGEmit.cpp head/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp head/contrib/llvm/lib/CodeGen/ScoreboardHazardRecognizer.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.h head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.h head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h head/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp head/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp head/contrib/llvm/lib/CodeGen/ShadowStackGC.cpp head/contrib/llvm/lib/CodeGen/SjLjEHPrepare.cpp head/contrib/llvm/lib/CodeGen/SplitKit.cpp head/contrib/llvm/lib/CodeGen/SplitKit.h head/contrib/llvm/lib/CodeGen/Splitter.cpp head/contrib/llvm/lib/CodeGen/StackProtector.cpp head/contrib/llvm/lib/CodeGen/StackSlotColoring.cpp head/contrib/llvm/lib/CodeGen/TailDuplication.cpp head/contrib/llvm/lib/CodeGen/TargetInstrInfoImpl.cpp head/contrib/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp head/contrib/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp head/contrib/llvm/lib/CodeGen/VirtRegMap.h head/contrib/llvm/lib/CodeGen/VirtRegRewriter.cpp head/contrib/llvm/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp head/contrib/llvm/lib/ExecutionEngine/JIT/JIT.cpp head/contrib/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp head/contrib/llvm/lib/ExecutionEngine/TargetSelect.cpp head/contrib/llvm/lib/Linker/LinkModules.cpp head/contrib/llvm/lib/MC/MCAsmInfo.cpp head/contrib/llvm/lib/MC/MCAsmStreamer.cpp head/contrib/llvm/lib/MC/MCDisassembler/Disassembler.cpp head/contrib/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp head/contrib/llvm/lib/MC/MCDisassembler/EDDisassembler.h head/contrib/llvm/lib/MC/MCDisassembler/EDInfo.h head/contrib/llvm/lib/MC/MCDisassembler/EDOperand.cpp head/contrib/llvm/lib/MC/MCDwarf.cpp head/contrib/llvm/lib/MC/MCELFStreamer.cpp head/contrib/llvm/lib/MC/MCELFStreamer.h head/contrib/llvm/lib/MC/MCLoggingStreamer.cpp head/contrib/llvm/lib/MC/MCMachOStreamer.cpp head/contrib/llvm/lib/MC/MCNullStreamer.cpp head/contrib/llvm/lib/MC/MCObjectStreamer.cpp head/contrib/llvm/lib/MC/MCParser/AsmParser.cpp head/contrib/llvm/lib/MC/MCParser/COFFAsmParser.cpp head/contrib/llvm/lib/MC/MCParser/MCAsmParser.cpp head/contrib/llvm/lib/MC/MCParser/TargetAsmParser.cpp head/contrib/llvm/lib/MC/MCStreamer.cpp head/contrib/llvm/lib/MC/MCWin64EH.cpp head/contrib/llvm/lib/MC/MachObjectWriter.cpp head/contrib/llvm/lib/Object/COFFObjectFile.cpp head/contrib/llvm/lib/Object/ELFObjectFile.cpp head/contrib/llvm/lib/Object/MachOObjectFile.cpp head/contrib/llvm/lib/Object/Object.cpp head/contrib/llvm/lib/Object/ObjectFile.cpp head/contrib/llvm/lib/Support/APFloat.cpp head/contrib/llvm/lib/Support/APInt.cpp head/contrib/llvm/lib/Support/Atomic.cpp head/contrib/llvm/lib/Support/CommandLine.cpp head/contrib/llvm/lib/Support/ConstantRange.cpp head/contrib/llvm/lib/Support/Host.cpp head/contrib/llvm/lib/Support/Threading.cpp head/contrib/llvm/lib/Support/Triple.cpp head/contrib/llvm/lib/Support/Twine.cpp head/contrib/llvm/lib/Support/Unix/Path.inc head/contrib/llvm/lib/Support/Windows/DynamicLibrary.inc head/contrib/llvm/lib/Support/Windows/explicit_symbols.inc head/contrib/llvm/lib/Target/ARM/ARM.h head/contrib/llvm/lib/Target/ARM/ARM.td head/contrib/llvm/lib/Target/ARM/ARMAsmBackend.cpp head/contrib/llvm/lib/Target/ARM/ARMAsmPrinter.cpp head/contrib/llvm/lib/Target/ARM/ARMAsmPrinter.h head/contrib/llvm/lib/Target/ARM/ARMBaseInfo.h head/contrib/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp head/contrib/llvm/lib/Target/ARM/ARMBaseInstrInfo.h head/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp head/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.h head/contrib/llvm/lib/Target/ARM/ARMCodeEmitter.cpp head/contrib/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp head/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp head/contrib/llvm/lib/Target/ARM/ARMFastISel.cpp head/contrib/llvm/lib/Target/ARM/ARMFrameLowering.cpp head/contrib/llvm/lib/Target/ARM/ARMGlobalMerge.cpp head/contrib/llvm/lib/Target/ARM/ARMHazardRecognizer.cpp head/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp head/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp head/contrib/llvm/lib/Target/ARM/ARMISelLowering.h head/contrib/llvm/lib/Target/ARM/ARMInstrFormats.td head/contrib/llvm/lib/Target/ARM/ARMInstrInfo.cpp head/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td head/contrib/llvm/lib/Target/ARM/ARMInstrNEON.td head/contrib/llvm/lib/Target/ARM/ARMInstrThumb.td head/contrib/llvm/lib/Target/ARM/ARMInstrThumb2.td head/contrib/llvm/lib/Target/ARM/ARMInstrVFP.td head/contrib/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp head/contrib/llvm/lib/Target/ARM/ARMMCCodeEmitter.cpp head/contrib/llvm/lib/Target/ARM/ARMMCInstLower.cpp head/contrib/llvm/lib/Target/ARM/ARMRegisterInfo.td head/contrib/llvm/lib/Target/ARM/ARMSubtarget.cpp head/contrib/llvm/lib/Target/ARM/ARMSubtarget.h head/contrib/llvm/lib/Target/ARM/ARMTargetMachine.cpp head/contrib/llvm/lib/Target/ARM/ARMTargetMachine.h head/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmLexer.cpp head/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp head/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp head/contrib/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h head/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp head/contrib/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h head/contrib/llvm/lib/Target/ARM/MLxExpansionPass.cpp head/contrib/llvm/lib/Target/ARM/NEONMoveFix.cpp head/contrib/llvm/lib/Target/ARM/Thumb1FrameLowering.cpp head/contrib/llvm/lib/Target/ARM/Thumb1InstrInfo.cpp head/contrib/llvm/lib/Target/ARM/Thumb1RegisterInfo.cpp head/contrib/llvm/lib/Target/ARM/Thumb2ITBlockPass.cpp head/contrib/llvm/lib/Target/ARM/Thumb2InstrInfo.cpp head/contrib/llvm/lib/Target/ARM/Thumb2SizeReduction.cpp head/contrib/llvm/lib/Target/Alpha/Alpha.h head/contrib/llvm/lib/Target/Alpha/AlphaISelLowering.cpp head/contrib/llvm/lib/Target/Alpha/AlphaISelLowering.h head/contrib/llvm/lib/Target/Alpha/AlphaInstrInfo.cpp head/contrib/llvm/lib/Target/Alpha/AlphaInstrInfo.h head/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.cpp head/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.h head/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.td head/contrib/llvm/lib/Target/Alpha/AlphaSubtarget.cpp head/contrib/llvm/lib/Target/Alpha/AlphaSubtarget.h head/contrib/llvm/lib/Target/Alpha/AlphaTargetMachine.cpp head/contrib/llvm/lib/Target/Alpha/AlphaTargetMachine.h head/contrib/llvm/lib/Target/Blackfin/Blackfin.h head/contrib/llvm/lib/Target/Blackfin/BlackfinISelDAGToDAG.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinISelLowering.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinISelLowering.h head/contrib/llvm/lib/Target/Blackfin/BlackfinInstrInfo.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinInstrInfo.h head/contrib/llvm/lib/Target/Blackfin/BlackfinIntrinsicInfo.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.h head/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.td head/contrib/llvm/lib/Target/Blackfin/BlackfinSubtarget.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinSubtarget.h head/contrib/llvm/lib/Target/Blackfin/BlackfinTargetMachine.cpp head/contrib/llvm/lib/Target/Blackfin/BlackfinTargetMachine.h head/contrib/llvm/lib/Target/CBackend/CBackend.cpp head/contrib/llvm/lib/Target/CBackend/CTargetMachine.h head/contrib/llvm/lib/Target/CellSPU/SPU.h head/contrib/llvm/lib/Target/CellSPU/SPUFrameLowering.cpp head/contrib/llvm/lib/Target/CellSPU/SPUISelDAGToDAG.cpp head/contrib/llvm/lib/Target/CellSPU/SPUISelLowering.cpp head/contrib/llvm/lib/Target/CellSPU/SPUInstrInfo.cpp head/contrib/llvm/lib/Target/CellSPU/SPUInstrInfo.h head/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.cpp head/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.h head/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.td head/contrib/llvm/lib/Target/CellSPU/SPURegisterNames.h head/contrib/llvm/lib/Target/CellSPU/SPUSubtarget.cpp head/contrib/llvm/lib/Target/CellSPU/SPUSubtarget.h head/contrib/llvm/lib/Target/CellSPU/SPUTargetMachine.cpp head/contrib/llvm/lib/Target/CellSPU/SPUTargetMachine.h head/contrib/llvm/lib/Target/CppBackend/CPPBackend.cpp head/contrib/llvm/lib/Target/CppBackend/CPPTargetMachine.h head/contrib/llvm/lib/Target/MBlaze/AsmParser/MBlazeAsmLexer.cpp head/contrib/llvm/lib/Target/MBlaze/AsmParser/MBlazeAsmParser.cpp head/contrib/llvm/lib/Target/MBlaze/Disassembler/MBlazeDisassembler.cpp head/contrib/llvm/lib/Target/MBlaze/InstPrinter/MBlazeInstPrinter.h head/contrib/llvm/lib/Target/MBlaze/MBlaze.h head/contrib/llvm/lib/Target/MBlaze/MBlazeAsmPrinter.cpp head/contrib/llvm/lib/Target/MBlaze/MBlazeDelaySlotFiller.cpp head/contrib/llvm/lib/Target/MBlaze/MBlazeISelLowering.cpp head/contrib/llvm/lib/Target/MBlaze/MBlazeISelLowering.h head/contrib/llvm/lib/Target/MBlaze/MBlazeInstrInfo.cpp head/contrib/llvm/lib/Target/MBlaze/MBlazeInstrInfo.h head/contrib/llvm/lib/Target/MBlaze/MBlazeIntrinsicInfo.cpp head/contrib/llvm/lib/Target/MBlaze/MBlazeMCCodeEmitter.cpp head/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.cpp head/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.h head/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.td head/contrib/llvm/lib/Target/MBlaze/MBlazeSubtarget.cpp head/contrib/llvm/lib/Target/MBlaze/MBlazeSubtarget.h head/contrib/llvm/lib/Target/MBlaze/MBlazeTargetMachine.cpp head/contrib/llvm/lib/Target/MBlaze/MBlazeTargetMachine.h head/contrib/llvm/lib/Target/MSP430/InstPrinter/MSP430InstPrinter.h head/contrib/llvm/lib/Target/MSP430/MSP430.h head/contrib/llvm/lib/Target/MSP430/MSP430AsmPrinter.cpp head/contrib/llvm/lib/Target/MSP430/MSP430InstrInfo.cpp head/contrib/llvm/lib/Target/MSP430/MSP430InstrInfo.h head/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.cpp head/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.h head/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.td head/contrib/llvm/lib/Target/MSP430/MSP430Subtarget.cpp head/contrib/llvm/lib/Target/MSP430/MSP430Subtarget.h head/contrib/llvm/lib/Target/MSP430/MSP430TargetMachine.cpp head/contrib/llvm/lib/Target/MSP430/MSP430TargetMachine.h head/contrib/llvm/lib/Target/Mips/Mips.h head/contrib/llvm/lib/Target/Mips/Mips.td head/contrib/llvm/lib/Target/Mips/MipsAsmPrinter.cpp head/contrib/llvm/lib/Target/Mips/MipsCallingConv.td head/contrib/llvm/lib/Target/Mips/MipsDelaySlotFiller.cpp head/contrib/llvm/lib/Target/Mips/MipsEmitGPRestore.cpp head/contrib/llvm/lib/Target/Mips/MipsExpandPseudo.cpp head/contrib/llvm/lib/Target/Mips/MipsISelDAGToDAG.cpp head/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp head/contrib/llvm/lib/Target/Mips/MipsISelLowering.h head/contrib/llvm/lib/Target/Mips/MipsInstrInfo.cpp head/contrib/llvm/lib/Target/Mips/MipsInstrInfo.h head/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td head/contrib/llvm/lib/Target/Mips/MipsMachineFunction.h head/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.cpp head/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.h head/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.td head/contrib/llvm/lib/Target/Mips/MipsSubtarget.cpp head/contrib/llvm/lib/Target/Mips/MipsSubtarget.h head/contrib/llvm/lib/Target/Mips/MipsTargetMachine.cpp head/contrib/llvm/lib/Target/Mips/MipsTargetMachine.h head/contrib/llvm/lib/Target/PTX/PTX.h head/contrib/llvm/lib/Target/PTX/PTX.td head/contrib/llvm/lib/Target/PTX/PTXAsmPrinter.cpp head/contrib/llvm/lib/Target/PTX/PTXISelDAGToDAG.cpp head/contrib/llvm/lib/Target/PTX/PTXISelLowering.cpp head/contrib/llvm/lib/Target/PTX/PTXISelLowering.h head/contrib/llvm/lib/Target/PTX/PTXInstrFormats.td head/contrib/llvm/lib/Target/PTX/PTXInstrInfo.cpp head/contrib/llvm/lib/Target/PTX/PTXInstrInfo.h head/contrib/llvm/lib/Target/PTX/PTXInstrInfo.td head/contrib/llvm/lib/Target/PTX/PTXIntrinsicInstrInfo.td head/contrib/llvm/lib/Target/PTX/PTXMCAsmStreamer.cpp head/contrib/llvm/lib/Target/PTX/PTXMFInfoExtract.cpp head/contrib/llvm/lib/Target/PTX/PTXMachineFunctionInfo.h head/contrib/llvm/lib/Target/PTX/PTXRegisterInfo.cpp head/contrib/llvm/lib/Target/PTX/PTXRegisterInfo.h head/contrib/llvm/lib/Target/PTX/PTXRegisterInfo.td head/contrib/llvm/lib/Target/PTX/PTXSubtarget.cpp head/contrib/llvm/lib/Target/PTX/PTXSubtarget.h head/contrib/llvm/lib/Target/PTX/PTXTargetMachine.cpp head/contrib/llvm/lib/Target/PTX/PTXTargetMachine.h head/contrib/llvm/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.h head/contrib/llvm/lib/Target/PowerPC/PPC.h head/contrib/llvm/lib/Target/PowerPC/PPCAsmBackend.cpp head/contrib/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp head/contrib/llvm/lib/Target/PowerPC/PPCHazardRecognizers.cpp head/contrib/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp head/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp head/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp head/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.h head/contrib/llvm/lib/Target/PowerPC/PPCJITInfo.cpp head/contrib/llvm/lib/Target/PowerPC/PPCMCCodeEmitter.cpp head/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp head/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.h head/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.td head/contrib/llvm/lib/Target/PowerPC/PPCSubtarget.cpp head/contrib/llvm/lib/Target/PowerPC/PPCSubtarget.h head/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp head/contrib/llvm/lib/Target/PowerPC/PPCTargetMachine.h head/contrib/llvm/lib/Target/Sparc/DelaySlotFiller.cpp head/contrib/llvm/lib/Target/Sparc/Sparc.h head/contrib/llvm/lib/Target/Sparc/SparcISelLowering.cpp head/contrib/llvm/lib/Target/Sparc/SparcISelLowering.h head/contrib/llvm/lib/Target/Sparc/SparcInstrInfo.cpp head/contrib/llvm/lib/Target/Sparc/SparcInstrInfo.h head/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.cpp head/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.h head/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.td head/contrib/llvm/lib/Target/Sparc/SparcSubtarget.cpp head/contrib/llvm/lib/Target/Sparc/SparcSubtarget.h head/contrib/llvm/lib/Target/Sparc/SparcTargetMachine.cpp head/contrib/llvm/lib/Target/Sparc/SparcTargetMachine.h head/contrib/llvm/lib/Target/SystemZ/SystemZ.h head/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp head/contrib/llvm/lib/Target/SystemZ/SystemZInstrBuilder.h head/contrib/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp head/contrib/llvm/lib/Target/SystemZ/SystemZInstrInfo.h head/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp head/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.h head/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.td head/contrib/llvm/lib/Target/SystemZ/SystemZSubtarget.cpp head/contrib/llvm/lib/Target/SystemZ/SystemZSubtarget.h head/contrib/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp head/contrib/llvm/lib/Target/SystemZ/SystemZTargetMachine.h head/contrib/llvm/lib/Target/Target.cpp head/contrib/llvm/lib/Target/TargetAsmInfo.cpp head/contrib/llvm/lib/Target/TargetData.cpp head/contrib/llvm/lib/Target/TargetInstrInfo.cpp head/contrib/llvm/lib/Target/TargetLoweringObjectFile.cpp head/contrib/llvm/lib/Target/TargetMachine.cpp head/contrib/llvm/lib/Target/TargetRegisterInfo.cpp head/contrib/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp head/contrib/llvm/lib/Target/X86/Disassembler/X86Disassembler.cpp head/contrib/llvm/lib/Target/X86/InstPrinter/X86ATTInstPrinter.cpp head/contrib/llvm/lib/Target/X86/InstPrinter/X86ATTInstPrinter.h head/contrib/llvm/lib/Target/X86/InstPrinter/X86InstComments.cpp head/contrib/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.cpp head/contrib/llvm/lib/Target/X86/InstPrinter/X86IntelInstPrinter.h head/contrib/llvm/lib/Target/X86/X86.h head/contrib/llvm/lib/Target/X86/X86.td head/contrib/llvm/lib/Target/X86/X86AsmBackend.cpp head/contrib/llvm/lib/Target/X86/X86AsmPrinter.cpp head/contrib/llvm/lib/Target/X86/X86CallingConv.td head/contrib/llvm/lib/Target/X86/X86CodeEmitter.cpp head/contrib/llvm/lib/Target/X86/X86FastISel.cpp head/contrib/llvm/lib/Target/X86/X86FloatingPoint.cpp head/contrib/llvm/lib/Target/X86/X86FrameLowering.cpp head/contrib/llvm/lib/Target/X86/X86FrameLowering.h head/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp head/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp head/contrib/llvm/lib/Target/X86/X86ISelLowering.h head/contrib/llvm/lib/Target/X86/X86InstrBuilder.h head/contrib/llvm/lib/Target/X86/X86InstrCompiler.td head/contrib/llvm/lib/Target/X86/X86InstrFPStack.td head/contrib/llvm/lib/Target/X86/X86InstrFormats.td head/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td head/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp head/contrib/llvm/lib/Target/X86/X86InstrInfo.h head/contrib/llvm/lib/Target/X86/X86InstrInfo.td head/contrib/llvm/lib/Target/X86/X86InstrSSE.td head/contrib/llvm/lib/Target/X86/X86InstrSystem.td head/contrib/llvm/lib/Target/X86/X86MCCodeEmitter.cpp head/contrib/llvm/lib/Target/X86/X86MCInstLower.cpp head/contrib/llvm/lib/Target/X86/X86MachObjectWriter.cpp head/contrib/llvm/lib/Target/X86/X86RegisterInfo.cpp head/contrib/llvm/lib/Target/X86/X86RegisterInfo.h head/contrib/llvm/lib/Target/X86/X86RegisterInfo.td head/contrib/llvm/lib/Target/X86/X86Subtarget.cpp head/contrib/llvm/lib/Target/X86/X86Subtarget.h head/contrib/llvm/lib/Target/X86/X86TargetMachine.cpp head/contrib/llvm/lib/Target/X86/X86TargetMachine.h head/contrib/llvm/lib/Target/XCore/XCore.h head/contrib/llvm/lib/Target/XCore/XCoreAsmPrinter.cpp head/contrib/llvm/lib/Target/XCore/XCoreISelLowering.cpp head/contrib/llvm/lib/Target/XCore/XCoreISelLowering.h head/contrib/llvm/lib/Target/XCore/XCoreInstrInfo.cpp head/contrib/llvm/lib/Target/XCore/XCoreInstrInfo.h head/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.cpp head/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.h head/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.td head/contrib/llvm/lib/Target/XCore/XCoreSubtarget.cpp head/contrib/llvm/lib/Target/XCore/XCoreSubtarget.h head/contrib/llvm/lib/Target/XCore/XCoreTargetMachine.cpp head/contrib/llvm/lib/Target/XCore/XCoreTargetMachine.h head/contrib/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp head/contrib/llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp head/contrib/llvm/lib/Transforms/IPO/GlobalOpt.cpp head/contrib/llvm/lib/Transforms/IPO/IPO.cpp head/contrib/llvm/lib/Transforms/IPO/LowerSetJmp.cpp head/contrib/llvm/lib/Transforms/IPO/MergeFunctions.cpp head/contrib/llvm/lib/Transforms/IPO/PruneEH.cpp head/contrib/llvm/lib/Transforms/IPO/StripSymbols.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp head/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp head/contrib/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp head/contrib/llvm/lib/Transforms/Instrumentation/PathProfiling.cpp head/contrib/llvm/lib/Transforms/Instrumentation/ProfilingUtils.cpp head/contrib/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp head/contrib/llvm/lib/Transforms/Scalar/GVN.cpp head/contrib/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp head/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp head/contrib/llvm/lib/Transforms/Scalar/LICM.cpp head/contrib/llvm/lib/Transforms/Scalar/LoopDeletion.cpp head/contrib/llvm/lib/Transforms/Scalar/LoopIdiomRecognize.cpp head/contrib/llvm/lib/Transforms/Scalar/LoopRotation.cpp head/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp head/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp head/contrib/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp head/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp head/contrib/llvm/lib/Transforms/Scalar/Scalar.cpp head/contrib/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp head/contrib/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp head/contrib/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp head/contrib/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp head/contrib/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp head/contrib/llvm/lib/Transforms/Utils/CloneFunction.cpp head/contrib/llvm/lib/Transforms/Utils/CloneModule.cpp head/contrib/llvm/lib/Transforms/Utils/CodeExtractor.cpp head/contrib/llvm/lib/Transforms/Utils/InlineFunction.cpp head/contrib/llvm/lib/Transforms/Utils/Local.cpp head/contrib/llvm/lib/Transforms/Utils/LoopSimplify.cpp head/contrib/llvm/lib/Transforms/Utils/LoopUnroll.cpp head/contrib/llvm/lib/Transforms/Utils/LowerInvoke.cpp head/contrib/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp head/contrib/llvm/lib/Transforms/Utils/SSAUpdater.cpp head/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp head/contrib/llvm/lib/Transforms/Utils/ValueMapper.cpp head/contrib/llvm/lib/VMCore/AsmWriter.cpp head/contrib/llvm/lib/VMCore/Attributes.cpp head/contrib/llvm/lib/VMCore/AutoUpgrade.cpp head/contrib/llvm/lib/VMCore/BasicBlock.cpp head/contrib/llvm/lib/VMCore/ConstantFold.cpp head/contrib/llvm/lib/VMCore/ConstantFold.h head/contrib/llvm/lib/VMCore/Constants.cpp head/contrib/llvm/lib/VMCore/ConstantsContext.h head/contrib/llvm/lib/VMCore/Core.cpp head/contrib/llvm/lib/VMCore/DebugLoc.cpp head/contrib/llvm/lib/VMCore/Function.cpp head/contrib/llvm/lib/VMCore/Globals.cpp head/contrib/llvm/lib/VMCore/IRBuilder.cpp head/contrib/llvm/lib/VMCore/InlineAsm.cpp head/contrib/llvm/lib/VMCore/Instruction.cpp head/contrib/llvm/lib/VMCore/Instructions.cpp head/contrib/llvm/lib/VMCore/LLVMContext.cpp head/contrib/llvm/lib/VMCore/LLVMContextImpl.cpp head/contrib/llvm/lib/VMCore/LLVMContextImpl.h head/contrib/llvm/lib/VMCore/Metadata.cpp head/contrib/llvm/lib/VMCore/Module.cpp head/contrib/llvm/lib/VMCore/Type.cpp head/contrib/llvm/lib/VMCore/Use.cpp head/contrib/llvm/lib/VMCore/User.cpp head/contrib/llvm/lib/VMCore/Value.cpp head/contrib/llvm/lib/VMCore/ValueSymbolTable.cpp head/contrib/llvm/lib/VMCore/ValueTypes.cpp head/contrib/llvm/lib/VMCore/Verifier.cpp head/contrib/llvm/tools/clang/include/clang-c/Index.h head/contrib/llvm/tools/clang/include/clang/AST/ASTContext.h head/contrib/llvm/tools/clang/include/clang/AST/ASTDiagnostic.h head/contrib/llvm/tools/clang/include/clang/AST/CanonicalType.h head/contrib/llvm/tools/clang/include/clang/AST/Decl.h head/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h head/contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h head/contrib/llvm/tools/clang/include/clang/AST/DeclObjC.h head/contrib/llvm/tools/clang/include/clang/AST/DeclTemplate.h head/contrib/llvm/tools/clang/include/clang/AST/DeclarationName.h head/contrib/llvm/tools/clang/include/clang/AST/Expr.h head/contrib/llvm/tools/clang/include/clang/AST/ExprCXX.h head/contrib/llvm/tools/clang/include/clang/AST/ExprObjC.h head/contrib/llvm/tools/clang/include/clang/AST/ExternalASTSource.h head/contrib/llvm/tools/clang/include/clang/AST/NestedNameSpecifier.h head/contrib/llvm/tools/clang/include/clang/AST/OperationKinds.h head/contrib/llvm/tools/clang/include/clang/AST/ParentMap.h head/contrib/llvm/tools/clang/include/clang/AST/PrettyPrinter.h head/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h head/contrib/llvm/tools/clang/include/clang/AST/Stmt.h head/contrib/llvm/tools/clang/include/clang/AST/StmtObjC.h head/contrib/llvm/tools/clang/include/clang/AST/TemplateBase.h head/contrib/llvm/tools/clang/include/clang/AST/TemplateName.h head/contrib/llvm/tools/clang/include/clang/AST/Type.h head/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/UninitializedValues.h head/contrib/llvm/tools/clang/include/clang/Analysis/AnalysisContext.h head/contrib/llvm/tools/clang/include/clang/Analysis/DomainSpecific/CocoaConventions.h head/contrib/llvm/tools/clang/include/clang/Basic/Attr.td head/contrib/llvm/tools/clang/include/clang/Basic/Builtins.def head/contrib/llvm/tools/clang/include/clang/Basic/Builtins.h head/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def head/contrib/llvm/tools/clang/include/clang/Basic/Diagnostic.h head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticCommonKinds.td head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticFrontendKinds.td head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticIDs.h head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticLexKinds.td head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td head/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td head/contrib/llvm/tools/clang/include/clang/Basic/FileManager.h head/contrib/llvm/tools/clang/include/clang/Basic/IdentifierTable.h head/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.h head/contrib/llvm/tools/clang/include/clang/Basic/SourceManager.h head/contrib/llvm/tools/clang/include/clang/Basic/SourceManagerInternals.h head/contrib/llvm/tools/clang/include/clang/Basic/Specifiers.h head/contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td head/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h head/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def head/contrib/llvm/tools/clang/include/clang/Basic/arm_neon.td head/contrib/llvm/tools/clang/include/clang/CodeGen/BackendUtil.h head/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td head/contrib/llvm/tools/clang/include/clang/Driver/Compilation.h head/contrib/llvm/tools/clang/include/clang/Driver/Driver.h head/contrib/llvm/tools/clang/include/clang/Driver/Option.h head/contrib/llvm/tools/clang/include/clang/Driver/Options.td head/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h head/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h head/contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h head/contrib/llvm/tools/clang/include/clang/Frontend/DependencyOutputOptions.h head/contrib/llvm/tools/clang/include/clang/Frontend/DiagnosticOptions.h head/contrib/llvm/tools/clang/include/clang/Frontend/FrontendAction.h head/contrib/llvm/tools/clang/include/clang/Frontend/FrontendActions.h head/contrib/llvm/tools/clang/include/clang/Frontend/FrontendOptions.h head/contrib/llvm/tools/clang/include/clang/Frontend/HeaderSearchOptions.h head/contrib/llvm/tools/clang/include/clang/Frontend/PreprocessorOptions.h head/contrib/llvm/tools/clang/include/clang/Frontend/TextDiagnosticPrinter.h head/contrib/llvm/tools/clang/include/clang/Frontend/Utils.h head/contrib/llvm/tools/clang/include/clang/Lex/Lexer.h head/contrib/llvm/tools/clang/include/clang/Lex/LiteralSupport.h head/contrib/llvm/tools/clang/include/clang/Lex/MacroInfo.h head/contrib/llvm/tools/clang/include/clang/Lex/PPCallbacks.h head/contrib/llvm/tools/clang/include/clang/Lex/PreprocessingRecord.h head/contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h head/contrib/llvm/tools/clang/include/clang/Lex/Token.h head/contrib/llvm/tools/clang/include/clang/Lex/TokenLexer.h head/contrib/llvm/tools/clang/include/clang/Parse/Parser.h head/contrib/llvm/tools/clang/include/clang/Rewrite/FixItRewriter.h head/contrib/llvm/tools/clang/include/clang/Rewrite/Rewriter.h head/contrib/llvm/tools/clang/include/clang/Sema/AnalysisBasedWarnings.h head/contrib/llvm/tools/clang/include/clang/Sema/AttributeList.h head/contrib/llvm/tools/clang/include/clang/Sema/CodeCompleteConsumer.h head/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h head/contrib/llvm/tools/clang/include/clang/Sema/DelayedDiagnostic.h head/contrib/llvm/tools/clang/include/clang/Sema/ExternalSemaSource.h head/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h head/contrib/llvm/tools/clang/include/clang/Sema/Overload.h head/contrib/llvm/tools/clang/include/clang/Sema/Scope.h head/contrib/llvm/tools/clang/include/clang/Sema/Sema.h head/contrib/llvm/tools/clang/include/clang/Serialization/ASTBitCodes.h head/contrib/llvm/tools/clang/include/clang/Serialization/ASTReader.h head/contrib/llvm/tools/clang/include/clang/Serialization/ASTWriter.h head/contrib/llvm/tools/clang/include/clang/Serialization/ChainedIncludesSource.h head/contrib/llvm/tools/clang/include/clang/StaticAnalyzer/Core/PathSensitive/GRStateTrait.h head/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp head/contrib/llvm/tools/clang/lib/AST/ASTDiagnostic.cpp head/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp head/contrib/llvm/tools/clang/lib/AST/Decl.cpp head/contrib/llvm/tools/clang/lib/AST/DeclBase.cpp head/contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp head/contrib/llvm/tools/clang/lib/AST/DeclObjC.cpp head/contrib/llvm/tools/clang/lib/AST/DeclPrinter.cpp head/contrib/llvm/tools/clang/lib/AST/DeclarationName.cpp head/contrib/llvm/tools/clang/lib/AST/Expr.cpp head/contrib/llvm/tools/clang/lib/AST/ExprCXX.cpp head/contrib/llvm/tools/clang/lib/AST/ExprClassification.cpp head/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp head/contrib/llvm/tools/clang/lib/AST/ExternalASTSource.cpp head/contrib/llvm/tools/clang/lib/AST/ItaniumMangle.cpp head/contrib/llvm/tools/clang/lib/AST/NestedNameSpecifier.cpp head/contrib/llvm/tools/clang/lib/AST/ParentMap.cpp head/contrib/llvm/tools/clang/lib/AST/RecordLayoutBuilder.cpp head/contrib/llvm/tools/clang/lib/AST/Stmt.cpp head/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp head/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp head/contrib/llvm/tools/clang/lib/AST/TemplateBase.cpp head/contrib/llvm/tools/clang/lib/AST/TemplateName.cpp head/contrib/llvm/tools/clang/lib/AST/Type.cpp head/contrib/llvm/tools/clang/lib/AST/TypePrinter.cpp head/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp head/contrib/llvm/tools/clang/lib/Analysis/CocoaConventions.cpp head/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp head/contrib/llvm/tools/clang/lib/Analysis/ReachableCode.cpp head/contrib/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp head/contrib/llvm/tools/clang/lib/Basic/Builtins.cpp head/contrib/llvm/tools/clang/lib/Basic/Diagnostic.cpp head/contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp head/contrib/llvm/tools/clang/lib/Basic/IdentifierTable.cpp head/contrib/llvm/tools/clang/lib/Basic/SourceManager.cpp head/contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp head/contrib/llvm/tools/clang/lib/Basic/Targets.cpp head/contrib/llvm/tools/clang/lib/CodeGen/ABIInfo.h head/contrib/llvm/tools/clang/lib/CodeGen/BackendUtil.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.h head/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGCXXABI.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGCXXABI.h head/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGCall.h head/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGCleanup.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.h head/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGDeclCXX.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGException.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGExprCXX.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGExprComplex.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGExprConstant.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGObjC.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGObjCGNU.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGObjCMac.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGObjCRuntime.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGObjCRuntime.h head/contrib/llvm/tools/clang/lib/CodeGen/CGRTTI.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGRecordLayout.h head/contrib/llvm/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGTemporaries.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGVTT.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGVTables.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CGVTables.h head/contrib/llvm/tools/clang/lib/CodeGen/CGValue.h head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.h head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.cpp head/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.h head/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp head/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp head/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.h head/contrib/llvm/tools/clang/lib/Driver/Arg.cpp head/contrib/llvm/tools/clang/lib/Driver/ArgList.cpp head/contrib/llvm/tools/clang/lib/Driver/Driver.cpp head/contrib/llvm/tools/clang/lib/Driver/Option.cpp head/contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp head/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp head/contrib/llvm/tools/clang/lib/Driver/ToolChains.h head/contrib/llvm/tools/clang/lib/Driver/Tools.cpp head/contrib/llvm/tools/clang/lib/Driver/Tools.h head/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp head/contrib/llvm/tools/clang/lib/Frontend/CacheTokens.cpp head/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp head/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp head/contrib/llvm/tools/clang/lib/Frontend/DependencyFile.cpp head/contrib/llvm/tools/clang/lib/Frontend/FrontendAction.cpp head/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp head/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp head/contrib/llvm/tools/clang/lib/Frontend/PrintPreprocessedOutput.cpp head/contrib/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp head/contrib/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp head/contrib/llvm/tools/clang/lib/Headers/float.h head/contrib/llvm/tools/clang/lib/Headers/stdarg.h head/contrib/llvm/tools/clang/lib/Lex/HeaderSearch.cpp head/contrib/llvm/tools/clang/lib/Lex/Lexer.cpp head/contrib/llvm/tools/clang/lib/Lex/MacroArgs.cpp head/contrib/llvm/tools/clang/lib/Lex/MacroArgs.h head/contrib/llvm/tools/clang/lib/Lex/MacroInfo.cpp head/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp head/contrib/llvm/tools/clang/lib/Lex/PPLexerChange.cpp head/contrib/llvm/tools/clang/lib/Lex/PPMacroExpansion.cpp head/contrib/llvm/tools/clang/lib/Lex/Pragma.cpp head/contrib/llvm/tools/clang/lib/Lex/PreprocessingRecord.cpp head/contrib/llvm/tools/clang/lib/Lex/Preprocessor.cpp head/contrib/llvm/tools/clang/lib/Lex/TokenLexer.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseAST.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseObjc.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp head/contrib/llvm/tools/clang/lib/Parse/ParseTentative.cpp head/contrib/llvm/tools/clang/lib/Parse/Parser.cpp head/contrib/llvm/tools/clang/lib/Rewrite/FixItRewriter.cpp head/contrib/llvm/tools/clang/lib/Rewrite/HTMLRewrite.cpp head/contrib/llvm/tools/clang/lib/Rewrite/RewriteObjC.cpp head/contrib/llvm/tools/clang/lib/Rewrite/Rewriter.cpp head/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp head/contrib/llvm/tools/clang/lib/Sema/AttributeList.cpp head/contrib/llvm/tools/clang/lib/Sema/CodeCompleteConsumer.cpp head/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp head/contrib/llvm/tools/clang/lib/Sema/DelayedDiagnostic.cpp head/contrib/llvm/tools/clang/lib/Sema/JumpDiagnostics.cpp head/contrib/llvm/tools/clang/lib/Sema/Sema.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaCXXCast.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaCXXScopeSpec.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaDeclObjC.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaExprObjC.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaObjCProperty.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaTemplateVariadic.cpp head/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp head/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h head/contrib/llvm/tools/clang/lib/Sema/TypeLocBuilder.h head/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderDecl.cpp head/contrib/llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp head/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterDecl.cpp head/contrib/llvm/tools/clang/lib/Serialization/ASTWriterStmt.cpp head/contrib/llvm/tools/clang/lib/Serialization/ChainedIncludesSource.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/CallAndMessageChecker.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/Checkers.td head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/DeadStoresChecker.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/IteratorsChecker.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/MacOSXAPIChecker.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/UnixAPIChecker.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/CFRefCount.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/Environment.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/RegionStore.cpp head/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp head/contrib/llvm/tools/clang/tools/driver/cc1_main.cpp head/contrib/llvm/tools/clang/tools/driver/cc1as_main.cpp head/contrib/llvm/tools/clang/tools/driver/driver.cpp head/contrib/llvm/utils/TableGen/ARMDecoderEmitter.cpp head/contrib/llvm/utils/TableGen/AsmMatcherEmitter.cpp head/contrib/llvm/utils/TableGen/AsmWriterEmitter.cpp head/contrib/llvm/utils/TableGen/ClangDiagnosticsEmitter.cpp head/contrib/llvm/utils/TableGen/CodeEmitterGen.cpp head/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.cpp head/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.h head/contrib/llvm/utils/TableGen/CodeGenInstruction.cpp head/contrib/llvm/utils/TableGen/CodeGenInstruction.h head/contrib/llvm/utils/TableGen/CodeGenRegisters.cpp head/contrib/llvm/utils/TableGen/CodeGenRegisters.h head/contrib/llvm/utils/TableGen/CodeGenTarget.cpp head/contrib/llvm/utils/TableGen/CodeGenTarget.h head/contrib/llvm/utils/TableGen/DAGISelMatcherGen.cpp head/contrib/llvm/utils/TableGen/DisassemblerEmitter.cpp head/contrib/llvm/utils/TableGen/EDEmitter.cpp head/contrib/llvm/utils/TableGen/FastISelEmitter.cpp head/contrib/llvm/utils/TableGen/FixedLenDecoderEmitter.cpp head/contrib/llvm/utils/TableGen/InstrInfoEmitter.cpp head/contrib/llvm/utils/TableGen/InstrInfoEmitter.h head/contrib/llvm/utils/TableGen/IntrinsicEmitter.cpp head/contrib/llvm/utils/TableGen/LLVMCConfigurationEmitter.cpp head/contrib/llvm/utils/TableGen/NeonEmitter.cpp head/contrib/llvm/utils/TableGen/Record.cpp head/contrib/llvm/utils/TableGen/Record.h head/contrib/llvm/utils/TableGen/RegisterInfoEmitter.cpp head/contrib/llvm/utils/TableGen/RegisterInfoEmitter.h head/contrib/llvm/utils/TableGen/SetTheory.cpp head/contrib/llvm/utils/TableGen/SetTheory.h head/contrib/llvm/utils/TableGen/SubtargetEmitter.cpp head/contrib/llvm/utils/TableGen/SubtargetEmitter.h head/contrib/llvm/utils/TableGen/TGLexer.cpp head/contrib/llvm/utils/TableGen/TGLexer.h head/contrib/llvm/utils/TableGen/TGParser.h head/contrib/llvm/utils/TableGen/TableGen.cpp head/contrib/llvm/utils/TableGen/X86RecognizableInstr.cpp head/contrib/llvm/utils/TableGen/X86RecognizableInstr.h head/lib/clang/Makefile head/lib/clang/clang.build.mk head/lib/clang/include/clang/Basic/Version.inc head/lib/clang/include/llvm/Config/config.h head/lib/clang/include/llvm/Config/llvm-config.h head/lib/clang/libclangfrontend/Makefile head/lib/clang/libclangsema/Makefile head/lib/clang/libllvmanalysis/Makefile head/lib/clang/libllvmarmasmparser/Makefile head/lib/clang/libllvmarmcodegen/Makefile head/lib/clang/libllvmarmdisassembler/Makefile head/lib/clang/libllvmarminfo/Makefile head/lib/clang/libllvmarminstprinter/Makefile head/lib/clang/libllvmcodegen/Makefile head/lib/clang/libllvmcore/Makefile head/lib/clang/libllvmipo/Makefile head/lib/clang/libllvmmc/Makefile head/lib/clang/libllvmmipscodegen/Makefile head/lib/clang/libllvmmipsinfo/Makefile head/lib/clang/libllvmpowerpccodegen/Makefile head/lib/clang/libllvmpowerpcinfo/Makefile head/lib/clang/libllvmpowerpcinstprinter/Makefile head/lib/clang/libllvmscalaropts/Makefile head/lib/clang/libllvmsupport/Makefile head/lib/clang/libllvmtarget/Makefile head/lib/clang/libllvmtransformutils/Makefile head/lib/clang/libllvmx86asmparser/Makefile head/lib/clang/libllvmx86codegen/Makefile head/lib/clang/libllvmx86disassembler/Makefile head/lib/clang/libllvmx86info/Makefile head/lib/clang/libllvmx86instprinter/Makefile head/usr.bin/clang/clang/Makefile head/usr.bin/clang/tblgen/Makefile Directory Properties: head/contrib/llvm/ (props changed) head/contrib/llvm/tools/clang/ (props changed) Modified: head/contrib/llvm/include/llvm-c/Core.h ============================================================================== --- head/contrib/llvm/include/llvm-c/Core.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm-c/Core.h Sun Jul 17 19:51:40 2011 (r224145) @@ -68,13 +68,6 @@ typedef struct LLVMOpaqueModule *LLVMMod */ typedef struct LLVMOpaqueType *LLVMTypeRef; -/** - * When building recursive types using LLVMRefineType, LLVMTypeRef values may - * become invalid; use LLVMTypeHandleRef to resolve this problem. See the - * llvm::AbstractTypeHolder class. - */ -typedef struct LLVMOpaqueTypeHandle *LLVMTypeHandleRef; - typedef struct LLVMOpaqueValue *LLVMValueRef; typedef struct LLVMOpaqueBasicBlock *LLVMBasicBlockRef; typedef struct LLVMOpaqueBuilder *LLVMBuilderRef; @@ -206,7 +199,6 @@ typedef enum { LLVMStructTypeKind, /**< Structures */ LLVMArrayTypeKind, /**< Arrays */ LLVMPointerTypeKind, /**< Pointers */ - LLVMOpaqueTypeKind, /**< Opaque: type with unknown structure */ LLVMVectorTypeKind, /**< SIMD 'packed' format, or other vector type */ LLVMMetadataTypeKind, /**< Metadata */ LLVMX86_MMXTypeKind /**< X86 MMX */ @@ -320,12 +312,6 @@ void LLVMSetDataLayout(LLVMModuleRef M, const char *LLVMGetTarget(LLVMModuleRef M); void LLVMSetTarget(LLVMModuleRef M, const char *Triple); -/** See Module::addTypeName. */ -LLVMBool LLVMAddTypeName(LLVMModuleRef M, const char *Name, LLVMTypeRef Ty); -void LLVMDeleteTypeName(LLVMModuleRef M, const char *Name); -LLVMTypeRef LLVMGetTypeByName(LLVMModuleRef M, const char *Name); -const char *LLVMGetTypeName(LLVMModuleRef M, LLVMTypeRef Ty); - /** See Module::dump. */ void LLVMDumpModule(LLVMModuleRef M); @@ -401,9 +387,16 @@ LLVMTypeRef LLVMStructTypeInContext(LLVM unsigned ElementCount, LLVMBool Packed); LLVMTypeRef LLVMStructType(LLVMTypeRef *ElementTypes, unsigned ElementCount, LLVMBool Packed); +LLVMTypeRef LLVMStructCreateNamed(LLVMContextRef C, const char *Name); +void LLVMStructSetBody(LLVMTypeRef StructTy, LLVMTypeRef *ElementTypes, + unsigned ElementCount, LLVMBool Packed); + unsigned LLVMCountStructElementTypes(LLVMTypeRef StructTy); void LLVMGetStructElementTypes(LLVMTypeRef StructTy, LLVMTypeRef *Dest); LLVMBool LLVMIsPackedStruct(LLVMTypeRef StructTy); +LLVMBool LLVMIsOpaqueStruct(LLVMTypeRef StructTy); + +LLVMTypeRef LLVMGetTypeByName(LLVMModuleRef M, const char *Name); /* Operations on array, pointer, and vector types (sequence types) */ LLVMTypeRef LLVMArrayType(LLVMTypeRef ElementType, unsigned ElementCount); @@ -418,21 +411,12 @@ unsigned LLVMGetVectorSize(LLVMTypeRef V /* Operations on other types */ LLVMTypeRef LLVMVoidTypeInContext(LLVMContextRef C); LLVMTypeRef LLVMLabelTypeInContext(LLVMContextRef C); -LLVMTypeRef LLVMOpaqueTypeInContext(LLVMContextRef C); LLVMTypeRef LLVMX86MMXTypeInContext(LLVMContextRef C); LLVMTypeRef LLVMVoidType(void); LLVMTypeRef LLVMLabelType(void); -LLVMTypeRef LLVMOpaqueType(void); LLVMTypeRef LLVMX86MMXType(void); -/* Operations on type handles */ -LLVMTypeHandleRef LLVMCreateTypeHandle(LLVMTypeRef PotentiallyAbstractTy); -void LLVMRefineType(LLVMTypeRef AbstractTy, LLVMTypeRef ConcreteTy); -LLVMTypeRef LLVMResolveTypeHandle(LLVMTypeHandleRef TypeHandle); -void LLVMDisposeTypeHandle(LLVMTypeHandleRef TypeHandle); - - /*===-- Values ------------------------------------------------------------===*/ /* The bulk of LLVM's object model consists of values, which comprise a very @@ -581,6 +565,9 @@ LLVMValueRef LLVMConstArray(LLVMTypeRef LLVMValueRef *ConstantVals, unsigned Length); LLVMValueRef LLVMConstStruct(LLVMValueRef *ConstantVals, unsigned Count, LLVMBool Packed); +LLVMValueRef LLVMConstNamedStruct(LLVMTypeRef StructTy, + LLVMValueRef *ConstantVals, + unsigned Count); LLVMValueRef LLVMConstVector(LLVMValueRef *ScalarConstantVals, unsigned Size); /* Constant expressions */ @@ -1117,7 +1104,6 @@ namespace llvm { DEFINE_SIMPLE_CONVERSION_FUNCTIONS(Module, LLVMModuleRef ) DEFINE_SIMPLE_CONVERSION_FUNCTIONS(BasicBlock, LLVMBasicBlockRef ) DEFINE_SIMPLE_CONVERSION_FUNCTIONS(IRBuilder<>, LLVMBuilderRef ) - DEFINE_SIMPLE_CONVERSION_FUNCTIONS(PATypeHolder, LLVMTypeHandleRef ) DEFINE_SIMPLE_CONVERSION_FUNCTIONS(MemoryBuffer, LLVMMemoryBufferRef ) DEFINE_SIMPLE_CONVERSION_FUNCTIONS(LLVMContext, LLVMContextRef ) DEFINE_SIMPLE_CONVERSION_FUNCTIONS(Use, LLVMUseRef ) Modified: head/contrib/llvm/include/llvm-c/Target.h ============================================================================== --- head/contrib/llvm/include/llvm-c/Target.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm-c/Target.h Sun Jul 17 19:51:40 2011 (r224145) @@ -41,6 +41,11 @@ typedef struct LLVMStructLayout *LLVMStr #include "llvm/Config/Targets.def" #undef LLVM_TARGET /* Explicit undef to make SWIG happier */ +#define LLVM_TARGET(TargetName) \ + void LLVMInitialize##TargetName##MCAsmInfo(void); +#include "llvm/Config/Targets.def" +#undef LLVM_TARGET /* Explicit undef to make SWIG happier */ + /** LLVMInitializeAllTargetInfos - The main program should call this function if it wants access to all available targets that LLVM is configured to support. */ @@ -67,6 +72,7 @@ static inline LLVMBool LLVMInitializeNat #ifdef LLVM_NATIVE_TARGET LLVM_NATIVE_TARGETINFO(); LLVM_NATIVE_TARGET(); + LLVM_NATIVE_MCASMINFO(); return 0; #else return 1; @@ -141,12 +147,6 @@ unsigned LLVMElementAtOffset(LLVMTargetD unsigned long long LLVMOffsetOfElement(LLVMTargetDataRef, LLVMTypeRef StructTy, unsigned Element); -/** Struct layouts are speculatively cached. If a TargetDataRef is alive when - types are being refined and removed, this method must be called whenever a - struct type is removed to avoid a dangling pointer in this cache. - See the method llvm::TargetData::InvalidateStructLayoutInfo. */ -void LLVMInvalidateStructLayout(LLVMTargetDataRef, LLVMTypeRef StructTy); - /** Deallocates a TargetData. See the destructor llvm::TargetData::~TargetData. */ void LLVMDisposeTargetData(LLVMTargetDataRef); Modified: head/contrib/llvm/include/llvm-c/Transforms/IPO.h ============================================================================== --- head/contrib/llvm/include/llvm-c/Transforms/IPO.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm-c/Transforms/IPO.h Sun Jul 17 19:51:40 2011 (r224145) @@ -30,9 +30,6 @@ void LLVMAddConstantMergePass(LLVMPassMa /** See llvm::createDeadArgEliminationPass function. */ void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM); -/** See llvm::createDeadTypeEliminationPass function. */ -void LLVMAddDeadTypeEliminationPass(LLVMPassManagerRef PM); - /** See llvm::createFunctionAttrsPass function. */ void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM); Modified: head/contrib/llvm/include/llvm/ADT/APFloat.h ============================================================================== --- head/contrib/llvm/include/llvm/ADT/APFloat.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/ADT/APFloat.h Sun Jul 17 19:51:40 2011 (r224145) @@ -109,6 +109,7 @@ namespace llvm { typedef signed short exponent_t; struct fltSemantics; + class APSInt; class StringRef; /* When bits of a floating point number are truncated, this enum is @@ -283,6 +284,7 @@ namespace llvm { opStatus convert(const fltSemantics &, roundingMode, bool *); opStatus convertToInteger(integerPart *, unsigned int, bool, roundingMode, bool *) const; + opStatus convertToInteger(APSInt&, roundingMode, bool *) const; opStatus convertFromAPInt(const APInt &, bool, roundingMode); opStatus convertFromSignExtendedInteger(const integerPart *, unsigned int, Modified: head/contrib/llvm/include/llvm/ADT/APInt.h ============================================================================== --- head/contrib/llvm/include/llvm/ADT/APInt.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/ADT/APInt.h Sun Jul 17 19:51:40 2011 (r224145) @@ -1241,18 +1241,19 @@ public: /// toString - Converts an APInt to a string and append it to Str. Str is /// commonly a SmallString. - void toString(SmallVectorImpl &Str, unsigned Radix, bool Signed) const; + void toString(SmallVectorImpl &Str, unsigned Radix, bool Signed, + bool formatAsCLiteral = false) const; /// Considers the APInt to be unsigned and converts it into a string in the /// radix given. The radix can be 2, 8, 10 or 16. void toStringUnsigned(SmallVectorImpl &Str, unsigned Radix = 10) const { - toString(Str, Radix, false); + toString(Str, Radix, false, false); } /// Considers the APInt to be signed and converts it into a string in the /// radix given. The radix can be 2, 8, 10 or 16. void toStringSigned(SmallVectorImpl &Str, unsigned Radix = 10) const { - toString(Str, Radix, true); + toString(Str, Radix, true, false); } /// toString - This returns the APInt as a std::string. Note that this is an Modified: head/contrib/llvm/include/llvm/ADT/ArrayRef.h ============================================================================== --- head/contrib/llvm/include/llvm/ADT/ArrayRef.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/ADT/ArrayRef.h Sun Jul 17 19:51:40 2011 (r224145) @@ -39,7 +39,7 @@ namespace llvm { const T *Data; /// The number of elements. - size_t Length; + size_type Length; public: /// @name Constructors @@ -56,6 +56,10 @@ namespace llvm { /*implicit*/ ArrayRef(const T *data, size_t length) : Data(data), Length(length) {} + /// Construct an ArrayRef from a range. + ArrayRef(const T *begin, const T *end) + : Data(begin), Length(end - begin) {} + /// Construct an ArrayRef from a SmallVector. /*implicit*/ ArrayRef(const SmallVectorImpl &Vec) : Data(Vec.data()), Length(Vec.size()) {} @@ -96,6 +100,16 @@ namespace llvm { return Data[Length-1]; } + /// equals - Check for element-wise equality. + bool equals(ArrayRef RHS) const { + if (Length != RHS.Length) + return false; + for (size_type i = 0; i != Length; i++) + if (Data[i] != RHS.Data[i]) + return false; + return true; + } + /// slice(n) - Chop off the first N elements of the array. ArrayRef slice(unsigned N) { assert(N <= size() && "Invalid specifier"); @@ -125,8 +139,30 @@ namespace llvm { } /// @} + /// @name Conversion operators + /// @{ + operator std::vector() const { + return std::vector(Data, Data+Length); + } + + /// @} }; + /// @name ArrayRef Comparison Operators + /// @{ + + template + inline bool operator==(ArrayRef LHS, ArrayRef RHS) { + return LHS.equals(RHS); + } + + template + inline bool operator!=(ArrayRef LHS, ArrayRef RHS) { + return !(LHS == RHS); + } + + /// @} + // ArrayRefs can be treated like a POD type. template struct isPodLike; template struct isPodLike > { Modified: head/contrib/llvm/include/llvm/ADT/ImmutableList.h ============================================================================== --- head/contrib/llvm/include/llvm/ADT/ImmutableList.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/ADT/ImmutableList.h Sun Jul 17 19:51:40 2011 (r224145) @@ -103,6 +103,14 @@ public: /// isEmpty - Returns true if the list is empty. bool isEmpty() const { return !X; } + bool contains(const T& V) const { + for (iterator I = begin(), E = end(); I != E; ++I) { + if (*I == V) + return true; + } + return false; + } + /// isEqual - Returns true if two lists are equal. Because all lists created /// from the same ImmutableListFactory are uniqued, this has O(1) complexity /// because it the contents of the list do not need to be compared. Note Modified: head/contrib/llvm/include/llvm/ADT/PackedVector.h ============================================================================== --- head/contrib/llvm/include/llvm/ADT/PackedVector.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/ADT/PackedVector.h Sun Jul 17 19:51:40 2011 (r224145) @@ -90,7 +90,7 @@ public: Vec.setValue(Vec.Bits, Idx, val); return *this; } - operator T() { + operator T() const { return Vec.getValue(Vec.Bits, Idx); } }; Modified: head/contrib/llvm/include/llvm/ADT/SmallVector.h ============================================================================== --- head/contrib/llvm/include/llvm/ADT/SmallVector.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/ADT/SmallVector.h Sun Jul 17 19:51:40 2011 (r224145) @@ -410,7 +410,14 @@ public: this->setEnd(this->end()+1); // Push everything else over. std::copy_backward(I, this->end()-1, this->end()); - *I = Elt; + + // If we just moved the element we're inserting, be sure to update + // the reference. + const T *EltPtr = &Elt; + if (I <= EltPtr && EltPtr < this->EndX) + ++EltPtr; + + *I = *EltPtr; return I; } size_t EltNo = I-this->begin(); Modified: head/contrib/llvm/include/llvm/ADT/StringMap.h ============================================================================== --- head/contrib/llvm/include/llvm/ADT/StringMap.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/ADT/StringMap.h Sun Jul 17 19:51:40 2011 (r224145) @@ -140,7 +140,7 @@ public: /// StringMapEntry object. const char *getKeyData() const {return reinterpret_cast(this+1);} - const char *first() const { return getKeyData(); } + StringRef first() const { return StringRef(getKeyData(), getKeyLength()); } /// Create - Create a StringMapEntry for the specified key and default /// construct the value. @@ -307,7 +307,7 @@ public: return ValueTy(); } - ValueTy& operator[](StringRef Key) { + ValueTy &operator[](StringRef Key) { return GetOrCreateValue(Key).getValue(); } @@ -355,8 +355,7 @@ public: /// exists, return it. Otherwise, default construct a value, insert it, and /// return. template - StringMapEntry &GetOrCreateValue(StringRef Key, - InitTy Val) { + MapEntryTy &GetOrCreateValue(StringRef Key, InitTy Val) { unsigned BucketNo = LookupBucketFor(Key); ItemBucket &Bucket = TheTable[BucketNo]; if (Bucket.Item && Bucket.Item != getTombstoneVal()) @@ -378,22 +377,10 @@ public: return *NewItem; } - StringMapEntry &GetOrCreateValue(StringRef Key) { + MapEntryTy &GetOrCreateValue(StringRef Key) { return GetOrCreateValue(Key, ValueTy()); } - template - StringMapEntry &GetOrCreateValue(const char *KeyStart, - const char *KeyEnd, - InitTy Val) { - return GetOrCreateValue(StringRef(KeyStart, KeyEnd - KeyStart), Val); - } - - StringMapEntry &GetOrCreateValue(const char *KeyStart, - const char *KeyEnd) { - return GetOrCreateValue(StringRef(KeyStart, KeyEnd - KeyStart)); - } - /// remove - Remove the specified key/value pair from the map, but do not /// erase it. This aborts if the key is not in the map. void remove(MapEntryTy *KeyValue) { Modified: head/contrib/llvm/include/llvm/ADT/Triple.h ============================================================================== --- head/contrib/llvm/include/llvm/ADT/Triple.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/ADT/Triple.h Sun Jul 17 19:51:40 2011 (r224145) @@ -95,7 +95,8 @@ public: Solaris, Win32, Haiku, - Minix + Minix, + RTEMS }; enum EnvironmentType { UnknownEnvironment, @@ -237,19 +238,10 @@ public: /// specialized because it is a common query. unsigned getOSMajorVersion() const { unsigned Maj, Min, Micro; - getDarwinNumber(Maj, Min, Micro); + getOSVersion(Maj, Min, Micro); return Maj; } - void getDarwinNumber(unsigned &Major, unsigned &Minor, - unsigned &Micro) const { - return getOSVersion(Major, Minor, Micro); - } - - unsigned getDarwinMajorNumber() const { - return getOSMajorVersion(); - } - /// isOSVersionLT - Helper function for doing comparisons against version /// numbers included in the target triple. bool isOSVersionLT(unsigned Major, unsigned Minor = 0, @@ -275,7 +267,7 @@ public: /// isOSDarwin - Is this a "Darwin" OS (OS X or iOS). bool isOSDarwin() const { - return isMacOSX() ||getOS() == Triple::IOS; + return isMacOSX() || getOS() == Triple::IOS; } /// isOSWindows - Is this a "Windows" OS. @@ -288,7 +280,7 @@ public: /// compatibility, which handles supporting skewed version numbering schemes /// used by the "darwin" triples. unsigned isMacOSXVersionLT(unsigned Major, unsigned Minor = 0, - unsigned Micro = 0) const { + unsigned Micro = 0) const { assert(isMacOSX() && "Not an OS X triple!"); // If this is OS X, expect a sane version number. @@ -299,7 +291,7 @@ public: assert(Major == 10 && "Unexpected major version"); return isOSVersionLT(Minor + 4, Micro, 0); } - + /// @} /// @name Mutators /// @{ Copied: head/contrib/llvm/include/llvm/Analysis/BlockFrequency.h (from r224136, vendor/llvm/dist/include/llvm/Analysis/BlockFrequency.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/llvm/include/llvm/Analysis/BlockFrequency.h Sun Jul 17 19:51:40 2011 (r224145, copy of r224136, vendor/llvm/dist/include/llvm/Analysis/BlockFrequency.h) @@ -0,0 +1,53 @@ +//========-------- BlockFrequency.h - Block Frequency Analysis -------========// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Loops should be simplified before this analysis. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ANALYSIS_BLOCKFREQUENCY_H +#define LLVM_ANALYSIS_BLOCKFREQUENCY_H + +#include "llvm/Pass.h" +#include + +namespace llvm { + +class BranchProbabilityInfo; +template +class BlockFrequencyImpl; + +/// BlockFrequency pass uses BlockFrequencyImpl implementation to estimate +/// IR basic block frequencies. +class BlockFrequency : public FunctionPass { + + BlockFrequencyImpl *BFI; + +public: + static char ID; + + BlockFrequency(); + + ~BlockFrequency(); + + void getAnalysisUsage(AnalysisUsage &AU) const; + + bool runOnFunction(Function &F); + + /// getblockFreq - Return block frequency. Never return 0, value must be + /// positive. Please note that initial frequency is equal to 1024. It means + /// that we should not rely on the value itself, but only on the comparison to + /// the other block frequencies. We do this to avoid using of the floating + /// points. + uint32_t getBlockFreq(BasicBlock *BB); +}; + +} + +#endif Copied: head/contrib/llvm/include/llvm/Analysis/BlockFrequencyImpl.h (from r224136, vendor/llvm/dist/include/llvm/Analysis/BlockFrequencyImpl.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/contrib/llvm/include/llvm/Analysis/BlockFrequencyImpl.h Sun Jul 17 19:51:40 2011 (r224145, copy of r224136, vendor/llvm/dist/include/llvm/Analysis/BlockFrequencyImpl.h) @@ -0,0 +1,349 @@ +//===---- BlockFrequencyImpl.h - Machine Block Frequency Implementation ---===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Shared implementation of BlockFrequency for IR and Machine Instructions. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_ANALYSIS_BLOCKFREQUENCYIMPL_H +#define LLVM_ANALYSIS_BLOCKFREQUENCYIMPL_H + +#include "llvm/BasicBlock.h" +#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/PostOrderIterator.h" +#include "llvm/CodeGen/MachineBasicBlock.h" +#include "llvm/CodeGen/MachineFunction.h" +#include "llvm/Support/BranchProbability.h" +#include "llvm/Support/Debug.h" +#include "llvm/Support/raw_ostream.h" +#include +#include +#include + +namespace llvm { + + +class BlockFrequency; +class MachineBlockFrequency; + +/// BlockFrequencyImpl implements block frequency algorithm for IR and +/// Machine Instructions. Algorithm starts with value 1024 (START_FREQ) +/// for the entry block and then propagates frequencies using branch weights +/// from (Machine)BranchProbabilityInfo. LoopInfo is not required because +/// algorithm can find "backedges" by itself. +template +class BlockFrequencyImpl { + + DenseMap Freqs; + + BlockProbInfoT *BPI; + + FunctionT *Fn; + + typedef GraphTraits< Inverse > GT; + + static const uint32_t START_FREQ = 1024; + + std::string getBlockName(BasicBlock *BB) const { + return BB->getNameStr(); + } + + std::string getBlockName(MachineBasicBlock *MBB) const { + std::stringstream ss; + ss << "BB#" << MBB->getNumber(); + + if (const BasicBlock *BB = MBB->getBasicBlock()) + ss << " derived from LLVM BB " << BB->getNameStr(); + + return ss.str(); + } + + void setBlockFreq(BlockT *BB, uint32_t Freq) { + Freqs[BB] = Freq; + DEBUG(dbgs() << "Frequency(" << getBlockName(BB) << ") = " << Freq << "\n"); + } + + /// getEdgeFreq - Return edge frequency based on SRC frequency and Src -> Dst + /// edge probability. + uint32_t getEdgeFreq(BlockT *Src, BlockT *Dst) const { + BranchProbability Prob = BPI->getEdgeProbability(Src, Dst); + uint64_t N = Prob.getNumerator(); + uint64_t D = Prob.getDenominator(); + uint64_t Res = (N * getBlockFreq(Src)) / D; + + assert(Res <= UINT32_MAX); + return (uint32_t) Res; + } + + /// incBlockFreq - Increase BB block frequency by FREQ. + /// + void incBlockFreq(BlockT *BB, uint32_t Freq) { + Freqs[BB] += Freq; + DEBUG(dbgs() << "Frequency(" << getBlockName(BB) << ") += " << Freq + << " --> " << Freqs[BB] << "\n"); + } + + /// divBlockFreq - Divide BB block frequency by PROB. If Prob = 0 do nothing. + /// + void divBlockFreq(BlockT *BB, BranchProbability Prob) { + uint64_t N = Prob.getNumerator(); + assert(N && "Illegal division by zero!"); + uint64_t D = Prob.getDenominator(); + uint64_t Freq = (Freqs[BB] * D) / N; + + // Should we assert it? + if (Freq > UINT32_MAX) + Freq = UINT32_MAX; + + Freqs[BB] = (uint32_t) Freq; + DEBUG(dbgs() << "Frequency(" << getBlockName(BB) << ") /= (" << Prob + << ") --> " << Freqs[BB] << "\n"); + } + + // All blocks in postorder. + std::vector POT; + + // Map Block -> Position in reverse-postorder list. + DenseMap RPO; + + // Cycle Probability for each bloch. + DenseMap CycleProb; + + // (reverse-)postorder traversal iterators. + typedef typename std::vector::iterator pot_iterator; + typedef typename std::vector::reverse_iterator rpot_iterator; + + pot_iterator pot_begin() { return POT.begin(); } + pot_iterator pot_end() { return POT.end(); } + + rpot_iterator rpot_begin() { return POT.rbegin(); } + rpot_iterator rpot_end() { return POT.rend(); } + + rpot_iterator rpot_at(BlockT *BB) { + rpot_iterator I = rpot_begin(); + unsigned idx = RPO[BB]; + assert(idx); + std::advance(I, idx - 1); + + assert(*I == BB); + return I; + } + + + /// Return a probability of getting to the DST block through SRC->DST edge. + /// + BranchProbability getBackEdgeProbability(BlockT *Src, BlockT *Dst) const { + uint32_t N = getEdgeFreq(Src, Dst); + uint32_t D = getBlockFreq(Dst); + + return BranchProbability(N, D); + } + + /// isReachable - Returns if BB block is reachable from the entry. + /// + bool isReachable(BlockT *BB) { + return RPO.count(BB); + } + + /// isBackedge - Return if edge Src -> Dst is a backedge. + /// + bool isBackedge(BlockT *Src, BlockT *Dst) { + assert(isReachable(Src)); + assert(isReachable(Dst)); + + unsigned a = RPO[Src]; + unsigned b = RPO[Dst]; + + return a > b; + } + + /// getSingleBlockPred - return single BB block predecessor or NULL if + /// BB has none or more predecessors. + BlockT *getSingleBlockPred(BlockT *BB) { + typename GT::ChildIteratorType + PI = GraphTraits< Inverse >::child_begin(BB), + PE = GraphTraits< Inverse >::child_end(BB); + + if (PI == PE) + return 0; + + BlockT *Pred = *PI; + + ++PI; + if (PI != PE) + return 0; + + return Pred; + } + + void doBlock(BlockT *BB, BlockT *LoopHead, + SmallPtrSet &BlocksInLoop) { + + DEBUG(dbgs() << "doBlock(" << getBlockName(BB) << ")\n"); + setBlockFreq(BB, 0); + + if (BB == LoopHead) { + setBlockFreq(BB, START_FREQ); + return; + } + + if(BlockT *Pred = getSingleBlockPred(BB)) { + if (BlocksInLoop.count(Pred)) + setBlockFreq(BB, getEdgeFreq(Pred, BB)); + // TODO: else? irreducible, ignore it for now. + return; + } + + bool isInLoop = false; + bool isLoopHead = false; + + for (typename GT::ChildIteratorType + PI = GraphTraits< Inverse >::child_begin(BB), + PE = GraphTraits< Inverse >::child_end(BB); + PI != PE; ++PI) { + BlockT *Pred = *PI; + + if (isReachable(Pred) && isBackedge(Pred, BB)) { + isLoopHead = true; + } else if (BlocksInLoop.count(Pred)) { + incBlockFreq(BB, getEdgeFreq(Pred, BB)); + isInLoop = true; + } + // TODO: else? irreducible. + } + + if (!isInLoop) + return; + + if (!isLoopHead) + return; + + assert(START_FREQ >= CycleProb[BB]); + uint32_t CProb = CycleProb[BB]; + uint32_t Numerator = START_FREQ - CProb ? START_FREQ - CProb : 1; + divBlockFreq(BB, BranchProbability(Numerator, START_FREQ)); + } + + /// doLoop - Propagate block frequency down throught the loop. + void doLoop(BlockT *Head, BlockT *Tail) { + DEBUG(dbgs() << "doLoop(" << getBlockName(Head) << ", " + << getBlockName(Tail) << ")\n"); + + SmallPtrSet BlocksInLoop; + + for (rpot_iterator I = rpot_at(Head), E = rpot_end(); I != E; ++I) { + BlockT *BB = *I; + doBlock(BB, Head, BlocksInLoop); + + BlocksInLoop.insert(BB); + } + + // Compute loop's cyclic probability using backedges probabilities. + for (typename GT::ChildIteratorType + PI = GraphTraits< Inverse >::child_begin(Head), + PE = GraphTraits< Inverse >::child_end(Head); + PI != PE; ++PI) { + BlockT *Pred = *PI; + assert(Pred); + if (isReachable(Pred) && isBackedge(Pred, Head)) { + BranchProbability Prob = getBackEdgeProbability(Pred, Head); + uint64_t N = Prob.getNumerator(); + uint64_t D = Prob.getDenominator(); + uint64_t Res = (N * START_FREQ) / D; + + assert(Res <= UINT32_MAX); + CycleProb[Head] += (uint32_t) Res; + } + } + } + + friend class BlockFrequency; + friend class MachineBlockFrequency; + + void doFunction(FunctionT *fn, BlockProbInfoT *bpi) { + Fn = fn; + BPI = bpi; + + // Clear everything. + RPO.clear(); + POT.clear(); + CycleProb.clear(); + Freqs.clear(); + + BlockT *EntryBlock = fn->begin(); + + copy(po_begin(EntryBlock), po_end(EntryBlock), back_inserter(POT)); + + unsigned RPOidx = 0; + for (rpot_iterator I = rpot_begin(), E = rpot_end(); I != E; ++I) { + BlockT *BB = *I; + RPO[BB] = ++RPOidx; + DEBUG(dbgs() << "RPO[" << getBlockName(BB) << "] = " << RPO[BB] << "\n"); + } + + // Travel over all blocks in postorder. + for (pot_iterator I = pot_begin(), E = pot_end(); I != E; ++I) { + BlockT *BB = *I; + BlockT *LastTail = 0; + DEBUG(dbgs() << "POT: " << getBlockName(BB) << "\n"); + + for (typename GT::ChildIteratorType + PI = GraphTraits< Inverse >::child_begin(BB), + PE = GraphTraits< Inverse >::child_end(BB); + PI != PE; ++PI) { + + BlockT *Pred = *PI; + if (isReachable(Pred) && isBackedge(Pred, BB) + && (!LastTail || RPO[Pred] > RPO[LastTail])) + LastTail = Pred; + } + + if (LastTail) + doLoop(BB, LastTail); + } + + // At the end assume the whole function as a loop, and travel over it once + // again. + doLoop(*(rpot_begin()), *(pot_begin())); + } + +public: + /// getBlockFreq - Return block frequency. Never return 0, value must be + /// positive. + uint32_t getBlockFreq(BlockT *BB) const { + typename DenseMap::const_iterator I = Freqs.find(BB); + if (I != Freqs.end()) + return I->second ? I->second : 1; + return 1; + } + + void print(raw_ostream &OS) const { + OS << "\n\n---- Block Freqs ----\n"; + for (typename FunctionT::iterator I = Fn->begin(), E = Fn->end(); I != E;) { + BlockT *BB = I++; + OS << " " << getBlockName(BB) << " = " << getBlockFreq(BB) << "\n"; + + for (typename GraphTraits::ChildIteratorType + SI = GraphTraits::child_begin(BB), + SE = GraphTraits::child_end(BB); SI != SE; ++SI) { + BlockT *Succ = *SI; + OS << " " << getBlockName(BB) << " -> " << getBlockName(Succ) + << " = " << getEdgeFreq(BB, Succ) << "\n"; + } + } + } + + void dump() const { + print(dbgs()); + } +}; + +} + +#endif Modified: head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/Analysis/BranchProbabilityInfo.h Sun Jul 17 19:51:40 2011 (r224145) @@ -15,8 +15,9 @@ #define LLVM_ANALYSIS_BRANCHPROBABILITYINFO_H #include "llvm/InitializePasses.h" +#include "llvm/Pass.h" +#include "llvm/ADT/DenseMap.h" #include "llvm/Support/BranchProbability.h" -#include "llvm/Analysis/LoopInfo.h" namespace llvm { @@ -25,6 +26,11 @@ class raw_ostream; class BranchProbabilityInfo : public FunctionPass { // Default weight value. Used when we don't have information about the edge. + // TODO: DEFAULT_WEIGHT makes sense during static predication, when none of + // the successors have a weight yet. But it doesn't make sense when providing + // weight to an edge that may have siblings with non-zero weights. This can + // be handled various ways, but it's probably fine for an edge with unknown + // weight to just "inherit" the non-zero weight of an adjacent successor. static const uint32_t DEFAULT_WEIGHT = 16; typedef std::pair Edge; @@ -41,10 +47,7 @@ public: initializeBranchProbabilityInfoPass(*PassRegistry::getPassRegistry()); } - void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired(); - AU.setPreservesAll(); - } + void getAnalysisUsage(AnalysisUsage &AU) const; bool runOnFunction(Function &F); Modified: head/contrib/llvm/include/llvm/Analysis/DIBuilder.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/DIBuilder.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/Analysis/DIBuilder.h Sun Jul 17 19:51:40 2011 (r224145) @@ -135,6 +135,7 @@ namespace llvm { unsigned Flags); /// createMemberType - Create debugging information entry for a member. + /// @param Scope Member scope. /// @param Name Member name. /// @param File File where this member is defined. /// @param LineNo Line number. @@ -143,7 +144,7 @@ namespace llvm { /// @param OffsetInBits Member offset. /// @param Flags Flags to encode member attribute, e.g. private /// @param Ty Parent type. - DIType createMemberType(StringRef Name, DIFile File, + DIType createMemberType(DIDescriptor Scope, StringRef Name, DIFile File, unsigned LineNo, uint64_t SizeInBits, uint64_t AlignInBits, uint64_t OffsetInBits, unsigned Flags, DIType Ty); Modified: head/contrib/llvm/include/llvm/Analysis/IVUsers.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/IVUsers.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/Analysis/IVUsers.h Sun Jul 17 19:51:40 2011 (r224145) @@ -37,8 +37,8 @@ class TargetData; class IVStrideUse : public CallbackVH, public ilist_node { friend class IVUsers; public: - IVStrideUse(IVUsers *P, Instruction* U, Value *O, Value *PN) - : CallbackVH(U), Parent(P), OperandValToReplace(O), Phi(PN) { + IVStrideUse(IVUsers *P, Instruction* U, Value *O) + : CallbackVH(U), Parent(P), OperandValToReplace(O) { } /// getUser - Return the user instruction for this use. @@ -51,11 +51,6 @@ public: setValPtr(NewUser); } - /// getPhi - Return the phi node that represents this IV. - PHINode *getPhi() const { - return cast(Phi); - } - /// getOperandValToReplace - Return the Value of the operand in the user /// instruction that this IVStrideUse is representing. Value *getOperandValToReplace() const { @@ -86,9 +81,6 @@ private: /// that this IVStrideUse is representing. WeakVH OperandValToReplace; - /// Phi - The loop header phi that represents this IV. - WeakVH Phi; - /// PostIncLoops - The set of loops for which Expr has been adjusted to /// use post-inc mode. This corresponds with SCEVExpander's post-inc concept. PostIncLoopSet PostIncLoops; @@ -151,9 +143,9 @@ public: /// AddUsersIfInteresting - Inspect the specified Instruction. If it is a /// reducible SCEV, recursively add its users to the IVUsesByStride set and /// return true. Otherwise, return false. - bool AddUsersIfInteresting(Instruction *I, PHINode *Phi); + bool AddUsersIfInteresting(Instruction *I); - IVStrideUse &AddUser(Instruction *User, Value *Operand, PHINode *Phi); + IVStrideUse &AddUser(Instruction *User, Value *Operand); /// getReplacementExpr - Return a SCEV expression which computes the /// value of the OperandValToReplace of the given IVStrideUse. Modified: head/contrib/llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/Analysis/MemoryDependenceAnalysis.h Sun Jul 17 19:51:40 2011 (r224145) @@ -90,18 +90,27 @@ namespace llvm { /// get methods: These are static ctor methods for creating various /// MemDepResult kinds. static MemDepResult getDef(Instruction *Inst) { + assert(Inst && "Def requires inst"); return MemDepResult(PairTy(Inst, Def)); } static MemDepResult getClobber(Instruction *Inst) { + assert(Inst && "Clobber requires inst"); return MemDepResult(PairTy(Inst, Clobber)); } static MemDepResult getNonLocal() { return MemDepResult(PairTy(0, NonLocal)); } + static MemDepResult getUnknown() { + return MemDepResult(PairTy(0, Clobber)); + } /// isClobber - Return true if this MemDepResult represents a query that is /// a instruction clobber dependency. - bool isClobber() const { return Value.getInt() == Clobber; } + bool isClobber() const { return Value.getInt() == Clobber && getInst(); } + + /// isUnknown - Return true if this MemDepResult represents a query which + /// cannot and/or will not be computed. + bool isUnknown() const { return Value.getInt() == Clobber && !getInst(); } /// isDef - Return true if this MemDepResult represents a query that is /// a instruction definition dependency. Modified: head/contrib/llvm/include/llvm/Analysis/Passes.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/Passes.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/Analysis/Passes.h Sun Jul 17 19:51:40 2011 (r224145) @@ -88,6 +88,13 @@ namespace llvm { //===--------------------------------------------------------------------===// // + // createObjCARCAliasAnalysisPass - This pass implements ObjC-ARC-based + // alias analysis. + // + ImmutablePass *createObjCARCAliasAnalysisPass(); + + //===--------------------------------------------------------------------===// + // // createProfileLoaderPass - This pass loads information from a profile dump // file. // Modified: head/contrib/llvm/include/llvm/Analysis/ScalarEvolutionExpander.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/ScalarEvolutionExpander.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/Analysis/ScalarEvolutionExpander.h Sun Jul 17 19:51:40 2011 (r224145) @@ -30,6 +30,10 @@ namespace llvm { /// memory. class SCEVExpander : public SCEVVisitor { ScalarEvolution &SE; + + // New instructions receive a name to identifies them with the current pass. + const char* IVName; + std::map, AssertingVH > InsertedExpressions; std::set > InsertedValues; @@ -67,9 +71,9 @@ namespace llvm { public: /// SCEVExpander - Construct a SCEVExpander in "canonical" mode. - explicit SCEVExpander(ScalarEvolution &se) - : SE(se), IVIncInsertLoop(0), CanonicalMode(true), - Builder(se.getContext(), TargetFolder(se.TD)) {} + explicit SCEVExpander(ScalarEvolution &se, const char *name) + : SE(se), IVName(name), IVIncInsertLoop(0), IVIncInsertPos(0), + CanonicalMode(true), Builder(se.getContext(), TargetFolder(se.TD)) {} /// clear - Erase the contents of the InsertedExpressions map so that users /// trying to expand the same expression into multiple BasicBlocks or Modified: head/contrib/llvm/include/llvm/Analysis/ValueTracking.h ============================================================================== --- head/contrib/llvm/include/llvm/Analysis/ValueTracking.h Sun Jul 17 19:24:54 2011 (r224144) +++ head/contrib/llvm/include/llvm/Analysis/ValueTracking.h Sun Jul 17 19:51:40 2011 (r224145) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 20:02:29 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A7504106566B; Sun, 17 Jul 2011 20:02:29 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7C0408FC08; Sun, 17 Jul 2011 20:02:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HK2TgK088064; Sun, 17 Jul 2011 20:02:29 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HK2Tak088063; Sun, 17 Jul 2011 20:02:29 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201107172002.p6HK2Tak088063@svn.freebsd.org> From: Hiroki Sato Date: Sun, 17 Jul 2011 20:02:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224146 - in stable/8: share/man/man4 sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 20:02:29 -0000 Author: hrs Date: Sun Jul 17 20:02:29 2011 New Revision: 224146 URL: http://svn.freebsd.org/changeset/base/224146 Log: Fix svn:mergeinfo for merge of r216057. Modified: Directory Properties: stable/8/share/man/man4/ (props changed) stable/8/sys/ (props changed) From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 20:35:31 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 21ACD1065670; Sun, 17 Jul 2011 20:35:31 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1056D8FC12; Sun, 17 Jul 2011 20:35:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HKZUow089094; Sun, 17 Jul 2011 20:35:30 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HKZUCM089092; Sun, 17 Jul 2011 20:35:30 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201107172035.p6HKZUCM089092@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sun, 17 Jul 2011 20:35:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224147 - head/sys/geom X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 20:35:31 -0000 Author: pjd Date: Sun Jul 17 20:35:30 2011 New Revision: 224147 URL: http://svn.freebsd.org/changeset/base/224147 Log: Add some spare fields to the g_class and g_geom structures needed to implement direct I/O handling and provider's property changes handling. Modified: head/sys/geom/geom.h Modified: head/sys/geom/geom.h ============================================================================== --- head/sys/geom/geom.h Sun Jul 17 20:02:29 2011 (r224146) +++ head/sys/geom/geom.h Sun Jul 17 20:35:30 2011 (r224147) @@ -89,6 +89,7 @@ typedef void g_dumpconf_t (struct sbuf * struct g_class { const char *name; u_int version; + u_int spare0; g_taste_t *taste; g_config_t *config; g_ctl_req_t *ctlreq; @@ -105,6 +106,8 @@ struct g_class { g_access_t *access; g_orphan_t *orphan; g_ioctl_t *ioctl; + void *spare1; + void *spare2; /* * The remaining elements are private */ @@ -134,6 +137,8 @@ struct g_geom { g_access_t *access; g_orphan_t *orphan; g_ioctl_t *ioctl; + void *spare0; + void *spare1; void *softc; unsigned flags; #define G_GEOM_WITHER 1 From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 20:47:35 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3E863106566B; Sun, 17 Jul 2011 20:47:35 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2DB108FC28; Sun, 17 Jul 2011 20:47:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HKlZ2Q089500; Sun, 17 Jul 2011 20:47:35 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HKlZ3w089498; Sun, 17 Jul 2011 20:47:35 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201107172047.p6HKlZ3w089498@svn.freebsd.org> From: Glen Barber Date: Sun, 17 Jul 2011 20:47:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224148 - head/usr.sbin/rtadvctl X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 20:47:35 -0000 Author: gjb (doc committer) Date: Sun Jul 17 20:47:34 2011 New Revision: 224148 URL: http://svn.freebsd.org/changeset/base/224148 Log: Add a closing '.El' tag. Found by: manlint Modified: head/usr.sbin/rtadvctl/rtadvctl.8 Modified: head/usr.sbin/rtadvctl/rtadvctl.8 ============================================================================== --- head/usr.sbin/rtadvctl/rtadvctl.8 Sun Jul 17 20:35:30 2011 (r224147) +++ head/usr.sbin/rtadvctl/rtadvctl.8 Sun Jul 17 20:47:34 2011 (r224148) @@ -89,6 +89,7 @@ It will take at most nine seconds. .It show Op interfaces... Displays information on Router Advertisement messages being sent on each interface. +.El .Sh SEE ALSO .Xr rtadvd 8 , .Xr rtadvd.conf 5 From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 20:49:39 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4B8BE106566B; Sun, 17 Jul 2011 20:49:39 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 383268FC12; Sun, 17 Jul 2011 20:49:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HKndCt089606; Sun, 17 Jul 2011 20:49:39 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HKndJj089602; Sun, 17 Jul 2011 20:49:39 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201107172049.p6HKndJj089602@svn.freebsd.org> From: Rick Macklem Date: Sun, 17 Jul 2011 20:49:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224149 - in stable/8/sys/fs: nfs nfsclient X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 20:49:39 -0000 Author: rmacklem Date: Sun Jul 17 20:49:38 2011 New Revision: 224149 URL: http://svn.freebsd.org/changeset/base/224149 Log: MFC: r223747 Modify the new NFSv4 client so that it appends a file handle to the lock_owner4 string that goes on the wire. Also, add code to do a ReleaseLockOwner Op on the lock_owner4 string before a Close. Apparently not all NFSv4 servers handle multiple instances of the same lock_owner4 string, at least not in a compatible way. This patch avoids having multiple instances, except for one unusual case, which will be fixed by a future commit. Found at the recent NFSv4 interoperability Bakeathon. Modified: stable/8/sys/fs/nfs/nfs_var.h stable/8/sys/fs/nfsclient/nfs_clrpcops.c stable/8/sys/fs/nfsclient/nfs_clstate.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/fs/nfs/nfs_var.h ============================================================================== --- stable/8/sys/fs/nfs/nfs_var.h Sun Jul 17 20:47:34 2011 (r224148) +++ stable/8/sys/fs/nfs/nfs_var.h Sun Jul 17 20:49:38 2011 (r224149) @@ -438,6 +438,7 @@ int nfscl_getcl(vnode_t, struct ucred *, struct nfsclclient *nfscl_findcl(struct nfsmount *); void nfscl_clientrelease(struct nfsclclient *); void nfscl_freelock(struct nfscllock *, int); +void nfscl_freelockowner(struct nfscllockowner *, int); int nfscl_getbytelock(vnode_t, u_int64_t, u_int64_t, short, struct ucred *, NFSPROC_T *, struct nfsclclient *, int, void *, int, u_int8_t *, u_int8_t *, struct nfscllockowner **, int *, int *); Modified: stable/8/sys/fs/nfsclient/nfs_clrpcops.c ============================================================================== --- stable/8/sys/fs/nfsclient/nfs_clrpcops.c Sun Jul 17 20:47:34 2011 (r224148) +++ stable/8/sys/fs/nfsclient/nfs_clrpcops.c Sun Jul 17 20:49:38 2011 (r224149) @@ -585,7 +585,7 @@ APPLESTATIC void nfsrpc_doclose(struct nfsmount *nmp, struct nfsclopen *op, NFSPROC_T *p) { struct nfsrv_descript nfsd, *nd = &nfsd; - struct nfscllockowner *lp; + struct nfscllockowner *lp, *nlp; struct nfscllock *lop, *nlop; struct ucred *tcred; u_int64_t off = 0, len = 0; @@ -642,6 +642,14 @@ nfsrpc_doclose(struct nfsmount *nmp, str } nfscl_freelock(lop, 0); } + /* + * Do a ReleaseLockOwner. + * The lock owner name nfsl_owner may be used by other opens for + * other files but the lock_owner4 name that nfsrpc_rellockown() + * puts on the wire has the file handle for this file appended + * to it, so it can be done now. + */ + (void)nfsrpc_rellockown(nmp, lp, tcred, p); } /* @@ -659,20 +667,8 @@ nfsrpc_doclose(struct nfsmount *nmp, str NFSLOCKCLSTATE(); nfscl_lockunlock(&op->nfso_own->nfsow_rwlock); - /* - * Move the lockowner to nfsc_defunctlockowner, - * so the Renew thread will do the ReleaseLockOwner - * Op on it later. There might still be other - * opens using the same lockowner name. - */ - lp = LIST_FIRST(&op->nfso_lock); - if (lp != NULL) { - while (LIST_NEXT(lp, nfsl_list) != NULL) - lp = LIST_NEXT(lp, nfsl_list); - LIST_PREPEND(&nmp->nm_clp->nfsc_defunctlockowner, - &op->nfso_lock, lp, nfsl_list); - LIST_INIT(&op->nfso_lock); - } + LIST_FOREACH_SAFE(lp, &op->nfso_lock, nfsl_list, nlp) + nfscl_freelockowner(lp, 0); nfscl_freeopen(op, 0); NFSUNLOCKCLSTATE(); NFSFREECRED(tcred); @@ -3629,7 +3625,8 @@ nfsrpc_lockt(struct nfsrv_descript *nd, { u_int32_t *tl; int error, type, size; - u_int8_t own[NFSV4CL_LOCKNAMELEN]; + uint8_t own[NFSV4CL_LOCKNAMELEN + NFSX_V4FHMAX]; + struct nfsnode *np; NFSCL_REQSTART(nd, NFSPROC_LOCKT, vp); NFSM_BUILD(tl, u_int32_t *, 7 * NFSX_UNSIGNED); @@ -3644,7 +3641,10 @@ nfsrpc_lockt(struct nfsrv_descript *nd, *tl++ = clp->nfsc_clientid.lval[0]; *tl = clp->nfsc_clientid.lval[1]; nfscl_filllockowner(id, own, flags); - (void) nfsm_strtom(nd, own, NFSV4CL_LOCKNAMELEN); + np = VTONFS(vp); + NFSBCOPY(np->n_fhp->nfh_fh, &own[NFSV4CL_LOCKNAMELEN], + np->n_fhp->nfh_len); + (void)nfsm_strtom(nd, own, NFSV4CL_LOCKNAMELEN + np->n_fhp->nfh_len); error = nfscl_request(nd, vp, p, cred, NULL); if (error) return (error); @@ -3744,6 +3744,7 @@ nfsrpc_lock(struct nfsrv_descript *nd, s { u_int32_t *tl; int error, size; + uint8_t own[NFSV4CL_LOCKNAMELEN + NFSX_V4FHMAX]; nfscl_reqstart(nd, NFSPROC_LOCK, nmp, nfhp, fhlen, NULL); NFSM_BUILD(tl, u_int32_t *, 7 * NFSX_UNSIGNED); @@ -3768,7 +3769,9 @@ nfsrpc_lock(struct nfsrv_descript *nd, s *tl++ = txdr_unsigned(lp->nfsl_seqid); *tl++ = lp->nfsl_open->nfso_own->nfsow_clp->nfsc_clientid.lval[0]; *tl = lp->nfsl_open->nfso_own->nfsow_clp->nfsc_clientid.lval[1]; - (void) nfsm_strtom(nd, lp->nfsl_owner, NFSV4CL_LOCKNAMELEN); + NFSBCOPY(lp->nfsl_owner, own, NFSV4CL_LOCKNAMELEN); + NFSBCOPY(nfhp, &own[NFSV4CL_LOCKNAMELEN], fhlen); + (void)nfsm_strtom(nd, own, NFSV4CL_LOCKNAMELEN + fhlen); } else { *tl = newnfs_false; NFSM_BUILD(tl, u_int32_t *, NFSX_STATEID + NFSX_UNSIGNED); @@ -4029,12 +4032,17 @@ nfsrpc_rellockown(struct nfsmount *nmp, struct nfsrv_descript nfsd, *nd = &nfsd; u_int32_t *tl; int error; + uint8_t own[NFSV4CL_LOCKNAMELEN + NFSX_V4FHMAX]; nfscl_reqstart(nd, NFSPROC_RELEASELCKOWN, nmp, NULL, 0, NULL); NFSM_BUILD(tl, u_int32_t *, 2 * NFSX_UNSIGNED); *tl++ = nmp->nm_clp->nfsc_clientid.lval[0]; *tl = nmp->nm_clp->nfsc_clientid.lval[1]; - (void) nfsm_strtom(nd, lp->nfsl_owner, NFSV4CL_LOCKNAMELEN); + NFSBCOPY(lp->nfsl_owner, own, NFSV4CL_LOCKNAMELEN); + NFSBCOPY(lp->nfsl_open->nfso_fh, &own[NFSV4CL_LOCKNAMELEN], + lp->nfsl_open->nfso_fhlen); + (void)nfsm_strtom(nd, own, NFSV4CL_LOCKNAMELEN + + lp->nfsl_open->nfso_fhlen); nd->nd_flag |= ND_USEGSSNAME; error = newnfs_request(nd, nmp, NULL, &nmp->nm_sockreq, NULL, p, cred, NFS_PROG, NFS_VER4, NULL, 1, NULL); Modified: stable/8/sys/fs/nfsclient/nfs_clstate.c ============================================================================== --- stable/8/sys/fs/nfsclient/nfs_clstate.c Sun Jul 17 20:47:34 2011 (r224148) +++ stable/8/sys/fs/nfsclient/nfs_clstate.c Sun Jul 17 20:49:38 2011 (r224149) @@ -114,7 +114,6 @@ static struct nfscldeleg *nfscl_finddele int); static int nfscl_checkconflict(struct nfscllockownerhead *, struct nfscllock *, u_int8_t *, struct nfscllock **); -static void nfscl_freelockowner(struct nfscllockowner *, int); static void nfscl_freealllocks(struct nfscllockownerhead *, int); static int nfscl_localconflict(struct nfsclclient *, u_int8_t *, int, struct nfscllock *, u_int8_t *, struct nfscldeleg *, struct nfscllock **); @@ -1450,7 +1449,7 @@ nfscl_freeopenowner(struct nfsclowner *o /* * Free up a byte range lock owner structure. */ -static void +APPLESTATIC void nfscl_freelockowner(struct nfscllockowner *lp, int local) { struct nfscllock *lop, *nlop; From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 21:08:16 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CE801106566B; Sun, 17 Jul 2011 21:08:16 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BBEE88FC13; Sun, 17 Jul 2011 21:08:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HL8GwN090280; Sun, 17 Jul 2011 21:08:16 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HL8Gkd090278; Sun, 17 Jul 2011 21:08:16 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201107172108.p6HL8Gkd090278@svn.freebsd.org> From: Ryan Stone Date: Sun, 17 Jul 2011 21:08:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224150 - head/sbin/fdisk X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 21:08:16 -0000 Author: rstone Date: Sun Jul 17 21:08:16 2011 New Revision: 224150 URL: http://svn.freebsd.org/changeset/base/224150 Log: The MBR uses a 32-bit unsigned integer to store the size of a slice, but fdisk(1) internally uses a signed int. Should a user attempt to specify a slice containing more than 2^31 - 1 sectors, an error will be reported on systems with sizeof(long) == 4 and the slice size will be silently truncated on systems with sizeof(long) > 4. Instead use an unsigned long to store the slice size in fdisk(1). This allows the user to specify a slice size up to the maximum permitted by the MBR on-disk format and does not have any problems with silent truncation should the use specify an slice size larger than 2^32 on systems with sizeof(long) > 4. Submitted by: Mark Johnston (markjdb AT gmail DOT com) MFC after: 2 weeks Modified: head/sbin/fdisk/fdisk.c Modified: head/sbin/fdisk/fdisk.c ============================================================================== --- head/sbin/fdisk/fdisk.c Sun Jul 17 20:49:38 2011 (r224149) +++ head/sbin/fdisk/fdisk.c Sun Jul 17 21:08:16 2011 (r224150) @@ -108,9 +108,9 @@ typedef struct cmd { char cmd; int n_args; struct arg { - char argtype; - int arg_val; - char *arg_str; + char argtype; + unsigned long arg_val; + char * arg_str; } args[MAX_ARGS]; } CMD; @@ -990,7 +990,7 @@ parse_config_line(char *line, CMD *comma if (isalpha(*cp)) command->args[command->n_args].argtype = *cp++; end = NULL; - command->args[command->n_args].arg_val = strtol(cp, &end, 0); + command->args[command->n_args].arg_val = strtoul(cp, &end, 0); if (cp == end || (!isspace(*end) && *end != '\0')) { char ch; end = cp; From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 21:15:21 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 541E7106564A; Sun, 17 Jul 2011 21:15:21 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 382DB8FC14; Sun, 17 Jul 2011 21:15:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HLFLJh090540; Sun, 17 Jul 2011 21:15:21 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HLFLxq090534; Sun, 17 Jul 2011 21:15:21 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201107172115.p6HLFLxq090534@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Sun, 17 Jul 2011 21:15:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224151 - in head/sys: net netinet X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 21:15:21 -0000 Author: bz Date: Sun Jul 17 21:15:20 2011 New Revision: 224151 URL: http://svn.freebsd.org/changeset/base/224151 Log: Add spares to the network stack for FreeBSD-9: - TCP keep* timers - TCP UTO (adjust from what was there already) - netmap - route caching - user cookie (temporary to allow for the real fix) Slightly re-shuffle struct ifnet moving fields out of the middle of spares and to better align. Discussed with: rwatson (slightly earlier version) Modified: head/sys/net/if_var.h head/sys/net/radix.h head/sys/netinet/in_pcb.h head/sys/netinet/tcp_syncache.h head/sys/netinet/tcp_var.h Modified: head/sys/net/if_var.h ============================================================================== --- head/sys/net/if_var.h Sun Jul 17 21:08:16 2011 (r224150) +++ head/sys/net/if_var.h Sun Jul 17 21:15:20 2011 (r224151) @@ -195,8 +195,9 @@ struct ifnet { /* protected by if_addr_mtx */ void *if_pf_kif; void *if_lagg; /* lagg glue */ - u_char if_alloctype; /* if_type at time of allocation */ + char *if_description; /* interface description */ u_int if_fib; /* interface FIB */ + u_char if_alloctype; /* if_type at time of allocation */ /* * Spare fields are added so that we can modify sensitive data @@ -204,9 +205,8 @@ struct ifnet { * be used with care where binary compatibility is required. */ char if_cspare[3]; - char *if_description; /* interface description */ - void *if_pspare[7]; int if_ispare[4]; + void *if_pspare[8]; /* 1 netmap, 7 TDB */ }; typedef void if_init_f_t(void *); Modified: head/sys/net/radix.h ============================================================================== --- head/sys/net/radix.h Sun Jul 17 21:08:16 2011 (r224150) +++ head/sys/net/radix.h Sun Jul 17 21:15:20 2011 (r224151) @@ -132,6 +132,7 @@ struct radix_node_head { (struct radix_node *rn, struct radix_node_head *head); struct radix_node rnh_nodes[3]; /* empty tree for common case */ int rnh_multipath; /* multipath capable ? */ + u_int rnh_spare; /* route caching */ #ifdef _KERNEL struct rwlock rnh_lock; /* locks entire radix tree */ #endif Modified: head/sys/netinet/in_pcb.h ============================================================================== --- head/sys/netinet/in_pcb.h Sun Jul 17 21:08:16 2011 (r224150) +++ head/sys/netinet/in_pcb.h Sun Jul 17 21:15:20 2011 (r224151) @@ -179,8 +179,9 @@ struct inpcb { u_char inp_ip_minttl; /* (i) minimum TTL or drop */ uint32_t inp_flowid; /* (x) flow id / queue id */ u_int inp_refcount; /* (i) refcount */ - void *inp_pspare[4]; /* (x) rtentry / general use */ - u_int inp_ispare[4]; /* general use */ + void *inp_pspare[5]; /* (x) route caching / general use */ + u_int inp_ispare[6]; /* (x) route caching / user cookie / + * general use */ /* Local and foreign ports, local and foreign addr. */ struct in_conninfo inp_inc; /* (i/p) list for PCB's local port */ Modified: head/sys/netinet/tcp_syncache.h ============================================================================== --- head/sys/netinet/tcp_syncache.h Sun Jul 17 21:08:16 2011 (r224150) +++ head/sys/netinet/tcp_syncache.h Sun Jul 17 21:15:20 2011 (r224151) @@ -81,6 +81,8 @@ struct syncache { #endif struct label *sc_label; /* MAC label reference */ struct ucred *sc_cred; /* cred cache for jail checks */ + + u_int32_t sc_spare[2]; /* UTO */ }; /* Modified: head/sys/netinet/tcp_var.h ============================================================================== --- head/sys/netinet/tcp_var.h Sun Jul 17 21:08:16 2011 (r224150) +++ head/sys/netinet/tcp_var.h Sun Jul 17 21:15:20 2011 (r224151) @@ -203,9 +203,9 @@ struct tcpcb { struct cc_var *ccv; /* congestion control specific vars */ struct osd *osd; /* storage for Khelp module data */ - int t_ispare; /* explicit pad for 64bit alignment */ + uint32_t t_ispare[12]; /* 4 keep timers, 5 UTO, 3 TBD */ void *t_pspare2[4]; /* 4 TBD */ - uint64_t _pad[12]; /* 7 UTO, 5 TBD (1-2 CC/RTT?) */ + uint64_t _pad[6]; /* 6 TBD (1-2 CC/RTT?) */ }; /* @@ -300,6 +300,7 @@ struct tcpopt { u_int16_t to_mss; /* maximum segment size */ u_int8_t to_wscale; /* window scaling */ u_int8_t to_nsacks; /* number of SACK blocks */ + u_int32_t to_spare; /* UTO */ }; /* From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 21:27:38 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C8E61106566B; Sun, 17 Jul 2011 21:27:38 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B5DC88FC0A; Sun, 17 Jul 2011 21:27:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HLRcan090990; Sun, 17 Jul 2011 21:27:38 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HLRcXK090974; Sun, 17 Jul 2011 21:27:38 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201107172127.p6HLRcXK090974@svn.freebsd.org> From: Martin Matuska Date: Sun, 17 Jul 2011 21:27:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224152 - in head/lib/libarchive: . libarchive_fe test X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 21:27:38 -0000 Author: mm Date: Sun Jul 17 21:27:38 2011 New Revision: 224152 URL: http://svn.freebsd.org/changeset/base/224152 Log: - Update libarchive to 2.8.4 - Add support for extracting xar and rpm archives - Add libarchive_fe subdir (common code for tar and cpio) Approved by: kientzle MFC after: 2 weeks Added: head/lib/libarchive/archive_read_support_compression_rpm.c (contents, props changed) head/lib/libarchive/archive_read_support_format_xar.c (contents, props changed) head/lib/libarchive/libarchive_fe/ head/lib/libarchive/libarchive_fe/err.c (contents, props changed) head/lib/libarchive/libarchive_fe/err.h (contents, props changed) head/lib/libarchive/libarchive_fe/lafe_platform.h (contents, props changed) head/lib/libarchive/libarchive_fe/line_reader.c (contents, props changed) head/lib/libarchive/libarchive_fe/line_reader.h (contents, props changed) head/lib/libarchive/libarchive_fe/matching.c (contents, props changed) head/lib/libarchive/libarchive_fe/matching.h (contents, props changed) head/lib/libarchive/libarchive_fe/pathmatch.c (contents, props changed) head/lib/libarchive/libarchive_fe/pathmatch.h (contents, props changed) head/lib/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c (contents, props changed) head/lib/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.rpm.uu (contents, props changed) head/lib/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c (contents, props changed) head/lib/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.rpm.uu (contents, props changed) head/lib/libarchive/test/test_read_format_xar.c (contents, props changed) Modified: head/lib/libarchive/Makefile head/lib/libarchive/README head/lib/libarchive/archive.h head/lib/libarchive/archive_hash.h head/lib/libarchive/archive_read.3 head/lib/libarchive/archive_read_disk_entry_from_file.c head/lib/libarchive/archive_read_disk_set_standard_lookup.c head/lib/libarchive/archive_read_support_compression_all.c head/lib/libarchive/archive_read_support_compression_bzip2.c head/lib/libarchive/archive_read_support_compression_uu.c head/lib/libarchive/archive_read_support_format_all.c head/lib/libarchive/archive_read_support_format_mtree.c head/lib/libarchive/archive_write_disk.c head/lib/libarchive/archive_write_disk_set_standard_lookup.c head/lib/libarchive/archive_write_set_compression_bzip2.c head/lib/libarchive/config_freebsd.h head/lib/libarchive/filter_fork.c head/lib/libarchive/test/Makefile head/lib/libarchive/test/main.c head/lib/libarchive/test/read_open_memory.c head/lib/libarchive/test/test.h head/lib/libarchive/test/test_entry.c head/lib/libarchive/test/test_fuzz.c head/lib/libarchive/test/test_pax_filename_encoding.c head/lib/libarchive/test/test_read_data_large.c head/lib/libarchive/test/test_read_large.c head/lib/libarchive/test/test_read_truncated.c head/lib/libarchive/test/test_ustar_filenames.c head/lib/libarchive/test/test_write_format_cpio.c Modified: head/lib/libarchive/Makefile ============================================================================== --- head/lib/libarchive/Makefile Sun Jul 17 21:15:20 2011 (r224151) +++ head/lib/libarchive/Makefile Sun Jul 17 21:27:38 2011 (r224152) @@ -13,6 +13,9 @@ DPADD+= ${LIBLZMA} LDADD+= -llzma CFLAGS+= -DHAVE_LIBLZMA=1 -DHAVE_LZMA_H=1 +DPADD+= ${LIBBSDXML} +LDADD+= -lbsdxml + # FreeBSD SHLIB_MAJOR value is managed as part of the FreeBSD system. # It has no real relation to the libarchive version number. SHLIB_MAJOR= 5 @@ -56,6 +59,7 @@ SRCS= archive_check_magic.c \ archive_read_support_compression_gzip.c \ archive_read_support_compression_none.c \ archive_read_support_compression_program.c \ + archive_read_support_compression_rpm.c \ archive_read_support_compression_uu.c \ archive_read_support_compression_xz.c \ archive_read_support_format_all.c \ @@ -66,6 +70,7 @@ SRCS= archive_check_magic.c \ archive_read_support_format_mtree.c \ archive_read_support_format_raw.c \ archive_read_support_format_tar.c \ + archive_read_support_format_xar.c \ archive_read_support_format_zip.c \ archive_string.c \ archive_string_sprintf.c \ Modified: head/lib/libarchive/README ============================================================================== --- head/lib/libarchive/README Sun Jul 17 21:15:20 2011 (r224151) +++ head/lib/libarchive/README Sun Jul 17 21:27:38 2011 (r224152) @@ -21,6 +21,7 @@ Currently, the library automatically det * gzip compression * bzip2 compression * compress/LZW compression + * lzma and xz compression * GNU tar format (including GNU long filenames, long link names, and sparse files) * Solaris 9 extended tar format (including ACLs) @@ -30,18 +31,26 @@ Currently, the library automatically det * POSIX octet-oriented cpio * SVR4 ASCII cpio * Binary cpio (big-endian or little-endian) - * ISO9660 CD-ROM images (with optional Rockridge extensions) + * ISO9660 CD-ROM images (with optional Rockridge or Joliet extensions) * ZIP archives (with uncompressed or "deflate" compressed entries) + * GNU and BSD 'ar' archives + * 'mtree' format The library can write: * gzip compression * bzip2 compression + * compress/LZW compression + * lzma and xz compression * POSIX ustar * POSIX pax interchange format * "restricted" pax format, which will create ustar archives except for entries that require pax extensions (for long filenames, ACLs, etc). * POSIX octet-oriented cpio + * SVR4 "newc" cpio * shar archives + * ZIP archives (with uncompressed or "deflate" compressed entries) + * GNU and BSD 'ar' archives + * 'mtree' format Notes: * This is a heavily stream-oriented system. There is no direct Modified: head/lib/libarchive/archive.h ============================================================================== --- head/lib/libarchive/archive.h Sun Jul 17 21:15:20 2011 (r224151) +++ head/lib/libarchive/archive.h Sun Jul 17 21:27:38 2011 (r224152) @@ -52,7 +52,9 @@ /* These should match the types used in 'struct stat' */ #if defined(_WIN32) && !defined(__CYGWIN__) #define __LA_INT64_T __int64 -# if defined(_WIN64) +# if defined(_SSIZE_T_DEFINED) +# define __LA_SSIZE_T ssize_t +# elif defined(_WIN64) # define __LA_SSIZE_T __int64 # else # define __LA_SSIZE_T long @@ -127,13 +129,13 @@ extern "C" { * (ARCHIVE_API_VERSION * 1000000 + ARCHIVE_API_FEATURE * 1000) * #endif */ -#define ARCHIVE_VERSION_NUMBER 2007901 +#define ARCHIVE_VERSION_NUMBER 2008004 __LA_DECL int archive_version_number(void); /* * Textual name/version of the library, useful for version displays. */ -#define ARCHIVE_VERSION_STRING "libarchive 2.7.901a" +#define ARCHIVE_VERSION_STRING "libarchive 2.8.4" __LA_DECL const char * archive_version_string(void); #if ARCHIVE_VERSION_NUMBER < 3000000 @@ -319,6 +321,7 @@ __LA_DECL int archive_read_support_com (struct archive *, const char *, const void * /* match */, size_t); +__LA_DECL int archive_read_support_compression_rpm(struct archive *); __LA_DECL int archive_read_support_compression_uu(struct archive *); __LA_DECL int archive_read_support_compression_xz(struct archive *); @@ -331,6 +334,7 @@ __LA_DECL int archive_read_support_for __LA_DECL int archive_read_support_format_mtree(struct archive *); __LA_DECL int archive_read_support_format_raw(struct archive *); __LA_DECL int archive_read_support_format_tar(struct archive *); +__LA_DECL int archive_read_support_format_xar(struct archive *); __LA_DECL int archive_read_support_format_zip(struct archive *); Modified: head/lib/libarchive/archive_hash.h ============================================================================== --- head/lib/libarchive/archive_hash.h Sun Jul 17 21:15:20 2011 (r224151) +++ head/lib/libarchive/archive_hash.h Sun Jul 17 21:27:38 2011 (r224152) @@ -29,6 +29,10 @@ #error This header is only to be used internally to libarchive. #endif +#ifdef HAVE_SYS_TYPES_H +#include +#endif + /* * Hash function support in various Operating Systems: * @@ -41,43 +45,71 @@ * - OpenBSD 4.4 and earlier have SHA2 in libc with _ after algorithm name * * DragonFly and FreeBSD (XXX not used yet): - * - MD5 in libmd: without _ after algorithm name - * - SHA{1,256,512} in libmd: with _ after algorithm name (conflicts w/OpenSSL!) + * - MD5 and SHA1 in libmd: without _ after algorithm name + * - SHA256: with _ after algorithm name + * + * Mac OS X (10.4 and later): + * - MD5, SHA1 and SHA2 in libSystem: with CC_ prefix and _ after algorithm name * * OpenSSL: - * - MD5, SHA1, SHA2, SHA{256,384,512} in libcrypto: with _ after algorithm name + * - MD5, SHA1 and SHA2 in libcrypto: with _ after algorithm name + * + * Windows: + * - MD5, SHA1 and SHA2 in archive_windows.c: without algorithm name + * and with __la_ prefix. */ +#if defined(ARCHIVE_HASH_MD5_WIN) ||\ + defined(ARCHIVE_HASH_SHA1_WIN) || defined(ARCHIVE_HASH_SHA256_WIN) ||\ + defined(ARCHIVE_HASH_SHA384_WIN) || defined(ARCHIVE_HASH_SHA512_WIN) +#include +typedef struct { + int valid; + HCRYPTPROV cryptProv; + HCRYPTHASH hash; +} Digest_CTX; +extern void __la_hash_Init(Digest_CTX *, ALG_ID); +extern void __la_hash_Final(unsigned char *, size_t, Digest_CTX *); +extern void __la_hash_Update(Digest_CTX *, const unsigned char *, size_t); +#endif -#if defined(HAVE_MD5_H) && defined(HAVE_MD5INIT) +#if defined(ARCHIVE_HASH_MD5_LIBC) # include # define ARCHIVE_HAS_MD5 typedef MD5_CTX archive_md5_ctx; # define archive_md5_init(ctx) MD5Init(ctx) # define archive_md5_final(ctx, buf) MD5Final(buf, ctx) # define archive_md5_update(ctx, buf, n) MD5Update(ctx, buf, n) -#elif defined(HAVE_OPENSSL_MD5_H) +#elif defined(ARCHIVE_HASH_MD5_LIBSYSTEM) +# include +# define ARCHIVE_HAS_MD5 +typedef CC_MD5_CTX archive_md5_ctx; +# define archive_md5_init(ctx) CC_MD5_Init(ctx) +# define archive_md5_final(ctx, buf) CC_MD5_Final(buf, ctx) +# define archive_md5_update(ctx, buf, n) CC_MD5_Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_MD5_OPENSSL) # include # define ARCHIVE_HAS_MD5 typedef MD5_CTX archive_md5_ctx; # define archive_md5_init(ctx) MD5_Init(ctx) # define archive_md5_final(ctx, buf) MD5_Final(buf, ctx) # define archive_md5_update(ctx, buf, n) MD5_Update(ctx, buf, n) -#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(CALG_MD5) +#elif defined(ARCHIVE_HASH_MD5_WIN) # define ARCHIVE_HAS_MD5 -typedef MD5_CTX archive_md5_ctx; -# define archive_md5_init(ctx) MD5_Init(ctx) -# define archive_md5_final(ctx, buf) MD5_Final(buf, ctx) -# define archive_md5_update(ctx, buf, n) MD5_Update(ctx, buf, n) +# define MD5_DIGEST_LENGTH 16 +typedef Digest_CTX archive_md5_ctx; +# define archive_md5_init(ctx) __la_hash_Init(ctx, CALG_MD5) +# define archive_md5_final(ctx, buf) __la_hash_Final(buf, MD5_DIGEST_LENGTH, ctx) +# define archive_md5_update(ctx, buf, n) __la_hash_Update(ctx, buf, n) #endif -#if defined(HAVE_RMD160_H) && defined(HAVE_RMD160INIT) +#if defined(ARCHIVE_HASH_RMD160_LIBC) # include # define ARCHIVE_HAS_RMD160 typedef RMD160_CTX archive_rmd160_ctx; # define archive_rmd160_init(ctx) RMD160Init(ctx) # define archive_rmd160_final(ctx, buf) RMD160Final(buf, ctx) # define archive_rmd160_update(ctx, buf, n) RMD160Update(ctx, buf, n) -#elif defined(HAVE_OPENSSL_RIPEMD_H) +#elif defined(ARCHIVE_HASH_RMD160_OPENSSL) # include # define ARCHIVE_HAS_RMD160 typedef RIPEMD160_CTX archive_rmd160_ctx; @@ -86,111 +118,164 @@ typedef RIPEMD160_CTX archive_rmd160_ctx # define archive_rmd160_update(ctx, buf, n) RIPEMD160_Update(ctx, buf, n) #endif -#if defined(HAVE_SHA1_H) && defined(HAVE_SHA1INIT) +#if defined(ARCHIVE_HASH_SHA1_LIBC) # include # define ARCHIVE_HAS_SHA1 typedef SHA1_CTX archive_sha1_ctx; # define archive_sha1_init(ctx) SHA1Init(ctx) # define archive_sha1_final(ctx, buf) SHA1Final(buf, ctx) # define archive_sha1_update(ctx, buf, n) SHA1Update(ctx, buf, n) -#elif defined(HAVE_OPENSSL_SHA_H) +#elif defined(ARCHIVE_HASH_SHA1_LIBSYSTEM) +# include +# define ARCHIVE_HAS_SHA1 +typedef CC_SHA1_CTX archive_sha1_ctx; +# define archive_sha1_init(ctx) CC_SHA1_Init(ctx) +# define archive_sha1_final(ctx, buf) CC_SHA1_Final(buf, ctx) +# define archive_sha1_update(ctx, buf, n) CC_SHA1_Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_SHA1_OPENSSL) # include # define ARCHIVE_HAS_SHA1 typedef SHA_CTX archive_sha1_ctx; # define archive_sha1_init(ctx) SHA1_Init(ctx) # define archive_sha1_final(ctx, buf) SHA1_Final(buf, ctx) # define archive_sha1_update(ctx, buf, n) SHA1_Update(ctx, buf, n) -#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(CALG_SHA1) +#elif defined(ARCHIVE_HASH_SHA1_WIN) # define ARCHIVE_HAS_SHA1 -typedef SHA1_CTX archive_sha1_ctx; -# define archive_sha1_init(ctx) SHA1_Init(ctx) -# define archive_sha1_final(ctx, buf) SHA1_Final(buf, ctx) -# define archive_sha1_update(ctx, buf, n) SHA1_Update(ctx, buf, n) +# define SHA1_DIGEST_LENGTH 20 +typedef Digest_CTX archive_sha1_ctx; +# define archive_sha1_init(ctx) __la_hash_Init(ctx, CALG_SHA1) +# define archive_sha1_final(ctx, buf) __la_hash_Final(buf, SHA1_DIGEST_LENGTH, ctx) +# define archive_sha1_update(ctx, buf, n) __la_hash_Update(ctx, buf, n) #endif -#if defined(HAVE_SHA2_H) && defined(HAVE_SHA256_INIT) +#if defined(ARCHIVE_HASH_SHA256_LIBC) # include # define ARCHIVE_HAS_SHA256 typedef SHA256_CTX archive_sha256_ctx; # define archive_sha256_init(ctx) SHA256_Init(ctx) # define archive_sha256_final(ctx, buf) SHA256_Final(buf, ctx) # define archive_sha256_update(ctx, buf, n) SHA256_Update(ctx, buf, n) -#elif defined(HAVE_SHA2_H) && defined(HAVE_SHA256INIT) +#elif defined(ARCHIVE_HASH_SHA256_LIBC2) # include # define ARCHIVE_HAS_SHA256 typedef SHA256_CTX archive_sha256_ctx; # define archive_sha256_init(ctx) SHA256Init(ctx) # define archive_sha256_final(ctx, buf) SHA256Final(buf, ctx) # define archive_sha256_update(ctx, buf, n) SHA256Update(ctx, buf, n) -#elif defined(HAVE_OPENSSL_SHA_H) && defined(HAVE_OPENSSL_SHA256_INIT) +#elif defined(ARCHIVE_HASH_SHA256_LIBC3) +# include +# define ARCHIVE_HAS_SHA256 +typedef SHA2_CTX archive_sha256_ctx; +# define archive_sha256_init(ctx) SHA256Init(ctx) +# define archive_sha256_final(ctx, buf) SHA256Final(buf, ctx) +# define archive_sha256_update(ctx, buf, n) SHA256Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_SHA256_LIBSYSTEM) +# include +# define ARCHIVE_HAS_SHA256 +typedef CC_SHA256_CTX archive_shs256_ctx; +# define archive_shs256_init(ctx) CC_SHA256_Init(ctx) +# define archive_shs256_final(ctx, buf) CC_SHA256_Final(buf, ctx) +# define archive_shs256_update(ctx, buf, n) CC_SHA256_Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_SHA256_OPENSSL) # include # define ARCHIVE_HAS_SHA256 typedef SHA256_CTX archive_sha256_ctx; # define archive_sha256_init(ctx) SHA256_Init(ctx) # define archive_sha256_final(ctx, buf) SHA256_Final(buf, ctx) # define archive_sha256_update(ctx, buf, n) SHA256_Update(ctx, buf, n) -#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(CALG_SHA_256) +#elif defined(ARCHIVE_HASH_SHA256_WIN) # define ARCHIVE_HAS_SHA256 -typedef SHA256_CTX archive_sha256_ctx; -# define archive_sha256_init(ctx) SHA256_Init(ctx) -# define archive_sha256_final(ctx, buf) SHA256_Final(buf, ctx) -# define archive_sha256_update(ctx, buf, n) SHA256_Update(ctx, buf, n) +# define SHA256_DIGEST_LENGTH 32 +typedef Digest_CTX archive_sha256_ctx; +# define archive_sha256_init(ctx) __la_hash_Init(ctx, CALG_SHA_256) +# define archive_sha256_final(ctx, buf) __la_hash_Final(buf, SHA256_DIGEST_LENGTH, ctx) +# define archive_sha256_update(ctx, buf, n) __la_hash_Update(ctx, buf, n) #endif -#if defined(HAVE_SHA2_H) && defined(HAVE_SHA384_INIT) +#if defined(ARCHIVE_HASH_SHA384_LIBC) # include # define ARCHIVE_HAS_SHA384 typedef SHA384_CTX archive_sha384_ctx; # define archive_sha384_init(ctx) SHA384_Init(ctx) # define archive_sha384_final(ctx, buf) SHA384_Final(buf, ctx) # define archive_sha384_update(ctx, buf, n) SHA384_Update(ctx, buf, n) -#elif defined(HAVE_SHA2_H) && defined(HAVE_SHA384INIT) +#elif defined(ARCHIVE_HASH_SHA384_LIBC2) # include # define ARCHIVE_HAS_SHA384 typedef SHA384_CTX archive_sha384_ctx; # define archive_sha384_init(ctx) SHA384Init(ctx) # define archive_sha384_final(ctx, buf) SHA384Final(buf, ctx) # define archive_sha384_update(ctx, buf, n) SHA384Update(ctx, buf, n) -#elif defined(HAVE_OPENSSL_SHA_H) && defined(HAVE_OPENSSL_SHA384_INIT) +#elif defined(ARCHIVE_HASH_SHA384_LIBC3) +# include +# define ARCHIVE_HAS_SHA384 +typedef SHA2_CTX archive_sha384_ctx; +# define archive_sha384_init(ctx) SHA384Init(ctx) +# define archive_sha384_final(ctx, buf) SHA384Final(buf, ctx) +# define archive_sha384_update(ctx, buf, n) SHA384Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_SHA384_LIBSYSTEM) +# include +# define ARCHIVE_HAS_SHA384 +typedef CC_SHA512_CTX archive_shs384_ctx; +# define archive_shs384_init(ctx) CC_SHA384_Init(ctx) +# define archive_shs384_final(ctx, buf) CC_SHA384_Final(buf, ctx) +# define archive_shs384_update(ctx, buf, n) CC_SHA384_Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_SHA384_OPENSSL) # include # define ARCHIVE_HAS_SHA384 typedef SHA512_CTX archive_sha384_ctx; # define archive_sha384_init(ctx) SHA384_Init(ctx) # define archive_sha384_final(ctx, buf) SHA384_Final(buf, ctx) # define archive_sha384_update(ctx, buf, n) SHA384_Update(ctx, buf, n) -#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(CALG_SHA_384) +#elif defined(ARCHIVE_HASH_SHA384_WIN) # define ARCHIVE_HAS_SHA384 -typedef SHA512_CTX archive_sha384_ctx; -# define archive_sha384_init(ctx) SHA384_Init(ctx) -# define archive_sha384_final(ctx, buf) SHA384_Final(buf, ctx) -# define archive_sha384_update(ctx, buf, n) SHA384_Update(ctx, buf, n) +# define SHA384_DIGEST_LENGTH 48 +typedef Digest_CTX archive_sha384_ctx; +# define archive_sha384_init(ctx) __la_hash_Init(ctx, CALG_SHA_384) +# define archive_sha384_final(ctx, buf) __la_hash_Final(buf, SHA384_DIGEST_LENGTH, ctx) +# define archive_sha384_update(ctx, buf, n) __la_hash_Update(ctx, buf, n) #endif -#if defined(HAVE_SHA2_H) && defined(HAVE_SHA512_INIT) +#if defined(ARCHIVE_HASH_SHA512_LIBC) # include # define ARCHIVE_HAS_SHA512 typedef SHA512_CTX archive_sha512_ctx; # define archive_sha512_init(ctx) SHA512_Init(ctx) # define archive_sha512_final(ctx, buf) SHA512_Final(buf, ctx) # define archive_sha512_update(ctx, buf, n) SHA512_Update(ctx, buf, n) -#elif defined(HAVE_SHA2_H) && defined(HAVE_SHA512INIT) +#elif defined(ARCHIVE_HASH_SHA512_LIBC2) # include # define ARCHIVE_HAS_SHA512 typedef SHA512_CTX archive_sha512_ctx; # define archive_sha512_init(ctx) SHA512Init(ctx) # define archive_sha512_final(ctx, buf) SHA512Final(buf, ctx) # define archive_sha512_update(ctx, buf, n) SHA512Update(ctx, buf, n) -#elif defined(HAVE_OPENSSL_SHA_H) && defined(HAVE_OPENSSL_SHA512_INIT) +#elif defined(ARCHIVE_HASH_SHA512_LIBC3) +# include +# define ARCHIVE_HAS_SHA512 +typedef SHA2_CTX archive_sha512_ctx; +# define archive_sha512_init(ctx) SHA512Init(ctx) +# define archive_sha512_final(ctx, buf) SHA512Final(buf, ctx) +# define archive_sha512_update(ctx, buf, n) SHA512Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_SHA512_LIBSYSTEM) +# include +# define ARCHIVE_HAS_SHA512 +typedef CC_SHA512_CTX archive_shs512_ctx; +# define archive_shs512_init(ctx) CC_SHA512_Init(ctx) +# define archive_shs512_final(ctx, buf) CC_SHA512_Final(buf, ctx) +# define archive_shs512_update(ctx, buf, n) CC_SHA512_Update(ctx, buf, n) +#elif defined(ARCHIVE_HASH_SHA512_OPENSSL) # include # define ARCHIVE_HAS_SHA512 typedef SHA512_CTX archive_sha512_ctx; # define archive_sha512_init(ctx) SHA512_Init(ctx) # define archive_sha512_final(ctx, buf) SHA512_Final(buf, ctx) # define archive_sha512_update(ctx, buf, n) SHA512_Update(ctx, buf, n) -#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(CALG_SHA_512) +#elif defined(ARCHIVE_HASH_SHA512_WIN) # define ARCHIVE_HAS_SHA512 -typedef SHA512_CTX archive_sha512_ctx; -# define archive_sha512_init(ctx) SHA512_Init(ctx) -# define archive_sha512_final(ctx, buf) SHA512_Final(buf, ctx) -# define archive_sha512_update(ctx, buf, n) SHA512_Update(ctx, buf, n) +# define SHA512_DIGEST_LENGTH 64 +typedef Digest_CTX archive_sha512_ctx; +# define archive_sha512_init(ctx) __la_hash_Init(ctx, CALG_SHA_512) +# define archive_sha512_final(ctx, buf) __la_hash_Final(buf, SHA512_DIGEST_LENGTH, ctx) +# define archive_sha512_update(ctx, buf, n) __la_hash_Update(ctx, buf, n) #endif Modified: head/lib/libarchive/archive_read.3 ============================================================================== --- head/lib/libarchive/archive_read.3 Sun Jul 17 21:15:20 2011 (r224151) +++ head/lib/libarchive/archive_read.3 Sun Jul 17 21:27:38 2011 (r224152) @@ -597,7 +597,7 @@ list_archive(const char *name) archive_read_support_format_all(a); archive_read_open(a, mydata, myopen, myread, myclose); while (archive_read_next_header(a, &entry) == ARCHIVE_OK) { - printf("%s\\n",archive_entry_pathname(entry)); + printf("%s\en",archive_entry_pathname(entry)); archive_read_data_skip(a); } archive_read_free(a); Modified: head/lib/libarchive/archive_read_disk_entry_from_file.c ============================================================================== --- head/lib/libarchive/archive_read_disk_entry_from_file.c Sun Jul 17 21:15:20 2011 (r224151) +++ head/lib/libarchive/archive_read_disk_entry_from_file.c Sun Jul 17 21:27:38 2011 (r224152) @@ -208,6 +208,12 @@ setup_acls_posix1e(struct archive_read_d #if HAVE_ACL_GET_LINK_NP else if (!a->follow_symlinks) acl = acl_get_link_np(accpath, ACL_TYPE_ACCESS); +#else + else if ((!a->follow_symlinks) + && (archive_entry_filetype(entry) == AE_IFLNK)) + /* We can't get the ACL of a symlink, so we assume it can't + have one. */ + acl = NULL; #endif else acl = acl_get_file(accpath, ACL_TYPE_ACCESS); @@ -419,7 +425,8 @@ setup_xattrs(struct archive_read_disk *a return (ARCHIVE_OK); } -#elif HAVE_EXTATTR_GET_FILE && HAVE_EXTATTR_LIST_FILE +#elif HAVE_EXTATTR_GET_FILE && HAVE_EXTATTR_LIST_FILE && \ + HAVE_DECL_EXTATTR_NAMESPACE_USER /* * FreeBSD extattr interface. @@ -430,11 +437,11 @@ setup_xattrs(struct archive_read_disk *a * to not include the system extattrs that hold ACLs; we handle * those separately. */ -int +static int setup_xattr(struct archive_read_disk *a, struct archive_entry *entry, int namespace, const char *name, const char *fullname, int fd); -int +static int setup_xattr(struct archive_read_disk *a, struct archive_entry *entry, int namespace, const char *name, const char *fullname, int fd) { Modified: head/lib/libarchive/archive_read_disk_set_standard_lookup.c ============================================================================== --- head/lib/libarchive/archive_read_disk_set_standard_lookup.c Sun Jul 17 21:15:20 2011 (r224151) +++ head/lib/libarchive/archive_read_disk_set_standard_lookup.c Sun Jul 17 21:27:38 2011 (r224152) @@ -182,6 +182,7 @@ lookup_uname(void *data, uid_t uid) &lookup_uname_helper, (id_t)uid)); } +#if HAVE_GETPWUID_R static const char * lookup_uname_helper(struct name_cache *cache, id_t id) { @@ -222,6 +223,20 @@ lookup_uname_helper(struct name_cache *c return strdup(result->pw_name); } +#else +static const char * +lookup_uname_helper(struct name_cache *cache, id_t id) +{ + struct passwd *result; + + result = getpwuid((uid_t)id); + + if (result == NULL) + return (NULL); + + return strdup(result->pw_name); +} +#endif static const char * lookup_gname(void *data, gid_t gid) @@ -231,6 +246,7 @@ lookup_gname(void *data, gid_t gid) &lookup_gname_helper, (id_t)gid)); } +#if HAVE_GETGRGID_R static const char * lookup_gname_helper(struct name_cache *cache, id_t id) { @@ -269,4 +285,19 @@ lookup_gname_helper(struct name_cache *c return strdup(result->gr_name); } +#else +static const char * +lookup_gname_helper(struct name_cache *cache, id_t id) +{ + struct group *result; + + result = getgrgid((gid_t)id); + + if (result == NULL) + return (NULL); + + return strdup(result->gr_name); +} +#endif + #endif /* ! (_WIN32 && !__CYGWIN__) */ Modified: head/lib/libarchive/archive_read_support_compression_all.c ============================================================================== --- head/lib/libarchive/archive_read_support_compression_all.c Sun Jul 17 21:15:20 2011 (r224151) +++ head/lib/libarchive/archive_read_support_compression_all.c Sun Jul 17 21:27:38 2011 (r224152) @@ -46,6 +46,8 @@ archive_read_support_compression_all(str archive_read_support_compression_xz(a); /* The decode code doesn't use an outside library. */ archive_read_support_compression_uu(a); + /* The decode code doesn't use an outside library. */ + archive_read_support_compression_rpm(a); /* Note: We always return ARCHIVE_OK here, even if some of the * above return ARCHIVE_WARN. The intent here is to enable Modified: head/lib/libarchive/archive_read_support_compression_bzip2.c ============================================================================== --- head/lib/libarchive/archive_read_support_compression_bzip2.c Sun Jul 17 21:15:20 2011 (r224151) +++ head/lib/libarchive/archive_read_support_compression_bzip2.c Sun Jul 17 21:27:38 2011 (r224152) @@ -48,7 +48,7 @@ __FBSDID("$FreeBSD$"); #include "archive_private.h" #include "archive_read_private.h" -#if HAVE_BZLIB_H +#if defined(HAVE_BZLIB_H) && defined(BZ_CONFIG_ERROR) struct private_data { bz_stream stream; char *out_block; @@ -86,7 +86,7 @@ archive_read_support_compression_bzip2(s reader->init = bzip2_reader_init; reader->options = NULL; reader->free = bzip2_reader_free; -#if HAVE_BZLIB_H +#if defined(HAVE_BZLIB_H) && defined(BZ_CONFIG_ERROR) return (ARCHIVE_OK); #else archive_set_error(_a, ARCHIVE_ERRNO_MISC, @@ -146,7 +146,7 @@ bzip2_reader_bid(struct archive_read_fil return (bits_checked); } -#ifndef HAVE_BZLIB_H +#if !defined(HAVE_BZLIB_H) || !defined(BZ_CONFIG_ERROR) /* * If we don't have the library on this system, we can't actually do the Added: head/lib/libarchive/archive_read_support_compression_rpm.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/libarchive/archive_read_support_compression_rpm.c Sun Jul 17 21:27:38 2011 (r224152) @@ -0,0 +1,288 @@ +/*- + * Copyright (c) 2009 Michihiro NAKAJIMA + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``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 AUTHOR(S) 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 "archive_platform.h" +__FBSDID("$FreeBSD$"); + +#ifdef HAVE_ERRNO_H +#include +#endif +#ifdef HAVE_STDLIB_H +#include +#endif + +#include "archive.h" +#include "archive_endian.h" +#include "archive_private.h" +#include "archive_read_private.h" + +struct rpm { + int64_t total_in; + size_t hpos; + size_t hlen; + unsigned char header[16]; + enum { + ST_LEAD, /* Skipping 'Lead' section. */ + ST_HEADER, /* Reading 'Header' section; + * first 16 bytes. */ + ST_HEADER_DATA, /* Skipping 'Header' section. */ + ST_PADDING, /* Skipping padding data after the + * 'Header' section. */ + ST_ARCHIVE /* Reading 'Archive' section. */ + } state; + int first_header; +}; +#define RPM_LEAD_SIZE 96 /* Size of 'Lead' section. */ + +static int rpm_bidder_bid(struct archive_read_filter_bidder *, + struct archive_read_filter *); +static int rpm_bidder_init(struct archive_read_filter *); + +static ssize_t rpm_filter_read(struct archive_read_filter *, + const void **); +static int rpm_filter_close(struct archive_read_filter *); + +int +archive_read_support_compression_rpm(struct archive *_a) +{ + struct archive_read *a = (struct archive_read *)_a; + struct archive_read_filter_bidder *bidder; + + bidder = __archive_read_get_bidder(a); + archive_clear_error(_a); + if (bidder == NULL) + return (ARCHIVE_FATAL); + + bidder->data = NULL; + bidder->bid = rpm_bidder_bid; + bidder->init = rpm_bidder_init; + bidder->options = NULL; + bidder->free = NULL; + return (ARCHIVE_OK); +} + +static int +rpm_bidder_bid(struct archive_read_filter_bidder *self, + struct archive_read_filter *filter) +{ + const unsigned char *b; + ssize_t avail; + int bits_checked; + + (void)self; /* UNUSED */ + + b = __archive_read_filter_ahead(filter, 8, &avail); + if (b == NULL) + return (0); + + bits_checked = 0; + /* + * Verify Header Magic Bytes : 0xed 0xab 0xee 0xdb + */ + if (b[0] != 0xed) + return (0); + bits_checked += 8; + if (b[1] != 0xab) + return (0); + bits_checked += 8; + if (b[2] != 0xee) + return (0); + bits_checked += 8; + if (b[3] != 0xdb) + return (0); + bits_checked += 8; + /* + * Check major version. + */ + if (b[4] != 3 && b[4] != 4) + return (0); + bits_checked += 8; + /* + * Check package type; binary or source. + */ + if (b[6] != 0) + return (0); + bits_checked += 8; + if (b[7] != 0 && b[7] != 1) + return (0); + bits_checked += 8; + + return (bits_checked); +} + +static int +rpm_bidder_init(struct archive_read_filter *self) +{ + struct rpm *rpm; + + self->code = ARCHIVE_COMPRESSION_RPM; + self->name = "rpm"; + self->read = rpm_filter_read; + self->skip = NULL; /* not supported */ + self->close = rpm_filter_close; + + rpm = (struct rpm *)calloc(sizeof(*rpm), 1); + if (rpm == NULL) { + archive_set_error(&self->archive->archive, ENOMEM, + "Can't allocate data for rpm"); + return (ARCHIVE_FATAL); + } + + self->data = rpm; + rpm->state = ST_LEAD; + + return (ARCHIVE_OK); +} + +static ssize_t +rpm_filter_read(struct archive_read_filter *self, const void **buff) +{ + struct rpm *rpm; + const unsigned char *b; + ssize_t avail_in, total; + size_t used, n; + uint32_t section; + uint32_t bytes; + + rpm = (struct rpm *)self->data; + *buff = NULL; + total = avail_in = 0; + b = NULL; + used = 0; + do { + if (b == NULL) { + b = __archive_read_filter_ahead(self->upstream, 1, + &avail_in); + if (b == NULL) { + if (avail_in < 0) + return (ARCHIVE_FATAL); + else + break; + } + } + + switch (rpm->state) { + case ST_LEAD: + if (rpm->total_in + avail_in < RPM_LEAD_SIZE) + used += avail_in; + else { + n = RPM_LEAD_SIZE - rpm->total_in; + used += n; + b += n; + rpm->state = ST_HEADER; + rpm->hpos = 0; + rpm->hlen = 0; + rpm->first_header = 1; + } + break; + case ST_HEADER: + n = 16 - rpm->hpos; + if (n > avail_in - used) + n = avail_in - used; + memcpy(rpm->header+rpm->hpos, b, n); + b += n; + used += n; + rpm->hpos += n; + + if (rpm->hpos == 16) { + if (rpm->header[0] != 0x8e || + rpm->header[1] != 0xad || + rpm->header[2] != 0xe8 || + rpm->header[3] != 0x01) { + if (rpm->first_header) { + archive_set_error( + &self->archive->archive, + ARCHIVE_ERRNO_FILE_FORMAT, + "Unrecoginized rpm header"); + return (ARCHIVE_FATAL); + } + rpm->state = ST_ARCHIVE; + *buff = rpm->header; + total = rpm->hpos; + break; + } + /* Calculate 'Header' length. */ + section = archive_be32dec(rpm->header+8); + bytes = archive_be32dec(rpm->header+12); + rpm->hlen = 16 + section * 16 + bytes; + rpm->state = ST_HEADER_DATA; + rpm->first_header = 0; + } + break; + case ST_HEADER_DATA: + n = rpm->hlen - rpm->hpos; + if (n > avail_in - used) + n = avail_in - used; + b += n; + used += n; + rpm->hpos += n; + if (rpm->hpos == rpm->hlen) + rpm->state = ST_PADDING; + break; + case ST_PADDING: + while (used < (size_t)avail_in) { + if (*b != 0) { + /* Read next header. */ + rpm->state = ST_HEADER; + rpm->hpos = 0; + rpm->hlen = 0; + break; + } + b++; + used++; + } + break; + case ST_ARCHIVE: + *buff = b; + total = avail_in; + used = avail_in; + break; + } + if (used == (size_t)avail_in) { + rpm->total_in += used; + __archive_read_filter_consume(self->upstream, used); + b = NULL; + used = 0; + } + } while (total == 0 && avail_in > 0); + + if (used > 0 && b != NULL) { + rpm->total_in += used; + __archive_read_filter_consume(self->upstream, used); + } + return (total); +} + +static int +rpm_filter_close(struct archive_read_filter *self) +{ + struct rpm *rpm; + + rpm = (struct rpm *)self->data; + free(rpm); + + return (ARCHIVE_OK); +} + Modified: head/lib/libarchive/archive_read_support_compression_uu.c ============================================================================== --- head/lib/libarchive/archive_read_support_compression_uu.c Sun Jul 17 21:15:20 2011 (r224151) +++ head/lib/libarchive/archive_read_support_compression_uu.c Sun Jul 17 21:27:38 2011 (r224152) @@ -325,7 +325,7 @@ uudecode_bidder_bid(struct archive_read_ --len; } b += nl; - + if (avail >= 5 && memcmp(b, "====\n", 5) == 0) return (firstline+40); if (avail >= 6 && memcmp(b, "====\r\n", 6) == 0) Modified: head/lib/libarchive/archive_read_support_format_all.c ============================================================================== --- head/lib/libarchive/archive_read_support_format_all.c Sun Jul 17 21:15:20 2011 (r224151) +++ head/lib/libarchive/archive_read_support_format_all.c Sun Jul 17 21:27:38 2011 (r224152) @@ -37,6 +37,7 @@ archive_read_support_format_all(struct a archive_read_support_format_iso9660(a); archive_read_support_format_mtree(a); archive_read_support_format_tar(a); + archive_read_support_format_xar(a); archive_read_support_format_zip(a); return (ARCHIVE_OK); } Modified: head/lib/libarchive/archive_read_support_format_mtree.c ============================================================================== --- head/lib/libarchive/archive_read_support_format_mtree.c Sun Jul 17 21:15:20 2011 (r224151) +++ head/lib/libarchive/archive_read_support_format_mtree.c Sun Jul 17 21:27:38 2011 (r224152) @@ -370,7 +370,7 @@ process_add_entry(struct archive_read *a line = next; next = line + strcspn(line, " \t\r\n"); eq = strchr(line, '='); - if (eq > next) + if (eq == NULL || eq > next) len = next - line; else len = eq - line; Added: head/lib/libarchive/archive_read_support_format_xar.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/libarchive/archive_read_support_format_xar.c Sun Jul 17 21:27:38 2011 (r224152) @@ -0,0 +1,3151 @@ +/*- + * Copyright (c) 2009 Michihiro NAKAJIMA + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``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 AUTHOR(S) 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 "archive_platform.h" +__FBSDID("$FreeBSD$"); + +#ifdef HAVE_ERRNO_H +#include +#endif +#include +#ifdef HAVE_STDLIB_H +#include +#endif +#if HAVE_LIBXML_XMLREADER_H +#include +#elif HAVE_BSDXML_H +#include +#elif HAVE_EXPAT_H +#include +#endif +#ifdef HAVE_BZLIB_H +#include +#endif +#if HAVE_LZMA_H +#include +#elif HAVE_LZMADEC_H +#include +#endif +#ifdef HAVE_ZLIB_H +#include +#endif + +#include "archive.h" +#include "archive_endian.h" +#include "archive_entry.h" +#include "archive_hash.h" +#include "archive_private.h" +#include "archive_read_private.h" + +#if (!defined(HAVE_LIBXML_XMLREADER_H) && \ + !defined(HAVE_BSDXML_H) && !defined(HAVE_EXPAT_H)) ||\ + !defined(HAVE_ZLIB_H) || \ + !defined(ARCHIVE_HAS_MD5) || !defined(ARCHIVE_HAS_SHA1) +/* + * xar needs several external libraries. + * o libxml2 or expat --- XML parser + * o openssl or MD5/SHA1 hash function + * o zlib + * o bzlib2 (option) + * o liblzma (option) + */ +int +archive_read_support_format_xar(struct archive *_a) +{ + struct archive_read *a = (struct archive_read *)_a; + + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "Xar not supported on this platform"); + return (ARCHIVE_WARN); +} + +#else /* Support xar format */ + +//#define DEBUG 1 +//#define DEBUG_PRINT_TOC 1 +#if DEBUG_PRINT_TOC +#define PRINT_TOC(d, outbytes) do { \ + unsigned char *x = (unsigned char *)(uintptr_t)d; \ + unsigned char c = x[outbytes-1]; \ + x[outbytes - 1] = 0; \ + fprintf(stderr, "%s", x); \ + fprintf(stderr, "%c", c); \ + x[outbytes - 1] = c; \ +} while (0) +#else +#define PRINT_TOC(d, outbytes) +#endif + +#define HEADER_MAGIC 0x78617221 +#define HEADER_SIZE 28 +#define HEADER_VERSION 1 +#define CKSUM_NONE 0 +#define CKSUM_SHA1 1 +#define CKSUM_MD5 2 + +#define MD5_SIZE 16 +#define SHA1_SIZE 20 +#define MAX_SUM_SIZE 20 + +enum enctype { + NONE, + GZIP, + BZIP2, + LZMA, + XZ, +}; + +struct chksumval { + int alg; + size_t len; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 21:33:15 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EB4A9106564A; Sun, 17 Jul 2011 21:33:15 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D87BA8FC08; Sun, 17 Jul 2011 21:33:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HLXFQD091257; Sun, 17 Jul 2011 21:33:15 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HLXFJ6091245; Sun, 17 Jul 2011 21:33:15 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201107172133.p6HLXFJ6091245@svn.freebsd.org> From: Martin Matuska Date: Sun, 17 Jul 2011 21:33:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224153 - in head/usr.bin/tar: . test X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 21:33:16 -0000 Author: mm Date: Sun Jul 17 21:33:15 2011 New Revision: 224153 URL: http://svn.freebsd.org/changeset/base/224153 Log: Update bsdtar to 2.8.4 Use common code from lib/libarchive/libarchive_fe Approved by: kientzle MFC after: 2 weeks Added: head/usr.bin/tar/test/test_empty_mtree.c (contents, props changed) head/usr.bin/tar/test/test_option_T_upper.c (contents, props changed) head/usr.bin/tar/test/test_option_r.c (contents, props changed) Deleted: head/usr.bin/tar/err.c head/usr.bin/tar/err.h head/usr.bin/tar/line_reader.c head/usr.bin/tar/line_reader.h head/usr.bin/tar/matching.c head/usr.bin/tar/matching.h head/usr.bin/tar/pathmatch.c head/usr.bin/tar/pathmatch.h head/usr.bin/tar/test/test_option_T.c Modified: head/usr.bin/tar/Makefile head/usr.bin/tar/bsdtar.1 head/usr.bin/tar/bsdtar.c head/usr.bin/tar/cmdline.c head/usr.bin/tar/config_freebsd.h head/usr.bin/tar/read.c head/usr.bin/tar/subst.c head/usr.bin/tar/test/Makefile head/usr.bin/tar/test/main.c head/usr.bin/tar/test/test.h head/usr.bin/tar/test/test_0.c head/usr.bin/tar/test/test_basic.c head/usr.bin/tar/test/test_copy.c head/usr.bin/tar/test/test_help.c head/usr.bin/tar/test/test_option_q.c head/usr.bin/tar/test/test_option_s.c head/usr.bin/tar/test/test_patterns.c head/usr.bin/tar/test/test_patterns_2.tar.uu head/usr.bin/tar/test/test_patterns_3.tar.uu head/usr.bin/tar/test/test_patterns_4.tar.uu head/usr.bin/tar/test/test_stdio.c head/usr.bin/tar/test/test_strip_components.c head/usr.bin/tar/test/test_symlink_dir.c head/usr.bin/tar/test/test_version.c head/usr.bin/tar/util.c head/usr.bin/tar/write.c Modified: head/usr.bin/tar/Makefile ============================================================================== --- head/usr.bin/tar/Makefile Sun Jul 17 21:27:38 2011 (r224152) +++ head/usr.bin/tar/Makefile Sun Jul 17 21:33:15 2011 (r224153) @@ -2,21 +2,24 @@ .include PROG= bsdtar -BSDTAR_VERSION_STRING=2.8.3 +BSDTAR_VERSION_STRING=2.8.4 SRCS= bsdtar.c \ cmdline.c \ - err.c \ getdate.c \ - line_reader.c \ - matching.c \ - pathmatch.c \ read.c \ subst.c \ tree.c \ util.c \ write.c -DPADD= ${LIBARCHIVE} ${LIBBZ2} ${LIBZ} ${LIBMD} ${LIBLZMA} -LDADD= -larchive -lbz2 -lz -lmd -llzma + +.PATH: ${.CURDIR}/../../lib/libarchive/libarchive_fe +SRCS+= err.c \ + line_reader.c \ + matching.c \ + pathmatch.c + +DPADD= ${LIBARCHIVE} ${LIBBZ2} ${LIBZ} ${LIBMD} ${LIBLZMA} ${LIBBSDXML} +LDADD= -larchive -lbz2 -lz -lmd -llzma -lbsdxml .if ${MK_OPENSSL} != "no" DPADD+= ${LIBCRYPTO} LDADD+= -lcrypto @@ -24,6 +27,7 @@ LDADD+= -lcrypto CFLAGS+= -DBSDTAR_VERSION_STRING=\"${BSDTAR_VERSION_STRING}\" CFLAGS+= -DPLATFORM_CONFIG_H=\"config_freebsd.h\" CFLAGS+= -I${.CURDIR} -I${.CURDIR}/../../lib/libarchive +CFLAGS+= -I${.CURDIR}/../../lib/libarchive/libarchive_fe SYMLINKS= bsdtar ${BINDIR}/tar MLINKS= bsdtar.1 tar.1 DEBUG_FLAGS=-g Modified: head/usr.bin/tar/bsdtar.1 ============================================================================== --- head/usr.bin/tar/bsdtar.1 Sun Jul 17 21:27:38 2011 (r224152) +++ head/usr.bin/tar/bsdtar.1 Sun Jul 17 21:33:15 2011 (r224153) @@ -50,8 +50,8 @@ .Sh DESCRIPTION .Nm creates and manipulates streaming archive files. -This implementation can extract from tar, pax, cpio, zip, jar, ar, -xar, and ISO 9660 cdrom images and can create tar, pax, cpio, ar, zip, +This implementation can extract from tar, pax, cpio, zip, jar, ar, xar, +rpm and ISO 9660 cdrom images and can create tar, pax, cpio, ar, zip, and shar archives. .Pp The first synopsis form shows a Modified: head/usr.bin/tar/bsdtar.c ============================================================================== --- head/usr.bin/tar/bsdtar.c Sun Jul 17 21:27:38 2011 (r224152) +++ head/usr.bin/tar/bsdtar.c Sun Jul 17 21:33:15 2011 (r224153) @@ -63,6 +63,9 @@ __FBSDID("$FreeBSD$"); #ifdef HAVE_UNISTD_H #include #endif +#if HAVE_ZLIB_H +#include +#endif #include "bsdtar.h" #include "err.h" @@ -86,6 +89,8 @@ __FBSDID("$FreeBSD$"); int _CRT_glob = 0; /* Disable broken CRT globbing. */ #endif +static struct bsdtar *_bsdtar; + #if defined(HAVE_SIGACTION) && (defined(SIGINFO) || defined(SIGUSR1)) static volatile int siginfo_occurred; @@ -139,7 +144,7 @@ main(int argc, char **argv) * Use a pointer for consistency, but stack-allocated storage * for ease of cleanup. */ - bsdtar = &bsdtar_storage; + _bsdtar = bsdtar = &bsdtar_storage; memset(bsdtar, 0, sizeof(*bsdtar)); bsdtar->fd = -1; /* Mark as "unused" */ option_o = 0; @@ -152,36 +157,36 @@ main(int argc, char **argv) sa.sa_flags = 0; #ifdef SIGINFO if (sigaction(SIGINFO, &sa, NULL)) - bsdtar_errc(1, errno, "sigaction(SIGINFO) failed"); + lafe_errc(1, errno, "sigaction(SIGINFO) failed"); #endif #ifdef SIGUSR1 /* ... and treat SIGUSR1 the same way as SIGINFO. */ if (sigaction(SIGUSR1, &sa, NULL)) - bsdtar_errc(1, errno, "sigaction(SIGUSR1) failed"); + lafe_errc(1, errno, "sigaction(SIGUSR1) failed"); #endif } #endif - /* Need bsdtar_progname before calling bsdtar_warnc. */ + /* Need lafe_progname before calling lafe_warnc. */ if (*argv == NULL) - bsdtar_progname = "bsdtar"; + lafe_progname = "bsdtar"; else { #if defined(_WIN32) && !defined(__CYGWIN__) - bsdtar_progname = strrchr(*argv, '\\'); + lafe_progname = strrchr(*argv, '\\'); #else - bsdtar_progname = strrchr(*argv, '/'); + lafe_progname = strrchr(*argv, '/'); #endif - if (bsdtar_progname != NULL) - bsdtar_progname++; + if (lafe_progname != NULL) + lafe_progname++; else - bsdtar_progname = *argv; + lafe_progname = *argv; } time(&now); #if HAVE_SETLOCALE if (setlocale(LC_ALL, "") == NULL) - bsdtar_warnc(0, "Failed to set default locale"); + lafe_warnc(0, "Failed to set default locale"); #endif #if defined(HAVE_NL_LANGINFO) && defined(HAVE_D_MD_ORDER) bsdtar->day_first = (*nl_langinfo(D_MD_ORDER) == 'd'); @@ -233,7 +238,7 @@ main(int argc, char **argv) case 'b': /* SUSv2 */ t = atoi(bsdtar->optarg); if (t <= 0 || t > 8192) - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Argument to -b is out of range (1..8192)"); bsdtar->bytes_per_block = 512 * t; break; @@ -251,7 +256,7 @@ main(int argc, char **argv) break; case OPTION_EXCLUDE: /* GNU tar */ if (lafe_exclude(&bsdtar->matching, bsdtar->optarg)) - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Couldn't exclude %s\n", bsdtar->optarg); break; case OPTION_FORMAT: /* GNU tar, others */ @@ -297,20 +302,20 @@ main(int argc, char **argv) * when transforming archives. */ if (lafe_include(&bsdtar->matching, bsdtar->optarg)) - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Failed to add %s to inclusion list", bsdtar->optarg); break; case 'j': /* GNU tar */ if (bsdtar->create_compression != '\0') - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Can't specify both -%c and -%c", opt, bsdtar->create_compression); bsdtar->create_compression = opt; break; case 'J': /* GNU tar 1.21 and later */ if (bsdtar->create_compression != '\0') - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Can't specify both -%c and -%c", opt, bsdtar->create_compression); bsdtar->create_compression = opt; @@ -330,7 +335,7 @@ main(int argc, char **argv) break; case OPTION_LZMA: if (bsdtar->create_compression != '\0') - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Can't specify both -%c and -%c", opt, bsdtar->create_compression); bsdtar->create_compression = opt; @@ -355,7 +360,7 @@ main(int argc, char **argv) { struct stat st; if (stat(bsdtar->optarg, &st) != 0) - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Can't open file %s", bsdtar->optarg); bsdtar->newer_ctime_sec = st.st_ctime; bsdtar->newer_ctime_nsec = @@ -369,7 +374,7 @@ main(int argc, char **argv) { struct stat st; if (stat(bsdtar->optarg, &st) != 0) - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Can't open file %s", bsdtar->optarg); bsdtar->newer_mtime_sec = st.st_mtime; bsdtar->newer_mtime_nsec = @@ -440,7 +445,7 @@ main(int argc, char **argv) #if HAVE_REGEX_H add_substitution(bsdtar, bsdtar->optarg); #else - bsdtar_warnc(0, + lafe_warnc(0, "-s is not supported by this version of bsdtar"); usage(); #endif @@ -487,7 +492,7 @@ main(int argc, char **argv) break; case 'X': /* GNU tar */ if (lafe_exclude_from_file(&bsdtar->matching, bsdtar->optarg)) - bsdtar_errc(1, 0, + lafe_errc(1, 0, "failed to process exclusions from file %s", bsdtar->optarg); break; @@ -496,21 +501,21 @@ main(int argc, char **argv) break; case 'y': /* FreeBSD version of GNU tar */ if (bsdtar->create_compression != '\0') - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Can't specify both -%c and -%c", opt, bsdtar->create_compression); bsdtar->create_compression = opt; break; case 'Z': /* GNU tar */ if (bsdtar->create_compression != '\0') - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Can't specify both -%c and -%c", opt, bsdtar->create_compression); bsdtar->create_compression = opt; break; case 'z': /* GNU tar, star, many others */ if (bsdtar->create_compression != '\0') - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Can't specify both -%c and -%c", opt, bsdtar->create_compression); bsdtar->create_compression = opt; @@ -535,7 +540,7 @@ main(int argc, char **argv) /* Otherwise, a mode is required. */ if (bsdtar->mode == '\0') - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Must specify one of -c, -r, -t, -u, -x"); /* Check boolean options only permitted in certain modes. */ @@ -615,7 +620,7 @@ main(int argc, char **argv) #endif if (bsdtar->return_value != 0) - bsdtar_warnc(0, + lafe_warnc(0, "Error exit delayed from previous errors."); return (bsdtar->return_value); } @@ -624,7 +629,7 @@ static void set_mode(struct bsdtar *bsdtar, char opt) { if (bsdtar->mode != '\0' && bsdtar->mode != opt) - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Can't specify both -%c and -%c", opt, bsdtar->mode); bsdtar->mode = opt; } @@ -636,7 +641,7 @@ static void only_mode(struct bsdtar *bsdtar, const char *opt, const char *valid_modes) { if (strchr(valid_modes, bsdtar->mode) == NULL) - bsdtar_errc(1, 0, + lafe_errc(1, 0, "Option %s is not permitted in mode -%c", opt, bsdtar->mode); } @@ -647,7 +652,7 @@ usage(void) { const char *p; - p = bsdtar_progname; + p = lafe_progname; fprintf(stderr, "Usage:\n"); fprintf(stderr, " List: %s -tf \n", p); @@ -707,7 +712,7 @@ long_help(void) const char *prog; const char *p; - prog = bsdtar_progname; + prog = lafe_progname; fflush(stderr); Modified: head/usr.bin/tar/cmdline.c ============================================================================== --- head/usr.bin/tar/cmdline.c Sun Jul 17 21:27:38 2011 (r224152) +++ head/usr.bin/tar/cmdline.c Sun Jul 17 21:33:15 2011 (r224153) @@ -221,7 +221,7 @@ bsdtar_getopt(struct bsdtar *bsdtar) if (p[1] == ':') { bsdtar->optarg = *bsdtar->argv; if (bsdtar->optarg == NULL) { - bsdtar_warnc(0, + lafe_warnc(0, "Option %c requires an argument", opt); return ('?'); @@ -288,7 +288,7 @@ bsdtar_getopt(struct bsdtar *bsdtar) /* Otherwise, pick up the next word. */ opt_word = *bsdtar->argv; if (opt_word == NULL) { - bsdtar_warnc(0, + lafe_warnc(0, "Option -%c requires an argument", opt); return ('?'); @@ -339,13 +339,13 @@ bsdtar_getopt(struct bsdtar *bsdtar) /* Fail if there wasn't a unique match. */ if (match == NULL) { - bsdtar_warnc(0, + lafe_warnc(0, "Option %s%s is not supported", long_prefix, opt_word); return ('?'); } if (match2 != NULL) { - bsdtar_warnc(0, + lafe_warnc(0, "Ambiguous option %s%s (matches --%s and --%s)", long_prefix, opt_word, match->name, match2->name); return ('?'); @@ -357,7 +357,7 @@ bsdtar_getopt(struct bsdtar *bsdtar) if (bsdtar->optarg == NULL) { bsdtar->optarg = *bsdtar->argv; if (bsdtar->optarg == NULL) { - bsdtar_warnc(0, + lafe_warnc(0, "Option %s%s requires an argument", long_prefix, match->name); return ('?'); @@ -368,7 +368,7 @@ bsdtar_getopt(struct bsdtar *bsdtar) } else { /* Argument forbidden: fail if there is one. */ if (bsdtar->optarg != NULL) { - bsdtar_warnc(0, + lafe_warnc(0, "Option %s%s does not allow an argument", long_prefix, match->name); return ('?'); Modified: head/usr.bin/tar/config_freebsd.h ============================================================================== --- head/usr.bin/tar/config_freebsd.h Sun Jul 17 21:27:38 2011 (r224152) +++ head/usr.bin/tar/config_freebsd.h Sun Jul 17 21:33:15 2011 (r224153) @@ -44,6 +44,7 @@ #undef HAVE_LIBACL #define HAVE_LIBARCHIVE 1 #define HAVE_LIMITS_H 1 +#define HAVE_LINK 1 #undef HAVE_LINUX_EXT2_FS_H #undef HAVE_LINUX_FS_H #define HAVE_LOCALE_H 1 @@ -77,5 +78,5 @@ #define HAVE_TIME_H 1 #define HAVE_UNISTD_H 1 #define HAVE_WCTYPE_H 1 +#define HAVE_WCSCMP 1 #undef HAVE_WINDOWS_H - Modified: head/usr.bin/tar/read.c ============================================================================== --- head/usr.bin/tar/read.c Sun Jul 17 21:27:38 2011 (r224152) +++ head/usr.bin/tar/read.c Sun Jul 17 21:33:15 2011 (r224153) @@ -23,7 +23,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "bsdtar_platform.h" +#include "lafe_platform.h" __FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H @@ -160,11 +160,11 @@ read_archive(struct bsdtar *bsdtar, char archive_read_support_compression_all(a); archive_read_support_format_all(a); if (ARCHIVE_OK != archive_read_set_options(a, bsdtar->option_options)) - bsdtar_errc(1, 0, "%s", archive_error_string(a)); + lafe_errc(1, 0, "%s", archive_error_string(a)); if (archive_read_open_file(a, bsdtar->filename, bsdtar->bytes_per_block != 0 ? bsdtar->bytes_per_block : DEFAULT_BYTES_PER_BLOCK)) - bsdtar_errc(1, 0, "Error opening archive: %s", + lafe_errc(1, 0, "Error opening archive: %s", archive_error_string(a)); do_chdir(bsdtar); @@ -180,9 +180,9 @@ read_archive(struct bsdtar *bsdtar, char if (mode == 'x' && bsdtar->option_chroot) { #if HAVE_CHROOT if (chroot(".") != 0) - bsdtar_errc(1, errno, "Can't chroot to \".\""); + lafe_errc(1, errno, "Can't chroot to \".\""); #else - bsdtar_errc(1, 0, + lafe_errc(1, 0, "chroot isn't supported on this platform"); #endif } @@ -198,12 +198,12 @@ read_archive(struct bsdtar *bsdtar, char if (r == ARCHIVE_EOF) break; if (r < ARCHIVE_OK) - bsdtar_warnc(0, "%s", archive_error_string(a)); + lafe_warnc(0, "%s", archive_error_string(a)); if (r <= ARCHIVE_WARN) bsdtar->return_value = 1; if (r == ARCHIVE_RETRY) { /* Retryable error: try again */ - bsdtar_warnc(0, "Retrying..."); + lafe_warnc(0, "Retrying..."); continue; } if (r == ARCHIVE_FATAL) @@ -267,17 +267,17 @@ read_archive(struct bsdtar *bsdtar, char r = archive_read_data_skip(a); if (r == ARCHIVE_WARN) { fprintf(out, "\n"); - bsdtar_warnc(0, "%s", + lafe_warnc(0, "%s", archive_error_string(a)); } if (r == ARCHIVE_RETRY) { fprintf(out, "\n"); - bsdtar_warnc(0, "%s", + lafe_warnc(0, "%s", archive_error_string(a)); } if (r == ARCHIVE_FATAL) { fprintf(out, "\n"); - bsdtar_warnc(0, "%s", + lafe_warnc(0, "%s", archive_error_string(a)); bsdtar->return_value = 1; break; @@ -329,7 +329,7 @@ read_archive(struct bsdtar *bsdtar, char r = archive_read_close(a); if (r != ARCHIVE_OK) - bsdtar_warnc(0, "%s", archive_error_string(a)); + lafe_warnc(0, "%s", archive_error_string(a)); if (r <= ARCHIVE_WARN) bsdtar->return_value = 1; Modified: head/usr.bin/tar/subst.c ============================================================================== --- head/usr.bin/tar/subst.c Sun Jul 17 21:27:38 2011 (r224152) +++ head/usr.bin/tar/subst.c Sun Jul 17 21:33:15 2011 (r224153) @@ -58,7 +58,7 @@ init_substitution(struct bsdtar *bsdtar) bsdtar->substitution = subst = malloc(sizeof(*subst)); if (subst == NULL) - bsdtar_errc(1, errno, "Out of memory"); + lafe_errc(1, errno, "Out of memory"); subst->first_rule = subst->last_rule = NULL; } @@ -78,7 +78,7 @@ add_substitution(struct bsdtar *bsdtar, rule = malloc(sizeof(*rule)); if (rule == NULL) - bsdtar_errc(1, errno, "Out of memory"); + lafe_errc(1, errno, "Out of memory"); rule->next = NULL; if (subst->last_rule == NULL) @@ -88,32 +88,32 @@ add_substitution(struct bsdtar *bsdtar, subst->last_rule = rule; if (*rule_text == '\0') - bsdtar_errc(1, 0, "Empty replacement string"); + lafe_errc(1, 0, "Empty replacement string"); end_pattern = strchr(rule_text + 1, *rule_text); if (end_pattern == NULL) - bsdtar_errc(1, 0, "Invalid replacement string"); + lafe_errc(1, 0, "Invalid replacement string"); pattern = malloc(end_pattern - rule_text); if (pattern == NULL) - bsdtar_errc(1, errno, "Out of memory"); + lafe_errc(1, errno, "Out of memory"); memcpy(pattern, rule_text + 1, end_pattern - rule_text - 1); pattern[end_pattern - rule_text - 1] = '\0'; if ((r = regcomp(&rule->re, pattern, REG_BASIC)) != 0) { char buf[80]; regerror(r, &rule->re, buf, sizeof(buf)); - bsdtar_errc(1, 0, "Invalid regular expression: %s", buf); + lafe_errc(1, 0, "Invalid regular expression: %s", buf); } free(pattern); start_subst = end_pattern + 1; end_pattern = strchr(start_subst, *rule_text); if (end_pattern == NULL) - bsdtar_errc(1, 0, "Invalid replacement string"); + lafe_errc(1, 0, "Invalid replacement string"); rule->result = malloc(end_pattern - start_subst + 1); if (rule->result == NULL) - bsdtar_errc(1, errno, "Out of memory"); + lafe_errc(1, errno, "Out of memory"); memcpy(rule->result, start_subst, end_pattern - start_subst); rule->result[end_pattern - start_subst] = '\0'; @@ -136,7 +136,7 @@ add_substitution(struct bsdtar *bsdtar, rule->symlink = 1; break; default: - bsdtar_errc(1, 0, "Invalid replacement flag %c", *end_pattern); + lafe_errc(1, 0, "Invalid replacement flag %c", *end_pattern); } } } @@ -154,7 +154,7 @@ realloc_strncat(char **str, const char * new_str = malloc(old_len + len + 1); if (new_str == NULL) - bsdtar_errc(1, errno, "Out of memory"); + lafe_errc(1, errno, "Out of memory"); memcpy(new_str, *str, old_len); memcpy(new_str + old_len, append, len); new_str[old_len + len] = '\0'; @@ -175,7 +175,7 @@ realloc_strcat(char **str, const char *a new_str = malloc(old_len + strlen(append) + 1); if (new_str == NULL) - bsdtar_errc(1, errno, "Out of memory"); + lafe_errc(1, errno, "Out of memory"); memcpy(new_str, *str, old_len); strcpy(new_str + old_len, append); free(*str); Modified: head/usr.bin/tar/test/Makefile ============================================================================== --- head/usr.bin/tar/test/Makefile Sun Jul 17 21:27:38 2011 (r224152) +++ head/usr.bin/tar/test/Makefile Sun Jul 17 21:33:15 2011 (r224153) @@ -6,16 +6,18 @@ TAR_SRCDIR=${.CURDIR}/.. # Some tar sources are pulled in for white-box tests TAR_SRCS= \ - ../getdate.c + getdate.c TESTS= \ test_0.c \ test_basic.c \ test_copy.c \ + test_empty_mtree.c \ test_getdate.c \ test_help.c \ - test_option_T.c \ + test_option_T_upper.c \ test_option_q.c \ + test_option_r.c \ test_option_s.c \ test_patterns.c \ test_stdio.c \ Modified: head/usr.bin/tar/test/main.c ============================================================================== --- head/usr.bin/tar/test/main.c Sun Jul 17 21:27:38 2011 (r224152) +++ head/usr.bin/tar/test/main.c Sun Jul 17 21:33:15 2011 (r224153) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2003-2009 Tim Kientzle * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,12 +23,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* - * Various utility routines useful for test programs. - * Each test program is linked against this file. - */ #include "test.h" - #include #include #include @@ -38,148 +33,319 @@ * This same file is used pretty much verbatim for all test harnesses. * * The next few lines are the only differences. + * TODO: Move this into a separate configuration header, have all test + * suites share one copy of this file. */ -#define PROGRAM "bsdtar" /* Name of program being tested. */ -#define ENVBASE "BSDTAR" /* Prefix for environment variables. */ +__FBSDID("$FreeBSD$"); +#define KNOWNREF "test_patterns_2.tar.uu" +#define ENVBASE "BSDTAR" /* Prefix for environment variables. */ +#define PROGRAM "bsdtar" /* Name of program being tested. */ +#undef LIBRARY /* Not testing a library. */ #undef EXTRA_DUMP /* How to dump extra data */ /* How to generate extra version info. */ #define EXTRA_VERSION (systemf("%s --version", testprog) ? "" : "") -__FBSDID("$FreeBSD$"); /* - * "list.h" is simply created by "grep DEFINE_TEST"; it has - * a line like - * DEFINE_TEST(test_function) - * for each test. - * Include it here with a suitable DEFINE_TEST to declare all of the - * test functions. + * + * Windows support routines + * + * Note: Configuration is a tricky issue. Using HAVE_* feature macros + * in the test harness is dangerous because they cover up + * configuration errors. The classic example of this is omitting a + * configure check. If libarchive and libarchive_test both look for + * the same feature macro, such errors are hard to detect. Platform + * macros (e.g., _WIN32 or __GNUC__) are a little better, but can + * easily lead to very messy code. It's best to limit yourself + * to only the most generic programming techniques in the test harness + * and thus avoid conditionals altogether. Where that's not possible, + * try to minimize conditionals by grouping platform-specific tests in + * one place (e.g., test_acl_freebsd) or by adding new assert() + * functions (e.g., assertMakeHardlink()) to cover up platform + * differences. Platform-specific coding in libarchive_test is often + * a symptom that some capability is missing from libarchive itself. */ -#undef DEFINE_TEST -#define DEFINE_TEST(name) void name(void); -#include "list.h" +#if defined(_WIN32) && !defined(__CYGWIN__) +#include +#include +#ifndef F_OK +#define F_OK (0) +#endif +#ifndef S_ISDIR +#define S_ISDIR(m) ((m) & _S_IFDIR) +#endif +#ifndef S_ISREG +#define S_ISREG(m) ((m) & _S_IFREG) +#endif +#if !defined(__BORLANDC__) +#define access _access +#undef chdir +#define chdir _chdir +#endif +#ifndef fileno +#define fileno _fileno +#endif +/*#define fstat _fstat64*/ +#if !defined(__BORLANDC__) +#define getcwd _getcwd +#endif +#define lstat stat +/*#define lstat _stat64*/ +/*#define stat _stat64*/ +#define rmdir _rmdir +#if !defined(__BORLANDC__) +#define strdup _strdup +#define umask _umask +#endif +#define int64_t __int64 +#endif + +#if defined(HAVE__CrtSetReportMode) +# include +#endif + +#if defined(_WIN32) && !defined(__CYGWIN__) +void *GetFunctionKernel32(const char *name) +{ + static HINSTANCE lib; + static int set; + if (!set) { + set = 1; + lib = LoadLibrary("kernel32.dll"); + } + if (lib == NULL) { + fprintf(stderr, "Can't load kernel32.dll?!\n"); + exit(1); + } + return (void *)GetProcAddress(lib, name); +} + +static int +my_CreateSymbolicLinkA(const char *linkname, const char *target, int flags) +{ + static BOOLEAN (WINAPI *f)(LPCSTR, LPCSTR, DWORD); + static int set; + if (!set) { + set = 1; + f = GetFunctionKernel32("CreateSymbolicLinkA"); + } + return f == NULL ? 0 : (*f)(linkname, target, flags); +} + +static int +my_CreateHardLinkA(const char *linkname, const char *target) +{ + static BOOLEAN (WINAPI *f)(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); + static int set; + if (!set) { + set = 1; + f = GetFunctionKernel32("CreateHardLinkA"); + } + return f == NULL ? 0 : (*f)(linkname, target, NULL); +} + +int +my_GetFileInformationByName(const char *path, BY_HANDLE_FILE_INFORMATION *bhfi) +{ + HANDLE h; + int r; + + memset(bhfi, 0, sizeof(*bhfi)); + h = CreateFile(path, FILE_READ_ATTRIBUTES, 0, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (h == INVALID_HANDLE_VALUE) + return (0); + r = GetFileInformationByHandle(h, bhfi); + CloseHandle(h); + return (r); +} +#endif -/* Interix doesn't define these in a standard header. */ -#if __INTERIX__ -extern char *optarg; -extern int optind; +#if defined(HAVE__CrtSetReportMode) +static void +invalid_parameter_handler(const wchar_t * expression, + const wchar_t * function, const wchar_t * file, + unsigned int line, uintptr_t pReserved) +{ + /* nop */ +} #endif +/* + * + * OPTIONS FLAGS + * + */ + /* Enable core dump on failure. */ static int dump_on_failure = 0; -/* Default is to remove temp dirs for successful tests. */ +/* Default is to remove temp dirs and log data for successful tests. */ static int keep_temp_files = 0; -/* Default is to print some basic information about each test. */ -static int quiet_flag = 0; -/* Default is to summarize repeated failures. */ -static int verbose = 0; -/* Cumulative count of component failures. */ +/* Default is to just report pass/fail for each test. */ +static int verbosity = 0; +#define VERBOSITY_SUMMARY_ONLY -1 /* -q */ +#define VERBOSITY_PASSFAIL 0 /* Default */ +#define VERBOSITY_LIGHT_REPORT 1 /* -v */ +#define VERBOSITY_FULL 2 /* -vv */ +/* A few places generate even more output for verbosity > VERBOSITY_FULL, + * mostly for debugging the test harness itself. */ +/* Cumulative count of assertion failures. */ static int failures = 0; -/* Cumulative count of skipped component tests. */ +/* Cumulative count of reported skips. */ static int skips = 0; -/* Cumulative count of assertions. */ +/* Cumulative count of assertions checked. */ static int assertions = 0; /* Directory where uuencoded reference files can be found. */ static const char *refdir; /* - * My own implementation of the standard assert() macro emits the - * message in the same format as GCC (file:line: message). - * It also includes some additional useful information. - * This makes it a lot easier to skim through test failures in - * Emacs. ;-) - * - * It also supports a few special features specifically to simplify - * test harnesses: - * failure(fmt, args) -- Stores a text string that gets - * printed if the following assertion fails, good for - * explaining subtle tests. - */ -static char msg[4096]; - -/* - * For each test source file, we remember how many times each - * failure was reported. - */ -static const char *failed_filename = NULL; -static struct line { - int line; - int count; -} failed_lines[1000]; - -/* - * Count this failure; return the number of previous failures. + * Report log information selectively to console and/or disk log. */ -static int -previous_failures(const char *filename, int line) +static int log_console = 0; +static FILE *logfile; +static void +vlogprintf(const char *fmt, va_list ap) { - unsigned int i; - int count; +#ifdef va_copy + va_list lfap; + va_copy(lfap, ap); +#endif + if (log_console) + vfprintf(stdout, fmt, ap); + if (logfile != NULL) +#ifdef va_copy + vfprintf(logfile, fmt, lfap); + va_end(lfap); +#else + vfprintf(logfile, fmt, ap); +#endif +} - if (failed_filename == NULL || strcmp(failed_filename, filename) != 0) - memset(failed_lines, 0, sizeof(failed_lines)); - failed_filename = filename; +static void +logprintf(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vlogprintf(fmt, ap); + va_end(ap); +} - for (i = 0; i < sizeof(failed_lines)/sizeof(failed_lines[0]); i++) { - if (failed_lines[i].line == line) { - count = failed_lines[i].count; - failed_lines[i].count++; - return (count); - } - if (failed_lines[i].line == 0) { - failed_lines[i].line = line; - failed_lines[i].count = 1; - return (0); - } - } - return (0); +/* Set up a message to display only if next assertion fails. */ +static char msgbuff[4096]; +static const char *msg, *nextmsg; +void +failure(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vsprintf(msgbuff, fmt, ap); + va_end(ap); + nextmsg = msgbuff; } /* * Copy arguments into file-local variables. + * This was added to permit vararg assert() functions without needing + * variadic wrapper macros. Turns out that the vararg capability is almost + * never used, so almost all of the vararg assertions can be simplified + * by removing the vararg capability and reworking the wrapper macro to + * pass __FILE__, __LINE__ directly into the function instead of using + * this hook. I suspect this machinery is used so rarely that we + * would be better off just removing it entirely. That would simplify + * the code here noticably. */ static const char *test_filename; static int test_line; static void *test_extra; -void test_setup(const char *filename, int line) +void assertion_setup(const char *filename, int line) { test_filename = filename; test_line = line; } +/* Called at the beginning of each assert() function. */ +static void +assertion_count(const char *file, int line) +{ + (void)file; /* UNUSED */ + (void)line; /* UNUSED */ + ++assertions; + /* Proper handling of "failure()" message. */ + msg = nextmsg; + nextmsg = NULL; + /* Uncomment to print file:line after every assertion. + * Verbose, but occasionally useful in tracking down crashes. */ + /* printf("Checked %s:%d\n", file, line); */ +} + /* - * Inform user that we're skipping a test. + * For each test source file, we remember how many times each + * assertion was reported. Cleared before each new test, + * used by test_summarize(). */ -void -test_skipping(const char *fmt, ...) +static struct line { + int count; + int skip; +} failed_lines[10000]; + +/* Count this failure, setup up log destination and handle initial report. */ +static void +failure_start(const char *filename, int line, const char *fmt, ...) { va_list ap; - if (previous_failures(test_filename, test_line)) - return; + /* Record another failure for this line. */ + ++failures; + /* test_filename = filename; */ + failed_lines[line].count++; + + /* Determine whether to log header to console. */ + switch (verbosity) { + case VERBOSITY_FULL: + log_console = 1; + break; + case VERBOSITY_LIGHT_REPORT: + log_console = (failed_lines[line].count < 2); + break; + default: + log_console = 0; + } + /* Log file:line header for this failure */ va_start(ap, fmt); - fprintf(stderr, " *** SKIPPING: "); - vfprintf(stderr, fmt, ap); - fprintf(stderr, "\n"); +#if _MSC_VER + logprintf("%s(%d): ", filename, line); +#else + logprintf("%s:%d: ", filename, line); +#endif + vlogprintf(fmt, ap); va_end(ap); - ++skips; + logprintf("\n"); + + if (msg != NULL && msg[0] != '\0') { + logprintf(" Description: %s\n", msg); + msg = NULL; + } + + /* Determine whether to log details to console. */ + if (verbosity == VERBOSITY_LIGHT_REPORT) + log_console = 0; } -/* Common handling of failed tests. */ +/* Complete reporting of failed tests. */ +/* + * The 'extra' hook here is used by libarchive to include libarchive + * error messages with assertion failures. It could also be used + * to add strerror() output, for example. Just define the EXTRA_DUMP() + * macro appropriately. + */ static void -report_failure(void *extra) +failure_finish(void *extra) { - if (msg[0] != '\0') { - fprintf(stderr, " Description: %s\n", msg); - msg[0] = '\0'; - } - + (void)extra; /* UNUSED (maybe) */ #ifdef EXTRA_DUMP if (extra != NULL) - fprintf(stderr, " detail: %s\n", EXTRA_DUMP(extra)); -#else - (void)extra; /* UNUSED */ + logprintf(" detail: %s\n", EXTRA_DUMP(extra)); #endif if (dump_on_failure) { @@ -190,203 +356,170 @@ report_failure(void *extra) } } -/* - * Summarize repeated failures in the just-completed test file. - * The reports above suppress multiple failures from the same source - * line; this reports on any tests that did fail multiple times. *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 21:41:13 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx2.freebsd.org (mx2.freebsd.org [IPv6:2001:4f8:fff6::35]) by hub.freebsd.org (Postfix) with ESMTP id 2A2391065674; Sun, 17 Jul 2011 21:41:13 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from 65-241-43-4.globalsuite.net (hub.freebsd.org [IPv6:2001:4f8:fff6::36]) by mx2.freebsd.org (Postfix) with ESMTP id 688FC14DDE0; Sun, 17 Jul 2011 21:41:04 +0000 (UTC) Message-ID: <4E2356EF.9000301@FreeBSD.org> Date: Sun, 17 Jul 2011 14:41:03 -0700 From: Doug Barton Organization: http://SupersetSolutions.com/ User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:5.0) Gecko/20110706 Thunderbird/5.0 MIME-Version: 1.0 To: Dimitry Andric References: <201107171951.p6HJpfim087629@svn.freebsd.org> In-Reply-To: <201107171951.p6HJpfim087629@svn.freebsd.org> X-Enigmail-Version: 1.2pre OpenPGP: id=1A1ABC84 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r224145 - in head: contrib/llvm/include/llvm contrib/llvm/include/llvm-c contrib/llvm/include/llvm-c/Transforms contrib/llvm/include/llvm/ADT contrib/llvm/include/llvm/Analysis contrib/... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 21:41:13 -0000 On 07/17/2011 12:51, Dimitry Andric wrote: > Author: dim > Date: Sun Jul 17 19:51:40 2011 > New Revision: 224145 > URL: http://svn.freebsd.org/changeset/base/224145 > > Log: > Upgrade our copy of llvm/clang to r135360, from upstream's trunk. I'm getting this with -DNO_CLEAN. I'll try again with a clean /usr/obj but I wanted to report it JIC. ===> lib/clang/libclangbasic (depend) tblgen -I /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/include/clang/Basic -I /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/include -I /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/lib/Target -gen-arm-neon-sema -o arm_neon.inc.h /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/include/clang/Basic/arm_neon.td rm -f .depend CC='clang' mkdep -f .depend -a -I/home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/include -I/home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/include -I/home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic -I. -I/home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/../../lib/clang/include -DLLVM_ON_UNIX -DLLVM_ON_FREEBSD -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DLLVM_HOSTTRIPLE=\"x86_64-unknown-freebsd9.0\" -DCLANG_PREFIX=\"/usr/obj/home/svn/head/tmp\" -I/usr/obj/home/svn/head/tmp/legacy/usr/include /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/ConvertUTF.c CC='clang' mkdep -f .depend -a -I/home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/include -I/home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/include -I/home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic -I. -I/home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/../../lib/clang/include -DLLVM_ON_UNIX -DLLVM_ON_FREEBSD -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DLLVM_HOSTTRIPLE=\"x86_64-unknown-freebsd9.0\" -DCLANG_PREFIX=\"/usr/obj/home/svn/head/tmp\" -I/usr/obj/home/svn/head/tmp/legacy/usr/include /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/Builtins.cpp /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/Diagnostic.cpp /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/FileManager.cpp /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/FileSystemStatCache.cpp /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/IdentifierTable.cpp /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/SourceLocation.cpp /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/SourceManager.cpp /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/Targets.cpp /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/TokenKinds.cpp /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/VersionTuple.cpp /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/Version.cpp In file included from /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp:17: In file included from /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/include/clang/Basic/DiagnosticCategories.h:18: In file included from /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/../../lib/clang/include/clang/Basic/DiagnosticGroups.inc:2: ./DiagnosticGroups.inc.h:359:12: error: too few arguments provided to function-like macro invocation CATEGORY("") ^ ./DiagnosticGroups.inc.h:360:23: error: too few arguments provided to function-like macro invocation CATEGORY("Parse Issue") ^ ./DiagnosticGroups.inc.h:361:41: error: too few arguments provided to function-like macro invocation CATEGORY("Lexical or Preprocessor Issue") ^ ./DiagnosticGroups.inc.h:362:26: error: too few arguments provided to function-like macro invocation CATEGORY("Semantic Issue") ^ ./DiagnosticGroups.inc.h:363:33: error: too few arguments provided to function-like macro invocation CATEGORY("Inline Assembly Issue") ^ ./DiagnosticGroups.inc.h:364:37: error: too few arguments provided to function-like macro invocation CATEGORY("Related Result Type Issue") ^ ./DiagnosticGroups.inc.h:365:30: error: too few arguments provided to function-like macro invocation CATEGORY("#warning Directive") ^ ./DiagnosticGroups.inc.h:366:24: error: too few arguments provided to function-like macro invocation CATEGORY("Deprecations") ^ ./DiagnosticGroups.inc.h:367:31: error: too few arguments provided to function-like macro invocation CATEGORY("Format String Issue") ^ ./DiagnosticGroups.inc.h:368:34: error: too few arguments provided to function-like macro invocation CATEGORY("Value Conversion Issue") ^ ./DiagnosticGroups.inc.h:369:37: error: too few arguments provided to function-like macro invocation CATEGORY("#pragma message Directive") ^ ./DiagnosticGroups.inc.h:370:31: error: too few arguments provided to function-like macro invocation CATEGORY("Unused Entity Issue") ^ In file included from /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp:218: In file included from /home/svn/head/lib/clang/libclangbasic/../../../contrib/llvm/../../lib/clang/include/clang/Basic/DiagnosticGroups.inc:2: ./DiagnosticGroups.inc.h:359:12: error: too few arguments provided to function-like macro invocation CATEGORY("") ^ ./DiagnosticGroups.inc.h:360:23: error: too few arguments provided to function-like macro invocation CATEGORY("Parse Issue") ^ ./DiagnosticGroups.inc.h:361:41: error: too few arguments provided to function-like macro invocation CATEGORY("Lexical or Preprocessor Issue") ^ ./DiagnosticGroups.inc.h:362:26: error: too few arguments provided to function-like macro invocation CATEGORY("Semantic Issue") ^ ./DiagnosticGroups.inc.h:363:33: error: too few arguments provided to function-like macro invocation CATEGORY("Inline Assembly Issue") ^ ./DiagnosticGroups.inc.h:364:37: error: too few arguments provided to function-like macro invocation CATEGORY("Related Result Type Issue") ^ ./DiagnosticGroups.inc.h:365:30: error: too few arguments provided to function-like macro invocation CATEGORY("#warning Directive") ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. mkdep: compile failed *** Error code 1 Stop in /home/svn/head/lib/clang/libclangbasic. *** Error code 1 Stop in /home/svn/head/lib/clang. *** Error code 1 Stop in /home/svn/head. *** Error code 1 Stop in /home/svn/head. *** Error code 1 -- Nothin' ever doesn't change, but nothin' changes much. -- OK Go Breadth of IT experience, and depth of knowledge in the DNS. Yours for the right price. :) http://SupersetSolutions.com/ From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 21:42:22 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B09961065670; Sun, 17 Jul 2011 21:42:22 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9DB898FC0A; Sun, 17 Jul 2011 21:42:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HLgMs0091567; Sun, 17 Jul 2011 21:42:22 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HLgMX6091558; Sun, 17 Jul 2011 21:42:22 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201107172142.p6HLgMX6091558@svn.freebsd.org> From: Martin Matuska Date: Sun, 17 Jul 2011 21:42:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224154 - in head/usr.bin/cpio: . test X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 21:42:22 -0000 Author: mm Date: Sun Jul 17 21:42:22 2011 New Revision: 224154 URL: http://svn.freebsd.org/changeset/base/224154 Log: Update bsdcpio to 2.8.4 Use common code from lib/libarchive/libarchive_fe Approved by: kientzle MFC after: 2 weeks Added: head/usr.bin/cpio/test/test_cmdline.c (contents, props changed) head/usr.bin/cpio/test/test_gcpio_compat_ref_nosym.bin.uu (contents, props changed) head/usr.bin/cpio/test/test_gcpio_compat_ref_nosym.crc.uu (contents, props changed) head/usr.bin/cpio/test/test_gcpio_compat_ref_nosym.newc.uu (contents, props changed) head/usr.bin/cpio/test/test_gcpio_compat_ref_nosym.ustar.uu (contents, props changed) head/usr.bin/cpio/test/test_option_B_upper.c (contents, props changed) head/usr.bin/cpio/test/test_option_C_upper.c (contents, props changed) head/usr.bin/cpio/test/test_option_J_upper.c (contents, props changed) head/usr.bin/cpio/test/test_option_L_upper.c (contents, props changed) head/usr.bin/cpio/test/test_option_Z_upper.c (contents, props changed) head/usr.bin/cpio/test/test_option_l.c (contents, props changed) head/usr.bin/cpio/test/test_option_lzma.c (contents, props changed) Deleted: head/usr.bin/cpio/err.c head/usr.bin/cpio/err.h head/usr.bin/cpio/line_reader.c head/usr.bin/cpio/line_reader.h head/usr.bin/cpio/matching.c head/usr.bin/cpio/matching.h head/usr.bin/cpio/pathmatch.c head/usr.bin/cpio/pathmatch.h head/usr.bin/cpio/test/test_option_B.c head/usr.bin/cpio/test/test_option_L.c head/usr.bin/cpio/test/test_option_ell.c Modified: head/usr.bin/cpio/Makefile head/usr.bin/cpio/cmdline.c head/usr.bin/cpio/config_freebsd.h head/usr.bin/cpio/cpio.c head/usr.bin/cpio/cpio.h head/usr.bin/cpio/test/Makefile head/usr.bin/cpio/test/main.c head/usr.bin/cpio/test/test.h head/usr.bin/cpio/test/test_0.c head/usr.bin/cpio/test/test_basic.c head/usr.bin/cpio/test/test_format_newc.c head/usr.bin/cpio/test/test_gcpio_compat.c head/usr.bin/cpio/test/test_option_a.c head/usr.bin/cpio/test/test_option_c.c head/usr.bin/cpio/test/test_option_d.c head/usr.bin/cpio/test/test_option_f.c head/usr.bin/cpio/test/test_option_help.c head/usr.bin/cpio/test/test_option_m.c head/usr.bin/cpio/test/test_option_t.c head/usr.bin/cpio/test/test_option_u.c head/usr.bin/cpio/test/test_option_version.c head/usr.bin/cpio/test/test_option_y.c head/usr.bin/cpio/test/test_option_z.c head/usr.bin/cpio/test/test_owner_parse.c head/usr.bin/cpio/test/test_passthrough_dotdot.c head/usr.bin/cpio/test/test_passthrough_reverse.c head/usr.bin/cpio/test/test_pathmatch.c Modified: head/usr.bin/cpio/Makefile ============================================================================== --- head/usr.bin/cpio/Makefile Sun Jul 17 21:33:15 2011 (r224153) +++ head/usr.bin/cpio/Makefile Sun Jul 17 21:42:22 2011 (r224154) @@ -3,17 +3,24 @@ .include PROG= bsdcpio -BSDCPIO_VERSION_STRING=2.8.3 -SRCS= cpio.c cmdline.c err.c line_reader.c matching.c pathmatch.c +BSDCPIO_VERSION_STRING=2.8.4 + +SRCS= cpio.c cmdline.c + +.PATH: ${.CURDIR}/../../lib/libarchive/libarchive_fe +SRCS+= err.c line_reader.c matching.c pathmatch.c + CFLAGS+= -DBSDCPIO_VERSION_STRING=\"${BSDCPIO_VERSION_STRING}\" CFLAGS+= -DPLATFORM_CONFIG_H=\"config_freebsd.h\" +CFLAGS+= -I${.CURDIR} -I${.CURDIR}/../../lib/libarchive/libarchive_fe + .ifdef RELEASE_CRUNCH # FreeBSD's installer uses cpio in crunched binaries that are # statically linked, cannot use -lcrypto, and are size sensitive. CFLAGS+= -DSMALLER .endif -DPADD= ${LIBARCHIVE} ${LIBZ} ${LIBBZ2} ${LIBMD} ${LIBLZMA} -LDADD= -larchive -lz -lbz2 -lmd -llzma +DPADD= ${LIBARCHIVE} ${LIBZ} ${LIBBZ2} ${LIBMD} ${LIBLZMA} ${LIBBSDXML} +LDADD= -larchive -lz -lbz2 -lmd -llzma -lbsdxml .if ${MK_OPENSSL} != "no" DPADD+= ${LIBCRYPTO} LDADD+= -lcrypto Modified: head/usr.bin/cpio/cmdline.c ============================================================================== --- head/usr.bin/cpio/cmdline.c Sun Jul 17 21:33:15 2011 (r224153) +++ head/usr.bin/cpio/cmdline.c Sun Jul 17 21:42:22 2011 (r224154) @@ -175,7 +175,7 @@ cpio_getopt(struct cpio *cpio) /* Otherwise, pick up the next word. */ opt_word = *cpio->argv; if (opt_word == NULL) { - warnc(0, + lafe_warnc(0, "Option -%c requires an argument", opt); return ('?'); @@ -226,13 +226,13 @@ cpio_getopt(struct cpio *cpio) /* Fail if there wasn't a unique match. */ if (match == NULL) { - warnc(0, + lafe_warnc(0, "Option %s%s is not supported", long_prefix, opt_word); return ('?'); } if (match2 != NULL) { - warnc(0, + lafe_warnc(0, "Ambiguous option %s%s (matches --%s and --%s)", long_prefix, opt_word, match->name, match2->name); return ('?'); @@ -244,7 +244,7 @@ cpio_getopt(struct cpio *cpio) if (cpio->optarg == NULL) { cpio->optarg = *cpio->argv; if (cpio->optarg == NULL) { - warnc(0, + lafe_warnc(0, "Option %s%s requires an argument", long_prefix, match->name); return ('?'); @@ -255,7 +255,7 @@ cpio_getopt(struct cpio *cpio) } else { /* Argument forbidden: fail if there is one. */ if (cpio->optarg != NULL) { - warnc(0, + lafe_warnc(0, "Option %s%s does not allow an argument", long_prefix, match->name); return ('?'); Modified: head/usr.bin/cpio/config_freebsd.h ============================================================================== --- head/usr.bin/cpio/config_freebsd.h Sun Jul 17 21:33:15 2011 (r224153) +++ head/usr.bin/cpio/config_freebsd.h Sun Jul 17 21:42:22 2011 (r224154) @@ -53,4 +53,5 @@ #define HAVE_UNSIGNED_LONG_LONG 1 #define HAVE_UTIME_H 1 #define HAVE_UTIMES 1 +#define HAVE_WCSCMP 1 Modified: head/usr.bin/cpio/cpio.c ============================================================================== --- head/usr.bin/cpio/cpio.c Sun Jul 17 21:33:15 2011 (r224153) +++ head/usr.bin/cpio/cpio.c Sun Jul 17 21:42:22 2011 (r224154) @@ -136,19 +136,19 @@ main(int argc, char *argv[]) cpio->buff = buff; cpio->buff_size = sizeof(buff); - /* Need progname before calling warnc. */ + /* Need lafe_progname before calling lafe_warnc. */ if (*argv == NULL) - progname = "bsdcpio"; + lafe_progname = "bsdcpio"; else { #if defined(_WIN32) && !defined(__CYGWIN__) - progname = strrchr(*argv, '\\'); + lafe_progname = strrchr(*argv, '\\'); #else - progname = strrchr(*argv, '/'); + lafe_progname = strrchr(*argv, '/'); #endif - if (progname != NULL) - progname++; + if (lafe_progname != NULL) + lafe_progname++; else - progname = *argv; + lafe_progname = *argv; } cpio->uid_override = -1; @@ -189,7 +189,7 @@ main(int argc, char *argv[]) case 'C': /* NetBSD/OpenBSD */ cpio->bytes_per_block = atoi(cpio->optarg); if (cpio->bytes_per_block <= 0) - errc(1, 0, "Invalid blocksize %s", cpio->optarg); + lafe_errc(1, 0, "Invalid blocksize %s", cpio->optarg); break; case 'c': /* POSIX 1997 */ cpio->format = "odc"; @@ -198,14 +198,14 @@ main(int argc, char *argv[]) cpio->extract_flags &= ~ARCHIVE_EXTRACT_NO_AUTODIR; break; case 'E': /* NetBSD/OpenBSD */ - include_from_file(&cpio->matching, + lafe_include_from_file(&cpio->matching, cpio->optarg, cpio->option_null); break; case 'F': /* NetBSD/OpenBSD/GNU cpio */ cpio->filename = cpio->optarg; break; case 'f': /* POSIX 1997 */ - exclude(&cpio->matching, cpio->optarg); + lafe_exclude(&cpio->matching, cpio->optarg); break; case 'H': /* GNU cpio (also --format) */ cpio->format = cpio->optarg; @@ -218,7 +218,7 @@ main(int argc, char *argv[]) break; case 'i': /* POSIX 1997 */ if (cpio->mode != '\0') - errc(1, 0, + lafe_errc(1, 0, "Cannot use both -i and -%c", cpio->mode); cpio->mode = opt; break; @@ -255,13 +255,13 @@ main(int argc, char *argv[]) break; case 'o': /* POSIX 1997 */ if (cpio->mode != '\0') - errc(1, 0, + lafe_errc(1, 0, "Cannot use both -o and -%c", cpio->mode); cpio->mode = opt; break; case 'p': /* POSIX 1997 */ if (cpio->mode != '\0') - errc(1, 0, + lafe_errc(1, 0, "Cannot use both -p and -%c", cpio->mode); cpio->mode = opt; cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NODOTDOT; @@ -277,7 +277,7 @@ main(int argc, char *argv[]) * also; use that to set [ug]name_override. */ errmsg = owner_parse(cpio->optarg, &uid, &gid); if (errmsg) { - warnc(-1, "%s", errmsg); + lafe_warnc(-1, "%s", errmsg); usage(); } if (uid != -1) { @@ -335,16 +335,16 @@ main(int argc, char *argv[]) cpio->mode = 'i'; /* -t requires -i */ if (cpio->option_list && cpio->mode != 'i') - errc(1, 0, "Option -t requires -i"); + lafe_errc(1, 0, "Option -t requires -i"); /* -n requires -it */ if (cpio->option_numeric_uid_gid && !cpio->option_list) - errc(1, 0, "Option -n requires -it"); + lafe_errc(1, 0, "Option -n requires -it"); /* Can only specify format when writing */ if (cpio->format != NULL && cpio->mode != 'o') - errc(1, 0, "Option --format requires -o"); + lafe_errc(1, 0, "Option --format requires -o"); /* -l requires -p */ if (cpio->option_link && cpio->mode != 'p') - errc(1, 0, "Option -l requires -p"); + lafe_errc(1, 0, "Option -l requires -p"); /* TODO: Flag other nonsensical combinations. */ switch (cpio->mode) { @@ -358,7 +358,7 @@ main(int argc, char *argv[]) break; case 'i': while (*cpio->argv != NULL) { - include(&cpio->matching, *cpio->argv); + lafe_include(&cpio->matching, *cpio->argv); --cpio->argc; ++cpio->argv; } @@ -369,12 +369,12 @@ main(int argc, char *argv[]) break; case 'p': if (*cpio->argv == NULL || **cpio->argv == '\0') - errc(1, 0, + lafe_errc(1, 0, "-p mode requires a target directory"); mode_pass(cpio, *cpio->argv); break; default: - errc(1, 0, + lafe_errc(1, 0, "Must specify at least one of -i, -o, or -p"); } @@ -388,7 +388,7 @@ usage(void) { const char *p; - p = progname; + p = lafe_progname; fprintf(stderr, "Brief Usage:\n"); fprintf(stderr, " List: %s -it < archive\n", p); @@ -426,7 +426,7 @@ long_help(void) const char *prog; const char *p; - prog = progname; + prog = lafe_progname; fflush(stderr); @@ -459,16 +459,16 @@ static void mode_out(struct cpio *cpio) { struct archive_entry *entry, *spare; - struct line_reader *lr; + struct lafe_line_reader *lr; const char *p; int r; if (cpio->option_append) - errc(1, 0, "Append mode not yet supported."); + lafe_errc(1, 0, "Append mode not yet supported."); cpio->archive_read_disk = archive_read_disk_new(); if (cpio->archive_read_disk == NULL) - errc(1, 0, "Failed to allocate archive object"); + lafe_errc(1, 0, "Failed to allocate archive object"); if (cpio->option_follow_links) archive_read_disk_set_symlink_logical(cpio->archive_read_disk); else @@ -477,7 +477,7 @@ mode_out(struct cpio *cpio) cpio->archive = archive_write_new(); if (cpio->archive == NULL) - errc(1, 0, "Failed to allocate archive object"); + lafe_errc(1, 0, "Failed to allocate archive object"); switch (cpio->compress) { case 'J': r = archive_write_set_compression_xz(cpio->archive); @@ -499,10 +499,10 @@ mode_out(struct cpio *cpio) break; } if (r < ARCHIVE_WARN) - errc(1, 0, "Requested compression not available"); + lafe_errc(1, 0, "Requested compression not available"); r = archive_write_set_format_by_name(cpio->archive, cpio->format); if (r != ARCHIVE_OK) - errc(1, 0, "%s", archive_error_string(cpio->archive)); + lafe_errc(1, 0, "%s", archive_error_string(cpio->archive)); archive_write_set_bytes_per_block(cpio->archive, cpio->bytes_per_block); cpio->linkresolver = archive_entry_linkresolver_new(); archive_entry_linkresolver_set_strategy(cpio->linkresolver, @@ -513,11 +513,11 @@ mode_out(struct cpio *cpio) */ r = archive_write_open_file(cpio->archive, cpio->filename); if (r != ARCHIVE_OK) - errc(1, 0, "%s", archive_error_string(cpio->archive)); - lr = line_reader("-", cpio->option_null); - while ((p = line_reader_next(lr)) != NULL) + lafe_errc(1, 0, "%s", archive_error_string(cpio->archive)); + lr = lafe_line_reader("-", cpio->option_null); + while ((p = lafe_line_reader_next(lr)) != NULL) file_to_archive(cpio, p); - line_reader_free(lr); + lafe_line_reader_free(lr); /* * The hardlink detection may have queued up a couple of entries @@ -534,7 +534,7 @@ mode_out(struct cpio *cpio) r = archive_write_close(cpio->archive); if (r != ARCHIVE_OK) - errc(1, 0, "%s", archive_error_string(cpio->archive)); + lafe_errc(1, 0, "%s", archive_error_string(cpio->archive)); if (!cpio->quiet) { int64_t blocks = @@ -566,15 +566,15 @@ file_to_archive(struct cpio *cpio, const */ entry = archive_entry_new(); if (entry == NULL) - errc(1, 0, "Couldn't allocate entry"); + lafe_errc(1, 0, "Couldn't allocate entry"); archive_entry_copy_sourcepath(entry, srcpath); r = archive_read_disk_entry_from_file(cpio->archive_read_disk, entry, -1, NULL); if (r < ARCHIVE_FAILED) - errc(1, 0, "%s", + lafe_errc(1, 0, "%s", archive_error_string(cpio->archive_read_disk)); if (r < ARCHIVE_OK) - warnc(0, "%s", + lafe_warnc(0, "%s", archive_error_string(cpio->archive_read_disk)); if (r <= ARCHIVE_FAILED) { cpio->return_value = 1; @@ -607,7 +607,7 @@ file_to_archive(struct cpio *cpio, const free(cpio->pass_destpath); cpio->pass_destpath = malloc(cpio->pass_destpath_alloc); if (cpio->pass_destpath == NULL) - errc(1, ENOMEM, + lafe_errc(1, ENOMEM, "Can't allocate path buffer"); } strcpy(cpio->pass_destpath, cpio->destdir); @@ -673,7 +673,7 @@ entry_to_archive(struct cpio *cpio, stru /* Save the original entry in case we need it later. */ t = archive_entry_clone(entry); if (t == NULL) - errc(1, ENOMEM, "Can't create link"); + lafe_errc(1, ENOMEM, "Can't create link"); /* Note: link(2) doesn't create parent directories, * so we use archive_write_header() instead as a * convenience. */ @@ -683,7 +683,7 @@ entry_to_archive(struct cpio *cpio, stru r = archive_write_header(cpio->archive, t); archive_entry_free(t); if (r != ARCHIVE_OK) - warnc(archive_errno(cpio->archive), + lafe_warnc(archive_errno(cpio->archive), "%s", archive_error_string(cpio->archive)); if (r == ARCHIVE_FATAL) exit(1); @@ -691,7 +691,7 @@ entry_to_archive(struct cpio *cpio, stru if (r != ARCHIVE_OK && archive_errno(cpio->archive) == EXDEV) { /* Cross-device link: Just fall through and use * the original entry to copy the file over. */ - warnc(0, "Copying file instead"); + lafe_warnc(0, "Copying file instead"); } else #endif return (0); @@ -705,7 +705,7 @@ entry_to_archive(struct cpio *cpio, stru if (archive_entry_size(entry) > 0) { fd = open(srcpath, O_RDONLY | O_BINARY); if (fd < 0) { - warnc(errno, + lafe_warnc(errno, "%s: could not open file", srcpath); goto cleanup; } @@ -717,7 +717,7 @@ entry_to_archive(struct cpio *cpio, stru r = archive_write_header(cpio->archive, entry); if (r != ARCHIVE_OK) - warnc(archive_errno(cpio->archive), + lafe_warnc(archive_errno(cpio->archive), "%s: %s", srcpath, archive_error_string(cpio->archive)); @@ -731,10 +731,10 @@ entry_to_archive(struct cpio *cpio, stru r = archive_write_data(cpio->archive, cpio->buff, bytes_read); if (r < 0) - errc(1, archive_errno(cpio->archive), + lafe_errc(1, archive_errno(cpio->archive), "%s", archive_error_string(cpio->archive)); if (r < bytes_read) { - warnc(0, + lafe_warnc(0, "Truncated write; file may have grown while being archived."); } bytes_read = read(fd, cpio->buff, cpio->buff_size); @@ -763,7 +763,7 @@ restore_time(struct cpio *cpio, struct a (void)name; /* UNUSED */ if (!warned) - warnc(0, "Can't restore access times on this platform"); + lafe_warnc(0, "Can't restore access times on this platform"); warned = 1; return (fd); #else @@ -801,7 +801,7 @@ restore_time(struct cpio *cpio, struct a if ((AE_IFLNK != archive_entry_filetype(entry)) && utimes(name, times) != 0) #endif - warnc(errno, "Can't update time for %s", name); + lafe_warnc(errno, "Can't update time for %s", name); #endif return (fd); } @@ -818,28 +818,28 @@ mode_in(struct cpio *cpio) ext = archive_write_disk_new(); if (ext == NULL) - errc(1, 0, "Couldn't allocate restore object"); + lafe_errc(1, 0, "Couldn't allocate restore object"); r = archive_write_disk_set_options(ext, cpio->extract_flags); if (r != ARCHIVE_OK) - errc(1, 0, "%s", archive_error_string(ext)); + lafe_errc(1, 0, "%s", archive_error_string(ext)); a = archive_read_new(); if (a == NULL) - errc(1, 0, "Couldn't allocate archive object"); + lafe_errc(1, 0, "Couldn't allocate archive object"); archive_read_support_compression_all(a); archive_read_support_format_all(a); if (archive_read_open_file(a, cpio->filename, cpio->bytes_per_block)) - errc(1, archive_errno(a), + lafe_errc(1, archive_errno(a), "%s", archive_error_string(a)); for (;;) { r = archive_read_next_header(a, &entry); if (r == ARCHIVE_EOF) break; if (r != ARCHIVE_OK) { - errc(1, archive_errno(a), + lafe_errc(1, archive_errno(a), "%s", archive_error_string(a)); } - if (excluded(cpio->matching, archive_entry_pathname(entry))) + if (lafe_excluded(cpio->matching, archive_entry_pathname(entry))) continue; if (cpio->option_rename) { destpath = cpio_rename(archive_entry_pathname(entry)); @@ -867,10 +867,10 @@ mode_in(struct cpio *cpio) } r = archive_read_close(a); if (r != ARCHIVE_OK) - errc(1, 0, "%s", archive_error_string(a)); + lafe_errc(1, 0, "%s", archive_error_string(a)); r = archive_write_close(ext); if (r != ARCHIVE_OK) - errc(1, 0, "%s", archive_error_string(ext)); + lafe_errc(1, 0, "%s", archive_error_string(ext)); if (!cpio->quiet) { int64_t blocks = (archive_position_uncompressed(a) + 511) / 512; @@ -899,13 +899,13 @@ extract_data(struct archive *ar, struct if (r == ARCHIVE_EOF) return (ARCHIVE_OK); if (r != ARCHIVE_OK) { - warnc(archive_errno(ar), + lafe_warnc(archive_errno(ar), "%s", archive_error_string(ar)); exit(1); } r = archive_write_data_block(aw, block, size, offset); if (r != ARCHIVE_OK) { - warnc(archive_errno(aw), + lafe_warnc(archive_errno(aw), "%s", archive_error_string(aw)); return (r); } @@ -921,22 +921,22 @@ mode_list(struct cpio *cpio) a = archive_read_new(); if (a == NULL) - errc(1, 0, "Couldn't allocate archive object"); + lafe_errc(1, 0, "Couldn't allocate archive object"); archive_read_support_compression_all(a); archive_read_support_format_all(a); if (archive_read_open_file(a, cpio->filename, cpio->bytes_per_block)) - errc(1, archive_errno(a), + lafe_errc(1, archive_errno(a), "%s", archive_error_string(a)); for (;;) { r = archive_read_next_header(a, &entry); if (r == ARCHIVE_EOF) break; if (r != ARCHIVE_OK) { - errc(1, archive_errno(a), + lafe_errc(1, archive_errno(a), "%s", archive_error_string(a)); } - if (excluded(cpio->matching, archive_entry_pathname(entry))) + if (lafe_excluded(cpio->matching, archive_entry_pathname(entry))) continue; if (cpio->verbose) list_item_verbose(cpio, entry); @@ -945,7 +945,7 @@ mode_list(struct cpio *cpio) } r = archive_read_close(a); if (r != ARCHIVE_OK) - errc(1, 0, "%s", archive_error_string(a)); + lafe_errc(1, 0, "%s", archive_error_string(a)); if (!cpio->quiet) { int64_t blocks = (archive_position_uncompressed(a) + 511) / 512; @@ -1040,7 +1040,7 @@ list_item_verbose(struct cpio *cpio, str static void mode_pass(struct cpio *cpio, const char *destdir) { - struct line_reader *lr; + struct lafe_line_reader *lr; const char *p; int r; @@ -1052,31 +1052,31 @@ mode_pass(struct cpio *cpio, const char cpio->archive = archive_write_disk_new(); if (cpio->archive == NULL) - errc(1, 0, "Failed to allocate archive object"); + lafe_errc(1, 0, "Failed to allocate archive object"); r = archive_write_disk_set_options(cpio->archive, cpio->extract_flags); if (r != ARCHIVE_OK) - errc(1, 0, "%s", archive_error_string(cpio->archive)); + lafe_errc(1, 0, "%s", archive_error_string(cpio->archive)); cpio->linkresolver = archive_entry_linkresolver_new(); archive_write_disk_set_standard_lookup(cpio->archive); cpio->archive_read_disk = archive_read_disk_new(); if (cpio->archive_read_disk == NULL) - errc(1, 0, "Failed to allocate archive object"); + lafe_errc(1, 0, "Failed to allocate archive object"); if (cpio->option_follow_links) archive_read_disk_set_symlink_logical(cpio->archive_read_disk); else archive_read_disk_set_symlink_physical(cpio->archive_read_disk); archive_read_disk_set_standard_lookup(cpio->archive_read_disk); - lr = line_reader("-", cpio->option_null); - while ((p = line_reader_next(lr)) != NULL) + lr = lafe_line_reader("-", cpio->option_null); + while ((p = lafe_line_reader_next(lr)) != NULL) file_to_archive(cpio, p); - line_reader_free(lr); + lafe_line_reader_free(lr); archive_entry_linkresolver_free(cpio->linkresolver); r = archive_write_close(cpio->archive); if (r != ARCHIVE_OK) - errc(1, 0, "%s", archive_error_string(cpio->archive)); + lafe_errc(1, 0, "%s", archive_error_string(cpio->archive)); if (!cpio->quiet) { int64_t blocks = @@ -1160,7 +1160,7 @@ lookup_name(struct cpio *cpio, struct na if (*name_cache_variable == NULL) { *name_cache_variable = malloc(sizeof(struct name_cache)); if (*name_cache_variable == NULL) - errc(1, ENOMEM, "No more memory"); + lafe_errc(1, ENOMEM, "No more memory"); memset(*name_cache_variable, 0, sizeof(struct name_cache)); (*name_cache_variable)->size = name_cache_size; } @@ -1217,7 +1217,7 @@ lookup_uname_helper(struct cpio *cpio, c if (pwent == NULL) { *name = NULL; if (errno != 0 && errno != ENOENT) - warnc(errno, "getpwuid(%d) failed", id); + lafe_warnc(errno, "getpwuid(%d) failed", id); return (errno); } @@ -1244,7 +1244,7 @@ lookup_gname_helper(struct cpio *cpio, c if (grent == NULL) { *name = NULL; if (errno != 0) - warnc(errno, "getgrgid(%d) failed", id); + lafe_warnc(errno, "getgrgid(%d) failed", id); return (errno); } Modified: head/usr.bin/cpio/cpio.h ============================================================================== --- head/usr.bin/cpio/cpio.h Sun Jul 17 21:33:15 2011 (r224153) +++ head/usr.bin/cpio/cpio.h Sun Jul 17 21:42:22 2011 (r224154) @@ -88,7 +88,7 @@ struct cpio { struct name_cache *gname_cache; /* Work data. */ - struct matching *matching; + struct lafe_matching *matching; char *buff; size_t buff_size; }; Modified: head/usr.bin/cpio/test/Makefile ============================================================================== --- head/usr.bin/cpio/test/Makefile Sun Jul 17 21:33:15 2011 (r224153) +++ head/usr.bin/cpio/test/Makefile Sun Jul 17 21:42:22 2011 (r224154) @@ -2,24 +2,30 @@ # Where to find the cpio sources (for the internal unit tests) CPIO_SRCDIR=${.CURDIR}/.. -.PATH: ${CPIO_SRCDIR} -# Some cpio sources are pulled in for white-box tests -CPIO_SRCS= cmdline.c err.c pathmatch.c +.PATH: ${CPIO_SRCDIR} +CPIO_SRCS= cmdline.c + +.PATH: ${.CURDIR}/../../../lib/libarchive/libarchive_fe +TAR_SRCS= err.c pathmatch.c TESTS= \ test_0.c \ test_basic.c \ test_format_newc.c \ test_gcpio_compat.c \ + test_option_B_upper.c \ + test_option_C_upper.c \ + test_option_J_upper.c \ + test_option_L_upper.c \ + test_option_Z_upper.c \ test_option_a.c \ - test_option_B.c \ test_option_c.c \ test_option_d.c \ test_option_f.c \ test_option_help.c \ - test_option_L.c \ - test_option_ell.c \ + test_option_l.c \ + test_option_lzma.c \ test_option_m.c \ test_option_t.c \ test_option_u.c \ @@ -34,6 +40,7 @@ TESTS= \ # Build the test program SRCS= list.h \ ${CPIO_SRCS} \ + ${TAR_SRCS} \ ${TESTS} \ main.c @@ -46,9 +53,11 @@ DPADD=${LIBARCHIVE} ${LIBBZ2} ${LIBZ} ${ CFLAGS+= -DPLATFORM_CONFIG_H=\"config_freebsd.h\" CFLAGS+= -I.. LDADD= -larchive -lz -lbz2 -llzma -CFLAGS+= -static -g -O2 -Wall +#CFLAGS+= -static -g -O2 -Wall +CFLAGS+= -g -O2 -Wall CFLAGS+= -I${.OBJDIR} CFLAGS+= -I${CPIO_SRCDIR} +CFLAGS+= -I${.CURDIR}/../../../lib/libarchive/libarchive_fe # Uncomment to link against dmalloc #LDADD+= -L/usr/local/lib -ldmalloc Modified: head/usr.bin/cpio/test/main.c ============================================================================== --- head/usr.bin/cpio/test/main.c Sun Jul 17 21:33:15 2011 (r224153) +++ head/usr.bin/cpio/test/main.c Sun Jul 17 21:42:22 2011 (r224154) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2003-2009 Tim Kientzle * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,12 +23,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* - * Various utility routines useful for test programs. - * Each test program is linked against this file. - */ #include "test.h" - #include #include #include @@ -38,149 +33,318 @@ * This same file is used pretty much verbatim for all test harnesses. * * The next few lines are the only differences. + * TODO: Move this into a separate configuration header, have all test + * suites share one copy of this file. */ -#define PROGRAM "bsdcpio" /* Name of program being tested. */ +__FBSDID("$FreeBSD$"); +#define KNOWNREF "test_option_f.cpio.uu" #define ENVBASE "BSDCPIO" /* Prefix for environment variables. */ +#define PROGRAM "bsdcpio" /* Name of program being tested. */ +#undef LIBRARY /* Not testing a library. */ #undef EXTRA_DUMP /* How to dump extra data */ /* How to generate extra version info. */ #define EXTRA_VERSION (systemf("%s --version", testprog) ? "" : "") -#define KNOWNREF "test_option_f.cpio.uu" -__FBSDID("$FreeBSD$"); /* - * "list.h" is simply created by "grep DEFINE_TEST"; it has - * a line like - * DEFINE_TEST(test_function) - * for each test. - * Include it here with a suitable DEFINE_TEST to declare all of the - * test functions. + * + * Windows support routines + * + * Note: Configuration is a tricky issue. Using HAVE_* feature macros + * in the test harness is dangerous because they cover up + * configuration errors. The classic example of this is omitting a + * configure check. If libarchive and libarchive_test both look for + * the same feature macro, such errors are hard to detect. Platform + * macros (e.g., _WIN32 or __GNUC__) are a little better, but can + * easily lead to very messy code. It's best to limit yourself + * to only the most generic programming techniques in the test harness + * and thus avoid conditionals altogether. Where that's not possible, + * try to minimize conditionals by grouping platform-specific tests in + * one place (e.g., test_acl_freebsd) or by adding new assert() + * functions (e.g., assertMakeHardlink()) to cover up platform + * differences. Platform-specific coding in libarchive_test is often + * a symptom that some capability is missing from libarchive itself. */ -#undef DEFINE_TEST -#define DEFINE_TEST(name) void name(void); -#include "list.h" +#if defined(_WIN32) && !defined(__CYGWIN__) +#include +#include +#ifndef F_OK +#define F_OK (0) +#endif +#ifndef S_ISDIR +#define S_ISDIR(m) ((m) & _S_IFDIR) +#endif +#ifndef S_ISREG +#define S_ISREG(m) ((m) & _S_IFREG) +#endif +#if !defined(__BORLANDC__) +#define access _access +#define chdir _chdir +#endif +#ifndef fileno +#define fileno _fileno +#endif +/*#define fstat _fstat64*/ +#if !defined(__BORLANDC__) +#define getcwd _getcwd +#endif +#define lstat stat +/*#define lstat _stat64*/ +/*#define stat _stat64*/ +#define rmdir _rmdir +#if !defined(__BORLANDC__) +#define strdup _strdup +#define umask _umask +#endif +#define int64_t __int64 +#endif + +#if defined(HAVE__CrtSetReportMode) +# include +#endif + +#if defined(_WIN32) && !defined(__CYGWIN__) +void *GetFunctionKernel32(const char *name) +{ + static HINSTANCE lib; + static int set; + if (!set) { + set = 1; + lib = LoadLibrary("kernel32.dll"); + } + if (lib == NULL) { + fprintf(stderr, "Can't load kernel32.dll?!\n"); + exit(1); + } + return (void *)GetProcAddress(lib, name); +} + +static int +my_CreateSymbolicLinkA(const char *linkname, const char *target, int flags) +{ + static BOOLEAN (WINAPI *f)(LPCSTR, LPCSTR, DWORD); + static int set; + if (!set) { + set = 1; + f = GetFunctionKernel32("CreateSymbolicLinkA"); + } + return f == NULL ? 0 : (*f)(linkname, target, flags); +} + +static int +my_CreateHardLinkA(const char *linkname, const char *target) +{ + static BOOLEAN (WINAPI *f)(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); + static int set; + if (!set) { + set = 1; + f = GetFunctionKernel32("CreateHardLinkA"); + } + return f == NULL ? 0 : (*f)(linkname, target, NULL); +} + +int +my_GetFileInformationByName(const char *path, BY_HANDLE_FILE_INFORMATION *bhfi) +{ + HANDLE h; + int r; -/* Interix doesn't define these in a standard header. */ -#if __INTERIX__ -extern char *optarg; -extern int optind; + memset(bhfi, 0, sizeof(*bhfi)); + h = CreateFile(path, FILE_READ_ATTRIBUTES, 0, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (h == INVALID_HANDLE_VALUE) + return (0); + r = GetFileInformationByHandle(h, bhfi); + CloseHandle(h); + return (r); +} #endif +#if defined(HAVE__CrtSetReportMode) +static void +invalid_parameter_handler(const wchar_t * expression, + const wchar_t * function, const wchar_t * file, + unsigned int line, uintptr_t pReserved) +{ + /* nop */ +} +#endif + +/* + * + * OPTIONS FLAGS + * + */ + /* Enable core dump on failure. */ static int dump_on_failure = 0; -/* Default is to remove temp dirs for successful tests. */ +/* Default is to remove temp dirs and log data for successful tests. */ static int keep_temp_files = 0; -/* Default is to print some basic information about each test. */ -static int quiet_flag = 0; -/* Default is to summarize repeated failures. */ -static int verbose = 0; -/* Cumulative count of component failures. */ +/* Default is to just report pass/fail for each test. */ +static int verbosity = 0; +#define VERBOSITY_SUMMARY_ONLY -1 /* -q */ +#define VERBOSITY_PASSFAIL 0 /* Default */ +#define VERBOSITY_LIGHT_REPORT 1 /* -v */ +#define VERBOSITY_FULL 2 /* -vv */ +/* A few places generate even more output for verbosity > VERBOSITY_FULL, + * mostly for debugging the test harness itself. */ +/* Cumulative count of assertion failures. */ static int failures = 0; -/* Cumulative count of skipped component tests. */ +/* Cumulative count of reported skips. */ static int skips = 0; -/* Cumulative count of assertions. */ +/* Cumulative count of assertions checked. */ static int assertions = 0; /* Directory where uuencoded reference files can be found. */ static const char *refdir; /* - * My own implementation of the standard assert() macro emits the - * message in the same format as GCC (file:line: message). - * It also includes some additional useful information. - * This makes it a lot easier to skim through test failures in - * Emacs. ;-) - * - * It also supports a few special features specifically to simplify - * test harnesses: - * failure(fmt, args) -- Stores a text string that gets - * printed if the following assertion fails, good for - * explaining subtle tests. - */ -static char msg[4096]; - -/* - * For each test source file, we remember how many times each - * failure was reported. + * Report log information selectively to console and/or disk log. */ -static const char *failed_filename = NULL; -static struct line { - int line; - int count; -} failed_lines[1000]; - -/* - * Count this failure; return the number of previous failures. - */ -static int -previous_failures(const char *filename, int line) +static int log_console = 0; +static FILE *logfile; +static void +vlogprintf(const char *fmt, va_list ap) { - unsigned int i; - int count; +#ifdef va_copy + va_list lfap; + va_copy(lfap, ap); +#endif + if (log_console) + vfprintf(stdout, fmt, ap); + if (logfile != NULL) +#ifdef va_copy + vfprintf(logfile, fmt, lfap); + va_end(lfap); +#else + vfprintf(logfile, fmt, ap); +#endif +} - if (failed_filename == NULL || strcmp(failed_filename, filename) != 0) - memset(failed_lines, 0, sizeof(failed_lines)); - failed_filename = filename; +static void +logprintf(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vlogprintf(fmt, ap); + va_end(ap); +} - for (i = 0; i < sizeof(failed_lines)/sizeof(failed_lines[0]); i++) { - if (failed_lines[i].line == line) { - count = failed_lines[i].count; - failed_lines[i].count++; - return (count); - } - if (failed_lines[i].line == 0) { - failed_lines[i].line = line; - failed_lines[i].count = 1; - return (0); - } - } - return (0); +/* Set up a message to display only if next assertion fails. */ +static char msgbuff[4096]; +static const char *msg, *nextmsg; +void +failure(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vsprintf(msgbuff, fmt, ap); + va_end(ap); + nextmsg = msgbuff; } /* * Copy arguments into file-local variables. + * This was added to permit vararg assert() functions without needing + * variadic wrapper macros. Turns out that the vararg capability is almost + * never used, so almost all of the vararg assertions can be simplified + * by removing the vararg capability and reworking the wrapper macro to + * pass __FILE__, __LINE__ directly into the function instead of using + * this hook. I suspect this machinery is used so rarely that we + * would be better off just removing it entirely. That would simplify + * the code here noticably. */ static const char *test_filename; static int test_line; static void *test_extra; -void test_setup(const char *filename, int line) +void assertion_setup(const char *filename, int line) { test_filename = filename; test_line = line; } +/* Called at the beginning of each assert() function. */ +static void +assertion_count(const char *file, int line) +{ + (void)file; /* UNUSED */ + (void)line; /* UNUSED */ + ++assertions; + /* Proper handling of "failure()" message. */ + msg = nextmsg; + nextmsg = NULL; + /* Uncomment to print file:line after every assertion. + * Verbose, but occasionally useful in tracking down crashes. */ + /* printf("Checked %s:%d\n", file, line); */ +} + /* - * Inform user that we're skipping a test. + * For each test source file, we remember how many times each + * assertion was reported. Cleared before each new test, + * used by test_summarize(). */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 21:52:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 09956106564A; Sun, 17 Jul 2011 21:52:56 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EC8E38FC15; Sun, 17 Jul 2011 21:52:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HLqtj3091920; Sun, 17 Jul 2011 21:52:55 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HLqtUK091918; Sun, 17 Jul 2011 21:52:55 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201107172152.p6HLqtUK091918@svn.freebsd.org> From: Martin Matuska Date: Sun, 17 Jul 2011 21:52:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224155 - head/usr.bin/cpio/test X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 21:52:56 -0000 Author: mm Date: Sun Jul 17 21:52:55 2011 New Revision: 224155 URL: http://svn.freebsd.org/changeset/base/224155 Log: Append to CPIO_SRCS instead of using TAR_SRCS, the variable name is misleading MFC after: 2 weeks Modified: head/usr.bin/cpio/test/Makefile Modified: head/usr.bin/cpio/test/Makefile ============================================================================== --- head/usr.bin/cpio/test/Makefile Sun Jul 17 21:42:22 2011 (r224154) +++ head/usr.bin/cpio/test/Makefile Sun Jul 17 21:52:55 2011 (r224155) @@ -7,7 +7,7 @@ CPIO_SRCDIR=${.CURDIR}/.. CPIO_SRCS= cmdline.c .PATH: ${.CURDIR}/../../../lib/libarchive/libarchive_fe -TAR_SRCS= err.c pathmatch.c +CPIO_SRCS+= err.c pathmatch.c TESTS= \ test_0.c \ @@ -40,7 +40,6 @@ TESTS= \ # Build the test program SRCS= list.h \ ${CPIO_SRCS} \ - ${TAR_SRCS} \ ${TESTS} \ main.c From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 21:53:43 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 26364106566B; Sun, 17 Jul 2011 21:53:43 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0B2548FC08; Sun, 17 Jul 2011 21:53:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HLrg4g091980; Sun, 17 Jul 2011 21:53:42 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HLrgOM091978; Sun, 17 Jul 2011 21:53:42 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201107172153.p6HLrgOM091978@svn.freebsd.org> From: Ryan Stone Date: Sun, 17 Jul 2011 21:53:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224156 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 21:53:43 -0000 Author: rstone Date: Sun Jul 17 21:53:42 2011 New Revision: 224156 URL: http://svn.freebsd.org/changeset/base/224156 Log: Fix a LOR between hwpmc and the kernel linker. When a system-wide sampling mode PMC is allocated, hwpmc calls linker_hwpmc_list_objects() while already holding an exclusive lock on pmc-sx lock. list_objects() tries to acquire an exclusive lock on the kld_sx lock. When a KLD module is loaded or unloaded successfully, kern_kld(un)load calls into the pmc hook while already holding an exclusive lock on the kld_sx lock. Calling the pmc hook requires acquiring a shared lock on the pmc-sx lock. Fix this by only acquiring a shared lock on the kld_sx lock in linker_hwpmc_list_objects(), and also downgrading to a shared lock on the kld_sx lock in kern_kld(un)load before calling into the pmc hook. In kern_kldload this required moving some modifications of the linker_file_t to happen before calling into the pmc hook. This fixes the deadlock by ensuring that the hwpmc -> list_objects() case is always able to proceed. Without this patch, I was able to deadlock a multicore system within minutes by constantly loading and unloading an KLD module while I simultaneously started a sampling mode PMC in a loop. MFC after: 1 month Modified: head/sys/kern/kern_linker.c Modified: head/sys/kern/kern_linker.c ============================================================================== --- head/sys/kern/kern_linker.c Sun Jul 17 21:52:55 2011 (r224155) +++ head/sys/kern/kern_linker.c Sun Jul 17 21:53:42 2011 (r224156) @@ -70,6 +70,9 @@ SYSCTL_INT(_debug, OID_AUTO, kld_debug, #define KLD_LOCK() sx_xlock(&kld_sx) #define KLD_UNLOCK() sx_xunlock(&kld_sx) +#define KLD_DOWNGRADE() sx_downgrade(&kld_sx) +#define KLD_LOCK_READ() sx_slock(&kld_sx) +#define KLD_UNLOCK_READ() sx_sunlock(&kld_sx) #define KLD_LOCKED() sx_xlocked(&kld_sx) #define KLD_LOCK_ASSERT() do { \ if (!cold) \ @@ -1019,18 +1022,24 @@ kern_kldload(struct thread *td, const ch KLD_LOCK(); error = linker_load_module(kldname, modname, NULL, NULL, &lf); - if (error) - goto unlock; + if (error) { + KLD_UNLOCK(); + goto done; + } + lf->userrefs++; + if (fileid != NULL) + *fileid = lf->id; #ifdef HWPMC_HOOKS + KLD_DOWNGRADE(); pkm.pm_file = lf->filename; pkm.pm_address = (uintptr_t) lf->address; PMC_CALL_HOOK(td, PMC_FN_KLD_LOAD, (void *) &pkm); -#endif - lf->userrefs++; - if (fileid != NULL) - *fileid = lf->id; -unlock: + KLD_UNLOCK_READ(); +#else KLD_UNLOCK(); +#endif + +done: CURVNET_RESTORE(); return (error); } @@ -1102,10 +1111,14 @@ kern_kldunload(struct thread *td, int fi error = ENOENT; #ifdef HWPMC_HOOKS - if (error == 0) + if (error == 0) { + KLD_DOWNGRADE(); PMC_CALL_HOOK(td, PMC_FN_KLD_UNLOAD, (void *) &pkm); + KLD_UNLOCK_READ(); + } else +#else + KLD_UNLOCK(); #endif - KLD_UNLOCK(); CURVNET_RESTORE(); return (error); } @@ -1932,7 +1945,7 @@ linker_hwpmc_list_objects(void) int i, nmappings; nmappings = 0; - KLD_LOCK(); + KLD_LOCK_READ(); TAILQ_FOREACH(lf, &linker_files, link) nmappings++; @@ -1947,7 +1960,7 @@ linker_hwpmc_list_objects(void) kobase[i].pm_address = (uintptr_t)lf->address; i++; } - KLD_UNLOCK(); + KLD_UNLOCK_READ(); KASSERT(i > 0, ("linker_hpwmc_list_objects: no kernel objects?")); From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 21:54:51 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 65237106564A; Sun, 17 Jul 2011 21:54:51 +0000 (UTC) (envelope-from yongari@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5410F8FC14; Sun, 17 Jul 2011 21:54:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HLsper092049; Sun, 17 Jul 2011 21:54:51 GMT (envelope-from yongari@svn.freebsd.org) Received: (from yongari@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HLsp2L092047; Sun, 17 Jul 2011 21:54:51 GMT (envelope-from yongari@svn.freebsd.org) Message-Id: <201107172154.p6HLsp2L092047@svn.freebsd.org> From: Pyun YongHyeon Date: Sun, 17 Jul 2011 21:54:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224157 - head/sys/dev/gem X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 21:54:51 -0000 Author: yongari Date: Sun Jul 17 21:54:51 2011 New Revision: 224157 URL: http://svn.freebsd.org/changeset/base/224157 Log: Revert r222135 by allowing controller reinitialization. Due to unknown reason Apple UniNorth2 gem(4) device required manual interface down/up operation after r222135. Even though this is not correct thing and I don't like to revert it but it would be better than breaking gem(4) on PPC. This should be revisited. PR: kern/157405 Modified: head/sys/dev/gem/if_gem.c Modified: head/sys/dev/gem/if_gem.c ============================================================================== --- head/sys/dev/gem/if_gem.c Sun Jul 17 21:53:42 2011 (r224156) +++ head/sys/dev/gem/if_gem.c Sun Jul 17 21:54:51 2011 (r224157) @@ -947,8 +947,10 @@ gem_init_locked(struct gem_softc *sc) GEM_LOCK_ASSERT(sc, MA_OWNED); +#ifdef notyet if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) return; +#endif #ifdef GEM_DEBUG CTR2(KTR_GEM, "%s: %s: calling stop", device_get_name(sc->sc_dev), From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 21:57:10 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E7926106564A; Sun, 17 Jul 2011 21:57:10 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D672E8FC0C; Sun, 17 Jul 2011 21:57:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HLvAcs092162; Sun, 17 Jul 2011 21:57:10 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HLvAGp092160; Sun, 17 Jul 2011 21:57:10 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201107172157.p6HLvAGp092160@svn.freebsd.org> From: Martin Matuska Date: Sun, 17 Jul 2011 21:57:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224158 - head/usr.bin/tar X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 21:57:11 -0000 Author: mm Date: Sun Jul 17 21:57:10 2011 New Revision: 224158 URL: http://svn.freebsd.org/changeset/base/224158 Log: Fix accidential commit part: Include "bsdtar_platform.h" instead of "lafe_platform.h" MFC after: 2 weeks Modified: head/usr.bin/tar/read.c Modified: head/usr.bin/tar/read.c ============================================================================== --- head/usr.bin/tar/read.c Sun Jul 17 21:54:51 2011 (r224157) +++ head/usr.bin/tar/read.c Sun Jul 17 21:57:10 2011 (r224158) @@ -23,7 +23,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "lafe_platform.h" +#include "bsdtar_platform.h" __FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 23:05:25 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 09657106576F; Sun, 17 Jul 2011 23:05:25 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EA1698FC18; Sun, 17 Jul 2011 23:05:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6HN5OX2094855; Sun, 17 Jul 2011 23:05:24 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6HN5OP2094848; Sun, 17 Jul 2011 23:05:24 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201107172305.p6HN5OP2094848@svn.freebsd.org> From: Robert Watson Date: Sun, 17 Jul 2011 23:05:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224159 - in head/sys: kern sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 23:05:25 -0000 Author: rwatson Date: Sun Jul 17 23:05:24 2011 New Revision: 224159 URL: http://svn.freebsd.org/changeset/base/224159 Log: Define two new sysctl node flags: CTLFLAG_CAPRD and CTLFLAG_CAPRW, which may be jointly referenced via the mask CTLFLAG_CAPRW. Sysctls with these flags are available in Capsicum's capability mode; other sysctl nodes are not. Flag several useful sysctls as available in capability mode, such as memory layout sysctls required by the run-time linker and malloc(3). Also expose access to randomness and available kernel features. A few sysctls are enabled to support name->MIB conversion; these may leak information to capability mode by virtue of providing resolution on names not flagged for access in capability mode. This is, generally, not a huge problem, but might be something to resolve in the future. Flag these cases with XXX comments. Submitted by: jonathan Sponsored by: Google, Inc. Modified: head/sys/kern/kern_exec.c head/sys/kern/kern_mib.c head/sys/kern/kern_sysctl.c head/sys/kern/posix4_mib.c head/sys/kern/subr_smp.c head/sys/sys/sysctl.h Modified: head/sys/kern/kern_exec.c ============================================================================== --- head/sys/kern/kern_exec.c Sun Jul 17 21:57:10 2011 (r224158) +++ head/sys/kern/kern_exec.c Sun Jul 17 23:05:24 2011 (r224159) @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -113,8 +114,8 @@ SYSCTL_PROC(_kern, KERN_PS_STRINGS, ps_s NULL, 0, sysctl_kern_ps_strings, "LU", ""); /* XXX This should be vm_size_t. */ -SYSCTL_PROC(_kern, KERN_USRSTACK, usrstack, CTLTYPE_ULONG|CTLFLAG_RD, - NULL, 0, sysctl_kern_usrstack, "LU", ""); +SYSCTL_PROC(_kern, KERN_USRSTACK, usrstack, CTLTYPE_ULONG|CTLFLAG_RD| + CTLFLAG_CAPRD, NULL, 0, sysctl_kern_usrstack, "LU", ""); SYSCTL_PROC(_kern, OID_AUTO, stackprot, CTLTYPE_INT|CTLFLAG_RD, NULL, 0, sysctl_kern_stackprot, "I", ""); Modified: head/sys/kern/kern_mib.c ============================================================================== --- head/sys/kern/kern_mib.c Sun Jul 17 21:57:10 2011 (r224158) +++ head/sys/kern/kern_mib.c Sun Jul 17 23:05:24 2011 (r224159) @@ -57,7 +57,7 @@ __FBSDID("$FreeBSD$"); SYSCTL_NODE(, 0, sysctl, CTLFLAG_RW, 0, "Sysctl internal magic"); -SYSCTL_NODE(, CTL_KERN, kern, CTLFLAG_RW, 0, +SYSCTL_NODE(, CTL_KERN, kern, CTLFLAG_RW|CTLFLAG_CAPRD, 0, "High kernel, proc, limits &c"); SYSCTL_NODE(, CTL_VM, vm, CTLFLAG_RW, 0, "Virtual memory"); @@ -90,23 +90,23 @@ SYSCTL_NODE(, OID_AUTO, regression, CTLF SYSCTL_STRING(_kern, OID_AUTO, ident, CTLFLAG_RD|CTLFLAG_MPSAFE, kern_ident, 0, "Kernel identifier"); -SYSCTL_STRING(_kern, KERN_OSRELEASE, osrelease, CTLFLAG_RD|CTLFLAG_MPSAFE, - osrelease, 0, "Operating system release"); +SYSCTL_STRING(_kern, KERN_OSRELEASE, osrelease, CTLFLAG_RD|CTLFLAG_MPSAFE| + CTLFLAG_CAPRD, osrelease, 0, "Operating system release"); -SYSCTL_INT(_kern, KERN_OSREV, osrevision, CTLFLAG_RD, +SYSCTL_INT(_kern, KERN_OSREV, osrevision, CTLFLAG_RD|CTLFLAG_CAPRD, 0, BSD, "Operating system revision"); SYSCTL_STRING(_kern, KERN_VERSION, version, CTLFLAG_RD|CTLFLAG_MPSAFE, version, 0, "Kernel version"); -SYSCTL_STRING(_kern, KERN_OSTYPE, ostype, CTLFLAG_RD|CTLFLAG_MPSAFE, - ostype, 0, "Operating system type"); +SYSCTL_STRING(_kern, KERN_OSTYPE, ostype, CTLFLAG_RD|CTLFLAG_MPSAFE| + CTLFLAG_CAPRD, ostype, 0, "Operating system type"); /* * NOTICE: The *userland* release date is available in * /usr/include/osreldate.h */ -SYSCTL_INT(_kern, KERN_OSRELDATE, osreldate, CTLFLAG_RD, +SYSCTL_INT(_kern, KERN_OSRELDATE, osreldate, CTLFLAG_RD|CTLFLAG_CAPRD, &osreldate, 0, "Kernel release date"); SYSCTL_INT(_kern, KERN_MAXPROC, maxproc, CTLFLAG_RDTUN, @@ -118,24 +118,24 @@ SYSCTL_INT(_kern, KERN_MAXPROCPERUID, ma SYSCTL_INT(_kern, OID_AUTO, maxusers, CTLFLAG_RDTUN, &maxusers, 0, "Hint for kernel tuning"); -SYSCTL_INT(_kern, KERN_ARGMAX, argmax, CTLFLAG_RD, +SYSCTL_INT(_kern, KERN_ARGMAX, argmax, CTLFLAG_RD|CTLFLAG_CAPRD, 0, ARG_MAX, "Maximum bytes of argument to execve(2)"); -SYSCTL_INT(_kern, KERN_POSIX1, posix1version, CTLFLAG_RD, +SYSCTL_INT(_kern, KERN_POSIX1, posix1version, CTLFLAG_RD|CTLFLAG_CAPRD, 0, _POSIX_VERSION, "Version of POSIX attempting to comply to"); -SYSCTL_INT(_kern, KERN_NGROUPS, ngroups, CTLFLAG_RDTUN, +SYSCTL_INT(_kern, KERN_NGROUPS, ngroups, CTLFLAG_RDTUN|CTLFLAG_CAPRD, &ngroups_max, 0, "Maximum number of supplemental groups a user can belong to"); -SYSCTL_INT(_kern, KERN_JOB_CONTROL, job_control, CTLFLAG_RD, +SYSCTL_INT(_kern, KERN_JOB_CONTROL, job_control, CTLFLAG_RD|CTLFLAG_CAPRD, 0, 1, "Whether job control is available"); #ifdef _POSIX_SAVED_IDS -SYSCTL_INT(_kern, KERN_SAVED_IDS, saved_ids, CTLFLAG_RD, +SYSCTL_INT(_kern, KERN_SAVED_IDS, saved_ids, CTLFLAG_RD|CTLFLAG_CAPRD, 0, 1, "Whether saved set-group/user ID is available"); #else -SYSCTL_INT(_kern, KERN_SAVED_IDS, saved_ids, CTLFLAG_RD, +SYSCTL_INT(_kern, KERN_SAVED_IDS, saved_ids, CTLFLAG_RD|CTLFLAG_CAPRD, 0, 0, "Whether saved set-group/user ID is available"); #endif @@ -144,13 +144,13 @@ char kernelname[MAXPATHLEN] = "/kernel"; SYSCTL_STRING(_kern, KERN_BOOTFILE, bootfile, CTLFLAG_RW, kernelname, sizeof kernelname, "Name of kernel file booted"); -SYSCTL_INT(_hw, HW_NCPU, ncpu, CTLFLAG_RD, +SYSCTL_INT(_hw, HW_NCPU, ncpu, CTLFLAG_RD|CTLFLAG_CAPRD, &mp_ncpus, 0, "Number of active CPUs"); -SYSCTL_INT(_hw, HW_BYTEORDER, byteorder, CTLFLAG_RD, +SYSCTL_INT(_hw, HW_BYTEORDER, byteorder, CTLFLAG_RD|CTLFLAG_CAPRD, 0, BYTE_ORDER, "System byte order"); -SYSCTL_INT(_hw, HW_PAGESIZE, pagesize, CTLFLAG_RD, +SYSCTL_INT(_hw, HW_PAGESIZE, pagesize, CTLFLAG_RD|CTLFLAG_CAPRD, 0, PAGE_SIZE, "System memory page size"); static int @@ -167,7 +167,7 @@ sysctl_kern_arnd(SYSCTL_HANDLER_ARGS) } SYSCTL_PROC(_kern, KERN_ARND, arandom, - CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, 0, + CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_MPSAFE | CTLFLAG_CAPRD, NULL, 0, sysctl_kern_arnd, "", "arc4rand"); static int @@ -448,6 +448,8 @@ FEATURE(compat_freebsd7, "Compatible wit * This is really cheating. These actually live in the libc, something * which I'm not quite sure is a good idea anyway, but in order for * getnext and friends to actually work, we define dummies here. + * + * XXXRW: These probably should be CTLFLAG_CAPRD. */ SYSCTL_STRING(_user, USER_CS_PATH, cs_path, CTLFLAG_RD, "", 0, "PATH that finds all the standard utilities"); Modified: head/sys/kern/kern_sysctl.c ============================================================================== --- head/sys/kern/kern_sysctl.c Sun Jul 17 21:57:10 2011 (r224158) +++ head/sys/kern/kern_sysctl.c Sun Jul 17 23:05:24 2011 (r224159) @@ -38,12 +38,14 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_capsicum.h" #include "opt_compat.h" #include "opt_ktrace.h" #include #include #include +#include #include #include #include @@ -725,7 +727,12 @@ sysctl_sysctl_name(SYSCTL_HANDLER_ARGS) return (error); } -static SYSCTL_NODE(_sysctl, 1, name, CTLFLAG_RD, sysctl_sysctl_name, ""); +/* + * XXXRW/JA: Shouldn't return name data for nodes that we don't permit in + * capability mode. + */ +static SYSCTL_NODE(_sysctl, 1, name, CTLFLAG_RD | CTLFLAG_CAPRD, + sysctl_sysctl_name, ""); static int sysctl_sysctl_next_ls(struct sysctl_oid_list *lsp, int *name, u_int namelen, @@ -806,7 +813,12 @@ sysctl_sysctl_next(SYSCTL_HANDLER_ARGS) return (error); } -static SYSCTL_NODE(_sysctl, 2, next, CTLFLAG_RD, sysctl_sysctl_next, ""); +/* + * XXXRW/JA: Shouldn't return next data for nodes that we don't permit in + * capability mode. + */ +static SYSCTL_NODE(_sysctl, 2, next, CTLFLAG_RD | CTLFLAG_CAPRD, + sysctl_sysctl_next, ""); static int name2oid(char *name, int *oid, int *len, struct sysctl_oid **oidpp) @@ -902,9 +914,13 @@ sysctl_sysctl_name2oid(SYSCTL_HANDLER_AR return (error); } +/* + * XXXRW/JA: Shouldn't return name2oid data for nodes that we don't permit in + * capability mode. + */ SYSCTL_PROC(_sysctl, 3, name2oid, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_ANYBODY | CTLFLAG_MPSAFE, - 0, 0, sysctl_sysctl_name2oid, "I", ""); + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_ANYBODY | CTLFLAG_MPSAFE + | CTLFLAG_CAPRW, 0, 0, sysctl_sysctl_name2oid, "I", ""); static int sysctl_sysctl_oidfmt(SYSCTL_HANDLER_ARGS) @@ -931,7 +947,7 @@ sysctl_sysctl_oidfmt(SYSCTL_HANDLER_ARGS } -static SYSCTL_NODE(_sysctl, 4, oidfmt, CTLFLAG_RD|CTLFLAG_MPSAFE, +static SYSCTL_NODE(_sysctl, 4, oidfmt, CTLFLAG_RD|CTLFLAG_MPSAFE|CTLFLAG_CAPRD, sysctl_sysctl_oidfmt, ""); static int @@ -955,7 +971,8 @@ sysctl_sysctl_oiddescr(SYSCTL_HANDLER_AR return (error); } -static SYSCTL_NODE(_sysctl, 5, oiddescr, CTLFLAG_RD, sysctl_sysctl_oiddescr, ""); +static SYSCTL_NODE(_sysctl, 5, oiddescr, CTLFLAG_RD|CTLFLAG_CAPRD, + sysctl_sysctl_oiddescr, ""); /* * Default "handler" functions. @@ -1429,6 +1446,19 @@ sysctl_root(SYSCTL_HANDLER_ARGS) KASSERT(req->td != NULL, ("sysctl_root(): req->td == NULL")); +#ifdef CAPABILITY_MODE + /* + * If the process is in capability mode, then don't permit reading or + * writing unless specifically granted for the node. + */ + if (IN_CAPABILITY_MODE(req->td)) { + if (req->oldptr && !(oid->oid_kind & CTLFLAG_CAPRD)) + return (EPERM); + if (req->newptr && !(oid->oid_kind & CTLFLAG_CAPWR)) + return (EPERM); + } +#endif + /* Is this sysctl sensitive to securelevels? */ if (req->newptr && (oid->oid_kind & CTLFLAG_SECURE)) { lvl = (oid->oid_kind & CTLMASK_SECURE) >> CTLSHIFT_SECURE; Modified: head/sys/kern/posix4_mib.c ============================================================================== --- head/sys/kern/posix4_mib.c Sun Jul 17 21:57:10 2011 (r224158) +++ head/sys/kern/posix4_mib.c Sun Jul 17 23:05:24 2011 (r224159) @@ -57,7 +57,8 @@ static int p31b_sysctl_proc(SYSCTL_HANDL SYSCTL_DECL(_p1003_1b); #define P1B_SYSCTL(num, name) \ - SYSCTL_INT(_p1003_1b, num, name, CTLFLAG_RD, facility + num - 1, 0, ""); + SYSCTL_INT(_p1003_1b, num, name, CTLFLAG_RD | CTLFLAG_CAPRD, \ + facility + num - 1, 0, ""); #define P1B_SYSCTL_RW(num, name) \ SYSCTL_PROC(_p1003_1b, num, name, CTLTYPE_INT | CTLFLAG_RW, NULL, num, \ p31b_sysctl_proc, "I", ""); @@ -67,7 +68,7 @@ SYSCTL_DECL(_p1003_1b); SYSCTL_DECL(_kern_p1003_1b); #define P1B_SYSCTL(num, name) \ - SYSCTL_INT(_kern_p1003_1b, OID_AUTO, name, CTLFLAG_RD, \ + SYSCTL_INT(_kern_p1003_1b, OID_AUTO, name, CTLFLAG_RD | CTLFLAG_CAPRD, \ facility + num - 1, 0, ""); #define P1B_SYSCTL_RW(num, name) \ SYSCTL_PROC(_p1003_1b, OID_AUTO, name, CTLTYPE_INT | CTLFLAG_RW, NULL, \ Modified: head/sys/kern/subr_smp.c ============================================================================== --- head/sys/kern/subr_smp.c Sun Jul 17 21:57:10 2011 (r224158) +++ head/sys/kern/subr_smp.c Sun Jul 17 23:05:24 2011 (r224159) @@ -70,25 +70,25 @@ int mp_maxcpus = MAXCPU; volatile int smp_started; u_int mp_maxid; -SYSCTL_NODE(_kern, OID_AUTO, smp, CTLFLAG_RD, NULL, "Kernel SMP"); +SYSCTL_NODE(_kern, OID_AUTO, smp, CTLFLAG_RD|CTLFLAG_CAPRD, NULL, "Kernel SMP"); -SYSCTL_UINT(_kern_smp, OID_AUTO, maxid, CTLFLAG_RD, &mp_maxid, 0, +SYSCTL_INT(_kern_smp, OID_AUTO, maxid, CTLFLAG_RD|CTLFLAG_CAPRD, &mp_maxid, 0, "Max CPU ID."); -SYSCTL_INT(_kern_smp, OID_AUTO, maxcpus, CTLFLAG_RD, &mp_maxcpus, 0, - "Max number of CPUs that the system was compiled for."); +SYSCTL_INT(_kern_smp, OID_AUTO, maxcpus, CTLFLAG_RD|CTLFLAG_CAPRD, &mp_maxcpus, + 0, "Max number of CPUs that the system was compiled for."); int smp_active = 0; /* are the APs allowed to run? */ SYSCTL_INT(_kern_smp, OID_AUTO, active, CTLFLAG_RW, &smp_active, 0, "Number of Auxillary Processors (APs) that were successfully started"); int smp_disabled = 0; /* has smp been disabled? */ -SYSCTL_INT(_kern_smp, OID_AUTO, disabled, CTLFLAG_RDTUN, &smp_disabled, 0, - "SMP has been disabled from the loader"); +SYSCTL_INT(_kern_smp, OID_AUTO, disabled, CTLFLAG_RDTUN|CTLFLAG_CAPRD, + &smp_disabled, 0, "SMP has been disabled from the loader"); TUNABLE_INT("kern.smp.disabled", &smp_disabled); int smp_cpus = 1; /* how many cpu's running */ -SYSCTL_INT(_kern_smp, OID_AUTO, cpus, CTLFLAG_RD, &smp_cpus, 0, +SYSCTL_INT(_kern_smp, OID_AUTO, cpus, CTLFLAG_RD|CTLFLAG_CAPRD, &smp_cpus, 0, "Number of CPUs online"); int smp_topology = 0; /* Which topology we're using. */ Modified: head/sys/sys/sysctl.h ============================================================================== --- head/sys/sys/sysctl.h Sun Jul 17 21:57:10 2011 (r224158) +++ head/sys/sys/sysctl.h Sun Jul 17 23:05:24 2011 (r224159) @@ -88,6 +88,9 @@ struct ctlname { #define CTLFLAG_VNET 0x00020000 /* Prisons with vnet can fiddle */ #define CTLFLAG_RDTUN (CTLFLAG_RD|CTLFLAG_TUN) #define CTLFLAG_DYING 0x00010000 /* oid is being removed */ +#define CTLFLAG_CAPRD 0x00008000 /* Can be read in capability mode */ +#define CTLFLAG_CAPWR 0x00004000 /* Can be written in capability mode */ +#define CTLFLAG_CAPRW (CTLFLAG_CAPRD|CTLFLAG_CAPWR) /* * Secure level. Note that CTLFLAG_SECURE == CTLFLAG_SECURE1. @@ -407,7 +410,8 @@ SYSCTL_ALLOWED_TYPES(UINT64, uint64_t *a * kernel features. */ #define FEATURE(name, desc) \ - SYSCTL_INT(_kern_features, OID_AUTO, name, CTLFLAG_RD, 0, 1, desc) + SYSCTL_INT(_kern_features, OID_AUTO, name, CTLFLAG_RD | CTLFLAG_CAPRD, \ + 0, 1, desc) #endif /* _KERNEL */ From owner-svn-src-all@FreeBSD.ORG Sun Jul 17 23:09:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4F33A1065670; Sun, 17 Jul 2011 23:09:09 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail06.syd.optusnet.com.au (mail06.syd.optusnet.com.au [211.29.132.187]) by mx1.freebsd.org (Postfix) with ESMTP id C142B8FC1A; Sun, 17 Jul 2011 23:09:08 +0000 (UTC) Received: from c122-106-165-191.carlnfd1.nsw.optusnet.com.au (c122-106-165-191.carlnfd1.nsw.optusnet.com.au [122.106.165.191]) by mail06.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p6HN94QO030466 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 18 Jul 2011 09:09:05 +1000 Date: Mon, 18 Jul 2011 09:09:04 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Ryan Stone In-Reply-To: <201107172108.p6HL8Gkd090278@svn.freebsd.org> Message-ID: <20110718080428.N3939@besplex.bde.org> References: <201107172108.p6HL8Gkd090278@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r224150 - head/sbin/fdisk X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2011 23:09:09 -0000 On Sun, 17 Jul 2011, Ryan Stone wrote: > Log: > The MBR uses a 32-bit unsigned integer to store the size of a slice, but > fdisk(1) internally uses a signed int. Should a user attempt to specify > a slice containing more than 2^31 - 1 sectors, an error will be reported > on systems with sizeof(long) == 4 and the slice size will be silently > truncated on systems with sizeof(long) > 4. > > Instead use an unsigned long to store the slice size in fdisk(1). This > allows the user to specify a slice size up to the maximum permitted by > the MBR on-disk format and does not have any problems with silent > truncation should the use specify an slice size larger than 2^32 on systems > with sizeof(long) > 4. > > Submitted by: Mark Johnston (markjdb AT gmail DOT com) > MFC after: 2 weeks > > Modified: > head/sbin/fdisk/fdisk.c > > Modified: head/sbin/fdisk/fdisk.c > ============================================================================== > --- head/sbin/fdisk/fdisk.c Sun Jul 17 20:49:38 2011 (r224149) > +++ head/sbin/fdisk/fdisk.c Sun Jul 17 21:08:16 2011 (r224150) > @@ -108,9 +108,9 @@ typedef struct cmd { > char cmd; > int n_args; > struct arg { > - char argtype; > - int arg_val; > - char *arg_str; > + char argtype; > + unsigned long arg_val; > + char * arg_str; > } args[MAX_ARGS]; > } CMD; There was no need to further break the style. "unsigned long" is spelled u_long in KNF, partly to avoid excessive indentation like the above, and this spelling was used in some but not all parts of this file. But no one knows what the correct indentation for the above is -- it shouldn't be just 1 or more tabs, since the file is highly non-KNF, starting with it using a 4-space primary indentation. The "*" before arg_str in the above used to be correctly placed. > > @@ -990,7 +990,7 @@ parse_config_line(char *line, CMD *comma > if (isalpha(*cp)) > command->args[command->n_args].argtype = *cp++; > end = NULL; > - command->args[command->n_args].arg_val = strtol(cp, &end, 0); > + command->args[command->n_args].arg_val = strtoul(cp, &end, 0); > if (cp == end || (!isspace(*end) && *end != '\0')) { > char ch; > end = cp; > Also, arg_val is never used as a u_long. We risk truncation when it is blindly assigned to variables whose type is never u_long. It is mostly assigned to variables of type uint ("uint" is an archaic SysV spelling of the BSD u_int which is a spelling of unsigned int. This style bug was imported from Mach and never fixed). Since uint is unsigned and ints have 32 bits, things now work up to UINT32_MAX but no further. arg_val is also blindly assigned to a variable of type int, the partition number, and to a variable of type u_char (the partition type), but since these values nonsense unless they are small, there is no problem with overflow near INT32_MAX or UINT32_MAX. The above still has the usual amount of error checking for the range after strto*() returns: none. We don't really care since values larger than UINT32_MAX don't work for other reasons. On 32-bit systems, a value of UINT32_MAX will be returned in overflow cases. Then we use that value when we should abort. On 64-bit systems, values larger than UINT32_MAX may be returned. Then assignment to arg_val now doesn't overflow, but assignment to the uints overflows, giving fail-unsafe behaviour where i386 has relatively fail-safe behaviour. Elsewhere, fdisk uses a horrible mixture of int, uint, u_int, u_int32_t, uint32_t, unsigned long, u_long, long long and u_int64_t. Sometimes the type is imposed by a system data structure, but mostly these choices of types are nonsense or anachronisms. They might as well almost all be u_int, since only 32-bit partition offsets and sizes work. More careful old code uses u_long, since that was the largest possible and ints might be 16 bits. Newer code should us uint32_t. u_int64_t is used just once, to avoid overflow in conversion from sectors to MB. This use is reasonable, but then to print the value it must be cast to uintmax_t. It would be better to use uintmax_t for the value throughout. The long long abomination is only just once, as an accumulator in a home made version of strtoul() named decimal(). decimal() actually has some range checking, but is otherwise much worse than strtoul(). It allows values up to UINT32_MAX, but returns values in an int *. Callers often want the value in a uint or a u_char. If they passed a pointer to their variable, then the type error would be detected, but such errors are "fixed" by subverting decimal() using the Decimal() macro (Decimal() calls decimal() with a pointer to a temporary variable with the matching wrong type 'int', and then blindly assigns the temporary variable to the actual variable). The subversion was in rev.1.1 in 1993, so it apparently came from Mach. Anyway, decimal() works up to UINT32_MAX although it gives undefined behaviour above INT_MAX, since the overflow on assignment to the temporary variable combined with the implementation-defined conversion of the temporary variable to uint happens to be benign on all supported arches (it gives back the original uint32_t value). The type of the accumulator has to be larger than the type of the maximum value supported so that the range checking works after the limit of the range has been exceeded. Otherwise, the type of the accumulator only needs to be uint32_t. strtoul() uses a similar accumulator of type u_long and makes this work by checking the range before a modified limit is exceeded. decimal() is used for most interactive input, including for partition offsets and sizes. The bug fixed in this commit must have been rarely noticed since it only affects command-line input. The corresponding bugs for interactive input are merely all the benign overflows above INT_MAX and the horrible choices of types which mark it hard to see that all the overflows are benign. See the r217714 commit thread for more details about bogusness in decimal(). Bruce From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 01:22:40 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 699C8106566B; Mon, 18 Jul 2011 01:22:40 +0000 (UTC) (envelope-from rysto32@gmail.com) Received: from mail-ey0-f176.google.com (mail-ey0-f176.google.com [209.85.215.176]) by mx1.freebsd.org (Postfix) with ESMTP id A3D388FC0C; Mon, 18 Jul 2011 01:22:39 +0000 (UTC) Received: by eya28 with SMTP id 28so2136346eya.21 for ; Sun, 17 Jul 2011 18:22:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=15ExDFnKGWFUbQkpHhKLSVFw+eYS4IqrBGzScYcv/hs=; b=C9ye9RT7E7gxwl/Qyo33smf3pxByytqTtr7WLdxVl8uDQhg+wV7lkKkSez4nn3hGEM pX4gOKrOuL3DkUL0uvyHpda29kKd0AQ7hA9CE7Re6FP7EggXjY+sPG6iuP6l+9+X5noP h7dpU3iAo9cn7mYeI1UnIdGt1QloKpqAXupbc= MIME-Version: 1.0 Received: by 10.213.29.196 with SMTP id r4mr931ebc.52.1310952158380; Sun, 17 Jul 2011 18:22:38 -0700 (PDT) Received: by 10.213.15.70 with HTTP; Sun, 17 Jul 2011 18:22:38 -0700 (PDT) In-Reply-To: <20110718080428.N3939@besplex.bde.org> References: <201107172108.p6HL8Gkd090278@svn.freebsd.org> <20110718080428.N3939@besplex.bde.org> Date: Sun, 17 Jul 2011 21:22:38 -0400 Message-ID: From: Ryan Stone To: Bruce Evans Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, markjdb@gmail.com Subject: Re: svn commit: r224150 - head/sbin/fdisk X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 01:22:40 -0000 On Sun, Jul 17, 2011 at 7:09 PM, Bruce Evans wrote: > There was no need to further break the style. Ack. Should have caught that. Will fix. >> >> @@ -990,7 +990,7 @@ parse_config_line(char *line, CMD *comma >> =A0 =A0 =A0 =A0 =A0 =A0if (isalpha(*cp)) >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0command->args[command->n_args].argtype = =3D *cp++; >> =A0 =A0 =A0 =A0 =A0 =A0end =3D NULL; >> - =A0 =A0 =A0 =A0 =A0 command->args[command->n_args].arg_val =3D strtol(= cp, &end, 0); >> + =A0 =A0 =A0 =A0 =A0 command->args[command->n_args].arg_val =3D strtoul= (cp, &end, 0); >> =A0 =A0 =A0 =A0 =A0 =A0if (cp =3D=3D end || (!isspace(*end) && *end !=3D= '\0')) { >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0char ch; >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0end =3D cp; >> > > Also, arg_val is never used as a u_long. =A0We risk truncation when it is > blindly assigned to variables whose type is never u_long. =A0It is mostly > assigned to variables of type uint ("uint" is an archaic SysV spelling > of the BSD u_int which is a spelling of unsigned int. =A0This style bug > was imported from Mach and never fixed). =A0Since uint is unsigned and in= ts > have 32 bits, things now work up to UINT32_MAX but no further. =A0arg_val > is also blindly assigned to a variable of type int, the partition number, > and to a variable of type u_char (the partition type), but since these > values nonsense unless they are small, there is no problem with overflow > near INT32_MAX or UINT32_MAX. Hm, I was under the impression that fdisk was checking whether the size parameter fit within in 32-bits before putting it in the MBR, but I seem to have been mistaken. In that case, I think that the right fix is to make arg_val a u_int for now, which will still allow slices with more than 2^31 sectors to be specified. Truncation is still an issue but that's not a new bug. From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 02:13:22 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3004D106564A; Mon, 18 Jul 2011 02:13:22 +0000 (UTC) (envelope-from gibbs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1540B8FC15; Mon, 18 Jul 2011 02:13:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6I2DLbr000853; Mon, 18 Jul 2011 02:13:21 GMT (envelope-from gibbs@svn.freebsd.org) Received: (from gibbs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6I2DL2J000849; Mon, 18 Jul 2011 02:13:21 GMT (envelope-from gibbs@svn.freebsd.org) Message-Id: <201107180213.p6I2DL2J000849@svn.freebsd.org> From: "Justin T. Gibbs" Date: Mon, 18 Jul 2011 02:13:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224169 - in head/cddl/contrib/opensolaris: cmd/zpool lib/libzfs/common X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 02:13:22 -0000 Author: gibbs Date: Mon Jul 18 02:13:21 2011 New Revision: 224169 URL: http://svn.freebsd.org/changeset/base/224169 Log: cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h: cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c: o Add zpool_pool_state_to_name() API to libzfs which converts a pool_state_t into a user consumable string. o While here, correct constness of make zpool_state_to_name() and zpool_label_disk(). MFD after: 1 week Modified: head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c Modified: head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c ============================================================================== --- head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Mon Jul 18 01:09:43 2011 (r224168) +++ head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Mon Jul 18 02:13:21 2011 (r224169) @@ -1052,7 +1052,7 @@ print_status_config(zpool_handle_t *zhp, char *vname; uint64_t notpresent; spare_cbdata_t cb; - char *state; + const char *state; if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN, &child, &children) != 0) Modified: head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h ============================================================================== --- head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h Mon Jul 18 01:09:43 2011 (r224168) +++ head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h Mon Jul 18 02:13:21 2011 (r224169) @@ -200,7 +200,8 @@ extern zpool_handle_t *zpool_open_canfai extern void zpool_close(zpool_handle_t *); extern const char *zpool_get_name(zpool_handle_t *); extern int zpool_get_state(zpool_handle_t *); -extern char *zpool_state_to_name(vdev_state_t, vdev_aux_t); +extern const char *zpool_state_to_name(vdev_state_t, vdev_aux_t); +extern const char *zpool_pool_state_to_name(pool_state_t); extern void zpool_free_handles(libzfs_handle_t *); /* @@ -249,7 +250,7 @@ extern nvlist_t *zpool_find_vdev(zpool_h boolean_t *, boolean_t *); extern nvlist_t *zpool_find_vdev_by_physpath(zpool_handle_t *, const char *, boolean_t *, boolean_t *, boolean_t *); -extern int zpool_label_disk(libzfs_handle_t *, zpool_handle_t *, char *); +extern int zpool_label_disk(libzfs_handle_t *, zpool_handle_t *, const char *); /* * Functions to manage pool properties Modified: head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c ============================================================================== --- head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c Mon Jul 18 01:09:43 2011 (r224168) +++ head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c Mon Jul 18 02:13:21 2011 (r224169) @@ -174,7 +174,7 @@ zpool_get_prop_int(zpool_handle_t *zhp, /* * Map VDEV STATE to printed strings. */ -char * +const char * zpool_state_to_name(vdev_state_t state, vdev_aux_t aux) { switch (state) { @@ -202,6 +202,34 @@ zpool_state_to_name(vdev_state_t state, } /* + * Map POOL STATE to printed strings. + */ +const char * +zpool_pool_state_to_name(pool_state_t state) +{ + switch (state) { + case POOL_STATE_ACTIVE: + return (gettext("ACTIVE")); + case POOL_STATE_EXPORTED: + return (gettext("EXPORTED")); + case POOL_STATE_DESTROYED: + return (gettext("DESTROYED")); + case POOL_STATE_SPARE: + return (gettext("SPARE")); + case POOL_STATE_L2CACHE: + return (gettext("L2CACHE")); + case POOL_STATE_UNINITIALIZED: + return (gettext("UNINITIALIZED")); + case POOL_STATE_UNAVAIL: + return (gettext("UNAVAIL")); + case POOL_STATE_POTENTIALLY_ACTIVE: + return (gettext("POTENTIALLY_ACTIVE")); + } + + return (gettext("UNKNOWN")); +} + +/* * Get a zpool property value for 'prop' and return the value in * a pre-allocated buffer. */ @@ -3605,7 +3633,7 @@ find_start_block(nvlist_t *config) * stripped of any leading /dev path. */ int -zpool_label_disk(libzfs_handle_t *hdl, zpool_handle_t *zhp, char *name) +zpool_label_disk(libzfs_handle_t *hdl, zpool_handle_t *zhp, const char *name) { #ifdef sun char path[MAXPATHLEN]; From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 03:00:59 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9DF1D106566C; Mon, 18 Jul 2011 03:00:59 +0000 (UTC) (envelope-from gibbs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8C0898FC08; Mon, 18 Jul 2011 03:00:59 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6I30xM3002406; Mon, 18 Jul 2011 03:00:59 GMT (envelope-from gibbs@svn.freebsd.org) Received: (from gibbs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6I30xPV002403; Mon, 18 Jul 2011 03:00:59 GMT (envelope-from gibbs@svn.freebsd.org) Message-Id: <201107180300.p6I30xPV002403@svn.freebsd.org> From: "Justin T. Gibbs" Date: Mon, 18 Jul 2011 03:00:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224170 - in head/cddl/contrib/opensolaris: cmd/zpool lib/libzfs/common X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 03:00:59 -0000 Author: gibbs Date: Mon Jul 18 03:00:59 2011 New Revision: 224170 URL: http://svn.freebsd.org/changeset/base/224170 Log: Correct reporting of missing leaf vdevs so that the GUID required to perform pool actions is always displayed. cddl/contrib/opensolaris/cmd/zpool/zpool_main.c: The "zpool status" command reports the "last seen at" device node path when the vdev name is being reported by GUID. Augment this code to assume a GUID is reported when a device goes missing after initial boot in addition to the previous behavior of doing this for devices that aren't seen at boot. cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c: In zpool_vdev_name(), report recently missing devices by GUID. There is no guarantee they will return at their previous location. Modified: head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c Modified: head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c ============================================================================== --- head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Mon Jul 18 02:13:21 2011 (r224169) +++ head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Mon Jul 18 03:00:59 2011 (r224170) @@ -1084,10 +1084,11 @@ print_status_config(zpool_handle_t *zhp, } if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_NOT_PRESENT, - ¬present) == 0) { + ¬present) == 0 || + vs->vs_state <= VDEV_STATE_CANT_OPEN) { char *path; - verify(nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) == 0); - (void) printf(" was %s", path); + if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) == 0) + (void) printf(" was %s", path); } else if (vs->vs_aux != 0) { (void) printf(" "); Modified: head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c ============================================================================== --- head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c Mon Jul 18 02:13:21 2011 (r224169) +++ head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c Mon Jul 18 03:00:59 2011 (r224170) @@ -3110,15 +3110,25 @@ zpool_vdev_name(libzfs_handle_t *hdl, zp char buf[64]; vdev_stat_t *vs; uint_t vsc; + int have_stats; + int have_path; - if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_NOT_PRESENT, - &value) == 0) { + have_stats = nvlist_lookup_uint64_array(nv, ZPOOL_CONFIG_VDEV_STATS, + (uint64_t **)&vs, &vsc) == 0; + have_path = nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) == 0; + + /* + * If the device is not currently present, assume it will not + * come back at the same device path. Display the device by GUID. + */ + if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_NOT_PRESENT, &value) == 0 || + have_path && have_stats && vs->vs_state <= VDEV_STATE_CANT_OPEN) { verify(nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &value) == 0); (void) snprintf(buf, sizeof (buf), "%llu", (u_longlong_t)value); path = buf; - } else if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) == 0) { + } else if (have_path) { /* * If the device is dead (faulted, offline, etc) then don't @@ -3126,8 +3136,7 @@ zpool_vdev_name(libzfs_handle_t *hdl, zp * open a misbehaving device, which can have undesirable * effects. */ - if ((nvlist_lookup_uint64_array(nv, ZPOOL_CONFIG_VDEV_STATS, - (uint64_t **)&vs, &vsc) != 0 || + if ((have_stats == 0 || vs->vs_state >= VDEV_STATE_DEGRADED) && zhp != NULL && nvlist_lookup_string(nv, ZPOOL_CONFIG_DEVID, &devid) == 0) { From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 03:18:07 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8E577106566B; Mon, 18 Jul 2011 03:18:07 +0000 (UTC) (envelope-from gibbs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 42FF28FC17; Mon, 18 Jul 2011 03:18:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6I3I7OJ003232; Mon, 18 Jul 2011 03:18:07 GMT (envelope-from gibbs@svn.freebsd.org) Received: (from gibbs@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6I3I7av003228; Mon, 18 Jul 2011 03:18:07 GMT (envelope-from gibbs@svn.freebsd.org) Message-Id: <201107180318.p6I3I7av003228@svn.freebsd.org> From: "Justin T. Gibbs" Date: Mon, 18 Jul 2011 03:18:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224171 - in head/cddl/contrib/opensolaris: cmd/zpool lib/libzfs/common X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 03:18:07 -0000 Author: gibbs Date: Mon Jul 18 03:18:06 2011 New Revision: 224171 URL: http://svn.freebsd.org/changeset/base/224171 Log: cddl/contrib/opensolaris/cmd/zpool/zpool_main.c: cddl/contrib/opensolaris/cmd/zpool/zpool.8: cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c: Add the "zpool labelclear" command. This command can be used to wipe the label data from a drive that is not active in a pool. The optional "-f" argument can be used to treat an exported or foreign vdev as "inactive" thus allowing its label information to be cleared. Modified: head/cddl/contrib/opensolaris/cmd/zpool/zpool.8 head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Modified: head/cddl/contrib/opensolaris/cmd/zpool/zpool.8 ============================================================================== --- head/cddl/contrib/opensolaris/cmd/zpool/zpool.8 Mon Jul 18 03:00:59 2011 (r224170) +++ head/cddl/contrib/opensolaris/cmd/zpool/zpool.8 Mon Jul 18 03:18:06 2011 (r224171) @@ -82,6 +82,11 @@ zpool \- configures ZFS storage pools .LP .nf +\fBzpool labelclear\fR [\fB-f\fR] \fIdevice\fR +.fi + +.LP +.nf \fBzpool list\fR [\fB-H\fR] [\fB-o\fR \fIproperty\fR[,...]] [\fIpool\fR] ... .fi @@ -1205,6 +1210,28 @@ Verbose statistics. Reports usage statis .ne 2 .mk .na +\fB\fBzpool labelclear\fR [\fB-f\fR] \fIdevice\fR +.ad +.sp .6 +.RS 4n +Removes ZFS label information from the specified device. The device must not be part of an active pool configuration. +.sp +.ne 2 +.mk +.na +\fB\fB-f\fR\fR +.ad +.RS 12n +.rt +Treat exported or foreign devices as inactive. +.RE + +.RE + +.sp +.ne 2 +.mk +.na \fB\fBzpool list\fR [\fB-H\fR] [\fB-o\fR \fIprops\fR[,...]] [\fIpool\fR] ...\fR .ad .sp .6 Modified: head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c ============================================================================== --- head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Mon Jul 18 03:00:59 2011 (r224170) +++ head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Mon Jul 18 03:18:06 2011 (r224171) @@ -57,6 +57,7 @@ static int zpool_do_destroy(int, char ** static int zpool_do_add(int, char **); static int zpool_do_remove(int, char **); +static int zpool_do_labelclear(int, char **); static int zpool_do_list(int, char **); static int zpool_do_iostat(int, char **); @@ -113,6 +114,7 @@ typedef enum { HELP_HISTORY, HELP_IMPORT, HELP_IOSTAT, + HELP_LABELCLEAR, HELP_LIST, HELP_OFFLINE, HELP_ONLINE, @@ -149,6 +151,8 @@ static zpool_command_t command_table[] = { "add", zpool_do_add, HELP_ADD }, { "remove", zpool_do_remove, HELP_REMOVE }, { NULL }, + { "labelclear", zpool_do_labelclear, HELP_LABELCLEAR }, + { NULL }, { "list", zpool_do_list, HELP_LIST }, { "iostat", zpool_do_iostat, HELP_IOSTAT }, { "status", zpool_do_status, HELP_STATUS }, @@ -215,6 +219,8 @@ get_usage(zpool_help_t idx) { case HELP_IOSTAT: return (gettext("\tiostat [-v] [-T d|u] [pool] ... [interval " "[count]]\n")); + case HELP_LABELCLEAR: + return (gettext("\tlabelclear [-f] \n")); case HELP_LIST: return (gettext("\tlist [-H] [-o property[,...]] " "[-T d|u] [pool] ... [interval [count]]\n")); @@ -561,6 +567,125 @@ zpool_do_remove(int argc, char **argv) } /* + * zpool labelclear + * + * Verifies that the vdev is not active and zeros out the label information + * on the device. + */ +int +zpool_do_labelclear(int argc, char **argv) +{ + char *vdev, *name; + int c, fd = -1, ret = 0; + pool_state_t state; + boolean_t inuse = B_FALSE; + boolean_t force = B_FALSE; + + /* check options */ + while ((c = getopt(argc, argv, "f")) != -1) { + switch (c) { + case 'f': + force = B_TRUE; + break; + default: + (void) fprintf(stderr, gettext("invalid option '%c'\n"), + optopt); + usage(B_FALSE); + } + } + + argc -= optind; + argv += optind; + + /* get vdev name */ + if (argc < 1) { + (void) fprintf(stderr, gettext("missing vdev device name\n")); + usage(B_FALSE); + } + + vdev = argv[0]; + if ((fd = open(vdev, O_RDWR)) < 0) { + (void) fprintf(stderr, gettext("Unable to open %s\n"), vdev); + return (B_FALSE); + } + + name = NULL; + if (zpool_in_use(g_zfs, fd, &state, &name, &inuse) != 0) { + if (force) + goto wipe_label; + + (void) fprintf(stderr, + gettext("Unable to determine pool state for %s\n" + "Use -f to force the clearing any label data\n"), vdev); + + return (1); + } + + if (inuse) { + switch (state) { + default: + case POOL_STATE_ACTIVE: + case POOL_STATE_SPARE: + case POOL_STATE_L2CACHE: + (void) fprintf(stderr, +gettext("labelclear operation failed.\n" + "\tVdev %s is a member (%s), of pool \"%s\".\n" + "\tTo remove label information from this device, export or destroy\n" + "\tthe pool, or remove %s from the configuration of this pool\n" + "\tand retry the labelclear operation\n"), + vdev, zpool_pool_state_to_name(state), name, vdev); + ret = 1; + goto errout; + + case POOL_STATE_EXPORTED: + if (force) + break; + + (void) fprintf(stderr, +gettext("labelclear operation failed.\n" + "\tVdev %s is a member of the exported pool \"%s\".\n" + "\tUse \"zpool labelclear -f %s\" to force the removal of label\n" + "\tinformation.\n"), + vdev, name, vdev); + ret = 1; + goto errout; + + case POOL_STATE_POTENTIALLY_ACTIVE: + if (force) + break; + + (void) fprintf(stderr, +gettext("labelclear operation failed.\n" + "\tVdev %s is a member of the pool \"%s\".\n" + "\tThis pool is unknown to this system, but may be active on\n" + "\tanother system. Use \'zpool labelclear -f %s\' to force the\n" + "\tremoval of label information.\n"), + vdev, name, vdev); + ret = 1; + goto errout; + + case POOL_STATE_DESTROYED: + /* inuse should never be set for a destoryed pool... */ + break; + } + } + +wipe_label: + if (zpool_clear_label(fd) != 0) { + (void) fprintf(stderr, + gettext("Label clear failed on vdev %s\n"), vdev); + ret = 1; + } + +errout: + close(fd); + if (name != NULL) + free(name); + + return (ret); +} + +/* * zpool create [-fn] [-o property=value] ... * [-O file-system-property=value] ... * [-R root] [-m mountpoint] ... Modified: head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c ============================================================================== --- head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Mon Jul 18 03:00:59 2011 (r224170) +++ head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Mon Jul 18 03:18:06 2011 (r224171) @@ -1084,8 +1084,8 @@ zpool_open_func(void *arg) /* * Given a file descriptor, clear (zero) the label information. This function - * is currently only used in the appliance stack as part of the ZFS sysevent - * module. + * is used in the appliance stack as part of the ZFS sysevent module and + * to implement the "zpool labelclear" command. */ int zpool_clear_label(int fd) From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 04:54:13 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6B27E106564A; Mon, 18 Jul 2011 04:54:13 +0000 (UTC) (envelope-from avatar@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4004A8FC14; Mon, 18 Jul 2011 04:54:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6I4sDRt006440; Mon, 18 Jul 2011 04:54:13 GMT (envelope-from avatar@svn.freebsd.org) Received: (from avatar@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6I4sDam006438; Mon, 18 Jul 2011 04:54:13 GMT (envelope-from avatar@svn.freebsd.org) Message-Id: <201107180454.p6I4sDam006438@svn.freebsd.org> From: Tai-hwa Liang Date: Mon, 18 Jul 2011 04:54:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224173 - stable/8/usr.bin/find X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 04:54:13 -0000 Author: avatar Date: Mon Jul 18 04:54:12 2011 New Revision: 224173 URL: http://svn.freebsd.org/changeset/base/224173 Log: MFC r223035: Using statfs.f_fstypename rather than statfs.f_type whilst performing fstype comparsion as nullfs will copy f_type from underlayer FS. PR: bin/156258 Submitted by: Marcin Wisnicki Modified: stable/8/usr.bin/find/function.c Directory Properties: stable/8/usr.bin/find/ (props changed) Modified: stable/8/usr.bin/find/function.c ============================================================================== --- stable/8/usr.bin/find/function.c Mon Jul 18 03:40:49 2011 (r224172) +++ stable/8/usr.bin/find/function.c Mon Jul 18 04:54:12 2011 (r224173) @@ -851,7 +851,8 @@ f_fstype(PLAN *plan, FTSENT *entry) static dev_t curdev; /* need a guaranteed illegal dev value */ static int first = 1; struct statfs sb; - static int val_type, val_flags; + static int val_flags; + static char fstype[sizeof(sb.f_fstypename)]; char *p, save[2] = {0,0}; if ((plan->flags & F_MTMASK) == F_MTUNKNOWN) @@ -893,13 +894,13 @@ f_fstype(PLAN *plan, FTSENT *entry) * always copy both of them. */ val_flags = sb.f_flags; - val_type = sb.f_type; + strlcpy(fstype, sb.f_fstypename, sizeof(fstype)); } switch (plan->flags & F_MTMASK) { case F_MTFLAG: return val_flags & plan->mt_data; case F_MTTYPE: - return val_type == plan->mt_data; + return (strncmp(fstype, plan->c_data, sizeof(fstype)) == 0); default: abort(); } @@ -910,22 +911,11 @@ c_fstype(OPTION *option, char ***argvp) { char *fsname; PLAN *new; - struct xvfsconf vfc; fsname = nextarg(option, argvp); ftsoptions &= ~FTS_NOSTAT; new = palloc(option); - - /* - * Check first for a filesystem name. - */ - if (getvfsbyname(fsname, &vfc) == 0) { - new->flags |= F_MTTYPE; - new->mt_data = vfc.vfc_typenum; - return new; - } - switch (*fsname) { case 'l': if (!strcmp(fsname, "local")) { @@ -943,12 +933,8 @@ c_fstype(OPTION *option, char ***argvp) break; } - /* - * We need to make filesystem checks for filesystems - * that exists but aren't in the kernel work. - */ - fprintf(stderr, "Warning: Unknown filesystem type %s\n", fsname); - new->flags |= F_MTUNKNOWN; + new->flags |= F_MTTYPE; + new->c_data = fsname; return new; } From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 07:16:44 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B9468106566C; Mon, 18 Jul 2011 07:16:44 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A44858FC18; Mon, 18 Jul 2011 07:16:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6I7Gi59010726; Mon, 18 Jul 2011 07:16:44 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6I7GiWR010715; Mon, 18 Jul 2011 07:16:44 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201107180716.p6I7GiWR010715@svn.freebsd.org> From: Martin Matuska Date: Mon, 18 Jul 2011 07:16:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224174 - in head: cddl/contrib/opensolaris/cmd/zfs sys/cddl/contrib/opensolaris/common/acl sys/cddl/contrib/opensolaris/common/zfs sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/cd... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 07:16:44 -0000 Author: mm Date: Mon Jul 18 07:16:44 2011 New Revision: 224174 URL: http://svn.freebsd.org/changeset/base/224174 Log: Resurrect the ZFS "aclmode" property Change default of "aclmode" to "discard". Illumos-gate changeset: 13370:8c04143bd318 Obtained from: Illumos (Feature #742) MFC after: 2 weeks Modified: head/cddl/contrib/opensolaris/cmd/zfs/zfs.8 head/sys/cddl/contrib/opensolaris/common/acl/acl_common.c head/sys/cddl/contrib/opensolaris/common/acl/acl_common.h head/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c head/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h Modified: head/cddl/contrib/opensolaris/cmd/zfs/zfs.8 ============================================================================== --- head/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Mon Jul 18 04:54:12 2011 (r224173) +++ head/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Mon Jul 18 07:16:44 2011 (r224174) @@ -6,6 +6,7 @@ .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. .\" See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with .\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] +.\" Copyright 2011 Nexenta Systems, Inc. All rights reserved. .\" Copyright 2011 by Delphix. All rights reserved. .TH zfs 1M "24 Sep 2009" "SunOS 5.11" "System Administration Commands" .SH NAME @@ -642,7 +643,7 @@ When the property value is set to \fBpas .ad .sp .6 .RS 4n -Controls how an \fBACL\fR is modified during \fBchmod\fR(2). A file system with an \fBaclmode\fR property of \fBdiscard\fR deletes all \fBACL\fR entries that do not represent the mode of the file. An \fBaclmode\fR property of \fBgroupmask\fR (the default) reduces user or group permissions. The permissions are reduced, such that they are no greater than the group permission bits, unless it is a user entry that has the same \fBUID\fR as the owner of the file or directory. In this case, the \fBACL\fR permissions are reduced so that they are no greater than owner permission bits. A file system with an \fBaclmode\fR property of \fBpassthrough\fR indicates that no changes are made to the \fBACL\fR other than generating the necessary \fBACL\fR entries to represent the new mode of the file or directory. +Controls how an \fBACL\fR is modified during \fBchmod\fR(2). A file system with an \fBaclmode\fR property of \fBdiscard\fR (the default) deletes all \fBACL\fR entries that do not represent the mode of the file. An \fBaclmode\fR property of \fBgroupmask\fR reduces permissions granted in all \fBALLOW\fR entries found in the \fBACL\fR such that they are no greater than the group permissions specified by \fBchmod\fR. A file system with an \fBaclmode\fR property of \fBpassthrough\fR indicates that no changes are made to the \fBACL\fR other than creating or updating the necessary \fBACL\fR entries to represent the new mode of the file or directory. .RE .sp @@ -2697,7 +2698,7 @@ pool/home/bob setuid on pool/home/bob readonly off default pool/home/bob zoned off default pool/home/bob snapdir hidden default -pool/home/bob aclmode groupmask default +pool/home/bob aclmode discard default pool/home/bob aclinherit restricted default pool/home/bob canmount on default pool/home/bob shareiscsi off default Modified: head/sys/cddl/contrib/opensolaris/common/acl/acl_common.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/common/acl/acl_common.c Mon Jul 18 04:54:12 2011 (r224173) +++ head/sys/cddl/contrib/opensolaris/common/acl/acl_common.c Mon Jul 18 07:16:44 2011 (r224174) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ #include @@ -376,7 +377,7 @@ access_mask_set(int haswriteperm, int ha * by nfsace, assuming aclent_t -> nfsace semantics. */ static uint32_t -mode_to_ace_access(mode_t mode, int isdir, int isowner, int isallow) +mode_to_ace_access(mode_t mode, boolean_t isdir, int isowner, int isallow) { uint32_t access = 0; int haswriteperm = 0; @@ -419,7 +420,7 @@ mode_to_ace_access(mode_t mode, int isdi access |= ACE_DELETE_CHILD; } /* exec */ - if (mode & 01) { + if (mode & S_IXOTH) { access |= ACE_EXECUTE; } @@ -670,7 +671,7 @@ out: } static int -convert_aent_to_ace(aclent_t *aclentp, int aclcnt, int isdir, +convert_aent_to_ace(aclent_t *aclentp, int aclcnt, boolean_t isdir, ace_t **retacep, int *retacecnt) { ace_t *acep; @@ -696,7 +697,7 @@ convert_aent_to_ace(aclent_t *aclentp, i dfaclcnt = aclcnt - i; } - if (dfaclcnt && isdir == 0) { + if (dfaclcnt && !isdir) { return (EINVAL); } @@ -734,7 +735,7 @@ convert_aent_to_ace(aclent_t *aclentp, i } static int -ace_mask_to_mode(uint32_t mask, o_mode_t *modep, int isdir) +ace_mask_to_mode(uint32_t mask, o_mode_t *modep, boolean_t isdir) { int error = 0; o_mode_t mode = 0; @@ -1031,7 +1032,7 @@ out: } static int -ace_allow_to_mode(uint32_t mask, o_mode_t *modep, int isdir) +ace_allow_to_mode(uint32_t mask, o_mode_t *modep, boolean_t isdir) { /* ACE_READ_ACL and ACE_READ_ATTRIBUTES must both be set */ if ((mask & (ACE_READ_ACL | ACE_READ_ATTRIBUTES)) != @@ -1044,7 +1045,7 @@ ace_allow_to_mode(uint32_t mask, o_mode_ static int acevals_to_aent(acevals_t *vals, aclent_t *dest, ace_list_t *list, - uid_t owner, gid_t group, int isdir) + uid_t owner, gid_t group, boolean_t isdir) { int error; uint32_t flips = ACE_POSIX_SUPPORTED_BITS; @@ -1084,7 +1085,7 @@ out: static int ace_list_to_aent(ace_list_t *list, aclent_t **aclentp, int *aclcnt, - uid_t owner, gid_t group, int isdir) + uid_t owner, gid_t group, boolean_t isdir) { int error = 0; aclent_t *aent, *result = NULL; @@ -1264,7 +1265,7 @@ acevals_compare(const void *va, const vo static int ln_ace_to_aent(ace_t *ace, int n, uid_t owner, gid_t group, aclent_t **aclentp, int *aclcnt, aclent_t **dfaclentp, int *dfaclcnt, - int isdir) + boolean_t isdir) { int error = 0; ace_t *acep; @@ -1459,7 +1460,7 @@ out: } static int -convert_ace_to_aent(ace_t *acebufp, int acecnt, int isdir, +convert_ace_to_aent(ace_t *acebufp, int acecnt, boolean_t isdir, uid_t owner, gid_t group, aclent_t **retaclentp, int *retaclcnt) { int error = 0; @@ -1501,7 +1502,7 @@ convert_ace_to_aent(ace_t *acebufp, int int -acl_translate(acl_t *aclp, int target_flavor, int isdir, uid_t owner, +acl_translate(acl_t *aclp, int target_flavor, boolean_t isdir, uid_t owner, gid_t group) { int aclcnt; @@ -1573,101 +1574,105 @@ out: } void -acl_trivial_access_masks(mode_t mode, uint32_t *allow0, uint32_t *deny1, - uint32_t *deny2, uint32_t *owner, uint32_t *group, uint32_t *everyone) +acl_trivial_access_masks(mode_t mode, boolean_t isdir, trivial_acl_t *masks) { - *deny1 = *deny2 = *allow0 = *group = 0; + uint32_t read_mask = ACE_READ_DATA; + uint32_t write_mask = ACE_WRITE_DATA|ACE_APPEND_DATA; + uint32_t execute_mask = ACE_EXECUTE; + (void) isdir; /* will need this later */ + + masks->deny1 = 0; if (!(mode & S_IRUSR) && (mode & (S_IRGRP|S_IROTH))) - *deny1 |= ACE_READ_DATA; + masks->deny1 |= read_mask; if (!(mode & S_IWUSR) && (mode & (S_IWGRP|S_IWOTH))) - *deny1 |= ACE_WRITE_DATA|ACE_APPEND_DATA; + masks->deny1 |= write_mask; if (!(mode & S_IXUSR) && (mode & (S_IXGRP|S_IXOTH))) - *deny1 |= ACE_EXECUTE; + masks->deny1 |= execute_mask; + masks->deny2 = 0; if (!(mode & S_IRGRP) && (mode & S_IROTH)) - *deny2 = ACE_READ_DATA; + masks->deny2 |= read_mask; if (!(mode & S_IWGRP) && (mode & S_IWOTH)) - *deny2 |= ACE_WRITE_DATA|ACE_APPEND_DATA; + masks->deny2 |= write_mask; if (!(mode & S_IXGRP) && (mode & S_IXOTH)) - *deny2 |= ACE_EXECUTE; + masks->deny2 |= execute_mask; + masks->allow0 = 0; if ((mode & S_IRUSR) && (!(mode & S_IRGRP) && (mode & S_IROTH))) - *allow0 |= ACE_READ_DATA; + masks->allow0 |= read_mask; if ((mode & S_IWUSR) && (!(mode & S_IWGRP) && (mode & S_IWOTH))) - *allow0 |= ACE_WRITE_DATA|ACE_APPEND_DATA; + masks->allow0 |= write_mask; if ((mode & S_IXUSR) && (!(mode & S_IXGRP) && (mode & S_IXOTH))) - *allow0 |= ACE_EXECUTE; + masks->allow0 |= execute_mask; - *owner = ACE_WRITE_ATTRIBUTES|ACE_WRITE_OWNER|ACE_WRITE_ACL| + masks->owner = ACE_WRITE_ATTRIBUTES|ACE_WRITE_OWNER|ACE_WRITE_ACL| ACE_WRITE_NAMED_ATTRS|ACE_READ_ACL|ACE_READ_ATTRIBUTES| ACE_READ_NAMED_ATTRS|ACE_SYNCHRONIZE; if (mode & S_IRUSR) - *owner |= ACE_READ_DATA; + masks->owner |= read_mask; if (mode & S_IWUSR) - *owner |= ACE_WRITE_DATA|ACE_APPEND_DATA; + masks->owner |= write_mask; if (mode & S_IXUSR) - *owner |= ACE_EXECUTE; + masks->owner |= execute_mask; - *group = ACE_READ_ACL|ACE_READ_ATTRIBUTES| ACE_READ_NAMED_ATTRS| + masks->group = ACE_READ_ACL|ACE_READ_ATTRIBUTES|ACE_READ_NAMED_ATTRS| ACE_SYNCHRONIZE; if (mode & S_IRGRP) - *group |= ACE_READ_DATA; + masks->group |= read_mask; if (mode & S_IWGRP) - *group |= ACE_WRITE_DATA|ACE_APPEND_DATA; + masks->group |= write_mask; if (mode & S_IXGRP) - *group |= ACE_EXECUTE; + masks->group |= execute_mask; - *everyone = ACE_READ_ACL|ACE_READ_ATTRIBUTES| ACE_READ_NAMED_ATTRS| + masks->everyone = ACE_READ_ACL|ACE_READ_ATTRIBUTES|ACE_READ_NAMED_ATTRS| ACE_SYNCHRONIZE; if (mode & S_IROTH) - *everyone |= ACE_READ_DATA; + masks->everyone |= read_mask; if (mode & S_IWOTH) - *everyone |= ACE_WRITE_DATA|ACE_APPEND_DATA; + masks->everyone |= write_mask; if (mode & S_IXOTH) - *everyone |= ACE_EXECUTE; + masks->everyone |= execute_mask; } int -acl_trivial_create(mode_t mode, ace_t **acl, int *count) +acl_trivial_create(mode_t mode, boolean_t isdir, ace_t **acl, int *count) { - uint32_t deny1, deny2; - uint32_t allow0; - uint32_t owner, group, everyone; - int index = 0; + int index = 0; int error; + trivial_acl_t masks; *count = 3; - acl_trivial_access_masks(mode, &allow0, &deny1, &deny2, &owner, &group, - &everyone); + acl_trivial_access_masks(mode, isdir, &masks); - if (allow0) + if (masks.allow0) (*count)++; - if (deny1) + if (masks.deny1) (*count)++; - if (deny2) + if (masks.deny2) (*count)++; if ((error = cacl_malloc((void **)acl, *count * sizeof (ace_t))) != 0) return (error); - if (allow0) { - SET_ACE(acl, index, -1, allow0, ACE_ACCESS_ALLOWED_ACE_TYPE, - ACE_OWNER); - } - if (deny1) { - SET_ACE(acl, index, -1, deny1, ACE_ACCESS_DENIED_ACE_TYPE, - ACE_OWNER); - } - if (deny2) { - SET_ACE(acl, index, -1, deny2, ACE_ACCESS_DENIED_ACE_TYPE, - ACE_GROUP|ACE_IDENTIFIER_GROUP); - } - - SET_ACE(acl, index, -1, owner, ACE_ACCESS_ALLOWED_ACE_TYPE, ACE_OWNER); - SET_ACE(acl, index, -1, group, ACE_ACCESS_ALLOWED_ACE_TYPE, + if (masks.allow0) { + SET_ACE(acl, index, -1, masks.allow0, + ACE_ACCESS_ALLOWED_ACE_TYPE, ACE_OWNER); + } + if (masks.deny1) { + SET_ACE(acl, index, -1, masks.deny1, + ACE_ACCESS_DENIED_ACE_TYPE, ACE_OWNER); + } + if (masks.deny2) { + SET_ACE(acl, index, -1, masks.deny2, + ACE_ACCESS_DENIED_ACE_TYPE, ACE_GROUP|ACE_IDENTIFIER_GROUP); + } + + SET_ACE(acl, index, -1, masks.owner, ACE_ACCESS_ALLOWED_ACE_TYPE, + ACE_OWNER); + SET_ACE(acl, index, -1, masks.group, ACE_ACCESS_ALLOWED_ACE_TYPE, ACE_IDENTIFIER_GROUP|ACE_GROUP); - SET_ACE(acl, index, -1, everyone, ACE_ACCESS_ALLOWED_ACE_TYPE, + SET_ACE(acl, index, -1, masks.everyone, ACE_ACCESS_ALLOWED_ACE_TYPE, ACE_EVERYONE); return (0); Modified: head/sys/cddl/contrib/opensolaris/common/acl/acl_common.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/common/acl/acl_common.h Mon Jul 18 04:54:12 2011 (r224173) +++ head/sys/cddl/contrib/opensolaris/common/acl/acl_common.h Mon Jul 18 07:16:44 2011 (r224174) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ #ifndef _ACL_COMMON_H @@ -33,7 +34,14 @@ extern "C" { #endif -extern ace_t trivial_acl[6]; +typedef struct trivial_acl { + uint32_t allow0; /* allow mask for bits only in owner */ + uint32_t deny1; /* deny mask for bits not in owner */ + uint32_t deny2; /* deny mask for bits not in group */ + uint32_t owner; /* allow mask matching mode */ + uint32_t group; /* allow mask matching mode */ + uint32_t everyone; /* allow mask matching mode */ +} trivial_acl_t; extern int acltrivial(const char *); extern void adjust_ace_pair(ace_t *pair, mode_t mode); @@ -45,14 +53,14 @@ extern int ace_trivial_common(void *, in #if !defined(_KERNEL) extern acl_t *acl_alloc(acl_type_t); extern void acl_free(acl_t *aclp); -extern int acl_translate(acl_t *aclp, int target_flavor, - int isdir, uid_t owner, gid_t group); +extern int acl_translate(acl_t *aclp, int target_flavor, boolean_t isdir, + uid_t owner, gid_t group); #endif /* !_KERNEL */ void ksort(caddr_t v, int n, int s, int (*f)()); int cmp2acls(void *a, void *b); -int acl_trivial_create(mode_t mode, ace_t **acl, int *count); -void acl_trivial_access_masks(mode_t mode, uint32_t *allow0, uint32_t *deny1, - uint32_t *deny2, uint32_t *owner, uint32_t *group, uint32_t *everyone); +int acl_trivial_create(mode_t mode, boolean_t isdir, ace_t **acl, int *count); +void acl_trivial_access_masks(mode_t mode, boolean_t isdir, + trivial_acl_t *masks); #ifdef __cplusplus } Modified: head/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c Mon Jul 18 04:54:12 2011 (r224173) +++ head/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c Mon Jul 18 07:16:44 2011 (r224174) @@ -105,6 +105,13 @@ zfs_prop_init(void) { NULL } }; + static zprop_index_t acl_mode_table[] = { + { "discard", ZFS_ACL_DISCARD }, + { "groupmask", ZFS_ACL_GROUPMASK }, + { "passthrough", ZFS_ACL_PASSTHROUGH }, + { NULL } + }; + static zprop_index_t acl_inherit_table[] = { { "discard", ZFS_ACL_DISCARD }, { "noallow", ZFS_ACL_NOALLOW }, @@ -208,6 +215,9 @@ zfs_prop_init(void) zprop_register_index(ZFS_PROP_SNAPDIR, "snapdir", ZFS_SNAPDIR_HIDDEN, PROP_INHERIT, ZFS_TYPE_FILESYSTEM, "hidden | visible", "SNAPDIR", snapdir_table); + zprop_register_index(ZFS_PROP_ACLMODE, "aclmode", ZFS_ACL_DISCARD, + PROP_INHERIT, ZFS_TYPE_FILESYSTEM, + "discard | groupmask | passthrough", "ACLMODE", acl_mode_table); zprop_register_index(ZFS_PROP_ACLINHERIT, "aclinherit", ZFS_ACL_RESTRICTED, PROP_INHERIT, ZFS_TYPE_FILESYSTEM, "discard | noallow | restricted | passthrough | passthrough-x", @@ -374,13 +384,6 @@ zfs_prop_init(void) zprop_register_hidden(ZFS_PROP_OBJSETID, "objsetid", PROP_TYPE_NUMBER, PROP_READONLY, ZFS_TYPE_DATASET, "OBJSETID"); - /* - * Property to be removed once libbe is integrated - */ - zprop_register_hidden(ZFS_PROP_PRIVATE, "priv_prop", - PROP_TYPE_NUMBER, PROP_READONLY, ZFS_TYPE_FILESYSTEM, - "PRIV_PROP"); - /* oddball properties */ zprop_register_impl(ZFS_PROP_CREATION, "creation", PROP_TYPE_NUMBER, 0, NULL, PROP_READONLY, ZFS_TYPE_DATASET, Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h Mon Jul 18 04:54:12 2011 (r224173) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h Mon Jul 18 07:16:44 2011 (r224174) @@ -217,7 +217,7 @@ int zfs_fastaccesschk_execute(struct zno extern int zfs_zaccess_rwx(struct znode *, mode_t, int, cred_t *); extern int zfs_zaccess_unix(struct znode *, mode_t, cred_t *); extern int zfs_acl_access(struct znode *, int, cred_t *); -void zfs_acl_chmod_setattr(struct znode *, zfs_acl_t **, uint64_t); +int zfs_acl_chmod_setattr(struct znode *, zfs_acl_t **, uint64_t); int zfs_zaccess_delete(struct znode *, struct znode *, cred_t *); int zfs_zaccess_rename(struct znode *, struct znode *, struct znode *, struct znode *, cred_t *cr); Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h Mon Jul 18 04:54:12 2011 (r224173) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h Mon Jul 18 07:16:44 2011 (r224174) @@ -55,6 +55,7 @@ struct zfsvfs { boolean_t z_fuid_dirty; /* need to sync fuid table ? */ struct zfs_fuid_info *z_fuid_replay; /* fuid info for replay */ zilog_t *z_log; /* intent log pointer */ + uint_t z_acl_mode; /* acl chmod/mode behavior */ uint_t z_acl_inherit; /* acl inheritance behavior */ zfs_case_t z_case; /* case-sense */ boolean_t z_utf8; /* utf8-only */ Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c Mon Jul 18 04:54:12 2011 (r224173) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c Mon Jul 18 07:16:44 2011 (r224174) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ #include @@ -1327,75 +1328,8 @@ zfs_aclset_common(znode_t *zp, zfs_acl_t return (sa_bulk_update(zp->z_sa_hdl, bulk, count, tx)); } -/* - * Update access mask for prepended ACE - * - * This applies the "groupmask" value for aclmode property. - */ static void -zfs_acl_prepend_fixup(zfs_acl_t *aclp, void *acep, void *origacep, - mode_t mode, uint64_t owner) -{ - int rmask, wmask, xmask; - int user_ace; - uint16_t aceflags; - uint32_t origmask, acepmask; - uint64_t fuid; - - aceflags = aclp->z_ops.ace_flags_get(acep); - fuid = aclp->z_ops.ace_who_get(acep); - origmask = aclp->z_ops.ace_mask_get(origacep); - acepmask = aclp->z_ops.ace_mask_get(acep); - - user_ace = (!(aceflags & - (ACE_OWNER|ACE_GROUP|ACE_IDENTIFIER_GROUP))); - - if (user_ace && (fuid == owner)) { - rmask = S_IRUSR; - wmask = S_IWUSR; - xmask = S_IXUSR; - } else { - rmask = S_IRGRP; - wmask = S_IWGRP; - xmask = S_IXGRP; - } - - if (origmask & ACE_READ_DATA) { - if (mode & rmask) { - acepmask &= ~ACE_READ_DATA; - } else { - acepmask |= ACE_READ_DATA; - } - } - - if (origmask & ACE_WRITE_DATA) { - if (mode & wmask) { - acepmask &= ~ACE_WRITE_DATA; - } else { - acepmask |= ACE_WRITE_DATA; - } - } - - if (origmask & ACE_APPEND_DATA) { - if (mode & wmask) { - acepmask &= ~ACE_APPEND_DATA; - } else { - acepmask |= ACE_APPEND_DATA; - } - } - - if (origmask & ACE_EXECUTE) { - if (mode & xmask) { - acepmask &= ~ACE_EXECUTE; - } else { - acepmask |= ACE_EXECUTE; - } - } - aclp->z_ops.ace_mask_set(acep, acepmask); -} - -static void -zfs_acl_chmod(zfsvfs_t *zfsvfs, uint64_t mode, zfs_acl_t *aclp) +zfs_acl_chmod(vtype_t vtype, uint64_t mode, boolean_t trim, zfs_acl_t *aclp) { void *acep = NULL; uint64_t who; @@ -1407,30 +1341,31 @@ zfs_acl_chmod(zfsvfs_t *zfsvfs, uint64_t zfs_acl_node_t *newnode; size_t abstract_size = aclp->z_ops.ace_abstract_size(); void *zacep; - uint32_t owner, group, everyone; - uint32_t deny1, deny2, allow0; + boolean_t isdir; + trivial_acl_t masks; new_count = new_bytes = 0; - acl_trivial_access_masks((mode_t)mode, &allow0, &deny1, &deny2, - &owner, &group, &everyone); + isdir = (vtype == VDIR); + + acl_trivial_access_masks((mode_t)mode, isdir, &masks); newnode = zfs_acl_node_alloc((abstract_size * 6) + aclp->z_acl_bytes); zacep = newnode->z_acldata; - if (allow0) { - zfs_set_ace(aclp, zacep, allow0, ALLOW, -1, ACE_OWNER); + if (masks.allow0) { + zfs_set_ace(aclp, zacep, masks.allow0, ALLOW, -1, ACE_OWNER); zacep = (void *)((uintptr_t)zacep + abstract_size); new_count++; new_bytes += abstract_size; - } if (deny1) { - zfs_set_ace(aclp, zacep, deny1, DENY, -1, ACE_OWNER); + } if (masks.deny1) { + zfs_set_ace(aclp, zacep, masks.deny1, DENY, -1, ACE_OWNER); zacep = (void *)((uintptr_t)zacep + abstract_size); new_count++; new_bytes += abstract_size; } - if (deny2) { - zfs_set_ace(aclp, zacep, deny2, DENY, -1, OWNING_GROUP); + if (masks.deny2) { + zfs_set_ace(aclp, zacep, masks.deny2, DENY, -1, OWNING_GROUP); zacep = (void *)((uintptr_t)zacep + abstract_size); new_count++; new_bytes += abstract_size; @@ -1449,10 +1384,17 @@ zfs_acl_chmod(zfsvfs_t *zfsvfs, uint64_t continue; } + /* + * If this ACL has any inheritable ACEs, mark that in + * the hints (which are later masked into the pflags) + * so create knows to do inheritance. + */ + if (isdir && (inherit_flags & + (ACE_FILE_INHERIT_ACE|ACE_DIRECTORY_INHERIT_ACE))) + aclp->z_hints |= ZFS_INHERIT_ACE; + if ((type != ALLOW && type != DENY) || (inherit_flags & ACE_INHERIT_ONLY_ACE)) { - if (inherit_flags) - aclp->z_hints |= ZFS_INHERIT_ACE; switch (type) { case ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE: case ACE_ACCESS_DENIED_OBJECT_ACE_TYPE: @@ -1465,20 +1407,13 @@ zfs_acl_chmod(zfsvfs_t *zfsvfs, uint64_t /* * Limit permissions to be no greater than - * group permissions + * group permissions. + * The "aclinherit" and "aclmode" properties + * affect policy for create and chmod(2), + * respectively. */ - if (type == ALLOW && zfsvfs->z_acl_inherit == ZFS_ACL_RESTRICTED) { - if (!(mode & S_IRGRP)) - access_mask &= ~ACE_READ_DATA; - if (!(mode & S_IWGRP)) - access_mask &= - ~(ACE_WRITE_DATA|ACE_APPEND_DATA); - if (!(mode & S_IXGRP)) - access_mask &= ~ACE_EXECUTE; - access_mask &= - ~(ACE_WRITE_OWNER|ACE_WRITE_ACL| - ACE_WRITE_ATTRIBUTES|ACE_WRITE_NAMED_ATTRS); - } + if ((type == ALLOW) && trim) + access_mask &= masks.group; } zfs_set_ace(aclp, zacep, access_mask, type, who, iflags); ace_size = aclp->z_ops.ace_size(acep); @@ -1486,11 +1421,11 @@ zfs_acl_chmod(zfsvfs_t *zfsvfs, uint64_t new_count++; new_bytes += ace_size; } - zfs_set_ace(aclp, zacep, owner, 0, -1, ACE_OWNER); + zfs_set_ace(aclp, zacep, masks.owner, 0, -1, ACE_OWNER); zacep = (void *)((uintptr_t)zacep + abstract_size); - zfs_set_ace(aclp, zacep, group, 0, -1, OWNING_GROUP); + zfs_set_ace(aclp, zacep, masks.group, 0, -1, OWNING_GROUP); zacep = (void *)((uintptr_t)zacep + abstract_size); - zfs_set_ace(aclp, zacep, everyone, 0, -1, ACE_EVERYONE); + zfs_set_ace(aclp, zacep, masks.everyone, 0, -1, ACE_EVERYONE); new_count += 3; new_bytes += abstract_size * 3; @@ -1502,17 +1437,27 @@ zfs_acl_chmod(zfsvfs_t *zfsvfs, uint64_t list_insert_tail(&aclp->z_acl, newnode); } -void +int zfs_acl_chmod_setattr(znode_t *zp, zfs_acl_t **aclp, uint64_t mode) { + int error = 0; + mutex_enter(&zp->z_acl_lock); mutex_enter(&zp->z_lock); - *aclp = zfs_acl_alloc(zfs_acl_version_zp(zp)); - (*aclp)->z_hints = zp->z_pflags & V4_ACL_WIDE_FLAGS; - zfs_acl_chmod(zp->z_zfsvfs, mode, *aclp); + if (zp->z_zfsvfs->z_acl_mode == ZFS_ACL_DISCARD) + *aclp = zfs_acl_alloc(zfs_acl_version_zp(zp)); + else + error = zfs_acl_node_read(zp, B_TRUE, aclp, B_TRUE); + + if (error == 0) { + (*aclp)->z_hints = zp->z_pflags & V4_ACL_WIDE_FLAGS; + zfs_acl_chmod(ZTOV(zp)->v_type, mode, + (zp->z_zfsvfs->z_acl_mode == ZFS_ACL_GROUPMASK), *aclp); + } mutex_exit(&zp->z_lock); mutex_exit(&zp->z_acl_lock); - ASSERT(*aclp); + + return (error); } /* @@ -1764,8 +1709,8 @@ zfs_acl_ids_create(znode_t *dzp, int fla if (acl_ids->z_aclp == NULL) { mutex_enter(&dzp->z_acl_lock); mutex_enter(&dzp->z_lock); - if (!(flag & IS_ROOT_NODE) && (ZTOV(dzp)->v_type == VDIR && - (dzp->z_pflags & ZFS_INHERIT_ACE)) && + if (!(flag & IS_ROOT_NODE) && + (dzp->z_pflags & ZFS_INHERIT_ACE) && !(dzp->z_pflags & ZFS_XATTR)) { VERIFY(0 == zfs_acl_node_read(dzp, B_TRUE, &paclp, B_FALSE)); @@ -1782,7 +1727,9 @@ zfs_acl_ids_create(znode_t *dzp, int fla if (need_chmod) { acl_ids->z_aclp->z_hints |= (vap->va_type == VDIR) ? ZFS_ACL_AUTO_INHERIT : 0; - zfs_acl_chmod(zfsvfs, acl_ids->z_mode, acl_ids->z_aclp); + zfs_acl_chmod(vap->va_type, acl_ids->z_mode, + (zfsvfs->z_acl_inherit == ZFS_ACL_RESTRICTED), + acl_ids->z_aclp); } } Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Mon Jul 18 04:54:12 2011 (r224173) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Mon Jul 18 07:16:44 2011 (r224174) @@ -364,6 +364,14 @@ vscan_changed_cb(void *arg, uint64_t new } static void +acl_mode_changed_cb(void *arg, uint64_t newval) +{ + zfsvfs_t *zfsvfs = arg; + + zfsvfs->z_acl_mode = newval; +} + +static void acl_inherit_changed_cb(void *arg, uint64_t newval) { zfsvfs_t *zfsvfs = arg; @@ -488,6 +496,8 @@ zfs_register_callbacks(vfs_t *vfsp) error = error ? error : dsl_prop_register(ds, "snapdir", snapdir_changed_cb, zfsvfs); error = error ? error : dsl_prop_register(ds, + "aclmode", acl_mode_changed_cb, zfsvfs); + error = error ? error : dsl_prop_register(ds, "aclinherit", acl_inherit_changed_cb, zfsvfs); error = error ? error : dsl_prop_register(ds, "vscan", vscan_changed_cb, zfsvfs); @@ -525,6 +535,7 @@ unregister: (void) dsl_prop_unregister(ds, "setuid", setuid_changed_cb, zfsvfs); (void) dsl_prop_unregister(ds, "exec", exec_changed_cb, zfsvfs); (void) dsl_prop_unregister(ds, "snapdir", snapdir_changed_cb, zfsvfs); + (void) dsl_prop_unregister(ds, "aclmode", acl_mode_changed_cb, zfsvfs); (void) dsl_prop_unregister(ds, "aclinherit", acl_inherit_changed_cb, zfsvfs); (void) dsl_prop_unregister(ds, "vscan", vscan_changed_cb, zfsvfs); @@ -1202,6 +1213,9 @@ zfs_unregister_callbacks(zfsvfs_t *zfsvf VERIFY(dsl_prop_unregister(ds, "snapdir", snapdir_changed_cb, zfsvfs) == 0); + VERIFY(dsl_prop_unregister(ds, "aclmode", acl_mode_changed_cb, + zfsvfs) == 0); + VERIFY(dsl_prop_unregister(ds, "aclinherit", acl_inherit_changed_cb, zfsvfs) == 0); Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Mon Jul 18 04:54:12 2011 (r224173) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Mon Jul 18 07:16:44 2011 (r224174) @@ -3223,7 +3223,8 @@ top: uint64_t acl_obj; new_mode = (pmode & S_IFMT) | (vap->va_mode & ~S_IFMT); - zfs_acl_chmod_setattr(zp, &aclp, new_mode); + if (err = zfs_acl_chmod_setattr(zp, &aclp, new_mode)) + goto out; mutex_enter(&zp->z_lock); if (!zp->z_is_sa && ((acl_obj = zfs_external_acl(zp)) != 0)) { Modified: head/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h Mon Jul 18 04:54:12 2011 (r224173) +++ head/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h Mon Jul 18 07:16:44 2011 (r224174) @@ -90,7 +90,7 @@ typedef enum { ZFS_PROP_READONLY, ZFS_PROP_ZONED, ZFS_PROP_SNAPDIR, - ZFS_PROP_PRIVATE, /* not exposed to user, temporary */ + ZFS_PROP_ACLMODE, ZFS_PROP_ACLINHERIT, ZFS_PROP_CREATETXG, /* not exposed to the user */ ZFS_PROP_NAME, /* not exposed to the user */ From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 07:25:19 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F2CE7106564A; Mon, 18 Jul 2011 07:25:18 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 9487B8FC0C; Mon, 18 Jul 2011 07:25:17 +0000 (UTC) Received: from porto.starpoint.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id KAA18144; Mon, 18 Jul 2011 10:25:15 +0300 (EEST) (envelope-from avg@FreeBSD.org) Received: from localhost ([127.0.0.1]) by porto.starpoint.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1QiiCY-000JmO-W4; Mon, 18 Jul 2011 10:25:15 +0300 Message-ID: <4E23DFD9.5070401@FreeBSD.org> Date: Mon, 18 Jul 2011 10:25:13 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:5.0) Gecko/20110706 Thunderbird/5.0 MIME-Version: 1.0 To: "Justin T. Gibbs" References: <201107180213.p6I2DL2J000849@svn.freebsd.org> In-Reply-To: <201107180213.p6I2DL2J000849@svn.freebsd.org> X-Enigmail-Version: 1.2pre Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r224169 - in head/cddl/contrib/opensolaris: cmd/zpool lib/libzfs/common X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 07:25:19 -0000 on 18/07/2011 05:13 Justin T. Gibbs said the following: > MFD after: 1 week Assuming this is not a typo, just out of curiosity, what's 'D'? -- Andriy Gapon From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 08:10:50 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0D5EF10656A9; Mon, 18 Jul 2011 08:10:50 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F004F8FC15; Mon, 18 Jul 2011 08:10:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6I8AnUU012338; Mon, 18 Jul 2011 08:10:49 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6I8AnCC012336; Mon, 18 Jul 2011 08:10:49 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201107180810.p6I8AnCC012336@svn.freebsd.org> From: Doug Barton Date: Mon, 18 Jul 2011 08:10:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224175 - in head/usr.sbin: . named.reload X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 08:10:50 -0000 Author: dougb Date: Mon Jul 18 08:10:49 2011 New Revision: 224175 URL: http://svn.freebsd.org/changeset/base/224175 Log: The named.reload script is no longer useful in the age of rc.d Deleted: head/usr.sbin/named.reload/ Modified: head/usr.sbin/Makefile Modified: head/usr.sbin/Makefile ============================================================================== --- head/usr.sbin/Makefile Mon Jul 18 07:16:44 2011 (r224174) +++ head/usr.sbin/Makefile Mon Jul 18 08:10:49 2011 (r224175) @@ -133,7 +133,6 @@ SUBDIR+= named SUBDIR+= named-checkconf SUBDIR+= named-checkzone SUBDIR+= named-journalprint -SUBDIR+= named.reload SUBDIR+= nsec3hash SUBDIR+= rndc SUBDIR+= rndc-confgen From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 08:29:49 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9B5A4106564A; Mon, 18 Jul 2011 08:29:49 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 875CF8FC12; Mon, 18 Jul 2011 08:29:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6I8Tn7Z013042; Mon, 18 Jul 2011 08:29:49 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6I8TnxC013033; Mon, 18 Jul 2011 08:29:49 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201107180829.p6I8TnxC013033@svn.freebsd.org> From: Martin Matuska Date: Mon, 18 Jul 2011 08:29:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224177 - in head: cddl/contrib/opensolaris/cmd/ztest sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 08:29:49 -0000 Author: mm Date: Mon Jul 18 08:29:49 2011 New Revision: 224177 URL: http://svn.freebsd.org/changeset/base/224177 Log: ZFS tries to allocate blocks evenly across all devices. This means when devices are imbalanced zfs will lots of CPU searching for space on devices which tend to be pretty full. It should instead fail quickly on the full devices and move onto devices which have more availability. New loader tunable: vfs.zfs.mg_alloc_failures (min = 8) Illumos-gate changeset: 13379:4df42cc92254 Obtained from: Illumos (Bug #1051) MFC after: 2 weeks Modified: head/cddl/contrib/opensolaris/cmd/ztest/ztest.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Modified: head/cddl/contrib/opensolaris/cmd/ztest/ztest.c ============================================================================== --- head/cddl/contrib/opensolaris/cmd/ztest/ztest.c Mon Jul 18 08:27:40 2011 (r224176) +++ head/cddl/contrib/opensolaris/cmd/ztest/ztest.c Mon Jul 18 08:29:49 2011 (r224177) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011 by Delphix. All rights reserved. */ /* @@ -5137,6 +5138,7 @@ ztest_run(ztest_shared_t *zs) */ kernel_init(FREAD | FWRITE); VERIFY(spa_open(zs->zs_pool, &spa, FTAG) == 0); + spa->spa_debug = B_TRUE; zs->zs_spa = spa; spa->spa_dedup_ditto = 2 * ZIO_DEDUPDITTO_MIN; Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Mon Jul 18 08:27:40 2011 (r224176) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Mon Jul 18 08:29:49 2011 (r224177) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011 by Delphix. All rights reserved. */ #include @@ -30,10 +31,35 @@ #include #include +/* + * Allow allocations to switch to gang blocks quickly. We do this to + * avoid having to load lots of space_maps in a given txg. There are, + * however, some cases where we want to avoid "fast" ganging and instead + * we want to do an exhaustive search of all metaslabs on this device. + * Currently we don't allow any gang or dump device related allocations + * to "fast" gang. + */ +#define CAN_FASTGANG(flags) \ + (!((flags) & (METASLAB_GANG_CHILD | METASLAB_GANG_HEADER | \ + METASLAB_GANG_AVOID))) + uint64_t metaslab_aliquot = 512ULL << 10; uint64_t metaslab_gang_bang = SPA_MAXBLOCKSIZE + 1; /* force gang blocks */ /* + * This value defines the number of allowed allocation failures per vdev. + * If a device reaches this threshold in a given txg then we consider skipping + * allocations on that device. + */ +int zfs_mg_alloc_failures = 0; + +SYSCTL_DECL(_vfs_zfs); +SYSCTL_INT(_vfs_zfs, OID_AUTO, mg_alloc_failures, CTLFLAG_RDTUN, + &zfs_mg_alloc_failures, 0, + "Number of allowed allocation failures per vdev"); +TUNABLE_INT("vfs.zfs.mg_alloc_failures", &zfs_mg_alloc_failures); + +/* * Metaslab debugging: when set, keeps all space maps in core to verify frees. */ static int metaslab_debug = 0; @@ -671,7 +697,7 @@ static space_map_ops_t metaslab_ndf_ops metaslab_ndf_fragmented }; -space_map_ops_t *zfs_metaslab_ops = &metaslab_ndf_ops; +space_map_ops_t *zfs_metaslab_ops = &metaslab_df_ops; /* * ========================================================================== @@ -844,7 +870,7 @@ metaslab_prefetch(metaslab_group_t *mg) } static int -metaslab_activate(metaslab_t *msp, uint64_t activation_weight, uint64_t size) +metaslab_activate(metaslab_t *msp, uint64_t activation_weight) { metaslab_group_t *mg = msp->ms_group; space_map_t *sm = &msp->ms_map; @@ -877,13 +903,6 @@ metaslab_activate(metaslab_t *msp, uint6 mutex_exit(&mg->mg_lock); } - /* - * If we were able to load the map then make sure - * that this map is still able to satisfy our request. - */ - if (msp->ms_weight < size) - return (ENOSPC); - metaslab_group_sort(msp->ms_group, msp, msp->ms_weight | activation_weight); } @@ -1099,6 +1118,7 @@ void metaslab_sync_reassess(metaslab_group_t *mg) { vdev_t *vd = mg->mg_vd; + int64_t failures = mg->mg_alloc_failures; /* * Re-evaluate all metaslabs which have lower offsets than the @@ -1115,6 +1135,8 @@ metaslab_sync_reassess(metaslab_group_t mutex_exit(&msp->ms_lock); } + atomic_add_64(&mg->mg_alloc_failures, -failures); + /* * Prefetch the next potential metaslabs */ @@ -1139,9 +1161,10 @@ metaslab_distance(metaslab_t *msp, dva_t } static uint64_t -metaslab_group_alloc(metaslab_group_t *mg, uint64_t size, uint64_t txg, - uint64_t min_distance, dva_t *dva, int d) +metaslab_group_alloc(metaslab_group_t *mg, uint64_t psize, uint64_t asize, + uint64_t txg, uint64_t min_distance, dva_t *dva, int d, int flags) { + spa_t *spa = mg->mg_vd->vdev_spa; metaslab_t *msp = NULL; uint64_t offset = -1ULL; avl_tree_t *t = &mg->mg_metaslab_tree; @@ -1162,11 +1185,17 @@ metaslab_group_alloc(metaslab_group_t *m mutex_enter(&mg->mg_lock); for (msp = avl_first(t); msp; msp = AVL_NEXT(t, msp)) { - if (msp->ms_weight < size) { + if (msp->ms_weight < asize) { + spa_dbgmsg(spa, "%s: failed to meet weight " + "requirement: vdev %llu, txg %llu, mg %p, " + "msp %p, psize %llu, asize %llu, " + "failures %llu, weight %llu", + spa_name(spa), mg->mg_vd->vdev_id, txg, + mg, msp, psize, asize, + mg->mg_alloc_failures, msp->ms_weight); mutex_exit(&mg->mg_lock); return (-1ULL); } - was_active = msp->ms_weight & METASLAB_ACTIVE_MASK; if (activation_weight == METASLAB_WEIGHT_PRIMARY) break; @@ -1185,6 +1214,25 @@ metaslab_group_alloc(metaslab_group_t *m if (msp == NULL) return (-1ULL); + /* + * If we've already reached the allowable number of failed + * allocation attempts on this metaslab group then we + * consider skipping it. We skip it only if we're allowed + * to "fast" gang, the physical size is larger than + * a gang block, and we're attempting to allocate from + * the primary metaslab. + */ + if (mg->mg_alloc_failures > zfs_mg_alloc_failures && + CAN_FASTGANG(flags) && psize > SPA_GANGBLOCKSIZE && + activation_weight == METASLAB_WEIGHT_PRIMARY) { + spa_dbgmsg(spa, "%s: skipping metaslab group: " + "vdev %llu, txg %llu, mg %p, psize %llu, " + "asize %llu, failures %llu", spa_name(spa), + mg->mg_vd->vdev_id, txg, mg, psize, asize, + mg->mg_alloc_failures); + return (-1ULL); + } + mutex_enter(&msp->ms_lock); /* @@ -1193,7 +1241,7 @@ metaslab_group_alloc(metaslab_group_t *m * another thread may have changed the weight while we * were blocked on the metaslab lock. */ - if (msp->ms_weight < size || (was_active && + if (msp->ms_weight < asize || (was_active && !(msp->ms_weight & METASLAB_ACTIVE_MASK) && activation_weight == METASLAB_WEIGHT_PRIMARY)) { mutex_exit(&msp->ms_lock); @@ -1208,14 +1256,16 @@ metaslab_group_alloc(metaslab_group_t *m continue; } - if (metaslab_activate(msp, activation_weight, size) != 0) { + if (metaslab_activate(msp, activation_weight) != 0) { mutex_exit(&msp->ms_lock); continue; } - if ((offset = space_map_alloc(&msp->ms_map, size)) != -1ULL) + if ((offset = space_map_alloc(&msp->ms_map, asize)) != -1ULL) break; + atomic_inc_64(&mg->mg_alloc_failures); + metaslab_passivate(msp, space_map_maxsize(&msp->ms_map)); mutex_exit(&msp->ms_lock); @@ -1224,7 +1274,7 @@ metaslab_group_alloc(metaslab_group_t *m if (msp->ms_allocmap[txg & TXG_MASK].sm_space == 0) vdev_dirty(mg->mg_vd, VDD_METASLAB, msp, txg); - space_map_add(&msp->ms_allocmap[txg & TXG_MASK], offset, size); + space_map_add(&msp->ms_allocmap[txg & TXG_MASK], offset, asize); mutex_exit(&msp->ms_lock); @@ -1351,7 +1401,8 @@ top: asize = vdev_psize_to_asize(vd, psize); ASSERT(P2PHASE(asize, 1ULL << vd->vdev_ashift) == 0); - offset = metaslab_group_alloc(mg, asize, txg, distance, dva, d); + offset = metaslab_group_alloc(mg, psize, asize, txg, distance, + dva, d, flags); if (offset != -1ULL) { /* * If we've just selected this metaslab group, @@ -1363,18 +1414,24 @@ top: vdev_stat_t *vs = &vd->vdev_stat; int64_t vu, cu; - /* - * Determine percent used in units of 0..1024. - * (This is just to avoid floating point.) - */ - vu = (vs->vs_alloc << 10) / (vs->vs_space + 1); - cu = (mc->mc_alloc << 10) / (mc->mc_space + 1); + vu = (vs->vs_alloc * 100) / (vs->vs_space + 1); + cu = (mc->mc_alloc * 100) / (mc->mc_space + 1); /* - * Bias by at most +/- 25% of the aliquot. + * Calculate how much more or less we should + * try to allocate from this device during + * this iteration around the rotor. + * For example, if a device is 80% full + * and the pool is 20% full then we should + * reduce allocations by 60% on this device. + * + * mg_bias = (20 - 80) * 512K / 100 = -307K + * + * This reduces allocations by 307K for this + * iteration. */ mg->mg_bias = ((cu - vu) * - (int64_t)mg->mg_aliquot) / (1024 * 4); + (int64_t)mg->mg_aliquot) / 100; } if (atomic_add_64_nv(&mc->mc_aliquot, asize) >= @@ -1488,7 +1545,7 @@ metaslab_claim_dva(spa_t *spa, const dva mutex_enter(&msp->ms_lock); if ((txg != 0 && spa_writeable(spa)) || !msp->ms_map.sm_loaded) - error = metaslab_activate(msp, METASLAB_WEIGHT_SECONDARY, 0); + error = metaslab_activate(msp, METASLAB_WEIGHT_SECONDARY); if (error == 0 && !space_map_contains(&msp->ms_map, offset, size)) error = ENOENT; Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Mon Jul 18 08:27:40 2011 (r224176) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Mon Jul 18 08:29:49 2011 (r224177) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011 by Delphix. All rights reserved. */ #include @@ -1674,3 +1675,9 @@ spa_scan_get_stats(spa_t *spa, pool_scan return (0); } + +boolean_t +spa_debug_enabled(spa_t *spa) +{ + return (spa->spa_debug); +} Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h Mon Jul 18 08:27:40 2011 (r224176) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h Mon Jul 18 08:29:49 2011 (r224177) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011 by Delphix. All rights reserved. */ #ifndef _SYS_METASLAB_H @@ -47,6 +48,8 @@ extern void metaslab_sync_reassess(metas #define METASLAB_HINTBP_FAVOR 0x0 #define METASLAB_HINTBP_AVOID 0x1 #define METASLAB_GANG_HEADER 0x2 +#define METASLAB_GANG_CHILD 0x4 +#define METASLAB_GANG_AVOID 0x8 extern int metaslab_alloc(spa_t *spa, metaslab_class_t *mc, uint64_t psize, blkptr_t *bp, int ncopies, uint64_t txg, blkptr_t *hintbp, int flags); Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h Mon Jul 18 08:27:40 2011 (r224176) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h Mon Jul 18 08:29:49 2011 (r224177) @@ -21,6 +21,7 @@ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + * Copyright (c) 2011 by Delphix. All rights reserved. */ #ifndef _SYS_METASLAB_IMPL_H @@ -52,6 +53,7 @@ struct metaslab_group { avl_tree_t mg_metaslab_tree; uint64_t mg_aliquot; uint64_t mg_bonus_area; + uint64_t mg_alloc_failures; int64_t mg_bias; int64_t mg_activation_count; metaslab_class_t *mg_class; Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h Mon Jul 18 08:27:40 2011 (r224176) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h Mon Jul 18 08:29:49 2011 (r224177) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011 by Delphix. All rights reserved. */ #ifndef _SYS_SPA_H @@ -698,6 +699,13 @@ _NOTE(CONSTCOND) } while (0) #define dprintf_bp(bp, fmt, ...) #endif +extern boolean_t spa_debug_enabled(spa_t *spa); +#define spa_dbgmsg(spa, ...) \ +{ \ + if (spa_debug_enabled(spa)) \ + zfs_dbgmsg(__VA_ARGS__); \ +} + extern int spa_mode_global; /* mode, e.g. FREAD | FWRITE */ #ifdef __cplusplus Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h Mon Jul 18 08:27:40 2011 (r224176) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h Mon Jul 18 08:29:49 2011 (r224177) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011 by Delphix. All rights reserved. */ #ifndef _SYS_SPA_IMPL_H @@ -196,6 +197,7 @@ struct spa { kcondvar_t spa_suspend_cv; /* notification of resume */ uint8_t spa_suspended; /* pool is suspended */ uint8_t spa_claiming; /* pool is doing zil_claim() */ + boolean_t spa_debug; /* debug enabled? */ boolean_t spa_is_root; /* pool is root */ int spa_minref; /* num refs when first opened */ int spa_mode; /* FREAD | FWRITE */ Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Mon Jul 18 08:27:40 2011 (r224176) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Mon Jul 18 08:29:49 2011 (r224177) @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011 by Delphix. All rights reserved. */ #include @@ -85,6 +86,7 @@ kmem_cache_t *zio_data_buf_cache[SPA_MAX #ifdef _KERNEL extern vmem_t *zio_alloc_arena; #endif +extern int zfs_mg_alloc_failures; /* * An allocating zio is one that either currently has the DVA allocate @@ -160,6 +162,15 @@ zio_init(void) zio_data_buf_cache[c - 1] = zio_data_buf_cache[c]; } + /* + * The zio write taskqs have 1 thread per cpu, allow 1/2 of the taskqs + * to fail 3 times per txg or 8 failures, whichever is greater. + */ + if (zfs_mg_alloc_failures == 0) + zfs_mg_alloc_failures = MAX((3 * max_ncpus / 2), 8); + else if (zfs_mg_alloc_failures < 8) + zfs_mg_alloc_failures = 8; + zio_inject_init(); } @@ -2135,6 +2146,7 @@ zio_dva_allocate(zio_t *zio) metaslab_class_t *mc = spa_normal_class(spa); blkptr_t *bp = zio->io_bp; int error; + int flags = 0; if (zio->io_gang_leader == NULL) { ASSERT(zio->io_child_type > ZIO_CHILD_GANG); @@ -2147,10 +2159,21 @@ zio_dva_allocate(zio_t *zio) ASSERT3U(zio->io_prop.zp_copies, <=, spa_max_replication(spa)); ASSERT3U(zio->io_size, ==, BP_GET_PSIZE(bp)); + /* + * The dump device does not support gang blocks so allocation on + * behalf of the dump device (i.e. ZIO_FLAG_NODATA) must avoid + * the "fast" gang feature. + */ + flags |= (zio->io_flags & ZIO_FLAG_NODATA) ? METASLAB_GANG_AVOID : 0; + flags |= (zio->io_flags & ZIO_FLAG_GANG_CHILD) ? + METASLAB_GANG_CHILD : 0; error = metaslab_alloc(spa, mc, zio->io_size, bp, - zio->io_prop.zp_copies, zio->io_txg, NULL, 0); + zio->io_prop.zp_copies, zio->io_txg, NULL, flags); if (error) { + spa_dbgmsg(spa, "%s: metaslab allocation failure: zio %p, " + "size %llu, error %d", spa_name(spa), zio, zio->io_size, + error); if (error == ENOSPC && zio->io_size > SPA_MINBLOCKSIZE) return (zio_write_gang_block(zio)); zio->io_error = error; From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 08:38:08 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DEE6A106564A; Mon, 18 Jul 2011 08:38:08 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CBF468FC13; Mon, 18 Jul 2011 08:38:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6I8c8hP013323; Mon, 18 Jul 2011 08:38:08 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6I8c8jC013319; Mon, 18 Jul 2011 08:38:08 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201107180838.p6I8c8jC013319@svn.freebsd.org> From: Hans Petter Selasky Date: Mon, 18 Jul 2011 08:38:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224178 - in stable/8/sys/dev/usb: . input X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 08:38:09 -0000 Author: hselasky Date: Mon Jul 18 08:38:08 2011 New Revision: 224178 URL: http://svn.freebsd.org/changeset/base/224178 Log: MFC r223755: - Make the USB keyboard driver more HID compliant. - Try to auto-detect keyboards which should use the BOOT protocol. Modified: stable/8/sys/dev/usb/input/ukbd.c stable/8/sys/dev/usb/usb_hid.c stable/8/sys/dev/usb/usbhid.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/usb/input/ukbd.c ============================================================================== --- stable/8/sys/dev/usb/input/ukbd.c Mon Jul 18 08:29:49 2011 (r224177) +++ stable/8/sys/dev/usb/input/ukbd.c Mon Jul 18 08:38:08 2011 (r224178) @@ -108,9 +108,10 @@ TUNABLE_INT("hw.usb.ukbd.no_leds", &ukbd #define UKBD_IN_BUF_SIZE (2*(UKBD_NMOD + (2*UKBD_NKEYCODE))) /* bytes */ #define UKBD_IN_BUF_FULL (UKBD_IN_BUF_SIZE / 2) /* bytes */ #define UKBD_NFKEY (sizeof(fkey_tab)/sizeof(fkey_tab[0])) /* units */ +#define UKBD_BUFFER_SIZE 64 /* bytes */ struct ukbd_data { - uint8_t modifiers; + uint16_t modifiers; #define MOD_CONTROL_L 0x01 #define MOD_CONTROL_R 0x10 #define MOD_SHIFT_L 0x02 @@ -119,9 +120,10 @@ struct ukbd_data { #define MOD_ALT_R 0x40 #define MOD_WIN_L 0x08 #define MOD_WIN_R 0x80 - uint8_t reserved; +/* internal */ +#define MOD_EJECT 0x0100 +#define MOD_FN 0x0200 uint8_t keycode[UKBD_NKEYCODE]; - uint8_t exten[8]; }; enum { @@ -137,6 +139,18 @@ struct ukbd_softc { fkeytab_t sc_fkeymap[UKBD_NFKEY]; struct hid_location sc_loc_apple_eject; struct hid_location sc_loc_apple_fn; + struct hid_location sc_loc_ctrl_l; + struct hid_location sc_loc_ctrl_r; + struct hid_location sc_loc_shift_l; + struct hid_location sc_loc_shift_r; + struct hid_location sc_loc_alt_l; + struct hid_location sc_loc_alt_r; + struct hid_location sc_loc_win_l; + struct hid_location sc_loc_win_r; + struct hid_location sc_loc_events; + struct hid_location sc_loc_numlock; + struct hid_location sc_loc_capslock; + struct hid_location sc_loc_scrolllock; struct usb_callout sc_callout; struct ukbd_data sc_ndata; struct ukbd_data sc_odata; @@ -155,31 +169,64 @@ struct ukbd_softc { uint32_t sc_buffered_char[2]; #endif uint32_t sc_flags; /* flags */ -#define UKBD_FLAG_COMPOSE 0x0001 -#define UKBD_FLAG_POLLING 0x0002 -#define UKBD_FLAG_SET_LEDS 0x0004 -#define UKBD_FLAG_ATTACHED 0x0010 -#define UKBD_FLAG_GONE 0x0020 -#define UKBD_FLAG_APPLE_EJECT 0x0040 -#define UKBD_FLAG_APPLE_FN 0x0080 -#define UKBD_FLAG_APPLE_SWAP 0x0100 -#define UKBD_FLAG_TIMER_RUNNING 0x0200 +#define UKBD_FLAG_COMPOSE 0x00000001 +#define UKBD_FLAG_POLLING 0x00000002 +#define UKBD_FLAG_SET_LEDS 0x00000004 +#define UKBD_FLAG_ATTACHED 0x00000010 +#define UKBD_FLAG_GONE 0x00000020 + +#define UKBD_FLAG_HID_MASK 0x003fffc0 +#define UKBD_FLAG_APPLE_EJECT 0x00000040 +#define UKBD_FLAG_APPLE_FN 0x00000080 +#define UKBD_FLAG_APPLE_SWAP 0x00000100 +#define UKBD_FLAG_TIMER_RUNNING 0x00000200 +#define UKBD_FLAG_CTRL_L 0x00000400 +#define UKBD_FLAG_CTRL_R 0x00000800 +#define UKBD_FLAG_SHIFT_L 0x00001000 +#define UKBD_FLAG_SHIFT_R 0x00002000 +#define UKBD_FLAG_ALT_L 0x00004000 +#define UKBD_FLAG_ALT_R 0x00008000 +#define UKBD_FLAG_WIN_L 0x00010000 +#define UKBD_FLAG_WIN_R 0x00020000 +#define UKBD_FLAG_EVENTS 0x00040000 +#define UKBD_FLAG_NUMLOCK 0x00080000 +#define UKBD_FLAG_CAPSLOCK 0x00100000 +#define UKBD_FLAG_SCROLLLOCK 0x00200000 int sc_mode; /* input mode (K_XLATE,K_RAW,K_CODE) */ int sc_state; /* shift/lock key state */ int sc_accents; /* accent key index (> 0) */ int sc_poll_tick_last; + int sc_led_size; + int sc_kbd_size; uint16_t sc_inputs; uint16_t sc_inputhead; uint16_t sc_inputtail; + uint16_t sc_modifiers; uint8_t sc_leds; /* store for async led requests */ uint8_t sc_iface_index; uint8_t sc_iface_no; + uint8_t sc_id_apple_eject; + uint8_t sc_id_apple_fn; + uint8_t sc_id_ctrl_l; + uint8_t sc_id_ctrl_r; + uint8_t sc_id_shift_l; + uint8_t sc_id_shift_r; + uint8_t sc_id_alt_l; + uint8_t sc_id_alt_r; + uint8_t sc_id_win_l; + uint8_t sc_id_win_r; + uint8_t sc_id_event; + uint8_t sc_id_numlock; + uint8_t sc_id_capslock; + uint8_t sc_id_scrolllock; + uint8_t sc_id_events; uint8_t sc_kbd_id; - uint8_t sc_led_id; + uint8_t sc_poll_detected; + uint8_t sc_buffer[UKBD_BUFFER_SIZE]; }; #define KEY_ERROR 0x01 @@ -261,6 +308,22 @@ static const uint8_t ukbd_trtab[256] = { NN, NN, NN, NN, NN, NN, NN, NN, /* F8 - FF */ }; +static const uint8_t ukbd_boot_desc[] = { + 0x05, 0x01, 0x09, 0x06, 0xa1, + 0x01, 0x05, 0x07, 0x19, 0xe0, + 0x29, 0xe7, 0x15, 0x00, 0x25, + 0x01, 0x75, 0x01, 0x95, 0x08, + 0x81, 0x02, 0x95, 0x01, 0x75, + 0x08, 0x81, 0x01, 0x95, 0x03, + 0x75, 0x01, 0x05, 0x08, 0x19, + 0x01, 0x29, 0x03, 0x91, 0x02, + 0x95, 0x05, 0x75, 0x01, 0x91, + 0x01, 0x95, 0x06, 0x75, 0x08, + 0x15, 0x00, 0x26, 0xff, 0x00, + 0x05, 0x07, 0x19, 0x00, 0x2a, + 0xff, 0x00, 0x81, 0x00, 0xc0 +}; + /* prototypes */ static void ukbd_timeout(void *); static void ukbd_set_leds(struct ukbd_softc *, uint8_t); @@ -561,8 +624,6 @@ ukbd_intr_callback(struct usb_xfer *xfer uint8_t i; uint8_t offset; uint8_t id; - uint8_t apple_fn; - uint8_t apple_eject; int len; usbd_xfer_status(xfer, &len, NULL, NULL, NULL); @@ -580,73 +641,145 @@ ukbd_intr_callback(struct usb_xfer *xfer if (sc->sc_kbd_id != 0) { /* check and remove HID ID byte */ usbd_copy_out(pc, 0, &id, 1); - if (id != sc->sc_kbd_id) { - DPRINTF("wrong HID ID\n"); - goto tr_setup; - } offset = 1; len--; + if (len == 0) { + DPRINTF("zero length data\n"); + goto tr_setup; + } } else { offset = 0; + id = 0; } - if (len > sizeof(sc->sc_ndata)) { - len = sizeof(sc->sc_ndata); - } + if (len > UKBD_BUFFER_SIZE) + len = UKBD_BUFFER_SIZE; - if (len) { - memset(&sc->sc_ndata, 0, sizeof(sc->sc_ndata)); - usbd_copy_out(pc, offset, &sc->sc_ndata, len); - - if ((sc->sc_flags & UKBD_FLAG_APPLE_EJECT) && - hid_get_data((uint8_t *)&sc->sc_ndata, - len, &sc->sc_loc_apple_eject)) - apple_eject = 1; - else - apple_eject = 0; + /* get data */ + usbd_copy_out(pc, offset, sc->sc_buffer, len); + + /* clear temporary storage */ + memset(&sc->sc_ndata, 0, sizeof(sc->sc_ndata)); - if ((sc->sc_flags & UKBD_FLAG_APPLE_FN) && - hid_get_data((uint8_t *)&sc->sc_ndata, - len, &sc->sc_loc_apple_fn)) - apple_fn = 1; + /* scan through HID data */ + if ((sc->sc_flags & UKBD_FLAG_APPLE_EJECT) && + (id == sc->sc_id_apple_eject)) { + if (hid_get_data(sc->sc_buffer, len, &sc->sc_loc_apple_eject)) + sc->sc_modifiers |= MOD_EJECT; else - apple_fn = 0; -#ifdef USB_DEBUG - DPRINTF("apple_eject=%u apple_fn=%u\n", - apple_eject, apple_fn); + sc->sc_modifiers &= ~MOD_EJECT; + } + if ((sc->sc_flags & UKBD_FLAG_APPLE_FN) && + (id == sc->sc_id_apple_fn)) { + if (hid_get_data(sc->sc_buffer, len, &sc->sc_loc_apple_fn)) + sc->sc_modifiers |= MOD_FN; + else + sc->sc_modifiers &= ~MOD_FN; + } + if ((sc->sc_flags & UKBD_FLAG_CTRL_L) && + (id == sc->sc_id_ctrl_l)) { + if (hid_get_data(sc->sc_buffer, len, &sc->sc_loc_ctrl_l)) + sc-> sc_modifiers |= MOD_CONTROL_L; + else + sc-> sc_modifiers &= ~MOD_CONTROL_L; + } + if ((sc->sc_flags & UKBD_FLAG_CTRL_R) && + (id == sc->sc_id_ctrl_r)) { + if (hid_get_data(sc->sc_buffer, len, &sc->sc_loc_ctrl_r)) + sc->sc_modifiers |= MOD_CONTROL_R; + else + sc->sc_modifiers &= ~MOD_CONTROL_R; + } + if ((sc->sc_flags & UKBD_FLAG_SHIFT_L) && + (id == sc->sc_id_shift_l)) { + if (hid_get_data(sc->sc_buffer, len, &sc->sc_loc_shift_l)) + sc->sc_modifiers |= MOD_SHIFT_L; + else + sc->sc_modifiers &= ~MOD_SHIFT_L; + } + if ((sc->sc_flags & UKBD_FLAG_SHIFT_R) && + (id == sc->sc_id_shift_r)) { + if (hid_get_data(sc->sc_buffer, len, &sc->sc_loc_shift_r)) + sc->sc_modifiers |= MOD_SHIFT_R; + else + sc->sc_modifiers &= ~MOD_SHIFT_R; + } + if ((sc->sc_flags & UKBD_FLAG_ALT_L) && + (id == sc->sc_id_alt_l)) { + if (hid_get_data(sc->sc_buffer, len, &sc->sc_loc_alt_l)) + sc->sc_modifiers |= MOD_ALT_L; + else + sc->sc_modifiers &= ~MOD_ALT_L; + } + if ((sc->sc_flags & UKBD_FLAG_ALT_R) && + (id == sc->sc_id_alt_r)) { + if (hid_get_data(sc->sc_buffer, len, &sc->sc_loc_alt_r)) + sc->sc_modifiers |= MOD_ALT_R; + else + sc->sc_modifiers &= ~MOD_ALT_R; + } + if ((sc->sc_flags & UKBD_FLAG_WIN_L) && + (id == sc->sc_id_win_l)) { + if (hid_get_data(sc->sc_buffer, len, &sc->sc_loc_win_l)) + sc->sc_modifiers |= MOD_WIN_L; + else + sc->sc_modifiers &= ~MOD_WIN_L; + } + if ((sc->sc_flags & UKBD_FLAG_WIN_R) && + (id == sc->sc_id_win_r)) { + if (hid_get_data(sc->sc_buffer, len, &sc->sc_loc_win_r)) + sc->sc_modifiers |= MOD_WIN_R; + else + sc->sc_modifiers &= ~MOD_WIN_R; + } - if (sc->sc_ndata.modifiers) { - DPRINTF("mod: 0x%04x\n", sc->sc_ndata.modifiers); - } - for (i = 0; i < UKBD_NKEYCODE; i++) { - if (sc->sc_ndata.keycode[i]) { - DPRINTF("[%d] = %d\n", i, sc->sc_ndata.keycode[i]); - } + sc->sc_ndata.modifiers = sc->sc_modifiers; + + if ((sc->sc_flags & UKBD_FLAG_EVENTS) && + (id == sc->sc_id_events)) { + i = sc->sc_loc_events.count; + if (i > UKBD_NKEYCODE) + i = UKBD_NKEYCODE; + if (i > len) + i = len; + while (i--) { + sc->sc_ndata.keycode[i] = + hid_get_data(sc->sc_buffer + i, len - i, + &sc->sc_loc_events); } -#endif /* USB_DEBUG */ + } - if (apple_fn) { - for (i = 0; i < UKBD_NKEYCODE; i++) { - sc->sc_ndata.keycode[i] = - ukbd_apple_fn(sc->sc_ndata.keycode[i]); - } +#ifdef USB_DEBUG + DPRINTF("modifiers = 0x%04x\n", (int)sc->sc_modifiers); + for (i = 0; i < UKBD_NKEYCODE; i++) { + if (sc->sc_ndata.keycode[i]) { + DPRINTF("[%d] = 0x%02x\n", + (int)i, (int)sc->sc_ndata.keycode[i]); } + } +#endif + if (sc->sc_modifiers & MOD_FN) { + for (i = 0; i < UKBD_NKEYCODE; i++) { + sc->sc_ndata.keycode[i] = + ukbd_apple_fn(sc->sc_ndata.keycode[i]); + } + } - if (sc->sc_flags & UKBD_FLAG_APPLE_SWAP) { - for (i = 0; i < UKBD_NKEYCODE; i++) { - sc->sc_ndata.keycode[i] = - ukbd_apple_swap(sc->sc_ndata.keycode[i]); - } + if (sc->sc_flags & UKBD_FLAG_APPLE_SWAP) { + for (i = 0; i < UKBD_NKEYCODE; i++) { + sc->sc_ndata.keycode[i] = + ukbd_apple_swap(sc->sc_ndata.keycode[i]); } + } - ukbd_interrupt(sc); + ukbd_interrupt(sc); - if (!(sc->sc_flags & UKBD_FLAG_TIMER_RUNNING)) { - if (ukbd_any_key_pressed(sc)) { - ukbd_start_timer(sc); - } + if (!(sc->sc_flags & UKBD_FLAG_TIMER_RUNNING)) { + if (ukbd_any_key_pressed(sc)) { + ukbd_start_timer(sc); } } + case USB_ST_SETUP: tr_setup: if (sc->sc_inputs < UKBD_IN_BUF_FULL) { @@ -672,10 +805,12 @@ tr_setup: static void ukbd_set_leds_callback(struct usb_xfer *xfer, usb_error_t error) { + struct ukbd_softc *sc = usbd_xfer_softc(xfer); struct usb_device_request req; struct usb_page_cache *pc; - uint8_t buf[2]; - struct ukbd_softc *sc = usbd_xfer_softc(xfer); + uint8_t id; + uint8_t any; + int len; #ifdef USB_DEBUG if (ukbd_no_leds) @@ -685,37 +820,83 @@ ukbd_set_leds_callback(struct usb_xfer * switch (USB_GET_STATE(xfer)) { case USB_ST_TRANSFERRED: case USB_ST_SETUP: - if (sc->sc_flags & UKBD_FLAG_SET_LEDS) { - sc->sc_flags &= ~UKBD_FLAG_SET_LEDS; + if (!(sc->sc_flags & UKBD_FLAG_SET_LEDS)) + break; + sc->sc_flags &= ~UKBD_FLAG_SET_LEDS; - req.bmRequestType = UT_WRITE_CLASS_INTERFACE; - req.bRequest = UR_SET_REPORT; - USETW2(req.wValue, UHID_OUTPUT_REPORT, 0); - req.wIndex[0] = sc->sc_iface_no; - req.wIndex[1] = 0; - req.wLength[1] = 0; - - /* check if we need to prefix an ID byte */ - if (sc->sc_led_id != 0) { - req.wLength[0] = 2; - buf[0] = sc->sc_led_id; - buf[1] = sc->sc_leds; - } else { - req.wLength[0] = 1; - buf[0] = sc->sc_leds; - buf[1] = 0; + req.bmRequestType = UT_WRITE_CLASS_INTERFACE; + req.bRequest = UR_SET_REPORT; + USETW2(req.wValue, UHID_OUTPUT_REPORT, 0); + req.wIndex[0] = sc->sc_iface_no; + req.wIndex[1] = 0; + req.wLength[1] = 0; + + memset(sc->sc_buffer, 0, UKBD_BUFFER_SIZE); + + id = 0; + any = 0; + + /* Assumption: All led bits must be in the same ID. */ + + if (sc->sc_flags & UKBD_FLAG_NUMLOCK) { + if (sc->sc_leds & NLKED) { + hid_put_data_unsigned(sc->sc_buffer + 1, UKBD_BUFFER_SIZE - 1, + &sc->sc_loc_numlock, 1); } + id = sc->sc_id_numlock; + any = 1; + } - pc = usbd_xfer_get_frame(xfer, 0); - usbd_copy_in(pc, 0, &req, sizeof(req)); - pc = usbd_xfer_get_frame(xfer, 1); - usbd_copy_in(pc, 0, buf, sizeof(buf)); - - usbd_xfer_set_frame_len(xfer, 0, sizeof(req)); - usbd_xfer_set_frame_len(xfer, 1, req.wLength[0]); - usbd_xfer_set_frames(xfer, 2); - usbd_transfer_submit(xfer); + if (sc->sc_flags & UKBD_FLAG_SCROLLLOCK) { + if (sc->sc_leds & SLKED) { + hid_put_data_unsigned(sc->sc_buffer + 1, UKBD_BUFFER_SIZE - 1, + &sc->sc_loc_scrolllock, 1); + } + id = sc->sc_id_scrolllock; + any = 1; + } + + if (sc->sc_flags & UKBD_FLAG_CAPSLOCK) { + if (sc->sc_leds & CLKED) { + hid_put_data_unsigned(sc->sc_buffer + 1, UKBD_BUFFER_SIZE - 1, + &sc->sc_loc_capslock, 1); + } + id = sc->sc_id_capslock; + any = 1; + } + + /* if no leds, nothing to do */ + if (!any) + break; + + /* range check output report length */ + len = sc->sc_led_size; + if (len > (UKBD_BUFFER_SIZE - 1)) + len = (UKBD_BUFFER_SIZE - 1); + + /* check if we need to prefix an ID byte */ + sc->sc_buffer[0] = id; + + pc = usbd_xfer_get_frame(xfer, 1); + if (id != 0) { + len++; + usbd_copy_in(pc, 0, sc->sc_buffer, len); + } else { + usbd_copy_in(pc, 0, sc->sc_buffer + 1, len); } + req.wLength[0] = len; + usbd_xfer_set_frame_len(xfer, 1, len); + + DPRINTF("len=%d, id=%d\n", len, id); + + /* setup control request last */ + pc = usbd_xfer_get_frame(xfer, 0); + usbd_copy_in(pc, 0, &req, sizeof(req)); + usbd_xfer_set_frame_len(xfer, 0, sizeof(req)); + + /* start data transfer */ + usbd_xfer_set_frames(xfer, 2); + usbd_transfer_submit(xfer); break; default: /* Error */ @@ -739,7 +920,7 @@ static const struct usb_config ukbd_conf .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .bufsize = sizeof(struct usb_device_request) + 8, + .bufsize = sizeof(struct usb_device_request) + UKBD_BUFFER_SIZE, .callback = &ukbd_set_leds_callback, .timeout = 1000, /* 1 second */ }, @@ -808,6 +989,140 @@ ukbd_probe(device_t dev) return (error); } +static void +ukbd_parse_hid(struct ukbd_softc *sc, const uint8_t *ptr, uint32_t len) +{ + uint32_t flags; + + /* reset detected bits */ + sc->sc_flags &= ~UKBD_FLAG_HID_MASK; + + /* check if there is an ID byte */ + sc->sc_kbd_size = hid_report_size(ptr, len, + hid_input, &sc->sc_kbd_id); + + /* investigate if this is an Apple Keyboard */ + if (hid_locate(ptr, len, + HID_USAGE2(HUP_CONSUMER, HUG_APPLE_EJECT), + hid_input, 0, &sc->sc_loc_apple_eject, &flags, + &sc->sc_id_apple_eject)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_APPLE_EJECT | + UKBD_FLAG_APPLE_SWAP; + DPRINTFN(1, "Found Apple eject-key\n"); + } + if (hid_locate(ptr, len, + HID_USAGE2(0xFFFF, 0x0003), + hid_input, 0, &sc->sc_loc_apple_fn, &flags, + &sc->sc_id_apple_fn)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_APPLE_FN; + DPRINTFN(1, "Found Apple FN-key\n"); + } + /* figure out some keys */ + if (hid_locate(ptr, len, + HID_USAGE2(HUP_KEYBOARD, 0xE0), + hid_input, 0, &sc->sc_loc_ctrl_l, &flags, + &sc->sc_id_ctrl_l)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_CTRL_L; + DPRINTFN(1, "Found left control\n"); + } + if (hid_locate(ptr, len, + HID_USAGE2(HUP_KEYBOARD, 0xE4), + hid_input, 0, &sc->sc_loc_ctrl_r, &flags, + &sc->sc_id_ctrl_r)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_CTRL_R; + DPRINTFN(1, "Found right control\n"); + } + if (hid_locate(ptr, len, + HID_USAGE2(HUP_KEYBOARD, 0xE1), + hid_input, 0, &sc->sc_loc_shift_l, &flags, + &sc->sc_id_shift_l)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_SHIFT_L; + DPRINTFN(1, "Found left shift\n"); + } + if (hid_locate(ptr, len, + HID_USAGE2(HUP_KEYBOARD, 0xE5), + hid_input, 0, &sc->sc_loc_shift_r, &flags, + &sc->sc_id_shift_r)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_SHIFT_R; + DPRINTFN(1, "Found right shift\n"); + } + if (hid_locate(ptr, len, + HID_USAGE2(HUP_KEYBOARD, 0xE2), + hid_input, 0, &sc->sc_loc_alt_l, &flags, + &sc->sc_id_alt_l)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_ALT_L; + DPRINTFN(1, "Found left alt\n"); + } + if (hid_locate(ptr, len, + HID_USAGE2(HUP_KEYBOARD, 0xE6), + hid_input, 0, &sc->sc_loc_alt_r, &flags, + &sc->sc_id_alt_r)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_ALT_R; + DPRINTFN(1, "Found right alt\n"); + } + if (hid_locate(ptr, len, + HID_USAGE2(HUP_KEYBOARD, 0xE3), + hid_input, 0, &sc->sc_loc_win_l, &flags, + &sc->sc_id_win_l)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_WIN_L; + DPRINTFN(1, "Found left GUI\n"); + } + if (hid_locate(ptr, len, + HID_USAGE2(HUP_KEYBOARD, 0xE7), + hid_input, 0, &sc->sc_loc_win_r, &flags, + &sc->sc_id_win_r)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_WIN_R; + DPRINTFN(1, "Found right GUI\n"); + } + /* figure out event buffer */ + if (hid_locate(ptr, len, + HID_USAGE2(HUP_KEYBOARD, 0x00), + hid_input, 0, &sc->sc_loc_events, &flags, + &sc->sc_id_events)) { + sc->sc_flags |= UKBD_FLAG_EVENTS; + DPRINTFN(1, "Found keyboard events\n"); + } + + /* figure out leds on keyboard */ + sc->sc_led_size = hid_report_size(ptr, len, + hid_output, NULL); + + if (hid_locate(ptr, len, + HID_USAGE2(HUP_LEDS, 0x01), + hid_output, 0, &sc->sc_loc_numlock, &flags, + &sc->sc_id_numlock)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_NUMLOCK; + DPRINTFN(1, "Found keyboard numlock\n"); + } + if (hid_locate(ptr, len, + HID_USAGE2(HUP_LEDS, 0x02), + hid_output, 0, &sc->sc_loc_capslock, &flags, + &sc->sc_id_capslock)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_CAPSLOCK; + DPRINTFN(1, "Found keyboard capslock\n"); + } + if (hid_locate(ptr, len, + HID_USAGE2(HUP_LEDS, 0x03), + hid_output, 0, &sc->sc_loc_scrolllock, &flags, + &sc->sc_id_scrolllock)) { + if (flags & HIO_VARIABLE) + sc->sc_flags |= UKBD_FLAG_SCROLLLOCK; + DPRINTFN(1, "Found keyboard scrolllock\n"); + } +} + static int ukbd_attach(device_t dev) { @@ -817,7 +1132,6 @@ ukbd_attach(device_t dev) keyboard_t *kbd = &sc->sc_kbd; void *hid_ptr = NULL; usb_error_t err; - uint32_t flags; uint16_t n; uint16_t hid_len; @@ -864,64 +1178,38 @@ ukbd_attach(device_t dev) */ KBD_PROBE_DONE(kbd); - /* - * Set boot protocol if we need the quirk. - */ - if (usb_test_quirk(uaa, UQ_KBD_BOOTPROTO)) { - err = usbd_req_set_protocol(sc->sc_udev, NULL, - sc->sc_iface_index, 0); - if (err != USB_ERR_NORMAL_COMPLETION) { - DPRINTF("set protocol error=%s\n", usbd_errstr(err)); - goto detach; - } - } - - /* figure out if there is an ID byte in the data */ + /* get HID descriptor */ err = usbd_req_get_hid_desc(uaa->device, NULL, &hid_ptr, &hid_len, M_TEMP, uaa->info.bIfaceIndex); - if (err == 0) { - uint8_t apple_keys = 0; - uint8_t temp_id; - /* investigate if this is an Apple Keyboard */ - if (hid_locate(hid_ptr, hid_len, - HID_USAGE2(HUP_CONSUMER, HUG_APPLE_EJECT), - hid_input, 0, &sc->sc_loc_apple_eject, &flags, - &temp_id)) { - if (flags & HIO_VARIABLE) - sc->sc_flags |= UKBD_FLAG_APPLE_EJECT | - UKBD_FLAG_APPLE_SWAP; - DPRINTFN(1, "Found Apple eject-key\n"); - apple_keys = 1; - sc->sc_kbd_id = temp_id; - } - if (hid_locate(hid_ptr, hid_len, - HID_USAGE2(0xFFFF, 0x0003), - hid_input, 0, &sc->sc_loc_apple_fn, &flags, - &temp_id)) { - if (flags & HIO_VARIABLE) - sc->sc_flags |= UKBD_FLAG_APPLE_FN; - DPRINTFN(1, "Found Apple FN-key\n"); - apple_keys = 1; - sc->sc_kbd_id = temp_id; - } - if (apple_keys == 0) { - /* - * Assume the first HID ID contains the - * keyboard data - */ - hid_report_size(hid_ptr, hid_len, - hid_input, &sc->sc_kbd_id); - } + if (err == 0) { + DPRINTF("Parsing HID descriptor of %d bytes\n", + (int)hid_len); - /* investigate if we need an ID-byte for the leds */ - hid_report_size(hid_ptr, hid_len, hid_output, &sc->sc_led_id); + ukbd_parse_hid(sc, hid_ptr, hid_len); free(hid_ptr, M_TEMP); } + /* check if we should use the boot protocol */ + if (usb_test_quirk(uaa, UQ_KBD_BOOTPROTO) || + (err != 0) || (!(sc->sc_flags & UKBD_FLAG_EVENTS))) { + + DPRINTF("Forcing boot protocol\n"); + + err = usbd_req_set_protocol(sc->sc_udev, NULL, + sc->sc_iface_index, 0); + + if (err != 0) { + DPRINTF("Set protocol error=%s (ignored)\n", + usbd_errstr(err)); + } + + ukbd_parse_hid(sc, ukbd_boot_desc, sizeof(ukbd_boot_desc)); + } + /* ignore if SETIDLE fails, hence it is not crucial */ - err = usbd_req_set_idle(sc->sc_udev, NULL, sc->sc_iface_index, 0, 0); + usbd_req_set_idle(sc->sc_udev, NULL, sc->sc_iface_index, 0, 0); mtx_lock(&Giant); @@ -1468,10 +1756,6 @@ errkey: static int ukbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg) { - /* translate LED_XXX bits into the device specific bits */ - static const uint8_t ledmap[8] = { - 0, 2, 1, 3, 4, 6, 5, 7, - }; struct ukbd_softc *sc = kbd->kb_data; int i; @@ -1547,10 +1831,11 @@ ukbd_ioctl(keyboard_t *kbd, u_long cmd, #endif case KDSETLED: /* set keyboard LED */ /* NOTE: lock key state in "sc_state" won't be changed */ - if (*(int *)arg & ~LOCK_MASK) { + if (*(int *)arg & ~LOCK_MASK) return (EINVAL); - } + i = *(int *)arg; + /* replace CAPS LED with ALTGR LED for ALTGR keyboards */ if (sc->sc_mode == K_XLATE && kbd->kb_keymap->n_keys > ALTGR_OFFSET) { @@ -1559,9 +1844,9 @@ ukbd_ioctl(keyboard_t *kbd, u_long cmd, else i &= ~CLKED; } - if (KBD_HAS_DEVICE(kbd)) { - ukbd_set_leds(sc, ledmap[i & LED_MASK]); - } + if (KBD_HAS_DEVICE(kbd)) + ukbd_set_leds(sc, i); + KBD_LED_VAL(kbd) = *(int *)arg; break; case KDGKBSTATE: /* get lock key state */ Modified: stable/8/sys/dev/usb/usb_hid.c ============================================================================== --- stable/8/sys/dev/usb/usb_hid.c Mon Jul 18 08:29:49 2011 (r224177) +++ stable/8/sys/dev/usb/usb_hid.c Mon Jul 18 08:38:08 2011 (r224178) @@ -702,6 +702,43 @@ hid_get_data_unsigned(const uint8_t *buf } /*------------------------------------------------------------------------* + * hid_put_data + *------------------------------------------------------------------------*/ +void +hid_put_data_unsigned(uint8_t *buf, usb_size_t len, + struct hid_location *loc, unsigned int value) +{ + uint32_t hpos = loc->pos; + uint32_t hsize = loc->size; + uint64_t data; + uint64_t mask; + uint32_t rpos; + uint8_t n; + + DPRINTFN(11, "hid_put_data: loc %d/%d = %u\n", hpos, hsize, value); + + /* Range check and limit */ + if (hsize == 0) + return; + if (hsize > 32) + hsize = 32; + + /* Put data in a safe way */ + rpos = (hpos / 8); + n = (hsize + 7) / 8; + data = ((uint64_t)value) << (hpos % 8); + mask = ((1ULL << hsize) - 1ULL) << (hpos % 8); + rpos += n; + while (n--) { + rpos--; + if (rpos < len) { + buf[rpos] &= ~(mask >> (8 * n)); + buf[rpos] |= (data >> (8 * n)); + } + } +} + +/*------------------------------------------------------------------------* * hid_is_collection *------------------------------------------------------------------------*/ int Modified: stable/8/sys/dev/usb/usbhid.h ============================================================================== --- stable/8/sys/dev/usb/usbhid.h Mon Jul 18 08:29:49 2011 (r224177) +++ stable/8/sys/dev/usb/usbhid.h Mon Jul 18 08:38:08 2011 (r224178) @@ -233,6 +233,8 @@ int32_t hid_get_data(const uint8_t *buf, struct hid_location *loc); uint32_t hid_get_data_unsigned(const uint8_t *buf, usb_size_t len, struct hid_location *loc); +void hid_put_data_unsigned(uint8_t *buf, usb_size_t len, + struct hid_location *loc, unsigned int value); int hid_is_collection(const void *desc, usb_size_t size, uint32_t usage); struct usb_hid_descriptor *hid_get_descriptor_from_usb( struct usb_config_descriptor *cd, From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 09:11:58 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B0E59106564A; Mon, 18 Jul 2011 09:11:58 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail05.syd.optusnet.com.au (mail05.syd.optusnet.com.au [211.29.132.186]) by mx1.freebsd.org (Postfix) with ESMTP id 345228FC12; Mon, 18 Jul 2011 09:11:57 +0000 (UTC) Received: from c122-106-165-191.carlnfd1.nsw.optusnet.com.au (c122-106-165-191.carlnfd1.nsw.optusnet.com.au [122.106.165.191]) by mail05.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p6I9Br2q018110 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 18 Jul 2011 19:11:54 +1000 Date: Mon, 18 Jul 2011 19:11:53 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Ryan Stone In-Reply-To: Message-ID: <20110718180637.O1038@besplex.bde.org> References: <201107172108.p6HL8Gkd090278@svn.freebsd.org> <20110718080428.N3939@besplex.bde.org> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-1224280693-1310980313=:1038" Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Bruce Evans , markjdb@gmail.com Subject: Re: svn commit: r224150 - head/sbin/fdisk X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 09:11:58 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --0-1224280693-1310980313=:1038 Content-Type: TEXT/PLAIN; charset=X-UNKNOWN; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE On Sun, 17 Jul 2011, Ryan Stone wrote: > On Sun, Jul 17, 2011 at 7:09 PM, Bruce Evans wrote= : >> There was no need to further break the style. > > Ack. Should have caught that. Will fix. Thanks. >>> @@ -990,7 +990,7 @@ parse_config_line(char *line, CMD *comma >>> =A0 =A0 =A0 =A0 =A0 =A0if (isalpha(*cp)) >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0command->args[command->n_args].argtype = =3D *cp++; >>> =A0 =A0 =A0 =A0 =A0 =A0end =3D NULL; >>> - =A0 =A0 =A0 =A0 =A0 command->args[command->n_args].arg_val =3D strtol= (cp, &end, 0); >>> + =A0 =A0 =A0 =A0 =A0 command->args[command->n_args].arg_val =3D strtou= l(cp, &end, 0); >>> =A0 =A0 =A0 =A0 =A0 =A0if (cp =3D=3D end || (!isspace(*end) && *end != =3D '\0')) { >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0char ch; >>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0end =3D cp; Arrgh, hard \xa0 what should be very plain text for a diff unreadable. >> Also, arg_val is never used as a u_long. =A0We risk truncation when it i= s >> blindly assigned to variables whose type is never u_long. =A0It is mostl= y >> assigned to variables of type uint ("uint" is an archaic SysV spelling >> of the BSD u_int which is a spelling of unsigned int. =A0This style bug >> was imported from Mach and never fixed). =A0Since uint is unsigned and i= nts >> have 32 bits, things now work up to UINT32_MAX but no further. =A0arg_va= l >> is also blindly assigned to a variable of type int, the partition number= , >> and to a variable of type u_char (the partition type), but since these >> values nonsense unless they are small, there is no problem with overflow >> near INT32_MAX or UINT32_MAX. > > Hm, I was under the impression that fdisk was checking whether the > size parameter fit within in 32-bits before putting it in the MBR, but > I seem to have been mistaken. In that case, I think that the right > fix is to make arg_val a u_int for now, which will still allow slices > with more than 2^31 sectors to be specified. Truncation is still an > issue but that's not a new bug. That would be good. The only other gross overflow bugs in fdisk that I know of are that when it gets parameters from the kernel, it blindly multiplies them and can overflow. get_params() also returns a nonsense status which is especially broken at 4G-1 and above. % ... % static int cyls, sectors, heads, cylsecs, disksecs; disksecs can overflow in practice. % ... % static uint dos_cyls; % static uint dos_heads; % static uint dos_sectors; % static uint dos_cylsecs; Better, and correct modulo checks that the assumptions that ints are 32 bits and that assignments to these variables check that the value is <=3D UINT32_MAX. % ... % static int % get_params() % { % =09int error; % =09u_int u; % =09off_t o; %=20 % =09error =3D ioctl(fd, DIOCGFWSECTORS, &u); % =09if (error =3D=3D 0) % =09=09sectors =3D dos_sectors =3D u; % =09else % =09=09sectors =3D dos_sectors =3D 63; %=20 % =09error =3D ioctl(fd, DIOCGFWHEADS, &u); % =09if (error =3D=3D 0) % =09=09heads =3D dos_heads =3D u; % =09else % =09=09heads =3D dos_heads =3D 255; Small values, so no problems in practice. Bad variable names, including using u as a temporary copy for variables with different semantics. Perfectly backwards sorting of the declarations. %=20 % =09dos_cylsecs =3D cylsecs =3D heads * sectors; Another small value in practice. % =09disksecs =3D cyls * heads * sectors; Can easily overflow. The last multiplication overflows at 4G sectors in practice. The assigment overflows at 2G sectors in practice. %=20 % =09u =3D g_sectorsize(fd); % =09if (u <=3D 0) % =09=09return (-1); %=20 % =09o =3D g_mediasize(fd); % =09if (o < 0) % =09=09return (-1); % =09disksecs =3D o / u; Can easily overflow at 2G sectors on assignment. % =09cyls =3D dos_cyls =3D o / (u * dos_heads * dos_sectors); No problems in practice. %=20 % =09return (disksecs); Nonsense return value. This function returns -1 on error, else it should return 0. It is only called once, and its caller actually checks the return value, and exits (after printing reasonable warning messages in open_disk(), then a bogus warning message and a bogus errno using err()) iff this function returns -1. So disksecs is a garbage value to return here. When the number of sectors is > INT_MAX, the garbage has already overflowed on assignment to disksecs. This is mostly benign up to UINT32_MAX (and even later -- see below), but here it is fatal at precisely UINT32_MAX, since that has overflowed to the supposed-to-be-out-of-band value -1 on assignment to disksecs (if it didn't overflow there, it would overflow on return). And this value is the most likely one for a large disk -- you can probably usefully use a large disk by using only the first UINT32_MAX sectors on it. Then either you or the kernel or the BIOS or error handling in strtoul() may have faked or otherwise produced the magic value of UINT32_MAX for the number of sectors. Or you can certainly usefully use this fdisk on a disk with more than UINT32_MAX sectors, provided you only want to change partitions lying entirely within the first UINT32_MAX sectors. % } Another bug in get_params() is that you have no direct control over the number of sectors. In the usual case, this number is the result of g_mediasize(). We depend on the broken error handling, and on this number not being -1 when truncated, to get past initialization to the point where we can specify the number of sectors interactively (or in the config file (?). Failing when the total number of sectors is unrepresentable in variables with wrong types would be especially silly, since fdisk only uses this value to initialize defaults (note that it is not part of CHS, and interactive mode doesn't support entering it. Interactive mode doesn't even fake it by multiplying out CHS -- it just multiplies HS -- see get_params_to_use(). Thus interactive mode doesn't have any of the overflow bugs in the above, and the overflow bugs in the above are more benign than first appears, since disksecs is rarely used and later uses of it, if any, are bugs since interactive mode doesn't maintain it). This also shows that we shouldn't be very strict in checking that values don't exceed UINT32_MAX. The values should only be checked if they are actually used. This is mainly partition offsets that will be written to disks. Partition sizes must not exceed UINT32_MAX, so checking that up front is harmless, but it is insufficient since the (offset + size) should not exceed UINT32_MAX. Hmm, I think the (offset, size) structure can support up to 8G-2 sectors if programmed carefully -- it has nothing to prevent starting a partition of size 4G-1 at offset 4G-1. So i386 MBRs should break at ~4TB, not at ~2TB with 512 byte sectors :-) (8 times that with 4K-sectors). Uncareful code like fdisk and probably BIOSes that at best just adds offset+size in uint32_t will of course break at 4G-1 sectors. Bruce --0-1224280693-1310980313=:1038-- From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 10:29:16 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 991BB106566B; Mon, 18 Jul 2011 10:29:16 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6F57A8FC08; Mon, 18 Jul 2011 10:29:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IATGDA019460; Mon, 18 Jul 2011 10:29:16 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IATG0k019456; Mon, 18 Jul 2011 10:29:16 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201107181029.p6IATG0k019456@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Mon, 18 Jul 2011 10:29:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224179 - head/sbin/ifconfig X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 10:29:16 -0000 Author: bz Date: Mon Jul 18 10:29:16 2011 New Revision: 224179 URL: http://svn.freebsd.org/changeset/base/224179 Log: If compiling RESCUE always ignore feature_present(3) calls so that a /rescue/ifconfig more modern than the kernel could still configure IPv4 or IPv6 addresses. Reported by: Andrzej Tobola (ato iem.pw.edu.pl) Reported by: gcooper MFC after: 1 day X-MFC: will not MFC any time soon, just reminder for r222527 Modified: head/sbin/ifconfig/af_inet.c head/sbin/ifconfig/af_inet6.c head/sbin/ifconfig/ifconfig.c Modified: head/sbin/ifconfig/af_inet.c ============================================================================== --- head/sbin/ifconfig/af_inet.c Mon Jul 18 08:38:08 2011 (r224178) +++ head/sbin/ifconfig/af_inet.c Mon Jul 18 10:29:16 2011 (r224179) @@ -200,7 +200,10 @@ static struct afswtch af_inet = { static __constructor void inet_ctor(void) { + +#ifndef RESCUE if (!feature_present("inet")) return; +#endif af_register(&af_inet); } Modified: head/sbin/ifconfig/af_inet6.c ============================================================================== --- head/sbin/ifconfig/af_inet6.c Mon Jul 18 08:38:08 2011 (r224178) +++ head/sbin/ifconfig/af_inet6.c Mon Jul 18 10:29:16 2011 (r224179) @@ -545,8 +545,10 @@ inet6_ctor(void) #define N(a) (sizeof(a) / sizeof(a[0])) size_t i; +#ifndef RESCUE if (!feature_present("inet6")) return; +#endif for (i = 0; i < N(inet6_cmds); i++) cmd_register(&inet6_cmds[i]); Modified: head/sbin/ifconfig/ifconfig.c ============================================================================== --- head/sbin/ifconfig/ifconfig.c Mon Jul 18 08:38:08 2011 (r224178) +++ head/sbin/ifconfig/ifconfig.c Mon Jul 18 10:29:16 2011 (r224179) @@ -498,10 +498,12 @@ ifconfig(int argc, char *const *argv, in * ifconfig IF up/down etc. to work without INET support as people * never used ifconfig IF link up/down, etc. either. */ +#ifndef RESCUE #ifdef INET if (afp == NULL && feature_present("inet")) afp = af_getbyname("inet"); #endif +#endif if (afp == NULL) afp = af_getbyname("link"); if (afp == NULL) { From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 12:03:59 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E082F106566C; Mon, 18 Jul 2011 12:03:58 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C661C8FC0C; Mon, 18 Jul 2011 12:03:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IC3w66022323; Mon, 18 Jul 2011 12:03:58 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IC3wW9022317; Mon, 18 Jul 2011 12:03:58 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201107181203.p6IC3wW9022317@svn.freebsd.org> From: Hans Petter Selasky Date: Mon, 18 Jul 2011 12:03:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224180 - head/sys/dev/usb/net X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 12:03:59 -0000 Author: hselasky Date: Mon Jul 18 12:03:58 2011 New Revision: 224180 URL: http://svn.freebsd.org/changeset/base/224180 Log: Only the USB root HUB thread is allowed to attach and detach drivers to and from USB devices. Remove related DEVMETHOD() lines from USB drivers. Reported by: YongHyeon PYUN MFC after: 3 days Modified: head/sys/dev/usb/net/if_aue.c head/sys/dev/usb/net/if_axe.c head/sys/dev/usb/net/if_mos.c head/sys/dev/usb/net/if_rue.c head/sys/dev/usb/net/if_udav.c Modified: head/sys/dev/usb/net/if_aue.c ============================================================================== --- head/sys/dev/usb/net/if_aue.c Mon Jul 18 10:29:16 2011 (r224179) +++ head/sys/dev/usb/net/if_aue.c Mon Jul 18 12:03:58 2011 (r224180) @@ -256,7 +256,6 @@ static device_method_t aue_methods[] = { /* bus interface */ DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_driver_added, bus_generic_driver_added), /* MII interface */ DEVMETHOD(miibus_readreg, aue_miibus_readreg), Modified: head/sys/dev/usb/net/if_axe.c ============================================================================== --- head/sys/dev/usb/net/if_axe.c Mon Jul 18 10:29:16 2011 (r224179) +++ head/sys/dev/usb/net/if_axe.c Mon Jul 18 12:03:58 2011 (r224180) @@ -239,7 +239,6 @@ static device_method_t axe_methods[] = { /* bus interface */ DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_driver_added, bus_generic_driver_added), /* MII interface */ DEVMETHOD(miibus_readreg, axe_miibus_readreg), Modified: head/sys/dev/usb/net/if_mos.c ============================================================================== --- head/sys/dev/usb/net/if_mos.c Mon Jul 18 10:29:16 2011 (r224179) +++ head/sys/dev/usb/net/if_mos.c Mon Jul 18 12:03:58 2011 (r224180) @@ -222,7 +222,6 @@ static device_method_t mos_methods[] = { /* bus interface */ DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_driver_added, bus_generic_driver_added), /* MII interface */ DEVMETHOD(miibus_readreg, mos_miibus_readreg), Modified: head/sys/dev/usb/net/if_rue.c ============================================================================== --- head/sys/dev/usb/net/if_rue.c Mon Jul 18 10:29:16 2011 (r224179) +++ head/sys/dev/usb/net/if_rue.c Mon Jul 18 12:03:58 2011 (r224180) @@ -188,7 +188,6 @@ static device_method_t rue_methods[] = { /* Bus interface */ DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_driver_added, bus_generic_driver_added), /* MII interface */ DEVMETHOD(miibus_readreg, rue_miibus_readreg), Modified: head/sys/dev/usb/net/if_udav.c ============================================================================== --- head/sys/dev/usb/net/if_udav.c Mon Jul 18 10:29:16 2011 (r224179) +++ head/sys/dev/usb/net/if_udav.c Mon Jul 18 12:03:58 2011 (r224180) @@ -147,7 +147,6 @@ static device_method_t udav_methods[] = /* bus interface */ DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_driver_added, bus_generic_driver_added), /* MII interface */ DEVMETHOD(miibus_readreg, udav_miibus_readreg), From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 12:52:49 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4A89E1065675; Mon, 18 Jul 2011 12:52:49 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id E2F928FC14; Mon, 18 Jul 2011 12:52:47 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id PAA22624; Mon, 18 Jul 2011 15:52:46 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4E242C9E.6010604@FreeBSD.org> Date: Mon, 18 Jul 2011 15:52:46 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:5.0) Gecko/20110705 Thunderbird/5.0 MIME-Version: 1.0 To: Hans Petter Selasky References: <201107132107.p6DL7ojq099900@svn.freebsd.org> In-Reply-To: <201107132107.p6DL7ojq099900@svn.freebsd.org> X-Enigmail-Version: 1.2pre Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r223989 - head/sys/dev/usb/input X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 12:52:49 -0000 on 14/07/2011 00:07 Hans Petter Selasky said the following: > Author: hselasky > Date: Wed Jul 13 21:07:50 2011 > New Revision: 223989 > URL: http://svn.freebsd.org/changeset/base/223989 > > Log: > Fix for dump after shutdown with USB keyboard plugged in. It appears that the > system timer is stopped during shutdown and that the pause() statement in ukbd > causes infinite hang in this regard. The fix is to use mi_switch() instead of > pause() to do the required task switch to ensure that the required USB processes > get executed. I have a question partially about this particular change, partially about USB/ukbd polling mode in general. See below: > Reported by: Mike_Karels@mcafee.com > MFC after: 1 week > > Modified: > head/sys/dev/usb/input/ukbd.c > > Modified: head/sys/dev/usb/input/ukbd.c > ============================================================================== > --- head/sys/dev/usb/input/ukbd.c Wed Jul 13 21:07:41 2011 (r223988) > +++ head/sys/dev/usb/input/ukbd.c Wed Jul 13 21:07:50 2011 (r223989) > @@ -59,6 +59,8 @@ __FBSDID("$FreeBSD$"); > #include > #include > #include > +#include > +#include > #include > > #include > @@ -386,6 +388,33 @@ ukbd_put_key(struct ukbd_softc *sc, uint > } > > static void > +ukbd_yield(void) > +{ > + struct thread *td = curthread; > + uint32_t old_prio; > + > + DROP_GIANT(); > + > + thread_lock(td); > + > + /* get current priority */ > + old_prio = td->td_base_pri; > + > + /* set new priority */ > + sched_prio(td, td->td_user_pri); > + > + /* cause a task switch */ > + mi_switch(SW_INVOL | SWT_RELINQUISH, NULL); > + > + /* restore priority */ > + sched_prio(td, old_prio); > + > + thread_unlock(td); > + > + PICKUP_GIANT(); > +} > + > +static void > ukbd_do_poll(struct ukbd_softc *sc, uint8_t wait) > { > DPRINTFN(2, "polling\n"); > @@ -396,8 +425,9 @@ ukbd_do_poll(struct ukbd_softc *sc, uint > > if (kdb_active == 0) { The question is: why this special subcase is needed at all. If I understand correctly, the polling mode is used only in some special situations/contexts. So why not always use the generic code (after this if-block) that does "proper" polling? What do we win when using this special case that seems to depend on the scheduler? Unfortunately I couldn't fully understand commit log of r203896. One of the reasons I am asking about this is that soon-ish we may have changes that disable scheduler in a context where panicstr != NULL. > while (sc->sc_inputs == 0) { > - /* make sure the USB code gets a chance to run */ > - pause("UKBD", 1); > + > + /* give USB threads a chance to run */ > + ukbd_yield(); > > /* check if we should wait */ > if (!wait) -- Andriy Gapon From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 12:58:18 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C01C7106566C; Mon, 18 Jul 2011 12:58:18 +0000 (UTC) (envelope-from jonathan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A5F0B8FC1B; Mon, 18 Jul 2011 12:58:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6ICwITM023923; Mon, 18 Jul 2011 12:58:18 GMT (envelope-from jonathan@svn.freebsd.org) Received: (from jonathan@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6ICwISu023918; Mon, 18 Jul 2011 12:58:18 GMT (envelope-from jonathan@svn.freebsd.org) Message-Id: <201107181258.p6ICwISu023918@svn.freebsd.org> From: Jonathan Anderson Date: Mon, 18 Jul 2011 12:58:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224181 - head/sys/security/audit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 12:58:18 -0000 Author: jonathan Date: Mon Jul 18 12:58:18 2011 New Revision: 224181 URL: http://svn.freebsd.org/changeset/base/224181 Log: Provide ability to audit cap_rights_t arguments. We wish to be able to audit capability rights arguments; this code provides the necessary infrastructure. This commit does not, of itself, turn on such auditing for any system call; that should follow shortly. Approved by: mentor (rwatson), re (Capsicum blanket) Sponsored by: Google Inc Modified: head/sys/security/audit/audit.h head/sys/security/audit/audit_arg.c head/sys/security/audit/audit_bsm.c head/sys/security/audit/audit_private.h Modified: head/sys/security/audit/audit.h ============================================================================== --- head/sys/security/audit/audit.h Mon Jul 18 12:03:58 2011 (r224180) +++ head/sys/security/audit/audit.h Mon Jul 18 12:58:18 2011 (r224181) @@ -114,6 +114,7 @@ void audit_arg_auditon(union auditon_ud void audit_arg_file(struct proc *p, struct file *fp); void audit_arg_argv(char *argv, int argc, int length); void audit_arg_envv(char *envv, int envc, int length); +void audit_arg_rights(cap_rights_t rights); void audit_sysclose(struct thread *td, int fd); void audit_cred_copy(struct ucred *src, struct ucred *dest); void audit_cred_destroy(struct ucred *cred); @@ -235,6 +236,11 @@ void audit_thread_free(struct thread *t audit_arg_rgid((rgid)); \ } while (0) +#define AUDIT_ARG_RIGHTS(rights) do { \ + if (AUDITING_TD(curthread)) \ + audit_arg_rights((rights)); \ +} while (0) + #define AUDIT_ARG_RUID(ruid) do { \ if (AUDITING_TD(curthread)) \ audit_arg_ruid((ruid)); \ @@ -342,6 +348,7 @@ void audit_thread_free(struct thread *t #define AUDIT_ARG_PID(pid) #define AUDIT_ARG_PROCESS(p) #define AUDIT_ARG_RGID(rgid) +#define AUDIT_ARG_RIGHTS(rights) #define AUDIT_ARG_RUID(ruid) #define AUDIT_ARG_SIGNUM(signum) #define AUDIT_ARG_SGID(sgid) Modified: head/sys/security/audit/audit_arg.c ============================================================================== --- head/sys/security/audit/audit_arg.c Mon Jul 18 12:03:58 2011 (r224180) +++ head/sys/security/audit/audit_arg.c Mon Jul 18 12:58:18 2011 (r224181) @@ -865,6 +865,19 @@ audit_arg_envv(char *envv, int envc, int ARG_SET_VALID(ar, ARG_ENVV); } +void +audit_arg_rights(cap_rights_t rights) +{ + struct kaudit_record *ar; + + ar = currecord(); + if (ar == NULL) + return; + + ar->k_ar.ar_arg_rights = rights; + ARG_SET_VALID(ar, ARG_RIGHTS); +} + /* * The close() system call uses it's own audit call to capture the path/vnode * information because those pieces are not easily obtained within the system Modified: head/sys/security/audit/audit_bsm.c ============================================================================== --- head/sys/security/audit/audit_bsm.c Mon Jul 18 12:03:58 2011 (r224180) +++ head/sys/security/audit/audit_bsm.c Mon Jul 18 12:58:18 2011 (r224181) @@ -1589,6 +1589,28 @@ kaudit_to_bsm(struct kaudit_record *kar, } break; + case AUE_CAP_NEW: + /* + * XXXRW/XXXJA: Would be nice to audit socket/etc information. + */ + FD_VNODE1_TOKENS; + if (ARG_IS_VALID(kar, ARG_RIGHTS)) { + tok = au_to_arg64(2, "rights", ar->ar_arg_rights); + kau_write(rec, tok); + } + break; + + case AUE_CAP_GETRIGHTS: + if (ARG_IS_VALID(kar, ARG_FD)) { + tok = au_to_arg32(1, "fd", ar->ar_arg_fd); + kau_write(rec, tok); + } + break; + + case AUE_CAP_ENTER: + case AUE_CAP_GETMODE: + break; + case AUE_NULL: default: printf("BSM conversion requested for unknown event %d\n", Modified: head/sys/security/audit/audit_private.h ============================================================================== --- head/sys/security/audit/audit_private.h Mon Jul 18 12:03:58 2011 (r224180) +++ head/sys/security/audit/audit_private.h Mon Jul 18 12:58:18 2011 (r224181) @@ -229,6 +229,7 @@ struct audit_record { int ar_arg_exitstatus; int ar_arg_exitretval; struct sockaddr_storage ar_arg_sockaddr; + cap_rights_t ar_arg_rights; }; /* @@ -288,6 +289,7 @@ struct audit_record { #define ARG_ENVV 0x0002000000000000ULL #define ARG_ATFD1 0x0004000000000000ULL #define ARG_ATFD2 0x0008000000000000ULL +#define ARG_RIGHTS 0x0010000000000000ULL #define ARG_NONE 0x0000000000000000ULL #define ARG_ALL 0xFFFFFFFFFFFFFFFFULL From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 12:59:32 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5C093106566C; Mon, 18 Jul 2011 12:59:32 +0000 (UTC) (envelope-from kensmith@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4BF2D8FC15; Mon, 18 Jul 2011 12:59:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6ICxW7A023994; Mon, 18 Jul 2011 12:59:32 GMT (envelope-from kensmith@svn.freebsd.org) Received: (from kensmith@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6ICxW68023992; Mon, 18 Jul 2011 12:59:32 GMT (envelope-from kensmith@svn.freebsd.org) Message-Id: <201107181259.p6ICxW68023992@svn.freebsd.org> From: Ken Smith Date: Mon, 18 Jul 2011 12:59:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-svnadmin@freebsd.org X-SVN-Group: svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224182 - svnadmin/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 12:59:32 -0000 Author: kensmith Date: Mon Jul 18 12:59:31 2011 New Revision: 224182 URL: http://svn.freebsd.org/changeset/base/224182 Log: Turn on commit approval for head as part of the 9.0-RELEASE release cycle. Approved by: core (implicit) Modified: svnadmin/conf/approvers Modified: svnadmin/conf/approvers ============================================================================== --- svnadmin/conf/approvers Mon Jul 18 12:58:18 2011 (r224181) +++ svnadmin/conf/approvers Mon Jul 18 12:59:31 2011 (r224182) @@ -16,7 +16,7 @@ # # $FreeBSD$ # -#^head/ re +^head/ re #^stable/8/ re #^stable/7/ re ^releng/8.[0-2]/ (security-officer|so) From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 14:04:38 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 086661065676; Mon, 18 Jul 2011 14:04:38 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D27938FC18; Mon, 18 Jul 2011 14:04:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IE4bY4025966; Mon, 18 Jul 2011 14:04:37 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IE4bXH025964; Mon, 18 Jul 2011 14:04:37 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201107181404.p6IE4bXH025964@svn.freebsd.org> From: John Baldwin Date: Mon, 18 Jul 2011 14:04:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224184 - head/sys/ia64/ia64 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 14:04:38 -0000 Author: jhb Date: Mon Jul 18 14:04:37 2011 New Revision: 224184 URL: http://svn.freebsd.org/changeset/base/224184 Log: Implement bus_adjust_resource() for the ia64 nexus driver. Reviewed by: marcel Approved by: re (kib) Modified: head/sys/ia64/ia64/nexus.c Modified: head/sys/ia64/ia64/nexus.c ============================================================================== --- head/sys/ia64/ia64/nexus.c Mon Jul 18 13:49:59 2011 (r224183) +++ head/sys/ia64/ia64/nexus.c Mon Jul 18 14:04:37 2011 (r224184) @@ -86,6 +86,8 @@ static device_t nexus_add_child(device_t int unit); static struct resource *nexus_alloc_resource(device_t, device_t, int, int *, u_long, u_long, u_long, u_int); +static int nexus_adjust_resource(device_t, device_t, int, struct resource *, + u_long, u_long); static int nexus_activate_resource(device_t, device_t, int, int, struct resource *); static int nexus_deactivate_resource(device_t, device_t, int, int, @@ -122,6 +124,7 @@ static device_method_t nexus_methods[] = DEVMETHOD(bus_print_child, nexus_print_child), DEVMETHOD(bus_add_child, nexus_add_child), DEVMETHOD(bus_alloc_resource, nexus_alloc_resource), + DEVMETHOD(bus_adjust_resource, nexus_adjust_resource), DEVMETHOD(bus_release_resource, nexus_release_resource), DEVMETHOD(bus_activate_resource, nexus_activate_resource), DEVMETHOD(bus_deactivate_resource, nexus_deactivate_resource), @@ -238,6 +241,20 @@ nexus_add_child(device_t bus, u_int orde return(child); } +static struct rman * +nexus_rman(int type) +{ + switch (type) { + case SYS_RES_IRQ: + return (&irq_rman); + case SYS_RES_IOPORT: + return (&port_rman); + case SYS_RES_MEMORY: + return (&mem_rman); + default: + return (NULL); + } +} /* * Allocate a resource on behalf of child. NB: child is usually going to be a @@ -271,23 +288,9 @@ nexus_alloc_resource(device_t bus, devic } flags &= ~RF_ACTIVE; - - switch (type) { - case SYS_RES_IRQ: - rm = &irq_rman; - break; - - case SYS_RES_IOPORT: - rm = &port_rman; - break; - - case SYS_RES_MEMORY: - rm = &mem_rman; - break; - - default: - return 0; - } + rm = nexus_rman(type); + if (rm == NULL) + return (NULL); rv = rman_reserve_resource(rm, start, end, count, flags, child); if (rv == 0) @@ -305,6 +308,20 @@ nexus_alloc_resource(device_t bus, devic } static int +nexus_adjust_resource(device_t bus, device_t child, int type, + struct resource *r, u_long start, u_long end) +{ + struct rman *rm; + + rm = nexus_rman(type); + if (rm == NULL) + return (ENXIO); + if (!rman_is_region_manager(r, rm)) + return (EINVAL); + return (rman_adjust_resource(r, start, end)); +} + +static int nexus_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *r) { From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 14:05:15 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6BA361065673; Mon, 18 Jul 2011 14:05:15 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 425938FC18; Mon, 18 Jul 2011 14:05:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IE5FXu026027; Mon, 18 Jul 2011 14:05:15 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IE5F6t026025; Mon, 18 Jul 2011 14:05:15 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201107181405.p6IE5F6t026025@svn.freebsd.org> From: John Baldwin Date: Mon, 18 Jul 2011 14:05:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224185 - head/sys/ia64/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 14:05:15 -0000 Author: jhb Date: Mon Jul 18 14:05:14 2011 New Revision: 224185 URL: http://svn.freebsd.org/changeset/base/224185 Log: Enable NEW_PCIB by default on ia64. Approved by: re (kib), marcel Modified: head/sys/ia64/conf/DEFAULTS Modified: head/sys/ia64/conf/DEFAULTS ============================================================================== --- head/sys/ia64/conf/DEFAULTS Mon Jul 18 14:04:37 2011 (r224184) +++ head/sys/ia64/conf/DEFAULTS Mon Jul 18 14:05:14 2011 (r224185) @@ -18,3 +18,5 @@ device uart_ns8250 options GEOM_PART_BSD options GEOM_PART_GPT options GEOM_PART_MBR + +options NEW_PCIB From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 14:12:58 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6ED5D1065673; Mon, 18 Jul 2011 14:12:58 +0000 (UTC) (envelope-from hselasky@c2i.net) Received: from swip.net (mailfe01.c2i.net [212.247.154.2]) by mx1.freebsd.org (Postfix) with ESMTP id 645288FC14; Mon, 18 Jul 2011 14:12:56 +0000 (UTC) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.1 cv=yfIOS+81wnQIz0UwZPDdWOvE/jQxEvyI9Z1xC25I9wc= c=1 sm=1 a=SvYTsOw2Z4kA:10 a=Bjjt3Ia5OwMA:10 a=WQU8e4WWZSUA:10 a=N659UExz7-8A:10 a=CL8lFSKtTFcA:10 a=i9M/sDlu2rpZ9XS819oYzg==:17 a=N_3_nA3f67XQbwRQ6I0A:9 a=4m0-JB1XX1Jc-uzmjx8A:7 a=pILNOxqGKmIA:10 a=i9M/sDlu2rpZ9XS819oYzg==:117 Received: from [188.126.198.129] (account mc467741@c2i.net HELO laptop002.hselasky.homeunix.org) by mailfe01.swip.net (CommuniGate Pro SMTP 5.2.19) with ESMTPA id 154950188; Mon, 18 Jul 2011 16:12:54 +0200 From: Hans Petter Selasky To: Andriy Gapon Date: Mon, 18 Jul 2011 16:10:49 +0200 User-Agent: KMail/1.13.5 (FreeBSD/8.2-STABLE; KDE/4.4.5; amd64; ; ) References: <201107132107.p6DL7ojq099900@svn.freebsd.org> <4E242C9E.6010604@FreeBSD.org> In-Reply-To: <4E242C9E.6010604@FreeBSD.org> X-Face: *nPdTl_}RuAI6^PVpA02T?$%Xa^>@hE0uyUIoiha$pC:9TVgl.Oq,NwSZ4V" =?windows-1252?q?=7CLR=2E+tj=7Dg5=0A=09=25V?=,x^qOs~mnU3]Gn; cQLv&.N>TrxmSFf+p6(30a/{)KUU!s}w\IhQBj}[g}bj0I3^glmC( =?windows-1252?q?=0A=09=3AAuzV9=3A=2EhESm-x4h240C=609=3Dw?= MIME-Version: 1.0 Content-Type: Text/Plain; charset="windows-1252" Content-Transfer-Encoding: 7bit Message-Id: <201107181610.49443.hselasky@c2i.net> Cc: "svn-src-head@FreeBSD.org" , "svn-src-all@FreeBSD.org" , "src-committers@FreeBSD.org" Subject: Re: svn commit: r223989 - head/sys/dev/usb/input X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 14:12:58 -0000 Hi, > The question is: why this special subcase is needed at all. Yes, according to the current keyboard implementation in the kernel. > If I understand correctly, the polling mode is used only in some special > situations/contexts. > So why not always use the generic code (after this if-block) that does > "proper" polling? What do we win when using this special case that seems > to depend on the scheduler? This special code is a workaround. The problem is that when not polling the key presses will be fed into syscons I think, and not returned via the polling function. That's why there is a timer there to distinguish when polling starts and polling stops. It is not enough just to enable/disable polling around each key-press like currently done. Please test any patches that it works in the filesystem mount prompt after boot: Edit /etc/fstab and put some non-existing device there for root partition. Reboot. Make sure USB keyboard works in the prompt which appears. > > Unfortunately I couldn't fully understand commit log of r203896. > > One of the reasons I am asking about this is that soon-ish we may have > changes that disable scheduler in a context where panicstr != NULL. Ok. Please make sure that USB keyboard works reliably in boot prompt when asking for file-system and in KDB and after dump during shutdown. An of course after logged in like a normal user :-) --HPS From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 15:19:41 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8AB9E1065672; Mon, 18 Jul 2011 15:19:41 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7624D8FC24; Mon, 18 Jul 2011 15:19:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IFJfqw028300; Mon, 18 Jul 2011 15:19:41 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IFJfOK028280; Mon, 18 Jul 2011 15:19:41 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201107181519.p6IFJfOK028280@svn.freebsd.org> From: Attilio Rao Date: Mon, 18 Jul 2011 15:19:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224187 - in head: sys/amd64/amd64 sys/arm/arm sys/arm/sa11x0 sys/i386/i386 sys/ia64/ia64 sys/kern sys/mips/mips sys/powerpc/aim sys/powerpc/booke sys/sparc64/sparc64 sys/sys usr.bin/vm... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 15:19:41 -0000 Author: attilio Date: Mon Jul 18 15:19:40 2011 New Revision: 224187 URL: http://svn.freebsd.org/changeset/base/224187 Log: - Remove the eintrcnt/eintrnames usage and introduce the concept of sintrcnt/sintrnames which are symbols containing the size of the 2 tables. - For amd64/i386 remove the storage of intr* stuff from assembly files. This area can be widely improved by applying the same to other architectures and likely finding an unified approach among them and move the whole code to be MI. More work in this area is expected to happen fairly soon. No MFC is previewed for this patch. Tested by: pluknet Reviewed by: jhb Approved by: re (kib) Modified: head/sys/amd64/amd64/genassym.c head/sys/amd64/amd64/intr_machdep.c head/sys/amd64/amd64/support.S head/sys/arm/arm/irq_dispatch.S head/sys/arm/sa11x0/sa11x0_irq.S head/sys/i386/i386/genassym.c head/sys/i386/i386/intr_machdep.c head/sys/i386/i386/support.s head/sys/ia64/ia64/locore.S head/sys/kern/kern_clock.c head/sys/kern/kern_intr.c head/sys/mips/mips/exception.S head/sys/powerpc/aim/locore32.S head/sys/powerpc/aim/locore64.S head/sys/powerpc/booke/locore.S head/sys/sparc64/sparc64/exception.S head/sys/sparc64/sparc64/intr_machdep.c head/sys/sys/interrupt.h head/usr.bin/vmstat/vmstat.c Modified: head/sys/amd64/amd64/genassym.c ============================================================================== --- head/sys/amd64/amd64/genassym.c Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/amd64/amd64/genassym.c Mon Jul 18 15:19:40 2011 (r224187) @@ -201,7 +201,6 @@ ASSYM(UC_EFLAGS, offsetof(ucontext_t, uc ASSYM(ENOENT, ENOENT); ASSYM(EFAULT, EFAULT); ASSYM(ENAMETOOLONG, ENAMETOOLONG); -ASSYM(MAXCPU, MAXCPU); ASSYM(MAXCOMLEN, MAXCOMLEN); ASSYM(MAXPATHLEN, MAXPATHLEN); ASSYM(PC_SIZEOF, sizeof(struct pcpu)); Modified: head/sys/amd64/amd64/intr_machdep.c ============================================================================== --- head/sys/amd64/amd64/intr_machdep.c Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/amd64/amd64/intr_machdep.c Mon Jul 18 15:19:40 2011 (r224187) @@ -80,6 +80,11 @@ static STAILQ_HEAD(, pic) pics; static int assign_cpu; #endif +u_long intrcnt[INTRCNT_COUNT]; +char intrnames[INTRCNT_COUNT * (MAXCOMLEN + 1)]; +size_t sintrcnt = sizeof(intrcnt); +size_t sintrnames = sizeof(intrnames); + static int intr_assign_cpu(void *arg, u_char cpu); static void intr_disable_src(void *arg); static void intr_init(void *__dummy); Modified: head/sys/amd64/amd64/support.S ============================================================================== --- head/sys/amd64/amd64/support.S Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/amd64/amd64/support.S Mon Jul 18 15:19:40 2011 (r224187) @@ -38,18 +38,6 @@ #include "assym.s" - .data - ALIGN_DATA - .globl intrcnt, eintrcnt -intrcnt: - .space INTRCNT_COUNT * 8 -eintrcnt: - - .globl intrnames, eintrnames -intrnames: - .space INTRCNT_COUNT * (MAXCOMLEN + 1) -eintrnames: - .text /* Modified: head/sys/arm/arm/irq_dispatch.S ============================================================================== --- head/sys/arm/arm/irq_dispatch.S Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/arm/arm/irq_dispatch.S Mon Jul 18 15:19:40 2011 (r224187) @@ -102,14 +102,16 @@ ASENTRY_NP(irq_entry) .align 0 - .global _C_LABEL(intrnames), _C_LABEL(eintrnames) - .global _C_LABEL(intrcnt), _C_LABEL(eintrcnt) + .global _C_LABEL(intrnames), _C_LABEL(sintrnames) + .global _C_LABEL(intrcnt), _C_LABEL(sintrcnt) _C_LABEL(intrnames): .space NIRQ * (MAXCOMLEN + 1) -_C_LABEL(eintrnames): _C_LABEL(intrcnt): .space NIRQ * 4 -_C_LABEL(eintrcnt): +_C_LABEL(sintrnames): + .word NIRQ * (MAXCOMLEN + 1) +_C_LABEL(sintrcnt): + .word NIRQ * 4 .global _C_LABEL(current_intr_depth) _C_LABEL(current_intr_depth): Modified: head/sys/arm/sa11x0/sa11x0_irq.S ============================================================================== --- head/sys/arm/sa11x0/sa11x0_irq.S Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/arm/sa11x0/sa11x0_irq.S Mon Jul 18 15:19:40 2011 (r224187) @@ -118,16 +118,11 @@ ENTRY(sa11x0_activateirqs) mov r1, #0xffffffff str r1, [r0, #(SAIPIC_MR)] mov pc, lr -#ifdef IRQSTATS -Lintrcnt: - .word _C_LABEL(intrcnt) -#endif - .global _C_LABEL(intrnames), _C_LABEL(eintrnames) - .global _C_LABEL(eintrcnt) + .global _C_LABEL(intrnames), _C_LABEL(sintrnames) _C_LABEL(intrnames): -_C_LABEL(eintrnames): -_C_LABEL(eintrcnt): +_C_LABEL(sintrnames): + .word 0 .globl _C_LABEL(intrcnt), _C_LABEL(sintrcnt) @@ -135,4 +130,4 @@ _C_LABEL(intrcnt): .space ICU_LEN*4 /* XXX Should be linked to number of interrupts */ _C_LABEL(sintrcnt): - .space 32*4 + .word ICU_LEN*4 Modified: head/sys/i386/i386/genassym.c ============================================================================== --- head/sys/i386/i386/genassym.c Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/i386/i386/genassym.c Mon Jul 18 15:19:40 2011 (r224187) @@ -180,7 +180,6 @@ ASSYM(UC_GS, offsetof(ucontext_t, uc_mco ASSYM(ENOENT, ENOENT); ASSYM(EFAULT, EFAULT); ASSYM(ENAMETOOLONG, ENAMETOOLONG); -ASSYM(MAXCPU, MAXCPU); ASSYM(MAXCOMLEN, MAXCOMLEN); ASSYM(MAXPATHLEN, MAXPATHLEN); ASSYM(BOOTINFO_SIZE, sizeof(struct bootinfo)); Modified: head/sys/i386/i386/intr_machdep.c ============================================================================== --- head/sys/i386/i386/intr_machdep.c Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/i386/i386/intr_machdep.c Mon Jul 18 15:19:40 2011 (r224187) @@ -71,6 +71,11 @@ static STAILQ_HEAD(, pic) pics; static int assign_cpu; #endif +u_long intrcnt[INTRCNT_COUNT]; +char intrnames[INTRCNT_COUNT * (MAXCOMLEN + 1)]; +size_t sintrcnt = sizeof(intrcnt); +size_t sintrnames = sizeof(intrnames); + static int intr_assign_cpu(void *arg, u_char cpu); static void intr_disable_src(void *arg); static void intr_init(void *__dummy); Modified: head/sys/i386/i386/support.s ============================================================================== --- head/sys/i386/i386/support.s Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/i386/i386/support.s Mon Jul 18 15:19:40 2011 (r224187) @@ -41,18 +41,6 @@ #define IDXSHIFT 10 - .data - ALIGN_DATA - .globl intrcnt, eintrcnt -intrcnt: - .space INTRCNT_COUNT * 4 -eintrcnt: - - .globl intrnames, eintrnames -intrnames: - .space INTRCNT_COUNT * (MAXCOMLEN + 1) -eintrnames: - .text /* Modified: head/sys/ia64/ia64/locore.S ============================================================================== --- head/sys/ia64/ia64/locore.S Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/ia64/ia64/locore.S Mon Jul 18 15:19:40 2011 (r224187) @@ -206,11 +206,14 @@ intr_n = 1 .byte 0 intr_n = intr_n + 1 .endr -EXPORT(eintrnames) +EXPORT(sintrnames) + .word INTRCNT_COUNT * INTRNAME_LEN + .align 8 EXPORT(intrcnt) .fill INTRCNT_COUNT, 8, 0 -EXPORT(eintrcnt) +EXPORT(sintrcnt) + .word INTRCNT_COUNT .text // in0: image base Modified: head/sys/kern/kern_clock.c ============================================================================== --- head/sys/kern/kern_clock.c Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/kern/kern_clock.c Mon Jul 18 15:19:40 2011 (r224187) @@ -842,7 +842,7 @@ watchdog_fire(void) curintr = intrcnt; curname = intrnames; inttotal = 0; - nintr = eintrcnt - intrcnt; + nintr = sintrcnt; printf("interrupt total\n"); while (--nintr >= 0) { Modified: head/sys/kern/kern_intr.c ============================================================================== --- head/sys/kern/kern_intr.c Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/kern/kern_intr.c Mon Jul 18 15:19:40 2011 (r224187) @@ -1869,8 +1869,7 @@ SYSINIT(start_softintr, SI_SUB_SOFTINTR, static int sysctl_intrnames(SYSCTL_HANDLER_ARGS) { - return (sysctl_handle_opaque(oidp, intrnames, eintrnames - intrnames, - req)); + return (sysctl_handle_opaque(oidp, intrnames, sintrnames, req)); } SYSCTL_PROC(_hw, OID_AUTO, intrnames, CTLTYPE_OPAQUE | CTLFLAG_RD, @@ -1879,8 +1878,7 @@ SYSCTL_PROC(_hw, OID_AUTO, intrnames, CT static int sysctl_intrcnt(SYSCTL_HANDLER_ARGS) { - return (sysctl_handle_opaque(oidp, intrcnt, - (char *)eintrcnt - (char *)intrcnt, req)); + return (sysctl_handle_opaque(oidp, intrcnt, sintrcnt, req)); } SYSCTL_PROC(_hw, OID_AUTO, intrcnt, CTLTYPE_OPAQUE | CTLFLAG_RD, @@ -1894,9 +1892,12 @@ DB_SHOW_COMMAND(intrcnt, db_show_intrcnt { u_long *i; char *cp; + u_int j; cp = intrnames; - for (i = intrcnt; i != eintrcnt && !db_pager_quit; i++) { + j = 0; + for (i = intrcnt; j < (sintrcnt / sizeof(u_long)) && !db_pager_quit; + i++, j++) { if (*cp == '\0') break; if (*i != 0) Modified: head/sys/mips/mips/exception.S ============================================================================== --- head/sys/mips/mips/exception.S Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/mips/mips/exception.S Mon Jul 18 15:19:40 2011 (r224187) @@ -1134,16 +1134,19 @@ END(MipsFPTrap) */ .data .globl intrcnt - .globl eintrcnt + .globl sintrcnt .globl intrnames - .globl eintrnames + .globl sintrnames intrnames: .space INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 -eintrnames: +sintrnames: + .word INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 + .align 4 intrcnt: .space INTRCNT_COUNT * 4 * 2 -eintrcnt: +sintrcnt: + .word INTRCNT_COUNT * 4 * 2 /* Modified: head/sys/powerpc/aim/locore32.S ============================================================================== --- head/sys/powerpc/aim/locore32.S Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/powerpc/aim/locore32.S Mon Jul 18 15:19:40 2011 (r224187) @@ -90,11 +90,14 @@ GLOBAL(esym) #define INTRCNT_COUNT 256 /* max(HROWPIC_IRQMAX,OPENPIC_IRQMAX) */ GLOBAL(intrnames) .space INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 -GLOBAL(eintrnames) +GLOBAL(sintrnames) + .word INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 + .align 4 GLOBAL(intrcnt) .space INTRCNT_COUNT * 4 * 2 -GLOBAL(eintrcnt) +GLOBAL(sintrcnt) + .word INTRCNT_COUNT * 4 * 2 .text .globl btext Modified: head/sys/powerpc/aim/locore64.S ============================================================================== --- head/sys/powerpc/aim/locore64.S Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/powerpc/aim/locore64.S Mon Jul 18 15:19:40 2011 (r224187) @@ -90,11 +90,14 @@ GLOBAL(esym) #define INTRCNT_COUNT 256 /* max(HROWPIC_IRQMAX,OPENPIC_IRQMAX) */ GLOBAL(intrnames) .space INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 -GLOBAL(eintrnames) +GLOBAL(sintrnames) + .word INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 + .align 4 GLOBAL(intrcnt) .space INTRCNT_COUNT * 4 * 2 -GLOBAL(eintrcnt) +GLOBAL(sintrcnt) + .word INTRCNT_COUNT * 4 * 2 .text .globl btext Modified: head/sys/powerpc/booke/locore.S ============================================================================== --- head/sys/powerpc/booke/locore.S Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/powerpc/booke/locore.S Mon Jul 18 15:19:40 2011 (r224187) @@ -789,10 +789,13 @@ GLOBAL(kernload) .long 0 GLOBAL(intrnames) .space INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 -GLOBAL(eintrnames) +GLOBAL(sintrnames) + .word INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 + .align 4 GLOBAL(intrcnt) .space INTRCNT_COUNT * 4 * 2 -GLOBAL(eintrcnt) +GLOBAL(sintrcnt) + .word INTRCNT_COUNT * 4 * 2 #include Modified: head/sys/sparc64/sparc64/exception.S ============================================================================== --- head/sys/sparc64/sparc64/exception.S Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/sparc64/sparc64/exception.S Mon Jul 18 15:19:40 2011 (r224187) @@ -371,14 +371,17 @@ END(rsf_fatal) .data _ALIGN_DATA - .globl intrnames, eintrnames + .globl intrnames, sintrnames intrnames: .space IV_MAX * (MAXCOMLEN + 1) -eintrnames: - .globl intrcnt, eintrcnt +sintrnames: + .word IV_MAX * (MAXCOMLEN + 1) + + .globl intrcnt, sintrcnt intrcnt: .space IV_MAX * 8 -eintrcnt: +sintrcnt: + .word IV_MAX * 8 .text Modified: head/sys/sparc64/sparc64/intr_machdep.c ============================================================================== --- head/sys/sparc64/sparc64/intr_machdep.c Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/sparc64/sparc64/intr_machdep.c Mon Jul 18 15:19:40 2011 (r224187) @@ -171,7 +171,7 @@ static int intrcnt_setname(const char *name, int index) { - if (intrnames + (MAXCOMLEN + 1) * index >= eintrnames) + if ((MAXCOMLEN + 1) * index >= sintrnames) return (E2BIG); snprintf(intrnames + (MAXCOMLEN + 1) * index, MAXCOMLEN + 1, "%-*s", MAXCOMLEN, name); Modified: head/sys/sys/interrupt.h ============================================================================== --- head/sys/sys/interrupt.h Mon Jul 18 14:41:08 2011 (r224186) +++ head/sys/sys/interrupt.h Mon Jul 18 15:19:40 2011 (r224187) @@ -149,10 +149,10 @@ extern struct intr_event *clk_intr_event extern void *vm_ih; /* Counts and names for statistics (defined in MD code). */ -extern u_long eintrcnt[]; /* end of intrcnt[] */ -extern char eintrnames[]; /* end of intrnames[] */ extern u_long intrcnt[]; /* counts for for each device and stray */ extern char intrnames[]; /* string table containing device names */ +extern size_t sintrcnt; /* size of intrcnt table */ +extern size_t sintrnames; /* size of intrnames table */ #ifdef DDB void db_dump_intr_event(struct intr_event *ie, int handlers); Modified: head/usr.bin/vmstat/vmstat.c ============================================================================== --- head/usr.bin/vmstat/vmstat.c Mon Jul 18 14:41:08 2011 (r224186) +++ head/usr.bin/vmstat/vmstat.c Mon Jul 18 15:19:40 2011 (r224187) @@ -90,12 +90,12 @@ static struct nlist namelist[] = { { "_nchstats" }, #define X_INTRNAMES 5 { "_intrnames" }, -#define X_EINTRNAMES 6 - { "_eintrnames" }, +#define X_SINTRNAMES 6 + { "_sintrnames" }, #define X_INTRCNT 7 { "_intrcnt" }, -#define X_EINTRCNT 8 - { "_eintrcnt" }, +#define X_SINTRCNT 8 + { "_sintrcnt" }, #define X_KMEMSTATS 9 { "_kmemstatistics" }, #define X_KMEMZONES 10 @@ -1153,10 +1153,8 @@ dointr(void) uptime = getuptime(); if (kd != NULL) { - intrcntlen = namelist[X_EINTRCNT].n_value - - namelist[X_INTRCNT].n_value; - inamlen = namelist[X_EINTRNAMES].n_value - - namelist[X_INTRNAMES].n_value; + intrcntlen = namelist[X_SINTRCNT].n_value; + inamlen = namelist[X_SINTRNAMES].n_value; if ((intrcnt = malloc(intrcntlen)) == NULL || (intrname = malloc(inamlen)) == NULL) err(1, "malloc()"); From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 17:33:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 356331065678; Mon, 18 Jul 2011 17:33:09 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 237638FC0C; Mon, 18 Jul 2011 17:33:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IHX9kG032278; Mon, 18 Jul 2011 17:33:09 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IHX8kx032272; Mon, 18 Jul 2011 17:33:08 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201107181733.p6IHX8kx032272@svn.freebsd.org> From: John Baldwin Date: Mon, 18 Jul 2011 17:33:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224188 - in head: sys/kern sys/sys usr.bin/top X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 17:33:09 -0000 Author: jhb Date: Mon Jul 18 17:33:08 2011 New Revision: 224188 URL: http://svn.freebsd.org/changeset/base/224188 Log: - Export each thread's individual resource usage in in struct kinfo_proc's ki_rusage member when KERN_PROC_INC_THREAD is passed to one of the process sysctls. - Correctly account for the current thread's cputime in the thread when doing the runtime fixup in calcru(). - Use TIDs as the key to lookup the previous thread to compute IO stat deltas in IO mode in top when thread display is enabled. Reviewed by: kib Approved by: re (kib) Modified: head/sys/kern/kern_proc.c head/sys/kern/kern_resource.c head/sys/sys/resourcevar.h head/usr.bin/top/machine.c Modified: head/sys/kern/kern_proc.c ============================================================================== --- head/sys/kern/kern_proc.c Mon Jul 18 15:19:40 2011 (r224187) +++ head/sys/kern/kern_proc.c Mon Jul 18 17:33:08 2011 (r224188) @@ -848,6 +848,8 @@ fill_kinfo_thread(struct thread *td, str kp->ki_tdaddr = td; PROC_LOCK_ASSERT(p, MA_OWNED); + if (preferthread) + PROC_SLOCK(p); thread_lock(td); if (td->td_wmesg != NULL) strlcpy(kp->ki_wmesg, td->td_wmesg, sizeof(kp->ki_wmesg)); @@ -899,6 +901,7 @@ fill_kinfo_thread(struct thread *td, str kp->ki_pri.pri_user = td->td_user_pri; if (preferthread) { + rufetchtd(td, &kp->ki_rusage); kp->ki_runtime = cputick2usec(td->td_rux.rux_runtime); kp->ki_pctcpu = sched_pctcpu(td); kp->ki_estcpu = td->td_estcpu; @@ -911,6 +914,8 @@ fill_kinfo_thread(struct thread *td, str kp->ki_siglist = td->td_siglist; kp->ki_sigmask = td->td_sigmask; thread_unlock(td); + if (preferthread) + PROC_SUNLOCK(p); } /* Modified: head/sys/kern/kern_resource.c ============================================================================== --- head/sys/kern/kern_resource.c Mon Jul 18 15:19:40 2011 (r224187) +++ head/sys/kern/kern_resource.c Mon Jul 18 17:33:08 2011 (r224188) @@ -813,7 +813,7 @@ void calcru(struct proc *p, struct timeval *up, struct timeval *sp) { struct thread *td; - uint64_t u; + uint64_t runtime, u; PROC_LOCK_ASSERT(p, MA_OWNED); PROC_SLOCK_ASSERT(p, MA_OWNED); @@ -826,7 +826,9 @@ calcru(struct proc *p, struct timeval *u td = curthread; if (td->td_proc == p) { u = cpu_ticks(); - p->p_rux.rux_runtime += u - PCPU_GET(switchtime); + runtime = u - PCPU_GET(switchtime); + td->td_runtime += runtime; + td->td_incruntime += runtime; PCPU_SET(switchtime, u); } /* Make sure the per-thread stats are current. */ @@ -838,6 +840,34 @@ calcru(struct proc *p, struct timeval *u calcru1(p, &p->p_rux, up, sp); } +/* Collect resource usage for a single thread. */ +void +rufetchtd(struct thread *td, struct rusage *ru) +{ + struct proc *p; + uint64_t runtime, u; + + p = td->td_proc; + PROC_SLOCK_ASSERT(p, MA_OWNED); + THREAD_LOCK_ASSERT(td, MA_OWNED); + /* + * If we are getting stats for the current thread, then add in the + * stats that this thread has accumulated in its current time slice. + * We reset the thread and CPU state as if we had performed a context + * switch right here. + */ + if (td == curthread) { + u = cpu_ticks(); + runtime = u - PCPU_GET(switchtime); + td->td_runtime += runtime; + td->td_incruntime += runtime; + PCPU_SET(switchtime, u); + } + ruxagg(p, td); + *ru = td->td_ru; + calcru1(p, &td->td_rux, &ru->ru_utime, &ru->ru_stime); +} + static void calcru1(struct proc *p, struct rusage_ext *ruxp, struct timeval *up, struct timeval *sp) @@ -955,12 +985,10 @@ kern_getrusage(struct thread *td, int wh case RUSAGE_THREAD: PROC_SLOCK(p); - ruxagg(p, td); - PROC_SUNLOCK(p); thread_lock(td); - *rup = td->td_ru; - calcru1(p, &td->td_rux, &rup->ru_utime, &rup->ru_stime); + rufetchtd(td, rup); thread_unlock(td); + PROC_SUNLOCK(p); break; default: Modified: head/sys/sys/resourcevar.h ============================================================================== --- head/sys/sys/resourcevar.h Mon Jul 18 15:19:40 2011 (r224187) +++ head/sys/sys/resourcevar.h Mon Jul 18 17:33:08 2011 (r224188) @@ -136,6 +136,7 @@ void rucollect(struct rusage *ru, struc void rufetch(struct proc *p, struct rusage *ru); void rufetchcalc(struct proc *p, struct rusage *ru, struct timeval *up, struct timeval *sp); +void rufetchtd(struct thread *td, struct rusage *ru); void ruxagg(struct proc *p, struct thread *td); int suswintr(void *base, int word); struct uidinfo Modified: head/usr.bin/top/machine.c ============================================================================== --- head/usr.bin/top/machine.c Mon Jul 18 15:19:40 2011 (r224187) +++ head/usr.bin/top/machine.c Mon Jul 18 17:33:08 2011 (r224188) @@ -235,6 +235,7 @@ static int *pcpu_cpu_states; static int compare_jid(const void *a, const void *b); static int compare_pid(const void *a, const void *b); +static int compare_tid(const void *a, const void *b); static const char *format_nice(const struct kinfo_proc *pp); static void getsysctl(const char *name, void *ptr, size_t len); static int swapmode(int *retavail, int *retfree); @@ -557,7 +558,7 @@ get_old_proc(struct kinfo_proc *pp) * cache it. */ oldpp = bsearch(&pp, previous_pref, previous_proc_count, - sizeof(*previous_pref), compare_pid); + sizeof(*previous_pref), ps.thread ? compare_tid : compare_pid); if (oldpp == NULL) { pp->ki_udata = NOPROC; return (NULL); @@ -652,7 +653,7 @@ get_process_info(struct system_info *si, previous_pref[i] = &previous_procs[i]; bcopy(pbase, previous_procs, nproc * sizeof(*previous_procs)); qsort(previous_pref, nproc, sizeof(*previous_pref), - compare_pid); + ps.thread ? compare_tid : compare_pid); } previous_proc_count = nproc; @@ -1059,6 +1060,18 @@ compare_pid(const void *p1, const void * return ((*pp1)->ki_pid - (*pp2)->ki_pid); } +static int +compare_tid(const void *p1, const void *p2) +{ + const struct kinfo_proc * const *pp1 = p1; + const struct kinfo_proc * const *pp2 = p2; + + if ((*pp2)->ki_tid < 0 || (*pp1)->ki_tid < 0) + abort(); + + return ((*pp1)->ki_tid - (*pp2)->ki_tid); +} + /* * proc_compare - comparison function for "qsort" * Compares the resource consumption of two processes using five From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 18:02:07 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 75C59106566C; Mon, 18 Jul 2011 18:02:07 +0000 (UTC) (envelope-from zml@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4B69A8FC0A; Mon, 18 Jul 2011 18:02:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6II27Zc033304; Mon, 18 Jul 2011 18:02:07 GMT (envelope-from zml@svn.freebsd.org) Received: (from zml@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6II27eM033302; Mon, 18 Jul 2011 18:02:07 GMT (envelope-from zml@svn.freebsd.org) Message-Id: <201107181802.p6II27eM033302@svn.freebsd.org> From: Zachary Loafman Date: Mon, 18 Jul 2011 18:02:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-svnadmin@freebsd.org X-SVN-Group: svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224189 - svnadmin/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 18:02:07 -0000 Author: zml Date: Mon Jul 18 18:02:06 2011 New Revision: 224189 URL: http://svn.freebsd.org/changeset/base/224189 Log: Release zkirsch to wreak havoc on NFS. Modified: svnadmin/conf/mentors Modified: svnadmin/conf/mentors ============================================================================== --- svnadmin/conf/mentors Mon Jul 18 17:33:08 2011 (r224188) +++ svnadmin/conf/mentors Mon Jul 18 18:02:06 2011 (r224189) @@ -33,4 +33,3 @@ tijl kib trociny pjd Co-mentor: kib versus gavin Co-mentor: fjoe will ken -zack zml From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 18:06:39 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8472E106564A; Mon, 18 Jul 2011 18:06:39 +0000 (UTC) (envelope-from mdf@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 71DB28FC0C; Mon, 18 Jul 2011 18:06:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6II6d2r033499; Mon, 18 Jul 2011 18:06:39 GMT (envelope-from mdf@svn.freebsd.org) Received: (from mdf@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6II6dUH033497; Mon, 18 Jul 2011 18:06:39 GMT (envelope-from mdf@svn.freebsd.org) Message-Id: <201107181806.p6II6dUH033497@svn.freebsd.org> From: Matthew D Fleming Date: Mon, 18 Jul 2011 18:06:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224190 - stable/8/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 18:06:39 -0000 Author: mdf Date: Mon Jul 18 18:06:39 2011 New Revision: 224190 URL: http://svn.freebsd.org/changeset/base/224190 Log: MFC r223875, r223876: style(9) and cleanup fixes. Add an option to have a fail point term only execute when run by a specified pid. This is helpful for automated testing involving a global knob that would otherwise be executed by many other threads. Modified: stable/8/sys/kern/kern_fail.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/kern/kern_fail.c ============================================================================== --- stable/8/sys/kern/kern_fail.c Mon Jul 18 18:02:06 2011 (r224189) +++ stable/8/sys/kern/kern_fail.c Mon Jul 18 18:06:39 2011 (r224190) @@ -52,6 +52,7 @@ #include __FBSDID("$FreeBSD$"); +#include #include #include #include @@ -59,6 +60,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -88,16 +90,20 @@ enum fail_point_t { FAIL_POINT_BREAK, /**< break into the debugger */ FAIL_POINT_PRINT, /**< print a message */ FAIL_POINT_SLEEP, /**< sleep for some msecs */ - FAIL_POINT_INVALID, /**< placeholder */ + FAIL_POINT_NUMTYPES }; -static const char *fail_type_strings[] = { - "off", - "panic", - "return", - "break", - "print", - "sleep", +static struct { + const char *name; + int nmlen; +} fail_type_strings[] = { +#define FP_TYPE_NM_LEN(s) { s, sizeof(s) - 1 } + [FAIL_POINT_OFF] = FP_TYPE_NM_LEN("off"), + [FAIL_POINT_PANIC] = FP_TYPE_NM_LEN("panic"), + [FAIL_POINT_RETURN] = FP_TYPE_NM_LEN("return"), + [FAIL_POINT_BREAK] = FP_TYPE_NM_LEN("break"), + [FAIL_POINT_PRINT] = FP_TYPE_NM_LEN("print"), + [FAIL_POINT_SLEEP] = FP_TYPE_NM_LEN("sleep"), }; /** @@ -109,7 +115,7 @@ struct fail_point_entry { int fe_arg; /**< argument to type (e.g. return value) */ int fe_prob; /**< likelihood of firing in millionths */ int fe_count; /**< number of times to fire, 0 means always */ - + pid_t fe_pid; /**< only fail for this process */ TAILQ_ENTRY(fail_point_entry) fe_entries; /**< next entry in fail point */ }; @@ -120,7 +126,7 @@ fail_point_sleep(struct fail_point *fp, /* convert from millisecs to ticks, rounding up */ int timo = ((msecs * hz) + 999) / 1000; - if (timo) { + if (timo > 0) { if (fp->fp_sleep_fn == NULL) { msleep(fp, &g_fp_mtx, PWAIT, "failpt", timo); } else { @@ -191,19 +197,13 @@ fail_point_init(struct fail_point *fp, c void fail_point_destroy(struct fail_point *fp) { - struct fail_point_entry *ent; - if (fp->fp_flags & FAIL_POINT_DYNAMIC_NAME && fp->fp_name != NULL) { - fp_free((void *)(intptr_t)fp->fp_name); + if ((fp->fp_flags & FAIL_POINT_DYNAMIC_NAME) != 0) { + fp_free(__DECONST(void *, fp->fp_name)); fp->fp_name = NULL; } fp->fp_flags = 0; - - while (!TAILQ_EMPTY(&fp->fp_entries)) { - ent = TAILQ_FIRST(&fp->fp_entries); - TAILQ_REMOVE(&fp->fp_entries, ent, fe_entries); - fp_free(ent); - } + clear_entries(&fp->fp_entries); } /** @@ -222,16 +222,14 @@ fail_point_eval_nontrivial(struct fail_p FP_LOCK(); - ent = TAILQ_FIRST(&fp->fp_entries); - while (ent) { + TAILQ_FOREACH_SAFE(ent, &fp->fp_entries, fe_entries, next) { int cont = 0; /* don't continue by default */ - next = TAILQ_NEXT(ent, fe_entries); if (ent->fe_prob < PROB_MAX && - ent->fe_prob < random() % PROB_MAX) { - cont = 1; - goto loop_end; - } + ent->fe_prob < random() % PROB_MAX) + continue; + if (ent->fe_pid != NO_PID && ent->fe_pid != curproc->p_pid) + continue; switch (ent->fe_type) { case FAIL_POINT_PANIC: @@ -239,13 +237,14 @@ fail_point_eval_nontrivial(struct fail_p /* NOTREACHED */ case FAIL_POINT_RETURN: - if (return_value) + if (return_value != NULL) *return_value = ent->fe_arg; ret = FAIL_POINT_RC_RETURN; break; case FAIL_POINT_BREAK: - printf("fail point %s breaking to debugger\n", fp->fp_name); + printf("fail point %s breaking to debugger\n", + fp->fp_name); breakpoint(); break; @@ -273,13 +272,9 @@ fail_point_eval_nontrivial(struct fail_p break; } - if (ent && ent->fe_count > 0 && --ent->fe_count == 0) + if (ent != NULL && ent->fe_count > 0 && --ent->fe_count == 0) free_entry(&fp->fp_entries, ent); - -loop_end: - if (cont) - ent = next; - else + if (cont == 0) break; } @@ -290,7 +285,7 @@ loop_end: FP_UNLOCK(); - return ret; + return (ret); } /** @@ -320,9 +315,11 @@ fail_point_get(struct fail_point *fp, st } if (ent->fe_count > 0) sbuf_printf(sb, "%d*", ent->fe_count); - sbuf_printf(sb, "%s", fail_type_strings[ent->fe_type]); + sbuf_printf(sb, "%s", fail_type_strings[ent->fe_type].name); if (ent->fe_arg) sbuf_printf(sb, "(%d)", ent->fe_arg); + if (ent->fe_pid != NO_PID) + sbuf_printf(sb, "[pid %d]", ent->fe_pid); if (TAILQ_NEXT(ent, fe_entries)) sbuf_printf(sb, "->"); } @@ -380,7 +377,7 @@ fail_point_set(struct fail_point *fp, ch fp->fp_name, fp->fp_location, buf); #endif /* IWARNING */ - return error; + return (error); } #define MAX_FAIL_POINT_BUF 1023 @@ -422,9 +419,8 @@ fail_point_sysctl(SYSCTL_HANDLER_ARGS) } out: - if (buf) - fp_free(buf); - return error; + fp_free(buf); + return (error); } /** @@ -437,12 +433,17 @@ parse_fail_point(struct fail_point_entri /* :: * ( "->" )* */ - if (!(p = parse_term(ents, p))) - return 0; - while (*p) - if (p[0] != '-' || p[1] != '>' || !(p = parse_term(ents, p+2))) - return 0; - return p; + p = parse_term(ents, p); + if (p == NULL) + return (NULL); + while (*p != '\0') { + if (p[0] != '-' || p[1] != '>') + return (NULL); + p = parse_term(ents, p + 2); + if (p == NULL) + return (NULL); + } + return (p); } /** @@ -455,6 +456,7 @@ parse_term(struct fail_point_entries *en ent = fp_malloc(sizeof *ent, M_WAITOK | M_ZERO); ent->fe_prob = PROB_MAX; + ent->fe_pid = NO_PID; TAILQ_INSERT_TAIL(ents, ent, fe_entries); /* @@ -462,14 +464,16 @@ parse_term(struct fail_point_entries *en * ( ( "%") | ( "*" ) )* * * [ "(" ")" ] + * [ "[pid " "]" ] */ /* ( ( "%") | ( "*" ) )* */ - while (('0' <= *p && *p <= '9') || *p == '.') { + while (isdigit(*p) || *p == '.') { int units, decimal; - if (!(p = parse_number(&units, &decimal, p))) - return 0; + p = parse_number(&units, &decimal, p); + if (p == NULL) + return (NULL); if (*p == '%') { if (units > 100) /* prevent overflow early */ @@ -477,37 +481,44 @@ parse_term(struct fail_point_entries *en ent->fe_prob = units * (PROB_MAX / 100) + decimal; if (ent->fe_prob > PROB_MAX) ent->fe_prob = PROB_MAX; - } else if (*p == '*') { if (!units || decimal) - return 0; + return (NULL); ent->fe_count = units; - - } else { - return 0; - } - + } else + return (NULL); p++; } /* */ - if (!(p = parse_type(ent, p))) - return 0; + p = parse_type(ent, p); + if (p == NULL) + return (NULL); if (*p == '\0') - return p; + return (p); /* [ "(" ")" ] */ if (*p != '(') return p; p++; - if (('0' <= *p && *p <= '9') || *p == '-') - ent->fe_arg = strtol(p, &p, 0); - else - return 0; + if (!isdigit(*p) && *p != '-') + return (NULL); + ent->fe_arg = strtol(p, &p, 0); if (*p++ != ')') - return 0; + return (NULL); + + /* [ "[pid " "]" ] */ +#define PID_STRING "[pid " + if (strncmp(p, PID_STRING, sizeof(PID_STRING) - 1) != 0) + return (p); + p += sizeof(PID_STRING) - 1; + if (!isdigit(*p)) + return (NULL); + ent->fe_pid = strtol(p, &p, 0); + if (*p++ != ']') + return (NULL); - return p; + return (p); } /** @@ -528,14 +539,14 @@ parse_number(int *out_units, int *out_de old_p = p; *out_units = strtol(p, &p, 10); if (p == old_p && *p != '.') - return 0; + return (NULL); /* fractional part */ *out_decimal = 0; if (*p == '.') { int digits = 0; p++; - while ('0' <= *p && *p <= '9') { + while (isdigit(*p)) { int digit = *p - '0'; if (digits < PROB_DIGITS - 2) *out_decimal = *out_decimal * 10 + digit; @@ -545,12 +556,12 @@ parse_number(int *out_units, int *out_de p++; } if (!digits) /* need at least one digit after '.' */ - return 0; + return (NULL); while (digits++ < PROB_DIGITS - 2) /* add implicit zeros */ *out_decimal *= 10; } - return p; /* success */ + return (p); /* success */ } /** @@ -560,21 +571,16 @@ static char * parse_type(struct fail_point_entry *ent, char *beg) { enum fail_point_t type; - char *end = beg; - while ('a' <= *end && *end <= 'z') - end++; - if (beg == end) - return 0; - for (type = FAIL_POINT_OFF; type != FAIL_POINT_INVALID; type++) { - const char *p = fail_type_strings[type]; - const char *q = beg; - while (q < end && *p++ == *q++); - if (q == end && *p == '\0') { + int len; + + for (type = FAIL_POINT_OFF; type < FAIL_POINT_NUMTYPES; type++) { + len = fail_type_strings[type].nmlen; + if (strncmp(fail_type_strings[type].name, beg, len) == 0) { ent->fe_type = type; - return end; + return (beg + len); } } - return 0; + return (NULL); } /** @@ -595,6 +601,7 @@ static void clear_entries(struct fail_point_entries *ents) { struct fail_point_entry *ent, *ent_next; + TAILQ_FOREACH_SAFE(ent, ents, fe_entries, ent_next) fp_free(ent); TAILQ_INIT(ents); From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 18:09:10 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BCFF7106564A; Mon, 18 Jul 2011 18:09:10 +0000 (UTC) (envelope-from mdf@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AA7468FC1C; Mon, 18 Jul 2011 18:09:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6II9Are033654; Mon, 18 Jul 2011 18:09:10 GMT (envelope-from mdf@svn.freebsd.org) Received: (from mdf@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6II9A4u033652; Mon, 18 Jul 2011 18:09:10 GMT (envelope-from mdf@svn.freebsd.org) Message-Id: <201107181809.p6II9A4u033652@svn.freebsd.org> From: Matthew D Fleming Date: Mon, 18 Jul 2011 18:09:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224191 - stable/7/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 18:09:10 -0000 Author: mdf Date: Mon Jul 18 18:09:10 2011 New Revision: 224191 URL: http://svn.freebsd.org/changeset/base/224191 Log: MFC r223875, r223876: style(9) and cleanup fixes. Add an option to have a fail point term only execute when run by a specified pid. This is helpful for automated testing involving a global knob that would otherwise be executed by many other threads. Modified: stable/7/sys/kern/kern_fail.c Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/kern/kern_fail.c ============================================================================== --- stable/7/sys/kern/kern_fail.c Mon Jul 18 18:06:39 2011 (r224190) +++ stable/7/sys/kern/kern_fail.c Mon Jul 18 18:09:10 2011 (r224191) @@ -52,6 +52,7 @@ #include __FBSDID("$FreeBSD$"); +#include #include #include #include @@ -59,6 +60,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -88,16 +90,20 @@ enum fail_point_t { FAIL_POINT_BREAK, /**< break into the debugger */ FAIL_POINT_PRINT, /**< print a message */ FAIL_POINT_SLEEP, /**< sleep for some msecs */ - FAIL_POINT_INVALID, /**< placeholder */ + FAIL_POINT_NUMTYPES }; -static const char *fail_type_strings[] = { - "off", - "panic", - "return", - "break", - "print", - "sleep", +static struct { + const char *name; + int nmlen; +} fail_type_strings[] = { +#define FP_TYPE_NM_LEN(s) { s, sizeof(s) - 1 } + [FAIL_POINT_OFF] = FP_TYPE_NM_LEN("off"), + [FAIL_POINT_PANIC] = FP_TYPE_NM_LEN("panic"), + [FAIL_POINT_RETURN] = FP_TYPE_NM_LEN("return"), + [FAIL_POINT_BREAK] = FP_TYPE_NM_LEN("break"), + [FAIL_POINT_PRINT] = FP_TYPE_NM_LEN("print"), + [FAIL_POINT_SLEEP] = FP_TYPE_NM_LEN("sleep"), }; /** @@ -109,7 +115,7 @@ struct fail_point_entry { int fe_arg; /**< argument to type (e.g. return value) */ int fe_prob; /**< likelihood of firing in millionths */ int fe_count; /**< number of times to fire, 0 means always */ - + pid_t fe_pid; /**< only fail for this process */ TAILQ_ENTRY(fail_point_entry) fe_entries; /**< next entry in fail point */ }; @@ -120,7 +126,7 @@ fail_point_sleep(struct fail_point *fp, /* convert from millisecs to ticks, rounding up */ int timo = ((msecs * hz) + 999) / 1000; - if (timo) { + if (timo > 0) { if (fp->fp_sleep_fn == NULL) { msleep(fp, &g_fp_mtx, PWAIT, "failpt", timo); } else { @@ -191,19 +197,13 @@ fail_point_init(struct fail_point *fp, c void fail_point_destroy(struct fail_point *fp) { - struct fail_point_entry *ent; - if (fp->fp_flags & FAIL_POINT_DYNAMIC_NAME && fp->fp_name != NULL) { - fp_free((void *)(intptr_t)fp->fp_name); + if ((fp->fp_flags & FAIL_POINT_DYNAMIC_NAME) != 0) { + fp_free(__DECONST(void *, fp->fp_name)); fp->fp_name = NULL; } fp->fp_flags = 0; - - while (!TAILQ_EMPTY(&fp->fp_entries)) { - ent = TAILQ_FIRST(&fp->fp_entries); - TAILQ_REMOVE(&fp->fp_entries, ent, fe_entries); - fp_free(ent); - } + clear_entries(&fp->fp_entries); } /** @@ -222,16 +222,14 @@ fail_point_eval_nontrivial(struct fail_p FP_LOCK(); - ent = TAILQ_FIRST(&fp->fp_entries); - while (ent) { + TAILQ_FOREACH_SAFE(ent, &fp->fp_entries, fe_entries, next) { int cont = 0; /* don't continue by default */ - next = TAILQ_NEXT(ent, fe_entries); if (ent->fe_prob < PROB_MAX && - ent->fe_prob < random() % PROB_MAX) { - cont = 1; - goto loop_end; - } + ent->fe_prob < random() % PROB_MAX) + continue; + if (ent->fe_pid != NO_PID && ent->fe_pid != curproc->p_pid) + continue; switch (ent->fe_type) { case FAIL_POINT_PANIC: @@ -239,13 +237,14 @@ fail_point_eval_nontrivial(struct fail_p /* NOTREACHED */ case FAIL_POINT_RETURN: - if (return_value) + if (return_value != NULL) *return_value = ent->fe_arg; ret = FAIL_POINT_RC_RETURN; break; case FAIL_POINT_BREAK: - printf("fail point %s breaking to debugger\n", fp->fp_name); + printf("fail point %s breaking to debugger\n", + fp->fp_name); breakpoint(); break; @@ -273,13 +272,9 @@ fail_point_eval_nontrivial(struct fail_p break; } - if (ent && ent->fe_count > 0 && --ent->fe_count == 0) + if (ent != NULL && ent->fe_count > 0 && --ent->fe_count == 0) free_entry(&fp->fp_entries, ent); - -loop_end: - if (cont) - ent = next; - else + if (cont == 0) break; } @@ -290,7 +285,7 @@ loop_end: FP_UNLOCK(); - return ret; + return (ret); } /** @@ -320,9 +315,11 @@ fail_point_get(struct fail_point *fp, st } if (ent->fe_count > 0) sbuf_printf(sb, "%d*", ent->fe_count); - sbuf_printf(sb, "%s", fail_type_strings[ent->fe_type]); + sbuf_printf(sb, "%s", fail_type_strings[ent->fe_type].name); if (ent->fe_arg) sbuf_printf(sb, "(%d)", ent->fe_arg); + if (ent->fe_pid != NO_PID) + sbuf_printf(sb, "[pid %d]", ent->fe_pid); if (TAILQ_NEXT(ent, fe_entries)) sbuf_printf(sb, "->"); } @@ -380,7 +377,7 @@ fail_point_set(struct fail_point *fp, ch fp->fp_name, fp->fp_location, buf); #endif /* IWARNING */ - return error; + return (error); } #define MAX_FAIL_POINT_BUF 1023 @@ -422,9 +419,8 @@ fail_point_sysctl(SYSCTL_HANDLER_ARGS) } out: - if (buf) - fp_free(buf); - return error; + fp_free(buf); + return (error); } /** @@ -437,12 +433,17 @@ parse_fail_point(struct fail_point_entri /* :: * ( "->" )* */ - if (!(p = parse_term(ents, p))) - return 0; - while (*p) - if (p[0] != '-' || p[1] != '>' || !(p = parse_term(ents, p+2))) - return 0; - return p; + p = parse_term(ents, p); + if (p == NULL) + return (NULL); + while (*p != '\0') { + if (p[0] != '-' || p[1] != '>') + return (NULL); + p = parse_term(ents, p + 2); + if (p == NULL) + return (NULL); + } + return (p); } /** @@ -455,6 +456,7 @@ parse_term(struct fail_point_entries *en ent = fp_malloc(sizeof *ent, M_WAITOK | M_ZERO); ent->fe_prob = PROB_MAX; + ent->fe_pid = NO_PID; TAILQ_INSERT_TAIL(ents, ent, fe_entries); /* @@ -462,14 +464,16 @@ parse_term(struct fail_point_entries *en * ( ( "%") | ( "*" ) )* * * [ "(" ")" ] + * [ "[pid " "]" ] */ /* ( ( "%") | ( "*" ) )* */ - while (('0' <= *p && *p <= '9') || *p == '.') { + while (isdigit(*p) || *p == '.') { int units, decimal; - if (!(p = parse_number(&units, &decimal, p))) - return 0; + p = parse_number(&units, &decimal, p); + if (p == NULL) + return (NULL); if (*p == '%') { if (units > 100) /* prevent overflow early */ @@ -477,37 +481,44 @@ parse_term(struct fail_point_entries *en ent->fe_prob = units * (PROB_MAX / 100) + decimal; if (ent->fe_prob > PROB_MAX) ent->fe_prob = PROB_MAX; - } else if (*p == '*') { if (!units || decimal) - return 0; + return (NULL); ent->fe_count = units;; - - } else { - return 0; - } - + } else + return (NULL); p++; } /* */ - if (!(p = parse_type(ent, p))) - return 0; + p = parse_type(ent, p); + if (p == NULL) + return (NULL); if (*p == '\0') - return p; + return (p); /* [ "(" ")" ] */ if (*p != '(') return p; p++; - if (('0' <= *p && *p <= '9') || *p == '-') - ent->fe_arg = strtol(p, &p, 0); - else - return 0; + if (!isdigit(*p) && *p != '-') + return (NULL); + ent->fe_arg = strtol(p, &p, 0); if (*p++ != ')') - return 0; + return (NULL); + + /* [ "[pid " "]" ] */ +#define PID_STRING "[pid " + if (strncmp(p, PID_STRING, sizeof(PID_STRING) - 1) != 0) + return (p); + p += sizeof(PID_STRING) - 1; + if (!isdigit(*p)) + return (NULL); + ent->fe_pid = strtol(p, &p, 0); + if (*p++ != ']') + return (NULL); - return p; + return (p); } /** @@ -528,14 +539,14 @@ parse_number(int *out_units, int *out_de old_p = p; *out_units = strtol(p, &p, 10);; if (p == old_p && *p != '.') - return 0; + return (NULL); /* fractional part */ *out_decimal = 0; if (*p == '.') { int digits = 0; p++; - while ('0' <= *p && *p <= '9') { + while (isdigit(*p)) { int digit = *p - '0'; if (digits < PROB_DIGITS - 2) *out_decimal = *out_decimal * 10 + digit; @@ -545,12 +556,12 @@ parse_number(int *out_units, int *out_de p++; } if (!digits) /* need at least one digit after '.' */ - return 0; + return (NULL); while (digits++ < PROB_DIGITS - 2) /* add implicit zeros */ *out_decimal *= 10; } - return p; /* success */ + return (p); /* success */ } /** @@ -560,21 +571,16 @@ static char * parse_type(struct fail_point_entry *ent, char *beg) { enum fail_point_t type; - char *end = beg; - while ('a' <= *end && *end <= 'z') - end++; - if (beg == end) - return 0; - for (type = FAIL_POINT_OFF; type != FAIL_POINT_INVALID; type++) { - const char *p = fail_type_strings[type]; - const char *q = beg; - while (q < end && *p++ == *q++); - if (q == end && *p == '\0') { + int len; + + for (type = FAIL_POINT_OFF; type < FAIL_POINT_NUMTYPES; type++) { + len = fail_type_strings[type].nmlen; + if (strncmp(fail_type_strings[type].name, beg, len) == 0) { ent->fe_type = type; - return end; + return (beg + len); } } - return 0; + return (NULL); } /** @@ -595,6 +601,7 @@ static void clear_entries(struct fail_point_entries *ents) { struct fail_point_entry *ent, *ent_next; + TAILQ_FOREACH_SAFE(ent, ents, fe_entries, ent_next) fp_free(ent); TAILQ_INIT(ents); From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 18:25:25 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C58EE106566B; Mon, 18 Jul 2011 18:25:25 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B3D1E8FC15; Mon, 18 Jul 2011 18:25:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IIPPdW034154; Mon, 18 Jul 2011 18:25:25 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IIPP8B034152; Mon, 18 Jul 2011 18:25:25 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201107181825.p6IIPP8B034152@svn.freebsd.org> From: John Baldwin Date: Mon, 18 Jul 2011 18:25:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224192 - stable/8/sys/dev/uart X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 18:25:25 -0000 Author: jhb Date: Mon Jul 18 18:25:25 2011 New Revision: 224192 URL: http://svn.freebsd.org/changeset/base/224192 Log: MFC 223874: Add device ID for the Davicom 56PDV PCI Modem. Modified: stable/8/sys/dev/uart/uart_bus_pci.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/uart/uart_bus_pci.c ============================================================================== --- stable/8/sys/dev/uart/uart_bus_pci.c Mon Jul 18 18:09:10 2011 (r224191) +++ stable/8/sys/dev/uart/uart_bus_pci.c Mon Jul 18 18:25:25 2011 (r224192) @@ -83,6 +83,7 @@ static struct pci_id pci_ns8250_ids[] = { 0x103c, 0x1290, 0xffff, 0, "HP Auxiliary Diva Serial Port", 0x18 }, { 0x11c1, 0x0480, 0xffff, 0, "Agere Systems Venus Modem (V90, 56KFlex)", 0x14 }, { 0x115d, 0x0103, 0xffff, 0, "Xircom Cardbus Ethernet + 56k Modem", 0x10 }, +{ 0x1282, 0x6585, 0xffff, 0, "Davicom 56PDV PCI Modem", 0x10 }, { 0x12b9, 0x1008, 0xffff, 0, "3Com 56K FaxModem Model 5610", 0x10 }, { 0x131f, 0x1000, 0xffff, 0, "Siig CyberSerial (1-port) 16550", 0x18 }, { 0x131f, 0x1001, 0xffff, 0, "Siig CyberSerial (1-port) 16650", 0x18 }, From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 18:29:39 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7D02E106564A; Mon, 18 Jul 2011 18:29:39 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6BA518FC14; Mon, 18 Jul 2011 18:29:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IITdaj034311; Mon, 18 Jul 2011 18:29:39 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IITdlI034309; Mon, 18 Jul 2011 18:29:39 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201107181829.p6IITdlI034309@svn.freebsd.org> From: John Baldwin Date: Mon, 18 Jul 2011 18:29:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224193 - stable/8/sys/dev/pci X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 18:29:39 -0000 Author: jhb Date: Mon Jul 18 18:29:39 2011 New Revision: 224193 URL: http://svn.freebsd.org/changeset/base/224193 Log: MFC 223952: Properly align the end of a candidate back region based on the window's granularity when growing a PCI-PCI window up. Modified: stable/8/sys/dev/pci/pci_pci.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/pci/pci_pci.c ============================================================================== --- stable/8/sys/dev/pci/pci_pci.c Mon Jul 18 18:25:25 2011 (r224192) +++ stable/8/sys/dev/pci/pci_pci.c Mon Jul 18 18:29:39 2011 (r224193) @@ -822,7 +822,7 @@ pcib_grow_window(struct pcib_softc *sc, if (bootverbose) printf("\tback candidate range: %#lx-%#lx\n", start_free, back); - back = roundup2(back + 1, w->step) - 1; + back = roundup2(back + 1, 1ul << w->step) - 1; back -= rman_get_end(w->res); } else back = 0; From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 18:37:16 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0EE001065749; Mon, 18 Jul 2011 18:37:16 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F08078FC15; Mon, 18 Jul 2011 18:37:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IIbFQe034618; Mon, 18 Jul 2011 18:37:15 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IIbFHm034612; Mon, 18 Jul 2011 18:37:15 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201107181837.p6IIbFHm034612@svn.freebsd.org> From: John Baldwin Date: Mon, 18 Jul 2011 18:37:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224194 - in stable/7: contrib/top usr.bin/top X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 18:37:16 -0000 Author: jhb Date: Mon Jul 18 18:37:15 2011 New Revision: 224194 URL: http://svn.freebsd.org/changeset/base/224194 Log: MFC 222530,223841: Add a new option to toggle the display of the system idle process (per-CPU idle threads). The process is displayed by default (subject to whether or not system processes are displayed) to preserve existing behavior. The system idle process can be hidden via the '-z' command line argument or the 'z' key while top is running. When it is hidden, top more closely matches the behavior of FreeBSD <= 4.x where idle time was not accounted to any process. Modified: stable/7/contrib/top/commands.c stable/7/contrib/top/machine.h stable/7/contrib/top/top.X stable/7/contrib/top/top.c stable/7/usr.bin/top/machine.c Directory Properties: stable/7/contrib/top/ (props changed) stable/7/usr.bin/top/ (props changed) Modified: stable/7/contrib/top/commands.c ============================================================================== --- stable/7/contrib/top/commands.c Mon Jul 18 18:29:39 2011 (r224193) +++ stable/7/contrib/top/commands.c Mon Jul 18 18:37:15 2011 (r224194) @@ -94,6 +94,7 @@ S - toggle the displaying of syste a - toggle the displaying of process titles\n\ t - toggle the display of this process\n\ u - display processes for only one user (+ selects all users)\n\ +z - toggle the displaying of the system idle process\n\ \n\ \n", stdout); } Modified: stable/7/contrib/top/machine.h ============================================================================== --- stable/7/contrib/top/machine.h Mon Jul 18 18:29:39 2011 (r224193) +++ stable/7/contrib/top/machine.h Mon Jul 18 18:37:15 2011 (r224194) @@ -65,6 +65,7 @@ struct process_select int uid; /* only this uid (unless uid == -1) */ int wcpu; /* show weighted cpu */ int jail; /* show jail ID */ + int kidle; /* show per-CPU idle threads */ char *command; /* only this command (unless == NULL) */ }; Modified: stable/7/contrib/top/top.X ============================================================================== --- stable/7/contrib/top/top.X Mon Jul 18 18:29:39 2011 (r224193) +++ stable/7/contrib/top/top.X Mon Jul 18 18:37:15 2011 (r224194) @@ -10,7 +10,7 @@ top \- display and update information ab .SH SYNOPSIS .B top [ -.B \-abCHIijnPqStuv +.B \-abCHIijnPqStuvz ] [ .BI \-d count ] [ @@ -146,6 +146,9 @@ Write version number information to stde No other processing takes place when this option is used. To see current revision information while top is running, use the help command \*(lq?\*(rq. .TP +.B \-z +Do not display the system idle process. +.TP .BI \-d count Show only .I count @@ -204,8 +207,9 @@ The options .BR \-j , .BR \-S , .BR \-t , +.BR \-u , and -.B \-u +.B \-z are actually toggles. A second specification of any of these options will negate the first. Thus a user who has the environment variable .B TOP @@ -314,6 +318,9 @@ ID. Toggle the display of the .I top process. +.TP +.B z +Toggle the display of the system idle process. .SH "THE DISPLAY" The actual display varies depending on the specific variant of Unix that the machine is running. This description may not exactly match Modified: stable/7/contrib/top/top.c ============================================================================== --- stable/7/contrib/top/top.c Mon Jul 18 18:29:39 2011 (r224193) +++ stable/7/contrib/top/top.c Mon Jul 18 18:37:15 2011 (r224194) @@ -196,9 +196,9 @@ char *argv[]; fd_set readfds; #ifdef ORDER - static char command_chars[] = "\f qh?en#sdkriIutHmSCajo"; + static char command_chars[] = "\f qh?en#sdkriIutHmSCajzo"; #else - static char command_chars[] = "\f qh?en#sdkriIutHmSCaj"; + static char command_chars[] = "\f qh?en#sdkriIutHmSCajz"; #endif /* these defines enumerate the "strchr"s of the commands in command_chars */ #define CMD_redraw 0 @@ -224,8 +224,9 @@ char *argv[]; #define CMD_wcputog 19 #define CMD_showargs 20 #define CMD_jidtog 21 +#define CMD_kidletog 22 #ifdef ORDER -#define CMD_order 22 +#define CMD_order 23 #endif /* set the buffer for stdout */ @@ -258,6 +259,7 @@ char *argv[]; ps.thread = No; ps.wcpu = 1; ps.jail = No; + ps.kidle = Yes; ps.command = NULL; /* get preset options from the environment */ @@ -283,7 +285,7 @@ char *argv[]; optind = 1; } - while ((i = getopt(ac, av, "CSIHPabijnquvs:d:U:m:o:t")) != EOF) + while ((i = getopt(ac, av, "CSIHPabijnquvzs:d:U:m:o:t")) != EOF) { switch(i) { @@ -412,10 +414,14 @@ char *argv[]; pcpu_stats = Yes; break; + case 'z': + ps.kidle = !ps.kidle; + break; + default: fprintf(stderr, "Top version %s\n" -"Usage: %s [-abCHIijnPqStuv] [-d count] [-m io | cpu] [-o field] [-s time]\n" +"Usage: %s [-abCHIijnPqStuvz] [-d count] [-m io | cpu] [-o field] [-s time]\n" " [-U username] [number]\n", version_string(), myname); exit(1); @@ -1075,7 +1081,13 @@ restart: reset_display(); putchar('\r'); break; - + case CMD_kidletog: + ps.kidle = !ps.kidle; + new_message(MT_standout | MT_delayed, + " %sisplaying system idle process.", + ps.kidle ? "D" : "Not d"); + putchar('\r'); + break; default: new_message(MT_standout, " BAD CASE IN SWITCH!"); putchar('\r'); Modified: stable/7/usr.bin/top/machine.c ============================================================================== --- stable/7/usr.bin/top/machine.c Mon Jul 18 18:29:39 2011 (r224193) +++ stable/7/usr.bin/top/machine.c Mon Jul 18 18:37:15 2011 (r224194) @@ -624,6 +624,7 @@ get_process_info(struct system_info *si, int show_system; int show_uid; int show_command; + int show_kidle; /* * Save the previous process info. @@ -664,6 +665,7 @@ get_process_info(struct system_info *si, show_system = sel->system; show_uid = sel->uid != -1; show_command = sel->command != NULL; + show_kidle = sel->kidle; /* count up process states and get pointers to interesting procs */ total_procs = 0; @@ -699,6 +701,10 @@ get_process_info(struct system_info *si, /* skip zombies */ continue; + if (!show_kidle && pp->ki_tdflags & TDF_IDLETD) + /* skip kernel idle process */ + continue; + if (displaymode == DISP_CPU && !show_idle && (pp->ki_pctcpu == 0 || pp->ki_stat == SSTOP || pp->ki_stat == SIDL)) From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 19:23:50 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 69F7C106564A; Mon, 18 Jul 2011 19:23:50 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 596728FC17; Mon, 18 Jul 2011 19:23:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IJNo9E036045; Mon, 18 Jul 2011 19:23:50 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IJNoNS036043; Mon, 18 Jul 2011 19:23:50 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201107181923.p6IJNoNS036043@svn.freebsd.org> From: Xin LI Date: Mon, 18 Jul 2011 19:23:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224196 - head/lib/libz X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 19:23:50 -0000 Author: delphij Date: Mon Jul 18 19:23:50 2011 New Revision: 224196 URL: http://svn.freebsd.org/changeset/base/224196 Log: Disable gvmat64.S, the assembler version of longest_match for now. PR: kern/154073 MFC after: 3 days Approved by: re (kib) Modified: head/lib/libz/Makefile Modified: head/lib/libz/Makefile ============================================================================== --- head/lib/libz/Makefile Mon Jul 18 18:56:50 2011 (r224195) +++ head/lib/libz/Makefile Mon Jul 18 19:23:50 2011 (r224196) @@ -42,16 +42,16 @@ CFLAGS+= -DASMV -DNO_UNDERLINE ACFLAGS+= -Wa,--noexecstack .endif -.if ${MACHINE_ARCH} == "amd64" -.PATH: ${.CURDIR}/contrib/gcc_gvmat64 -SRCS+= gvmat64.S -CFLAGS+= -DASMV -DNO_UNDERLINE -ACFLAGS+= -Wa,--noexecstack -.if ${CC:T:Mclang} == "clang" -# XXX: clang integrated-as doesn't grok .intel_syntax directives yet -ACFLAGS+= ${.IMPSRC:T:Mgvmat64.S:C/^.+$/-no-integrated-as/} -.endif -.endif +#.if ${MACHINE_ARCH} == "amd64" +#.PATH: ${.CURDIR}/contrib/gcc_gvmat64 +#SRCS+= gvmat64.S +#CFLAGS+= -DASMV -DNO_UNDERLINE +#ACFLAGS+= -Wa,--noexecstack +#.if ${CC:T:Mclang} == "clang" +## XXX: clang integrated-as doesn't grok .intel_syntax directives yet +#ACFLAGS+= ${.IMPSRC:T:Mgvmat64.S:C/^.+$/-no-integrated-as/} +#.endif +#.endif VERSION_DEF= ${.CURDIR}/Versions.def SYMBOL_MAPS= ${.CURDIR}/Symbol.map From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 19:42:18 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A60A8106566C; Mon, 18 Jul 2011 19:42:18 +0000 (UTC) (envelope-from pluknet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 95BEC8FC14; Mon, 18 Jul 2011 19:42:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IJgIha036675; Mon, 18 Jul 2011 19:42:18 GMT (envelope-from pluknet@svn.freebsd.org) Received: (from pluknet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IJgIqe036673; Mon, 18 Jul 2011 19:42:18 GMT (envelope-from pluknet@svn.freebsd.org) Message-Id: <201107181942.p6IJgIqe036673@svn.freebsd.org> From: Sergey Kandaurov Date: Mon, 18 Jul 2011 19:42:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224198 - head/usr.bin/vmstat X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 19:42:18 -0000 Author: pluknet Date: Mon Jul 18 19:42:18 2011 New Revision: 224198 URL: http://svn.freebsd.org/changeset/base/224198 Log: sintrcnt/sintrnames is the address of the size, not the actual size. Use them appropriately to fetch the actual size. That fixes vmstat -i with kvm backend. Submitted by: peter Approved by: re (kib) Modified: head/usr.bin/vmstat/vmstat.c Modified: head/usr.bin/vmstat/vmstat.c ============================================================================== --- head/usr.bin/vmstat/vmstat.c Mon Jul 18 19:26:16 2011 (r224197) +++ head/usr.bin/vmstat/vmstat.c Mon Jul 18 19:42:18 2011 (r224198) @@ -1153,8 +1153,8 @@ dointr(void) uptime = getuptime(); if (kd != NULL) { - intrcntlen = namelist[X_SINTRCNT].n_value; - inamlen = namelist[X_SINTRNAMES].n_value; + kread(X_SINTRCNT, &intrcntlen, sizeof(intrcntlen)); + kread(X_SINTRNAMES, &inamlen, sizeof(inamlen)); if ((intrcnt = malloc(intrcntlen)) == NULL || (intrname = malloc(inamlen)) == NULL) err(1, "malloc()"); From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 20:04:57 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AD6CE106566B; Mon, 18 Jul 2011 20:04:57 +0000 (UTC) (envelope-from marcel@xcllnt.net) Received: from mail.xcllnt.net (mail.xcllnt.net [70.36.220.4]) by mx1.freebsd.org (Postfix) with ESMTP id 6570E8FC14; Mon, 18 Jul 2011 20:04:57 +0000 (UTC) Received: from sa-nc-spg-102.static.jnpr.net (natint3.juniper.net [66.129.224.36]) (authenticated bits=0) by mail.xcllnt.net (8.14.5/8.14.5) with ESMTP id p6IK4n5a086435 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 18 Jul 2011 13:04:56 -0700 (PDT) (envelope-from marcel@xcllnt.net) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Marcel Moolenaar In-Reply-To: <201107181405.p6IE5F6t026025@svn.freebsd.org> Date: Mon, 18 Jul 2011 13:04:44 -0700 Content-Transfer-Encoding: 7bit Message-Id: <0F23C64B-26BA-4E29-83DE-D54EE330A3F3@xcllnt.net> References: <201107181405.p6IE5F6t026025@svn.freebsd.org> To: John Baldwin X-Mailer: Apple Mail (2.1084) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r224185 - head/sys/ia64/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 20:04:57 -0000 On Jul 18, 2011, at 7:05 AM, John Baldwin wrote: > Author: jhb > Date: Mon Jul 18 14:05:14 2011 > New Revision: 224185 > URL: http://svn.freebsd.org/changeset/base/224185 > > Log: > Enable NEW_PCIB by default on ia64. Thanks John! -- Marcel Moolenaar marcel@xcllnt.net From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 20:06:15 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DAD881065677; Mon, 18 Jul 2011 20:06:15 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C86768FC12; Mon, 18 Jul 2011 20:06:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IK6Ff1037413; Mon, 18 Jul 2011 20:06:15 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IK6FCJ037403; Mon, 18 Jul 2011 20:06:15 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201107182006.p6IK6FCJ037403@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Mon, 18 Jul 2011 20:06:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224199 - in head: bin/ps lib/libkvm sys/compat/freebsd32 sys/kern sys/sys usr.bin/procstat usr.bin/top X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 20:06:16 -0000 Author: bz Date: Mon Jul 18 20:06:15 2011 New Revision: 224199 URL: http://svn.freebsd.org/changeset/base/224199 Log: Rename ki_ocomm to ki_tdname and OCOMMLEN to TDNAMLEN. Provide backward compatibility defines under BURN_BRIDGES. Suggested by: jhb Reviewed by: emaste Sponsored by: Sandvine Incorporated Approved by: re (kib) Modified: head/bin/ps/keyword.c head/bin/ps/print.c head/lib/libkvm/kvm_proc.c head/sys/compat/freebsd32/freebsd32.h head/sys/kern/kern_proc.c head/sys/sys/user.h head/usr.bin/procstat/procstat_kstack.c head/usr.bin/procstat/procstat_threads.c head/usr.bin/top/machine.c Modified: head/bin/ps/keyword.c ============================================================================== --- head/bin/ps/keyword.c Mon Jul 18 19:42:18 2011 (r224198) +++ head/bin/ps/keyword.c Mon Jul 18 20:06:15 2011 (r224199) @@ -82,7 +82,7 @@ static VAR var[] = { {"class", "CLASS", NULL, LJUST, loginclass, s_loginclass, MAXLOGNAME-1, 0, CHAR, NULL, 0}, {"comm", "COMMAND", NULL, LJUST, ucomm, s_comm, - COMMLEN + OCOMMLEN + 1, 0, CHAR, NULL, 0}, + COMMLEN + TDNAMLEN + 1, 0, CHAR, NULL, 0}, {"command", "COMMAND", NULL, COMM|LJUST|USER, command, NULL, 16, 0, CHAR, NULL, 0}, {"cpu", "CPU", NULL, 0, kvar, NULL, 3, KOFF(ki_estcpu), UINT, "d", @@ -212,7 +212,7 @@ static VAR var[] = { {"tt", "TT ", NULL, 0, tname, NULL, 4, 0, CHAR, NULL, 0}, {"tty", "TTY", NULL, LJUST, longtname, NULL, 8, 0, CHAR, NULL, 0}, {"ucomm", "UCOMM", NULL, LJUST, ucomm, s_comm, - COMMLEN + OCOMMLEN + 1, 0, CHAR, NULL, 0}, + COMMLEN + TDNAMLEN + 1, 0, CHAR, NULL, 0}, {"uid", "UID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_uid), UINT, UIDFMT, 0}, {"upr", "UPR", NULL, 0, upr, NULL, 3, 0, CHAR, NULL, 0}, Modified: head/bin/ps/print.c ============================================================================== --- head/bin/ps/print.c Mon Jul 18 19:42:18 2011 (r224198) +++ head/bin/ps/print.c Mon Jul 18 20:06:15 2011 (r224199) @@ -136,7 +136,7 @@ command(KINFO *k, VARENT *ve) (void)printf("%s", k->ki_d.prefix); (void)printf("%s", k->ki_p->ki_comm); if (showthreads && k->ki_p->ki_numthreads > 1) - (void)printf("/%s", k->ki_p->ki_ocomm); + (void)printf("/%s", k->ki_p->ki_tdname); } else (void)printf("%-*s", v->width, k->ki_p->ki_comm); return; @@ -190,7 +190,7 @@ command(KINFO *k, VARENT *ve) void ucomm(KINFO *k, VARENT *ve) { - char tmpbuff[COMMLEN + OCOMMLEN + 2]; + char tmpbuff[COMMLEN + TDNAMLEN + 2]; VAR *v; v = ve->var; @@ -199,12 +199,12 @@ ucomm(KINFO *k, VARENT *ve) (void)printf("%s", k->ki_d.prefix); (void)printf("%s", k->ki_p->ki_comm); if (showthreads && k->ki_p->ki_numthreads > 1) - printf("/%s", k->ki_p->ki_ocomm); + printf("/%s", k->ki_p->ki_tdname); } else { bzero(tmpbuff, sizeof(tmpbuff)); if (showthreads && k->ki_p->ki_numthreads > 1) sprintf(tmpbuff, "%s/%s", k->ki_p->ki_comm, - k->ki_p->ki_ocomm); + k->ki_p->ki_tdname); else sprintf(tmpbuff, "%s", k->ki_p->ki_comm); (void)printf("%-*s", v->width, tmpbuff); @@ -218,7 +218,7 @@ tdnam(KINFO *k, VARENT *ve) v = ve->var; if (showthreads && k->ki_p->ki_numthreads > 1) - (void)printf("%-*s", v->width, k->ki_p->ki_ocomm); + (void)printf("%-*s", v->width, k->ki_p->ki_tdname); else (void)printf("%-*s", v->width, " "); } @@ -943,12 +943,12 @@ loginclass(KINFO *k, VARENT *ve) int s_comm(KINFO *k) { - char tmpbuff[COMMLEN + OCOMMLEN + 2]; + char tmpbuff[COMMLEN + TDNAMLEN + 2]; bzero(tmpbuff, sizeof(tmpbuff)); if (showthreads && k->ki_p->ki_numthreads > 1) sprintf(tmpbuff, "%s/%s", k->ki_p->ki_comm, - k->ki_p->ki_ocomm); + k->ki_p->ki_tdname); else sprintf(tmpbuff, "%s", k->ki_p->ki_comm); return (strlen(tmpbuff)); Modified: head/lib/libkvm/kvm_proc.c ============================================================================== --- head/lib/libkvm/kvm_proc.c Mon Jul 18 19:42:18 2011 (r224198) +++ head/lib/libkvm/kvm_proc.c Mon Jul 18 20:06:15 2011 (r224199) @@ -426,10 +426,10 @@ nopgrp: kp->ki_lastcpu = mtd.td_lastcpu; kp->ki_wchan = mtd.td_wchan; if (mtd.td_name[0] != 0) - strlcpy(kp->ki_ocomm, mtd.td_name, MAXCOMLEN); + strlcpy(kp->ki_tdname, mtd.td_name, MAXCOMLEN); kp->ki_oncpu = mtd.td_oncpu; if (mtd.td_name[0] != '\0') - strlcpy(kp->ki_ocomm, mtd.td_name, sizeof(kp->ki_ocomm)); + strlcpy(kp->ki_tdname, mtd.td_name, sizeof(kp->ki_tdname)); kp->ki_pctcpu = 0; kp->ki_rqindex = 0; } else { Modified: head/sys/compat/freebsd32/freebsd32.h ============================================================================== --- head/sys/compat/freebsd32/freebsd32.h Mon Jul 18 19:42:18 2011 (r224198) +++ head/sys/compat/freebsd32/freebsd32.h Mon Jul 18 20:06:15 2011 (r224199) @@ -310,7 +310,7 @@ struct kinfo_proc32 { char ki_rqindex; u_char ki_oncpu; u_char ki_lastcpu; - char ki_ocomm[OCOMMLEN+1]; + char ki_tdname[TDNAMLEN+1]; char ki_wmesg[WMESGLEN+1]; char ki_login[LOGNAMELEN+1]; char ki_lockname[LOCKNAMELEN+1]; Modified: head/sys/kern/kern_proc.c ============================================================================== --- head/sys/kern/kern_proc.c Mon Jul 18 19:42:18 2011 (r224198) +++ head/sys/kern/kern_proc.c Mon Jul 18 20:06:15 2011 (r224199) @@ -855,7 +855,7 @@ fill_kinfo_thread(struct thread *td, str strlcpy(kp->ki_wmesg, td->td_wmesg, sizeof(kp->ki_wmesg)); else bzero(kp->ki_wmesg, sizeof(kp->ki_wmesg)); - strlcpy(kp->ki_ocomm, td->td_name, sizeof(kp->ki_ocomm)); + strlcpy(kp->ki_tdname, td->td_name, sizeof(kp->ki_tdname)); if (TD_ON_LOCK(td)) { kp->ki_kiflag |= KI_LOCKBLOCK; strlcpy(kp->ki_lockname, td->td_lockname, @@ -1059,7 +1059,7 @@ freebsd32_kinfo_proc_out(const struct ki CP(*ki, *ki32, ki_rqindex); CP(*ki, *ki32, ki_oncpu); CP(*ki, *ki32, ki_lastcpu); - bcopy(ki->ki_ocomm, ki32->ki_ocomm, OCOMMLEN + 1); + bcopy(ki->ki_tdname, ki32->ki_tdname, TDNAMLEN + 1); bcopy(ki->ki_wmesg, ki32->ki_wmesg, WMESGLEN + 1); bcopy(ki->ki_login, ki32->ki_login, LOGNAMELEN + 1); bcopy(ki->ki_lockname, ki32->ki_lockname, LOCKNAMELEN + 1); Modified: head/sys/sys/user.h ============================================================================== --- head/sys/sys/user.h Mon Jul 18 19:42:18 2011 (r224198) +++ head/sys/sys/user.h Mon Jul 18 20:06:15 2011 (r224199) @@ -95,13 +95,18 @@ #define WMESGLEN 8 /* size of returned wchan message */ #define LOCKNAMELEN 8 /* size of returned lock name */ -#define OCOMMLEN 16 /* size of returned thread name */ +#define TDNAMLEN 16 /* size of returned thread name */ #define COMMLEN 19 /* size of returned ki_comm name */ #define KI_EMULNAMELEN 16 /* size of returned ki_emul */ #define KI_NGROUPS 16 /* number of groups in ki_groups */ #define LOGNAMELEN 17 /* size of returned ki_login */ #define LOGINCLASSLEN 17 /* size of returned ki_loginclass */ +#ifndef BURN_BRIDGES +#define OCOMMLEN TDNAMLEN +#define ki_ocomm ki_tdname +#endif + /* Flags for the process credential. */ #define KI_CRF_CAPABILITY_MODE 0x00000001 /* @@ -167,7 +172,7 @@ struct kinfo_proc { char ki_rqindex; /* Run queue index */ u_char ki_oncpu; /* Which cpu we are on */ u_char ki_lastcpu; /* Last cpu we were on */ - char ki_ocomm[OCOMMLEN+1]; /* thread name */ + char ki_tdname[TDNAMLEN+1]; /* thread name */ char ki_wmesg[WMESGLEN+1]; /* wchan message */ char ki_login[LOGNAMELEN+1]; /* setlogin name */ char ki_lockname[LOCKNAMELEN+1]; /* lock name */ Modified: head/usr.bin/procstat/procstat_kstack.c ============================================================================== --- head/usr.bin/procstat/procstat_kstack.c Mon Jul 18 19:42:18 2011 (r224198) +++ head/usr.bin/procstat/procstat_kstack.c Mon Jul 18 20:06:15 2011 (r224199) @@ -213,9 +213,9 @@ procstat_kstack(struct kinfo_proc *kipp, printf("%5d ", kipp->ki_pid); printf("%6d ", kkstp->kkst_tid); printf("%-16s ", kipp->ki_comm); - printf("%-16s ", (strlen(kipp->ki_ocomm) && - (strcmp(kipp->ki_comm, kipp->ki_ocomm) != 0)) ? - kipp->ki_ocomm : "-"); + printf("%-16s ", (strlen(kipp->ki_tdname) && + (strcmp(kipp->ki_comm, kipp->ki_tdname) != 0)) ? + kipp->ki_tdname : "-"); switch (kkstp->kkst_state) { case KKST_STATE_RUNNING: Modified: head/usr.bin/procstat/procstat_threads.c ============================================================================== --- head/usr.bin/procstat/procstat_threads.c Mon Jul 18 19:42:18 2011 (r224198) +++ head/usr.bin/procstat/procstat_threads.c Mon Jul 18 20:06:15 2011 (r224199) @@ -86,9 +86,9 @@ procstat_threads(struct kinfo_proc *kipp printf("%6d ", kipp->ki_tid); printf("%-16s ", strlen(kipp->ki_comm) ? kipp->ki_comm : "-"); - printf("%-16s ", (strlen(kipp->ki_ocomm) && - (strcmp(kipp->ki_comm, kipp->ki_ocomm) != 0)) ? - kipp->ki_ocomm : "-"); + printf("%-16s ", (strlen(kipp->ki_tdname) && + (strcmp(kipp->ki_comm, kipp->ki_tdname) != 0)) ? + kipp->ki_tdname : "-"); if (kipp->ki_oncpu != 255) printf("%3d ", kipp->ki_oncpu); else if (kipp->ki_lastcpu != 255) Modified: head/usr.bin/top/machine.c ============================================================================== --- head/usr.bin/top/machine.c Mon Jul 18 19:42:18 2011 (r224198) +++ head/usr.bin/top/machine.c Mon Jul 18 20:06:15 2011 (r224199) @@ -833,8 +833,8 @@ format_next_process(caddr_t handle, char if (!(flags & FMT_SHOWARGS)) { if (ps.thread && pp->ki_flag & P_HADTHREADS && - pp->ki_ocomm[0]) { - snprintf(cmdbuf, cmdlengthdelta, "{%s}", pp->ki_ocomm); + pp->ki_tdname[0]) { + snprintf(cmdbuf, cmdlengthdelta, "{%s}", pp->ki_tdname); } else { snprintf(cmdbuf, cmdlengthdelta, "%s", pp->ki_comm); } @@ -844,9 +844,9 @@ format_next_process(caddr_t handle, char (args = kvm_getargv(kd, pp, cmdlengthdelta)) == NULL || !(*args)) { if (ps.thread && pp->ki_flag & P_HADTHREADS && - pp->ki_ocomm[0]) { + pp->ki_tdname[0]) { snprintf(cmdbuf, cmdlengthdelta, - "{%s}", pp->ki_ocomm); + "{%s}", pp->ki_tdname); } else { snprintf(cmdbuf, cmdlengthdelta, "[%s]", pp->ki_comm); From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 20:07:29 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 84351106567C; Mon, 18 Jul 2011 20:07:29 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 747F88FC14; Mon, 18 Jul 2011 20:07:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IK7T7t037524; Mon, 18 Jul 2011 20:07:29 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IK7Thi037522; Mon, 18 Jul 2011 20:07:29 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201107182007.p6IK7Thi037522@svn.freebsd.org> From: Dimitry Andric Date: Mon, 18 Jul 2011 20:07:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224201 - head/lib/libc/stdlib X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 20:07:29 -0000 Author: dim Date: Mon Jul 18 20:07:29 2011 New Revision: 224201 URL: http://svn.freebsd.org/changeset/base/224201 Log: Fix building of 32-bit compat libraries on amd64 with clang, and using -g, by reverting r219139. The LLVM PR referenced in that revision was fixed in the mean time, and we imported a clang snapshot soon afterwards, so the temporary workaround of disabling clang's integrated assembler is no longer needed. In this particular case, using e.g. DEBUG_FLAGS=-g causes clang to output certain directives into assembly that our version of GNU as chokes on. Reported by: dougb Approved by: re (kib) Modified: head/lib/libc/stdlib/Makefile.inc Modified: head/lib/libc/stdlib/Makefile.inc ============================================================================== --- head/lib/libc/stdlib/Makefile.inc Mon Jul 18 20:06:49 2011 (r224200) +++ head/lib/libc/stdlib/Makefile.inc Mon Jul 18 20:07:29 2011 (r224201) @@ -51,7 +51,3 @@ MLINKS+=tsearch.3 tdelete.3 tsearch.3 tf CFLAGS+= -DMALLOC_PRODUCTION .endif -.if ${CC:T:Mclang} == "clang" -# XXX: Temporary workaround for LLVM PR 9352 -CFLAGS+= ${.IMPSRC:T:Mmalloc.c:C/^.+$/-no-integrated-as/} -.endif From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 20:57:43 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A9F38106564A; Mon, 18 Jul 2011 20:57:43 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 80E518FC18; Mon, 18 Jul 2011 20:57:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IKvhhJ039027; Mon, 18 Jul 2011 20:57:43 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IKvhWi039025; Mon, 18 Jul 2011 20:57:43 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201107182057.p6IKvhWi039025@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Mon, 18 Jul 2011 20:57:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224202 - head/usr.bin/top X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 20:57:43 -0000 Author: bz Date: Mon Jul 18 20:57:43 2011 New Revision: 224202 URL: http://svn.freebsd.org/changeset/base/224202 Log: Constantly print the command name and if set include the thread name in per-thread mode. Discussed with: jhb Obtained from: Ed Maste at Sandvine Incorporated Sponsored by: Sandvine Incorporated MFC after: 1 week Approved by: re (kib) Modified: head/usr.bin/top/machine.c Modified: head/usr.bin/top/machine.c ============================================================================== --- head/usr.bin/top/machine.c Mon Jul 18 20:07:29 2011 (r224201) +++ head/usr.bin/top/machine.c Mon Jul 18 20:57:43 2011 (r224202) @@ -834,7 +834,8 @@ format_next_process(caddr_t handle, char if (!(flags & FMT_SHOWARGS)) { if (ps.thread && pp->ki_flag & P_HADTHREADS && pp->ki_tdname[0]) { - snprintf(cmdbuf, cmdlengthdelta, "{%s}", pp->ki_tdname); + snprintf(cmdbuf, cmdlengthdelta, "%s{%s}", pp->ki_comm, + pp->ki_tdname); } else { snprintf(cmdbuf, cmdlengthdelta, "%s", pp->ki_comm); } @@ -846,7 +847,7 @@ format_next_process(caddr_t handle, char if (ps.thread && pp->ki_flag & P_HADTHREADS && pp->ki_tdname[0]) { snprintf(cmdbuf, cmdlengthdelta, - "{%s}", pp->ki_tdname); + "[%s{%s}]", pp->ki_comm, pp->ki_tdname); } else { snprintf(cmdbuf, cmdlengthdelta, "[%s]", pp->ki_comm); @@ -890,12 +891,23 @@ format_next_process(caddr_t handle, char dst--; *dst = '\0'; - if (strcmp(cmd, pp->ki_comm) != 0 ) - snprintf(cmdbuf, cmdlengthdelta, - "%s (%s)",argbuf, pp->ki_comm); - else - strlcpy(cmdbuf, argbuf, cmdlengthdelta); - + if (strcmp(cmd, pp->ki_comm) != 0 ) { + if (ps.thread && pp->ki_flag & P_HADTHREADS && + pp->ki_tdname[0]) + snprintf(cmdbuf, cmdlengthdelta, + "%s (%s){%s}", argbuf, pp->ki_comm, + pp->ki_tdname); + else + snprintf(cmdbuf, cmdlengthdelta, + "%s (%s)", argbuf, pp->ki_comm); + } else { + if (ps.thread && pp->ki_flag & P_HADTHREADS && + pp->ki_tdname[0]) + snprintf(cmdbuf, cmdlengthdelta, + "%s{%s}", argbuf, pp->ki_tdname); + else + strlcpy(cmdbuf, argbuf, cmdlengthdelta); + } free(argbuf); } } From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 21:04:35 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 910301065677; Mon, 18 Jul 2011 21:04:35 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7F0968FC13; Mon, 18 Jul 2011 21:04:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IL4Z3Y039267; Mon, 18 Jul 2011 21:04:35 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IL4ZQU039265; Mon, 18 Jul 2011 21:04:35 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201107182104.p6IL4ZQU039265@svn.freebsd.org> From: Rick Macklem Date: Mon, 18 Jul 2011 21:04:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224203 - stable/8/sys/fs/nfsclient X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 21:04:35 -0000 Author: rmacklem Date: Mon Jul 18 21:04:35 2011 New Revision: 224203 URL: http://svn.freebsd.org/changeset/base/224203 Log: MFC: r223774 The algorithm used by nfscl_getopen() could have resulted in multiple instances of the same lock_owner when a process both inherited an open file descriptor plus opened the same file itself. Since some NFSv4 servers cannot handle multiple instances of the same lock_owner string, this patch changes the algorithm used by nfscl_getopen() in the new NFSv4 client to keep that from happening. The new algorithm is simpler, since there is no longer any need to ascend the process's parentage tree because all NFSv4 Closes for a file are done at VOP_INACTIVE()/VOP_RECLAIM(), making the Opens indistinct w.r.t. use with Lock Ops. This problem was discovered at the recent NFSv4 interoperability Bakeathon. Modified: stable/8/sys/fs/nfsclient/nfs_clstate.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/fs/nfsclient/nfs_clstate.c ============================================================================== --- stable/8/sys/fs/nfsclient/nfs_clstate.c Mon Jul 18 20:57:43 2011 (r224202) +++ stable/8/sys/fs/nfsclient/nfs_clstate.c Mon Jul 18 21:04:35 2011 (r224203) @@ -95,7 +95,7 @@ int nfscl_deleghighwater = NFSCLDELEGHIG static int nfscl_delegcnt = 0; static int nfscl_getopen(struct nfsclownerhead *, u_int8_t *, int, u_int8_t *, - NFSPROC_T *, u_int32_t, struct nfsclowner **, struct nfsclopen **); + u_int8_t *, u_int32_t, struct nfscllockowner **, struct nfsclopen **); static void nfscl_clrelease(struct nfsclclient *); static void nfscl_cleanclient(struct nfsclclient *); static void nfscl_expireclient(struct nfsclclient *, struct nfsmount *, @@ -521,25 +521,20 @@ nfscl_getstateid(vnode_t vp, u_int8_t *n * for a matching OpenOwner and use that. */ nfscl_filllockowner(p->td_proc, own, F_POSIX); - error = nfscl_getopen(&clp->nfsc_owner, nfhp, fhlen, NULL, p, - mode, NULL, &op); - if (error == 0) { - /* now look for a lockowner */ - LIST_FOREACH(lp, &op->nfso_lock, nfsl_list) { - if (!NFSBCMP(lp->nfsl_owner, own, - NFSV4CL_LOCKNAMELEN)) { - stateidp->seqid = - lp->nfsl_stateid.seqid; - stateidp->other[0] = - lp->nfsl_stateid.other[0]; - stateidp->other[1] = - lp->nfsl_stateid.other[1]; - stateidp->other[2] = - lp->nfsl_stateid.other[2]; - NFSUNLOCKCLSTATE(); - return (0); - } - } + lp = NULL; + error = nfscl_getopen(&clp->nfsc_owner, nfhp, fhlen, own, own, + mode, &lp, &op); + if (error == 0 && lp != NULL) { + stateidp->seqid = + lp->nfsl_stateid.seqid; + stateidp->other[0] = + lp->nfsl_stateid.other[0]; + stateidp->other[1] = + lp->nfsl_stateid.other[1]; + stateidp->other[2] = + lp->nfsl_stateid.other[2]; + NFSUNLOCKCLSTATE(); + return (0); } } if (op == NULL) { @@ -578,55 +573,74 @@ nfscl_getstateid(vnode_t vp, u_int8_t *n } /* - * Get an existing open. Search up the parentage tree for a match and - * return with the first one found. + * Search for a matching file, mode and, optionally, lockowner. */ static int nfscl_getopen(struct nfsclownerhead *ohp, u_int8_t *nfhp, int fhlen, - u_int8_t *rown, NFSPROC_T *p, u_int32_t mode, struct nfsclowner **owpp, - struct nfsclopen **opp) + u_int8_t *openown, u_int8_t *lockown, u_int32_t mode, + struct nfscllockowner **lpp, struct nfsclopen **opp) { - struct nfsclowner *owp = NULL; - struct nfsclopen *op; - NFSPROC_T *nproc; - u_int8_t own[NFSV4CL_LOCKNAMELEN], *ownp; + struct nfsclowner *owp; + struct nfsclopen *op, *rop, *rop2; + struct nfscllockowner *lp; + int keep_looping; - nproc = p; - op = NULL; - while (op == NULL && (nproc != NULL || rown != NULL)) { - if (nproc != NULL) { - nfscl_filllockowner(nproc->td_proc, own, F_POSIX); - ownp = own; - } else { - ownp = rown; - } - /* Search the client list */ - LIST_FOREACH(owp, ohp, nfsow_list) { - if (!NFSBCMP(owp->nfsow_owner, ownp, - NFSV4CL_LOCKNAMELEN)) - break; - } - if (owp != NULL) { - /* and look for the correct open */ - LIST_FOREACH(op, &owp->nfsow_open, nfso_list) { - if (op->nfso_fhlen == fhlen && - !NFSBCMP(op->nfso_fh, nfhp, fhlen) - && (op->nfso_mode & mode) == mode) { - break; + if (lpp != NULL) + *lpp = NULL; + /* + * rop will be set to the open to be returned. There are three + * variants of this, all for an open of the correct file: + * 1 - A match of lockown. + * 2 - A match of the openown, when no lockown match exists. + * 3 - A match for any open, if no openown or lockown match exists. + * Looking for #2 over #3 probably isn't necessary, but since + * RFC3530 is vague w.r.t. the relationship between openowners and + * lockowners, I think this is the safer way to go. + */ + rop = NULL; + rop2 = NULL; + keep_looping = 1; + /* Search the client list */ + owp = LIST_FIRST(ohp); + while (owp != NULL && keep_looping != 0) { + /* and look for the correct open */ + op = LIST_FIRST(&owp->nfsow_open); + while (op != NULL && keep_looping != 0) { + if (op->nfso_fhlen == fhlen && + !NFSBCMP(op->nfso_fh, nfhp, fhlen) + && (op->nfso_mode & mode) == mode) { + if (lpp != NULL) { + /* Now look for a matching lockowner. */ + LIST_FOREACH(lp, &op->nfso_lock, + nfsl_list) { + if (!NFSBCMP(lp->nfsl_owner, + lockown, + NFSV4CL_LOCKNAMELEN)) { + *lpp = lp; + rop = op; + keep_looping = 0; + break; + } + } } + if (rop == NULL && !NFSBCMP(owp->nfsow_owner, + openown, NFSV4CL_LOCKNAMELEN)) { + rop = op; + if (lpp == NULL) + keep_looping = 0; + } + if (rop2 == NULL) + rop2 = op; } + op = LIST_NEXT(op, nfso_list); } - if (rown != NULL) - break; - if (op == NULL) - nproc = nfscl_getparent(nproc); + owp = LIST_NEXT(owp, nfsow_list); } - if (op == NULL) { + if (rop == NULL) + rop = rop2; + if (rop == NULL) return (EBADF); - } - if (owpp) - *owpp = owp; - *opp = op; + *opp = rop; return (0); } @@ -891,16 +905,16 @@ nfscl_getbytelock(vnode_t vp, u_int64_t struct nfscldeleg *dp = NULL, *ldp = NULL; struct nfscllockownerhead *lhp = NULL; struct nfsnode *np; - u_int8_t own[NFSV4CL_LOCKNAMELEN], *ownp; + u_int8_t own[NFSV4CL_LOCKNAMELEN], *ownp, openown[NFSV4CL_LOCKNAMELEN]; + u_int8_t *openownp; int error = 0, ret, donelocally = 0; u_int32_t mode; - if (type == F_WRLCK) - mode = NFSV4OPEN_ACCESSWRITE; - else - mode = NFSV4OPEN_ACCESSREAD; + /* For Lock Ops, the open mode doesn't matter, so use 0 to match any. */ + mode = 0; np = VTONFS(vp); *lpp = NULL; + lp = NULL; *newonep = 0; *donelocallyp = 0; @@ -940,9 +954,12 @@ nfscl_getbytelock(vnode_t vp, u_int64_t op = NULL; if (recovery) { ownp = rownp; + openownp = ropenownp; } else { nfscl_filllockowner(id, own, flags); ownp = own; + nfscl_filllockowner(p->td_proc, openown, F_POSIX); + openownp = openown; } if (!recovery) { NFSLOCKCLSTATE(); @@ -961,13 +978,13 @@ nfscl_getbytelock(vnode_t vp, u_int64_t dp = NULL; } if (dp != NULL) { - /* Now, find the associated open to get the correct openowner */ + /* Now, find an open and maybe a lockowner. */ ret = nfscl_getopen(&dp->nfsdl_owner, np->n_fhp->nfh_fh, - np->n_fhp->nfh_len, NULL, p, mode, NULL, &op); + np->n_fhp->nfh_len, openownp, ownp, mode, NULL, &op); if (ret) ret = nfscl_getopen(&clp->nfsc_owner, - np->n_fhp->nfh_fh, np->n_fhp->nfh_len, NULL, p, - mode, NULL, &op); + np->n_fhp->nfh_fh, np->n_fhp->nfh_len, openownp, + ownp, mode, NULL, &op); if (!ret) { lhp = &dp->nfsdl_lock; TAILQ_REMOVE(&clp->nfsc_deleg, dp, nfsdl_list); @@ -980,16 +997,11 @@ nfscl_getbytelock(vnode_t vp, u_int64_t } if (!donelocally) { /* - * Get the related Open. + * Get the related Open and maybe lockowner. */ - if (recovery) - error = nfscl_getopen(&clp->nfsc_owner, - np->n_fhp->nfh_fh, np->n_fhp->nfh_len, ropenownp, - NULL, mode, NULL, &op); - else - error = nfscl_getopen(&clp->nfsc_owner, - np->n_fhp->nfh_fh, np->n_fhp->nfh_len, NULL, p, - mode, NULL, &op); + error = nfscl_getopen(&clp->nfsc_owner, + np->n_fhp->nfh_fh, np->n_fhp->nfh_len, openownp, + ownp, mode, &lp, &op); if (!error) lhp = &op->nfso_lock; } @@ -1010,10 +1022,11 @@ nfscl_getbytelock(vnode_t vp, u_int64_t /* * Ok, see if a lockowner exists and create one, as required. */ - LIST_FOREACH(lp, lhp, nfsl_list) { - if (!NFSBCMP(lp->nfsl_owner, ownp, NFSV4CL_LOCKNAMELEN)) - break; - } + if (lp == NULL) + LIST_FOREACH(lp, lhp, nfsl_list) { + if (!NFSBCMP(lp->nfsl_owner, ownp, NFSV4CL_LOCKNAMELEN)) + break; + } if (lp == NULL) { NFSBCOPY(ownp, nlp->nfsl_owner, NFSV4CL_LOCKNAMELEN); if (recovery) From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 21:08:15 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 219E21065670; Mon, 18 Jul 2011 21:08:15 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 123AC8FC15; Mon, 18 Jul 2011 21:08:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6IL8Ewu039423; Mon, 18 Jul 2011 21:08:14 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6IL8EBl039421; Mon, 18 Jul 2011 21:08:14 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201107182108.p6IL8EBl039421@svn.freebsd.org> From: John Baldwin Date: Mon, 18 Jul 2011 21:08:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224204 - head/contrib/top X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 21:08:15 -0000 Author: jhb Date: Mon Jul 18 21:08:14 2011 New Revision: 224204 URL: http://svn.freebsd.org/changeset/base/224204 Log: Tweak the interactive description of CPU vs WCPU. PR: bin/158819 Submitted by: arundel Approved by: re (kib) Modified: head/contrib/top/top.c Modified: head/contrib/top/top.c ============================================================================== --- head/contrib/top/top.c Mon Jul 18 21:04:35 2011 (r224203) +++ head/contrib/top/top.c Mon Jul 18 21:08:14 2011 (r224204) @@ -1029,8 +1029,8 @@ restart: case CMD_wcputog: ps.wcpu = !ps.wcpu; new_message(MT_standout | MT_delayed, - " Displaying %sCPU", - ps.wcpu ? "W" : ""); + " Displaying %s CPU", + ps.wcpu ? "weighted" : "raw"); header_text = format_header(uname_field); reset_display(); putchar('\r'); From owner-svn-src-all@FreeBSD.ORG Mon Jul 18 21:15:48 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2E45E106566C; Mon, 18 Jul 2011 21:15:48 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 140A38FC15; Mon, 18 Jul 2011 21:15:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6ILFlxf039708; Mon, 18 Jul 2011 21:15:47 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6ILFlGL039704; Mon, 18 Jul 2011 21:15:47 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201107182115.p6ILFlGL039704@svn.freebsd.org> From: John Baldwin Date: Mon, 18 Jul 2011 21:15:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224205 - in head: contrib/top usr.bin/top X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2011 21:15:48 -0000 Author: jhb Date: Mon Jul 18 21:15:47 2011 New Revision: 224205 URL: http://svn.freebsd.org/changeset/base/224205 Log: Rework the dynamic per-CPU stats code a bit. Always set 'statics->ncpus' to the maximum number of CPUs to ensure that lcpustates[] array is always allocated to the maximum size. Previously, if top was started without per-CPU stats it would allocate a smaller lcpustates[] array. When per-CPU stats were then enabled, it would overflow the array and trash the cpustates_columns[] array causing the CPU stats to be printed in the wrong locations. Approved by: re (kib) MFC after: 1 week Modified: head/contrib/top/display.c head/contrib/top/top.c head/usr.bin/top/machine.c Modified: head/contrib/top/display.c ============================================================================== --- head/contrib/top/display.c Mon Jul 18 21:08:14 2011 (r224204) +++ head/contrib/top/display.c Mon Jul 18 21:15:47 2011 (r224205) @@ -156,18 +156,30 @@ int display_updatecpus(statics) struct statics *statics; { + register int *lp; register int lines; register int i; /* call resize to do the dirty work */ lines = display_resize(); - num_cpus = statics->ncpus; + if (pcpu_stats) + num_cpus = statics->ncpus; + else + num_cpus = 1; cpustates_column = 5; /* CPU: */ if (num_cpus != 1) cpustates_column += 2; /* CPU 0: */ for (i = num_cpus; i > 9; i /= 10) cpustates_column++; + /* fill the "last" array with all -1s, to insure correct updating */ + lp = lcpustates; + i = num_cpustates * num_cpus; + while (--i >= 0) + { + *lp++ = -1; + } + return(lines); } @@ -197,7 +209,7 @@ struct statics *statics; num_swap = string_count(swap_names); lswap = (int *)malloc(num_swap * sizeof(int)); num_cpustates = string_count(cpustate_names); - lcpustates = (int *)malloc(num_cpustates * sizeof(int) * num_cpus); + lcpustates = (int *)malloc(num_cpustates * sizeof(int) * statics->ncpus); cpustate_columns = (int *)malloc(num_cpustates * sizeof(int)); memory_names = statics->memory_names; Modified: head/contrib/top/top.c ============================================================================== --- head/contrib/top/top.c Mon Jul 18 21:08:14 2011 (r224204) +++ head/contrib/top/top.c Mon Jul 18 21:15:47 2011 (r224205) @@ -1094,7 +1094,7 @@ restart: new_message(MT_standout | MT_delayed, " Displaying %sCPU statistics.", pcpu_stats ? "per-" : "global "); - toggle_pcpustats(&statics); + toggle_pcpustats(); max_topn = display_updatecpus(&statics); reset_display(); putchar('\r'); Modified: head/usr.bin/top/machine.c ============================================================================== --- head/usr.bin/top/machine.c Mon Jul 18 21:08:14 2011 (r224204) +++ head/usr.bin/top/machine.c Mon Jul 18 21:15:47 2011 (r224205) @@ -241,7 +241,7 @@ static void getsysctl(const char *name, static int swapmode(int *retavail, int *retfree); void -toggle_pcpustats(struct statics *statics) +toggle_pcpustats(void) { if (ncpus == 1) @@ -256,7 +256,6 @@ toggle_pcpustats(struct statics *statics y_header += ncpus - 1; /* 6 */ y_procs += ncpus - 1; /* 7 */ Header_lines += ncpus - 1; /* 7 */ - statics->ncpus = ncpus; } else { y_mem = 3; y_swap = 4; @@ -265,7 +264,6 @@ toggle_pcpustats(struct statics *statics y_header = 6; y_procs = 7; Header_lines = 7; - statics->ncpus = 1; } } @@ -356,10 +354,10 @@ machine_init(struct statics *statics, ch pcpu_cp_old = calloc(1, size); pcpu_cp_diff = calloc(1, size); pcpu_cpu_states = calloc(1, size); - statics->ncpus = 1; + statics->ncpus = ncpus; if (pcpu_stats) - toggle_pcpustats(statics); + toggle_pcpustats(); /* all done! */ return (0); From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 00:20:42 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B81751065675; Tue, 19 Jul 2011 00:20:42 +0000 (UTC) (envelope-from marcel@xcllnt.net) Received: from mail.xcllnt.net (mail.xcllnt.net [70.36.220.4]) by mx1.freebsd.org (Postfix) with ESMTP id 8204A8FC20; Tue, 19 Jul 2011 00:20:42 +0000 (UTC) Received: from sa-nc-spg-102.static.jnpr.net (natint3.juniper.net [66.129.224.36]) (authenticated bits=0) by mail.xcllnt.net (8.14.5/8.14.5) with ESMTP id p6J0KZ6X087521 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 18 Jul 2011 17:20:41 -0700 (PDT) (envelope-from marcel@xcllnt.net) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Marcel Moolenaar In-Reply-To: <201107181519.p6IFJfOK028280@svn.freebsd.org> Date: Mon, 18 Jul 2011 17:20:29 -0700 Content-Transfer-Encoding: 7bit Message-Id: <208D139E-CDC3-428D-8D5F-F772BFAF164C@xcllnt.net> References: <201107181519.p6IFJfOK028280@svn.freebsd.org> To: Attilio Rao X-Mailer: Apple Mail (2.1084) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r224187 - in head: sys/amd64/amd64 sys/arm/arm sys/arm/sa11x0 sys/i386/i386 sys/ia64/ia64 sys/kern sys/mips/mips sys/powerpc/aim sys/powerpc/booke sys/sparc64/sparc64 sys/sys usr.bin/vm... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 00:20:42 -0000 On Jul 18, 2011, at 8:19 AM, Attilio Rao wrote: > Author: attilio > Date: Mon Jul 18 15:19:40 2011 > New Revision: 224187 > URL: http://svn.freebsd.org/changeset/base/224187 > > Log: > - Remove the eintrcnt/eintrnames usage and introduce the concept of > sintrcnt/sintrnames which are symbols containing the size of the 2 > tables. > - For amd64/i386 remove the storage of intr* stuff from assembly files. > This area can be widely improved by applying the same to other > architectures and likely finding an unified approach among them and > move the whole code to be MI. More work in this area is expected to > happen fairly soon. > > No MFC is previewed for this patch. You just broke ia64 and possibly other 64-bit architectures: ".word" declares a 16-bit integral on ia64 and the size symbols are of type size_t (=64 bit). We'll be having misaligned loads (= kernel panics) and/or reading garbage... Use "data8" on ia64, as per the assembly language reference. eris% cat x.s .data foo: .word 0x11223344 foo1: .byte 0x99 eris% as x.s -o x.o x.s: Assembler messages: x.s:3: Warning: value 0x11223344 truncated to 0x3344 eris% nm x.o 0000000000000000 d foo 0000000000000002 d foo1 FYI, -- Marcel Moolenaar marcel@xcllnt.net From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 00:37:24 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EDB7F1065673; Tue, 19 Jul 2011 00:37:24 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DB9838FC14; Tue, 19 Jul 2011 00:37:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6J0bOqN046041; Tue, 19 Jul 2011 00:37:24 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6J0bO6K046031; Tue, 19 Jul 2011 00:37:24 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201107190037.p6J0bO6K046031@svn.freebsd.org> From: Attilio Rao Date: Tue, 19 Jul 2011 00:37:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224207 - in head/sys: amd64/include arm/include conf i386/include ia64/include mips/include powerpc/include sparc64/include X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 00:37:25 -0000 Author: attilio Date: Tue Jul 19 00:37:24 2011 New Revision: 224207 URL: http://svn.freebsd.org/changeset/base/224207 Log: Add the possibility to specify from kernel configs MAXCPU value. This patch is going to help in cases like mips flavours where you want a more granular support on MAXCPU. No MFC is previewed for this patch. Tested by: pluknet Approved by: re (kib) Modified: head/sys/amd64/include/param.h head/sys/arm/include/param.h head/sys/conf/NOTES head/sys/conf/options head/sys/i386/include/param.h head/sys/ia64/include/param.h head/sys/mips/include/param.h head/sys/powerpc/include/param.h head/sys/sparc64/include/param.h Modified: head/sys/amd64/include/param.h ============================================================================== --- head/sys/amd64/include/param.h Mon Jul 18 22:00:21 2011 (r224206) +++ head/sys/amd64/include/param.h Tue Jul 19 00:37:24 2011 (r224207) @@ -64,7 +64,9 @@ #endif #if defined(SMP) || defined(KLD_MODULE) +#ifndef MAXCPU #define MAXCPU 32 +#endif #else #define MAXCPU 1 #endif Modified: head/sys/arm/include/param.h ============================================================================== --- head/sys/arm/include/param.h Mon Jul 18 22:00:21 2011 (r224206) +++ head/sys/arm/include/param.h Tue Jul 19 00:37:24 2011 (r224207) @@ -61,7 +61,9 @@ #define MID_MACHINE MID_ARM6 #if defined(SMP) || defined(KLD_MODULE) +#ifndef MAXCPU #define MAXCPU 2 +#endif #else #define MAXCPU 1 #endif /* SMP || KLD_MODULE */ Modified: head/sys/conf/NOTES ============================================================================== --- head/sys/conf/NOTES Mon Jul 18 22:00:21 2011 (r224206) +++ head/sys/conf/NOTES Tue Jul 19 00:37:24 2011 (r224207) @@ -213,6 +213,10 @@ options SCHED_STATS # Mandatory: options SMP # Symmetric MultiProcessor Kernel +# MAXCPU defines the maximum number of CPUs that can boot in the system. +# A default value should be already present, for every architecture. +options MAXCPU=32 + # ADAPTIVE_MUTEXES changes the behavior of blocking mutexes to spin # if the thread that currently owns the mutex is executing on another # CPU. This behaviour is enabled by default, so this option can be used Modified: head/sys/conf/options ============================================================================== --- head/sys/conf/options Mon Jul 18 22:00:21 2011 (r224206) +++ head/sys/conf/options Tue Jul 19 00:37:24 2011 (r224207) @@ -570,6 +570,7 @@ DFLTPHYS opt_global.h DIAGNOSTIC opt_global.h INVARIANT_SUPPORT opt_global.h INVARIANTS opt_global.h +MAXCPU opt_global.h MAXPHYS opt_global.h MCLSHIFT opt_global.h MUTEX_DEBUG opt_global.h Modified: head/sys/i386/include/param.h ============================================================================== --- head/sys/i386/include/param.h Mon Jul 18 22:00:21 2011 (r224206) +++ head/sys/i386/include/param.h Tue Jul 19 00:37:24 2011 (r224207) @@ -68,7 +68,9 @@ #define MID_MACHINE MID_I386 #if defined(SMP) || defined(KLD_MODULE) +#ifndef MAXCPU #define MAXCPU 32 +#endif #else #define MAXCPU 1 #endif /* SMP || KLD_MODULE */ Modified: head/sys/ia64/include/param.h ============================================================================== --- head/sys/ia64/include/param.h Mon Jul 18 22:00:21 2011 (r224206) +++ head/sys/ia64/include/param.h Tue Jul 19 00:37:24 2011 (r224207) @@ -62,7 +62,9 @@ #endif #if defined(SMP) || defined(KLD_MODULE) +#ifndef MAXCPU #define MAXCPU 32 +#endif #else #define MAXCPU 1 #endif Modified: head/sys/mips/include/param.h ============================================================================== --- head/sys/mips/include/param.h Mon Jul 18 22:00:21 2011 (r224206) +++ head/sys/mips/include/param.h Tue Jul 19 00:37:24 2011 (r224207) @@ -87,7 +87,9 @@ #ifdef SMP #define MAXSMPCPU 32 +#ifndef MAXCPU #define MAXCPU MAXSMPCPU +#endif #else #define MAXSMPCPU 1 #define MAXCPU 1 Modified: head/sys/powerpc/include/param.h ============================================================================== --- head/sys/powerpc/include/param.h Mon Jul 18 22:00:21 2011 (r224206) +++ head/sys/powerpc/include/param.h Tue Jul 19 00:37:24 2011 (r224207) @@ -68,7 +68,9 @@ #endif #if defined(SMP) || defined(KLD_MODULE) +#ifndef MAXCPU #define MAXCPU 8 +#endif #else #define MAXCPU 1 #endif /* SMP || KLD_MODULE */ Modified: head/sys/sparc64/include/param.h ============================================================================== --- head/sys/sparc64/include/param.h Mon Jul 18 22:00:21 2011 (r224206) +++ head/sys/sparc64/include/param.h Tue Jul 19 00:37:24 2011 (r224207) @@ -50,7 +50,9 @@ #define MID_MACHINE MID_SPARC64 #if defined(SMP) || defined(KLD_MODULE) +#ifndef MAXCPU #define MAXCPU 16 +#endif #else #define MAXCPU 1 #endif /* SMP || KLD_MODULE */ From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 00:59:36 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DD93B1065670; Tue, 19 Jul 2011 00:59:36 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from mail-yi0-f54.google.com (mail-yi0-f54.google.com [209.85.218.54]) by mx1.freebsd.org (Postfix) with ESMTP id 7296E8FC1B; Tue, 19 Jul 2011 00:59:36 +0000 (UTC) Received: by yic13 with SMTP id 13so1927750yic.13 for ; Mon, 18 Jul 2011 17:59:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=dddK0h8zB7+rURb1vFVZxNkizeTGMbLruxFm1m1rI7Y=; b=Lmiib2j4XhXnsJ0NptiRSTd1CupjFNF6UEPnuQJ4kbTiRru9FadlKv/XYRFyPs2bZq cr+P3dfC+1Ovl51UFtRmBFgBdVsOndtHKaws2QIOie3wg3K0S3YAix9AUU4qqIKXrfmg B/bHjb+w1FcOoq0EV4jccHpFKCXcgd75gsons= MIME-Version: 1.0 Received: by 10.236.147.111 with SMTP id s75mr69324yhj.272.1311037174751; Mon, 18 Jul 2011 17:59:34 -0700 (PDT) Sender: asmrookie@gmail.com Received: by 10.236.105.169 with HTTP; Mon, 18 Jul 2011 17:59:34 -0700 (PDT) In-Reply-To: <208D139E-CDC3-428D-8D5F-F772BFAF164C@xcllnt.net> References: <201107181519.p6IFJfOK028280@svn.freebsd.org> <208D139E-CDC3-428D-8D5F-F772BFAF164C@xcllnt.net> Date: Tue, 19 Jul 2011 02:59:34 +0200 X-Google-Sender-Auth: jC3gBHHMpGslCRxhMF-mt_3X3f8 Message-ID: From: Attilio Rao To: Marcel Moolenaar Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r224187 - in head: sys/amd64/amd64 sys/arm/arm sys/arm/sa11x0 sys/i386/i386 sys/ia64/ia64 sys/kern sys/mips/mips sys/powerpc/aim sys/powerpc/booke sys/sparc64/sparc64 sys/sys usr.bin/vm... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 00:59:37 -0000 2011/7/19 Marcel Moolenaar : > > On Jul 18, 2011, at 8:19 AM, Attilio Rao wrote: > >> Author: attilio >> Date: Mon Jul 18 15:19:40 2011 >> New Revision: 224187 >> URL: http://svn.freebsd.org/changeset/base/224187 >> >> Log: >> =C2=A0- Remove the eintrcnt/eintrnames usage and introduce the concept o= f >> =C2=A0 =C2=A0sintrcnt/sintrnames which are symbols containing the size o= f the 2 >> =C2=A0 =C2=A0tables. >> =C2=A0- For amd64/i386 remove the storage of intr* stuff from assembly f= iles. >> =C2=A0 =C2=A0This area can be widely improved by applying the same to ot= her >> =C2=A0 =C2=A0architectures and likely finding an unified approach among = them and >> =C2=A0 =C2=A0move the whole code to be MI. More work in this area is exp= ected to >> =C2=A0 =C2=A0happen fairly soon. >> >> =C2=A0No MFC is previewed for this patch. > > You just broke ia64 and possibly other 64-bit architectures: > > ".word" declares a 16-bit integral on ia64 and the size symbols > are of type size_t (=3D64 bit). We'll be having misaligned loads > (=3D kernel panics) and/or reading garbage... I'm a bit surprised of this though. .hword was supposed to be the 16-bit integral, while .word was supposed to be the 32-bits one, if I read my "info as" on amd64. Anyway, what do you think about this patch? (I still need to test it): http://www.freebsd.org/~attilio/64bits-fixup.diff Thanks, Attilio --=20 Peace can only be achieved by understanding - A. Einstein From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 01:54:56 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 07EFC106564A; Tue, 19 Jul 2011 01:54:56 +0000 (UTC) (envelope-from marcel@xcllnt.net) Received: from mail.xcllnt.net (mail.xcllnt.net [70.36.220.4]) by mx1.freebsd.org (Postfix) with ESMTP id A82FE8FC14; Tue, 19 Jul 2011 01:54:55 +0000 (UTC) Received: from sa-nc-spg-102.static.jnpr.net (natint3.juniper.net [66.129.224.36]) (authenticated bits=0) by mail.xcllnt.net (8.14.5/8.14.5) with ESMTP id p6J1snN5087811 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 18 Jul 2011 18:54:54 -0700 (PDT) (envelope-from marcel@xcllnt.net) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Marcel Moolenaar In-Reply-To: Date: Mon, 18 Jul 2011 18:54:44 -0700 Content-Transfer-Encoding: 7bit Message-Id: References: <201107181519.p6IFJfOK028280@svn.freebsd.org> <208D139E-CDC3-428D-8D5F-F772BFAF164C@xcllnt.net> To: Attilio Rao X-Mailer: Apple Mail (2.1084) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r224187 - in head: sys/amd64/amd64 sys/arm/arm sys/arm/sa11x0 sys/i386/i386 sys/ia64/ia64 sys/kern sys/mips/mips sys/powerpc/aim sys/powerpc/booke sys/sparc64/sparc64 sys/sys usr.bin/vm... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 01:54:56 -0000 On Jul 18, 2011, at 5:59 PM, Attilio Rao wrote: > 2011/7/19 Marcel Moolenaar : >> >> On Jul 18, 2011, at 8:19 AM, Attilio Rao wrote: >> >>> Author: attilio >>> Date: Mon Jul 18 15:19:40 2011 >>> New Revision: 224187 >>> URL: http://svn.freebsd.org/changeset/base/224187 >>> >>> Log: >>> - Remove the eintrcnt/eintrnames usage and introduce the concept of >>> sintrcnt/sintrnames which are symbols containing the size of the 2 >>> tables. >>> - For amd64/i386 remove the storage of intr* stuff from assembly files. >>> This area can be widely improved by applying the same to other >>> architectures and likely finding an unified approach among them and >>> move the whole code to be MI. More work in this area is expected to >>> happen fairly soon. >>> >>> No MFC is previewed for this patch. >> >> You just broke ia64 and possibly other 64-bit architectures: >> >> ".word" declares a 16-bit integral on ia64 and the size symbols >> are of type size_t (=64 bit). We'll be having misaligned loads >> (= kernel panics) and/or reading garbage... > > I'm a bit surprised of this though. > .hword was supposed to be the 16-bit integral, while .word was > supposed to be the 32-bits one, if I read my "info as" on amd64. Well... all I can say is that assembly is the least transposable language, besides of course machine code itself :-) > Anyway, what do you think about this patch? (I still need to test it): > http://www.freebsd.org/~attilio/64bits-fixup.diff Looks good to me, though I don't know enough about mips to comment on that. I'm not going to be anal about the use of ".quad" instead of "data8" for ia64 -- let's get it fixed first (I think we have ".byte" in locore.S anyway :-) -- Marcel Moolenaar marcel@xcllnt.net From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 02:31:10 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 42FFD106566C; Tue, 19 Jul 2011 02:31:10 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from mail-gy0-f182.google.com (mail-gy0-f182.google.com [209.85.160.182]) by mx1.freebsd.org (Postfix) with ESMTP id CCA048FC15; Tue, 19 Jul 2011 02:31:09 +0000 (UTC) Received: by gyf3 with SMTP id 3so1950964gyf.13 for ; Mon, 18 Jul 2011 19:31:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=sDDCNl+GW5DsNkQqWaxjTWyz5Q1m/kDu2HNK+BdQook=; b=ilyH8DKqQ26Gf2baF17rUPQn6qZwkHpTxrESkn/gzs8fR5OaUpNNO2AH5Bz4D+ZALR D6TZ8GzD4nQtWnk/t5zs0ozibdybHKdNNe/74zZVAVkZI1HFDZd5LCXRAfGjNwu/RmQn c0AwE1aFtfFxTrNwh/0bmohiFvKOiSH91oNhE= MIME-Version: 1.0 Received: by 10.236.147.111 with SMTP id s75mr139497yhj.272.1311042669108; Mon, 18 Jul 2011 19:31:09 -0700 (PDT) Sender: asmrookie@gmail.com Received: by 10.236.105.169 with HTTP; Mon, 18 Jul 2011 19:31:09 -0700 (PDT) In-Reply-To: References: <201107181519.p6IFJfOK028280@svn.freebsd.org> <208D139E-CDC3-428D-8D5F-F772BFAF164C@xcllnt.net> Date: Tue, 19 Jul 2011 04:31:09 +0200 X-Google-Sender-Auth: s3OYTxTmICxTmIu32grTqSV21zQ Message-ID: From: Attilio Rao To: Marcel Moolenaar Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r224187 - in head: sys/amd64/amd64 sys/arm/arm sys/arm/sa11x0 sys/i386/i386 sys/ia64/ia64 sys/kern sys/mips/mips sys/powerpc/aim sys/powerpc/booke sys/sparc64/sparc64 sys/sys usr.bin/vm... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 02:31:10 -0000 2011/7/19 Marcel Moolenaar : > > On Jul 18, 2011, at 5:59 PM, Attilio Rao wrote: > >> 2011/7/19 Marcel Moolenaar : >>> >>> On Jul 18, 2011, at 8:19 AM, Attilio Rao wrote: >>> >>>> Author: attilio >>>> Date: Mon Jul 18 15:19:40 2011 >>>> New Revision: 224187 >>>> URL: http://svn.freebsd.org/changeset/base/224187 >>>> >>>> Log: >>>> =C2=A0- Remove the eintrcnt/eintrnames usage and introduce the concept= of >>>> =C2=A0 =C2=A0sintrcnt/sintrnames which are symbols containing the size= of the 2 >>>> =C2=A0 =C2=A0tables. >>>> =C2=A0- For amd64/i386 remove the storage of intr* stuff from assembly= files. >>>> =C2=A0 =C2=A0This area can be widely improved by applying the same to = other >>>> =C2=A0 =C2=A0architectures and likely finding an unified approach amon= g them and >>>> =C2=A0 =C2=A0move the whole code to be MI. More work in this area is e= xpected to >>>> =C2=A0 =C2=A0happen fairly soon. >>>> >>>> =C2=A0No MFC is previewed for this patch. >>> >>> You just broke ia64 and possibly other 64-bit architectures: >>> >>> ".word" declares a 16-bit integral on ia64 and the size symbols >>> are of type size_t (=3D64 bit). We'll be having misaligned loads >>> (=3D kernel panics) and/or reading garbage... >> >> I'm a bit surprised of this though. >> .hword was supposed to be the 16-bit integral, while .word was >> supposed to be the 32-bits one, if I read my "info as" on amd64. > > Well... all I can say is that assembly is the least transposable > language, besides of course machine code itself :-) > >> Anyway, what do you think about this patch? (I still need to test it): >> http://www.freebsd.org/~attilio/64bits-fixup.diff > > Looks good to me, though I don't know enough about mips to comment > on that. I'm not going to be anal about the use of ".quad" instead > of "data8" for ia64 -- let's get it fixed first (I think we have > ".byte" in locore.S anyway :-) We do. Anyway, I've updated the patch in order to use data8 in ia64 case (you are the maintainer, so you have the last word) even if I'm not sure there is a real need to discourage .quad. Thanks for pointing at this breakage, please review and approve in case. Attilio --=20 Peace can only be achieved by understanding - A. Einstein From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 03:22:51 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B48A01065670; Tue, 19 Jul 2011 03:22:51 +0000 (UTC) (envelope-from marcel@xcllnt.net) Received: from mail.xcllnt.net (mail.xcllnt.net [70.36.220.4]) by mx1.freebsd.org (Postfix) with ESMTP id 7E0278FC0C; Tue, 19 Jul 2011 03:22:51 +0000 (UTC) Received: from sa-nc-spg-102.static.jnpr.net (natint3.juniper.net [66.129.224.36]) (authenticated bits=0) by mail.xcllnt.net (8.14.5/8.14.5) with ESMTP id p6J3Mgu5001510 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Mon, 18 Jul 2011 20:22:49 -0700 (PDT) (envelope-from marcel@xcllnt.net) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Marcel Moolenaar In-Reply-To: Date: Mon, 18 Jul 2011 20:22:37 -0700 Content-Transfer-Encoding: quoted-printable Message-Id: <451BAE6D-C142-4E24-AE43-3BEC325F43F6@xcllnt.net> References: <201107181519.p6IFJfOK028280@svn.freebsd.org> <208D139E-CDC3-428D-8D5F-F772BFAF164C@xcllnt.net> To: Attilio Rao X-Mailer: Apple Mail (2.1084) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r224187 - in head: sys/amd64/amd64 sys/arm/arm sys/arm/sa11x0 sys/i386/i386 sys/ia64/ia64 sys/kern sys/mips/mips sys/powerpc/aim sys/powerpc/booke sys/sparc64/sparc64 sys/sys usr.bin/vm... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 03:22:51 -0000 On Jul 18, 2011, at 7:31 PM, Attilio Rao wrote: > 2011/7/19 Marcel Moolenaar : >>=20 >> On Jul 18, 2011, at 5:59 PM, Attilio Rao wrote: >>=20 >>> 2011/7/19 Marcel Moolenaar : >>>>=20 >>>> On Jul 18, 2011, at 8:19 AM, Attilio Rao wrote: >>>>=20 >>>>> Author: attilio >>>>> Date: Mon Jul 18 15:19:40 2011 >>>>> New Revision: 224187 >>>>> URL: http://svn.freebsd.org/changeset/base/224187 >>>>>=20 >>>>> Log: >>>>> - Remove the eintrcnt/eintrnames usage and introduce the concept = of >>>>> sintrcnt/sintrnames which are symbols containing the size of = the 2 >>>>> tables. >>>>> - For amd64/i386 remove the storage of intr* stuff from assembly = files. >>>>> This area can be widely improved by applying the same to other >>>>> architectures and likely finding an unified approach among them = and >>>>> move the whole code to be MI. More work in this area is = expected to >>>>> happen fairly soon. >>>>>=20 >>>>> No MFC is previewed for this patch. >>>>=20 >>>> You just broke ia64 and possibly other 64-bit architectures: >>>>=20 >>>> ".word" declares a 16-bit integral on ia64 and the size symbols >>>> are of type size_t (=3D64 bit). We'll be having misaligned loads >>>> (=3D kernel panics) and/or reading garbage... >>>=20 >>> I'm a bit surprised of this though. >>> .hword was supposed to be the 16-bit integral, while .word was >>> supposed to be the 32-bits one, if I read my "info as" on amd64. >>=20 >> Well... all I can say is that assembly is the least transposable >> language, besides of course machine code itself :-) >>=20 >>> Anyway, what do you think about this patch? (I still need to test = it): >>> http://www.freebsd.org/~attilio/64bits-fixup.diff >>=20 >> Looks good to me, though I don't know enough about mips to comment >> on that. I'm not going to be anal about the use of ".quad" instead >> of "data8" for ia64 -- let's get it fixed first (I think we have >> ".byte" in locore.S anyway :-) >=20 > We do. > Anyway, I've updated the patch in order to use data8 in ia64 case (you > are the maintainer, so you have the last word) even if I'm not sure > there is a real need to discourage .quad. >=20 > Thanks for pointing at this breakage, please review and approve in = case. The change for ia64 is not quite right. This is what you have in the latest patch: Index: sys/ia64/ia64/locore.S =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- sys/ia64/ia64/locore.S (revision 224207) +++ sys/ia64/ia64/locore.S (working copy) @@ -207,13 +207,13 @@ intr_n =3D intr_n + 1 .endr EXPORT(sintrnames) - .word INTRCNT_COUNT * INTRNAME_LEN + data8 INTRCNT_COUNT * INTRNAME_LEN =20 .align 8 EXPORT(intrcnt) .fill INTRCNT_COUNT, 8, 0 EXPORT(sintrcnt) - .word INTRCNT_COUNT + data8 INTRCNT_COUNT =20 .text // in0: image base It defines sintrcnt as a 64-bit integral with value INTRCNT_COUNT, which is merely the number of counters, not the storage size of intrcnt itself. Multiply by 8 (=3D sizeof(size_t)) and you're good: Index: /sys/ia64/ia64/locore.S =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- /sys/ia64/ia64/locore.S (revision 224207) +++ /sys/ia64/ia64/locore.S (working copy) @@ -207,13 +207,13 @@ intr_n =3D intr_n + 1 .endr EXPORT(sintrnames) - .word INTRCNT_COUNT * INTRNAME_LEN + data8 INTRCNT_COUNT * INTRNAME_LEN =20 .align 8 EXPORT(intrcnt) .fill INTRCNT_COUNT, 8, 0 EXPORT(sintrcnt) - .word INTRCNT_COUNT + data8 INTRCNT_COUNT * 8 =20 .text // in0: image base Sorry for pointing this out in the rebound. I just tested the patch for ia64 and noticed interrupt counters we're getting fetched right. You did all the other architectures in the patch right, so with this last tweak it's reviewed and approved from my end. FYI, --=20 Marcel Moolenaar marcel@xcllnt.net From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 03:30:43 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 321A9106566B; Tue, 19 Jul 2011 03:30:43 +0000 (UTC) (envelope-from avatar@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 06F9D8FC0A; Tue, 19 Jul 2011 03:30:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6J3Ug5Y051441; Tue, 19 Jul 2011 03:30:42 GMT (envelope-from avatar@svn.freebsd.org) Received: (from avatar@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6J3UgQp051439; Tue, 19 Jul 2011 03:30:42 GMT (envelope-from avatar@svn.freebsd.org) Message-Id: <201107190330.p6J3UgQp051439@svn.freebsd.org> From: Tai-hwa Liang Date: Tue, 19 Jul 2011 03:30:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224208 - stable/7/usr.bin/find X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 03:30:43 -0000 Author: avatar Date: Tue Jul 19 03:30:42 2011 New Revision: 224208 URL: http://svn.freebsd.org/changeset/base/224208 Log: MFC r223035: Using statfs.f_fstypename rather than statfs.f_type whilst performing fstype comparsion as nullfs will copy f_type from underlayer FS. PR: bin/156258 Submitted by: Marcin Wisnicki Modified: stable/7/usr.bin/find/function.c Directory Properties: stable/7/usr.bin/find/ (props changed) Modified: stable/7/usr.bin/find/function.c ============================================================================== --- stable/7/usr.bin/find/function.c Tue Jul 19 00:37:24 2011 (r224207) +++ stable/7/usr.bin/find/function.c Tue Jul 19 03:30:42 2011 (r224208) @@ -841,7 +841,8 @@ f_fstype(PLAN *plan, FTSENT *entry) static dev_t curdev; /* need a guaranteed illegal dev value */ static int first = 1; struct statfs sb; - static int val_type, val_flags; + static int val_flags; + static char fstype[sizeof(sb.f_fstypename)]; char *p, save[2] = {0,0}; if ((plan->flags & F_MTMASK) == F_MTUNKNOWN) @@ -883,13 +884,13 @@ f_fstype(PLAN *plan, FTSENT *entry) * always copy both of them. */ val_flags = sb.f_flags; - val_type = sb.f_type; + strlcpy(fstype, sb.f_fstypename, sizeof(fstype)); } switch (plan->flags & F_MTMASK) { case F_MTFLAG: return val_flags & plan->mt_data; case F_MTTYPE: - return val_type == plan->mt_data; + return (strncmp(fstype, plan->c_data, sizeof(fstype)) == 0); default: abort(); } @@ -900,22 +901,11 @@ c_fstype(OPTION *option, char ***argvp) { char *fsname; PLAN *new; - struct xvfsconf vfc; fsname = nextarg(option, argvp); ftsoptions &= ~FTS_NOSTAT; new = palloc(option); - - /* - * Check first for a filesystem name. - */ - if (getvfsbyname(fsname, &vfc) == 0) { - new->flags |= F_MTTYPE; - new->mt_data = vfc.vfc_typenum; - return new; - } - switch (*fsname) { case 'l': if (!strcmp(fsname, "local")) { @@ -933,12 +923,8 @@ c_fstype(OPTION *option, char ***argvp) break; } - /* - * We need to make filesystem checks for filesystems - * that exists but aren't in the kernel work. - */ - fprintf(stderr, "Warning: Unknown filesystem type %s\n", fsname); - new->flags |= F_MTUNKNOWN; + new->flags |= F_MTTYPE; + new->c_data = fsname; return new; } From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 10:41:26 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D49BA106566B; Tue, 19 Jul 2011 10:41:26 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AB05B8FC0A; Tue, 19 Jul 2011 10:41:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6JAfQwa066938; Tue, 19 Jul 2011 10:41:26 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6JAfQEs066935; Tue, 19 Jul 2011 10:41:26 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201107191041.p6JAfQEs066935@svn.freebsd.org> From: Konstantin Belousov Date: Tue, 19 Jul 2011 10:41:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224211 - in stable/8/sys: kern sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 10:41:26 -0000 Author: kib Date: Tue Jul 19 10:41:26 2011 New Revision: 224211 URL: http://svn.freebsd.org/changeset/base/224211 Log: MFC r223966: Implement an RFTSIGZMB flag to rfork(2) to specify a signal that is delivered to parent when the child exists. Modified: stable/8/sys/kern/kern_fork.c stable/8/sys/sys/unistd.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/kern/kern_fork.c ============================================================================== --- stable/8/sys/kern/kern_fork.c Tue Jul 19 09:27:37 2011 (r224210) +++ stable/8/sys/kern/kern_fork.c Tue Jul 19 10:41:26 2011 (r224211) @@ -218,10 +218,22 @@ fork1(td, flags, pages, procp) vm_ooffset_t mem_charged; int error; + /* Check for the undefined or unimplemented flags. */ + if ((flags & ~(RFFLAGS | RFTSIGFLAGS(RFTSIGMASK))) != 0) + return (EINVAL); + + /* Signal value requires RFTSIGZMB. */ + if ((flags & RFTSIGFLAGS(RFTSIGMASK)) != 0 && (flags & RFTSIGZMB) == 0) + return (EINVAL); + /* Can't copy and clear. */ if ((flags & (RFFDG|RFCFDG)) == (RFFDG|RFCFDG)) return (EINVAL); + /* Check the validity of the signal number. */ + if ((flags & RFTSIGZMB) != 0 && (u_int)RFTSIGNUM(flags) > _SIG_MAXSIG) + return (EINVAL); + p2_held = 0; p1 = td->td_proc; @@ -567,7 +579,10 @@ again: sigacts_copy(newsigacts, p1->p_sigacts); p2->p_sigacts = newsigacts; } - if (flags & RFLINUXTHPN) + + if (flags & RFTSIGZMB) + p2->p_sigparent = RFTSIGNUM(flags); + else if (flags & RFLINUXTHPN) p2->p_sigparent = SIGUSR1; else p2->p_sigparent = SIGCHLD; Modified: stable/8/sys/sys/unistd.h ============================================================================== --- stable/8/sys/sys/unistd.h Tue Jul 19 09:27:37 2011 (r224210) +++ stable/8/sys/sys/unistd.h Tue Jul 19 10:41:26 2011 (r224211) @@ -180,8 +180,16 @@ #define RFLINUXTHPN (1<<16) /* do linux clone exit parent notification */ #define RFSTOPPED (1<<17) /* leave child in a stopped state */ #define RFHIGHPID (1<<18) /* use a pid higher than 10 (idleproc) */ +#define RFTSIGZMB (1<<19) /* select signal for exit parent notification */ +#define RFTSIGSHIFT 20 /* selected signal number is in bits 20-27 */ +#define RFTSIGMASK 0xFF +#define RFTSIGNUM(flags) (((flags) >> RFTSIGSHIFT) & RFTSIGMASK) +#define RFTSIGFLAGS(signum) ((signum) << RFTSIGSHIFT) #define RFPPWAIT (1<<31) /* parent sleeps until child exits (vfork) */ #define RFKERNELONLY (RFSTOPPED | RFHIGHPID | RFPPWAIT) +#define RFFLAGS (RFFDG | RFPROC | RFMEM | RFNOWAIT | RFCFDG | \ + RFTHREAD | RFSIGSHARE | RFLINUXTHPN | RFSTOPPED | RFHIGHPID | RFTSIGZMB | \ + RFPPWAIT) #endif /* __BSD_VISIBLE */ From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 10:45:31 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9741D106564A; Tue, 19 Jul 2011 10:45:31 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 870768FC16; Tue, 19 Jul 2011 10:45:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6JAjVQD067112; Tue, 19 Jul 2011 10:45:31 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6JAjVAT067110; Tue, 19 Jul 2011 10:45:31 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201107191045.p6JAjVAT067110@svn.freebsd.org> From: Konstantin Belousov Date: Tue, 19 Jul 2011 10:45:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224212 - stable/8/lib/libc/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 10:45:31 -0000 Author: kib Date: Tue Jul 19 10:45:31 2011 New Revision: 224212 URL: http://svn.freebsd.org/changeset/base/224212 Log: MFC r223967: Document RFTSIGZMB. Modified: stable/8/lib/libc/sys/rfork.2 Directory Properties: stable/8/lib/libc/ (props changed) stable/8/lib/libc/stdtime/ (props changed) Modified: stable/8/lib/libc/sys/rfork.2 ============================================================================== --- stable/8/lib/libc/sys/rfork.2 Tue Jul 19 10:41:26 2011 (r224211) +++ stable/8/lib/libc/sys/rfork.2 Tue Jul 19 10:45:31 2011 (r224212) @@ -5,7 +5,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 14, 2007 +.Dd July 12, 2011 .Dt RFORK 2 .Os .Sh NAME @@ -83,8 +83,18 @@ for information. .It Dv RFSIGSHARE If set, the kernel will force sharing the sigacts structure between the child and the parent. +.It Dv RFTSIGZMB +If set, the kernel will deliver a specified signal to the parent +upon the child exit, instead of default SIGCHLD. +The signal number +.Dv signum +is specified by oring the +.Dv RFTSIGFLAGS(signum) +expression into +.Fa flags . +Specifying signal number 0 disables signal delivery upon the child exit. .It Dv RFLINUXTHPN -If set, the kernel will return SIGUSR1 instead of SIGCHILD upon thread +If set, the kernel will deliver SIGUSR1 instead of SIGCHLD upon thread exit for the child. This is intended to mimic certain Linux clone behaviour. .El @@ -163,6 +173,8 @@ would be exceeded (see Both the RFFDG and the RFCFDG flags were specified. .It Bq Er EINVAL Any flags not listed above were specified. +.It Bq Er EINVAL +An invalid signal number was specified. .It Bq Er ENOMEM There is insufficient swap space for the new process. .El From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 10:48:40 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1D97A1065672; Tue, 19 Jul 2011 10:48:40 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0CE7A8FC1A; Tue, 19 Jul 2011 10:48:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6JAmdEt067257; Tue, 19 Jul 2011 10:48:39 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6JAmdPC067250; Tue, 19 Jul 2011 10:48:39 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201107191048.p6JAmdPC067250@svn.freebsd.org> From: Hans Petter Selasky Date: Tue, 19 Jul 2011 10:48:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224213 - stable/8/lib/libusb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 10:48:40 -0000 Author: hselasky Date: Tue Jul 19 10:48:39 2011 New Revision: 224213 URL: http://svn.freebsd.org/changeset/base/224213 Log: MFC r224085: - Add missing APIs. - Add some rangechecks. Modified: stable/8/lib/libusb/libusb.3 stable/8/lib/libusb/libusb01.c stable/8/lib/libusb/libusb10.c stable/8/lib/libusb/libusb10_desc.c stable/8/lib/libusb/libusb20.c stable/8/lib/libusb/usb.h (contents, props changed) Directory Properties: stable/8/lib/libusb/ (props changed) Modified: stable/8/lib/libusb/libusb.3 ============================================================================== --- stable/8/lib/libusb/libusb.3 Tue Jul 19 10:45:31 2011 (r224212) +++ stable/8/lib/libusb/libusb.3 Tue Jul 19 10:48:39 2011 (r224213) @@ -542,6 +542,8 @@ The library is also compliant with LibUS .Fn usb_device .Fn usb_get_busses .Fn usb_check_connected +.Fn usb_get_driver_np +.Fn usb_detach_kernel_driver_np . .Sh SEE ALSO .Xr libusb20 3 , Modified: stable/8/lib/libusb/libusb01.c ============================================================================== --- stable/8/lib/libusb/libusb01.c Tue Jul 19 10:45:31 2011 (r224212) +++ stable/8/lib/libusb/libusb01.c Tue Jul 19 10:48:39 2011 (r224213) @@ -203,6 +203,12 @@ usb_get_string(usb_dev_handle * dev, int { int err; + if (dev == NULL) + return (-1); + + if (buflen > 65535) + buflen = 65535; + err = libusb20_dev_req_string_sync((void *)dev, strindex, langid, buf, buflen); @@ -218,6 +224,12 @@ usb_get_string_simple(usb_dev_handle * d { int err; + if (dev == NULL) + return (-1); + + if (buflen > 65535) + buflen = 65535; + err = libusb20_dev_req_string_simple_sync((void *)dev, strindex, buf, buflen); @@ -233,6 +245,12 @@ usb_get_descriptor_by_endpoint(usb_dev_h { memset(buf, 0, size); + if (udev == NULL) + return (-1); + + if (size > 65535) + size = 65535; + return (usb_control_msg(udev, ep | USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, (type << 8) + ep_index, 0, buf, size, 1000)); @@ -244,6 +262,12 @@ usb_get_descriptor(usb_dev_handle * udev { memset(buf, 0, size); + if (udev == NULL) + return (-1); + + if (size > 65535) + size = 65535; + return (usb_control_msg(udev, USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, (type << 8) + desc_index, 0, buf, size, 1000)); } @@ -943,3 +967,49 @@ usb_get_busses(void) { return (usb_busses); } + +int +usb_get_driver_np(usb_dev_handle * dev, int interface, char *name, int namelen) +{ + struct libusb20_device *pdev; + char *ptr; + int err; + + pdev = (void *)dev; + + if (pdev == NULL) + return (-1); + if (namelen < 1) + return (-1); + if (namelen > 255) + namelen = 255; + + err = libusb20_dev_get_iface_desc(pdev, interface, name, namelen); + if (err != 0) + return (-1); + + /* we only want the driver name */ + ptr = strstr(name, ":"); + if (ptr != NULL) + *ptr = 0; + + return (0); +} + +int +usb_detach_kernel_driver_np(usb_dev_handle * dev, int interface) +{ + struct libusb20_device *pdev; + int err; + + pdev = (void *)dev; + + if (pdev == NULL) + return (-1); + + err = libusb20_dev_detach_kernel_driver(pdev, interface); + if (err != 0) + return (-1); + + return (0); +} Modified: stable/8/lib/libusb/libusb10.c ============================================================================== --- stable/8/lib/libusb/libusb10.c Tue Jul 19 10:45:31 2011 (r224212) +++ stable/8/lib/libusb/libusb10.c Tue Jul 19 10:48:39 2011 (r224213) @@ -719,6 +719,8 @@ libusb_get_driver(struct libusb20_device return (LIBUSB_ERROR_INVALID_PARAM); if (namelen < 1) return (LIBUSB_ERROR_INVALID_PARAM); + if (namelen > 255) + namelen = 255; err = libusb20_dev_get_iface_desc( pdev, interface, name, namelen); Modified: stable/8/lib/libusb/libusb10_desc.c ============================================================================== --- stable/8/lib/libusb/libusb10_desc.c Tue Jul 19 10:45:31 2011 (r224212) +++ stable/8/lib/libusb/libusb10_desc.c Tue Jul 19 10:48:39 2011 (r224213) @@ -300,6 +300,9 @@ libusb_get_string_descriptor_ascii(libus if (pdev == NULL || data == NULL || length < 1) return (LIBUSB20_ERROR_INVALID_PARAM); + if (length > 65535) + length = 65535; + /* put some default data into the destination buffer */ data[0] = 0; @@ -314,6 +317,12 @@ int libusb_get_descriptor(libusb_device_handle * devh, uint8_t desc_type, uint8_t desc_index, uint8_t *data, int length) { + if (devh == NULL || data == NULL || length < 1) + return (LIBUSB20_ERROR_INVALID_PARAM); + + if (length > 65535) + length = 65535; + return (libusb_control_transfer(devh, LIBUSB_ENDPOINT_IN, LIBUSB_REQUEST_GET_DESCRIPTOR, (desc_type << 8) | desc_index, 0, data, length, 1000)); Modified: stable/8/lib/libusb/libusb20.c ============================================================================== --- stable/8/lib/libusb/libusb20.c Tue Jul 19 10:45:31 2011 (r224212) +++ stable/8/lib/libusb/libusb20.c Tue Jul 19 10:48:39 2011 (r224213) @@ -1081,6 +1081,8 @@ libusb20_dev_get_iface_desc(struct libus if ((buf == NULL) || (len == 0)) return (LIBUSB20_ERROR_INVALID_PARAM); + buf[0] = 0; /* set default string value */ + return (pdev->beMethods->dev_get_iface_desc( pdev, iface_index, buf, len)); } Modified: stable/8/lib/libusb/usb.h ============================================================================== --- stable/8/lib/libusb/usb.h Tue Jul 19 10:45:31 2011 (r224212) +++ stable/8/lib/libusb/usb.h Tue Jul 19 10:48:39 2011 (r224213) @@ -299,6 +299,8 @@ int usb_find_busses(void); int usb_find_devices(void); struct usb_device *usb_device(usb_dev_handle * dev); struct usb_bus *usb_get_busses(void); +int usb_get_driver_np(usb_dev_handle * dev, int interface, char *name, int namelen); +int usb_detach_kernel_driver_np(usb_dev_handle * dev, int interface); #if 0 { /* style */ From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 10:53:47 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B35131065672; Tue, 19 Jul 2011 10:53:47 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A3A248FC08; Tue, 19 Jul 2011 10:53:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6JArlWW067434; Tue, 19 Jul 2011 10:53:47 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6JArllU067432; Tue, 19 Jul 2011 10:53:47 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201107191053.p6JArllU067432@svn.freebsd.org> From: Konstantin Belousov Date: Tue, 19 Jul 2011 10:53:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224214 - stable/8/sys/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 10:53:47 -0000 Author: kib Date: Tue Jul 19 10:53:47 2011 New Revision: 224214 URL: http://svn.freebsd.org/changeset/base/224214 Log: Bump __FreeBSD_version for RFTSIGZMB flag for rfork(2). Modified: stable/8/sys/sys/param.h Modified: stable/8/sys/sys/param.h ============================================================================== --- stable/8/sys/sys/param.h Tue Jul 19 10:48:39 2011 (r224213) +++ stable/8/sys/sys/param.h Tue Jul 19 10:53:47 2011 (r224214) @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 802509 /* Master, propagated to newvers */ +#define __FreeBSD_version 802510 /* Master, propagated to newvers */ #ifdef _KERNEL #define P_OSREL_SIGSEGV 700004 From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 11:04:58 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 969F31065733; Tue, 19 Jul 2011 11:04:58 +0000 (UTC) (envelope-from zec@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 84B938FC0A; Tue, 19 Jul 2011 11:04:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6JB4w7r070021; Tue, 19 Jul 2011 11:04:58 GMT (envelope-from zec@svn.freebsd.org) Received: (from zec@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6JB4waO070019; Tue, 19 Jul 2011 11:04:58 GMT (envelope-from zec@svn.freebsd.org) Message-Id: <201107191104.p6JB4waO070019@svn.freebsd.org> From: Marko Zec Date: Tue, 19 Jul 2011 11:04:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224215 - stable/8/sys/netgraph X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 11:04:58 -0000 Author: zec Date: Tue Jul 19 11:04:58 2011 New Revision: 224215 URL: http://svn.freebsd.org/changeset/base/224215 Log: MFC r224107: Clear pending ifnet events, in an attempt at preventing ng_ether_link_state() from being dispatched after we have cleared our IFP2NG(ifp). Modified: stable/8/sys/netgraph/ng_ether.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/netgraph/ng_ether.c ============================================================================== --- stable/8/sys/netgraph/ng_ether.c Tue Jul 19 10:53:47 2011 (r224214) +++ stable/8/sys/netgraph/ng_ether.c Tue Jul 19 11:04:58 2011 (r224215) @@ -55,6 +55,7 @@ #include #include #include +#include #include #include @@ -336,6 +337,7 @@ ng_ether_detach(struct ifnet *ifp) const node_p node = IFP2NG(ifp); const priv_p priv = NG_NODE_PRIVATE(node); + taskqueue_drain(taskqueue_swi, &ifp->if_linktask); NG_NODE_REALLY_DIE(node); /* Force real removal of node */ /* * We can't assume the ifnet is still around when we run shutdown From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 11:48:33 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E2974106564A; Tue, 19 Jul 2011 11:48:33 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from mail-gw0-f54.google.com (mail-gw0-f54.google.com [74.125.83.54]) by mx1.freebsd.org (Postfix) with ESMTP id 7051B8FC08; Tue, 19 Jul 2011 11:48:33 +0000 (UTC) Received: by gwb15 with SMTP id 15so2095761gwb.13 for ; Tue, 19 Jul 2011 04:48:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=iSb6SwybnZGnZ0T3tnbBG7viCQQKyJ2FUPP/2lIo3/o=; b=GZRE8C/1d7+EH3iqkTC4rNIiaKRUnbIOH9vZvNqFMi8MHJTJj8Y2Gj/NdIL1q+cGCo cusjb49Og4lqO/PFR6Y+3hJ/hjPjAuUPMRnRhOb6qLknbLqi9GcHR7TrJvHwtjdT6BrA CIQqf6jwmQjyiCFidD0+O1ihs+gbPh9JQHWuc= MIME-Version: 1.0 Received: by 10.236.79.170 with SMTP id i30mr8750640yhe.4.1311076112827; Tue, 19 Jul 2011 04:48:32 -0700 (PDT) Sender: asmrookie@gmail.com Received: by 10.236.105.169 with HTTP; Tue, 19 Jul 2011 04:48:32 -0700 (PDT) In-Reply-To: <451BAE6D-C142-4E24-AE43-3BEC325F43F6@xcllnt.net> References: <201107181519.p6IFJfOK028280@svn.freebsd.org> <208D139E-CDC3-428D-8D5F-F772BFAF164C@xcllnt.net> <451BAE6D-C142-4E24-AE43-3BEC325F43F6@xcllnt.net> Date: Tue, 19 Jul 2011 13:48:32 +0200 X-Google-Sender-Auth: xzf2TRke_44-qATIkKPz4Ke04T0 Message-ID: From: Attilio Rao To: Marcel Moolenaar Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r224187 - in head: sys/amd64/amd64 sys/arm/arm sys/arm/sa11x0 sys/i386/i386 sys/ia64/ia64 sys/kern sys/mips/mips sys/powerpc/aim sys/powerpc/booke sys/sparc64/sparc64 sys/sys usr.bin/vm... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 11:48:34 -0000 2011/7/19 Marcel Moolenaar : > > On Jul 18, 2011, at 7:31 PM, Attilio Rao wrote: > >> 2011/7/19 Marcel Moolenaar : >>> >>> On Jul 18, 2011, at 5:59 PM, Attilio Rao wrote: >>> >>>> 2011/7/19 Marcel Moolenaar : >>>>> >>>>> On Jul 18, 2011, at 8:19 AM, Attilio Rao wrote: >>>>> >>>>>> Author: attilio >>>>>> Date: Mon Jul 18 15:19:40 2011 >>>>>> New Revision: 224187 >>>>>> URL: http://svn.freebsd.org/changeset/base/224187 >>>>>> >>>>>> Log: >>>>>> =C2=A0- Remove the eintrcnt/eintrnames usage and introduce the conce= pt of >>>>>> =C2=A0 =C2=A0sintrcnt/sintrnames which are symbols containing the si= ze of the 2 >>>>>> =C2=A0 =C2=A0tables. >>>>>> =C2=A0- For amd64/i386 remove the storage of intr* stuff from assemb= ly files. >>>>>> =C2=A0 =C2=A0This area can be widely improved by applying the same t= o other >>>>>> =C2=A0 =C2=A0architectures and likely finding an unified approach am= ong them and >>>>>> =C2=A0 =C2=A0move the whole code to be MI. More work in this area is= expected to >>>>>> =C2=A0 =C2=A0happen fairly soon. >>>>>> >>>>>> =C2=A0No MFC is previewed for this patch. >>>>> >>>>> You just broke ia64 and possibly other 64-bit architectures: >>>>> >>>>> ".word" declares a 16-bit integral on ia64 and the size symbols >>>>> are of type size_t (=3D64 bit). We'll be having misaligned loads >>>>> (=3D kernel panics) and/or reading garbage... >>>> >>>> I'm a bit surprised of this though. >>>> .hword was supposed to be the 16-bit integral, while .word was >>>> supposed to be the 32-bits one, if I read my "info as" on amd64. >>> >>> Well... all I can say is that assembly is the least transposable >>> language, besides of course machine code itself :-) >>> >>>> Anyway, what do you think about this patch? (I still need to test it): >>>> http://www.freebsd.org/~attilio/64bits-fixup.diff >>> >>> Looks good to me, though I don't know enough about mips to comment >>> on that. I'm not going to be anal about the use of ".quad" instead >>> of "data8" for ia64 -- let's get it fixed first (I think we have >>> ".byte" in locore.S anyway :-) >> >> We do. >> Anyway, I've updated the patch in order to use data8 in ia64 case (you >> are the maintainer, so you have the last word) even if I'm not sure >> there is a real need to discourage .quad. >> >> Thanks for pointing at this breakage, please review and approve in case. > > The change for ia64 is not quite right. This is what you have > in the latest patch: > > Index: sys/ia64/ia64/locore.S > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- sys/ia64/ia64/locore.S =C2=A0 =C2=A0 =C2=A0(revision 224207) > +++ sys/ia64/ia64/locore.S =C2=A0 =C2=A0 =C2=A0(working copy) > @@ -207,13 +207,13 @@ > =C2=A0 =C2=A0 =C2=A0 =C2=A0intr_n =3D intr_n + 1 > =C2=A0.endr > =C2=A0EXPORT(sintrnames) > - =C2=A0 =C2=A0 =C2=A0 .word INTRCNT_COUNT * INTRNAME_LEN > + =C2=A0 =C2=A0 =C2=A0 data8 INTRCNT_COUNT * INTRNAME_LEN > > =C2=A0 =C2=A0 =C2=A0 =C2=A0.align 8 > =C2=A0EXPORT(intrcnt) > =C2=A0 =C2=A0 =C2=A0 =C2=A0.fill INTRCNT_COUNT, 8, 0 > =C2=A0EXPORT(sintrcnt) > - =C2=A0 =C2=A0 =C2=A0 .word INTRCNT_COUNT > + =C2=A0 =C2=A0 =C2=A0 data8 INTRCNT_COUNT > > =C2=A0 =C2=A0 =C2=A0 =C2=A0.text > =C2=A0 =C2=A0 =C2=A0 =C2=A0// in0: image base > > It defines sintrcnt as a 64-bit integral with value INTRCNT_COUNT, > which is merely the number of counters, not the storage size of > intrcnt itself. Multiply by 8 (=3D sizeof(size_t)) and you're good: > > Index: /sys/ia64/ia64/locore.S > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- /sys/ia64/ia64/locore.S =C2=A0 =C2=A0 (revision 224207) > +++ /sys/ia64/ia64/locore.S =C2=A0 =C2=A0 (working copy) > @@ -207,13 +207,13 @@ > =C2=A0 =C2=A0 =C2=A0 =C2=A0intr_n =3D intr_n + 1 > =C2=A0.endr > =C2=A0EXPORT(sintrnames) > - =C2=A0 =C2=A0 =C2=A0 .word INTRCNT_COUNT * INTRNAME_LEN > + =C2=A0 =C2=A0 =C2=A0 data8 INTRCNT_COUNT * INTRNAME_LEN > > =C2=A0 =C2=A0 =C2=A0 =C2=A0.align 8 > =C2=A0EXPORT(intrcnt) > =C2=A0 =C2=A0 =C2=A0 =C2=A0.fill INTRCNT_COUNT, 8, 0 > =C2=A0EXPORT(sintrcnt) > - =C2=A0 =C2=A0 =C2=A0 .word INTRCNT_COUNT > + =C2=A0 =C2=A0 =C2=A0 data8 INTRCNT_COUNT * 8 > > =C2=A0 =C2=A0 =C2=A0 =C2=A0.text > =C2=A0 =C2=A0 =C2=A0 =C2=A0// in0: image base > > > Sorry for pointing this out in the rebound. I just tested the patch > for ia64 and noticed interrupt counters we're getting fetched right. > > You did all the other architectures in the patch right, so with this > last tweak it's reviewed and approved from my end. Thanks Marcel for the time you spent on this. Attilio --=20 Peace can only be achieved by understanding - A. Einstein From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 12:41:58 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0CB661065675; Tue, 19 Jul 2011 12:41:58 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D68B88FC13; Tue, 19 Jul 2011 12:41:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6JCfvIm072821; Tue, 19 Jul 2011 12:41:57 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6JCfvqw072816; Tue, 19 Jul 2011 12:41:57 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201107191241.p6JCfvqw072816@svn.freebsd.org> From: Attilio Rao Date: Tue, 19 Jul 2011 12:41:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224216 - in head/sys: ia64/ia64 mips/mips powerpc/aim sparc64/sparc64 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 12:41:58 -0000 Author: attilio Date: Tue Jul 19 12:41:57 2011 New Revision: 224216 URL: http://svn.freebsd.org/changeset/base/224216 Log: On 64 bit architectures size_t is 8 bytes, thus it should use an 8 bytes storage. Fix the sintrcnt/sintrnames specification. No MFC is previewed for this patch. Reported, reviewed and tested by: marcel Approved by: re (kib) Modified: head/sys/ia64/ia64/locore.S head/sys/mips/mips/exception.S head/sys/powerpc/aim/locore64.S head/sys/sparc64/sparc64/exception.S Modified: head/sys/ia64/ia64/locore.S ============================================================================== --- head/sys/ia64/ia64/locore.S Tue Jul 19 11:04:58 2011 (r224215) +++ head/sys/ia64/ia64/locore.S Tue Jul 19 12:41:57 2011 (r224216) @@ -207,13 +207,13 @@ intr_n = 1 intr_n = intr_n + 1 .endr EXPORT(sintrnames) - .word INTRCNT_COUNT * INTRNAME_LEN + data8 INTRCNT_COUNT * INTRNAME_LEN .align 8 EXPORT(intrcnt) .fill INTRCNT_COUNT, 8, 0 EXPORT(sintrcnt) - .word INTRCNT_COUNT + data8 INTRCNT_COUNT * 8 .text // in0: image base Modified: head/sys/mips/mips/exception.S ============================================================================== --- head/sys/mips/mips/exception.S Tue Jul 19 11:04:58 2011 (r224215) +++ head/sys/mips/mips/exception.S Tue Jul 19 12:41:57 2011 (r224216) @@ -1140,13 +1140,21 @@ END(MipsFPTrap) intrnames: .space INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 sintrnames: +#ifdef __mips_n64 + .quad INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 +#else .word INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 +#endif .align 4 intrcnt: .space INTRCNT_COUNT * 4 * 2 sintrcnt: +#ifdef __mips_n64 + .quad INTRCNT_COUNT * 4 * 2 +#else .word INTRCNT_COUNT * 4 * 2 +#endif /* Modified: head/sys/powerpc/aim/locore64.S ============================================================================== --- head/sys/powerpc/aim/locore64.S Tue Jul 19 11:04:58 2011 (r224215) +++ head/sys/powerpc/aim/locore64.S Tue Jul 19 12:41:57 2011 (r224216) @@ -91,13 +91,13 @@ GLOBAL(esym) GLOBAL(intrnames) .space INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 GLOBAL(sintrnames) - .word INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 + .quad INTRCNT_COUNT * (MAXCOMLEN + 1) * 2 .align 4 GLOBAL(intrcnt) .space INTRCNT_COUNT * 4 * 2 GLOBAL(sintrcnt) - .word INTRCNT_COUNT * 4 * 2 + .quad INTRCNT_COUNT * 4 * 2 .text .globl btext Modified: head/sys/sparc64/sparc64/exception.S ============================================================================== --- head/sys/sparc64/sparc64/exception.S Tue Jul 19 11:04:58 2011 (r224215) +++ head/sys/sparc64/sparc64/exception.S Tue Jul 19 12:41:57 2011 (r224216) @@ -375,13 +375,13 @@ END(rsf_fatal) intrnames: .space IV_MAX * (MAXCOMLEN + 1) sintrnames: - .word IV_MAX * (MAXCOMLEN + 1) + .quad IV_MAX * (MAXCOMLEN + 1) .globl intrcnt, sintrcnt intrcnt: .space IV_MAX * 8 sintrcnt: - .word IV_MAX * 8 + .quad IV_MAX * 8 .text From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 13:00:30 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AE9901065674; Tue, 19 Jul 2011 13:00:30 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9491E8FC17; Tue, 19 Jul 2011 13:00:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6JD0UnV073454; Tue, 19 Jul 2011 13:00:30 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6JD0UU7073447; Tue, 19 Jul 2011 13:00:30 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201107191300.p6JD0UU7073447@svn.freebsd.org> From: Attilio Rao Date: Tue, 19 Jul 2011 13:00:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224217 - in head/sys: amd64/include ia64/include mips/conf sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 13:00:30 -0000 Author: attilio Date: Tue Jul 19 13:00:30 2011 New Revision: 224217 URL: http://svn.freebsd.org/changeset/base/224217 Log: Bump MAXCPU for amd64, ia64 and XLP mips appropriately. From now on, default values for FreeBSD will be 64 maxiumum supported CPUs on amd64 and ia64 and 128 for XLP. All the other architectures seem already capped appropriately (with the exception of sparc64 which needs further support on jalapeno flavour). Bump __FreeBSD_version in order to reflect KBI/KPI brekage introduced during the infrastructure cleanup for supporting MAXCPU > 32. This covers cpumask_t retiral too. The switch is considered completed at the present time, so for whatever bug you may experience that is reconducible to that area, please report immediately. Requested by: marcel, jchandra Tested by: pluknet, sbruno Approved by: re (kib) Modified: head/sys/amd64/include/param.h head/sys/ia64/include/param.h head/sys/mips/conf/XLP head/sys/mips/conf/XLP64 head/sys/mips/conf/XLPN32 head/sys/sys/param.h Modified: head/sys/amd64/include/param.h ============================================================================== --- head/sys/amd64/include/param.h Tue Jul 19 12:41:57 2011 (r224216) +++ head/sys/amd64/include/param.h Tue Jul 19 13:00:30 2011 (r224217) @@ -65,7 +65,7 @@ #if defined(SMP) || defined(KLD_MODULE) #ifndef MAXCPU -#define MAXCPU 32 +#define MAXCPU 64 #endif #else #define MAXCPU 1 Modified: head/sys/ia64/include/param.h ============================================================================== --- head/sys/ia64/include/param.h Tue Jul 19 12:41:57 2011 (r224216) +++ head/sys/ia64/include/param.h Tue Jul 19 13:00:30 2011 (r224217) @@ -63,7 +63,7 @@ #if defined(SMP) || defined(KLD_MODULE) #ifndef MAXCPU -#define MAXCPU 32 +#define MAXCPU 64 #endif #else #define MAXCPU 1 Modified: head/sys/mips/conf/XLP ============================================================================== --- head/sys/mips/conf/XLP Tue Jul 19 12:41:57 2011 (r224216) +++ head/sys/mips/conf/XLP Tue Jul 19 13:00:30 2011 (r224217) @@ -36,6 +36,7 @@ options SCHED_ULE # ULE scheduler options SMP options PREEMPTION # Enable kernel thread preemption #options FULL_PREEMPTION # Enable kernel thread preemption +options MAXCPU=128 # XLP can probe 128 CPUs options INET # InterNETworking options INET6 # IPv6 communications protocols options FFS # Berkeley Fast Filesystem Modified: head/sys/mips/conf/XLP64 ============================================================================== --- head/sys/mips/conf/XLP64 Tue Jul 19 12:41:57 2011 (r224216) +++ head/sys/mips/conf/XLP64 Tue Jul 19 13:00:30 2011 (r224217) @@ -38,6 +38,7 @@ options SCHED_ULE # ULE scheduler options SMP options PREEMPTION # Enable kernel thread preemption #options FULL_PREEMPTION # Enable kernel thread preemption +options MAXCPU=128 # XLP can probe 128 CPUs options INET # InterNETworking options INET6 # IPv6 communications protocols options FFS # Berkeley Fast Filesystem Modified: head/sys/mips/conf/XLPN32 ============================================================================== --- head/sys/mips/conf/XLPN32 Tue Jul 19 12:41:57 2011 (r224216) +++ head/sys/mips/conf/XLPN32 Tue Jul 19 13:00:30 2011 (r224217) @@ -37,6 +37,7 @@ options SCHED_ULE # ULE scheduler options SMP options PREEMPTION # Enable kernel thread preemption #options FULL_PREEMPTION # Enable kernel thread preemption +options MAXCPU=128 # XLP can probe 128 CPUs options INET # InterNETworking options INET6 # IPv6 communications protocols options FFS # Berkeley Fast Filesystem Modified: head/sys/sys/param.h ============================================================================== --- head/sys/sys/param.h Tue Jul 19 12:41:57 2011 (r224216) +++ head/sys/sys/param.h Tue Jul 19 13:00:30 2011 (r224217) @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 900039 /* Master, propagated to newvers */ +#define __FreeBSD_version 900040 /* Master, propagated to newvers */ #ifdef _KERNEL #define P_OSREL_SIGSEGV 700004 From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 14:58:00 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 43D19106564A; Tue, 19 Jul 2011 14:58:00 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 337498FC0A; Tue, 19 Jul 2011 14:58:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6JEw0Al076931; Tue, 19 Jul 2011 14:58:00 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6JEw0uS076928; Tue, 19 Jul 2011 14:58:00 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201107191458.p6JEw0uS076928@svn.freebsd.org> From: Attilio Rao Date: Tue, 19 Jul 2011 14:58:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224218 - in head/sys: kern sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 14:58:00 -0000 Author: attilio Date: Tue Jul 19 14:57:59 2011 New Revision: 224218 URL: http://svn.freebsd.org/changeset/base/224218 Log: Remove pc_name member of struct pcpu. pc_name is only included when KTR option is and it does introduce a subdle KBI breakage that totally breaks vmstat when world and kernel are not in sync. Besides, it is not used somewhere. In collabouration with: pluknet Reviewed by: jhb Approved by: re (kib) Modified: head/sys/kern/subr_pcpu.c head/sys/sys/pcpu.h Modified: head/sys/kern/subr_pcpu.c ============================================================================== --- head/sys/kern/subr_pcpu.c Tue Jul 19 13:00:30 2011 (r224217) +++ head/sys/kern/subr_pcpu.c Tue Jul 19 14:57:59 2011 (r224218) @@ -92,9 +92,6 @@ pcpu_init(struct pcpu *pcpu, int cpuid, cpu_pcpu_init(pcpu, cpuid, size); pcpu->pc_rm_queue.rmq_next = &pcpu->pc_rm_queue; pcpu->pc_rm_queue.rmq_prev = &pcpu->pc_rm_queue; -#ifdef KTR - snprintf(pcpu->pc_name, sizeof(pcpu->pc_name), "CPU %d", cpuid); -#endif } void Modified: head/sys/sys/pcpu.h ============================================================================== --- head/sys/sys/pcpu.h Tue Jul 19 13:00:30 2011 (r224217) +++ head/sys/sys/pcpu.h Tue Jul 19 14:57:59 2011 (r224218) @@ -165,9 +165,6 @@ struct pcpu { u_int pc_cpuid; /* This cpu number */ STAILQ_ENTRY(pcpu) pc_allcpu; struct lock_list_entry *pc_spinlocks; -#ifdef KTR - char pc_name[PCPU_NAME_LEN]; /* String name for KTR */ -#endif struct vmmeter pc_cnt; /* VM stats counters */ long pc_cp_time[CPUSTATES]; /* statclock ticks */ struct device *pc_device; From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 15:22:36 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 515C21065670; Tue, 19 Jul 2011 15:22:36 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4123F8FC19; Tue, 19 Jul 2011 15:22:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6JFMawK077687; Tue, 19 Jul 2011 15:22:36 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6JFMaeU077685; Tue, 19 Jul 2011 15:22:36 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201107191522.p6JFMaeU077685@svn.freebsd.org> From: Adrian Chadd Date: Tue, 19 Jul 2011 15:22:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224219 - head/sbin/ifconfig X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 15:22:36 -0000 Author: adrian Date: Tue Jul 19 15:22:35 2011 New Revision: 224219 URL: http://svn.freebsd.org/changeset/base/224219 Log: This patch enables listing DFS related flags when 'ifconfig -v wlanX list channel' is run. The following new options are introduced: * D: channel requires DFS * R: channel has a radar event * I: channel has detected inteference * C: the CAC period has completed on a channel that requires it (ie, DFS + PASSIVE.) It's relevant for developing, debugging and using the DFS and interference options. Approved by: re (bz) Modified: head/sbin/ifconfig/ifieee80211.c Modified: head/sbin/ifconfig/ifieee80211.c ============================================================================== --- head/sbin/ifconfig/ifieee80211.c Tue Jul 19 14:57:59 2011 (r224218) +++ head/sbin/ifconfig/ifieee80211.c Tue Jul 19 15:22:35 2011 (r224219) @@ -3451,10 +3451,21 @@ print_chaninfo(const struct ieee80211_ch { char buf[14]; + if (verb) + printf("Channel %3u : %u%c%c%c%c%c MHz%-14.14s", + ieee80211_mhz2ieee(c->ic_freq, c->ic_flags), c->ic_freq, + IEEE80211_IS_CHAN_PASSIVE(c) ? '*' : ' ', + IEEE80211_IS_CHAN_DFS(c) ? 'D' : ' ', + IEEE80211_IS_CHAN_RADAR(c) ? 'R' : ' ', + IEEE80211_IS_CHAN_CWINT(c) ? 'I' : ' ', + IEEE80211_IS_CHAN_CACDONE(c) ? 'C' : ' ', + get_chaninfo(c, verb, buf, sizeof(buf))); + else printf("Channel %3u : %u%c MHz%-14.14s", - ieee80211_mhz2ieee(c->ic_freq, c->ic_flags), c->ic_freq, - IEEE80211_IS_CHAN_PASSIVE(c) ? '*' : ' ', - get_chaninfo(c, verb, buf, sizeof(buf))); + ieee80211_mhz2ieee(c->ic_freq, c->ic_flags), c->ic_freq, + IEEE80211_IS_CHAN_PASSIVE(c) ? '*' : ' ', + get_chaninfo(c, verb, buf, sizeof(buf))); + } static int From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 15:24:44 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CD94E1065674; Tue, 19 Jul 2011 15:24:44 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A45A28FC1A; Tue, 19 Jul 2011 15:24:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6JFOiT3077799; Tue, 19 Jul 2011 15:24:44 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6JFOict077797; Tue, 19 Jul 2011 15:24:44 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201107191524.p6JFOict077797@svn.freebsd.org> From: Adrian Chadd Date: Tue, 19 Jul 2011 15:24:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224220 - head/sys/net80211 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 15:24:44 -0000 Author: adrian Date: Tue Jul 19 15:24:44 2011 New Revision: 224220 URL: http://svn.freebsd.org/changeset/base/224220 Log: This sets the BSS channel for each VAP for the given interface. It's only relevant in STA mode. The CSA forces a channel switch for the interface, but doesn't update the VAP channel. Approved by: re (bz) Modified: head/sys/net80211/ieee80211_proto.c Modified: head/sys/net80211/ieee80211_proto.c ============================================================================== --- head/sys/net80211/ieee80211_proto.c Tue Jul 19 15:22:35 2011 (r224219) +++ head/sys/net80211/ieee80211_proto.c Tue Jul 19 15:24:44 2011 (r224220) @@ -1501,6 +1501,11 @@ ieee80211_csa_startswitch(struct ieee802 ieee80211_notify_csa(ic, c, mode, count); } +/* + * Complete the channel switch by transitioning all CSA VAPs to RUN. + * This is called by both the completion and cancellation functions + * so each VAP is placed back in the RUN state and can thus transmit. + */ static void csa_completeswitch(struct ieee80211com *ic) { @@ -1518,6 +1523,12 @@ csa_completeswitch(struct ieee80211com * * Complete an 802.11h channel switch started by ieee80211_csa_startswitch. * We clear state and move all vap's in CSA state to RUN state * so they can again transmit. + * + * Although this may not be completely correct, update the BSS channel + * for each VAP to the newly configured channel. The setcurchan sets + * the current operating channel for the interface (so the radio does + * switch over) but the VAP BSS isn't updated, leading to incorrectly + * reported information via ioctl. */ void ieee80211_csa_completeswitch(struct ieee80211com *ic) @@ -1527,6 +1538,10 @@ ieee80211_csa_completeswitch(struct ieee KASSERT(ic->ic_flags & IEEE80211_F_CSAPENDING, ("csa not pending")); ieee80211_setcurchan(ic, ic->ic_csa_newchan); + TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) + if (vap->iv_state == IEEE80211_S_CSA) + vap->iv_bss->ni_chan = ic->ic_curchan; + csa_completeswitch(ic); } From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 16:50:56 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3A75F1065670; Tue, 19 Jul 2011 16:50:56 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2A6F38FC16; Tue, 19 Jul 2011 16:50:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6JGoulW080327; Tue, 19 Jul 2011 16:50:56 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6JGouiu080324; Tue, 19 Jul 2011 16:50:56 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201107191650.p6JGouiu080324@svn.freebsd.org> From: Attilio Rao Date: Tue, 19 Jul 2011 16:50:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224221 - in head/sys: kern sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 16:50:56 -0000 Author: attilio Date: Tue Jul 19 16:50:55 2011 New Revision: 224221 URL: http://svn.freebsd.org/changeset/base/224221 Log: Remove explicit MAXCPU usage from sys/pcpu.h avoiding a namespace pollution. That is a step further in the direction of building correct policies for userland and modules on how to deal with the number of maxcpus at runtime. Reported by: jhb Reviewed and tested by: pluknet Approved by: re (kib) Modified: head/sys/kern/sched_ule.c head/sys/sys/pcpu.h Modified: head/sys/kern/sched_ule.c ============================================================================== --- head/sys/kern/sched_ule.c Tue Jul 19 15:24:44 2011 (r224220) +++ head/sys/kern/sched_ule.c Tue Jul 19 16:50:55 2011 (r224221) @@ -84,7 +84,7 @@ dtrace_vtime_switch_func_t dtrace_vtime_ #define TS_NAME_LEN (MAXCOMLEN + sizeof(" td ") + sizeof(__XSTRING(UINT_MAX))) #define TDQ_NAME_LEN (sizeof("sched lock ") + sizeof(__XSTRING(MAXCPU))) -#define TDQ_LOADNAME_LEN (PCPU_NAME_LEN + sizeof(" load")) +#define TDQ_LOADNAME_LEN (sizeof("CPU ") + sizeof(__XSTRING(MAXCPU)) - 1 + sizeof(" load")) /* * Thread scheduler specific section. All fields are protected Modified: head/sys/sys/pcpu.h ============================================================================== --- head/sys/sys/pcpu.h Tue Jul 19 15:24:44 2011 (r224220) +++ head/sys/sys/pcpu.h Tue Jul 19 16:50:55 2011 (r224221) @@ -146,8 +146,6 @@ struct rm_queue { struct rm_queue* volatile rmq_prev; }; -#define PCPU_NAME_LEN (sizeof("CPU ") + sizeof(__XSTRING(MAXCPU)) - 1) - /* * This structure maps out the global data that needs to be kept on a * per-cpu basis. The members are accessed via the PCPU_GET/SET/PTR @@ -200,7 +198,7 @@ struct pcpu { STAILQ_HEAD(cpuhead, pcpu); extern struct cpuhead cpuhead; -extern struct pcpu *cpuid_to_pcpu[MAXCPU]; +extern struct pcpu *cpuid_to_pcpu[]; #define curcpu PCPU_GET(cpuid) #define curproc (curthread->td_proc) From owner-svn-src-all@FreeBSD.ORG Tue Jul 19 19:20:13 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7F9D8106566C; Tue, 19 Jul 2011 19:20:13 +0000 (UTC) (envelope-from wxs@atarininja.org) Received: from syn.atarininja.org (syn.csh.rit.edu [129.21.49.45]) by mx1.freebsd.org (Postfix) with ESMTP id 587858FC1A; Tue, 19 Jul 2011 19:20:13 +0000 (UTC) Received: by syn.atarininja.org (Postfix, from userid 1001) id 53DB15C45; Tue, 19 Jul 2011 15:03:46 -0400 (EDT) Date: Tue, 19 Jul 2011 15:03:46 -0400 From: Wesley Shields To: Adrian Chadd Message-ID: <20110719190346.GA44599@atarininja.org> References: <201107191524.p6JFOict077797@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201107191524.p6JFOict077797@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r224220 - head/sys/net80211 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2011 19:20:13 -0000 On Tue, Jul 19, 2011 at 03:24:44PM +0000, Adrian Chadd wrote: > Author: adrian > Date: Tue Jul 19 15:24:44 2011 > New Revision: 224220 > URL: http://svn.freebsd.org/changeset/base/224220 > > Log: > This sets the BSS channel for each VAP for the given interface. > It's only relevant in STA mode. > > The CSA forces a channel switch for the interface, but doesn't update > the VAP channel. > > Approved by: re (bz) > > Modified: > head/sys/net80211/ieee80211_proto.c I just tried to update the kernel on one of my machines and found it broken. The patch at http://people.freebsd.org/~wxs/vap.diff fixes it. -- WXS From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 00:36:47 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E0FE6106564A; Wed, 20 Jul 2011 00:36:47 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D16288FC2C; Wed, 20 Jul 2011 00:36:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6K0alP0093724; Wed, 20 Jul 2011 00:36:47 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6K0algC093722; Wed, 20 Jul 2011 00:36:47 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201107200036.p6K0algC093722@svn.freebsd.org> From: Adrian Chadd Date: Wed, 20 Jul 2011 00:36:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224222 - head/sys/net80211 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 00:36:48 -0000 Author: adrian Date: Wed Jul 20 00:36:47 2011 New Revision: 224222 URL: http://svn.freebsd.org/changeset/base/224222 Log: Fix brokenness introduced by my last commit. Approved by: re (implicit) Modified: head/sys/net80211/ieee80211_proto.c Modified: head/sys/net80211/ieee80211_proto.c ============================================================================== --- head/sys/net80211/ieee80211_proto.c Tue Jul 19 16:50:55 2011 (r224221) +++ head/sys/net80211/ieee80211_proto.c Wed Jul 20 00:36:47 2011 (r224222) @@ -1533,6 +1533,8 @@ csa_completeswitch(struct ieee80211com * void ieee80211_csa_completeswitch(struct ieee80211com *ic) { + struct ieee80211vap *vap; + IEEE80211_LOCK_ASSERT(ic); KASSERT(ic->ic_flags & IEEE80211_F_CSAPENDING, ("csa not pending")); From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 04:57:41 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 21A12106566B; Wed, 20 Jul 2011 04:57:41 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 111408FC13; Wed, 20 Jul 2011 04:57:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6K4veFQ001683; Wed, 20 Jul 2011 04:57:40 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6K4vets001681; Wed, 20 Jul 2011 04:57:40 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201107200457.p6K4vets001681@svn.freebsd.org> From: Hans Petter Selasky Date: Wed, 20 Jul 2011 04:57:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224223 - stable/8/sys/dev/usb/input X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 04:57:41 -0000 Author: hselasky Date: Wed Jul 20 04:57:40 2011 New Revision: 224223 URL: http://svn.freebsd.org/changeset/base/224223 Log: MFC r223989: Fix for dump after shutdown with USB keyboard plugged in. Modified: stable/8/sys/dev/usb/input/ukbd.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/usb/input/ukbd.c ============================================================================== --- stable/8/sys/dev/usb/input/ukbd.c Wed Jul 20 00:36:47 2011 (r224222) +++ stable/8/sys/dev/usb/input/ukbd.c Wed Jul 20 04:57:40 2011 (r224223) @@ -59,6 +59,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include #include @@ -386,6 +388,33 @@ ukbd_put_key(struct ukbd_softc *sc, uint } static void +ukbd_yield(void) +{ + struct thread *td = curthread; + uint32_t old_prio; + + DROP_GIANT(); + + thread_lock(td); + + /* get current priority */ + old_prio = td->td_base_pri; + + /* set new priority */ + sched_prio(td, td->td_user_pri); + + /* cause a task switch */ + mi_switch(SW_INVOL | SWT_RELINQUISH, NULL); + + /* restore priority */ + sched_prio(td, old_prio); + + thread_unlock(td); + + PICKUP_GIANT(); +} + +static void ukbd_do_poll(struct ukbd_softc *sc, uint8_t wait) { DPRINTFN(2, "polling\n"); @@ -396,8 +425,9 @@ ukbd_do_poll(struct ukbd_softc *sc, uint if (kdb_active == 0) { while (sc->sc_inputs == 0) { - /* make sure the USB code gets a chance to run */ - pause("UKBD", 1); + + /* give USB threads a chance to run */ + ukbd_yield(); /* check if we should wait */ if (!wait) From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 05:59:29 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F2EE91065676; Wed, 20 Jul 2011 05:59:28 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E361F8FC15; Wed, 20 Jul 2011 05:59:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6K5xSK3003483; Wed, 20 Jul 2011 05:59:28 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6K5xSSx003481; Wed, 20 Jul 2011 05:59:28 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201107200559.p6K5xSSx003481@svn.freebsd.org> From: Adrian Chadd Date: Wed, 20 Jul 2011 05:59:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224224 - head/sbin/ifconfig X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 05:59:29 -0000 Author: adrian Date: Wed Jul 20 05:59:28 2011 New Revision: 224224 URL: http://svn.freebsd.org/changeset/base/224224 Log: This patch removes a check in ifconfig which disables HT/40 channels on frequency bands with DFS. All Atheros chipsets >= AR9001 support radar event detection on HT40 extension channels. This should be a chipset specific item rather than enforced in the regulatory domain database. In addition, it's irrelevant for STA mode, as the radar detection is done by the access point, not the STA. Approved by: re (kib) Modified: head/sbin/ifconfig/ifieee80211.c Modified: head/sbin/ifconfig/ifieee80211.c ============================================================================== --- head/sbin/ifconfig/ifieee80211.c Wed Jul 20 04:57:40 2011 (r224223) +++ head/sbin/ifconfig/ifieee80211.c Wed Jul 20 05:59:28 2011 (r224224) @@ -2027,18 +2027,6 @@ regdomain_addchans(struct ieee80211req_c "HT40 channel\n", freq); continue; } - /* - * DFS and HT40 don't mix. This should be - * expressed in the regdomain database but - * just in case enforce it here. - */ - if ((chanFlags & IEEE80211_CHAN_HT40) && - (flags & IEEE80211_CHAN_DFS)) { - if (verbose) - printf("%u: skip, HT40+DFS " - "not permitted\n", freq); - continue; - } /* NB: HT attribute comes from caller */ flags &= ~IEEE80211_CHAN_HT; flags |= chanFlags & IEEE80211_CHAN_HT; From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 09:53:35 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B185C1065670; Wed, 20 Jul 2011 09:53:35 +0000 (UTC) (envelope-from jonathan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 96E618FC14; Wed, 20 Jul 2011 09:53:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6K9rZNd010698; Wed, 20 Jul 2011 09:53:35 GMT (envelope-from jonathan@svn.freebsd.org) Received: (from jonathan@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6K9rZjh010695; Wed, 20 Jul 2011 09:53:35 GMT (envelope-from jonathan@svn.freebsd.org) Message-Id: <201107200953.p6K9rZjh010695@svn.freebsd.org> From: Jonathan Anderson Date: Wed, 20 Jul 2011 09:53:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224225 - in head/sys: kern sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 09:53:35 -0000 Author: jonathan Date: Wed Jul 20 09:53:35 2011 New Revision: 224225 URL: http://svn.freebsd.org/changeset/base/224225 Log: Export capability information via sysctls. When reporting on a capability, flag the fact that it is a capability, but also unwrap to report all of the usual information about the underlying file. Approved by: re (kib), mentor (rwatson) Sponsored by: Google Inc Modified: head/sys/kern/kern_descrip.c head/sys/sys/user.h Modified: head/sys/kern/kern_descrip.c ============================================================================== --- head/sys/kern/kern_descrip.c Wed Jul 20 05:59:28 2011 (r224224) +++ head/sys/kern/kern_descrip.c Wed Jul 20 09:53:35 2011 (r224225) @@ -2946,6 +2946,22 @@ sysctl_kern_proc_ofiledesc(SYSCTL_HANDLE so = NULL; tp = NULL; kif->kf_fd = i; + +#ifdef CAPABILITIES + /* + * When reporting a capability, most fields will be from the + * underlying object, but do mark as a capability. With + * ofiledesc, we don't have a field to export the cap_rights_t, + * but we do with the new filedesc. + */ + if (fp->f_type == DTYPE_CAPABILITY) { + kif->kf_flags |= KF_FLAG_CAPABILITY; + (void)cap_funwrap(fp, 0, &fp); + } +#else + KASSERT(fp->f_type != DTYPE_CAPABILITY, + ("sysctl_kern_proc_ofiledesc: saw capability")); +#endif switch (fp->f_type) { case DTYPE_VNODE: kif->kf_type = KF_TYPE_VNODE; @@ -3262,6 +3278,22 @@ sysctl_kern_proc_filedesc(SYSCTL_HANDLER if ((fp = fdp->fd_ofiles[i]) == NULL) continue; data = NULL; + +#ifdef CAPABILITIES + /* + * When reporting a capability, most fields will be from the + * underlying object, but do mark as a capability and export + * the capability rights mask. + */ + if (fp->f_type == DTYPE_CAPABILITY) { + kif->kf_flags |= KF_FLAG_CAPABILITY; + kif->kf_cap_rights = cap_rights(fp); + (void)cap_funwrap(fp, 0, &fp); + } +#else /* !CAPABILITIES */ + KASSERT(fp->f_type != DTYPE_CAPABILITY, + ("sysctl_kern_proc_filedesc: saw capability")); +#endif switch (fp->f_type) { case DTYPE_VNODE: type = KF_TYPE_VNODE; Modified: head/sys/sys/user.h ============================================================================== --- head/sys/sys/user.h Wed Jul 20 05:59:28 2011 (r224224) +++ head/sys/sys/user.h Wed Jul 20 09:53:35 2011 (r224225) @@ -251,6 +251,7 @@ struct user { #define KF_TYPE_SHM 8 #define KF_TYPE_SEM 9 #define KF_TYPE_PTS 10 +/* no KF_TYPE_CAPABILITY (11), since capabilities wrap other file objects */ #define KF_TYPE_UNKNOWN 255 #define KF_VTYPE_VNON 0 @@ -286,6 +287,7 @@ struct user { #define KF_FLAG_TRUNC 0x00001000 #define KF_FLAG_EXCL 0x00002000 #define KF_FLAG_EXEC 0x00004000 +#define KF_FLAG_CAPABILITY 0x00008000 /* * Old format. Has variable hidden padding due to alignment. @@ -378,7 +380,9 @@ struct kinfo_file { } kf_un; uint16_t kf_status; /* Status flags. */ uint16_t kf_pad1; /* Round to 32 bit alignment. */ - int _kf_ispare[7]; /* Space for more stuff. */ + int _kf_ispare0; /* Space for more stuff. */ + cap_rights_t kf_cap_rights; /* Capability rights. */ + int _kf_ispare[4]; /* Space for more stuff. */ /* Truncated before copyout in sysctl */ char kf_path[PATH_MAX]; /* Path to file, if any. */ }; From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 10:37:51 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 66C2A1065672; Wed, 20 Jul 2011 10:37:51 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 4BAAE8FC0C; Wed, 20 Jul 2011 10:37:49 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id NAA28500; Wed, 20 Jul 2011 13:37:45 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4E26AFF8.8080107@FreeBSD.org> Date: Wed, 20 Jul 2011 13:37:44 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:5.0) Gecko/20110705 Thunderbird/5.0 MIME-Version: 1.0 To: Hans Petter Selasky References: <201107132107.p6DL7ojq099900@svn.freebsd.org> <4E242C9E.6010604@FreeBSD.org> <201107181610.49443.hselasky@c2i.net> In-Reply-To: <201107181610.49443.hselasky@c2i.net> X-Enigmail-Version: 1.2pre Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: "svn-src-head@FreeBSD.org" , "svn-src-all@FreeBSD.org" , "src-committers@FreeBSD.org" Subject: Re: svn commit: r223989 - head/sys/dev/usb/input X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 10:37:51 -0000 on 18/07/2011 17:10 Hans Petter Selasky said the following: > Hi, > >> The question is: why this special subcase is needed at all. > > Yes, according to the current keyboard implementation in the kernel. > >> If I understand correctly, the polling mode is used only in some special >> situations/contexts. >> So why not always use the generic code (after this if-block) that does >> "proper" polling? What do we win when using this special case that seems >> to depend on the scheduler? > > This special code is a workaround. The problem is that when not polling the > key presses will be fed into syscons I think, and not returned via the polling > function. That's why there is a timer there to distinguish when polling starts > and polling stops. It is not enough just to enable/disable polling around each > key-press like currently done. I must admit that I failed to understand this paragraph, so I think that I should shut up until I know the relevant code better. > Please test any patches that it works in the filesystem mount prompt after > boot: Edit /etc/fstab and put some non-existing device there for root > partition. Reboot. Make sure USB keyboard works in the prompt which appears. I do not plan to make any changes to USB/ukbd code at the moment. >> >> Unfortunately I couldn't fully understand commit log of r203896. >> >> One of the reasons I am asking about this is that soon-ish we may have >> changes that disable scheduler in a context where panicstr != NULL. > > Ok. Please make sure that USB keyboard works reliably in boot prompt when > asking for file-system and in KDB and after dump during shutdown. An of course > after logged in like a normal user :-) Sure, but I do not think that my changes may affect any of the environments that you've mentioned. I am mostly concerned about "press any key to reboot" prompt after (unattended) panic, but that would be a pretty minor issue IMO. -- Andriy Gapon From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 10:51:52 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EC4581065672; Wed, 20 Jul 2011 10:51:52 +0000 (UTC) (envelope-from hselasky@c2i.net) Received: from swip.net (mailfe01.c2i.net [212.247.154.2]) by mx1.freebsd.org (Postfix) with ESMTP id DB8EA8FC18; Wed, 20 Jul 2011 10:51:50 +0000 (UTC) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.1 cv=yfIOS+81wnQIz0UwZPDdWOvE/jQxEvyI9Z1xC25I9wc= c=1 sm=1 a=SvYTsOw2Z4kA:10 a=Bjjt3Ia5OwMA:10 a=WQU8e4WWZSUA:10 a=N659UExz7-8A:10 a=CL8lFSKtTFcA:10 a=i9M/sDlu2rpZ9XS819oYzg==:17 a=doO9VkV0O5B3E9BATT0A:9 a=Kgdwo8sobGYHKmN4RZYA:7 a=pILNOxqGKmIA:10 a=i9M/sDlu2rpZ9XS819oYzg==:117 Received: from [188.126.198.129] (account mc467741@c2i.net HELO laptop002.hselasky.homeunix.org) by mailfe01.swip.net (CommuniGate Pro SMTP 5.2.19) with ESMTPA id 155694378; Wed, 20 Jul 2011 12:51:49 +0200 From: Hans Petter Selasky To: Andriy Gapon Date: Wed, 20 Jul 2011 12:49:39 +0200 User-Agent: KMail/1.13.5 (FreeBSD/8.2-STABLE; KDE/4.4.5; amd64; ; ) References: <201107181610.49443.hselasky@c2i.net> <4E26AFF8.8080107@FreeBSD.org> In-Reply-To: <4E26AFF8.8080107@FreeBSD.org> X-Face: *nPdTl_}RuAI6^PVpA02T?$%Xa^>@hE0uyUIoiha$pC:9TVgl.Oq,NwSZ4V" =?iso-8859-1?q?=7CLR=2E+tj=7Dg5=0A=09=25V?=,x^qOs~mnU3]Gn; cQLv&.N>TrxmSFf+p6(30a/{)KUU!s}w\IhQBj}[g}bj0I3^glmC( =?iso-8859-1?q?=0A=09=3AAuzV9=3A=2EhESm-x4h240C=609=3Dw?= MIME-Version: 1.0 Content-Type: Text/Plain; charset="windows-1252" Content-Transfer-Encoding: 7bit Message-Id: <201107201249.39550.hselasky@c2i.net> Cc: "svn-src-head@FreeBSD.org" , "svn-src-all@FreeBSD.org" , "src-committers@FreeBSD.org" Subject: Re: svn commit: r223989 - head/sys/dev/usb/input X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 10:51:53 -0000 On Wednesday 20 July 2011 12:37:44 Andriy Gapon wrote: > > This special code is a workaround. The problem is that when not polling > > the key presses will be fed into syscons I think, and not returned via > > the polling function. That's why there is a timer there to distinguish > > when polling starts and polling stops. It is not enough just to > > enable/disable polling around each key-press like currently done. > > I must admit that I failed to understand this paragraph, so I think that I > should shut up until I know the relevant code better. Try and see for yourself, maybe you will understand it then? Remove the kbd_active == 0 branch in the ukbd.c. Then get into the mount-root prompt. Then start pressing keys. You will see that some keys are captured and some are not. This is because two clients are listening for keys. --HPS From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 12:46:59 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 11BA11065670; Wed, 20 Jul 2011 12:46:59 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F3C7E8FC08; Wed, 20 Jul 2011 12:46:58 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6KCkwDp017393; Wed, 20 Jul 2011 12:46:58 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6KCkwfX017390; Wed, 20 Jul 2011 12:46:58 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201107201246.p6KCkwfX017390@svn.freebsd.org> From: Adrian Chadd Date: Wed, 20 Jul 2011 12:46:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224226 - head/sys/dev/ath/ath_hal/ah_regdomain X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 12:46:59 -0000 Author: adrian Date: Wed Jul 20 12:46:58 2011 New Revision: 224226 URL: http://svn.freebsd.org/changeset/base/224226 Log: These two are ath_hal regulatory domain updates from the Atheros reference driver. * Australia should use FCC3_WORLD * Add some new SKUs; these are just the EEPROM values and haven't been fully defined yet. As such they won't affect anything. Obtained from: Atheros Approved by: re (kib) Modified: head/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_ctry.h head/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_regenum.h Modified: head/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_ctry.h ============================================================================== --- head/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_ctry.h Wed Jul 20 09:53:35 2011 (r224225) +++ head/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_ctry.h Wed Jul 20 12:46:58 2011 (r224226) @@ -1,6 +1,6 @@ /* * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting - * Copyright (c) 2005-2006 Atheros Communications, Inc. + * Copyright (c) 2005-2011 Atheros Communications, Inc. * All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any @@ -34,7 +34,7 @@ static COUNTRY_CODE_TO_ENUM_RD allCountr { CTRY_ALGERIA, NULL1_WORLD }, { CTRY_ARGENTINA, APL3_WORLD }, { CTRY_ARMENIA, ETSI4_WORLD }, - { CTRY_AUSTRALIA, FCC2_WORLD }, + { CTRY_AUSTRALIA, FCC3_WORLD }, { CTRY_AUSTRIA, ETSI1_WORLD }, { CTRY_AZERBAIJAN, ETSI4_WORLD }, { CTRY_BAHRAIN, APL6_WORLD }, Modified: head/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_regenum.h ============================================================================== --- head/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_regenum.h Wed Jul 20 09:53:35 2011 (r224225) +++ head/sys/dev/ath/ath_hal/ah_regdomain/ah_rd_regenum.h Wed Jul 20 12:46:58 2011 (r224226) @@ -1,6 +1,6 @@ /* * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting - * Copyright (c) 2005-2006 Atheros Communications, Inc. + * Copyright (c) 2005-2011 Atheros Communications, Inc. * All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for any @@ -46,6 +46,7 @@ enum { FCC1_WORLD = 0x11, /* Hong Kong */ FCC4_FCCA = 0x12, /* USA - Public Safety */ FCC5_FCCB = 0x13, /* USA w/ 1/2 and 1/4 width channels */ + FCC6_FCCA = 0x14, /* Canada for AP only */ FCC2_FCCA = 0x20, /* Canada */ FCC2_WORLD = 0x21, /* Australia & HK */ @@ -62,6 +63,8 @@ enum { ETSI4_ETSIC = 0x38, ETSI5_WORLD = 0x39, ETSI6_WORLD = 0x34, /* Bulgaria */ + ETSI8_WORLD = 0x3D, /* Russia */ + ETSI9_WORLD = 0x3E, /* Ukraine */ ETSI_RESERVED = 0x33, /* Reserved (Do not used) */ MKK1_MKKA = 0x40, /* Japan (JP1) */ @@ -77,8 +80,9 @@ enum { MKK1_MKKA1 = 0x4A, /* Japan (JE1) */ MKK1_MKKA2 = 0x4B, /* Japan (JE2) */ MKK1_MKKC = 0x4C, /* Japan (MKK1_MKKA,except Ch14) */ + APL2_FCCA = 0x4D, /* Mobile customer */ - APL3_FCCA = 0x50, + APL3_FCCA = 0x50, APL1_WORLD = 0x52, /* Latin America */ APL1_FCCA = 0x53, APL1_APLA = 0x54, @@ -86,9 +90,10 @@ enum { APL2_ETSIC = 0x56, /* Venezuela */ APL5_WORLD = 0x58, /* Chile */ APL6_WORLD = 0x5B, /* Singapore */ - APL7_FCCA = 0x5C, /* Taiwan 5.47 Band */ - APL8_WORLD = 0x5D, /* Malaysia 5GHz */ - APL9_WORLD = 0x5E, /* Korea 5GHz */ + APL7_FCCA = 0x5C, /* Taiwan 5.47 Band */ + APL8_WORLD = 0x5D, /* Malaysia 5GHz */ + APL9_WORLD = 0x5E, /* Korea 5GHz; before 11/2007; now APs only */ + APL10_WORLD = 0x5F, /* Korea 5GHz; After 11/2007; STAs only */ /* * World mode SKUs @@ -97,16 +102,17 @@ enum { WOR1_WORLD = 0x61, /* World1 (WO1 SKU) */ WOR2_WORLD = 0x62, /* World2 (WO2 SKU) */ WOR3_WORLD = 0x63, /* World3 (WO3 SKU) */ - WOR4_WORLD = 0x64, /* World4 (WO4 SKU) */ - WOR5_ETSIC = 0x65, /* World5 (WO5 SKU) */ + WOR4_WORLD = 0x64, /* World4 (WO4 SKU) */ + WOR5_ETSIC = 0x65, /* World5 (WO5 SKU) */ WOR01_WORLD = 0x66, /* World0-1 (WW0-1 SKU) */ WOR02_WORLD = 0x67, /* World0-2 (WW0-2 SKU) */ EU1_WORLD = 0x68, /* Same as World0-2 (WW0-2 SKU), except active scan ch1-13. No ch14 */ - WOR9_WORLD = 0x69, /* World9 (WO9 SKU) */ - WORA_WORLD = 0x6A, /* WorldA (WOA SKU) */ + WOR9_WORLD = 0x69, /* World9 (WO9 SKU) */ + WORA_WORLD = 0x6A, /* WorldA (WOA SKU) */ WORB_WORLD = 0x6B, /* WorldB (WOB SKU) */ + WORC_WORLD = 0x6C, /* WorldC (WOC SKU) */ MKK3_MKKB = 0x80, /* Japan UNI-1 even + MKKB */ MKK3_MKKA2 = 0x81, /* Japan UNI-1 even + MKKA2 */ @@ -132,17 +138,48 @@ enum { MKK8_MKKA2 = 0x90, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + MKKA2 */ MKK8_MKKC = 0x91, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + MKKC */ - /* Following definitions are used only by s/w to map old - * Japan SKUs. + MKK14_MKKA1 = 0x92, /* Japan UNI-1 even + UNI-1 odd + 4.9GHz + MKKA1 */ + MKK15_MKKA1 = 0x93, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + 4.9GHz + MKKA1 */ + + MKK10_FCCA = 0xD0, /* Japan UNI-1 even + UNI-2 + 4.9GHz + FCCA */ + MKK10_MKKA1 = 0xD1, /* Japan UNI-1 even + UNI-2 + 4.9GHz + MKKA1 */ + MKK10_MKKC = 0xD2, /* Japan UNI-1 even + UNI-2 + 4.9GHz + MKKC */ + MKK10_MKKA2 = 0xD3, /* Japan UNI-1 even + UNI-2 + 4.9GHz + MKKA2 */ + + MKK11_MKKA = 0xD4, /* Japan UNI-1 even + UNI-2 + mid-band + 4.9GHz + MKKA */ + MKK11_FCCA = 0xD5, /* Japan UNI-1 even + UNI-2 + mid-band + 4.9GHz + FCCA */ + MKK11_MKKA1 = 0xD6, /* Japan UNI-1 even + UNI-2 + mid-band + 4.9GHz + MKKA1 */ + MKK11_MKKC = 0xD7, /* Japan UNI-1 even + UNI-2 + mid-band + 4.9GHz + MKKC */ + MKK11_MKKA2 = 0xD8, /* Japan UNI-1 even + UNI-2 + mid-band + 4.9GHz + MKKA2 */ + + MKK12_MKKA = 0xD9, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + 4.9GHz + MKKA */ + MKK12_FCCA = 0xDA, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + 4.9GHz + FCCA */ + MKK12_MKKA1 = 0xDB, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + 4.9GHz + MKKA1 */ + MKK12_MKKC = 0xDC, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + 4.9GHz + MKKC */ + MKK12_MKKA2 = 0xDD, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + 4.9GHz + MKKA2 */ + + MKK13_MKKB = 0xDE, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + mid-band + MKKB + All passive + no adhoc */ + + /* + * Following definitions are used only by s/w to map old + * Japan SKUs. */ - MKK3_MKKA = 0xF0, /* Japan UNI-1 even + MKKA */ - MKK3_MKKA1 = 0xF1, /* Japan UNI-1 even + MKKA1 */ - MKK3_FCCA = 0xF2, /* Japan UNI-1 even + FCCA */ - MKK4_MKKA = 0xF3, /* Japan UNI-1 even + UNI-2 + MKKA */ - MKK4_MKKA1 = 0xF4, /* Japan UNI-1 even + UNI-2 + MKKA1 */ - MKK4_FCCA = 0xF5, /* Japan UNI-1 even + UNI-2 + FCCA */ - MKK9_MKKA = 0xF6, /* Japan UNI-1 even + 4.9GHz */ - MKK10_MKKA = 0xF7, /* Japan UNI-1 even + UNI-2 + 4.9GHz */ + MKK3_MKKA = 0xF0, /* Japan UNI-1 even + MKKA */ + MKK3_MKKA1 = 0xF1, /* Japan UNI-1 even + MKKA1 */ + MKK3_FCCA = 0xF2, /* Japan UNI-1 even + FCCA */ + MKK4_MKKA = 0xF3, /* Japan UNI-1 even + UNI-2 + MKKA */ + MKK4_MKKA1 = 0xF4, /* Japan UNI-1 even + UNI-2 + MKKA1 */ + MKK4_FCCA = 0xF5, /* Japan UNI-1 even + UNI-2 + FCCA */ + MKK9_MKKA = 0xF6, /* Japan UNI-1 even + 4.9GHz */ + MKK10_MKKA = 0xF7, /* Japan UNI-1 even + UNI-2 + 4.9GHz */ + MKK6_MKKA1 = 0xF8, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + MKKA1 */ + MKK6_FCCA = 0xF9, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + FCCA */ + MKK7_MKKA1 = 0xFA, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + MKKA1 */ + MKK7_FCCA = 0xFB, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + FCCA */ + MKK9_FCCA = 0xFC, /* Japan UNI-1 even + 4.9GHz + FCCA */ + MKK9_MKKA1 = 0xFD, /* Japan UNI-1 even + 4.9GHz + MKKA1 */ + MKK9_MKKC = 0xFE, /* Japan UNI-1 even + 4.9GHz + MKKC */ + MKK9_MKKA2 = 0xFF, /* Japan UNI-1 even + 4.9GHz + MKKA2 */ /* * Regulator domains ending in a number (e.g. APL1, @@ -157,8 +194,10 @@ enum { APL4 = 0x0450, /* Jordan */ APL5 = 0x0550, /* Chile */ APL6 = 0x0650, /* Singapore */ + APL7 = 0x0750, /* Taiwan, disable ch52 */ APL8 = 0x0850, /* Malaysia */ - APL9 = 0x0950, /* Korea (South) ROC 3 */ + APL9 = 0x0950, /* Korea. Before 11/2007. Now used only by APs */ + APL10 = 0x1050, /* Korea. After 11/2007. For STAs only */ ETSI1 = 0x0130, /* Europe & others */ ETSI2 = 0x0230, /* Europe & others */ @@ -166,16 +205,19 @@ enum { ETSI4 = 0x0430, /* Europe & others */ ETSI5 = 0x0530, /* Europe & others */ ETSI6 = 0x0630, /* Europe & others */ + ETSI8 = 0x0830, /* Russia */ + ETSI9 = 0x0930, /* Ukraine */ ETSIA = 0x0A30, /* France */ ETSIB = 0x0B30, /* Israel */ ETSIC = 0x0C30, /* Latin America */ FCC1 = 0x0110, /* US & others */ FCC2 = 0x0120, /* Canada, Australia & New Zealand */ - FCC3 = 0x0160, /* US w/new middle band & DFS */ - FCC4 = 0x0165, /* US Public Safety */ - FCC5 = 0x0166, /* US w/ 1/2 and 1/4 width channels */ - FCCA = 0x0A10, + FCC3 = 0x0160, /* US w/new middle band & DFS */ + FCC4 = 0x0165, /* US Public Safety */ + FCC5 = 0x0166, /* US w/ 1/2 and 1/4 width channels */ + FCC6 = 0x0610, /* Canada and Australia */ + FCCA = 0x0A10, FCCB = 0x0A11, /* US w/ 1/2 and 1/4 width channels */ APLD = 0x0D50, /* South Korea */ @@ -188,8 +230,14 @@ enum { MKK6 = 0x0640, /* Japan (UNI-1 odd + UNI-1 even) */ MKK7 = 0x0740, /* Japan (UNI-1 odd + UNI-1 even + UNI-2 */ MKK8 = 0x0840, /* Japan (UNI-1 odd + UNI-1 even + UNI-2 + mid-band) */ - MKK9 = 0x0940, /* Japan (UNI-1 even + 4.9 GHZ) */ - MKK10 = 0x0B40, /* Japan (UNI-1 even + UNI-2 + 4.9 GHZ) */ + MKK9 = 0x0940, /* Japan (UNI-1 even + 4.9 GHZ) */ + MKK10 = 0x0B40, /* Japan (UNI-1 even + UNI-2 + 4.9 GHZ) */ + MKK11 = 0x1140, /* Japan (UNI-1 even + UNI-2 + 4.9 GHZ) */ + MKK12 = 0x1240, /* Japan (UNI-1 even + UNI-2 + 4.9 GHZ) */ + MKK13 = 0x0C40, /* Same as MKK8 but all passive and no adhoc 11a */ + MKK14 = 0x1440, /* Japan UNI-1 even + UNI-1 odd + 4.9GHz */ + MKK15 = 0x1540, /* Japan UNI-1 even + UNI-1 odd + UNI-2 + 4.9GHz */ + MKKA = 0x0A40, /* Japan */ MKKC = 0x0A50, From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 13:03:08 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2257F1065678; Wed, 20 Jul 2011 13:03:08 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id EC2338FC14; Wed, 20 Jul 2011 13:03:07 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 6EB8146B24; Wed, 20 Jul 2011 09:03:07 -0400 (EDT) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 0473B8A02C; Wed, 20 Jul 2011 09:03:07 -0400 (EDT) From: John Baldwin To: Robert Watson Date: Wed, 20 Jul 2011 09:03:06 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110617; KDE/4.5.5; amd64; ; ) References: <201106061255.p56Ct3qN031795@svn.freebsd.org> In-Reply-To: <201106061255.p56Ct3qN031795@svn.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201107200903.06449.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.6 (bigwig.baldwin.cx); Wed, 20 Jul 2011 09:03:07 -0400 (EDT) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r222748 - in head/sys: conf netinet netinet/ipfw netinet6 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 13:03:08 -0000 On Monday, June 06, 2011 8:55:03 am Robert Watson wrote: > Author: rwatson > Date: Mon Jun 6 12:55:02 2011 > New Revision: 222748 > URL: http://svn.freebsd.org/changeset/base/222748 > > Log: > Implement a CPU-affine TCP and UDP connection lookup data structure, > struct inpcbgroup. pcbgroups, or "connection groups", supplement the > existing inpcbinfo connection hash table, which when pcbgroups are > enabled, might now be thought of more usefully as a per-protocol > 4-tuple reservation table. > > Connections are assigned to connection groups base on a hash of their > 4-tuple; wildcard sockets require special handling, and are members > of all connection groups. During a connection lookup, a > per-connection group lock is employed rather than the global pcbinfo > lock. By aligning connection groups with input path processing, > connection groups take on an effective CPU affinity, especially when > aligned with RSS work placement (see a forthcoming commit for > details). This eliminates cache line migration associated with > global, protocol-layer data structures in steady state TCP and UDP > processing (with the exception of protocol-layer statistics; further > commit to follow). > > Elements of this approach were inspired by Willman, Rixner, and Cox's > 2006 USENIX paper, "An Evaluation of Network Stack Parallelization > Strategies in Modern Operating Systems". However, there are also > significant differences: we maintain the inpcb lock, rather than using > the connection group lock for per-connection state. > > Likewise, the focus of this implementation is alignment with NIC > packet distribution strategies such as RSS, rather than pure software > strategies. Despite that focus, software distribution is supported > through the parallel netisr implementation, and works well in > configurations where the number of hardware threads is greater than > the number of NIC input queues, such as in the RMI XLR threaded MIPS > architecture. > > Another important difference is the continued maintenance of existing > hash tables as "reservation tables" -- these are useful both to > distinguish the resource allocation aspect of protocol name management > and the more common-case lookup aspect. In configurations where > connection tables are aligned with hardware hashes, it is desirable to > use the traditional lookup tables for loopback or encapsulated traffic > rather than take the expense of hardware hashes that are hard to > implement efficiently in software (such as RSS Toeplitz). > > Connection group support is enabled by compiling "options PCBGROUP" > into your kernel configuration; for the time being, this is an > experimental feature, and hence is not enabled by default. > > Subject to the limited MFCability of change dependencies in inpcb, > and its change to the inpcbinfo init function signature, this change > in principle could be merged to FreeBSD 8.x. > > Reviewed by: bz > Sponsored by: Juniper Networks, Inc. FYI, this commit broke the net-snmp build in ports. The issue is that the alignment on 'struct inpcbgroup' added a new dependency of to (previously sufficed) which breaks the conftest.c that net-snmp uses to see if is valid. Perhaps we should only tag inpcbgroup with an alignment requirement in the kernel and not in userland? It seems we should also be careful in exposing things that depend on CACHE_LINE_SIZE to userland. configure:31545: checking for netinet/in_pcb.h configure:31591: cc -c -DNETSNMP_ENABLE_IPV6 -O2 -pipe -march=pentium4 -fno-stri ct-aliasing -Ufreebsd9 -Dfreebsd9=freebsd9 -DAPPLLIB_EXP="/usr/local/lib/perl5/ 5.12.4/BSDPAN" -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -I/usr/local/lib/perl5/5.12.4/mach/CORE -I/usr/include conftest.c >&5 In file included from conftest.c:217: /usr/include/netinet/in_pcb.h:390: error: requested alignment is not a constant configure:31598: $? = 1 configure: failed program was: | /* confdefs.h. */ .... | /* end confdefs.h. */ | | #if HAVE_SYS_TYPES_H | #include | #endif ... | | #include -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 13:29:39 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A2489106564A; Wed, 20 Jul 2011 13:29:39 +0000 (UTC) (envelope-from jonathan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8717A8FC12; Wed, 20 Jul 2011 13:29:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6KDTdqo018641; Wed, 20 Jul 2011 13:29:39 GMT (envelope-from jonathan@svn.freebsd.org) Received: (from jonathan@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6KDTdPg018637; Wed, 20 Jul 2011 13:29:39 GMT (envelope-from jonathan@svn.freebsd.org) Message-Id: <201107201329.p6KDTdPg018637@svn.freebsd.org> From: Jonathan Anderson Date: Wed, 20 Jul 2011 13:29:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224227 - head/lib/libc/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 13:29:39 -0000 Author: jonathan Date: Wed Jul 20 13:29:39 2011 New Revision: 224227 URL: http://svn.freebsd.org/changeset/base/224227 Log: Add cap_new(2) and cap_getrights(2) symbols to libc. These system calls have already been implemented in the kernel; now we hook up libc symbols so userspace can drive them. Approved by: re (kib), mentor (rwatson) Sponsored by: Google Inc Added: head/lib/libc/sys/cap_new.2 (contents, props changed) Modified: head/lib/libc/sys/Makefile.inc head/lib/libc/sys/Symbol.map Modified: head/lib/libc/sys/Makefile.inc ============================================================================== --- head/lib/libc/sys/Makefile.inc Wed Jul 20 12:46:58 2011 (r224226) +++ head/lib/libc/sys/Makefile.inc Wed Jul 20 13:29:39 2011 (r224227) @@ -77,7 +77,7 @@ ${SPSEUDO}: MAN+= abort2.2 accept.2 access.2 acct.2 adjtime.2 \ aio_cancel.2 aio_error.2 aio_read.2 aio_return.2 \ aio_suspend.2 aio_waitcomplete.2 aio_write.2 \ - bind.2 brk.2 cap_enter.2 chdir.2 chflags.2 \ + bind.2 brk.2 cap_enter.2 cap_new.2 chdir.2 chflags.2 \ chmod.2 chown.2 chroot.2 clock_gettime.2 close.2 closefrom.2 \ connect.2 cpuset.2 cpuset_getaffinity.2 dup.2 execve.2 _exit.2 \ extattr_get_file.2 fcntl.2 fhopen.2 flock.2 fork.2 fsync.2 \ @@ -119,6 +119,7 @@ MAN+= sctp_generic_recvmsg.2 sctp_generi MLINKS+=access.2 eaccess.2 access.2 faccessat.2 MLINKS+=brk.2 sbrk.2 MLINKS+=cap_enter.2 cap_getmode.2 +MLINKS+=cap_new.2 cap_getrights.2 MLINKS+=chdir.2 fchdir.2 MLINKS+=chflags.2 fchflags.2 chflags.2 lchflags.2 MLINKS+=chmod.2 fchmod.2 chmod.2 fchmodat.2 chmod.2 lchmod.2 Modified: head/lib/libc/sys/Symbol.map ============================================================================== --- head/lib/libc/sys/Symbol.map Wed Jul 20 12:46:58 2011 (r224226) +++ head/lib/libc/sys/Symbol.map Wed Jul 20 13:29:39 2011 (r224227) @@ -363,6 +363,8 @@ FBSD_1.1 { FBSD_1.2 { cap_enter; cap_getmode; + cap_new; + cap_getrights; getloginclass; posix_fallocate; rctl_get_racct; Added: head/lib/libc/sys/cap_new.2 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/libc/sys/cap_new.2 Wed Jul 20 13:29:39 2011 (r224227) @@ -0,0 +1,474 @@ +.\" +.\" Copyright (c) 2008-2010 Robert N. M. Watson +.\" All rights reserved. +.\" +.\" This software was developed at the University of Cambridge Computer +.\" Laboratory with support from a grant from Google, Inc. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. 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. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. +.\" +.\" $FreeBSD$ +.\" +.Dd July 20, 2011 +.Dt CAP_NEW 2 +.Os +.Sh NAME +.Nm cap_new , +.Nm cap_getrights +.Nd System calls to manipulate capabilities +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In sys/capability.h +.Ft int +.Fn cap_new "int fd" "cap_rights_t rights" +.Ft int +.Fn cap_getrights "int fd" "cap_rights_t *rightsp" +.Sh DESCRIPTION +Capabilities are special file descriptors derived from an existing file +descriptor, such as one returned by +.Xr fhopen 2 , +.Xr kqueue 2 , +.Xr mq_open 2 , +.Xr open 2 , +.Xr pipe 2 , +.Xr shm_open 2 , +.Xr socket 2 , +or +.Xr socketpair 2 , +but with a restricted set of permitted operations determined by a rights +mask set when the capability is created. +These restricted rights cannot be changed after the capability is created, +although further capabilities with yet more restricted rights may be created +from an existing capability. +In every other sense, a capability behaves in the same way as the file +descriptor it was created from. +.Pp +.Fn cap_new +creates a new capability for the existing file descriptor +.Fa fd , +and returns a file descriptor for it. +Operations on the capability will be limited to those permitted by +.Fa rights , +which is static for the lifetime of the capability. +If +.Fa fd +refers to an existing capability, then +.Fa rights +must be equal to or a subset of the rights on that capability. +As with +.Xr dup 2 +and +.Xr dup2 2 , +many properties are shared between the new capability and the existing file +descriptor, including open file flags, blocking disposition, and file offset. +Many applications will prefer to use the +.Xr cap_limitfd 3 +library call, part of +.Xr libcapsicum 3 , +as it offers a more convenient interface. +.Pp +.Fn cap_getrights +queries the rights associated with the capability referred to by file +descriptor +.Fa fd . +.Pp +These system calls, when combined with +.Xr cap_enter 2 , +may be used to construct process sandboxes with highly granular rights +assignment. +.Sh RIGHTS +The following rights may be specified in a new capability rights mask: +.Bl -tag -width CAP_EXTATTR_DELETE +.It Dv CAP_ACCEPT +Permit +.Xr accept 2 . +.It Dv CAP_ACL_CHECK +Permit checking of an ACL on a file descriptor; there is no cross-reference +for this system call. +.It Dv CAP_ACL_DELETE +Permit +.Xr acl_delete_fd_np 2 . +.It Dv CAP_ACL_GET +Permit +.Xr acl_get_fd 2 +and +.Xr acl_get_fd_np 2 . +.It Dv CAP_ACL_SET +Permit +.Xr acl_set_fd 2 +and +.Xr acl_set_fd_np 2 . +.It Dv CAP_BIND +Permit +.Xr bind 2 . +Note that sockets can also become bound implicitly as a result of +.Xr connect 2 +or +.Xr send 2 , +and that socket options set with +.Xr setsockopt 2 +may also affect binding behavior. +.It Dv CAP_CONNECT +Permit +.Xr connect 2 ; +also required for +.Xr sendto 2 +with a non-NULL destination address. +.It Dv CAP_EVENT +Permit +.Xr select 2 , +.Xr poll 2 , +and +.Xr kevent 2 +to be used in monitoring the file descriptor for events. +.It Dv CAP_FEXECVE +Permit +.Xr fexecve 2 ; +.Dv CAP_READ +will also be required. +.It Dv CAP_EXTATTR_DELETE +Permit +.Xr extattr_delete_fd 2 . +.It Dv CAP_EXTATTR_GET +Permit +.Xr extattr_get_fd 2 . +.It Dv CAP_EXTATTR_LIST +Permit +.Xr extattr_list_fd 2 . +.It Dv CAP_EXTATTR_SET +Permit +.Xr extattr_set_fd 2 . +.It Dv CAP_FCHDIR +Permit +.Xr fchdir 2 . +.It Dv CAP_FCHFLAGS +Permit +.Xr fchflags 2 . +.It Dv CAP_FCHMOD +Permit +.Xr fchmod 2 . +.It Dv CAP_FCHOWN +Permit +.Xr fchown 2 . +.It Dv CAP_FCNTL +Permit +.Xr fcntl 2 ; +be aware that this call provides indirect access to other operations, such as +.Xr flock 2 . +.It Dv CAP_FLOCK +Permit +.Xr flock 2 +and related calls. +.It Dv CAP_FPATHCONF +Permit +.Xr fpathconf 2 . +.It Dv CAP_FSCK +Permit UFS background-fsck operations on the descriptor. +.It Dv CAP_FSTAT +Permit +.Xr fstat 2 . +.It Dv CAP_FSTATFS +Permit +.Xr fstatfs 2 . +.It Dv CAP_FSYNC +Permit +.Xr aio_fsync 2 +and +.Xr fsync 2 . +.Pp +.It Dv CAP_FTRUNCATE +Permit +.Xr ftruncate 2 . +.It Dv CAP_FUTIMES +Permit +.Xr futimes 2 . +.It Dv CAP_GETPEERNAME +Permit +.Xr getpeername 2 . +.It Dv CAP_GETSOCKNAME +Permit +.Xr getsockname 2 . +.It Dv CAP_GETSOCKOPT +Permit +.Xr getsockopt 2 . +.It Dv CAP_IOCTL +Permit +.Xr ioctl 2 . +Be aware that this system call has enormous scope, including potentially +global scope for some objects. +.It Dv CAP_KEVENT +Permit +.Xr kevent 2 ; +.Dv CAP_EVENT +is also required on file descriptors that will be monitored using +.Xr kevent 2 . +.It Dv CAP_LISTEN +Permit +.Xr listen 2 ; +not much use (generally) without +.Dv CAP_BIND . +.It Dv CAP_LOOKUP +Permit the file descriptor to be used as a starting directory for calls such +as +.Xr linkat 2 , +.Xr openat 2 , +and +.Xr unlinkat 2 . +Note that these calls are not available in capability mode as they manipulate +a global name space; see +.Xr cap_enter 2 +for details. +.It Dv CAP_MAC_GET +Permit +.Xr mac_get_fd 2 . +.It Dv CAP_MAC_SET +Permit +.Xr mac_set_fd 2 . +.It Dv CAP_MMAP +Permit +.Xr mmap 2 ; +specific invocations may also require +.Dv CAP_READ +or +.Dv CAP_WRITE . +.Pp +.It Dv CAP_PDGETPID +Permit +.Xr pdgetpid 2 . +.It Dv CAP_PDKILL +Permit +.Xr pdkill 2 . +.It Dv CAP_PDWAIT +Permit +.Xr pdwait 2 . +.It Dv CAP_PEELOFF +Permit +.Xr sctp_peeloff 2 . +.It Dv CAP_READ +Allow +.Xr aio_read 2 , +.Xr pread 2 , +.Xr read 2 , +.Xr recv 2 , +.Xr recvfrom 2 , +.Xr recvmsg 2 , +and related system calls. +.Pp +For files and other seekable objects, +.Dv CAP_SEEK +may also be required. +.It Dv CAP_REVOKE +Permit +.Xr frevoke 2 +in certain ABI compatibility modes that support this system call. +.It Dv CAP_SEEK +Permit operations that seek on the file descriptor, such as +.Xr lseek 2 , +but also required for I/O system calls that modify the file offset, such as +.Xr read 2 +and +.Xr write 2 . +.It Dv CAP_SEM_GETVALUE +Permit +.Xr sem_getvalue 3 . +.It Dv CAP_SEM_POST +Permit +.Xr sem_post 3 . +.It Dv CAP_SEM_WAIT +Permit +.Xr sem_wait 3 +and +.Xr sem_trywait 3 . +.It Dv CAP_SETSOCKOPT +Permit +.Xr setsockopt 2 ; +this controls various aspects of socket behavior and may affect binding, +connecting, and other behaviors with global scope. +.It Dv CAP_SHUTDOWN +Permit explicit +.Xr shutdown 2 ; +closing the socket will also generally shut down any connections on it. +.It Dv CAP_TTYHOOK +Allow configuration of TTY hooks, such as +.Xr snp 4 , +on the file descriptor. +.It Dv CAP_WRITE +Allow +.Xr aio_write 2 , +.Xr pwrite 2 , +.Xr send 2 , +.Xr sendmsg 2 , +.Xr sendto 2 , +.Xr write 2 , +and related system calls. +.Pp +For files and other seekable objects, +.Dv CAP_SEEK +may also be required. +.Pp +For +.Xr sendto 2 +with a non-NULL connection address, +.Dv CAP_CONNECT +is also required. +.El +.Sh CAVEAT +The +.Fn cap_new +system call and the capabilities it creates may be used to assign +fine-grained rights to sandboxed processes running in capability mode. +However, the semantics of objects accessed via file descriptors are complex, +so caution should be exercised in passing object capabilities into sandboxes. +.Sh RETURN VALUES +If successful, +.Fn cap_new +returns a non-negative integer, termed a file descriptor. +It returns -1 on failure, and sets +.Va errno +to indicate the error. +.Pp +.Rv -std cap_getrights +.Sh ERRORS +.Fn cap_new +may return the following errors: +.Bl -tag -width Er +.It Bq Er EBADF +The +.Fa fd +argument is not a valid active descriptor. +.It Bq Er EINVAL +An invalid right has been requested in +.Fa rights . +.It Bq Er EMFILE +The process has already reached its limit for open file descriptors. +.It Bq Er ENFILE +The system file table is full. +.It Bq Er EPERM +.Fa rights +contains requested rights not present in the current rights mask associated +with the capability referenced by +.Fa fd , +if any. +.El +.Pp +.Fn cap_getrights +may return the following errors: +.Bl -tag -width Er +.It Bq Er EBADF +The +.Fa fd +argument is not a valid active descriptor. +.It Bq Er EINVAL +The +.Fa fd +argument is not a capability. +.El +.Sh SEE ALSO +.Xr accept 2 , +.Xr acl_delete_fd_np 2 , +.Xr acl_get_fd 2 , +.Xr acl_get_fd_np 2 , +.Xr acl_set_fd_np 2 , +.Xr aio_read 2 , +.Xr aio_fsync 2 , +.Xr aio_write 2 , +.Xr bind 2 , +.Xr cap_enter 2 , +.Xr connect 2 , +.Xr dup 2 , +.Xr dup2 2 , +.Xr extattr_delete_fd 2 , +.Xr extattr_get_fd 2 , +.Xr extattr_list_fd 2 , +.Xr extattr_set_fd 2 , +.Xr fchflags 2 , +.Xr fchown 2 , +.Xr fcntl 2 , +.Xr fexecve 2 , +.Xr fhopen 2 , +.Xr flock 2 , +.Xr fpathconf 2 , +.Xr fstat 2 , +.Xr fstatfs 2 , +.Xr fsync 2 , +.Xr ftruncate 2 , +.Xr futimes 2 , +.Xr getpeername 2 , +.Xr getsockname 2 , +.Xr getsockopt 2 , +.Xr ioctl 2 , +.Xr kevent 2 , +.Xr kqueue 2 , +.Xr linkat 2 , +.Xr listen 2 , +.Xr mac_get_fd 2 , +.Xr mac_set_fd 2 , +.Xr mmap 2 , +.Xr mq_open 2 , +.Xr open 2 , +.Xr openat 2 , +.Xr pdgetpid 2 , +.Xr pdkill 2 , +.Xr pdwait 2 , +.Xr pipe 2 , +.Xr poll 2 , +.Xr pread 2 , +.Xr pwrite 2 , +.Xr read 2 , +.Xr recv 2 , +.Xr recvfrom 2 , +.Xr recvmsg 2 , +.Xr sctp_peeloff 2 , +.Xr select 2 , +.Xr send 2 , +.Xr sendmsg 2 , +.Xr sendto 2 , +.Xr setsockopt 2 , +.Xr shm_open 2 , +.Xr shutdown 2 , +.Xr socket 2 , +.Xr socketpair 2 , +.Xr unlinkat 2 , +.Xr write 2 , +.Xr cap_limitfd 3 , +.Xr libcapsicum 3 , +.Xr sem_getvalue 3 , +.Xr sem_post 3 , +.Xr sem_trywait 3 , +.Xr sem_wait 3 , +.Xr snp 4 +.Sh HISTORY +Support for capabilities and capabilities mode was developed as part of the +.Tn TrustedBSD +Project. +.Sh BUGS +This man page should list the set of permitted system calls more specifically +for each capability right. +.Pp +Capability rights sometimes have unclear indirect impacts, which should be +documented, or at least hinted at. +.Sh AUTHORS +These functions and the capability facility were created by +.An "Robert N. M. Watson" +at the University of Cambridge Computer Laboratory with support from a grant +from Google, Inc. From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 15:18:25 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1152B1065675; Wed, 20 Jul 2011 15:18:25 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 014718FC28; Wed, 20 Jul 2011 15:18:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6KFIOsc021827; Wed, 20 Jul 2011 15:18:24 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6KFIOBS021825; Wed, 20 Jul 2011 15:18:24 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201107201518.p6KFIOBS021825@svn.freebsd.org> From: John Baldwin Date: Wed, 20 Jul 2011 15:18:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224228 - head/sys/boot/forth X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 15:18:25 -0000 Author: jhb Date: Wed Jul 20 15:18:24 2011 New Revision: 224228 URL: http://svn.freebsd.org/changeset/base/224228 Log: Note that the "kernel" variable in loader.conf is the name of a directory containing a kernel under /boot and that it's default value is "kernel" not "/boot/kernel/kernel". PR: docs/158992 Reported by: Wayne Mitchell wayne.mitchell.iz at gmail Approved by: re (kib) MFC after: 1 week Modified: head/sys/boot/forth/loader.conf.5 Modified: head/sys/boot/forth/loader.conf.5 ============================================================================== --- head/sys/boot/forth/loader.conf.5 Wed Jul 20 13:29:39 2011 (r224227) +++ head/sys/boot/forth/loader.conf.5 Wed Jul 20 15:18:24 2011 (r224228) @@ -23,7 +23,7 @@ .\" SUCH DAMAGE. .\" .\" $FreeBSD$ -.Dd January 16, 2008 +.Dd July 20, 2011 .Dt LOADER.CONF 5 .Os .Sh NAME @@ -107,6 +107,9 @@ present file. Name of the kernel to be loaded. If no kernel name is set, no additional modules will be loaded. +The name must be a subdirectory of +.Pa /boot +that contains a kernel. .It Ar kernel_options Flags to be passed to the kernel. .It Ar password @@ -190,7 +193,7 @@ replacing it with .Dq spinning character (useful for embedded products and such). .It Va kernel -.Pq Dq Pa /boot/kernel/kernel +.Pq Dq kernel .It Va loader_conf_files .Pq Dq Pa /boot/loader.conf /boot/loader.conf.local .It Va splash_bmp_load From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 15:32:33 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 55FDD1065670; Wed, 20 Jul 2011 15:32:33 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail06.syd.optusnet.com.au (mail06.syd.optusnet.com.au [211.29.132.187]) by mx1.freebsd.org (Postfix) with ESMTP id 7E1C28FC14; Wed, 20 Jul 2011 15:32:32 +0000 (UTC) Received: from c122-106-165-191.carlnfd1.nsw.optusnet.com.au (c122-106-165-191.carlnfd1.nsw.optusnet.com.au [122.106.165.191]) by mail06.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id p6KFWKAL030693 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 21 Jul 2011 01:32:21 +1000 Date: Thu, 21 Jul 2011 01:32:20 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Hans Petter Selasky In-Reply-To: <201107201249.39550.hselasky@c2i.net> Message-ID: <20110720221325.E1436@besplex.bde.org> References: <201107181610.49443.hselasky@c2i.net> <4E26AFF8.8080107@FreeBSD.org> <201107201249.39550.hselasky@c2i.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: "svn-src-head@FreeBSD.org" , "svn-src-all@FreeBSD.org" , "src-committers@FreeBSD.org" , Andriy Gapon Subject: Re: svn commit: r223989 - head/sys/dev/usb/input X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 15:32:33 -0000 On Wed, 20 Jul 2011, Hans Petter Selasky wrote: > On Wednesday 20 July 2011 12:37:44 Andriy Gapon wrote: >>> This special code is a workaround. The problem is that when not polling >>> the key presses will be fed into syscons I think, and not returned via >>> the polling function. That's why there is a timer there to distinguish >>> when polling starts and polling stops. It is not enough just to >>> enable/disable polling around each key-press like currently done. >> >> I must admit that I failed to understand this paragraph, so I think that I >> should shut up until I know the relevant code better. > > Try and see for yourself, maybe you will understand it then? Remove the > kbd_active == 0 branch in the ukbd.c. Then get into the mount-root prompt. > Then start pressing keys. You will see that some keys are captured and some > are not. This is because two clients are listening for keys. The low-level console driver was fundamentally broken by the multiple-console changes in 2001 (and was a little broken before then), except that these changes didn't affect releases until much later (RELENG_4 doesn't have the breakage). Loss of keystrokes at the mountroot prompt is exactly as expected, since there is often an interrupt handler listening for them, and it is exactly as expected that the interrupt handler wins the race to read them some of the time. The proportion of wins depends on the driver, and for some reason the syscons AT keyboard interrupt handler rarely wins so the bug is not so noticeable with it. It is especially noticeable for the sio driver for a technical reason not related to the interrupt handler reason (see below). The low-level console driver should switch to polling mode to read the keystrokes. However, its API is broken as designed, so it can only [tell the driver level to] do this around each poll for a character. Polling involves polling each possible console in turn, so polling mode must be left after unsuccessfully polling for a short time so as to get to the next console. This is now done even if there is only 1 console. Before the multiple-console changes, polling mode was only left after _successfully_ polling for as long as necessary to read a character, so things mostly worked -- the race was only lost if a character arrives in between polls, and you can't type fast enough for the time between polls to be significant compared with the time in polls. The multiple-console changes left the driver interface function cn_getc() unused. cn_getc() switches into polling mode and then polls for as long as necessary to read a character, and of course it doesn't switch out of polling mode after each poll. This doesn't work for multiple consoles, at least if more than 1 console is active, since it doesn't return until one instance of it succeeds. So the polling loop was moved out of the driver layer, even when only 1 console is active. The existing interface cn_checkc() was used to poll each console in turn. This interface was always broken as designed, but it was used only during panic() to check for a key to abort the dump and the timeout, so the brokenness was little noticed (and if panic() weren't broken too, it would stop all interrupt handlers and other listeners). cn_getc() should have been used to keep the case of 1 active console working until the API is fixed. Next, starting in 2006 the API was changed to be even more broken than as designed, by removing the working cn_getc() interface from it but keeping the non-working cn_checkc() interface, and obfuscating this change by renaming cn_checkc to cn_getc. Driver functions were also renamed, so now the only instances of the *checkc in drivers are in dcons. The higher-level functions cngetc() and cncheckc() still have their old names, so they no longer match the lower-level function names. A non-broken API needs cn_open() and cn_close() functions which would normally switch the driver in an out of polling mode. Given these interfaces easy to fix the per-character poll to work as well as before the multiple console changes, including for multiple active consoles. Just call cn_open() and cn_close() on every active console around the whole polling loop. A little more is required to prevent races between characters, and to avoid the races inherent in the cn_checkc() API. For multi-char input like that at the mountroot prompt, calling cn_open() and cn_close() around the loop in gets(9) is adequate. The functions should be almost no-ops when called nested for things like this. BTW, gets(9) is bogusly named. It is not harmful like gets(3), since it takes a buffer size arg. It is used approximately once, for mountroot input, so renaming it would be easy. Perhaps it should be named cn_gets() and be implemented closer to the console driver, or be implemented closer to printf() (it is now in libkern). For debugger entry and panics, the whole operation should be wrapped by cn_open()/cn_close(). This covers most cases. Some console drivers now sort of work in debugger mode by abusing the kdb_active variable, or because debugger entry stops interrupts and other CPUs. I started fixing this in FreeBSD in 2000 (I got yokota to do most of the work, especially in syscons). There was a cn_dbctl() interface which was intended to be used like ioctl() (it allows any number of sub-functions) but was only used for operations like open() and close(). This was called on debugger entry and exit to inform console drivers that the should switch to polling mode for things like keyboards and do anything else necessary to run in debugger mode. syscons, but no other driver, used this, mainly to avoid hacking on the kdb_active flag. There should be significant differences, but were only small ones in practice, between being in debugger mode and being in polling mode. For example, entering console i/o mode for syscons should involve switching the video mode and perhaps the frame buffer to a special one, in case the current one is unusable for some reason (it might be controlled by X, or in the middle of an initialization, or you might just want to avoid scribbling on its frame buffer). Thus, entering console i/o mode might be an extemely heavyweight operation. You don't want to do it on every entry to debugger mode. Even if the switch is very fast, it would make the screen flicker to switch the frame buffer on every entry to the debugger for things like tracing (but not displaying) every instruction when single stepping using 'n' in ddb. I missed the need for the cn_open() and cn_close() functions when I added cn_dbctl(). cn_dbctl() sounds debugger-specific and was intended to be so. I had forgotten that it was based on the console driver in my x86 debugger which was written and used mainly between just before FreeBSD existed. The debugger has functions for open(), close(), input(), output() and ioctl(). It supports multiple devices. The input() function is like cn_checkc() was and depends on the device being open to avoid interference. I/o on every device can be turned on and off independently for each device and direction once the devices are open. Debugger entry opens all available devices and debugger exit closes all open devices, but only if the entry is deep enough to need to do i/o (that's if there is something to display or input needs to be waited for). Supported devices are PC VGA screens in simple modes, PC AT keyboards, various UARTs and a memory output device. Open/close of a VGA device involved switching its frame buffer. Open/close of UARTs involved switching their complete h/w state (possible since this is small and registers are almost read/write). This seemed more than needed for FreeBSD, so the only thing I copied from it into FreeBSD was the state switch for UARTs. This turned into a switch on every i/o call instead of a switch in open/close. It is difficult to do device state switches reentrantly, especially on every i/o call, but they do work almost reentrantly for UARTs in sio (much more so than debugger entry, using the stack for the state, etc.). For more heavyweight switches like those for frame buffers, it is obvious that switching on every i/o call is no good, since at best the screen will flicker on every poll, and you can't stack many frame buffers in an 8K kernel stack... The cn_dbctl() API was only used by syscons, and was removed in 2006, leaving the parts of syscons that used it more broken than before it existed :-(. (Some of these parts hacked on [k]db_active, but checks of that weren't restored. The checks of the corresponding `debugger' variable weren't even removed, but since `debugger' was only changed from 0 to 1 in in removed code, the checks have no effect.) sio used to work better at the mountroot prompt for another reason: unlike for keyboards, it is common to have a dedicated serial console. Then interrupts don't need to be used, so the interrupt handler is not almost guaranteed to eat the input. Originally, interrupts were only enabled on sio serial consoles when the console was also used as an open tty. However, for serial consoles to detect changes that map to debugger entries, it is necessary to always enable interrupts on serial console devices. It is then impossible for the interrupt handler to not see input unrelated to debugger entry, and difficult for it to buffer the input where the console driver can see it. This change was made in 2001 (only if a debugger and entries to it from sio are enabled). The state switch on every in sio i/o causes additional problems with the excessive polling for multiple consoles. Although the state switch is fairly reentrant and attempts to avoid null changes to the hardware, some devices don't like it being done at a high rate. Sometimes (especially when it is actually needed and drivers that don't do it would just hang; e.g., if the current state is 9600 bps but the console state is 115200 bps); the state switch can't be null (and in the speed change example, is certain to clobber any i/o in progress). Then the polling can't work, and excessive polling makes the problem worse. My version of sio uses the following hack so that input at mountroot is possible even with very destructive state switches: % Index: sio.c % =================================================================== % RCS file: /home/ncvs/src/sys/dev/sio/sio.c,v % retrieving revision 1.442 % diff -u -2 -r1.442 sio.c % --- sio.c 25 Jun 2004 10:51:33 -0000 1.442 % +++ sio.c 18 Oct 2010 09:58:33 -0000 % @@ -2881,6 +3370,12 @@ % * them by clearing the MCR_IENABLE bit, since that might cause % * an interrupt by floating the IRQ line. % + * We don't want loopback. % + * XXX we clobber MCR_PRESCALE and MCR_DRS and 2 reserved bits. % */ % outb(iobase + com_mcr, (sp->mcr & MCR_IENABLE) | MCR_DTR | MCR_RTS); % + if (sp->cfcr != CFCR_8BITS || sp->dlbl != dlbl || sp->dlbh != dlbh % + || (sp->mcr & ~(MCR_IENABLE | MCR_DRS | MCR_DTR | MCR_RTS))) % + for (i = 0; i < 100; i++) % + (void)inb(0x84); % } % This adds about 100 uS of delay to the state switch, but only if the state switch is non-null. This results in the device being in the state that is good for debugger i/o much longer that it is in the (different and thus bad) state at the time the call than it otherwise would be, so there is a much larger chance of the i/o's getting through. A delay in each poll can be added unconditionally even if the driver doesn't dream of state switches, to reduce contention with the interrupt handler. sio's mode switch gives smaller but perhaps significant delays in each poll accidentally by doing lots of i/o's to read the current state to see if it needs to be switched, etc. This might reduce the races significantly. The delay of 100 uS is a compromise, bised towards the lowest value that mostly works. I tried silly delays like 1 second. It's painful to type if the rate is limited by a several 1-second delays to a fraction of 1 cps. But if the delay is much shorter than 100 uS, then it's painful to type because most of the input doesn't get through or garbage or extras get through. Bruce From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 16:53:32 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E952C1065670; Wed, 20 Jul 2011 16:53:32 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BF0B08FC08; Wed, 20 Jul 2011 16:53:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6KGrW2w024696; Wed, 20 Jul 2011 16:53:32 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6KGrWN0024692; Wed, 20 Jul 2011 16:53:32 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201107201653.p6KGrWN0024692@svn.freebsd.org> From: Xin LI Date: Wed, 20 Jul 2011 16:53:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224231 - in head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 16:53:33 -0000 Author: delphij Date: Wed Jul 20 16:53:32 2011 New Revision: 224231 URL: http://svn.freebsd.org/changeset/base/224231 Log: Add a new field to in-core znode, z_rdev, to represent device nodes. PR: kern/159010 Reviewed by: mm@ Approved by: re (kib) MFC after: 2 weeks Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h Wed Jul 20 16:52:51 2011 (r224230) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h Wed Jul 20 16:53:32 2011 (r224231) @@ -209,6 +209,7 @@ typedef struct znode { boolean_t z_is_sa; /* are we native sa? */ /* FreeBSD-specific field. */ struct task z_task; + dev_t z_rdev; } znode_t; Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Wed Jul 20 16:52:51 2011 (r224230) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Wed Jul 20 16:53:32 2011 (r224231) @@ -2694,7 +2694,7 @@ zfs_getattr(vnode_t *vp, vattr_t *vap, i vap->va_nlink = MIN(links, UINT32_MAX); /* nlink_t limit! */ vap->va_size = zp->z_size; vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0]; -// vap->va_rdev = zfs_cmpldev(pzp->zp_rdev); + vap->va_rdev = zp->z_rdev; vap->va_seq = zp->z_seq; vap->va_flags = 0; /* FreeBSD: Reset chflags(2) flags. */ Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Wed Jul 20 16:52:51 2011 (r224230) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Wed Jul 20 16:53:32 2011 (r224231) @@ -700,6 +700,16 @@ zfs_znode_alloc(zfsvfs_t *zfsvfs, dmu_bu case VDIR: zp->z_zn_prefetch = B_TRUE; /* z_prefetch default is enabled */ break; + case VBLK: + case VCHR: + { + uint64_t rdev; + VERIFY(sa_lookup(zp->z_sa_hdl, SA_ZPL_RDEV(zfsvfs), + &rdev, sizeof (rdev)) == 0); + + zp->z_rdev = zfs_cmpldev(rdev); + } + break; case VFIFO: vp->v_op = &zfs_fifoops; break; From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 18:51:18 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ED665106566C; Wed, 20 Jul 2011 18:51:18 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DD5DC8FC08; Wed, 20 Jul 2011 18:51:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6KIpIp3028157; Wed, 20 Jul 2011 18:51:18 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6KIpIqR028155; Wed, 20 Jul 2011 18:51:18 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201107201851.p6KIpIqR028155@svn.freebsd.org> From: Marius Strobl Date: Wed, 20 Jul 2011 18:51:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224232 - head/sys/sparc64/include X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 18:51:19 -0000 Author: marius Date: Wed Jul 20 18:51:18 2011 New Revision: 224232 URL: http://svn.freebsd.org/changeset/base/224232 Log: Merge from r224217: Bump MAXCPU to 64. Approved by: re (kib) Modified: head/sys/sparc64/include/param.h Modified: head/sys/sparc64/include/param.h ============================================================================== --- head/sys/sparc64/include/param.h Wed Jul 20 16:53:32 2011 (r224231) +++ head/sys/sparc64/include/param.h Wed Jul 20 18:51:18 2011 (r224232) @@ -51,7 +51,7 @@ #if defined(SMP) || defined(KLD_MODULE) #ifndef MAXCPU -#define MAXCPU 16 +#define MAXCPU 64 #endif #else #define MAXCPU 1 From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 20:24:30 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B3B8D106566C; Wed, 20 Jul 2011 20:24:30 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A2D978FC17; Wed, 20 Jul 2011 20:24:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6KKOULT030891; Wed, 20 Jul 2011 20:24:30 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6KKOUPW030889; Wed, 20 Jul 2011 20:24:30 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201107202024.p6KKOUPW030889@svn.freebsd.org> From: Andrew Gallatin Date: Wed, 20 Jul 2011 20:24:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224233 - stable/8/sys/dev/mxge X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 20:24:30 -0000 Author: gallatin Date: Wed Jul 20 20:24:30 2011 New Revision: 224233 URL: http://svn.freebsd.org/changeset/base/224233 Log: MFC r223957: Fix media reporting for dual port CX4 myri10ge NICs Modified: stable/8/sys/dev/mxge/if_mxge.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/mxge/if_mxge.c ============================================================================== --- stable/8/sys/dev/mxge/if_mxge.c Wed Jul 20 18:51:18 2011 (r224232) +++ stable/8/sys/dev/mxge/if_mxge.c Wed Jul 20 20:24:30 2011 (r224233) @@ -2837,7 +2837,7 @@ mxge_media_init(mxge_softc_t *sc) return; } } - if (*ptr == 'C') { + if (*ptr == 'C' || *(ptr +1) == 'C') { /* -C is CX4 */ sc->connector = MXGE_CX4; mxge_media_set(sc, IFM_10G_CX4); From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 20:24:40 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 95BE1106566C; Wed, 20 Jul 2011 20:24:40 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 84BA28FC08; Wed, 20 Jul 2011 20:24:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6KKOeEQ030932; Wed, 20 Jul 2011 20:24:40 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6KKOe4u030930; Wed, 20 Jul 2011 20:24:40 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201107202024.p6KKOe4u030930@svn.freebsd.org> From: Andrew Gallatin Date: Wed, 20 Jul 2011 20:24:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224234 - stable/7/sys/dev/mxge X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 20:24:40 -0000 Author: gallatin Date: Wed Jul 20 20:24:40 2011 New Revision: 224234 URL: http://svn.freebsd.org/changeset/base/224234 Log: MFC r223957: Fix media reporting for dual port CX4 myri10ge NICs Modified: stable/7/sys/dev/mxge/if_mxge.c Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/dev/mxge/if_mxge.c ============================================================================== --- stable/7/sys/dev/mxge/if_mxge.c Wed Jul 20 20:24:30 2011 (r224233) +++ stable/7/sys/dev/mxge/if_mxge.c Wed Jul 20 20:24:40 2011 (r224234) @@ -2651,7 +2651,7 @@ mxge_media_init(mxge_softc_t *sc) return; } } - if (*ptr == 'C') { + if (*ptr == 'C' || *(ptr +1) == 'C') { /* -C is CX4 */ sc->connector = MXGE_CX4; mxge_media_set(sc, IFM_10G_CX4); From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 21:17:55 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7105D106564A; Wed, 20 Jul 2011 21:17:55 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5F7578FC0A; Wed, 20 Jul 2011 21:17:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6KLHtgT032534; Wed, 20 Jul 2011 21:17:55 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6KLHtgL032531; Wed, 20 Jul 2011 21:17:55 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201107202117.p6KLHtgL032531@svn.freebsd.org> From: Andrew Gallatin Date: Wed, 20 Jul 2011 21:17:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224235 - stable/8/sys/dev/mxge X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 21:17:55 -0000 Author: gallatin Date: Wed Jul 20 21:17:55 2011 New Revision: 224235 URL: http://svn.freebsd.org/changeset/base/224235 Log: MFC r223958: Update mxge(4) firmware to the latest version available from Myricom (1.4.53a). Modified: stable/8/sys/dev/mxge/eth_z8e.h stable/8/sys/dev/mxge/ethp_z8e.h stable/8/sys/dev/mxge/rss_eth_z8e.h stable/8/sys/dev/mxge/rss_ethp_z8e.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/mxge/eth_z8e.h ============================================================================== --- stable/8/sys/dev/mxge/eth_z8e.h Wed Jul 20 20:24:40 2011 (r224234) +++ stable/8/sys/dev/mxge/eth_z8e.h Wed Jul 20 21:17:55 2011 (r224235) @@ -1,6 +1,6 @@ /******************************************************************************* -Copyright (c) 2006-2010, Myricom Inc. +Copyright (c) 2006-2011, Myricom Inc. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -28,7287 +28,7495 @@ POSSIBILITY OF SUCH DAMAGE. $FreeBSD$ ***************************************************************************/ -static unsigned int eth_z8e_uncompressed_length = 367564 ; -static unsigned int eth_z8e_length = 116477 ; -static unsigned char eth_z8e[116477 + 1] = - "\x78\x9c\xec\xbd\x7f\x78\x54\x45\xb2\x37\x5e\x99\x0c\x32\x89\x81" - "\x19\x31\xe2\x88\xb8\x0e\x8a\x1a\x5d\x90\xa8\xb8\x1b\x5d\xd0\x28" - "\xe0\xa2\xf2\x23\xab\xe8\x46\x45\x03\x1a\x70\xd0\x88\x11\x02\x0c" - "\x10\x32\x61\xc0\xdd\x04\xf9\xa5\x46\x8d\x10\x48\x80\xe0\xc5\x5d" - "\x54\x44\xbc\x46\x05\x9c\xdd\x64\xbf\x0f\xf7\x5e\x92\x61\xf7\xb2" - "\xef\x9b\xdd\x2f\x7b\x77\xc4\xc8\x8e\xbc\x01\x46\x32\x90\x31\x99" - "\x39\xfd\xfd\x54\xf7\x39\xc9\xcc\x30\x41\x79\xef\x7d\x9e\xef\x3f" - "\x9b\xe7\x99\x9c\x73\xfa\x74\x57\x57\x57\x57\x55\x57\x77\x57\xd7" - "\x21\xba\xf0\x3f\x3f\x59\xf8\x92\x42\xa6\x86\xe0\xef\xfe\x2f\xca" +static unsigned int eth_z8e_uncompressed_length = 375636 ; +static unsigned int eth_z8e_length = 119802 ; +static unsigned char eth_z8e[119802 + 1] = + "\x78\x9c\xec\xbd\x7f\x78\x54\xd5\xb5\x3f\xbc\x32\x99\xc8\x24\x06" + "\x26\x62\xc4\x29\xc5\x76\xb0\x41\xa3\x05\x89\x16\xdb\xd4\x42\x0d" + "\x02\x1a\x2c\xbf\x14\x6c\xa3\xa2\x09\x1a\xe8\xa0\x11\x22\x44\x18" + "\x20\x64\xc2\x80\x36\x41\x20\xa9\xa0\x46\x09\x09\xbd\xf2\x23\x56" + "\xac\xd8\x02\x62\x45\x19\x24\xf6\x4b\x7b\x93\x0c\xed\x8b\xf7\x9b" + "\xdb\x17\x6f\x47\x6e\x84\x94\x1b\x60\x4a\x06\x32\x26\x33\x67\xbf" + "\x9f\xb5\xf7\x39\xc9\xcc\x30\x41\xb9\xf7\x3e\xcf\xfb\x4f\xf3\x3c" + "\x93\x73\xce\x3e\x7b\xaf\xbd\xf6\xda\x6b\xad\xbd\xf6\xde\x6b\xaf" + "\x43\x74\xe5\x7f\x3e\xb2\xf0\x25\x81\x4c\x07\x8a\x0f\xfd\x37\xca" "\xff\xf3\xef\x9f\x7f\xff\xfc\xfb\xe7\xdf\x3f\xff\xfe\xf9\xf7\xcf" - "\xbf\xff\x7f\xff\x82\x29\x34\xfa\xb4\xc9\x4c\xbf\x5f\x4f\xd4\xe9" - "\xb1\x0c\xf5\x53\x57\xf1\x5b\xaf\x8b\x08\x5e\xa5\x60\x9c\x1f\xca" - "\x57\xfe\xbd\x86\x34\xd3\x7a\xb2\x5c\x63\xa3\x8c\x71\x9b\x88\xaa" - "\x06\x8b\xf6\xd7\xdf\x14\xc1\x15\x6f\x8a\xf6\xf1\xdb\x89\x9a\x86" - "\x13\xbd\x3e\x58\x84\x00\x63\xba\x9f\x9e\x9a\xc6\x30\x56\xe0\x99" - "\xdf\xaf\x1c\x2c\x82\x48\x2f\x41\xfa\x41\x4e\x5f\x3e\x18\xb0\x32" - "\x89\x3c\x6f\x8a\x70\x0c\x5c\x0b\x97\x67\x98\xe3\x87\x49\x5c\xea" - "\x13\xe0\x30\x8c\x06\x3f\x15\x8c\x3f\x0f\x8c\x0c\x03\xaf\x90\x89" - "\x52\x18\x5e\x87\x87\xec\x21\x8f\xf7\x32\x94\x0d\xa1\x3d\x59\x5c" - "\x76\x1d\xf2\x08\x0f\xa5\x36\xb9\x22\xe4\xb8\x86\x52\x8e\x51\xfa" - "\x16\x5c\x4d\xb8\xbe\xc1\x6d\x5d\xa1\xca\x0d\x67\x18\x28\x9b\xd2" - "\xe9\x49\xcb\xee\x29\x0b\xd8\x8e\x32\x32\x23\xef\x9c\x90\xc9\x6b" - "\x52\x79\x6d\x69\x7a\x5e\x13\xf2\x4e\x37\xf2\xaa\x77\xa6\xfb\xf5" - "\x77\x17\xe3\x9d\x2b\xfe\x9d\xf9\x35\xfd\x5d\x06\xde\x55\x25\xe0" - "\x67\xf6\x75\x45\xe8\x18\xa5\xed\x04\x2e\x8e\x46\xf4\x08\x97\xd1" - "\xf3\x5f\x82\xfc\x4d\xf1\xb0\x88\xf4\x77\x83\xf0\xce\x1f\xff\x6e" - "\x7f\xb6\xfe\xee\x72\xbc\x8b\xc4\xbf\x4b\x31\xca\xd9\x3b\x3d\xe9" - "\xf6\x24\xed\xe4\xfa\x53\x54\xdd\xdc\x86\xf4\x31\xc8\x53\xce\x79" - "\xa6\x39\xca\x89\xfb\x8a\xdf\x35\xd6\xf5\xd4\xcf\x79\x66\x18\x70" - "\xfc\x28\x1f\x43\x53\xd0\x32\xbd\xd4\x28\x3f\xde\xc1\x30\x48\xd2" - "\x90\xe1\xf8\x29\x6d\x22\xc3\xe1\x67\xdc\x0f\xe5\x76\xeb\xf7\x0e" - "\x6e\x5f\x6c\x9f\x13\x99\x01\xb6\x1f\x0c\xd1\x8b\xf0\xeb\x6f\x31" - "\x78\x60\xbe\x5d\x68\xee\x2b\xc8\x2c\x56\x6d\xa9\xd3\x3c\x82\x7c" - "\xae\x30\x39\x86\x90\xfb\x28\x5d\x6c\x07\x7e\xb4\x76\x09\x59\xdc" - "\xc5\x22\xec\x73\xb5\x53\x4b\xb0\x9d\xdc\x41\x11\xf0\x45\xce\x50" - "\xd9\x19\xb2\xf8\x22\x27\xa8\xec\x25\xb2\x37\x95\x7e\x4d\xc9\xf8" - "\x4b\x33\x09\x72\x0f\xe5\xb2\x6d\xd4\x52\xd3\x46\xee\x9a\xf8\xb2" - "\xee\xab\xc8\xde\x8c\x67\xf4\x9d\x95\xf1\x68\x72\x44\x28\x92\xbe" - "\xa5\xae\xf4\x6d\x32\xbb\x87\x91\xa9\xb9\xd0\x6b\xe0\xe2\x67\x5c" - "\x56\x1e\x27\xcb\xb6\xd9\xe0\xa1\xe3\x8c\xef\xbb\x75\x1f\x2c\x09" - "\x9b\x1a\xed\x93\xa8\xd1\x7e\x84\x9a\xec\x63\xa9\xc9\x35\x9e\xd6" - "\x1e\xa7\x8c\xc6\xf0\x18\x6a\x32\xdf\x07\x19\x1b\x4f\xbe\x76\xdc" - "\x3b\xa2\xc8\x13\x22\xc7\x42\x02\x7f\x5c\x7c\xa8\xea\x39\xb2\xf8" - "\x15\x4c\xd0\xf7\xe2\x23\xbf\x2b\x21\x62\xfa\xf2\x73\xb2\x76\xcc" - "\xbf\x82\xec\xc0\x2f\x00\x5c\xee\x38\x4a\x19\x97\x0d\xb7\x53\x36" - "\x70\xee\xef\xab\x8e\x90\xb9\x94\xd2\xfa\x90\xad\x4c\xcd\x23\x65" - "\xbc\x7d\xf3\x9b\x22\xc0\x3c\xda\xb1\x34\x1f\x72\x9a\x31\x09\x75" - "\xb7\x73\x7d\x6b\x21\xeb\xee\x2d\x64\xee\x58\x94\x9f\x52\xfb\xa6" - "\x68\xc3\x3b\xa7\xf1\x0e\xfc\xd4\x86\xf7\x81\x51\x99\x64\xf3\x45" - "\x72\xe9\x8b\xae\x80\x99\x61\x0c\x0c\x51\x0a\xc3\xb3\xba\x28\x15" - "\xed\xe9\x07\x7c\xee\xa8\x45\xfa\xb5\xc8\x87\xf2\x3b\xfc\xf4\x9a" - "\x9d\xcb\x8b\xcb\x9f\x08\x69\x97\x3f\x71\x46\x7b\xeb\x89\x0e\xf1" - "\xd6\x13\xa7\xa3\x6f\x3d\xf1\xad\x7b\x31\x59\xa2\x97\x3f\x11\x6c" - "\x29\x96\x7d\x60\x6b\x29\x46\x1f\x44\xc9\xb2\xec\x04\xd9\x9e\x7a" - "\x09\x7d\x1f\xf9\x1b\x2d\x9b\x43\x76\x2d\x6d\x47\xbe\x2f\xf2\x67" - "\x7a\xaa\x94\x04\xee\x9d\xc9\xda\xd7\x91\xfe\xae\x5f\xc9\x90\x05" - "\x6d\x1a\xe0\xf0\x9b\xea\xaa\xb9\xde\x60\xda\x87\x7e\xfc\xda\xf0" - "\x0b\xe0\xd7\x2e\xd2\xdf\x65\xd9\x74\x0f\x5c\x9e\x42\x9b\xbb\x88" - "\x46\x69\x94\x72\x9c\x06\x8c\x01\xfe\xb6\x3e\xe8\x36\x54\x5b\xb5" - "\xf7\xd0\x0d\xe5\x54\xd6\xd9\xe9\x24\xd6\x4d\xac\x97\x58\x4f\xa1" - "\x9e\x0a\xd4\xd3\x2a\x65\xf1\x4d\x11\x12\xe9\x7b\x0f\x21\x3d\x10" - "\x5a\xea\x4c\x09\x2e\x75\x9a\x3a\xd2\xf7\xfe\x27\xf2\xec\xf4\x9b" - "\xb6\xd8\x74\x1a\x06\x18\x16\x64\x22\x38\x20\x42\xa9\x80\x59\xfc" - "\xc9\xd9\x56\xf3\xa6\x37\xc5\x11\xe4\x3b\xdc\x03\x0b\xb0\x01\x07" - "\xf4\x1f\x10\x30\xd2\x40\xeb\xb6\x35\xc8\xc7\xe5\x7d\xe1\x5c\xd6" - "\xdf\x7e\x5f\x51\x80\xac\x11\x4a\x17\xdd\xaa\x3e\xe4\x09\xb0\x9e" - "\x1d\x10\xa6\x8b\x3a\x3d\x94\xc7\xb0\xb9\x9c\xaf\x3d\x40\x28\xf7" - "\x9f\xc2\xed\x84\x7e\xa3\x29\x9d\xc2\x99\x02\x9d\xde\xd6\x88\xf2" - "\xaa\xee\x81\x79\x06\x8e\x5c\x07\xf7\xb5\xc4\x13\xfc\xd0\x58\x14" - "\xa6\x01\xd5\x94\x8a\x72\x0f\x33\x3c\x86\x05\x3e\xf0\xa3\xad\xff" - "\xd9\x58\x14\x24\x4d\xc4\xc1\xf4\xeb\xf0\xea\xe2\xe0\x21\x5d\x00" - "\x1e\xf3\x5f\x13\xca\x0c\xa8\x93\xf0\x1e\xfa\x44\x63\x78\x61\x32" - "\x3b\x24\xbe\x8f\x32\x8c\x4e\xd6\x31\x80\xe9\x5d\x78\x2f\xb5\x93" - "\xd5\x12\x74\x3b\x53\x5b\x4a\x89\xb8\xfc\x07\x65\x81\x7e\xa2\x23" - "\x3f\x95\x79\x8e\xdf\xfb\x22\xa7\x91\x67\xe0\x37\xa2\xc3\x99\x3a" - "\xa0\x9d\xcc\x8c\x33\xca\xbb\x18\xcf\xd8\xbe\x7c\x68\xc2\xa3\x63" - "\xe9\xd1\xf1\xf7\x8f\x1f\x4b\x93\xef\x19\x37\x96\xb2\xef\x18\x99" - "\x7d\xdb\x4f\x73\x6e\xa3\xbc\x5f\x3e\x34\x96\xf2\xa6\x8c\xa5\x87" - "\xf1\xcb\x7b\x78\xc2\x43\xe3\x27\x3c\x3c\x96\xf2\xef\xbb\x1f\x4f" - "\xe3\xc6\xde\x92\xfd\xf3\x91\x79\xe3\xee\x9f\x40\xbf\x98\x76\x6b" - "\xf6\xad\xb7\xd2\x3d\x13\x26\xdd\x92\x9d\xad\x5f\x6f\xc9\xe6\x2c" - "\x8f\xe7\x4c\x78\x78\x64\xde\xbc\x17\x4b\x5e\x1c\x39\xe5\xfe\x71" - "\x9c\xc2\x63\x72\x0c\xef\x64\x45\xcf\x6a\x4c\xe3\x90\x38\x35\x91" - "\x34\xe8\x8c\xcd\xe8\x7b\xfc\xda\xbd\x65\x47\x21\xfb\xb6\x3f\x6f" - "\xe6\x3e\x93\xba\xd5\xca\xe3\x95\xb9\xd3\x63\x3d\x02\xda\xe5\x31" - "\xed\x30\xa6\x21\xcf\xe0\xc5\x78\x77\xa3\x3e\x76\xf4\xc3\xfb\x48" - "\xfc\xfb\x41\xd0\xb3\xd6\x51\x2d\x0e\x22\x1f\x7e\xa0\x77\x08\x3a" - "\x10\x74\x0d\x52\x87\x3b\xbf\x1f\xf8\x3a\x05\x75\xb4\x41\x26\x41" - "\x1b\x5b\x4e\x8c\xac\xb7\xa1\x5f\x0e\x39\x96\x50\xea\x49\xb2\x5d" - "\xd2\x52\x92\x4b\xdc\x3f\xbe\x12\x1d\xc6\x99\x1e\x18\xe9\x12\x06" - "\xfa\x1c\x70\x0e\xeb\x70\xca\x63\xf4\x82\x9f\xe1\xac\xc5\x3b\x1d" - "\xd6\x23\x2d\xd0\x0f\xd0\xdf\xbf\xd1\xdc\x59\x24\xd2\xb7\xec\xd0" - "\xba\xb3\xe4\x98\x80\x72\x0d\x06\x3f\xa3\xfe\x50\x13\xea\x14\xdb" - "\x26\xa6\xa0\xff\x53\x30\x56\xa1\x2d\xd6\x26\xf0\x35\xe4\xe8\xc3" - "\xa0\xe8\xce\x27\x95\x76\x89\x39\xba\x0a\xcf\xab\x3e\xfc\x56\xb8" - "\x91\xb6\x44\xa6\xf5\xc3\x33\xec\x09\xf0\x91\x70\x52\xf4\x14\xd2" - "\xe7\x52\x2a\xd2\xff\x00\x5a\xb7\xca\xfc\xa7\x64\xf9\xfe\x48\xdb" - "\x0e\x78\xdf\x6a\xe9\x1f\x9e\x06\xef\x70\x1a\xec\x84\x4b\x2a\x51" - "\xbe\x83\xf5\x9d\xd2\xc1\x83\xdf\xe6\x31\x0e\xed\x08\x2a\xf8\xfa" - "\x33\xe4\x55\xe1\x30\xf8\xed\x46\xd0\xa5\x11\xa3\x56\x53\x29\xdb" - "\x36\x97\xa0\xfd\x03\xf2\xd5\xf8\x38\xb8\x9a\xf3\x6a\x22\x9f\x84" - "\x25\x7a\x00\x70\x43\xde\x25\xed\x74\xac\x98\x4c\x7e\xba\x64\x8c" - "\xe6\x76\x52\x4c\x5b\xb2\x18\x0f\xe0\x6d\xee\xec\x76\x62\xbc\xbc" - "\x64\x84\x2c\x0b\xfc\x74\xdc\x38\x8f\x9d\xf1\x67\x1d\x81\x7e\x1d" - "\x8d\x3e\x4f\x43\x7d\xc1\x84\x3e\xcf\x60\x7a\x00\xdf\x56\x0d\x57" - "\xc0\xc9\x14\x8b\x9c\xc0\x8b\x4c\x4c\x0f\x7f\x2f\x8c\x90\xe2\xa9" - "\x41\xd9\x09\x3c\xf5\x24\x60\x8f\x8d\x79\x9f\x97\xf0\xfe\x1e\xbc" - "\xbf\x57\x7f\x0f\x59\x1d\x54\x9c\x50\xff\x6a\xbc\xbf\x8f\xfb\x10" - "\xb2\x98\xea\x27\xdb\x8e\xcd\x6c\x4b\xf6\xe6\xaf\x4b\xc8\xbf\x17" - "\xf9\x1f\x00\xbe\x21\x1e\x27\x38\x7f\xad\xce\xf7\xc8\x6f\x41\xfe" - "\x43\x09\xf5\x0f\x43\xfe\x87\x63\xf0\x4b\x68\xff\xa5\x0d\x78\x9f" - "\xcf\x7c\x8a\x6b\x21\xf2\xf4\x67\xf9\x67\xdd\xd3\x58\xc4\xfd\x73" - "\xa9\x23\x21\x7f\x2e\xf2\x3d\xcf\x74\x96\x34\xea\x60\x1a\xd9\x76" - "\xe8\x76\xcd\x11\x85\xc3\xa5\xd3\x12\xca\x94\xa0\xcc\x7c\xa6\xaf" - "\xe4\xb3\xce\xa4\x65\x2a\x12\xca\xec\x90\x7c\xaa\xea\xd1\xfb\x58" - "\x95\xd1\xf5\x5a\x2c\x0c\x6e\x1b\x6c\xad\x4b\x0f\xc6\xc3\xb8\x6c" - "\x07\xea\x5d\xba\x46\xe9\x8c\x8b\xc1\x13\xb7\x22\xed\x6d\xc0\x3c" - "\xc3\x7c\x04\x39\x0b\xf9\x82\x61\xe8\xdd\x89\x19\x8a\x77\x33\x47" - "\x5a\x4b\x89\xef\x47\xf2\x3d\xc3\x16\xdd\x93\x74\x79\xca\x1c\x89" - "\x2b\xa7\x67\x72\x3a\xcb\xb1\xe8\x7e\x50\x53\x30\x33\x7f\x01\x79" - "\x37\xe1\x39\xaa\xd7\xf1\x2a\x9e\x53\x80\xff\x69\xe8\x74\xf0\xec" - "\x44\xe6\xc7\xd1\x48\xaf\xd4\xdf\x2f\xe7\xfc\xb8\xbf\x45\xbf\x4f" - "\x01\x8f\x9d\xd6\xe5\x0c\x32\x75\xd9\x62\x59\x37\xe4\xca\x28\xaf" - "\x29\xbe\x1f\x87\x77\xb3\x70\xbd\x1f\xd7\x5f\xe0\xfa\x0b\x5c\x47" - "\xba\xcf\x90\xdd\x1d\x95\xf2\xc5\xcf\x57\xe0\xfa\x10\xae\xfd\x70" - "\x7d\x18\xb8\x7d\x0b\xba\x07\x83\xe0\xe9\x04\x9e\x69\x47\x1f\xb2" - "\xdc\xf7\x57\x7d\x98\xe9\xe7\x3a\xa3\x86\x2e\x38\xd5\x9b\xa6\xeb" - "\x07\x5d\x1e\xf4\xb4\xee\x89\x4c\x97\x3c\xc0\xdf\xcb\xf5\x0b\x05" - "\xab\x9f\xea\x27\x95\x47\x53\xe5\xcc\xaa\xbf\xf5\x34\x95\x2f\x25" - "\xb6\x4e\x5c\xd7\x97\x85\x84\xc0\xb5\x94\xe9\xea\xa7\xcb\xca\x41" - "\x13\x33\x9e\xf3\x98\x4e\x32\xbf\x84\x7b\x69\x7b\x4c\x7f\xc3\xb6" - "\xbf\x6c\x6f\x42\x7f\xb3\x9c\xaf\x91\xfd\x0d\xda\x19\x38\x33\xfe" - "\xe0\x69\x1e\x27\x2f\x32\xf8\x06\xfc\xdd\xde\x2b\x63\x83\xcd\xf1" - "\x70\x14\x5f\x31\x7f\x0c\x2c\xd6\x65\x12\xf4\x82\x0e\x0b\xa5\x96" - "\x32\xaf\x0e\x1e\xed\xa7\xdf\x4e\x94\xb6\xd8\xaa\x0f\xcf\xf2\xfb" - "\x10\x74\x13\xe7\x4f\x2d\x66\x19\x1b\x3c\xcd\x78\x2f\xdf\xa5\xed" - "\xcb\x63\x9c\x52\x8b\xe4\xbb\x62\x3f\x58\xcc\x78\x27\xeb\xe1\x77" - "\x25\xf2\xdd\xea\x5e\xb8\x5b\x0e\xe8\x70\x53\x93\xd9\x52\xa2\x62" - "\x4b\x03\x18\xd4\x74\x53\x39\xf5\xf3\x45\x0e\xd3\xd4\x88\x88\x8e" - "\x2c\xa7\x34\x5f\x64\x27\xdd\x48\x74\x89\x2f\x72\x84\x6e\x22\x1a" - "\xe6\x8b\x54\x61\x6c\xaf\xe7\xf7\x5f\xdc\x40\x29\x29\xb8\xba\xaf" - "\x2f\x37\xa5\xf8\x22\x25\x34\xbc\xdc\x8c\x6b\x11\xdd\xd7\x4f\x74" - "\xfa\x22\x93\x90\xaf\x90\xa6\x46\xc5\xa9\xf1\xfd\xc4\xdf\x0b\xa2" - "\x64\x9b\xf4\xb2\x70\xfb\x22\xb0\xb3\x23\x07\x91\xae\x89\xa9\xd1" - "\xef\xf0\xeb\x14\x5a\xc5\x96\x03\x53\xa3\xa7\xc4\xb8\x97\xbf\xc0" - "\xf3\xdf\x85\x30\x91\xf0\x45\xc6\x50\x4b\x28\x84\x7c\x6e\x21\x2a" - "\xb7\x34\x3c\x75\xc6\x44\xdd\x18\xa3\xb5\xca\x2d\xd0\xe3\x5b\x5a" - "\xbb\xd1\x0e\x8c\x5f\xff\xbb\x7b\x29\xae\xab\xb6\xfc\x2f\xf9\x5c" - "\xb1\x25\x20\x2c\x5b\x5a\x6f\xc6\xa4\x85\xdb\xe0\x8b\xb4\x51\x01" - "\xcc\xee\xa9\x8b\x83\x82\xf1\x1f\xb8\x9c\xe7\x2c\x63\x08\x7a\xd1" - "\x3a\x75\xb1\x5b\xe0\x9d\x45\xa4\x6d\x69\xf5\x45\xda\x09\x75\x04" - "\x00\xef\x6b\x09\xaf\x62\xab\x05\x79\x83\x9c\x2f\x16\x0e\xc3\xe0" - "\xbc\x53\xa3\x64\x15\x95\x5b\x2d\xdd\x69\x5b\xc2\xdd\x69\x5b\xed" - "\xf8\x4d\x14\xe9\x5b\x1f\x17\x9e\xcc\xdf\x09\x8c\xa7\x28\xef\xc4" - "\xb3\x2b\x8c\x39\x82\xa4\x65\x94\xfa\x23\xbf\x13\xfc\x32\x1e\x7c" - "\x07\x7c\xb7\x56\x4b\x7c\x57\x6d\x7d\x2b\x2c\xdb\xb1\xf5\x4d\xd5" - "\x8e\xad\x6f\x70\x7a\x07\x6c\x09\xdc\x37\x74\xa8\x77\x9f\xa0\xdc" - "\x34\x59\xae\x62\x6b\x83\xb0\x6c\x3d\x10\x86\x3c\x81\xae\xe5\x4c" - "\x47\xd0\xb5\x9c\x69\x09\xf8\x0d\x3e\xd7\x6a\x12\x69\x5b\x0f\x00" - "\x9f\x56\x94\x3f\xde\x2d\xc7\xf8\xad\xe1\xb0\x82\xdd\x09\x38\xd3" - "\xc1\xaf\xa9\x80\x11\x16\x15\xdb\x2c\xdd\x1e\x07\x4d\x5d\x2c\xc2" - "\x53\x23\xcb\x23\x05\x8b\x29\x75\x04\x95\x03\xdf\x7d\xa0\x51\x21" - "\xda\xd9\x84\xeb\x78\xbc\xa7\x4b\x51\xd7\x17\x80\x1b\xe6\xfa\x44" - "\xe5\x36\x8b\x48\xdf\x06\x5b\x87\x0a\x19\xa7\xef\x3c\x64\xc3\xb3" - "\xfd\x3b\x89\xdf\xb6\x1c\xad\x62\x5b\xbe\x66\xd9\x36\xd1\xe0\x21" - "\xe6\x1f\x45\xb7\x2a\x9a\x12\x12\x11\x5f\x64\x13\x81\xc7\x6c\x2d" - "\xa1\x23\xfc\x1e\xf3\x8a\x9d\xe8\x67\xe6\xa9\x12\x5c\xeb\x89\xf9" - "\xa7\xa5\xf8\x65\xce\xfb\x05\xf3\xd0\x94\xe2\xd0\xf2\x91\x54\x9c" - "\x82\x67\x77\x41\xc4\x42\x4f\x15\x9b\xcb\xa3\x15\xdb\xb2\x5a\x8a" - "\xb9\x5f\x0e\xa3\x0c\x97\x2b\x22\x6b\x0a\x6c\xeb\x14\x11\xb1\xba" - "\x82\xe6\x01\x4e\xb7\x68\x09\x4d\x42\xde\x62\xe2\xf6\x30\x1f\x71" - "\xfe\xc9\xed\xc2\x1f\xb5\x6c\x6b\xe5\xb6\x89\x81\xe5\xd4\xdc\x7e" - "\x3b\xf1\xfc\xa6\xb9\xbd\x9e\xf9\x54\x13\x96\x6d\x3b\xc0\xa3\xdd" - "\x93\xdb\xcb\xfb\x3d\x75\x86\x52\x90\x16\x6d\x76\xee\xc4\xfb\x26" - "\xe4\x3b\x28\xf9\x76\xca\x99\x88\x35\x62\xd9\x66\x8f\x54\x6c\x6b" - "\x98\x72\xa6\x5b\x34\x3b\xab\xe8\xc9\xf6\x72\xd0\x6a\x27\x4d\x3e" - "\x11\x49\x6d\x29\x2e\x44\x9e\x4e\xa4\xd7\x4b\xfe\x9f\x7c\xa2\x43" - "\x4c\x79\x49\x9c\x9a\x72\xe6\xef\x62\xb2\x53\x7c\x51\xe0\xa2\x81" - "\x17\x2f\x17\x1a\xcb\xc5\xc1\xb6\x9d\x74\xf1\x11\x3f\xb1\x4c\x4c" - "\x9a\xa9\x89\xc9\x27\x4e\x89\xa7\x5e\x62\xda\x8c\xa1\x66\x27\xe4" - "\xc7\x55\xc5\xf4\xce\x69\x76\xee\x45\xfd\xe3\x01\xd7\x2d\x7c\xae" - "\x4d\xc8\xeb\xb5\x3e\x79\xc2\x46\x07\xdb\xaa\x28\x92\xb6\xcd\x1e" - "\xad\xdc\x96\xa5\xa5\x6d\x9b\xa8\x55\x6e\xcb\x17\x69\xdb\x76\x44" - "\x2a\xb7\x35\x44\xd3\xb6\x81\x07\xea\xb3\xd0\x4f\x69\xdc\xe7\x5d" - "\x98\xef\xe3\xf9\xfa\x2e\xee\xff\x8a\xfa\x1c\x61\xa9\xcf\x87\x2e" - "\x14\x8a\xf7\xeb\x73\x78\xce\x2e\xd2\xea\xf3\xbb\xd3\xea\x27\x22" - "\x5f\xbe\x92\xaf\x7a\x27\xf3\xa5\x1c\x8b\x56\xd5\x3f\x8b\xb1\x23" - "\x15\xef\x5d\xf8\x55\xe0\x57\x8d\xb4\x00\xe0\x5f\xd2\xa9\x60\x06" - "\xc4\x5d\xeb\x61\xa3\x62\x8e\x9e\xb6\xdd\x32\x35\x7a\xb7\x00\x0d" - "\x21\x27\xf5\x01\xad\xb2\x3e\x2c\xd2\xb7\x67\x85\x25\xef\x6f\xbf" - "\x81\x61\x77\x2f\xcd\xe2\xb9\xbc\x59\x54\x6e\xcf\x41\xda\x6f\xc2" - "\xcc\xab\x96\xed\x3b\x34\xcb\x3b\xd0\x45\xdb\x1b\x1e\x7c\x59\x04" - "\xa3\x15\xdb\x5b\xb5\x8a\xed\x07\x22\x17\xc1\xf6\x75\xed\x25\xd6" - "\x4f\x91\xfd\x02\x34\xf8\x03\xe8\x51\x2f\xfb\xdf\xe7\x82\x0c\x2c" - "\x1e\x52\xde\xdc\x0e\x5e\x28\x7e\x4f\xea\xa6\x96\xd0\x61\x49\x53" - "\xe0\xb1\x83\x79\x8a\xfb\xf7\xa9\x62\x2a\x47\x5d\x0d\x5a\xe5\xf6" - "\x03\xd1\x4a\xc0\x4d\x43\x3d\xe9\x3b\x1e\x08\x4b\x79\xdd\x01\x7e" - "\xdd\x8b\x32\x7f\x20\xc5\xe3\x3b\x26\xf6\xa5\x23\x59\x57\xb1\x7e" - "\x9a\x1a\x09\x33\xcf\xfc\x83\xf5\x9a\xd2\x53\x54\x60\xe8\x29\xd6" - "\x51\x3c\x9f\x60\x3d\xa5\xe9\x7a\x4a\xd3\xf5\x94\x7c\xb6\x40\xd7" - "\x54\x6c\x69\x65\x7d\x34\xd5\xa5\xf4\xcc\xd4\x68\xb6\x00\x6f\x64" - "\x00\x46\xab\xea\x0b\xe4\x59\xb5\xe5\x6b\x99\x5f\xd2\x69\xab\x45" - "\x83\xbe\xd1\xa0\x6f\x34\xa5\x6f\xf2\x75\x7d\x63\x32\xf4\x4d\x14" - "\xe3\x1a\x64\x4a\x4b\xa6\x6f\x34\x5d\xdf\x44\x85\xd2\x37\x9a\xae" - "\x6f\x38\x3d\xaa\xeb\x9b\x68\x12\x7d\xa3\x55\x6c\xe5\xf6\xa6\xea" - "\x7a\xa6\x9c\xf5\x0c\xb7\x57\xab\xdc\x7a\x40\x53\x7a\x26\x80\xb9" - "\x84\x89\xf5\x4c\x14\x65\x34\x43\xcf\x74\x4a\x7d\x60\x61\x5d\xd3" - "\xfd\x2b\x82\xfe\x74\x10\xeb\x18\xa9\x4f\x22\xc3\x22\xac\x4f\x40" - "\xbf\xbb\x13\xf5\x89\x58\xb5\xcd\x8e\x7b\x9b\xd2\x53\xdb\x26\x5a" - "\x97\x8b\x08\xf4\x49\xd6\x54\x57\x08\x7d\xfd\x37\xcc\xa9\xa1\xb7" - "\x5d\x25\xe5\x3e\x57\x84\xa0\x07\xf2\x45\x4b\x39\x41\xe7\x80\x7f" - "\xa3\xd0\x15\x44\x90\xcb\x1d\x90\xcf\x56\xd4\xdd\xd0\x52\xfc\x67" - "\x82\xbc\xdb\x27\xb7\x77\xf8\x9e\x0a\x65\xd9\x26\x9f\x10\x41\xd0" - "\xc7\xff\x54\x71\x39\xf4\x4b\x56\xb0\xb9\x7d\x1f\x4d\x6a\x13\xda" - "\xa4\x19\x7e\x07\xf0\x68\x98\x3c\xc7\x6b\x7d\xea\x25\x1b\xe4\x4c" - "\x78\xa1\x17\xff\x73\xf2\x09\x9b\x75\x7a\x1b\xfd\x68\xd2\x4c\xa1" - "\x41\x9e\x40\x77\xc8\x19\xe4\x11\x32\x36\x11\x32\x97\x0f\x39\xdb" - "\x11\x49\x90\x33\xc8\xcc\xf5\xb8\x77\x28\xfa\xd5\xe7\x43\xce\x72" - "\x34\x39\x9e\xb5\xc9\x39\x1c\xe4\x21\x9f\xd7\xb8\x20\x6b\x39\x90" - "\x0b\x29\x6b\x9a\x2a\xe7\xd4\x98\x7e\x26\x5d\xd6\xd0\x17\x78\xef" - "\xc2\xaf\x02\xbf\xe4\xb2\x56\x1c\x23\x6b\x2f\xe9\xb2\x96\xa6\x64" - "\x0d\x7d\x9a\x1a\x5d\xaa\xe4\x8d\xe1\xf3\x3c\xaf\x47\xde\xd2\xb7" - "\xef\x10\x6c\x4f\x4a\xde\x61\x99\xdb\x8e\x71\x65\x7b\x2b\xe4\xed" - "\x80\x56\xf1\x0e\xe0\x89\x20\xeb\x4d\xf0\xe6\x7f\xf1\x58\x37\xa5" - "\x58\xfc\x57\x41\x74\x48\x39\xea\x6a\x85\x2e\xfb\x3b\xf4\xe8\x7f" - "\x3d\x15\xa2\x3a\xc0\xda\xa1\xa5\x6d\x6f\x80\x3c\x1d\xd0\x2a\xa5" - "\x3c\x4d\x8c\x2e\x65\x98\x3b\x26\xf6\xc0\x90\x63\x65\xbc\x3c\xf5" - "\xb5\xbe\xd8\xe9\xb9\x7a\x8c\x9f\x3e\x29\x61\x7b\x05\xf7\x13\xfd" - "\xd4\x30\x51\xbf\x87\xfd\x53\x23\xd7\xa6\x59\x06\x8b\xcb\xe8\xb2" - "\xe3\xe4\xb0\x80\xdf\x09\xf7\x19\xb8\xcf\x98\x7a\xe3\x17\xb0\x23" - "\x02\xcc\x53\x9d\x2c\x87\xc2\x33\x9a\xe7\x5c\xb9\xe0\x43\x8b\xe8" - "\xcc\xca\x10\xe9\xbb\xcb\x44\xb7\x9d\xd7\xb0\xac\x78\x1e\x88\xf6" - "\x0f\xc7\x75\xd0\xa6\xb3\x94\x89\x9f\x7d\x93\x47\x2b\x67\xdb\x09" - "\xf7\xd9\x62\x91\x3d\x7d\xed\x42\x1a\x61\x0d\x91\xa5\xd6\xa3\xe5" - "\x5b\x97\xdb\x78\x2d\x27\x93\xef\x85\xa7\xce\x59\x7b\x96\xcc\x6c" - "\x57\x6a\x69\xa8\xcf\x65\x15\x62\x7e\x16\xd5\xce\x83\x7e\xf0\x90" - "\xbd\xd6\x23\x76\x45\x3b\x99\x06\x5b\x1a\x0c\x5c\x18\x37\xe0\x79" - "\x15\xf0\x1c\xfa\xc8\xe2\x5c\xfa\x83\x8b\x92\xae\x81\x76\x7a\x1c" - "\x3d\xed\xef\xe3\xfd\x74\x83\x26\x7d\xbc\x2f\x35\xe8\xd4\xc7\x7a" - "\x99\x99\xc7\xe8\xe8\x42\x11\x5c\xf7\x1c\x31\x2d\xec\xee\x88\xf8" - "\x0a\x74\x2c\x2f\x8b\xd2\x55\x53\x17\x5f\x2d\x7c\xed\xc2\xeb\x73" - "\x9d\xa0\x5a\xbc\x2f\x2b\x15\x9a\x96\xb6\x7b\x86\xa8\xdc\x3d\xbd" - "\x63\xa1\x88\xf0\x5a\x09\xea\xf0\xfb\xe9\xce\x72\xd5\x17\xdb\x72" - "\xe4\x3c\xcf\xb2\x7b\x3a\x60\x5d\xc2\xb0\x9a\x51\x3e\x5a\xb9\xbb" - "\xb0\xd3\x33\xcc\xe2\xa7\x3f\x4c\x97\xf9\x2c\xdb\x72\x8a\x97\xd0" - "\x95\xc7\x69\x58\xae\xb4\xf5\x2b\x76\x97\xb0\x3e\x40\x9a\x0d\x69" - "\x93\x00\xdf\x85\xfc\x39\x7e\xfa\xb0\x5a\xd9\xb1\xc3\x26\x19\xf9" - "\x70\xef\xe0\xfb\x38\xfe\x49\x91\xdb\x2b\xe8\x2f\x47\xef\x66\x0b" - "\xa7\x99\x63\x36\x5f\x6c\xf8\xe5\x26\x7f\xdd\xab\xcf\xb7\x35\xc0" - "\xd6\x22\xf7\x32\x1a\x8a\xfe\x61\xfc\x7e\xe7\x76\x89\x63\xc2\x33" - "\x2c\x7f\xdb\x92\x30\xe6\x09\xc3\x0e\xfa\xa9\xa2\xa6\x2f\x7a\x0a" - "\xb6\x75\xce\x8a\xc0\xba\x85\x3d\xb4\xfc\x72\xea\x62\x4d\xf0\x3d" - "\xeb\xa3\x5a\xa4\x33\xdd\x3a\x3d\xd7\x64\x1a\x34\xeb\xbb\x5f\x76" - "\x17\xab\x79\xe1\x35\x25\xc2\x23\xc8\xfb\x23\xde\x9f\xb8\x66\x81" - "\xa2\x43\xfd\xc4\x0e\xe8\x11\x5e\x7f\xad\x05\xbd\xe7\xdb\x45\x18" - "\x30\x9d\x7e\xba\x29\xa8\xaf\xf3\x84\x7c\x91\x09\xac\x5b\x92\x8e" - "\x5b\xbc\xff\xd3\x0b\xff\xda\xaa\x96\xa1\xd0\x43\x52\x37\xed\xab" - "\x2a\x53\x78\x87\x19\xae\xb7\xec\x34\xb5\xe1\xfd\xfc\x90\xc0\xf8" - "\xb4\xaf\x82\xe7\x11\xde\x85\x5d\x9c\xf6\x06\x78\x5b\x78\xe7\x31" - "\x4e\xd7\xbe\xe1\xfd\x51\x17\x1d\xc3\xbc\xaf\xb6\x67\x4d\xe6\xda" - "\x72\x5e\x83\x51\xeb\x48\xd7\x62\x3e\x34\xa2\xc1\xc0\x8b\x6d\x0c" - "\xd0\xd7\xc2\x36\x07\xdb\x1a\xbc\xa6\x3f\xbf\x54\x84\xd9\xe6\x40" - "\xde\x11\x46\x1b\xb8\x7d\xaa\x5d\xd7\xe6\xc6\xb6\x0b\x38\x04\x31" - "\x87\x96\x34\x98\xbf\x98\x2c\x0e\x45\x6b\x0b\xb7\x97\xdb\xc2\x6d" - "\x96\x6d\x91\x3a\x16\x63\x44\xe4\x76\xd4\x2f\xd3\xf3\x01\x0b\xf3" - "\x9f\x1f\x4f\x53\x3c\x75\x2d\x25\xf2\x51\x4f\x3f\x5a\xb6\x59\xdc" - "\xdf\xd1\x8f\xdc\x9a\x38\x7a\x8c\x86\xf3\x7c\x37\x95\xaf\x1a\xdb" - "\xd9\x61\xe6\xdf\x86\x7c\x1e\x93\x7d\xa5\xac\x6f\x65\xde\x4b\x91" - "\xb7\x0d\x79\xd2\xf4\xbc\x69\x6a\x3f\x47\x5e\xfb\xf3\x15\xe3\x58" - "\x3f\x3f\x0d\x77\x04\xe5\x78\xbf\x2f\xcf\x78\x16\x78\x06\x2e\xad" - "\xa2\xb2\x21\x3f\x39\x2e\xef\x58\x78\x3c\x8b\x9e\x15\xed\xa8\xe7" - "\x72\xe6\x29\xf7\x62\xba\x02\x7c\xf9\x65\xd9\x32\xba\x94\xf9\x49" - "\xa4\xed\x2e\x55\x74\x1f\x5e\x24\x3c\xb0\x3d\xa1\x51\x8b\x17\xd2" - "\x95\x90\xa3\x92\xe3\x34\x7c\x79\x41\xa9\x03\xb8\x12\xad\x3b\x49" - "\x24\x75\x50\xda\x6e\x97\x2f\xf2\x35\xd5\x9e\xe4\xf5\x97\xe1\x75" - "\x06\x2f\xe2\x7e\xe7\xf9\xf4\x05\xe8\x5a\xa1\xd6\x0f\xae\xbb\x82" - "\xd7\xef\x8f\xd2\x75\x66\x6e\x2f\x7e\x29\xa8\xfb\x8c\x38\x2b\xa6" - "\x0b\x35\xa6\xb9\xfc\x74\x5d\x36\xae\x15\xf2\xe7\xa1\x19\xfa\xb3" - "\x0b\xf9\xda\xc4\x59\x8d\xf3\x54\xa0\xfd\x11\xe1\x49\x61\x99\xd8" - "\xdb\xe9\xb9\x2e\xcb\x4f\x63\x75\x79\x1f\x1e\x62\x58\x7d\xe0\xe0" - "\x42\xdf\x12\xf3\x26\xf0\x78\xd5\x51\x96\xc2\x78\xcc\x92\x72\x01" - "\x58\xb5\x26\xa5\xb7\x35\xe0\xba\xd9\xa3\x39\xa1\xa3\x9d\xda\xaa" - "\xcf\x1a\xe4\xbd\xfe\x4e\xe8\xe3\x68\x72\xf8\xfb\xaa\xbc\x43\x98" - "\xc7\xaf\x6b\x57\x70\xf6\x55\x78\x87\x1c\xe7\xe7\x13\xfc\x1c\xb2" - "\x7c\xde\xe0\xab\xce\x45\xfd\xc7\xb9\xde\x76\x35\x9f\xbf\xee\x44" - "\x07\xea\x40\x1b\xda\xfd\x34\xb2\x49\xed\x65\x7c\xde\xd0\x87\xec" - "\xd9\x58\x76\x58\xe6\x94\x4c\xdf\xf0\x5e\x73\x9d\x94\x3f\x27\x78" - "\xbe\x42\xd7\x1b\xbc\xd6\x92\x71\x94\x6e\xd8\xd9\x6c\x97\xfc\x6d" - "\x12\xa6\xeb\x27\xbd\xaf\x05\x4d\xbc\xdf\xa4\xd4\xd7\x0d\x3b\xcf" - "\xfd\x5d\x8f\xf6\x5d\xbf\x1e\xbf\x1a\xfd\x19\xf3\xff\xeb\xf7\xe2" - "\x3e\x03\xbf\x1a\x49\xbb\x8d\x85\x29\x7e\xbc\xeb\x80\xcd\xce\xcf" - "\x7e\xba\xbe\x42\x6c\x1c\x6e\x82\x5d\x22\xef\x6b\xaf\xe0\x75\x82" - "\xeb\xf7\xa0\xbf\xc6\xa8\xbe\xb8\x41\xee\x29\x02\x37\xa6\xbb\x70" - "\x57\x8b\x70\x53\x59\x08\x78\x5f\xdf\xd6\x54\x1d\x22\xc7\xf5\xdc" - "\xfe\xeb\x03\xdc\xa6\x10\xe8\xcf\xd7\xf9\xd5\x22\xd8\x58\x13\x21" - "\xde\xf7\xea\xf4\xdc\x00\xf9\x73\x92\x5a\x73\xd8\xb7\x8b\xe1\xe9" - "\x3c\x21\x8c\xf6\x2b\x9d\xf6\x79\x03\xf7\x25\x9e\x6f\x47\xdb\xad" - "\x27\xe9\x86\x05\x22\xfd\xb3\x86\x46\x27\xd1\x26\xe8\x11\x8c\x35" - "\x72\x2d\x1e\x7a\x89\x61\x62\xfc\xbf\xae\xc6\xd8\xa7\x59\x83\xf7" - "\x6b\xf1\x0e\x63\x4f\xb0\xd9\x19\x26\x86\x15\xe5\xf6\xa1\xfc\x3e" - "\x2d\x68\xc6\x58\x8d\x3e\xff\xbc\xa1\xac\x18\x7a\xa6\x47\x6f\xdd" - "\x30\x74\xd9\x09\x11\x36\xda\xc7\x7b\xa1\x80\x0b\xfe\x7f\xce\xde" - "\x27\xff\xf7\xe0\x9c\xf5\x6f\x8d\xc3\x55\x9f\x69\xa0\x4b\x7c\x9f" - "\x65\x1d\x50\xfd\x75\x43\x24\xbe\xbf\xb2\x0e\xe0\x37\x1e\xbf\xe9" - "\xf8\x15\xe9\xcf\xb1\xbf\xec\x98\x7b\x48\x6b\xd6\x9e\x4e\x4f\x16" - "\xc6\xff\xe1\x0d\xaa\x1f\x38\x1d\xed\x60\x1e\xf9\x96\x2c\xbc\x5e" - "\xc7\xfb\xa0\x9c\xce\xfc\xcc\xe9\x1a\xec\x19\x3c\xe7\xe1\xbd\x8d" - "\x65\x75\x9d\x46\x71\xef\x7d\x2b\xc1\x73\x4b\xba\x18\xff\x2d\x72" - "\x8d\x71\x79\x45\x05\xf3\x29\xf2\x4c\xb3\x46\x2a\x2a\x50\xdf\x4e" - "\x83\xae\x48\xab\xe2\xf7\xcc\x93\x48\x6f\x02\x5d\xe4\x1a\x7a\x08" - "\xf3\xbd\xe4\xb6\x46\x56\xa0\xc7\x26\xb3\xd4\x07\x58\x1f\xb5\xd3" - "\x8d\x21\xe8\x2c\xf4\xed\x67\xbb\xd4\x58\x73\xe3\x19\x7e\x86\xae" - "\xfc\x12\xf7\xc1\x66\xb4\xb2\x6b\xd5\x87\xfe\x6e\x13\xf5\xef\x32" - "\x51\x6e\x64\xd5\x37\x43\x23\xe9\xef\xb6\xfb\x02\x7b\xa8\x25\xb2" - "\x9b\x1c\xcf\x49\x18\xdf\xf8\xc0\x03\xee\xc5\x22\xfa\x41\xd7\x0e" - "\xb3\x2f\x72\xca\x8b\xb1\xf9\xea\xe3\x74\xa3\xa4\xc7\x2b\x47\x31" - "\xea\x3f\x25\x61\xeb\xf4\x09\x84\xd7\xce\x16\x91\xb5\xc7\x44\x08" - "\xf6\x5d\xfa\x9a\x2e\x1a\xb1\x61\x09\x65\xd7\x74\xd1\xf0\xcd\x5d" - "\x94\x25\xfe\x91\x65\xaa\x81\xdd\xf6\xd4\x19\x1b\x41\x27\xe4\x0f" - "\x2c\x26\xcb\xe6\x25\x24\x79\x24\x5a\x09\xfb\x2d\x02\xfb\xed\x54" - "\x16\xeb\xc6\x1e\xfb\xad\x5b\xda\xc5\xbb\xdb\x14\x1f\xed\x6e\x1b" - "\xe0\xa4\x94\x8c\x19\x64\x03\x7e\xee\x93\x74\xe3\x8d\x19\x6d\xb0" - "\x1d\xd1\x66\xbf\xde\x5e\x5c\xc7\x58\x9d\xd4\x5f\xb6\x15\xfa\x5a" - "\x54\x7e\xb6\xab\xcf\x71\xd8\xc4\x3c\x15\x62\xb9\x41\x1b\x6e\xba" - "\x87\xf7\x62\xf7\x0c\x09\x9b\xe7\xd7\x88\x30\xa7\x97\x0c\x13\x61" - "\xa4\x67\x71\xdd\xbb\x90\xde\xe9\xb9\x29\xcf\x6f\xda\xb4\xb3\x2f" - "\x1e\xc5\xfc\x48\xd7\x2b\x37\xfd\x51\x98\xca\xc1\xa3\xdb\xb3\x96" - "\x45\x60\x7b\x9f\x64\x99\xbd\xe9\xd0\xd4\x22\x11\x71\xcc\xe5\x7d" - "\xf1\x9b\xbc\xbc\x67\xcf\x7b\x75\xef\xc3\xb6\xf9\xbe\x7d\x7a\x1e" - "\x2f\x78\xae\x60\x2d\x02\xcc\x55\xdb\xb3\x04\xe6\xe7\xf1\x36\x3c" - "\x51\x5f\x76\x3c\xfb\x8a\xbc\x2e\xfd\x52\x7e\x9c\xe1\xa7\x07\x0b" - "\x19\x77\xde\x93\x65\xdd\x09\x7b\xeb\xd2\x63\xf4\xe3\x89\x21\xd0" - "\x01\xef\x31\xfe\x4f\xcc\xd1\xf7\x55\xa5\xbf\x0b\xd2\x30\xfe\xdf" - "\x5f\xca\x69\x25\xc3\xc8\x5e\xe2\x10\x81\xbe\x6c\x26\xe9\x83\x62" - "\xa2\xcb\x51\xa6\xc4\x80\x83\x71\xea\x37\x1d\xa6\x47\x1e\x41\x5a" - "\x85\x01\x07\x79\x2e\xc3\x73\x75\x4f\x1e\x55\x66\x47\x4c\x99\x47" - "\x3a\x4c\x37\xfd\x06\x69\x7b\x13\xca\x1c\x4c\x28\x73\x24\xa6\x4c" - "\xb9\x5e\x4f\x30\xbe\xcc\x08\x8a\x2f\x33\xc2\x76\x2e\x6e\x23\x86" - "\x27\x94\x19\x9d\x50\x66\xfc\xb9\xb8\x8d\xc8\x4f\x28\xe3\x4c\x28" - "\xe3\x8a\xa1\x25\xfb\x83\x64\x23\x6d\x75\x42\x99\x9a\x84\x32\x3b" - "\x8d\xe7\xbe\x7c\x7e\xe6\x6f\x22\x3b\x78\x33\xc0\xfd\xf9\x3a\xfa" - "\xa7\xe3\xad\xe7\x3b\xf5\xb2\x81\x24\xed\x8a\xc4\xd7\x37\x32\x23" - "\xbe\xbe\x91\x43\xcf\x6d\xd7\xc8\xec\x84\x32\xb9\x09\x65\xf2\x62" - "\xca\xd4\xa9\x7a\x46\x16\x26\x94\x29\x49\x28\xb3\xf2\x5c\xbe\x1a" - "\x59\x9d\x50\x66\x47\x42\x99\x86\xef\xa1\x05\x8f\xe3\xca\x37\x6b" - "\x30\xdb\xca\xf7\xc2\x46\xb8\x79\x18\xfb\x1c\xf0\xde\xe4\xb6\xae" - "\x70\x3f\xde\x0f\xe1\xf1\xaa\xd1\x15\xc6\xd8\x72\x33\xe6\x3f\xb7" - "\x95\x1b\x63\x16\xfb\x63\xb0\x4c\x2b\x1b\x7b\x64\xa0\x2f\x5b\x94" - "\xeb\x31\x7c\xb5\xb8\xae\xc6\xa1\x3c\x4e\xdd\x3c\xad\xc7\x26\x56" - "\xfe\x4b\xa4\xe0\xdc\xfc\xae\xb1\x37\x5a\xab\xfc\x3c\x52\xd8\x26" - "\x6f\x74\xc9\x32\x15\x31\x76\x34\xd7\x1f\xda\xb3\x24\x6c\x8e\xc7" - "\xe3\x66\xe7\x79\xf0\xc8\x80\x6d\xe4\x6a\x81\x65\xc1\xfb\xd7\xcd" - "\x35\xb0\x81\x60\xf7\x33\x6e\x47\xe9\xe6\xa0\xb4\xc9\xe6\x76\x11" - "\xdf\xfb\x4a\xef\x94\xfb\xdb\xca\x26\x1d\x95\xd5\x84\xfa\xd9\x76" - "\x6f\x2a\x3e\x4d\x1d\x72\xfc\x65\xdb\x6d\xd4\x23\x8d\xa5\x41\xe0" - "\x35\xaa\xc7\xff\xc3\x4f\xa3\xa6\x49\x5b\xa3\x62\x5f\x31\xef\xbd" - "\xf3\x1e\x52\x63\x28\x87\xf3\x80\xff\x6f\x1e\x61\xb4\x17\x63\x3d" - "\x64\xec\xe6\xc8\xf9\x68\xa6\xfa\x70\x54\x69\x3c\x4f\xf6\x03\xaf" - "\x8c\x5a\x1f\xdf\xef\xa3\xea\xe2\xfb\x7d\xd4\xae\x78\x9e\x34\x81" - "\x27\x47\x35\x25\x94\x39\x9c\x50\xa6\x2d\xa6\xcc\x7a\xbd\x9e\x70" - "\x7c\x99\x6c\x4b\x7c\x99\x6c\x7b\xcc\x33\xda\x98\x9d\xd5\x33\xf7" - "\x91\xbe\x45\xd9\x39\x31\xcf\xa6\x2a\xa9\x3f\xb3\x27\x19\x69\xbc" - "\x76\xb4\xf9\x4d\xe5\xdb\xa2\xc3\x73\x26\xc8\x3b\xe7\x2f\x4d\xc0" - "\x61\x75\x02\x0e\x3d\xf2\xaf\xef\xa7\xff\xfe\x18\xdd\x52\xa2\xef" - "\xa7\xb7\x63\xcc\x9e\xca\xcf\x80\x55\x8d\xfc\xa0\x43\xf6\xc1\x04" - "\x78\x47\x12\xe0\xb5\xc7\x3c\xdb\xf0\x1c\x89\x69\x83\x2d\xd5\x2e" - "\xfd\x04\x61\xbf\xdd\x92\x69\xa4\xf3\x9c\x12\xf8\x06\xdc\x72\xac" - "\xc9\x65\x9f\xad\x41\x47\xe9\x16\xf6\x69\xd2\x75\xf9\x2d\xb1\xf2" - "\x4f\xaa\x5d\xb7\x4c\x8b\xc7\xe3\x96\xc2\x78\x3c\x6e\x29\x89\x69" - "\x57\xc8\xba\x9c\x7e\x61\x8d\x3c\xf4\x18\xdb\x3e\xec\x6b\x27\x7d" - "\xa7\x96\xc1\x66\x3b\x43\x36\xf6\x59\x3b\x56\x42\xa9\x3e\x57\x00" - "\x73\xb9\xdd\xfe\x3e\xf9\x29\x7d\x5f\xb9\xee\xf7\xe7\x00\xfc\xc3" - "\x06\x3f\x6a\xab\xf6\x95\x6b\x95\x9f\xd6\x23\x0d\xfa\x6f\xd4\x0c" - "\x65\xe7\x36\x04\x85\x3b\xbf\x1a\xf4\xc4\xbc\xe8\xd6\x3f\xeb\xf3" - "\x88\x2a\xf6\xbd\x82\xee\x09\x60\x8c\xcf\x50\x7b\xe5\xb7\x0e\x8d" - "\xe1\xeb\x90\x63\xc9\xdd\xe2\x28\xdd\xfa\x25\xdb\x00\x2c\xa3\xec" - "\xc3\xd5\x18\x09\x12\xcf\xbd\x7d\x91\xe3\xd2\x76\xc3\x7b\xbf\x5e" - "\x36\x3f\xa6\x6c\x50\x9f\x1b\x07\xf8\xdd\xa8\x08\x99\x1b\x43\x41" - "\x02\x9c\x4c\x65\xef\xdd\xfa\x65\x23\xe4\x15\x65\x56\x1b\x65\x78" - "\x1e\xcd\x65\xac\x25\x64\xbe\xb9\x94\xcc\xde\x25\x47\x25\x6c\xc3" - "\x97\x02\xb6\x74\xbb\xaf\x34\x40\xbe\x50\x2b\xaf\x75\x99\x95\x0f" - "\xcc\xad\xfe\xd4\x30\x59\x3a\x2a\xf7\x15\xfb\x71\x1f\xad\xdc\xe7" - "\x02\x6e\x90\xa7\x5b\xcd\xac\x6f\x62\x69\x37\x61\x42\xde\x43\x53" - "\x27\x8f\xfc\xe5\x43\xf7\x4f\x9b\x70\xa7\x63\xda\x9c\x17\x66\x15" - "\x8e\x7c\x71\x41\x89\x63\xd1\xbc\x39\x25\x73\xe6\x3e\xeb\xc8\x76" - "\x5d\xe7\x72\xcc\x2c\x51\xd7\xac\xa2\x99\xf3\x4b\xc6\xf2\xed\x08" - "\x47\xf1\xbc\x59\x0b\xe5\xed\x8d\xe9\x14\x0f\x64\x4e\xc9\xac\x79" - "\x8e\xeb\x0a\x47\x38\xee\x9b\x39\xa7\x68\xc1\xbc\x59\x49\x61\xdd" - "\xe9\x98\x37\x6b\xde\xac\x99\x85\x8e\xb1\x8e\x6c\x86\x1c\x0b\x2e" - "\xa6\x3f\xb3\x8d\x71\x8c\xc7\xaf\x75\x1e\x71\x48\x1f\xcf\xfc\x8a" - "\x7f\x6e\xdb\x73\xee\x58\x76\xdb\x81\x78\x9e\xbb\xad\x35\x9e\xe7" - "\x6e\x0b\x9c\x3b\x96\xdd\x96\x30\xfe\x8d\x4e\x18\xff\x46\x0f\x3d" - "\x77\x2c\x1b\x9d\x30\xfe\x8d\x4e\x18\xff\x46\xf7\x8c\x7f\xe0\x25" - "\xff\x0a\xa9\x17\x46\x27\x8c\x7f\xa3\x13\xc6\xbf\xd1\x2b\x13\x9e" - "\xab\x62\x9e\x2f\xc5\x73\x7d\xec\xf8\x88\xe7\x3d\x86\x7c\xf6\xea" - "\x97\xd1\x07\x8c\x3c\xac\xeb\xa1\x9b\xdb\xf4\xbc\xfe\x98\xbc\x01" - "\x3d\x6f\xa8\x47\xfe\xc0\x47\xec\xeb\xa6\xe6\xeb\xb7\x3f\xc6\x3a" - "\x9d\xfd\xdc\x78\x6c\x82\x7c\x5c\x7d\x92\x46\xff\x91\x61\x31\x0f" - "\xb3\xdf\xa3\x78\xeb\x89\xce\xda\x41\x64\xe1\x32\xb5\xaf\x91\x59" - "\x78\x6e\x6d\xc7\x95\x90\x96\x81\x1f\x74\xca\xed\xb0\x7f\x37\x97" - "\xaa\xf1\xe2\xf6\x3a\x69\xf3\xa3\x8c\x0e\x5f\xce\x6b\x00\xc7\x8e" - "\x32\x96\x75\x6a\x2c\x6e\xc3\x7d\x06\xf3\x34\xca\x9b\x85\xe9\xb6" - "\x5b\x70\x25\xa4\xd9\xf0\xcb\x04\xbc\x3a\x03\xde\xca\xc1\xc9\x6d" - "\xcb\x44\x3b\xb7\x67\x3e\x68\x22\xeb\x3a\x8f\xd6\xea\xd3\xd8\xb6" - "\xbe\xfd\xb0\x5a\x5b\xd8\x0d\x5b\xfe\x8b\xfc\x5a\xa4\x27\x9f\x27" - "\xfd\x04\xf6\xdf\xed\x07\xd4\x7a\xcb\x4f\xd0\xff\x0f\x86\xd4\xda" - "\xe9\x6e\xf6\xbf\xe8\x3a\x46\x3f\xf9\x18\xd7\x6e\x5c\xdf\x36\xe0" - "\x7b\xe5\x7c\xfb\x27\xa3\x85\x27\xe5\x61\x86\x9b\x90\x3e\x09\xfa" - "\xad\xcb\x1a\x29\xcf\x4f\xf2\xce\x29\x3c\xa9\x0f\x25\x49\x2f\x87" - "\xcd\xd0\xe5\xa7\x9f\xec\x61\x7c\x63\xd2\xab\x85\x67\xe0\x34\xce" - "\xef\xe7\xfa\x50\xa6\x2f\x5b\xdb\xf0\x6b\x55\x7e\xe8\x3f\x69\x4b" - "\x68\xc7\x77\xc7\xe8\xa7\x33\x55\x3b\x7e\xba\x2f\xa1\xee\x48\xf2" - "\x76\xfc\x34\x13\xed\xf8\x2e\x79\x3b\x7e\x9a\x2d\x69\x6b\x42\x5b" - "\x4c\xe7\xbc\x9b\x84\xb6\x7c\x27\xe9\x1e\x9f\x5e\xa8\xdb\x42\x3c" - "\x27\xb3\xe1\x9d\x2c\xfb\x70\x69\x6f\xbf\xe9\xf9\x56\x5b\xab\x29" - "\x2f\x49\x9d\xf5\xc2\xd3\xff\x61\x3f\xfd\xf4\x88\x84\xd3\x9b\xbe" - "\x57\xe1\x02\x3a\x99\x24\x9d\x58\x1e\xac\x7d\xf5\xb7\x31\x2f\x51" - "\x6b\x21\x39\x90\xff\x9f\x78\x8d\xb5\xcc\xf9\xa5\x22\x68\xd0\x11" - "\xef\xb2\x12\xde\x85\x63\xde\x8d\x8f\x7b\xb7\xac\x27\x7d\xba\x91" - "\xfe\xc3\xfa\x29\x67\x75\x42\x3f\xa1\x7f\xee\xb8\x2a\xbe\xdd\x39" - "\x35\xaa\x7d\xe8\xa3\x73\x68\x9d\xd3\x80\x3e\xea\x4e\xde\x47\x39" - "\x87\x93\xf3\x5a\x8e\x5c\x47\x13\x83\x28\x09\xbc\x3b\x78\x8e\xdd" - "\x2d\x79\x50\xef\xa7\x73\xfb\xe7\x8e\x11\x46\xff\xfc\xb0\x36\xde" - "\x51\x9c\xd0\xc6\x28\x60\x9c\x50\x6d\xbd\x73\x6c\x02\xec\x8a\xe4" - "\xbc\x78\x47\x1d\xda\x19\x4d\xde\xce\x3b\xf6\xf6\xcd\x8b\x77\xb4" - "\xa2\x3d\xd1\x73\x79\xf1\x8e\xa0\x2a\x43\x49\xca\xdc\x99\x21\x3c" - "\xc9\xea\xb9\x73\xb8\x3b\xc2\x76\xee\x9d\xbc\x97\x62\x8f\x49\x1f" - "\x13\xcf\x7f\x68\x03\x97\x63\xfa\x45\x94\x9e\xe5\x7e\x38\xe6\x20" - "\xd3\xf7\xf1\x64\xa7\xe7\xce\x9a\x04\x5a\x9d\x3a\x46\x3f\xbb\xaa" - "\xc3\x94\x52\xaf\xe8\xf5\xb3\x2f\x13\x70\x6a\x48\x4e\xaf\x3b\x0f" - "\x81\x5e\xa7\x92\xd3\xeb\xce\xf6\xbe\xe9\xf5\x33\xee\xff\x53\xe7" - "\xd2\xeb\x67\x8e\x58\x7a\xc1\xd6\x95\xed\xbb\xd6\x0e\xde\xe8\x2e" - "\x10\xb5\xdc\xd6\x28\xd9\xac\xe0\x15\x55\xa6\x9d\xcb\x4c\xb3\x86" - "\x15\x9f\xc0\x86\xb4\x9c\xa4\x9f\x8d\x31\xe4\x7f\x60\x35\xf5\x17" - "\xdd\x4f\xb0\x1f\x51\x0a\x97\xf3\xb9\x4e\x79\x7d\x91\x6c\xe2\xf9" - "\x47\x42\xbd\xd5\xc9\x75\xc1\xcf\x76\x81\xa6\xaf\x25\x49\x3f\xa0" - "\xfc\xcb\xc6\x50\xbc\x8e\xf8\x99\x3f\xbe\x8f\x40\x37\x94\xd3\xb7" - "\x9d\xbe\xf7\x77\xfe\x3e\x1b\x93\x77\x6e\x9f\x8d\xf9\x56\xf5\xd7" - "\x98\x3f\xc6\xe3\x37\xc6\x99\xbc\xbf\xc6\x94\xf7\xdd\x5f\x63\x6a" - "\xfa\xee\xaf\x31\x0d\xdc\x5f\x68\x6f\x30\x7e\xdc\x18\x73\x28\xbe" - "\xbd\xa8\x17\xe5\x84\xe9\xa2\x4b\xf9\xf9\x87\xb6\xdb\xf8\xb1\x8e" - "\xe3\xbe\xaa\x2d\x23\xf0\x72\xca\x30\xc6\xf1\x42\x61\xf4\x09\x1b" - "\x34\x5c\xbf\x24\xf9\x7e\x2b\xcf\x71\x5b\xaa\x89\x78\x1f\xd9\xf1" - "\x23\xb6\xdd\xc7\xfe\x41\x33\x51\x2b\xee\x4d\xc7\xe8\xee\x57\x35" - "\x93\xa9\x94\xf7\x3c\xa5\x5f\xb8\x5c\x43\x18\x7b\x24\xb6\x2f\x78" - "\xef\x93\xe7\xa6\x6b\xd5\xdc\xe9\xef\xc7\xe8\xae\x59\xaa\x5f\xee" - "\x7e\x29\x9e\x8e\x77\x51\xf2\x7e\xb9\xcb\x8e\x7e\xf9\x7b\xf2\x7e" - "\xb9\x6b\x74\xdf\xfd\x72\x57\x1e\xfa\xe5\xef\xe7\xca\xd1\x5d\x4e" - "\x5d\x8e\x56\x70\x19\xc7\x5c\x9e\x8f\xdf\xf5\x17\xce\x83\x7b\xc8" - "\xc8\x5d\x7c\xa4\x3c\x65\x64\xbb\x21\x47\xb2\x4c\x0d\x60\xc9\xfa" - "\xf5\x3c\xd5\x3a\x8c\x58\xb8\x5e\x6b\x7b\x32\x39\xb9\x4b\xf6\xd3" - "\xcd\xc5\xc4\x7b\xf1\xf9\x9b\x18\xc6\x3c\xa2\x93\x74\xf7\x48\xce" - "\xc7\xe9\x37\x87\x62\xe5\xe4\xee\x9e\x7c\xac\xeb\xf4\xbc\x24\x3a" - "\x9d\xc4\xf9\xe2\x61\xdf\xad\xb7\xbf\xbf\x1c\x47\x38\x3f\xe7\x4b" - "\xc8\x93\xaf\xe4\xf1\xee\x9a\x78\x79\xbc\xbb\x38\x9e\x3f\xef\x92" - "\xe5\x34\xe8\x39\x3f\x8d\x6d\x02\x0e\x3f\x98\xbf\xce\x2f\x9b\x77" - "\xb7\x27\xc8\x26\x78\x20\x77\x8d\xe2\x81\xdc\x17\xe2\x71\xcd\x35" - "\x27\xe7\x81\xdc\xa1\x7d\xf3\x40\x6e\x4e\xdf\x3c\x90\x3b\x8d\x79" - "\xc0\x4f\xb9\xab\xe3\x65\x33\xb7\x28\xbe\xed\xa8\x57\xca\x26\x5d" - "\x72\x21\xb2\x09\x5b\xe8\xd2\xbe\xe4\x90\x65\x8a\xfd\x47\x6a\xbb" - "\x8c\xbd\x8e\x1f\x44\x33\x0b\xe4\x0a\xf8\xdd\xe3\xe0\x35\x25\xe8" - "\xf8\x1c\xa6\xe1\x66\x79\xf6\xf0\x9e\xd1\xb1\x74\x5c\xab\xce\xc7" - "\xb9\x91\xf7\x53\xde\x57\x56\xf4\xbc\x77\x79\x7c\xfb\xef\x99\x96" - "\x9c\x9e\xf7\x14\x81\x9e\xee\xe4\xf4\xbc\xa7\xa2\x6f\x7a\xde\x53" - "\xcf\x67\x8f\xce\x95\xa9\x7b\xf6\x3a\x16\x4a\x1b\x45\x96\x39\x49" - "\xf7\x5e\xf6\xc3\xc6\xa7\x7b\x42\xf1\xe3\xd3\x3d\x47\x2e\x7c\x7c" - "\xba\x37\x27\xf9\xf8\x74\x6f\x5e\xf2\xf1\xe9\x5e\xa7\x92\x87\x7b" - "\xeb\xe2\xe5\xe1\xde\xf2\x78\x9e\x00\xed\xfe\xc7\xc6\xa7\x7b\x83" - "\x09\x32\xb0\xee\x18\x8d\x7b\x09\x36\x45\xb9\xea\xb7\xf1\xb7\xc7" - "\xe3\x38\x2e\x23\x79\xbf\x8d\x1b\x8e\x7e\x5b\x97\xbc\xdf\xc6\xe5" - "\xf6\xdd\x6f\xe3\x78\x0f\x7a\xdd\xb9\xfd\x36\xae\xe4\xc2\x6d\x8a" - "\x71\x3b\xe2\xfb\x6c\xdc\xfa\x0b\xef\xb3\x71\xed\xc9\xfb\x6c\xbc" - "\x39\x79\x9f\x8d\x1f\xaa\xfa\x6c\xfc\xb4\xf8\x3e\x1b\x3f\x3a\xbe" - "\xcf\x40\xb7\xff\x66\x9f\xa1\x7f\xcc\xca\x3f\x61\xfc\xc7\x98\xb7" - "\xf7\xef\xf4\x8c\xdf\xe9\xa7\x09\x25\x6a\x6e\x3d\x41\x8d\x1d\xaa" - "\x0f\x3f\x40\x9e\xba\x73\xc7\x81\xf1\x07\xf4\xb4\x5f\x9e\xdb\x0f" - "\xe3\xdb\xa0\xa3\xdb\x9b\x4a\xe5\xde\x96\xea\x43\xa6\x39\xf2\x79" - "\x97\xf0\xfe\xd4\x04\xde\x2c\x4a\x41\x1f\x0b\x5f\x38\x42\xac\xd7" - "\x91\x3f\xc4\x70\xf8\xcc\x65\x3c\xac\x09\xd9\x17\x32\xc6\x9f\xc7" - "\xa7\xc6\xec\x2d\xbb\x15\xf0\xee\x9b\xa0\x78\x75\x42\xa2\xfd\x5b" - "\x8b\x77\x57\x28\x3e\xfd\xf9\xd7\x09\x38\xec\x49\xce\xa7\x13\x0e" - "\xa2\x0d\xb5\xc9\xf9\x74\x42\xa0\x6f\x3e\xbd\x0f\xfd\x4f\xb5\x31" - "\x73\x9f\x41\x4f\x45\xfc\x09\x73\x9f\xfb\xb2\xac\x21\xc5\x3b\xd2" - "\x26\xaa\xdc\x6d\xee\xf4\xdc\x97\x68\xff\xa1\x6f\xee\x6b\xd6\x71" - "\xfe\x43\x42\xf9\x3e\xec\xbf\xfb\xd8\xfe\xfb\x20\x39\xce\xf7\x9d" - "\xc7\xfe\xbb\x8f\xed\xbf\x0f\xce\x95\xad\xfb\x74\xfb\x2f\xd9\x1c" - "\xef\xbe\xf6\xe4\xfd\xff\xf3\x84\xfe\xa7\xfc\x12\xcc\x87\x65\xf9" - "\xf8\x7c\x23\x62\xf3\xb1\x6f\x12\xe7\x65\x1e\x49\x92\x37\x3f\x11" - "\x66\x1f\xf9\xca\xcf\xe1\x3d\xf6\xa5\x4a\xca\x7b\x3f\xdf\xa9\xe4" - "\x71\xa2\x39\x5e\x1e\x7f\xde\x14\x2f\x8f\xf7\x39\x13\xca\xb5\xc5" - "\xbf\x07\xff\xfc\x8f\xe9\xd8\x89\xd3\x12\x78\xe0\x8b\x63\x34\xf1" - "\x8f\x8a\x07\xee\xbf\x31\x1e\x8f\x89\x45\xc9\x79\x60\xe2\x4a\xb4" - "\xff\x8b\xe4\x3c\x30\xb1\xae\x6f\x1e\x98\xb8\x17\xb4\xfc\x22\x96" - "\x6f\x1f\x2e\xcd\xed\x9f\x90\xc7\x9f\x5c\xe7\x4d\x0c\x27\x5f\x23" - "\xb8\xdf\xa6\x68\x7c\xff\xc4\x78\x1a\xdf\x9f\x15\x4f\x43\xb4\xe5" - "\xbf\x4f\xc3\x9e\xd8\x07\x9d\x9e\xfb\x13\xe5\xdf\x77\x8c\x1e\xd0" - "\xe5\xff\xc1\x4b\x12\x70\xdc\xa3\x70\x49\xb6\x2e\x72\x3f\xcf\x7f" - "\x7d\xc9\x69\x79\x7f\x7b\xf2\x36\x3f\x60\xc6\x18\xe4\xd3\xce\x91" - "\xa5\x07\x86\x22\xfd\x61\x5e\x0f\xe5\xf5\x90\xcd\x48\x7f\x38\x42" - "\x16\x39\x5e\xf5\x8c\x4b\x0f\xe4\xb2\x2f\x0a\xd3\x9f\xf9\xd7\x3a" - "\x94\xf2\x78\x0c\x62\xbc\x0a\x4a\xa5\xdf\x82\x75\x25\xf3\xfa\x35" - "\xcc\xeb\x0f\x48\xfb\x8f\xf7\x59\xd8\x8f\xd0\xea\xa2\x3c\x5f\x28" - "\x42\x06\xbf\x73\xfe\x04\xd8\x35\x2c\x17\x9c\xdf\xc8\xab\xd6\xcd" - "\xca\x13\x74\xd3\x03\x4d\xc9\xfb\xf8\x81\x23\x7d\xf3\xce\x03\x61" - "\xd5\xcf\x0f\x8e\x88\xef\xe7\x07\x6d\x9a\x67\xe0\x34\x6e\x2b\x78" - "\xe0\x82\xe4\xa4\xc4\x21\x82\x7d\xea\xfb\x15\x4f\xb4\x16\x97\xd1" - "\x8f\x8e\xd3\x83\x55\xb2\x3e\x93\x08\x5b\x97\xa7\x50\x93\xd4\x01" - "\x0f\x7e\x23\xf1\x44\x9e\x82\x08\x99\xc4\x8a\xe7\x5b\xf9\x5d\xad" - "\x47\x84\x91\xef\x10\xef\x09\xf0\x99\x65\xf0\xc2\xa5\x47\xe9\xc1" - "\xf7\xe2\xca\x43\x13\xf8\x14\x8c\x40\xad\x94\xc7\x07\xdb\x8c\x35" - "\xdd\x95\x78\x4e\xbe\xee\x3b\xc9\x62\xf8\x3e\x28\x9f\xb1\x07\xfb" - "\xdc\xbf\x64\x9c\xf8\xac\x0c\xe3\x74\x7e\x3d\x30\x69\xba\xc1\xbf" - "\xca\xd7\x72\x52\x51\xaf\x2f\xdf\x24\x97\x9f\x26\x39\xce\xb3\x36" - "\x18\x23\x07\x93\xea\x63\xe1\xa8\xf8\x1f\x93\x1a\x0c\x7f\x3c\xdc" - "\x37\x7d\x0f\x2c\x03\x9f\xf6\x04\x7c\x60\x47\xdc\x7b\x58\xc1\x98" - "\x6c\x39\x1f\x0c\xee\x73\xc5\xb3\xcc\x0f\x93\x1d\xe7\x5b\xf3\x4b" - "\xb5\x53\xde\xeb\xe7\xf0\xd6\x64\x69\x2f\x31\x8c\xf3\xe3\x38\x79" - "\x7d\xdc\xdc\x42\xee\xdd\xf3\xde\xd6\x94\x27\x95\xdc\x4f\x49\x58" - "\x23\x9c\xbc\x53\xfa\x53\xe9\x72\xff\x54\x24\x51\x0e\x26\x1f\x34" - "\xc6\xe8\x84\xf4\x36\x43\xee\x31\xaf\x65\xb8\x09\xeb\xac\x53\xcc" - "\x4a\x16\xa6\x4c\xd7\xd2\x62\xe7\x6b\x53\xa4\xfd\x67\xac\x97\xe2" - "\xbd\x39\xa1\x5c\xc2\xfa\xdf\xe4\x9d\xa2\xef\x75\xfa\x0c\xf4\x6f" - "\x88\xf7\xb6\x54\x0c\x84\x29\xab\x13\xd6\x2b\x82\x6b\xe5\xf9\xf6" - "\xbf\x02\xee\x54\x5d\xef\xe5\x25\xd8\x78\x53\x76\xba\x4f\x9c\xaf" - "\xfd\x53\xfa\x68\xff\x94\xde\xf6\xcf\x65\xb8\x53\x13\xd6\x12\xa7" - "\xca\xf6\x47\xcf\xd1\x7f\x53\x87\x42\x7f\x19\x74\x83\xcd\x3d\x75" - "\x81\x61\xab\xf3\xfa\x41\xdf\xb6\xfa\xd4\xde\xf5\x3f\x55\xae\x77" - "\xfd\x2f\x98\xcc\x56\xf7\x93\xdc\x5b\x8d\xaf\xbb\xda\x5a\x93\xac" - "\x2d\x53\xfb\x58\xff\x9b\xaa\xaf\xff\xe5\x39\xe2\xf5\xd9\x54\x7f" - "\x7c\x1f\x4e\x4d\xe8\xc3\x3c\x8a\xef\xc3\x29\x3b\xff\x6f\xc7\x35" - "\x06\x94\x9a\x9a\x6a\x4a\x4d\x31\xa5\xa4\xe2\x35\x9a\x48\xfd\x53" - "\xcd\xa9\xfd\xf0\xbb\x48\xbf\xf6\x37\xa5\x9a\xcc\xf8\xf5\xd3\xaf" - "\x17\x25\x3c\xf7\xe7\xb2\xf8\x99\xf5\x6b\xbf\x84\xe7\x8b\xbe\xe7" - "\x7d\x7f\xbd\x5e\xa3\x7e\x73\xc2\x73\xbf\xef\x79\x7f\xd1\x7f\xb3" - "\x3c\x9d\xf3\x1c\xef\x87\x76\xff\xdc\x85\x33\x8b\xe6\x14\xca\xfd" - "\xe2\x59\x8e\x99\xcf\x3c\x33\x6b\xfe\x7c\x47\xc9\x8b\x8e\x7b\xef" - "\x79\xe8\xd6\x3b\x1d\x6a\xdb\xb9\x68\xec\x75\x85\xe9\x34\x79\xd1" - "\x3c\x7e\x31\xf9\xe1\xfb\xf3\x1d\x79\xf7\xde\x13\xff\xd2\x00\x23" - "\xb7\x97\xcf\x07\x25\x46\xfe\x72\x2b\x07\x13\xad\x7e\x53\xea\x9e" - "\x36\xf6\xf3\x55\x6b\x1e\x8f\x2e\x3f\xc8\xfe\xa3\x5d\x6e\xe1\xbd" - "\x86\xf7\xf4\x1f\xba\x8e\x1b\x31\xb2\xae\x9c\x8a\x9f\xe6\xf3\x2b" - "\x0f\xdd\x23\xf6\x07\xc9\xf1\x00\x99\x8e\xd2\x13\xaf\x36\xc1\x2a" - "\xe2\x67\x9f\x3f\x42\x0e\x37\x59\x50\xfe\x16\xbc\x4b\x11\x77\x69" - "\x48\x0b\xe9\xbe\xd0\x8f\xdc\x23\xd3\xf6\x97\x1b\xf9\xac\xc7\xe8" - "\xa1\xaf\xc5\x7e\x21\x9f\xf9\x7c\x90\xca\xf7\xd0\xa7\xc2\xf4\x0b" - "\x17\xeb\x86\x9a\x41\x64\xe6\xbd\xd0\xb7\x07\x91\xe5\xed\xc1\x1c" - "\x0b\xe4\xa1\x9d\xc6\x5e\x68\x25\x9e\xfd\xf4\xc4\x7a\xae\x9b\xf3" - "\x6a\xa6\x5f\x6c\xe5\xfc\x9b\xe3\xf3\x1f\xe9\xdd\x8b\x7d\x68\xa7" - "\x09\xf9\xa6\x7e\x49\x56\x6b\x54\x7c\x1b\x4e\x7f\xd7\x7f\xf3\x44" - "\x4a\xf1\xa1\x2b\x0e\x46\xca\x49\xf9\xfc\x3c\x7c\xdd\xe2\xa8\x88" - "\xb0\x7f\xfa\xe4\x76\xb7\x58\xf7\x02\x99\x21\xd3\x29\xde\x79\xec" - "\xa3\xf0\x70\x46\xed\x2c\x32\xa3\xfd\x43\x8f\xd3\xb4\x31\x8e\x29" - "\x44\xee\xc9\x64\xfe\x77\x17\xfb\x1b\xee\x2e\x5b\xfb\x27\x32\xff" - "\xb6\xab\xdc\xd4\x25\xec\x54\x5a\x22\x02\x82\xe3\x03\x85\x44\x98" - "\x7d\xfc\x0f\xce\x88\x72\x9e\xb9\x9d\x6e\x3b\xb5\x94\x84\x68\xd9" - "\x11\x11\xae\xf8\x93\x3a\x1b\xd0\xdc\x1e\x62\xff\x45\xcb\xb2\xc9" - "\x94\x7a\x2c\x9f\x4c\xcd\xce\x6a\xf2\x4d\x0f\x51\xe9\x11\x11\x38" - "\x38\xe3\x6b\x6a\x71\xee\xa2\x82\x56\x32\x1d\x6c\xfb\x1b\xc9\x18" - "\x37\xab\xbe\xb1\x95\x9d\x21\xfb\xb2\x39\x9c\x76\x86\x96\x2c\xa3" - "\x01\x4b\xfe\x4c\x56\x5f\xa0\x15\xf5\x9c\xa0\xc7\x0f\x53\x0a\xe0" - "\x99\x96\xfe\x8d\xec\x4b\x1f\x63\x3f\xdf\x5c\xaa\x29\x23\xbb\x70" - "\x67\x65\x74\xb9\xb3\x6c\x5d\x22\x6b\x50\xa7\x3b\x2b\xb3\xa5\x18" - "\xf9\xdb\xf6\xd1\xc0\x56\xca\xdc\x7f\xbc\xd5\x54\x7d\x9a\x86\x72" - "\x9b\x8e\xa1\x6d\x35\xa7\x91\x7f\xd5\x7e\xaf\x86\xb2\xb1\x65\x22" - "\x69\xfb\x5b\x7d\xf9\x61\xd2\x00\xab\xba\x8b\x86\xd6\x74\x91\x5d" - "\xab\xdc\xef\xe5\x72\xed\xf4\xc8\x1d\xbe\x83\x44\xa5\xcb\x44\xb4" - "\x7b\xd5\x87\x7e\xe8\xc4\xfe\x1f\x3c\xdd\x60\xf6\x1d\x6c\xa7\xe6" - "\x50\x17\xb5\xd0\x5f\xc9\xe7\xfa\x87\xf7\xb7\x4f\x37\xf4\xd3\x20" - "\x04\xde\x25\x6d\xa8\x4b\xf1\x8e\xbb\x99\xcf\x2a\x97\xd3\xba\x32" - "\xca\x28\x5e\x42\xfd\x8f\x23\x5d\xcd\xed\xeb\x03\xbe\xc8\x3f\xbc" - "\x4b\xa4\x3f\xee\x13\xeb\xcb\x9a\x29\xb5\x25\x54\xcd\x7e\x9f\xa6" - "\x68\xfa\x37\x36\x5f\xe8\x10\xf9\x8a\xff\xee\xd5\x2c\x81\xf0\x6a" - "\x8d\x2c\xef\x9d\x3d\x64\xf2\x99\xcf\x92\x2f\x3f\x44\x5f\xa0\x6e" - "\xb1\xea\x9b\xa1\xd0\x5b\xb9\x2d\xa1\x30\x9f\x77\xca\x16\x1d\xf6" - "\xf4\x75\xf3\x68\xc4\xe6\xd3\x34\x7c\xd3\x69\xca\x12\x9d\x59\x26" - "\xf6\xb1\xe5\xb3\xa9\x9b\x70\xcd\x68\x23\x0b\xda\xae\xfc\xb1\xd3" - "\x74\x5f\xdb\xee\x2c\xaa\xed\xea\xf5\xb5\xed\xea\xe8\xf5\xb5\x05" - "\x4f\xed\x62\x7f\x5b\x3f\x4d\x1b\x6f\x3d\x48\xfd\x21\x27\x4e\xe6" - "\xef\x75\x27\xc9\xbc\xe2\x24\xd1\xcd\xe5\x26\x72\xcc\xe6\x73\x16" - "\x8f\x5e\xe7\x43\xdf\xf0\xfd\x51\x7a\xe4\x08\xae\x19\xf8\xa5\x40" - "\x26\xfe\xc8\xed\x6c\xd3\xf9\x18\x69\x26\xa4\xfd\x01\xd7\x54\x5c" - "\xf7\xb9\x6b\x44\x50\x54\x7c\x94\xd3\x61\xa2\x74\xe6\x67\xe5\xdf" - "\xfb\x51\x4e\xa7\xe7\x91\x3d\x7e\x7a\x7e\xb8\xc1\xd7\x4a\xc7\x3f" - "\xb4\xeb\x8b\xa3\x27\x38\x0e\x55\x50\xe2\xd5\xed\x4c\xe1\x98\x54" - "\x7a\x3a\xe3\x70\x15\xd7\x7b\x94\x1e\xe5\x7a\xac\xf8\x41\x4e\x1f" - "\xa9\x32\xca\x76\x74\x3b\x51\xe7\xa3\x97\x21\x5d\x18\xe9\x68\xb7" - "\x99\xdf\x7d\x74\xf4\x84\x49\xe5\xc9\x32\x01\x66\x58\x87\x0f\xd9" - "\x7f\x68\x1a\xcb\x78\x87\xc9\x2a\x1a\x67\x8c\xa6\x9a\x37\xc5\xc1" - "\x4d\x6f\x8a\x26\x25\x7b\x8f\xe6\xfb\xa9\xc8\xc9\x38\x62\x1c\x6f" - "\x5a\x8d\x77\x8d\x18\x85\x98\x2e\x4d\x85\xec\x4f\xf6\x28\xec\xbf" - "\x8b\xe3\xda\x20\x3c\x79\x7c\xc6\xd7\xfa\x7e\xd9\x81\x7e\xd0\x01" - "\xf9\x2d\x6d\xed\xf4\xdb\xae\x40\x3f\xf7\xbf\x91\xc9\x17\x39\x4a" - "\xa3\x32\xc9\xce\xf6\x60\xed\x9b\xc2\x8f\x6b\x80\xfd\x3b\xc1\x2f" - "\x57\x1d\xa7\x47\xff\xf0\xe3\x4c\xca\xfc\x0f\x17\xe9\xfa\xe9\xd1" - "\xbf\xc5\xe8\xa7\x59\xcd\xfe\x86\x18\xdd\xf4\xc4\x65\xe7\xea\xa6" - "\xc7\x2f\x51\xba\x09\xb2\x2f\x75\x51\xd4\xaf\xd2\x1f\x8b\x26\xa4" - "\xeb\x7e\x22\x8f\x7d\x99\x90\x1e\xd6\xd3\x9b\x13\xd2\x83\x7a\xfa" - "\x00\x43\xf7\xb5\x30\x1e\x8b\x58\xf7\xe5\x7f\xcb\xba\xaf\x65\x86" - "\xae\xfb\xa4\xfe\xc9\xff\xb3\xd8\x0a\x5d\xb4\x90\xf5\x4d\xfe\x7b" - "\x8c\xbf\xd8\x4f\x06\xee\x69\x48\x7b\x81\xd3\xd6\xff\x95\xcc\xf8" - "\x19\x7a\xef\x0b\xd6\x7b\xac\xf3\x58\xf7\x6d\x1c\x2c\x5a\x37\xbe" - "\x29\x0e\xd7\xc8\xd8\x3a\xbf\xec\xd1\x7f\xaf\x20\x6d\x35\xd2\x5e" - "\xc1\x7b\xd6\x83\x4c\x93\xe6\xfc\x06\x9e\x23\xb7\x81\x9f\x4b\x35" - "\x53\x36\xad\x45\x7f\xf3\x79\xc3\x95\xa0\xaf\x35\x85\x8a\x7d\x25" - "\x7c\x86\x35\xca\x3e\x69\x6d\x2d\x25\x6d\x2c\x77\x83\x57\x40\xce" - "\x7c\xae\xaf\xa9\x2c\x24\x8e\xf3\xb9\x3b\xc6\xa1\x60\xf1\x03\x1c" - "\x8f\x28\xa5\xc9\x49\xc4\x7e\xe1\xac\xb3\x81\x8b\x79\x3d\x70\x52" - "\x31\x54\xf2\x0b\xfd\x54\xb7\x53\xf5\xf5\x13\xeb\x39\xde\xd9\x51" - "\xfa\xe5\x0e\xcc\xf7\xc2\xdc\x36\x6b\xb4\x9c\xf8\x1c\x0c\x64\x8c" - "\xcf\x2f\x3a\x37\x9a\x34\xe7\x7a\xe3\x2c\x0c\xc7\xbe\x43\x1e\x5f" - "\x6b\x98\x18\x67\x3f\xfd\x32\xd4\x5c\xda\xc0\xe5\xab\x99\x36\xc2" - "\xe3\x36\x60\xa4\x48\x18\x26\x39\x6f\x74\xfa\x29\x5f\xad\x9d\xa7" - "\x7f\xe8\x6f\x9e\x1e\x24\xd6\xfb\xbe\x00\x60\x94\x1e\x55\x30\x00" - "\x4b\x60\x0c\x88\x7b\xa7\xc3\x1f\xb0\x4c\x7c\x0b\xf8\x85\xdc\x5f" - "\x7c\x2e\x92\xf7\xdb\x40\x97\x0c\xf6\x95\x57\xb6\xe8\x2f\x4f\xd4" - "\xfe\x95\x48\x3f\xdb\x09\x7e\xfb\x65\x3b\x9f\x5b\xe2\xf3\x9c\xe7" - "\x3b\xcb\x09\x1a\x0d\x37\xce\x73\x6a\x8b\xfe\x67\xcf\x72\x02\xb6" - "\x7d\xb3\x49\xec\x02\xfe\xed\x7c\x9e\x13\xf8\x4f\x62\x3e\xd4\xdb" - "\x14\x7c\xe3\x71\x49\xf3\xd1\x9c\x86\xb9\xe3\x01\xa3\xff\xb9\xbd" - "\xdc\x16\xbc\xb3\x2b\x1b\x51\x1c\xf2\xd3\x63\x41\x7e\x8f\x34\x33" - "\xe7\x1f\x05\x3d\xe6\xc3\x18\xf6\xc1\xd1\xa8\x69\xdd\x12\x32\x2b" - "\x9d\xf6\x44\x1a\x97\x57\x3a\xed\x71\x6f\xaf\x4e\x7b\xfc\x63\xa5" - "\xd3\x14\x8d\x95\x4e\x7b\xfc\x5d\xa5\xd3\x1e\xdf\x22\xf7\xc5\xa0" - "\xd3\xf8\x1d\xeb\x35\x43\xa7\x6d\x1a\x2c\x0e\xb0\xee\xe8\xf4\x3c" - "\xbe\xde\xd0\x6d\x6b\x90\xc6\xba\x83\x71\x54\x7a\x2a\x3f\x20\xfe" - "\xdf\x2c\x52\x7e\x07\x7c\xef\xe4\xf3\x0b\x01\xfd\x9e\xc7\x93\x14" - "\xa5\xe3\x1e\x6f\xeb\xd5\x71\x8f\x3b\x7b\xcb\xb2\x8e\x7b\xfc\x3b" - "\xa5\xe3\x54\x7a\xed\xe3\xac\xe3\xf2\x03\x4c\x03\x1d\xbe\x89\xd7" - "\xf0\xf4\xfc\xa0\xe3\xa3\xc1\x58\x1d\x17\x2f\x5f\x4f\x8c\x31\x74" - "\x1c\xeb\x36\x3c\x4f\xf2\x53\xba\x9c\x67\xb3\x9c\x55\x81\xe6\x86" - "\xdc\x71\x1f\x70\x9b\x39\xae\x19\xd3\x6d\xdc\x09\xea\xaf\x9f\x1d" - "\xd2\xdb\xfd\x44\x85\xe1\xfb\xe8\xa7\xc7\xd7\x27\xb3\xa3\x7b\x63" - "\x0f\xd2\xd5\x7c\x76\xde\x57\x7e\x94\x7c\xd5\xa2\xbc\x25\x72\x84" - "\x0a\x4a\xa0\x2b\x52\x9f\xff\x92\xfb\x16\xf3\x8e\x9f\xf1\x95\x75" - "\x0f\xc6\xd2\xe6\x82\x10\x5d\x84\xb9\xfa\x97\xeb\x4c\x78\xe7\x8a" - "\x7b\x27\xd7\x18\x6e\x9e\xc7\x71\xeb\x9e\xd8\xd5\xd7\x7c\xff\xc2" - "\xea\x9b\x3e\xb6\xef\xfa\xa6\x3f\x26\xeb\x83\x4d\x85\x39\xd0\x25" - "\x27\x69\xba\x9c\x97\xc8\xf8\x36\x2b\x92\xc2\xaa\xd4\xdf\xf7\xeb" - "\xe3\xfd\xbb\xdf\x53\xfe\xdf\xbe\xa7\xfc\x37\xac\x8b\xd0\x3e\x6b" - "\xd4\x13\x0f\x67\x60\xc4\xc8\x77\x1c\xf9\x9e\xbc\x44\x5f\x8b\xf9" - "\xd2\x3d\x4c\xce\xd1\xec\x06\x4c\xe6\xbf\xb5\xc8\x27\x63\x86\x40" - "\x57\x8e\x5f\x4c\x1c\xaf\x25\xb6\xec\xe4\x5e\x1a\x3f\x49\xe7\x59" - "\xf7\xcb\xf0\x55\x93\x8c\xa1\xd9\x08\x9b\x14\x63\x1c\xc7\xed\xd3" - "\xd7\x3f\x9e\xac\x87\xde\xac\x8b\xf1\x8b\x6d\x87\x9e\xbb\x9a\xe3" - "\x1a\xb0\x7d\xb9\x4e\xcd\x37\x2f\x87\x7e\x1e\xc4\xe7\x61\xf8\x6c" - "\x4c\x41\x34\xcf\xd4\x28\xe3\x8b\x3d\xe9\x37\xca\xf6\xb5\xce\xc2" - "\xf5\xea\x75\xb2\x8f\x69\xa8\xd3\xf3\x54\xa6\x51\x86\x61\xb3\x9f" - "\x22\xc6\xe5\xab\xe5\x99\xd2\x48\x3b\xeb\xc2\xcb\x61\x8b\x0e\x52" - "\xf5\xcc\x20\x55\xcf\x53\x13\xfd\x34\xdd\x76\xbe\xb3\x19\x7d\xb7" - "\xef\xa9\x95\x17\xde\x3e\xd2\xdb\xf7\x94\xf7\x7b\xda\x77\xbe\x7a" - "\x23\x17\x5e\xaf\x4d\xaf\xb7\x20\xe7\xc2\xe9\x5a\x50\xf4\xc3\xe9" - "\x9a\xad\xd3\xb5\xa0\xee\x7b\xe8\x9a\xac\x9e\xc3\x3f\xbc\x1e\x87" - "\x5e\xcf\x0c\x4b\xb2\x7a\x48\xfe\xf5\x79\x6e\xca\x62\xc4\xb0\xe4" - "\x78\xae\x2a\xbe\xdc\x8c\xbc\xd8\x58\xbd\x2a\xce\xeb\x8c\x42\x23" - "\x56\xaf\x1e\x4b\x16\xba\x7a\xc6\xf2\x82\x3a\x1e\xdf\x85\xe6\xa7" - "\x19\x2b\x39\x3e\xea\xf8\x65\xea\x4c\xb6\x5e\xa6\xfa\x7c\x31\x82" - "\x39\xa6\x95\x10\xf9\xd4\x58\x2d\xf7\xdb\xa1\xd7\x67\xfc\x91\xfd" - "\xef\xd5\x7e\xe1\x8c\x23\x4a\xee\x67\x60\x8e\x38\x23\xab\x6f\x18" - "\xfb\x76\xd5\x97\x65\xf7\xeb\xcb\xa7\xbe\xd3\x33\x73\xa8\x9f\xe6" - "\x66\x48\x3f\xfa\xf4\xcf\x0f\x60\xfe\xa0\xc7\xd5\x7b\xe6\xed\x98" - "\x18\x82\x18\x0b\x9f\xfe\x9d\xee\xfb\x0f\x1a\x94\x83\x96\x33\xa7" - "\x19\x34\x30\xd2\x91\xe6\x34\x68\x00\x9b\x26\xc3\x57\x17\xe1\xb3" - "\x39\x21\x75\x0e\x7b\xe6\x1a\x51\xb9\xaf\x4e\xc1\x9e\xd9\xaa\xec" - "\x16\xd4\xd7\x9d\x6f\x96\x73\xa5\x32\x9e\x2b\x3d\x5d\x1c\x4c\xdb" - "\x57\x67\xe0\x21\xe6\xdb\x4d\x7c\xde\x7b\x54\x44\xc5\xe9\x62\x9b" - "\x80\xcf\xc6\xc9\xf7\xf3\xb3\x4c\x98\x5b\x82\x26\x33\xbf\x15\x1d" - "\x1c\x2f\x46\xc2\xce\x00\xde\xd5\x0c\xd7\x8f\x6b\x70\x69\x16\xc7" - "\xba\xd0\xdb\x33\xf3\x2f\xda\xaa\xcf\x0f\x68\x9d\x76\x93\x81\xef" - "\x66\x79\x8e\xf5\x69\xb4\xbf\x40\xda\x6d\x0a\x1f\xbb\x89\x7d\xf8" - "\xb5\xf4\x7d\xbb\xc4\x52\x3b\xed\x99\x17\x90\x73\x25\xae\x73\x14" - "\xc7\x83\xe3\xb9\x11\xec\x11\x94\x9b\xd6\x43\x37\xc0\x15\x9d\x06" - "\xdd\x9e\x26\x35\x16\xab\x36\x86\x96\xda\x4d\x8d\x41\x79\xc6\x8e" - "\x86\x3b\xdc\xdf\xa9\x58\xcf\x4f\xaf\x37\x68\xd7\x83\x13\xf0\xe1" - "\x3c\xca\xa7\xe9\xe9\x5d\x06\x4e\x52\x5e\xd3\xf9\xcc\xee\xcc\x7a" - "\x3e\x2b\xa4\xe8\xdf\x98\x81\x3c\x87\xcf\xa5\xff\xd3\x81\x18\xfa" - "\xa7\x32\xbf\x31\xfd\x79\x7d\x03\x74\xb9\x04\xb4\xb4\xa8\x33\x0e" - "\x6c\xc3\x3c\xc3\x67\xe9\x33\x18\x4f\xad\xd2\xa0\x79\xbe\x59\xad" - "\x8d\x3d\x33\x29\xa6\x1f\xd0\x5e\x3b\xdb\x67\x29\x46\xfb\xb9\x0c" - "\xd3\x80\xe3\x3b\x72\xdd\xc0\xe7\xe2\x4e\xcf\x33\x85\x89\x6d\x5a" - "\xa1\xce\x8f\x90\xf2\x27\x79\x66\x65\x8f\x7c\x0c\x16\xc1\x12\x87" - "\x08\xab\xb3\xc8\xcf\x8c\xd8\x53\x16\x34\xf7\x25\xf7\xcc\x83\x32" - "\x56\xa4\x49\xae\x25\xc0\xce\x9a\xb5\x58\x00\x37\xd5\xf7\xb3\x7e" - "\xa1\xd2\x0a\x37\xe1\x0a\x1e\x7b\xe6\x8c\x40\xdd\x41\xb7\x8c\xab" - "\x82\xb6\xcd\xaa\x62\x9e\x33\xf8\x8c\xd7\x1e\x95\x9f\x78\xe1\x63" - "\xac\x47\x0c\x9a\x03\xff\xf4\x4e\x4f\xe1\x70\x03\x7f\x23\x3f\xf7" - "\x1d\xe7\xe1\x7d\x9a\x26\x47\x58\xea\x57\x75\x4e\xa8\x30\xcf\x90" - "\x5b\xae\x83\xfb\x99\xf5\x0b\xd3\x43\xd1\xa2\xb0\x38\x1e\x96\xdd" - "\xa4\xe2\x53\x32\xcf\x43\x1e\x97\x84\xfb\x21\x4f\x55\x2f\x8c\x42" - "\x9b\x7a\xd7\x83\x27\xfb\xf6\x4b\xff\x3b\xd5\x1f\x85\x51\x6e\x57" - "\x2f\xbe\x2c\x7f\x85\x3d\xfd\xcf\xef\x42\x6e\x3b\xc7\xb3\x95\x7a" - "\xa5\x64\x18\xe3\x1b\xe4\x38\xb1\x92\xd7\x01\x7f\x3c\xe3\xce\x79" - "\x8c\x3e\xeb\xe5\xc5\x59\x43\x63\xe1\x08\xb7\xdd\x64\xe8\x27\xa5" - "\x3b\x82\x98\xa7\x92\x43\xed\xb1\xcc\x9a\x18\x83\xb3\xd7\xc0\xa7" - "\x57\x27\xcc\x72\x26\xf2\x24\xd7\xcd\xf1\xf7\x74\xd8\xac\x4b\x6c" - "\x47\x69\xd6\x34\x85\xd7\x33\x07\xb9\x1f\xfb\x1a\xd3\x8c\x38\x9f" - "\xaf\x2b\x1d\x82\x7e\x9e\xfd\xe7\xd7\xd5\xd9\xa1\x90\x8a\xe5\x38" - "\xeb\x2f\xc2\xb4\x85\x69\xc5\x6b\xe8\x41\x19\xa3\x43\x9e\x2b\x9f" - "\x25\xcf\x98\x0f\x2c\xde\x22\xe3\xc7\xea\xfe\x80\xc1\xa6\xe2\x88" - "\xdc\x6b\x70\x97\xf0\x39\xdb\x08\xcf\xef\xa4\xbf\x5b\x63\x49\x84" - "\x1e\x0e\xb3\x4c\xcc\xce\xe2\xf3\xf3\x21\x29\x4b\xb3\x47\x1b\x67" - "\xe6\x39\xa6\xa5\xe8\xcc\x27\xe8\xa1\x54\xb6\x8b\x1c\x6e\x8e\x77" - "\xf0\x2c\x9f\x1f\x22\xbd\x7f\x69\xad\x49\x1c\x52\xf2\x3f\x7b\x99" - "\x8c\x23\x28\xf7\xae\x8e\x42\x27\xa4\xfe\xe3\x28\xcd\x7e\x43\xad" - "\xf5\x18\x3a\xea\xd9\x01\xbc\x7f\xe5\xd7\x61\xa0\x2e\x8c\x7f\x33" - "\xcd\xe7\xea\x92\xd9\xcb\x8c\xf9\x0a\x9f\xb9\x53\x7b\x61\xbd\xf0" - "\xfc\x34\xbb\x94\xaf\xbd\x7d\xf0\x7b\x86\xd5\x7e\xae\x5e\x78\x96" - "\x0c\xd9\x2b\xbe\x86\xcf\x6d\xcf\x6a\xe2\xfa\xfb\x1a\x2f\x84\xfb" - "\x31\xee\x27\xcb\x31\x47\xf2\xbe\x49\xbe\xb7\xf6\x6c\xa1\xd1\x06" - "\x83\x26\xaa\x0d\xcf\xee\xeb\x48\xdf\x6d\x89\x69\xfb\x3e\x49\x8b" - "\xde\xf7\x67\x62\x68\xc3\xcf\x21\x35\xae\x3d\xbb\x07\xfc\x51\xaf" - "\x78\x4d\xa5\x41\x76\xb6\x89\xa5\xd0\x05\x12\xc7\x39\x64\xc8\x3a" - "\xf2\xc2\xfe\xfb\x76\xa8\xda\xe3\x7a\x16\xed\x7f\x56\x8f\x9b\xf0" - "\x6c\x05\xe3\x92\xb4\x9d\x71\x38\x3a\x8b\xd8\xbe\x50\x71\x14\x9c" - "\x2f\x30\xbe\x8e\xeb\xb9\x8f\x9d\x77\x48\x1d\xce\x31\x15\xba\x9d" - "\xfd\x42\xdd\x59\xd4\xd1\xed\x84\x5e\xc8\x32\x75\x7a\x9c\xd0\xff" - "\xa7\xc2\xaa\x4e\xe7\x0c\x03\x57\xc6\x0d\x76\xb3\xa5\x53\xcc\x49" - "\x4e\x5f\xae\x57\xc6\x79\x72\xf6\xc7\xcf\x82\xdf\x45\x3f\x24\x0e" - "\x13\xec\xf2\x40\xb0\xb2\x61\xbd\xb6\x50\x1c\xe0\x78\x62\x98\x7b" - "\x04\xd6\x81\x77\x07\x2e\xf7\xc2\x16\x7f\xd2\x54\xb0\x98\x72\x31" - "\x47\x26\x71\x56\xe4\x6c\xd6\x70\x5d\x28\x46\x73\xbc\x6e\x3c\x67" - "\xeb\xcf\x23\xf8\xb9\x63\xa1\x98\xde\xe9\x99\x63\x33\xf6\x04\x55" - "\x2c\x9c\x39\x8e\x9e\xf8\x41\xa9\x4f\xf0\xf9\x21\x8e\x33\xa5\x61" - "\xee\x13\xe0\x7a\x0b\x78\xfe\x8a\xfa\x90\x0f\xf2\x3f\x43\xb6\x33" - "\x98\x7a\xd3\x20\xfc\xb2\xfa\xd8\x3b\x0d\x30\x5e\x1d\x69\x0d\xeb" - "\x0d\x5c\x07\x86\x72\x4d\x3f\x10\xb7\x9d\x06\x6e\x48\x3f\xb0\x4e" - "\xa5\x47\x38\xde\x21\xfb\x36\xe2\xfd\x41\x03\x57\x03\x07\xae\x8f" - "\xcf\x6b\x8a\xf4\xdd\x76\x8e\x35\xc3\xf5\x05\x97\x72\x7c\xdf\x39" - "\x61\x03\xdf\x1f\xca\xc7\x65\x35\x42\xf0\xd8\xc9\xba\xd7\x31\x84" - "\xa8\x25\xc4\xfa\xe4\xb9\x49\x8d\x35\x21\x5e\xdf\x1e\x82\x3a\xae" - "\xe8\x10\x4e\xd2\xba\x9d\x49\xfb\x97\xcb\x20\x7f\x85\xd4\x0d\xab" - "\x76\x5f\xa1\x89\x89\xd0\x11\x28\xd7\x3d\x91\xd7\x96\x20\xb3\xcf" - "\xed\x69\x2a\x0d\xf0\x19\x4b\xe8\x9b\xe7\xf6\x20\x8f\x9d\x6d\x2c" - "\xcc\xaf\x58\x67\xa5\xb2\x5e\xf2\x2e\x1c\xcd\x30\x3e\x36\xbb\xc8" - "\xdc\xe4\xfa\x61\xdf\x01\x00\xdc\x76\x25\x37\xcf\xb5\x1b\x76\x09" - "\xee\xc3\xf1\xfb\xdd\xcf\xf9\x13\xe7\x66\x4f\xbf\xf8\x62\x49\xc1" - "\xbc\x59\x7c\xc9\xba\x6e\xc1\x8d\xe9\xb1\x73\x70\xd6\xc1\x2a\x3e" - "\xc2\xf3\x36\x5e\xef\x7a\x7d\x90\xb1\x7f\xfb\x7c\xcf\xf9\x2f\xdd" - "\x4f\xfc\x6e\x9e\x4b\xb0\xcd\x8d\x77\x45\xbf\x2b\x5d\x26\x6d\xa0" - "\x2f\x2d\x64\x4a\xac\x6f\xf6\xcc\x92\x99\x45\x77\xf2\x4e\x4d\x7a" - "\xb2\x7a\xca\x13\xea\x69\xe8\xa9\x47\xe9\xc0\x90\x89\xf3\x55\x76" - "\xef\x12\x69\x6d\x79\xea\x8c\xee\xf3\x47\x8c\xb5\x94\x3e\xfc\xeb" - "\xf2\xa3\xab\xbe\x60\x7a\x73\x4c\x29\xd3\x47\x4b\x5a\x4d\x6c\xcb" - "\x94\xe1\x9e\xe7\xb4\x72\x6d\x46\x8f\x53\xb4\xff\x74\x2b\xc6\x98" - "\xa2\x6c\x51\xb9\x9b\xd7\x75\xb3\xfa\x9a\xc7\xc6\xfa\x26\xb0\x2f" - "\x5b\x1b\x15\x4d\xec\xd3\x8f\xa0\xe2\xf3\x56\xa5\x63\x8a\x36\x35" - "\xd9\x89\xf1\xf8\xf5\x51\x2a\x7a\xdb\x6c\xc7\x38\x32\x84\xfe\x05" - "\xf7\x9b\xb8\x2c\xbf\x8b\xeb\xe7\xab\x4e\xd4\x99\xc1\x85\xe0\xc6" - "\x14\xa1\xfe\xc8\xac\xdf\xa4\xe2\x67\x12\x29\x72\x97\x2d\x15\x14" - "\xee\x7f\x91\x99\xac\x03\x33\x2c\x57\xff\x68\xa8\xfd\xee\xbb\xc6" - "\xe4\xb8\xcb\x4a\x21\xbd\x91\xb0\x55\xc4\xc6\xd5\xfa\x2a\xfc\xc8" - "\x8d\xe5\x24\xfd\x2c\x2a\xbf\x0a\x27\xc3\x75\x8d\x47\x14\xf3\x99" - "\x66\x2d\xbd\xdb\xe1\x5e\x40\xa6\x0f\xba\xfc\x26\x8e\x1d\xcf\x36" - "\x16\x7f\x5b\xe0\x28\xbd\x70\xe3\x17\x48\x43\xfb\x5d\xa2\xa2\xdb" - "\xa1\x6c\x93\x17\xe6\x68\xab\xba\x1d\xbd\xf0\xcd\xc4\xf0\xdd\x6f" - "\x93\xa9\xbe\x2c\x60\xf2\x99\xef\x22\x9f\x23\x44\x5f\xe0\x3e\x29" - "\x2d\x51\x27\xdb\x3b\x0c\xa3\xd6\xa3\x55\xb8\xbf\x23\x93\x7e\x2e" - "\xd1\x74\x92\x5e\xd8\xb2\xab\x8f\x72\x7c\x0e\xb8\x23\xbd\xe1\xd1" - "\x4e\xcf\x0b\xe8\xff\x7b\xcc\xfa\x78\x07\xbd\xfc\x02\xf8\xbf\x48" - "\xea\x7f\xbc\x7f\xa4\x43\xc6\x16\x9e\x4b\x46\x9e\xe4\x63\x1e\xaf" - "\xcd\x0a\x2f\xf7\xab\x38\xfb\x4d\x80\xcf\x3c\xf4\xe1\x1f\xd1\xdf" - "\xe7\xba\x95\xf7\xa8\xfa\x0d\x0c\x53\x86\xfb\x8c\xe8\x8e\x7a\x28" - "\x13\xec\x6e\x8a\x62\x4e\x1d\x39\x2b\xf2\x9b\xdb\x4f\xcb\x58\x97" - "\xac\x3f\xde\x9f\xfd\x7b\x93\x2f\x7c\xca\xeb\x5b\xa9\x51\x0b\x6c" - "\x0f\x5f\xcd\x29\xaf\x8a\x89\x19\xa5\x66\xfa\x2b\x35\xbb\xfe\x77" - "\xb9\xaf\xfc\xaf\x48\x17\xe5\x4c\xe7\xee\xb3\x62\x9a\xcf\xfc\xbf" - "\x88\xbf\x7d\xc2\xba\x10\x74\x77\x9c\xa4\xb9\xff\xb6\x1f\x70\x3e" - "\xf8\x2f\xc0\x92\xb1\xb4\xc6\xd2\x17\xb8\x47\x9b\x0e\x1b\x7a\x32" - "\x69\x0c\x92\x14\xef\x1a\xab\xeb\x49\x93\x06\x9d\xcb\x31\xcf\xa0" - "\x6b\x47\x73\xbb\xf0\x9c\xcd\xcf\xb8\x8e\xe0\xab\x75\xb9\x77\x93" - "\x35\xf2\x24\xeb\xe0\x7c\xd6\xaf\x48\x9f\x56\x7b\x56\xea\xe4\x3c" - "\xfd\x79\x92\xfe\x3c\x51\x7f\x1e\xaf\x3f\xe7\xea\xcf\x63\xf8\x59" - "\xe9\xee\x17\x9d\x3d\xe3\x8a\xa9\xff\x21\x3c\xbb\x8c\xbe\x00\x3e" - "\x03\xac\xae\x65\x72\x0c\xd0\xf1\x18\xad\xe3\x95\xad\x3f\x1b\xf8" - "\x5c\x65\x8d\x2c\xfb\x9f\xc2\x27\x1c\x8f\x4f\xb1\x25\x06\x1f\xb2" - "\xba\x72\x7f\x08\x3e\x36\x2b\xc7\xe7\xff\x6f\xe0\xc3\xb8\x70\x1a" - "\xea\xaf\x48\xc0\xa7\xda\xc0\x27\x29\xbf\x2d\x14\x01\x1e\xff\xe6" - "\x5f\x21\xe3\xfd\xf6\xe7\xb1\xad\xb6\xcb\x88\x5f\x57\x7c\xf8\x7c" - "\xf1\xeb\x20\x0b\x76\xe4\x41\xfb\x8b\xeb\xf5\x71\x7e\xaf\xb2\x05" - "\x5f\xca\x30\x7c\x8a\xd0\xd6\x1d\xeb\x54\x5b\x77\xae\xe4\x18\x6e" - "\x8b\xe9\x4a\xb7\x4b\x04\x30\x37\xfb\x8a\xe7\x0f\xb1\x70\x8b\x4a" - "\xe6\xcf\x7f\xe1\x4e\x47\xd1\xcc\xb9\xb3\x1c\xd7\x15\x3a\xe6\x3b" - "\xe7\xcc\x2e\x99\x15\xbf\xcf\x6e\xd3\xbf\x97\x22\xcf\x0f\xb0\xbd" - "\x2d\xe7\x5b\xe0\x7f\xd6\xdb\xca\xe7\xf3\xa5\x66\xe1\x79\x29\x87" - "\x75\xfd\xe6\xd7\xc8\xcc\x67\x8a\x81\x4f\x8d\xa1\xe3\x8d\x39\x12" - "\xeb\x78\xa4\xc3\xfe\x9b\x3b\x3a\x26\x9d\xf3\x1e\x30\xd2\x18\xbe" - "\xae\x9b\xfa\x1f\xa5\x97\xe6\x70\x9d\x49\x69\x78\x56\xd4\x61\x7c" - "\xe5\xef\x0d\x98\xa0\x53\x04\xc7\x63\xe2\x73\x79\x28\x27\x8e\xd1" - "\xbc\x2b\x58\xf7\xf2\x37\x79\x94\x5d\x2f\x80\xe3\xbc\x91\x28\x53" - "\x8f\x34\xf3\x5a\xe4\xc5\x5c\x81\xe3\x28\x71\xde\x09\x1c\x1f\x01" - "\xe9\x16\x3d\xce\x14\xa7\x3d\xc6\xf1\x0b\x90\x66\x8b\x49\x7b\x81" - "\x63\xa5\x23\xcd\xa1\xc3\x5b\xc6\x74\xc6\x73\xae\xbe\x96\xc2\x79" - "\x5e\xd5\xeb\x2d\x8f\xc5\x99\x3f\x9e\x71\xeb\xcd\xd9\x8e\x69\x0f" - "\xff\x64\xec\x5d\xcf\xbc\x38\x77\x76\x3a\x49\xb2\x67\x61\xb8\xcc" - "\xbe\xd5\x75\xe3\x9d\x8e\xe2\x59\xb3\xe6\x39\x16\xcd\x9a\x5b\xe2" - "\x98\xb9\x68\xe6\xe2\x74\x9a\xfd\xe2\xbc\x67\xf8\xf4\x3d\x77\xcb" - "\xfc\x82\x67\x66\x3f\xcb\xce\x10\x2a\x77\x7a\xdc\x38\x3e\x8d\x75" - "\x9b\x1e\xaf\xe2\xc0\x3a\xb6\x35\xd2\xf6\xd6\xe1\x9e\xe3\x38\xd9" - "\x71\x6d\xc2\x6f\x2f\x7e\x0d\xf8\x1d\xc6\xef\xd0\x71\x72\x4d\xc7" - "\x75\x4f\xa7\x67\xfe\x18\xc3\x9e\xe8\xe5\xa1\xf9\x79\x06\x0f\x61" - "\xfc\xdf\xa3\xc6\xb7\xf9\xe5\x2d\x11\x29\x3f\x3d\x3c\xb5\xee\x6c" - "\x2f\x4f\x71\x1c\xca\x16\xf6\xf5\x59\x88\xf7\xe0\x61\xd0\x9f\xe7" - "\xd5\x69\x4c\xb7\x63\xb4\x70\x01\xe6\xe3\x07\x39\x86\x0a\xae\x4d" - "\xe0\x97\x83\x2a\x6e\xc9\xfc\x08\xf2\x0d\x43\x1d\x7b\xf5\x3a\xd4" - "\xf3\x60\x71\x80\xbf\x9d\x71\x54\x7f\x66\x58\x80\x31\x80\xef\xf9" - "\xaa\xef\xa9\x59\xd9\x6f\x52\xcd\x1b\x8d\x77\x25\xdb\xf5\x3a\xbc" - "\xa0\x45\xf9\x66\x8f\x5c\xfb\x93\xf3\x2b\x5e\x3b\xb4\xa6\xdc\x2d" - "\x80\xcf\x29\x2d\xf5\x09\x19\x7f\xdc\x57\xde\x05\x1d\x71\xdb\x6d" - "\x3e\x97\xcc\x9f\xc2\x6b\x8b\x53\x8a\x85\xc6\xf1\xa9\xb5\xd4\xe7" - "\x5b\xb9\x9c\xb0\xec\xad\xd3\xd6\x0e\xc8\x55\xb6\x00\xc7\xa3\x2b" - "\x29\xd7\x61\x86\x99\xb6\xc7\x69\xfe\x2d\x6a\xae\xe6\x9a\xae\xec" - "\xb3\x92\xd5\x86\x0f\x1e\x64\x34\x0b\xcf\x35\x86\x0e\xf0\x53\x89" - "\x53\xf7\x97\xf2\xaa\xf6\x97\x1c\xd6\x9f\x1b\x74\x1c\x53\x38\x46" - "\x06\xf0\x3f\xc4\x7d\x87\x79\x6f\x03\xee\x0f\x83\x3e\x07\x15\x7d" - "\x4a\xa4\x0d\x08\xbb\x86\xdf\x1f\xe6\xef\x8c\xe0\xdd\x61\x15\x7f" - "\xa2\x24\x83\xdb\xdc\xeb\x53\x59\x93\x0b\x5c\x07\xf0\xde\x23\x64" - "\xa9\xc1\x77\x96\xe5\xb3\x84\x63\x59\xee\x32\xf4\x0e\xeb\x99\x82" - "\x28\xe4\x54\xda\xdd\x0b\xc6\x1b\xfa\xa6\x97\x0f\x16\xe4\x27\xd3" - "\x25\xc9\xfa\x5d\xd1\x7f\xc1\xef\x84\x67\x5e\x0d\x70\xda\x25\xfb" - "\x80\xe3\x74\x9e\xed\xb1\xef\xbb\x95\x8e\x5c\xb0\xb3\x67\x2e\xa2" - "\xe3\xc1\x31\xbf\xfd\x8c\x5b\x97\xdc\x0f\xd6\xf5\xc6\x82\xc3\x86" - "\xde\x30\xe0\x58\x53\x84\x66\x75\xe1\x5f\xc5\xee\x30\xaf\x9d\xf3" - "\x78\x29\xed\x11\xc0\x19\x78\x46\x9d\x8d\xd2\x2a\x77\x43\x27\x2e" - "\x58\x0d\x1d\x63\x96\x36\xa7\x67\xde\x07\xbd\xba\x68\x61\x56\x2c" - "\x4c\x61\xd9\x1d\x66\xb8\xac\x8f\xd8\x26\x29\x88\x9a\x39\x3e\x49" - "\x58\x1f\x5f\xa0\x83\x17\xe6\x1b\xb8\x82\x86\x07\x0c\x7c\xf5\x6f" - "\x3c\x41\x57\x2d\x68\x98\x1a\xed\x66\x1f\xe1\x26\xd5\x9f\x2e\xa9" - "\x6f\xf0\x6e\x27\xca\x56\xf9\xe9\xa5\x80\x2e\x43\x07\x51\x7e\x67" - "\x63\xd9\x78\xe4\x59\xb8\x4b\xf7\x73\x3d\x84\xfe\x3d\x1c\xc3\xfb" - "\xdb\x63\xd6\x02\x0e\xab\x3e\xbc\xab\xfc\x28\x2d\x0c\xc6\xa4\xeb" - "\x7d\xdb\x98\x77\x94\x16\x6d\x57\xf3\xea\xdd\x0d\xaa\xfc\x22\x75" - "\x76\x45\xc7\x91\x75\x01\x9f\xe3\x62\x19\x97\xb4\x97\x7d\xbc\x28" - "\xcb\x18\x2f\x00\x6b\x8f\xa4\xf9\x60\xb1\x97\xe9\xa4\xe2\x40\xcc" - "\x6b\x51\x74\x5a\x94\x17\x47\x7b\x1e\x37\x51\x0f\xd3\x69\xe0\x72" - "\xa1\x0d\x0c\xa5\x88\x82\xc5\x66\x62\x79\x61\x19\xe7\x3d\x23\xf0" - "\x87\xb4\xab\x14\xdd\x16\xad\x37\xe8\x66\xf4\x1d\xd3\xc9\x4f\x8b" - "\x88\x69\x1b\xdf\xc6\xfe\x87\x8e\x1a\x6d\x07\x4d\x79\x1d\x1c\xcf" - "\xf5\xba\x5c\x1c\xf4\x0e\x61\x9f\x82\xf9\xef\x36\x9a\x7f\x42\x8d" - "\xae\xd1\xa4\x68\xbb\x28\x08\xda\xe6\xc5\xcc\x1b\x0e\x30\x7d\x59" - "\x56\x80\x67\x48\x8f\xc9\x74\x40\xf9\xb7\xcc\xaf\x87\xbd\x1f\x92" - "\xb2\xbc\x50\xc6\xce\x60\x19\x38\xc4\x34\x62\xbd\xc8\xb2\xc4\x32" - "\xc0\xf2\xa4\x68\xe4\x9a\x14\x43\xa3\x26\xa6\x8f\x4e\xa7\x3d\x09" - "\xba\x7c\x96\xa3\x68\xac\xd2\xc5\x8e\xac\xeb\x0a\x47\xc9\x00\x28" - "\x8e\xfb\xc6\xdd\xe9\xc8\x1b\x7b\x9d\xcb\x39\x62\x8a\xba\x8c\xcb" - "\x9b\xc4\xd7\xf4\xf8\x79\x97\x03\xf5\xec\x89\x9f\xbb\x95\xe5\x2a" - "\xfd\xe1\x3a\xe8\x4f\xe9\xbf\x83\xd3\x39\x1e\xe9\xba\xb9\x44\x51" - "\xe0\xbd\xf6\x38\xfa\xd4\xb2\xbb\x8a\xe3\xdf\x4e\xc5\x9c\x71\xca" - "\x19\xf1\x5d\x2d\xde\x6d\x46\xfa\xc0\x62\x8e\x9b\xff\x77\xa1\xa5" - "\xed\xae\xe2\xb9\xbd\xa8\xdc\x96\x1f\x4c\xfb\x2a\x8c\x9f\x37\x98" - "\xd6\xe0\x9c\x70\xa3\x5b\x74\x7a\x16\x0f\x37\xda\xc5\x6b\x00\xa0" - "\x53\xd5\x54\x97\x88\x32\x8d\x0a\x5c\x1c\xa3\x1a\xb0\x53\x79\x0d" - "\x60\x31\xda\xff\x42\x85\x9a\x5f\x2e\x06\xff\xcf\x6b\xd7\x75\x59" - "\x1e\x9e\x61\xff\xdd\xbe\x4b\xf6\xab\xc7\x2e\x63\x5b\x6b\x2b\x6e" - "\x7a\x08\xf3\x01\xaf\x01\x13\xb0\x2e\xd2\x63\xf8\x49\x78\x3f\xd4" - "\xdf\x52\x5b\xf5\x51\xbd\x35\x45\xc5\x0b\x84\x8c\x97\xd7\x9a\xb4" - "\xfc\x1e\xff\x09\xbc\x1b\xb8\xdc\xc6\xfe\x15\xf9\xe0\xbd\x72\xce" - "\x63\xbc\x5b\xe7\xd1\xfc\xeb\x4c\x5a\x18\xfd\x68\x53\xf6\x73\x3b" - "\xeb\x4f\xcc\x2d\x97\x64\x1a\xe3\x9a\x1c\x0f\x4d\x54\xae\xe6\x33" - "\x4b\x6e\xe7\x72\xa7\x3d\x66\xcc\x19\x5c\xf5\xd7\x64\xca\x39\x4a" - "\x58\xf3\xa4\x90\xf2\x71\x5d\x92\x66\xe8\x58\xde\x47\xb3\x2e\x17" - "\x41\x5e\x47\xb4\x46\x44\x50\xc6\x60\xe7\xb1\x83\x8e\x93\xaf\xb4" - "\xb3\x9c\x7d\xec\xa4\x0d\x84\x7a\xd5\xb8\x11\x55\xe3\x06\xea\x0f" - "\xa6\xde\x34\x03\xe3\x43\xca\x71\x5a\xdc\xca\xf8\x33\x6d\x78\x3d" - "\x5e\x03\xad\x7c\x3c\x4e\x32\x7d\xd2\x3f\x1e\xce\xbe\x11\xdc\x56" - "\x6b\x04\x6d\x8e\x6d\x97\x49\xf3\xaf\xf5\xa0\x5d\x26\xb4\xcb\x75" - "\x82\x65\x26\xcc\x3e\x2b\x90\xb7\xc1\x32\xce\xb1\x9c\x3f\x2f\x09" - "\xc7\xb6\x91\xf5\xbf\x6a\xc3\xd2\x2b\x92\xb5\x51\x98\xb8\x8d\x92" - "\x06\x27\x74\x79\x93\x78\xb2\xfe\x68\xa7\x25\x3b\x07\x2e\x67\x5f" - "\x91\xdd\x55\xd0\x6f\xe3\xb8\x0f\x31\x7e\xae\x67\x3c\x93\xf5\x17" - "\xc3\x53\xb0\x96\x36\x58\x97\x97\xcf\xe8\xf4\x2c\x5d\x99\x9c\xde" - "\x4b\xb7\x9f\x9f\xde\x4b\x17\x73\x79\xc6\x83\xf7\x00\xac\x11\x4c" - "\xd6\xc1\xb7\x98\xaf\x55\x24\xab\x77\xe0\xf2\x3a\xc6\x2b\xe9\x3b" - "\xc1\xf2\xa2\xeb\x20\xf0\xa1\x80\x9c\x08\xd6\x49\x9d\x9e\xd2\x9e" - "\xf5\x2f\x6b\x8a\x23\x55\xea\x07\x93\x58\x9f\x0c\x86\x75\xf9\x7a" - "\xde\x0b\x19\x87\xfa\x93\xbe\xd7\xf8\x9b\x0e\x15\xbb\xcb\xb5\x15" - "\x3f\xbe\xc6\x9a\x42\x77\x07\x53\x7f\x9c\x6e\x75\x45\x86\x33\x0d" - "\x01\xd3\x05\x39\x1e\xc9\xf3\x54\xb5\x76\x51\x0a\xfb\x7f\x8d\x8c" - "\xc7\x1d\x4c\xdb\x5d\xae\xf6\x16\x4a\x31\xfe\x55\x4d\x32\xd6\x6f" - "\xf1\x0c\xfd\xf2\x75\x91\x92\xcb\x2b\x37\x88\x55\x0d\xa3\x35\x8f" - "\x55\x38\x96\x58\x61\x47\x2e\x7b\x44\x13\x1c\xe7\xbf\x61\x74\x2f" - "\x9f\x28\x3f\x1a\x83\x4f\x50\x3e\x92\x9c\x07\x96\x5d\x75\x7e\x1e" - "\x28\xfd\x96\xdf\x33\xdd\xd5\x5c\x65\xd9\x78\xc3\x4e\x11\x2b\xae" - "\xdc\xe0\x28\xe3\xfa\x4b\x5b\x55\xdd\x4c\x93\x5c\xde\x57\x98\x04" - "\xba\x94\x23\x6f\xb1\xa1\x07\x98\x5f\xac\x51\xfe\x06\x02\x49\x9e" - "\xc6\x3b\xd8\x3f\xc5\x7e\xb5\x56\xda\x10\x94\xdf\x0b\xf4\xb8\x9c" - "\x41\xb7\x73\x23\xc6\x61\x0a\xa5\xed\x86\x5e\x59\xb6\xcb\x4f\x5e" - "\x19\xcf\x08\x63\x70\x08\x30\xc2\x55\xca\x4f\xd6\x22\xe3\x08\x41" - "\xa6\x39\x76\x10\xcb\x35\xd2\x32\x81\x37\xc7\x11\xc2\x7c\x67\x59" - "\xa0\x67\x5c\xf2\xe4\x42\x57\x08\xf9\xed\x1d\x8c\x4b\x43\x3b\x40" - "\xbb\x37\x4c\xda\x8e\xb3\xa3\xec\xc4\x6d\x3e\xbb\x62\xc8\x8e\x5f" - "\xdf\x4c\xe6\xff\xc7\xfe\x34\x15\xdf\x4a\x99\xcb\x7f\x62\xa6\xff" - "\x93\x43\x26\xa6\x83\x9f\x96\x85\x15\xed\xca\x72\x8c\xfe\xf1\x53" - "\x69\x9d\xd4\x9d\x2b\x9e\x08\x4c\x8d\x88\xef\xd4\x7a\x68\x19\xf4" - "\xdf\x73\x87\xd4\x7b\x97\x37\x71\x0d\x88\xed\x79\xc7\x9c\xf9\x8e" - "\xc2\x17\x17\xcd\x1d\x36\x2c\x6e\xae\x64\x96\x67\x63\x3c\x65\x45" - "\x6a\x3c\x2d\xeb\x89\x7f\xc4\x76\x09\x9e\xd1\x7e\xd7\x39\x31\xce" - "\x27\x15\xe8\xee\xcf\x05\xd9\xd4\x7b\x7f\x0b\x4d\xba\x25\xe6\xf1" - "\x36\x9a\x74\xeb\x6d\x05\x0f\xcd\x9a\x59\xb8\x38\x26\xf5\xf6\xd8" - "\x75\xbd\x75\x1b\x50\x77\xea\x90\x7b\xa1\x2b\x52\xa6\x2c\xe5\xb1" - "\xc5\xfd\x46\x59\x44\xfc\x03\xfa\x3a\x07\x32\x56\xd0\x5c\x12\xa1" - "\x66\xe8\x32\x71\x25\xeb\xf0\xfe\xea\xcc\x1f\xec\x29\xf0\x96\x15" - "\x6d\x0f\xc2\xae\x3b\xc3\xeb\x33\x28\xf7\x69\x4b\x35\xc7\xfa\x6d" - "\xd0\xe3\x98\xbb\x4b\x90\x7e\x09\xae\x9b\x70\xbd\x08\xd7\x2d\x8e" - "\xb9\x98\xf7\xb0\x8f\xf5\x42\xf6\xb1\x76\x4b\x5f\x97\x9b\x43\xe5" - "\xc4\xbe\x22\x78\x3f\x82\x6d\x10\x3f\xb9\xf9\xfb\x60\xfc\x4d\xba" - "\x5c\xa4\x2d\x70\x3c\x47\xd9\x7c\x15\x72\xff\x08\x33\xb0\xca\x86" - "\x62\xb1\x31\x9f\xbf\xa5\x35\x1c\xe9\x7f\x49\x4d\xf9\x92\x52\xed" - "\xfd\xa3\x9d\x1e\x77\xab\x9f\x9e\x5f\xcd\x74\xea\xeb\xdb\x9f\x4c" - "\xe7\x44\xfb\xb0\xd7\x36\x5c\x45\xd2\xbe\xd5\xed\xb9\xcd\x72\x5c" - "\x28\x1f\x11\x63\xd3\xf1\xfe\x65\xba\xb2\x4f\x44\x54\xd9\xa7\xe5" - "\x93\x0c\x39\xc0\x7d\xbe\xc1\xa7\x71\x71\xd7\xe6\x96\xcc\x9a\x37" - "\xab\xd0\x71\xdd\xfc\x74\x8a\x89\xba\xe6\x9c\x35\xd7\x31\x6f\xd6" - "\x4b\x0b\x66\xcd\x97\x11\xd3\xf8\x6d\xdc\x98\x9f\x29\xd2\xff\xb5" - "\xde\x38\x0f\xe4\x18\xc2\xf4\x2d\xdf\xc7\xb1\xba\xc4\xaa\x4f\x86" - "\xb3\x4f\x87\x9a\x6f\x74\xe7\xc4\xcf\x37\x3c\x79\xca\xce\x6b\x98" - "\xa1\xe6\x3a\xcb\xbf\xe6\xe7\xa3\xb4\xdc\xd9\x1b\x17\x7c\xf9\x15" - "\xa0\xa5\x49\xd1\xcd\x72\xac\xd3\xb3\xdc\x66\xd0\xcd\x4f\x9e\x6a" - "\xdd\x96\x6a\x97\xfa\x03\x63\x2c\xf4\x5f\xdc\xf8\xaa\xbe\xf9\xb9" - "\xdc\x0e\xde\x48\x95\xeb\xbd\x69\x0d\x85\x5c\x17\xc3\x3c\x86\xf2" - "\xe8\x9f\x19\xd0\x9b\xac\xdf\x2a\x0c\x78\xa8\x93\xb8\x3e\x7d\x1e" - "\x74\x39\xca\xcb\xfd\x70\xad\xa2\xa1\x90\x75\x0a\xc7\x96\xd0\x2a" - "\x01\x47\xee\xe3\x79\xaa\xd9\xc6\x94\xb1\xe9\x01\x8b\xd7\x69\xa1" - "\x1b\x4a\xf8\xfb\xb0\x9c\xa6\x62\x86\x95\x17\xf2\xda\x30\xea\x9a" - "\x0e\xfc\x0f\xf5\xfa\xbc\x7b\xaa\xd9\xee\x64\xb8\x7e\x5a\x5e\xc5" - "\xf0\x54\x4c\xb4\xe5\x21\x3f\x95\x45\x7a\xed\x27\x4f\x4e\xcc\xbc" - "\x0c\xf8\x28\x3c\x43\xc0\x45\xc6\xdf\x54\x3e\x88\xb2\xdd\xac\x3f" - "\xab\xf4\xb6\x1b\xed\xe9\xf4\x78\xa0\xff\xdc\x01\x63\x6f\xdd\xaf" - "\xb7\x9b\xf1\x63\xdc\x63\x71\xd6\xf1\x2d\x66\x7c\x51\xae\x34\x46" - "\xb6\x79\x5d\xa6\x1f\xd2\xd6\xf7\xfa\x36\x97\xb7\x26\xea\x8d\x17" - "\xe7\x3a\x8a\xe6\xcc\x7d\xbe\x60\xd1\xcc\xe7\x67\x15\x2c\x28\x1e" - "\xe1\x58\x30\xf7\xe9\xa2\x17\x9f\x79\x9e\xb9\x66\x7e\xc9\x82\x67" - "\x9e\x77\xb0\x66\x29\x18\x3f\x69\x52\xc1\xbd\x8f\x3c\xfc\x58\x3a" - "\xdd\x3b\x13\x69\x98\xf9\x4f\xca\x1e\xa1\x5e\x3d\x34\x61\xdc\xa3" - "\x05\xe3\xa6\x3e\x32\x65\x9a\x3c\x0c\xd1\xf3\x7e\xfc\xdc\xe4\x19" - "\xe2\xf8\xd0\x06\x5e\x9a\x8e\xfe\xed\x77\x94\x7e\x95\xa9\xe2\x68" - "\xaf\x18\x1f\x1f\x47\x7b\x05\xe6\xb2\x2b\x60\x65\xae\xc0\xd8\xbf" - "\xf2\x00\x7e\x98\xa7\xfe\xca\xa2\xf8\x2b\x6d\x6a\xa7\x67\x45\x71" - "\x2f\x7f\xfd\x2a\x53\xee\x8f\x57\xcb\x7d\x67\x13\xde\x41\xff\x97" - "\xaf\x8f\x7d\xd7\x3b\x9f\x5c\xb1\xa3\x67\x3e\xd9\xa3\x53\x56\x1c" - "\x36\xe6\x96\x48\x73\x62\x5e\x99\xc6\xf3\x4a\xb5\x9e\xf4\xab\xcb" - "\x24\x4f\xf5\x29\xdf\x16\x32\xe6\x95\x2c\xdb\xbc\x4f\xac\xe6\x1f" - "\x2b\x6d\xb1\x32\x2e\x63\x37\xea\x32\xce\xe5\xe4\xfa\x9d\xa5\x7b" - "\x38\xaf\x69\xc3\x3e\x9e\x0e\x5b\x01\xe3\x57\xa7\x10\x69\xdd\xc3" - "\x15\x4e\x2b\xf3\x78\x8d\x9b\xed\x66\x9d\x9f\x06\x1e\xa7\x95\x6b" - "\x84\xc7\x53\xaf\xe6\x94\x9e\x3f\xb3\x5e\x17\x2b\x86\xdc\xcb\xfe" - "\x27\x3c\x77\x42\x9d\x2b\x7b\x79\xf6\x57\x99\xcc\x0b\xbd\x73\xd9" - "\x95\x71\xfa\xbf\x43\x7e\xaf\x6e\xe5\x1e\x23\x0e\x40\xc9\x30\x32" - "\x99\x87\xad\xa7\x2a\x93\x28\xf7\xd3\xca\x42\xae\x83\xe9\xe9\xa7" - "\x15\x6c\x33\x98\x7b\xe9\xb7\x32\xd0\x43\x3f\x7d\x9d\xc5\x58\x63" - "\x51\x78\xff\xea\xb2\xbe\x68\x95\x9c\x4e\x2f\xe7\x7c\x2f\x9d\x3c" - "\xd4\x8f\x65\xd2\xa0\xd7\xb9\xb4\x7a\xb9\xf4\x5c\x5a\xbd\xdc\x1c" - "\x43\xab\x33\xe7\xd2\xea\xe5\x5d\x31\xfb\x3e\xfa\x3a\xca\xaf\x2e" - "\x63\x9a\x31\x8f\xa1\xdd\x85\xe0\xb3\xca\x5e\xfa\xbd\xec\x3f\x97" - "\x7e\x2f\x87\x92\xd3\xef\xe5\xf5\xd7\xc4\xc3\x59\x97\x6c\xdc\x18" - "\xb8\xdc\xa4\x9f\x13\xfa\xd5\x9c\xa6\xa1\x72\x4e\x1a\x7e\xdd\xa4" - "\x39\x5f\xf7\xe0\x87\x2b\xcf\x23\x7a\x6d\x71\x11\xd6\xe9\xeb\x6c" - "\xc2\x9c\x97\xd7\x95\xce\x33\x16\x1d\x31\xd6\x3c\x70\xdf\xca\x73" - "\x67\xfe\x56\x10\xa7\x33\x3d\xf9\xdb\x53\xe0\xf7\x56\x65\x97\xfe" - "\xaa\xa1\x67\xcd\xe5\xfa\x07\x8a\x53\x97\x93\xa3\xb1\xe6\x56\x4e" - "\x3f\x04\x1e\x92\x6b\x48\xec\xdf\xd3\x17\xcc\x82\x68\x2e\x25\x87" - "\xfb\xeb\x1e\xfe\xef\xeb\xac\x6c\x82\x3e\x72\xce\x9c\x5b\xf8\xe2" - "\xec\xd9\xdf\xaf\x8a\x62\x7d\x77\xd6\x7b\xb4\x8a\x4e\xfe\x1e\xe3" - "\x8a\xe7\x96\xa0\x4e\xd8\xff\x2f\x78\xd5\xb8\xf9\x6b\xe8\x3f\xa7" - "\x4b\xd9\x92\x4f\x04\xd4\xf9\xe0\x5f\xb7\xc7\xe8\x67\xf0\xc8\xaf" - "\xc3\xc2\xf3\xeb\xd1\xbd\x7d\xfc\xeb\xa6\x73\xfb\xf8\xd7\xad\xc9" - "\xfb\xf8\xd7\x11\x6d\x21\x9f\xcf\xf8\x35\xcf\x7f\xa4\xad\xc9\xcf" - "\xbc\x5f\x8e\x39\x73\x00\xf3\xe5\xf6\xa9\x8b\xbd\x77\x17\x2c\x4e" - "\x61\xbf\x72\xf9\x4d\x8e\xc8\x59\xd1\xc6\x7b\xd6\xbc\x3f\xc6\xdf" - "\xe4\xe0\x6f\xf1\xf0\xb7\x5a\x65\x1e\xdc\xaf\x3b\x46\x72\xee\x88" - "\xf7\x8e\xda\x63\xf2\xbb\xc4\xb0\x15\x2a\xf2\x0d\xdb\xda\xba\xdc" - "\x21\xcf\x2d\xaf\x55\xfd\xd1\xca\x7d\xc1\xf5\x15\x2c\xf6\xaa\x3a" - "\xce\xf2\xf7\xb6\xc8\xaa\x6c\x88\x8a\xf5\xe7\x5d\xbb\x4f\xfb\xaa" *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 21:18:05 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CB09A106567E; Wed, 20 Jul 2011 21:18:05 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B997C8FC15; Wed, 20 Jul 2011 21:18:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6KLI5uX032581; Wed, 20 Jul 2011 21:18:05 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6KLI5Ej032578; Wed, 20 Jul 2011 21:18:05 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201107202118.p6KLI5Ej032578@svn.freebsd.org> From: Andrew Gallatin Date: Wed, 20 Jul 2011 21:18:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224236 - stable/7/sys/dev/mxge X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 21:18:05 -0000 Author: gallatin Date: Wed Jul 20 21:18:05 2011 New Revision: 224236 URL: http://svn.freebsd.org/changeset/base/224236 Log: MFC r223958: Update mxge(4) firmware to the latest version available from Myricom (1.4.53a). Modified: stable/7/sys/dev/mxge/eth_z8e.h stable/7/sys/dev/mxge/ethp_z8e.h stable/7/sys/dev/mxge/rss_eth_z8e.h stable/7/sys/dev/mxge/rss_ethp_z8e.h Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/dev/mxge/eth_z8e.h ============================================================================== --- stable/7/sys/dev/mxge/eth_z8e.h Wed Jul 20 21:17:55 2011 (r224235) +++ stable/7/sys/dev/mxge/eth_z8e.h Wed Jul 20 21:18:05 2011 (r224236) @@ -1,6 +1,6 @@ /******************************************************************************* -Copyright (c) 2006-2010, Myricom Inc. +Copyright (c) 2006-2011, Myricom Inc. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -28,7287 +28,7495 @@ POSSIBILITY OF SUCH DAMAGE. $FreeBSD$ ***************************************************************************/ -static unsigned int eth_z8e_uncompressed_length = 367564 ; -static unsigned int eth_z8e_length = 116477 ; -static unsigned char eth_z8e[116477 + 1] = - "\x78\x9c\xec\xbd\x7f\x78\x54\x45\xb2\x37\x5e\x99\x0c\x32\x89\x81" - "\x19\x31\xe2\x88\xb8\x0e\x8a\x1a\x5d\x90\xa8\xb8\x1b\x5d\xd0\x28" - "\xe0\xa2\xf2\x23\xab\xe8\x46\x45\x03\x1a\x70\xd0\x88\x11\x02\x0c" - "\x10\x32\x61\xc0\xdd\x04\xf9\xa5\x46\x8d\x10\x48\x80\xe0\xc5\x5d" - "\x54\x44\xbc\x46\x05\x9c\xdd\x64\xbf\x0f\xf7\x5e\x92\x61\xf7\xb2" - "\xef\x9b\xdd\x2f\x7b\x77\xc4\xc8\x8e\xbc\x01\x46\x32\x90\x31\x99" - "\x39\xfd\xfd\x54\xf7\x39\xc9\xcc\x30\x41\x79\xef\x7d\x9e\xef\x3f" - "\x9b\xe7\x99\x9c\x73\xfa\x74\x57\x57\x57\x57\x55\x57\x77\x57\xd7" - "\x21\xba\xf0\x3f\x3f\x59\xf8\x92\x42\xa6\x86\xe0\xef\xfe\x2f\xca" +static unsigned int eth_z8e_uncompressed_length = 375636 ; +static unsigned int eth_z8e_length = 119802 ; +static unsigned char eth_z8e[119802 + 1] = + "\x78\x9c\xec\xbd\x7f\x78\x54\xd5\xb5\x3f\xbc\x32\x99\xc8\x24\x06" + "\x26\x62\xc4\x29\xc5\x76\xb0\x41\xa3\x05\x89\x16\xdb\xd4\x42\x0d" + "\x02\x1a\x2c\xbf\x14\x6c\xa3\xa2\x09\x1a\xe8\xa0\x11\x22\x44\x18" + "\x20\x64\xc2\x80\x36\x41\x20\xa9\xa0\x46\x09\x09\xbd\xf2\x23\x56" + "\xac\xd8\x02\x62\x45\x19\x24\xf6\x4b\x7b\x93\x0c\xed\x8b\xf7\x9b" + "\xdb\x17\x6f\x47\x6e\x84\x94\x1b\x60\x4a\x06\x32\x26\x33\x67\xbf" + "\x9f\xb5\xf7\x39\xc9\xcc\x30\x41\xb9\xf7\x3e\xcf\xfb\x4f\xf3\x3c" + "\x93\x73\xce\x3e\x7b\xaf\xbd\xf6\xda\x6b\xad\xbd\xf6\xde\x6b\xaf" + "\x43\x74\xe5\x7f\x3e\xb2\xf0\x25\x81\x4c\x07\x8a\x0f\xfd\x37\xca" "\xff\xf3\xef\x9f\x7f\xff\xfc\xfb\xe7\xdf\x3f\xff\xfe\xf9\xf7\xcf" - "\xbf\xff\x7f\xff\x82\x29\x34\xfa\xb4\xc9\x4c\xbf\x5f\x4f\xd4\xe9" - "\xb1\x0c\xf5\x53\x57\xf1\x5b\xaf\x8b\x08\x5e\xa5\x60\x9c\x1f\xca" - "\x57\xfe\xbd\x86\x34\xd3\x7a\xb2\x5c\x63\xa3\x8c\x71\x9b\x88\xaa" - "\x06\x8b\xf6\xd7\xdf\x14\xc1\x15\x6f\x8a\xf6\xf1\xdb\x89\x9a\x86" - "\x13\xbd\x3e\x58\x84\x00\x63\xba\x9f\x9e\x9a\xc6\x30\x56\xe0\x99" - "\xdf\xaf\x1c\x2c\x82\x48\x2f\x41\xfa\x41\x4e\x5f\x3e\x18\xb0\x32" - "\x89\x3c\x6f\x8a\x70\x0c\x5c\x0b\x97\x67\x98\xe3\x87\x49\x5c\xea" - "\x13\xe0\x30\x8c\x06\x3f\x15\x8c\x3f\x0f\x8c\x0c\x03\xaf\x90\x89" - "\x52\x18\x5e\x87\x87\xec\x21\x8f\xf7\x32\x94\x0d\xa1\x3d\x59\x5c" - "\x76\x1d\xf2\x08\x0f\xa5\x36\xb9\x22\xe4\xb8\x86\x52\x8e\x51\xfa" - "\x16\x5c\x4d\xb8\xbe\xc1\x6d\x5d\xa1\xca\x0d\x67\x18\x28\x9b\xd2" - "\xe9\x49\xcb\xee\x29\x0b\xd8\x8e\x32\x32\x23\xef\x9c\x90\xc9\x6b" - "\x52\x79\x6d\x69\x7a\x5e\x13\xf2\x4e\x37\xf2\xaa\x77\xa6\xfb\xf5" - "\x77\x17\xe3\x9d\x2b\xfe\x9d\xf9\x35\xfd\x5d\x06\xde\x55\x25\xe0" - "\x67\xf6\x75\x45\xe8\x18\xa5\xed\x04\x2e\x8e\x46\xf4\x08\x97\xd1" - "\xf3\x5f\x82\xfc\x4d\xf1\xb0\x88\xf4\x77\x83\xf0\xce\x1f\xff\x6e" - "\x7f\xb6\xfe\xee\x72\xbc\x8b\xc4\xbf\x4b\x31\xca\xd9\x3b\x3d\xe9" - "\xf6\x24\xed\xe4\xfa\x53\x54\xdd\xdc\x86\xf4\x31\xc8\x53\xce\x79" - "\xa6\x39\xca\x89\xfb\x8a\xdf\x35\xd6\xf5\xd4\xcf\x79\x66\x18\x70" - "\xfc\x28\x1f\x43\x53\xd0\x32\xbd\xd4\x28\x3f\xde\xc1\x30\x48\xd2" - "\x90\xe1\xf8\x29\x6d\x22\xc3\xe1\x67\xdc\x0f\xe5\x76\xeb\xf7\x0e" - "\x6e\x5f\x6c\x9f\x13\x99\x01\xb6\x1f\x0c\xd1\x8b\xf0\xeb\x6f\x31" - "\x78\x60\xbe\x5d\x68\xee\x2b\xc8\x2c\x56\x6d\xa9\xd3\x3c\x82\x7c" - "\xae\x30\x39\x86\x90\xfb\x28\x5d\x6c\x07\x7e\xb4\x76\x09\x59\xdc" - "\xc5\x22\xec\x73\xb5\x53\x4b\xb0\x9d\xdc\x41\x11\xf0\x45\xce\x50" - "\xd9\x19\xb2\xf8\x22\x27\xa8\xec\x25\xb2\x37\x95\x7e\x4d\xc9\xf8" - "\x4b\x33\x09\x72\x0f\xe5\xb2\x6d\xd4\x52\xd3\x46\xee\x9a\xf8\xb2" - "\xee\xab\xc8\xde\x8c\x67\xf4\x9d\x95\xf1\x68\x72\x44\x28\x92\xbe" - "\xa5\xae\xf4\x6d\x32\xbb\x87\x91\xa9\xb9\xd0\x6b\xe0\xe2\x67\x5c" - "\x56\x1e\x27\xcb\xb6\xd9\xe0\xa1\xe3\x8c\xef\xbb\x75\x1f\x2c\x09" - "\x9b\x1a\xed\x93\xa8\xd1\x7e\x84\x9a\xec\x63\xa9\xc9\x35\x9e\xd6" - "\x1e\xa7\x8c\xc6\xf0\x18\x6a\x32\xdf\x07\x19\x1b\x4f\xbe\x76\xdc" - "\x3b\xa2\xc8\x13\x22\xc7\x42\x02\x7f\x5c\x7c\xa8\xea\x39\xb2\xf8" - "\x15\x4c\xd0\xf7\xe2\x23\xbf\x2b\x21\x62\xfa\xf2\x73\xb2\x76\xcc" - "\xbf\x82\xec\xc0\x2f\x00\x5c\xee\x38\x4a\x19\x97\x0d\xb7\x53\x36" - "\x70\xee\xef\xab\x8e\x90\xb9\x94\xd2\xfa\x90\xad\x4c\xcd\x23\x65" - "\xbc\x7d\xf3\x9b\x22\xc0\x3c\xda\xb1\x34\x1f\x72\x9a\x31\x09\x75" - "\xb7\x73\x7d\x6b\x21\xeb\xee\x2d\x64\xee\x58\x94\x9f\x52\xfb\xa6" - "\x68\xc3\x3b\xa7\xf1\x0e\xfc\xd4\x86\xf7\x81\x51\x99\x64\xf3\x45" - "\x72\xe9\x8b\xae\x80\x99\x61\x0c\x0c\x51\x0a\xc3\xb3\xba\x28\x15" - "\xed\xe9\x07\x7c\xee\xa8\x45\xfa\xb5\xc8\x87\xf2\x3b\xfc\xf4\x9a" - "\x9d\xcb\x8b\xcb\x9f\x08\x69\x97\x3f\x71\x46\x7b\xeb\x89\x0e\xf1" - "\xd6\x13\xa7\xa3\x6f\x3d\xf1\xad\x7b\x31\x59\xa2\x97\x3f\x11\x6c" - "\x29\x96\x7d\x60\x6b\x29\x46\x1f\x44\xc9\xb2\xec\x04\xd9\x9e\x7a" - "\x09\x7d\x1f\xf9\x1b\x2d\x9b\x43\x76\x2d\x6d\x47\xbe\x2f\xf2\x67" - "\x7a\xaa\x94\x04\xee\x9d\xc9\xda\xd7\x91\xfe\xae\x5f\xc9\x90\x05" - "\x6d\x1a\xe0\xf0\x9b\xea\xaa\xb9\xde\x60\xda\x87\x7e\xfc\xda\xf0" - "\x0b\xe0\xd7\x2e\xd2\xdf\x65\xd9\x74\x0f\x5c\x9e\x42\x9b\xbb\x88" - "\x46\x69\x94\x72\x9c\x06\x8c\x01\xfe\xb6\x3e\xe8\x36\x54\x5b\xb5" - "\xf7\xd0\x0d\xe5\x54\xd6\xd9\xe9\x24\xd6\x4d\xac\x97\x58\x4f\xa1" - "\x9e\x0a\xd4\xd3\x2a\x65\xf1\x4d\x11\x12\xe9\x7b\x0f\x21\x3d\x10" - "\x5a\xea\x4c\x09\x2e\x75\x9a\x3a\xd2\xf7\xfe\x27\xf2\xec\xf4\x9b" - "\xb6\xd8\x74\x1a\x06\x18\x16\x64\x22\x38\x20\x42\xa9\x80\x59\xfc" - "\xc9\xd9\x56\xf3\xa6\x37\xc5\x11\xe4\x3b\xdc\x03\x0b\xb0\x01\x07" - "\xf4\x1f\x10\x30\xd2\x40\xeb\xb6\x35\xc8\xc7\xe5\x7d\xe1\x5c\xd6" - "\xdf\x7e\x5f\x51\x80\xac\x11\x4a\x17\xdd\xaa\x3e\xe4\x09\xb0\x9e" - "\x1d\x10\xa6\x8b\x3a\x3d\x94\xc7\xb0\xb9\x9c\xaf\x3d\x40\x28\xf7" - "\x9f\xc2\xed\x84\x7e\xa3\x29\x9d\xc2\x99\x02\x9d\xde\xd6\x88\xf2" - "\xaa\xee\x81\x79\x06\x8e\x5c\x07\xf7\xb5\xc4\x13\xfc\xd0\x58\x14" - "\xa6\x01\xd5\x94\x8a\x72\x0f\x33\x3c\x86\x05\x3e\xf0\xa3\xad\xff" - "\xd9\x58\x14\x24\x4d\xc4\xc1\xf4\xeb\xf0\xea\xe2\xe0\x21\x5d\x00" - "\x1e\xf3\x5f\x13\xca\x0c\xa8\x93\xf0\x1e\xfa\x44\x63\x78\x61\x32" - "\x3b\x24\xbe\x8f\x32\x8c\x4e\xd6\x31\x80\xe9\x5d\x78\x2f\xb5\x93" - "\xd5\x12\x74\x3b\x53\x5b\x4a\x89\xb8\xfc\x07\x65\x81\x7e\xa2\x23" - "\x3f\x95\x79\x8e\xdf\xfb\x22\xa7\x91\x67\xe0\x37\xa2\xc3\x99\x3a" - "\xa0\x9d\xcc\x8c\x33\xca\xbb\x18\xcf\xd8\xbe\x7c\x68\xc2\xa3\x63" - "\xe9\xd1\xf1\xf7\x8f\x1f\x4b\x93\xef\x19\x37\x96\xb2\xef\x18\x99" - "\x7d\xdb\x4f\x73\x6e\xa3\xbc\x5f\x3e\x34\x96\xf2\xa6\x8c\xa5\x87" - "\xf1\xcb\x7b\x78\xc2\x43\xe3\x27\x3c\x3c\x96\xf2\xef\xbb\x1f\x4f" - "\xe3\xc6\xde\x92\xfd\xf3\x91\x79\xe3\xee\x9f\x40\xbf\x98\x76\x6b" - "\xf6\xad\xb7\xd2\x3d\x13\x26\xdd\x92\x9d\xad\x5f\x6f\xc9\xe6\x2c" - "\x8f\xe7\x4c\x78\x78\x64\xde\xbc\x17\x4b\x5e\x1c\x39\xe5\xfe\x71" - "\x9c\xc2\x63\x72\x0c\xef\x64\x45\xcf\x6a\x4c\xe3\x90\x38\x35\x91" - "\x34\xe8\x8c\xcd\xe8\x7b\xfc\xda\xbd\x65\x47\x21\xfb\xb6\x3f\x6f" - "\xe6\x3e\x93\xba\xd5\xca\xe3\x95\xb9\xd3\x63\x3d\x02\xda\xe5\x31" - "\xed\x30\xa6\x21\xcf\xe0\xc5\x78\x77\xa3\x3e\x76\xf4\xc3\xfb\x48" - "\xfc\xfb\x41\xd0\xb3\xd6\x51\x2d\x0e\x22\x1f\x7e\xa0\x77\x08\x3a" - "\x10\x74\x0d\x52\x87\x3b\xbf\x1f\xf8\x3a\x05\x75\xb4\x41\x26\x41" - "\x1b\x5b\x4e\x8c\xac\xb7\xa1\x5f\x0e\x39\x96\x50\xea\x49\xb2\x5d" - "\xd2\x52\x92\x4b\xdc\x3f\xbe\x12\x1d\xc6\x99\x1e\x18\xe9\x12\x06" - "\xfa\x1c\x70\x0e\xeb\x70\xca\x63\xf4\x82\x9f\xe1\xac\xc5\x3b\x1d" - "\xd6\x23\x2d\xd0\x0f\xd0\xdf\xbf\xd1\xdc\x59\x24\xd2\xb7\xec\xd0" - "\xba\xb3\xe4\x98\x80\x72\x0d\x06\x3f\xa3\xfe\x50\x13\xea\x14\xdb" - "\x26\xa6\xa0\xff\x53\x30\x56\xa1\x2d\xd6\x26\xf0\x35\xe4\xe8\xc3" - "\xa0\xe8\xce\x27\x95\x76\x89\x39\xba\x0a\xcf\xab\x3e\xfc\x56\xb8" - "\x91\xb6\x44\xa6\xf5\xc3\x33\xec\x09\xf0\x91\x70\x52\xf4\x14\xd2" - "\xe7\x52\x2a\xd2\xff\x00\x5a\xb7\xca\xfc\xa7\x64\xf9\xfe\x48\xdb" - "\x0e\x78\xdf\x6a\xe9\x1f\x9e\x06\xef\x70\x1a\xec\x84\x4b\x2a\x51" - "\xbe\x83\xf5\x9d\xd2\xc1\x83\xdf\xe6\x31\x0e\xed\x08\x2a\xf8\xfa" - "\x33\xe4\x55\xe1\x30\xf8\xed\x46\xd0\xa5\x11\xa3\x56\x53\x29\xdb" - "\x36\x97\xa0\xfd\x03\xf2\xd5\xf8\x38\xb8\x9a\xf3\x6a\x22\x9f\x84" - "\x25\x7a\x00\x70\x43\xde\x25\xed\x74\xac\x98\x4c\x7e\xba\x64\x8c" - "\xe6\x76\x52\x4c\x5b\xb2\x18\x0f\xe0\x6d\xee\xec\x76\x62\xbc\xbc" - "\x64\x84\x2c\x0b\xfc\x74\xdc\x38\x8f\x9d\xf1\x67\x1d\x81\x7e\x1d" - "\x8d\x3e\x4f\x43\x7d\xc1\x84\x3e\xcf\x60\x7a\x00\xdf\x56\x0d\x57" - "\xc0\xc9\x14\x8b\x9c\xc0\x8b\x4c\x4c\x0f\x7f\x2f\x8c\x90\xe2\xa9" - "\x41\xd9\x09\x3c\xf5\x24\x60\x8f\x8d\x79\x9f\x97\xf0\xfe\x1e\xbc" - "\xbf\x57\x7f\x0f\x59\x1d\x54\x9c\x50\xff\x6a\xbc\xbf\x8f\xfb\x10" - "\xb2\x98\xea\x27\xdb\x8e\xcd\x6c\x4b\xf6\xe6\xaf\x4b\xc8\xbf\x17" - "\xf9\x1f\x00\xbe\x21\x1e\x27\x38\x7f\xad\xce\xf7\xc8\x6f\x41\xfe" - "\x43\x09\xf5\x0f\x43\xfe\x87\x63\xf0\x4b\x68\xff\xa5\x0d\x78\x9f" - "\xcf\x7c\x8a\x6b\x21\xf2\xf4\x67\xf9\x67\xdd\xd3\x58\xc4\xfd\x73" - "\xa9\x23\x21\x7f\x2e\xf2\x3d\xcf\x74\x96\x34\xea\x60\x1a\xd9\x76" - "\xe8\x76\xcd\x11\x85\xc3\xa5\xd3\x12\xca\x94\xa0\xcc\x7c\xa6\xaf" - "\xe4\xb3\xce\xa4\x65\x2a\x12\xca\xec\x90\x7c\xaa\xea\xd1\xfb\x58" - "\x95\xd1\xf5\x5a\x2c\x0c\x6e\x1b\x6c\xad\x4b\x0f\xc6\xc3\xb8\x6c" - "\x07\xea\x5d\xba\x46\xe9\x8c\x8b\xc1\x13\xb7\x22\xed\x6d\xc0\x3c" - "\xc3\x7c\x04\x39\x0b\xf9\x82\x61\xe8\xdd\x89\x19\x8a\x77\x33\x47" - "\x5a\x4b\x89\xef\x47\xf2\x3d\xc3\x16\xdd\x93\x74\x79\xca\x1c\x89" - "\x2b\xa7\x67\x72\x3a\xcb\xb1\xe8\x7e\x50\x53\x30\x33\x7f\x01\x79" - "\x37\xe1\x39\xaa\xd7\xf1\x2a\x9e\x53\x80\xff\x69\xe8\x74\xf0\xec" - "\x44\xe6\xc7\xd1\x48\xaf\xd4\xdf\x2f\xe7\xfc\xb8\xbf\x45\xbf\x4f" - "\x01\x8f\x9d\xd6\xe5\x0c\x32\x75\xd9\x62\x59\x37\xe4\xca\x28\xaf" - "\x29\xbe\x1f\x87\x77\xb3\x70\xbd\x1f\xd7\x5f\xe0\xfa\x0b\x5c\x47" - "\xba\xcf\x90\xdd\x1d\x95\xf2\xc5\xcf\x57\xe0\xfa\x10\xae\xfd\x70" - "\x7d\x18\xb8\x7d\x0b\xba\x07\x83\xe0\xe9\x04\x9e\x69\x47\x1f\xb2" - "\xdc\xf7\x57\x7d\x98\xe9\xe7\x3a\xa3\x86\x2e\x38\xd5\x9b\xa6\xeb" - "\x07\x5d\x1e\xf4\xb4\xee\x89\x4c\x97\x3c\xc0\xdf\xcb\xf5\x0b\x05" - "\xab\x9f\xea\x27\x95\x47\x53\xe5\xcc\xaa\xbf\xf5\x34\x95\x2f\x25" - "\xb6\x4e\x5c\xd7\x97\x85\x84\xc0\xb5\x94\xe9\xea\xa7\xcb\xca\x41" - "\x13\x33\x9e\xf3\x98\x4e\x32\xbf\x84\x7b\x69\x7b\x4c\x7f\xc3\xb6" - "\xbf\x6c\x6f\x42\x7f\xb3\x9c\xaf\x91\xfd\x0d\xda\x19\x38\x33\xfe" - "\xe0\x69\x1e\x27\x2f\x32\xf8\x06\xfc\xdd\xde\x2b\x63\x83\xcd\xf1" - "\x70\x14\x5f\x31\x7f\x0c\x2c\xd6\x65\x12\xf4\x82\x0e\x0b\xa5\x96" - "\x32\xaf\x0e\x1e\xed\xa7\xdf\x4e\x94\xb6\xd8\xaa\x0f\xcf\xf2\xfb" - "\x10\x74\x13\xe7\x4f\x2d\x66\x19\x1b\x3c\xcd\x78\x2f\xdf\xa5\xed" - "\xcb\x63\x9c\x52\x8b\xe4\xbb\x62\x3f\x58\xcc\x78\x27\xeb\xe1\x77" - "\x25\xf2\xdd\xea\x5e\xb8\x5b\x0e\xe8\x70\x53\x93\xd9\x52\xa2\x62" - "\x4b\x03\x18\xd4\x74\x53\x39\xf5\xf3\x45\x0e\xd3\xd4\x88\x88\x8e" - "\x2c\xa7\x34\x5f\x64\x27\xdd\x48\x74\x89\x2f\x72\x84\x6e\x22\x1a" - "\xe6\x8b\x54\x61\x6c\xaf\xe7\xf7\x5f\xdc\x40\x29\x29\xb8\xba\xaf" - "\x2f\x37\xa5\xf8\x22\x25\x34\xbc\xdc\x8c\x6b\x11\xdd\xd7\x4f\x74" - "\xfa\x22\x93\x90\xaf\x90\xa6\x46\xc5\xa9\xf1\xfd\xc4\xdf\x0b\xa2" - "\x64\x9b\xf4\xb2\x70\xfb\x22\xb0\xb3\x23\x07\x91\xae\x89\xa9\xd1" - "\xef\xf0\xeb\x14\x5a\xc5\x96\x03\x53\xa3\xa7\xc4\xb8\x97\xbf\xc0" - "\xf3\xdf\x85\x30\x91\xf0\x45\xc6\x50\x4b\x28\x84\x7c\x6e\x21\x2a" - "\xb7\x34\x3c\x75\xc6\x44\xdd\x18\xa3\xb5\xca\x2d\xd0\xe3\x5b\x5a" - "\xbb\xd1\x0e\x8c\x5f\xff\xbb\x7b\x29\xae\xab\xb6\xfc\x2f\xf9\x5c" - "\xb1\x25\x20\x2c\x5b\x5a\x6f\xc6\xa4\x85\xdb\xe0\x8b\xb4\x51\x01" - "\xcc\xee\xa9\x8b\x83\x82\xf1\x1f\xb8\x9c\xe7\x2c\x63\x08\x7a\xd1" - "\x3a\x75\xb1\x5b\xe0\x9d\x45\xa4\x6d\x69\xf5\x45\xda\x09\x75\x04" - "\x00\xef\x6b\x09\xaf\x62\xab\x05\x79\x83\x9c\x2f\x16\x0e\xc3\xe0" - "\xbc\x53\xa3\x64\x15\x95\x5b\x2d\xdd\x69\x5b\xc2\xdd\x69\x5b\xed" - "\xf8\x4d\x14\xe9\x5b\x1f\x17\x9e\xcc\xdf\x09\x8c\xa7\x28\xef\xc4" - "\xb3\x2b\x8c\x39\x82\xa4\x65\x94\xfa\x23\xbf\x13\xfc\x32\x1e\x7c" - "\x07\x7c\xb7\x56\x4b\x7c\x57\x6d\x7d\x2b\x2c\xdb\xb1\xf5\x4d\xd5" - "\x8e\xad\x6f\x70\x7a\x07\x6c\x09\xdc\x37\x74\xa8\x77\x9f\xa0\xdc" - "\x34\x59\xae\x62\x6b\x83\xb0\x6c\x3d\x10\x86\x3c\x81\xae\xe5\x4c" - "\x47\xd0\xb5\x9c\x69\x09\xf8\x0d\x3e\xd7\x6a\x12\x69\x5b\x0f\x00" - "\x9f\x56\x94\x3f\xde\x2d\xc7\xf8\xad\xe1\xb0\x82\xdd\x09\x38\xd3" - "\xc1\xaf\xa9\x80\x11\x16\x15\xdb\x2c\xdd\x1e\x07\x4d\x5d\x2c\xc2" - "\x53\x23\xcb\x23\x05\x8b\x29\x75\x04\x95\x03\xdf\x7d\xa0\x51\x21" - "\xda\xd9\x84\xeb\x78\xbc\xa7\x4b\x51\xd7\x17\x80\x1b\xe6\xfa\x44" - "\xe5\x36\x8b\x48\xdf\x06\x5b\x87\x0a\x19\xa7\xef\x3c\x64\xc3\xb3" - "\xfd\x3b\x89\xdf\xb6\x1c\xad\x62\x5b\xbe\x66\xd9\x36\xd1\xe0\x21" - "\xe6\x1f\x45\xb7\x2a\x9a\x12\x12\x11\x5f\x64\x13\x81\xc7\x6c\x2d" - "\xa1\x23\xfc\x1e\xf3\x8a\x9d\xe8\x67\xe6\xa9\x12\x5c\xeb\x89\xf9" - "\xa7\xa5\xf8\x65\xce\xfb\x05\xf3\xd0\x94\xe2\xd0\xf2\x91\x54\x9c" - "\x82\x67\x77\x41\xc4\x42\x4f\x15\x9b\xcb\xa3\x15\xdb\xb2\x5a\x8a" - "\xb9\x5f\x0e\xa3\x0c\x97\x2b\x22\x6b\x0a\x6c\xeb\x14\x11\xb1\xba" - "\x82\xe6\x01\x4e\xb7\x68\x09\x4d\x42\xde\x62\xe2\xf6\x30\x1f\x71" - "\xfe\xc9\xed\xc2\x1f\xb5\x6c\x6b\xe5\xb6\x89\x81\xe5\xd4\xdc\x7e" - "\x3b\xf1\xfc\xa6\xb9\xbd\x9e\xf9\x54\x13\x96\x6d\x3b\xc0\xa3\xdd" - "\x93\xdb\xcb\xfb\x3d\x75\x86\x52\x90\x16\x6d\x76\xee\xc4\xfb\x26" - "\xe4\x3b\x28\xf9\x76\xca\x99\x88\x35\x62\xd9\x66\x8f\x54\x6c\x6b" - "\x98\x72\xa6\x5b\x34\x3b\xab\xe8\xc9\xf6\x72\xd0\x6a\x27\x4d\x3e" - "\x11\x49\x6d\x29\x2e\x44\x9e\x4e\xa4\xd7\x4b\xfe\x9f\x7c\xa2\x43" - "\x4c\x79\x49\x9c\x9a\x72\xe6\xef\x62\xb2\x53\x7c\x51\xe0\xa2\x81" - "\x17\x2f\x17\x1a\xcb\xc5\xc1\xb6\x9d\x74\xf1\x11\x3f\xb1\x4c\x4c" - "\x9a\xa9\x89\xc9\x27\x4e\x89\xa7\x5e\x62\xda\x8c\xa1\x66\x27\xe4" - "\xc7\x55\xc5\xf4\xce\x69\x76\xee\x45\xfd\xe3\x01\xd7\x2d\x7c\xae" - "\x4d\xc8\xeb\xb5\x3e\x79\xc2\x46\x07\xdb\xaa\x28\x92\xb6\xcd\x1e" - "\xad\xdc\x96\xa5\xa5\x6d\x9b\xa8\x55\x6e\xcb\x17\x69\xdb\x76\x44" - "\x2a\xb7\x35\x44\xd3\xb6\x81\x07\xea\xb3\xd0\x4f\x69\xdc\xe7\x5d" - "\x98\xef\xe3\xf9\xfa\x2e\xee\xff\x8a\xfa\x1c\x61\xa9\xcf\x87\x2e" - "\x14\x8a\xf7\xeb\x73\x78\xce\x2e\xd2\xea\xf3\xbb\xd3\xea\x27\x22" - "\x5f\xbe\x92\xaf\x7a\x27\xf3\xa5\x1c\x8b\x56\xd5\x3f\x8b\xb1\x23" - "\x15\xef\x5d\xf8\x55\xe0\x57\x8d\xb4\x00\xe0\x5f\xd2\xa9\x60\x06" - "\xc4\x5d\xeb\x61\xa3\x62\x8e\x9e\xb6\xdd\x32\x35\x7a\xb7\x00\x0d" - "\x21\x27\xf5\x01\xad\xb2\x3e\x2c\xd2\xb7\x67\x85\x25\xef\x6f\xbf" - "\x81\x61\x77\x2f\xcd\xe2\xb9\xbc\x59\x54\x6e\xcf\x41\xda\x6f\xc2" - "\xcc\xab\x96\xed\x3b\x34\xcb\x3b\xd0\x45\xdb\x1b\x1e\x7c\x59\x04" - "\xa3\x15\xdb\x5b\xb5\x8a\xed\x07\x22\x17\xc1\xf6\x75\xed\x25\xd6" - "\x4f\x91\xfd\x02\x34\xf8\x03\xe8\x51\x2f\xfb\xdf\xe7\x82\x0c\x2c" - "\x1e\x52\xde\xdc\x0e\x5e\x28\x7e\x4f\xea\xa6\x96\xd0\x61\x49\x53" - "\xe0\xb1\x83\x79\x8a\xfb\xf7\xa9\x62\x2a\x47\x5d\x0d\x5a\xe5\xf6" - "\x03\xd1\x4a\xc0\x4d\x43\x3d\xe9\x3b\x1e\x08\x4b\x79\xdd\x01\x7e" - "\xdd\x8b\x32\x7f\x20\xc5\xe3\x3b\x26\xf6\xa5\x23\x59\x57\xb1\x7e" - "\x9a\x1a\x09\x33\xcf\xfc\x83\xf5\x9a\xd2\x53\x54\x60\xe8\x29\xd6" - "\x51\x3c\x9f\x60\x3d\xa5\xe9\x7a\x4a\xd3\xf5\x94\x7c\xb6\x40\xd7" - "\x54\x6c\x69\x65\x7d\x34\xd5\xa5\xf4\xcc\xd4\x68\xb6\x00\x6f\x64" - "\x00\x46\xab\xea\x0b\xe4\x59\xb5\xe5\x6b\x99\x5f\xd2\x69\xab\x45" - "\x83\xbe\xd1\xa0\x6f\x34\xa5\x6f\xf2\x75\x7d\x63\x32\xf4\x4d\x14" - "\xe3\x1a\x64\x4a\x4b\xa6\x6f\x34\x5d\xdf\x44\x85\xd2\x37\x9a\xae" - "\x6f\x38\x3d\xaa\xeb\x9b\x68\x12\x7d\xa3\x55\x6c\xe5\xf6\xa6\xea" - "\x7a\xa6\x9c\xf5\x0c\xb7\x57\xab\xdc\x7a\x40\x53\x7a\x26\x80\xb9" - "\x84\x89\xf5\x4c\x14\x65\x34\x43\xcf\x74\x4a\x7d\x60\x61\x5d\xd3" - "\xfd\x2b\x82\xfe\x74\x10\xeb\x18\xa9\x4f\x22\xc3\x22\xac\x4f\x40" - "\xbf\xbb\x13\xf5\x89\x58\xb5\xcd\x8e\x7b\x9b\xd2\x53\xdb\x26\x5a" - "\x97\x8b\x08\xf4\x49\xd6\x54\x57\x08\x7d\xfd\x37\xcc\xa9\xa1\xb7" - "\x5d\x25\xe5\x3e\x57\x84\xa0\x07\xf2\x45\x4b\x39\x41\xe7\x80\x7f" - "\xa3\xd0\x15\x44\x90\xcb\x1d\x90\xcf\x56\xd4\xdd\xd0\x52\xfc\x67" - "\x82\xbc\xdb\x27\xb7\x77\xf8\x9e\x0a\x65\xd9\x26\x9f\x10\x41\xd0" - "\xc7\xff\x54\x71\x39\xf4\x4b\x56\xb0\xb9\x7d\x1f\x4d\x6a\x13\xda" - "\xa4\x19\x7e\x07\xf0\x68\x98\x3c\xc7\x6b\x7d\xea\x25\x1b\xe4\x4c" - "\x78\xa1\x17\xff\x73\xf2\x09\x9b\x75\x7a\x1b\xfd\x68\xd2\x4c\xa1" - "\x41\x9e\x40\x77\xc8\x19\xe4\x11\x32\x36\x11\x32\x97\x0f\x39\xdb" - "\x11\x49\x90\x33\xc8\xcc\xf5\xb8\x77\x28\xfa\xd5\xe7\x43\xce\x72" - "\x34\x39\x9e\xb5\xc9\x39\x1c\xe4\x21\x9f\xd7\xb8\x20\x6b\x39\x90" - "\x0b\x29\x6b\x9a\x2a\xe7\xd4\x98\x7e\x26\x5d\xd6\xd0\x17\x78\xef" - "\xc2\xaf\x02\xbf\xe4\xb2\x56\x1c\x23\x6b\x2f\xe9\xb2\x96\xa6\x64" - "\x0d\x7d\x9a\x1a\x5d\xaa\xe4\x8d\xe1\xf3\x3c\xaf\x47\xde\xd2\xb7" - "\xef\x10\x6c\x4f\x4a\xde\x61\x99\xdb\x8e\x71\x65\x7b\x2b\xe4\xed" - "\x80\x56\xf1\x0e\xe0\x89\x20\xeb\x4d\xf0\xe6\x7f\xf1\x58\x37\xa5" - "\x58\xfc\x57\x41\x74\x48\x39\xea\x6a\x85\x2e\xfb\x3b\xf4\xe8\x7f" - "\x3d\x15\xa2\x3a\xc0\xda\xa1\xa5\x6d\x6f\x80\x3c\x1d\xd0\x2a\xa5" - "\x3c\x4d\x8c\x2e\x65\x98\x3b\x26\xf6\xc0\x90\x63\x65\xbc\x3c\xf5" - "\xb5\xbe\xd8\xe9\xb9\x7a\x8c\x9f\x3e\x29\x61\x7b\x05\xf7\x13\xfd" - "\xd4\x30\x51\xbf\x87\xfd\x53\x23\xd7\xa6\x59\x06\x8b\xcb\xe8\xb2" - "\xe3\xe4\xb0\x80\xdf\x09\xf7\x19\xb8\xcf\x98\x7a\xe3\x17\xb0\x23" - "\x02\xcc\x53\x9d\x2c\x87\xc2\x33\x9a\xe7\x5c\xb9\xe0\x43\x8b\xe8" - "\xcc\xca\x10\xe9\xbb\xcb\x44\xb7\x9d\xd7\xb0\xac\x78\x1e\x88\xf6" - "\x0f\xc7\x75\xd0\xa6\xb3\x94\x89\x9f\x7d\x93\x47\x2b\x67\xdb\x09" - "\xf7\xd9\x62\x91\x3d\x7d\xed\x42\x1a\x61\x0d\x91\xa5\xd6\xa3\xe5" - "\x5b\x97\xdb\x78\x2d\x27\x93\xef\x85\xa7\xce\x59\x7b\x96\xcc\x6c" - "\x57\x6a\x69\xa8\xcf\x65\x15\x62\x7e\x16\xd5\xce\x83\x7e\xf0\x90" - "\xbd\xd6\x23\x76\x45\x3b\x99\x06\x5b\x1a\x0c\x5c\x18\x37\xe0\x79" - "\x15\xf0\x1c\xfa\xc8\xe2\x5c\xfa\x83\x8b\x92\xae\x81\x76\x7a\x1c" - "\x3d\xed\xef\xe3\xfd\x74\x83\x26\x7d\xbc\x2f\x35\xe8\xd4\xc7\x7a" - "\x99\x99\xc7\xe8\xe8\x42\x11\x5c\xf7\x1c\x31\x2d\xec\xee\x88\xf8" - "\x0a\x74\x2c\x2f\x8b\xd2\x55\x53\x17\x5f\x2d\x7c\xed\xc2\xeb\x73" - "\x9d\xa0\x5a\xbc\x2f\x2b\x15\x9a\x96\xb6\x7b\x86\xa8\xdc\x3d\xbd" - "\x63\xa1\x88\xf0\x5a\x09\xea\xf0\xfb\xe9\xce\x72\xd5\x17\xdb\x72" - "\xe4\x3c\xcf\xb2\x7b\x3a\x60\x5d\xc2\xb0\x9a\x51\x3e\x5a\xb9\xbb" - "\xb0\xd3\x33\xcc\xe2\xa7\x3f\x4c\x97\xf9\x2c\xdb\x72\x8a\x97\xd0" - "\x95\xc7\x69\x58\xae\xb4\xf5\x2b\x76\x97\xb0\x3e\x40\x9a\x0d\x69" - "\x93\x00\xdf\x85\xfc\x39\x7e\xfa\xb0\x5a\xd9\xb1\xc3\x26\x19\xf9" - "\x70\xef\xe0\xfb\x38\xfe\x49\x91\xdb\x2b\xe8\x2f\x47\xef\x66\x0b" - "\xa7\x99\x63\x36\x5f\x6c\xf8\xe5\x26\x7f\xdd\xab\xcf\xb7\x35\xc0" - "\xd6\x22\xf7\x32\x1a\x8a\xfe\x61\xfc\x7e\xe7\x76\x89\x63\xc2\x33" - "\x2c\x7f\xdb\x92\x30\xe6\x09\xc3\x0e\xfa\xa9\xa2\xa6\x2f\x7a\x0a" - "\xb6\x75\xce\x8a\xc0\xba\x85\x3d\xb4\xfc\x72\xea\x62\x4d\xf0\x3d" - "\xeb\xa3\x5a\xa4\x33\xdd\x3a\x3d\xd7\x64\x1a\x34\xeb\xbb\x5f\x76" - "\x17\xab\x79\xe1\x35\x25\xc2\x23\xc8\xfb\x23\xde\x9f\xb8\x66\x81" - "\xa2\x43\xfd\xc4\x0e\xe8\x11\x5e\x7f\xad\x05\xbd\xe7\xdb\x45\x18" - "\x30\x9d\x7e\xba\x29\xa8\xaf\xf3\x84\x7c\x91\x09\xac\x5b\x92\x8e" - "\x5b\xbc\xff\xd3\x0b\xff\xda\xaa\x96\xa1\xd0\x43\x52\x37\xed\xab" - "\x2a\x53\x78\x87\x19\xae\xb7\xec\x34\xb5\xe1\xfd\xfc\x90\xc0\xf8" - "\xb4\xaf\x82\xe7\x11\xde\x85\x5d\x9c\xf6\x06\x78\x5b\x78\xe7\x31" - "\x4e\xd7\xbe\xe1\xfd\x51\x17\x1d\xc3\xbc\xaf\xb6\x67\x4d\xe6\xda" - "\x72\x5e\x83\x51\xeb\x48\xd7\x62\x3e\x34\xa2\xc1\xc0\x8b\x6d\x0c" - "\xd0\xd7\xc2\x36\x07\xdb\x1a\xbc\xa6\x3f\xbf\x54\x84\xd9\xe6\x40" - "\xde\x11\x46\x1b\xb8\x7d\xaa\x5d\xd7\xe6\xc6\xb6\x0b\x38\x04\x31" - "\x87\x96\x34\x98\xbf\x98\x2c\x0e\x45\x6b\x0b\xb7\x97\xdb\xc2\x6d" - "\x96\x6d\x91\x3a\x16\x63\x44\xe4\x76\xd4\x2f\xd3\xf3\x01\x0b\xf3" - "\x9f\x1f\x4f\x53\x3c\x75\x2d\x25\xf2\x51\x4f\x3f\x5a\xb6\x59\xdc" - "\xdf\xd1\x8f\xdc\x9a\x38\x7a\x8c\x86\xf3\x7c\x37\x95\xaf\x1a\xdb" - "\xd9\x61\xe6\xdf\x86\x7c\x1e\x93\x7d\xa5\xac\x6f\x65\xde\x4b\x91" - "\xb7\x0d\x79\xd2\xf4\xbc\x69\x6a\x3f\x47\x5e\xfb\xf3\x15\xe3\x58" - "\x3f\x3f\x0d\x77\x04\xe5\x78\xbf\x2f\xcf\x78\x16\x78\x06\x2e\xad" - "\xa2\xb2\x21\x3f\x39\x2e\xef\x58\x78\x3c\x8b\x9e\x15\xed\xa8\xe7" - "\x72\xe6\x29\xf7\x62\xba\x02\x7c\xf9\x65\xd9\x32\xba\x94\xf9\x49" - "\xa4\xed\x2e\x55\x74\x1f\x5e\x24\x3c\xb0\x3d\xa1\x51\x8b\x17\xd2" - "\x95\x90\xa3\x92\xe3\x34\x7c\x79\x41\xa9\x03\xb8\x12\xad\x3b\x49" - "\x24\x75\x50\xda\x6e\x97\x2f\xf2\x35\xd5\x9e\xe4\xf5\x97\xe1\x75" - "\x06\x2f\xe2\x7e\xe7\xf9\xf4\x05\xe8\x5a\xa1\xd6\x0f\xae\xbb\x82" - "\xd7\xef\x8f\xd2\x75\x66\x6e\x2f\x7e\x29\xa8\xfb\x8c\x38\x2b\xa6" - "\x0b\x35\xa6\xb9\xfc\x74\x5d\x36\xae\x15\xf2\xe7\xa1\x19\xfa\xb3" - "\x0b\xf9\xda\xc4\x59\x8d\xf3\x54\xa0\xfd\x11\xe1\x49\x61\x99\xd8" - "\xdb\xe9\xb9\x2e\xcb\x4f\x63\x75\x79\x1f\x1e\x62\x58\x7d\xe0\xe0" - "\x42\xdf\x12\xf3\x26\xf0\x78\xd5\x51\x96\xc2\x78\xcc\x92\x72\x01" - "\x58\xb5\x26\xa5\xb7\x35\xe0\xba\xd9\xa3\x39\xa1\xa3\x9d\xda\xaa" - "\xcf\x1a\xe4\xbd\xfe\x4e\xe8\xe3\x68\x72\xf8\xfb\xaa\xbc\x43\x98" - "\xc7\xaf\x6b\x57\x70\xf6\x55\x78\x87\x1c\xe7\xe7\x13\xfc\x1c\xb2" - "\x7c\xde\xe0\xab\xce\x45\xfd\xc7\xb9\xde\x76\x35\x9f\xbf\xee\x44" - "\x07\xea\x40\x1b\xda\xfd\x34\xb2\x49\xed\x65\x7c\xde\xd0\x87\xec" - "\xd9\x58\x76\x58\xe6\x94\x4c\xdf\xf0\x5e\x73\x9d\x94\x3f\x27\x78" - "\xbe\x42\xd7\x1b\xbc\xd6\x92\x71\x94\x6e\xd8\xd9\x6c\x97\xfc\x6d" - "\x12\xa6\xeb\x27\xbd\xaf\x05\x4d\xbc\xdf\xa4\xd4\xd7\x0d\x3b\xcf" - "\xfd\x5d\x8f\xf6\x5d\xbf\x1e\xbf\x1a\xfd\x19\xf3\xff\xeb\xf7\xe2" - "\x3e\x03\xbf\x1a\x49\xbb\x8d\x85\x29\x7e\xbc\xeb\x80\xcd\xce\xcf" - "\x7e\xba\xbe\x42\x6c\x1c\x6e\x82\x5d\x22\xef\x6b\xaf\xe0\x75\x82" - "\xeb\xf7\xa0\xbf\xc6\xa8\xbe\xb8\x41\xee\x29\x02\x37\xa6\xbb\x70" - "\x57\x8b\x70\x53\x59\x08\x78\x5f\xdf\xd6\x54\x1d\x22\xc7\xf5\xdc" - "\xfe\xeb\x03\xdc\xa6\x10\xe8\xcf\xd7\xf9\xd5\x22\xd8\x58\x13\x21" - "\xde\xf7\xea\xf4\xdc\x00\xf9\x73\x92\x5a\x73\xd8\xb7\x8b\xe1\xe9" - "\x3c\x21\x8c\xf6\x2b\x9d\xf6\x79\x03\xf7\x25\x9e\x6f\x47\xdb\xad" - "\x27\xe9\x86\x05\x22\xfd\xb3\x86\x46\x27\xd1\x26\xe8\x11\x8c\x35" - "\x72\x2d\x1e\x7a\x89\x61\x62\xfc\xbf\xae\xc6\xd8\xa7\x59\x83\xf7" - "\x6b\xf1\x0e\x63\x4f\xb0\xd9\x19\x26\x86\x15\xe5\xf6\xa1\xfc\x3e" - "\x2d\x68\xc6\x58\x8d\x3e\xff\xbc\xa1\xac\x18\x7a\xa6\x47\x6f\xdd" - "\x30\x74\xd9\x09\x11\x36\xda\xc7\x7b\xa1\x80\x0b\xfe\x7f\xce\xde" - "\x27\xff\xf7\xe0\x9c\xf5\x6f\x8d\xc3\x55\x9f\x69\xa0\x4b\x7c\x9f" - "\x65\x1d\x50\xfd\x75\x43\x24\xbe\xbf\xb2\x0e\xe0\x37\x1e\xbf\xe9" - "\xf8\x15\xe9\xcf\xb1\xbf\xec\x98\x7b\x48\x6b\xd6\x9e\x4e\x4f\x16" - "\xc6\xff\xe1\x0d\xaa\x1f\x38\x1d\xed\x60\x1e\xf9\x96\x2c\xbc\x5e" - "\xc7\xfb\xa0\x9c\xce\xfc\xcc\xe9\x1a\xec\x19\x3c\xe7\xe1\xbd\x8d" - "\x65\x75\x9d\x46\x71\xef\x7d\x2b\xc1\x73\x4b\xba\x18\xff\x2d\x72" - "\x8d\x71\x79\x45\x05\xf3\x29\xf2\x4c\xb3\x46\x2a\x2a\x50\xdf\x4e" - "\x83\xae\x48\xab\xe2\xf7\xcc\x93\x48\x6f\x02\x5d\xe4\x1a\x7a\x08" - "\xf3\xbd\xe4\xb6\x46\x56\xa0\xc7\x26\xb3\xd4\x07\x58\x1f\xb5\xd3" - "\x8d\x21\xe8\x2c\xf4\xed\x67\xbb\xd4\x58\x73\xe3\x19\x7e\x86\xae" - "\xfc\x12\xf7\xc1\x66\xb4\xb2\x6b\xd5\x87\xfe\x6e\x13\xf5\xef\x32" - "\x51\x6e\x64\xd5\x37\x43\x23\xe9\xef\xb6\xfb\x02\x7b\xa8\x25\xb2" - "\x9b\x1c\xcf\x49\x18\xdf\xf8\xc0\x03\xee\xc5\x22\xfa\x41\xd7\x0e" - "\xb3\x2f\x72\xca\x8b\xb1\xf9\xea\xe3\x74\xa3\xa4\xc7\x2b\x47\x31" - "\xea\x3f\x25\x61\xeb\xf4\x09\x84\xd7\xce\x16\x91\xb5\xc7\x44\x08" - "\xf6\x5d\xfa\x9a\x2e\x1a\xb1\x61\x09\x65\xd7\x74\xd1\xf0\xcd\x5d" - "\x94\x25\xfe\x91\x65\xaa\x81\xdd\xf6\xd4\x19\x1b\x41\x27\xe4\x0f" - "\x2c\x26\xcb\xe6\x25\x24\x79\x24\x5a\x09\xfb\x2d\x02\xfb\xed\x54" - "\x16\xeb\xc6\x1e\xfb\xad\x5b\xda\xc5\xbb\xdb\x14\x1f\xed\x6e\x1b" - "\xe0\xa4\x94\x8c\x19\x64\x03\x7e\xee\x93\x74\xe3\x8d\x19\x6d\xb0" - "\x1d\xd1\x66\xbf\xde\x5e\x5c\xc7\x58\x9d\xd4\x5f\xb6\x15\xfa\x5a" - "\x54\x7e\xb6\xab\xcf\x71\xd8\xc4\x3c\x15\x62\xb9\x41\x1b\x6e\xba" - "\x87\xf7\x62\xf7\x0c\x09\x9b\xe7\xd7\x88\x30\xa7\x97\x0c\x13\x61" - "\xa4\x67\x71\xdd\xbb\x90\xde\xe9\xb9\x29\xcf\x6f\xda\xb4\xb3\x2f" - "\x1e\xc5\xfc\x48\xd7\x2b\x37\xfd\x51\x98\xca\xc1\xa3\xdb\xb3\x96" - "\x45\x60\x7b\x9f\x64\x99\xbd\xe9\xd0\xd4\x22\x11\x71\xcc\xe5\x7d" - "\xf1\x9b\xbc\xbc\x67\xcf\x7b\x75\xef\xc3\xb6\xf9\xbe\x7d\x7a\x1e" - "\x2f\x78\xae\x60\x2d\x02\xcc\x55\xdb\xb3\x04\xe6\xe7\xf1\x36\x3c" - "\x51\x5f\x76\x3c\xfb\x8a\xbc\x2e\xfd\x52\x7e\x9c\xe1\xa7\x07\x0b" - "\x19\x77\xde\x93\x65\xdd\x09\x7b\xeb\xd2\x63\xf4\xe3\x89\x21\xd0" - "\x01\xef\x31\xfe\x4f\xcc\xd1\xf7\x55\xa5\xbf\x0b\xd2\x30\xfe\xdf" - "\x5f\xca\x69\x25\xc3\xc8\x5e\xe2\x10\x81\xbe\x6c\x26\xe9\x83\x62" - "\xa2\xcb\x51\xa6\xc4\x80\x83\x71\xea\x37\x1d\xa6\x47\x1e\x41\x5a" - "\x85\x01\x07\x79\x2e\xc3\x73\x75\x4f\x1e\x55\x66\x47\x4c\x99\x47" - "\x3a\x4c\x37\xfd\x06\x69\x7b\x13\xca\x1c\x4c\x28\x73\x24\xa6\x4c" - "\xb9\x5e\x4f\x30\xbe\xcc\x08\x8a\x2f\x33\xc2\x76\x2e\x6e\x23\x86" - "\x27\x94\x19\x9d\x50\x66\xfc\xb9\xb8\x8d\xc8\x4f\x28\xe3\x4c\x28" - "\xe3\x8a\xa1\x25\xfb\x83\x64\x23\x6d\x75\x42\x99\x9a\x84\x32\x3b" - "\x8d\xe7\xbe\x7c\x7e\xe6\x6f\x22\x3b\x78\x33\xc0\xfd\xf9\x3a\xfa" - "\xa7\xe3\xad\xe7\x3b\xf5\xb2\x81\x24\xed\x8a\xc4\xd7\x37\x32\x23" - "\xbe\xbe\x91\x43\xcf\x6d\xd7\xc8\xec\x84\x32\xb9\x09\x65\xf2\x62" - "\xca\xd4\xa9\x7a\x46\x16\x26\x94\x29\x49\x28\xb3\xf2\x5c\xbe\x1a" - "\x59\x9d\x50\x66\x47\x42\x99\x86\xef\xa1\x05\x8f\xe3\xca\x37\x6b" - "\x30\xdb\xca\xf7\xc2\x46\xb8\x79\x18\xfb\x1c\xf0\xde\xe4\xb6\xae" - "\x70\x3f\xde\x0f\xe1\xf1\xaa\xd1\x15\xc6\xd8\x72\x33\xe6\x3f\xb7" - "\x95\x1b\x63\x16\xfb\x63\xb0\x4c\x2b\x1b\x7b\x64\xa0\x2f\x5b\x94" - "\xeb\x31\x7c\xb5\xb8\xae\xc6\xa1\x3c\x4e\xdd\x3c\xad\xc7\x26\x56" - "\xfe\x4b\xa4\xe0\xdc\xfc\xae\xb1\x37\x5a\xab\xfc\x3c\x52\xd8\x26" - "\x6f\x74\xc9\x32\x15\x31\x76\x34\xd7\x1f\xda\xb3\x24\x6c\x8e\xc7" - "\xe3\x66\xe7\x79\xf0\xc8\x80\x6d\xe4\x6a\x81\x65\xc1\xfb\xd7\xcd" - "\x35\xb0\x81\x60\xf7\x33\x6e\x47\xe9\xe6\xa0\xb4\xc9\xe6\x76\x11" - "\xdf\xfb\x4a\xef\x94\xfb\xdb\xca\x26\x1d\x95\xd5\x84\xfa\xd9\x76" - "\x6f\x2a\x3e\x4d\x1d\x72\xfc\x65\xdb\x6d\xd4\x23\x8d\xa5\x41\xe0" - "\x35\xaa\xc7\xff\xc3\x4f\xa3\xa6\x49\x5b\xa3\x62\x5f\x31\xef\xbd" - "\xf3\x1e\x52\x63\x28\x87\xf3\x80\xff\x6f\x1e\x61\xb4\x17\x63\x3d" - "\x64\xec\xe6\xc8\xf9\x68\xa6\xfa\x70\x54\x69\x3c\x4f\xf6\x03\xaf" - "\x8c\x5a\x1f\xdf\xef\xa3\xea\xe2\xfb\x7d\xd4\xae\x78\x9e\x34\x81" - "\x27\x47\x35\x25\x94\x39\x9c\x50\xa6\x2d\xa6\xcc\x7a\xbd\x9e\x70" - "\x7c\x99\x6c\x4b\x7c\x99\x6c\x7b\xcc\x33\xda\x98\x9d\xd5\x33\xf7" - "\x91\xbe\x45\xd9\x39\x31\xcf\xa6\x2a\xa9\x3f\xb3\x27\x19\x69\xbc" - "\x76\xb4\xf9\x4d\xe5\xdb\xa2\xc3\x73\x26\xc8\x3b\xe7\x2f\x4d\xc0" - "\x61\x75\x02\x0e\x3d\xf2\xaf\xef\xa7\xff\xfe\x18\xdd\x52\xa2\xef" - "\xa7\xb7\x63\xcc\x9e\xca\xcf\x80\x55\x8d\xfc\xa0\x43\xf6\xc1\x04" - "\x78\x47\x12\xe0\xb5\xc7\x3c\xdb\xf0\x1c\x89\x69\x83\x2d\xd5\x2e" - "\xfd\x04\x61\xbf\xdd\x92\x69\xa4\xf3\x9c\x12\xf8\x06\xdc\x72\xac" - "\xc9\x65\x9f\xad\x41\x47\xe9\x16\xf6\x69\xd2\x75\xf9\x2d\xb1\xf2" - "\x4f\xaa\x5d\xb7\x4c\x8b\xc7\xe3\x96\xc2\x78\x3c\x6e\x29\x89\x69" - "\x57\xc8\xba\x9c\x7e\x61\x8d\x3c\xf4\x18\xdb\x3e\xec\x6b\x27\x7d" - "\xa7\x96\xc1\x66\x3b\x43\x36\xf6\x59\x3b\x56\x42\xa9\x3e\x57\x00" - "\x73\xb9\xdd\xfe\x3e\xf9\x29\x7d\x5f\xb9\xee\xf7\xe7\x00\xfc\xc3" - "\x06\x3f\x6a\xab\xf6\x95\x6b\x95\x9f\xd6\x23\x0d\xfa\x6f\xd4\x0c" - "\x65\xe7\x36\x04\x85\x3b\xbf\x1a\xf4\xc4\xbc\xe8\xd6\x3f\xeb\xf3" - "\x88\x2a\xf6\xbd\x82\xee\x09\x60\x8c\xcf\x50\x7b\xe5\xb7\x0e\x8d" - "\xe1\xeb\x90\x63\xc9\xdd\xe2\x28\xdd\xfa\x25\xdb\x00\x2c\xa3\xec" - "\xc3\xd5\x18\x09\x12\xcf\xbd\x7d\x91\xe3\xd2\x76\xc3\x7b\xbf\x5e" - "\x36\x3f\xa6\x6c\x50\x9f\x1b\x07\xf8\xdd\xa8\x08\x99\x1b\x43\x41" - "\x02\x9c\x4c\x65\xef\xdd\xfa\x65\x23\xe4\x15\x65\x56\x1b\x65\x78" - "\x1e\xcd\x65\xac\x25\x64\xbe\xb9\x94\xcc\xde\x25\x47\x25\x6c\xc3" - "\x97\x02\xb6\x74\xbb\xaf\x34\x40\xbe\x50\x2b\xaf\x75\x99\x95\x0f" - "\xcc\xad\xfe\xd4\x30\x59\x3a\x2a\xf7\x15\xfb\x71\x1f\xad\xdc\xe7" - "\x02\x6e\x90\xa7\x5b\xcd\xac\x6f\x62\x69\x37\x61\x42\xde\x43\x53" - "\x27\x8f\xfc\xe5\x43\xf7\x4f\x9b\x70\xa7\x63\xda\x9c\x17\x66\x15" - "\x8e\x7c\x71\x41\x89\x63\xd1\xbc\x39\x25\x73\xe6\x3e\xeb\xc8\x76" - "\x5d\xe7\x72\xcc\x2c\x51\xd7\xac\xa2\x99\xf3\x4b\xc6\xf2\xed\x08" - "\x47\xf1\xbc\x59\x0b\xe5\xed\x8d\xe9\x14\x0f\x64\x4e\xc9\xac\x79" - "\x8e\xeb\x0a\x47\x38\xee\x9b\x39\xa7\x68\xc1\xbc\x59\x49\x61\xdd" - "\xe9\x98\x37\x6b\xde\xac\x99\x85\x8e\xb1\x8e\x6c\x86\x1c\x0b\x2e" - "\xa6\x3f\xb3\x8d\x71\x8c\xc7\xaf\x75\x1e\x71\x48\x1f\xcf\xfc\x8a" - "\x7f\x6e\xdb\x73\xee\x58\x76\xdb\x81\x78\x9e\xbb\xad\x35\x9e\xe7" - "\x6e\x0b\x9c\x3b\x96\xdd\x96\x30\xfe\x8d\x4e\x18\xff\x46\x0f\x3d" - "\x77\x2c\x1b\x9d\x30\xfe\x8d\x4e\x18\xff\x46\xf7\x8c\x7f\xe0\x25" - "\xff\x0a\xa9\x17\x46\x27\x8c\x7f\xa3\x13\xc6\xbf\xd1\x2b\x13\x9e" - "\xab\x62\x9e\x2f\xc5\x73\x7d\xec\xf8\x88\xe7\x3d\x86\x7c\xf6\xea" - "\x97\xd1\x07\x8c\x3c\xac\xeb\xa1\x9b\xdb\xf4\xbc\xfe\x98\xbc\x01" - "\x3d\x6f\xa8\x47\xfe\xc0\x47\xec\xeb\xa6\xe6\xeb\xb7\x3f\xc6\x3a" - "\x9d\xfd\xdc\x78\x6c\x82\x7c\x5c\x7d\x92\x46\xff\x91\x61\x31\x0f" - "\xb3\xdf\xa3\x78\xeb\x89\xce\xda\x41\x64\xe1\x32\xb5\xaf\x91\x59" - "\x78\x6e\x6d\xc7\x95\x90\x96\x81\x1f\x74\xca\xed\xb0\x7f\x37\x97" - "\xaa\xf1\xe2\xf6\x3a\x69\xf3\xa3\x8c\x0e\x5f\xce\x6b\x00\xc7\x8e" - "\x32\x96\x75\x6a\x2c\x6e\xc3\x7d\x06\xf3\x34\xca\x9b\x85\xe9\xb6" - "\x5b\x70\x25\xa4\xd9\xf0\xcb\x04\xbc\x3a\x03\xde\xca\xc1\xc9\x6d" - "\xcb\x44\x3b\xb7\x67\x3e\x68\x22\xeb\x3a\x8f\xd6\xea\xd3\xd8\xb6" - "\xbe\xfd\xb0\x5a\x5b\xd8\x0d\x5b\xfe\x8b\xfc\x5a\xa4\x27\x9f\x27" - "\xfd\x04\xf6\xdf\xed\x07\xd4\x7a\xcb\x4f\xd0\xff\x0f\x86\xd4\xda" - "\xe9\x6e\xf6\xbf\xe8\x3a\x46\x3f\xf9\x18\xd7\x6e\x5c\xdf\x36\xe0" - "\x7b\xe5\x7c\xfb\x27\xa3\x85\x27\xe5\x61\x86\x9b\x90\x3e\x09\xfa" - "\xad\xcb\x1a\x29\xcf\x4f\xf2\xce\x29\x3c\xa9\x0f\x25\x49\x2f\x87" - "\xcd\xd0\xe5\xa7\x9f\xec\x61\x7c\x63\xd2\xab\x85\x67\xe0\x34\xce" - "\xef\xe7\xfa\x50\xa6\x2f\x5b\xdb\xf0\x6b\x55\x7e\xe8\x3f\x69\x4b" - "\x68\xc7\x77\xc7\xe8\xa7\x33\x55\x3b\x7e\xba\x2f\xa1\xee\x48\xf2" - "\x76\xfc\x34\x13\xed\xf8\x2e\x79\x3b\x7e\x9a\x2d\x69\x6b\x42\x5b" - "\x4c\xe7\xbc\x9b\x84\xb6\x7c\x27\xe9\x1e\x9f\x5e\xa8\xdb\x42\x3c" - "\x27\xb3\xe1\x9d\x2c\xfb\x70\x69\x6f\xbf\xe9\xf9\x56\x5b\xab\x29" - "\x2f\x49\x9d\xf5\xc2\xd3\xff\x61\x3f\xfd\xf4\x88\x84\xd3\x9b\xbe" - "\x57\xe1\x02\x3a\x99\x24\x9d\x58\x1e\xac\x7d\xf5\xb7\x31\x2f\x51" - "\x6b\x21\x39\x90\xff\x9f\x78\x8d\xb5\xcc\xf9\xa5\x22\x68\xd0\x11" - "\xef\xb2\x12\xde\x85\x63\xde\x8d\x8f\x7b\xb7\xac\x27\x7d\xba\x91" - "\xfe\xc3\xfa\x29\x67\x75\x42\x3f\xa1\x7f\xee\xb8\x2a\xbe\xdd\x39" - "\x35\xaa\x7d\xe8\xa3\x73\x68\x9d\xd3\x80\x3e\xea\x4e\xde\x47\x39" - "\x87\x93\xf3\x5a\x8e\x5c\x47\x13\x83\x28\x09\xbc\x3b\x78\x8e\xdd" - "\x2d\x79\x50\xef\xa7\x73\xfb\xe7\x8e\x11\x46\xff\xfc\xb0\x36\xde" - "\x51\x9c\xd0\xc6\x28\x60\x9c\x50\x6d\xbd\x73\x6c\x02\xec\x8a\xe4" - "\xbc\x78\x47\x1d\xda\x19\x4d\xde\xce\x3b\xf6\xf6\xcd\x8b\x77\xb4" - "\xa2\x3d\xd1\x73\x79\xf1\x8e\xa0\x2a\x43\x49\xca\xdc\x99\x21\x3c" - "\xc9\xea\xb9\x73\xb8\x3b\xc2\x76\xee\x9d\xbc\x97\x62\x8f\x49\x1f" - "\x13\xcf\x7f\x68\x03\x97\x63\xfa\x45\x94\x9e\xe5\x7e\x38\xe6\x20" - "\xd3\xf7\xf1\x64\xa7\xe7\xce\x9a\x04\x5a\x9d\x3a\x46\x3f\xbb\xaa" - "\xc3\x94\x52\xaf\xe8\xf5\xb3\x2f\x13\x70\x6a\x48\x4e\xaf\x3b\x0f" - "\x81\x5e\xa7\x92\xd3\xeb\xce\xf6\xbe\xe9\xf5\x33\xee\xff\x53\xe7" - "\xd2\xeb\x67\x8e\x58\x7a\xc1\xd6\x95\xed\xbb\xd6\x0e\xde\xe8\x2e" - "\x10\xb5\xdc\xd6\x28\xd9\xac\xe0\x15\x55\xa6\x9d\xcb\x4c\xb3\x86" - "\x15\x9f\xc0\x86\xb4\x9c\xa4\x9f\x8d\x31\xe4\x7f\x60\x35\xf5\x17" - "\xdd\x4f\xb0\x1f\x51\x0a\x97\xf3\xb9\x4e\x79\x7d\x91\x6c\xe2\xf9" - "\x47\x42\xbd\xd5\xc9\x75\xc1\xcf\x76\x81\xa6\xaf\x25\x49\x3f\xa0" - "\xfc\xcb\xc6\x50\xbc\x8e\xf8\x99\x3f\xbe\x8f\x40\x37\x94\xd3\xb7" - "\x9d\xbe\xf7\x77\xfe\x3e\x1b\x93\x77\x6e\x9f\x8d\xf9\x56\xf5\xd7" - "\x98\x3f\xc6\xe3\x37\xc6\x99\xbc\xbf\xc6\x94\xf7\xdd\x5f\x63\x6a" - "\xfa\xee\xaf\x31\x0d\xdc\x5f\x68\x6f\x30\x7e\xdc\x18\x73\x28\xbe" - "\xbd\xa8\x17\xe5\x84\xe9\xa2\x4b\xf9\xf9\x87\xb6\xdb\xf8\xb1\x8e" - "\xe3\xbe\xaa\x2d\x23\xf0\x72\xca\x30\xc6\xf1\x42\x61\xf4\x09\x1b" - "\x34\x5c\xbf\x24\xf9\x7e\x2b\xcf\x71\x5b\xaa\x89\x78\x1f\xd9\xf1" - "\x23\xb6\xdd\xc7\xfe\x41\x33\x51\x2b\xee\x4d\xc7\xe8\xee\x57\x35" - "\x93\xa9\x94\xf7\x3c\xa5\x5f\xb8\x5c\x43\x18\x7b\x24\xb6\x2f\x78" - "\xef\x93\xe7\xa6\x6b\xd5\xdc\xe9\xef\xc7\xe8\xae\x59\xaa\x5f\xee" - "\x7e\x29\x9e\x8e\x77\x51\xf2\x7e\xb9\xcb\x8e\x7e\xf9\x7b\xf2\x7e" - "\xb9\x6b\x74\xdf\xfd\x72\x57\x1e\xfa\xe5\xef\xe7\xca\xd1\x5d\x4e" - "\x5d\x8e\x56\x70\x19\xc7\x5c\x9e\x8f\xdf\xf5\x17\xce\x83\x7b\xc8" - "\xc8\x5d\x7c\xa4\x3c\x65\x64\xbb\x21\x47\xb2\x4c\x0d\x60\xc9\xfa" - "\xf5\x3c\xd5\x3a\x8c\x58\xb8\x5e\x6b\x7b\x32\x39\xb9\x4b\xf6\xd3" - "\xcd\xc5\xc4\x7b\xf1\xf9\x9b\x18\xc6\x3c\xa2\x93\x74\xf7\x48\xce" - "\xc7\xe9\x37\x87\x62\xe5\xe4\xee\x9e\x7c\xac\xeb\xf4\xbc\x24\x3a" - "\x9d\xc4\xf9\xe2\x61\xdf\xad\xb7\xbf\xbf\x1c\x47\x38\x3f\xe7\x4b" - "\xc8\x93\xaf\xe4\xf1\xee\x9a\x78\x79\xbc\xbb\x38\x9e\x3f\xef\x92" - "\xe5\x34\xe8\x39\x3f\x8d\x6d\x02\x0e\x3f\x98\xbf\xce\x2f\x9b\x77" - "\xb7\x27\xc8\x26\x78\x20\x77\x8d\xe2\x81\xdc\x17\xe2\x71\xcd\x35" - "\x27\xe7\x81\xdc\xa1\x7d\xf3\x40\x6e\x4e\xdf\x3c\x90\x3b\x8d\x79" - "\xc0\x4f\xb9\xab\xe3\x65\x33\xb7\x28\xbe\xed\xa8\x57\xca\x26\x5d" - "\x72\x21\xb2\x09\x5b\xe8\xd2\xbe\xe4\x90\x65\x8a\xfd\x47\x6a\xbb" - "\x8c\xbd\x8e\x1f\x44\x33\x0b\xe4\x0a\xf8\xdd\xe3\xe0\x35\x25\xe8" - "\xf8\x1c\xa6\xe1\x66\x79\xf6\xf0\x9e\xd1\xb1\x74\x5c\xab\xce\xc7" - "\xb9\x91\xf7\x53\xde\x57\x56\xf4\xbc\x77\x79\x7c\xfb\xef\x99\x96" - "\x9c\x9e\xf7\x14\x81\x9e\xee\xe4\xf4\xbc\xa7\xa2\x6f\x7a\xde\x53" - "\xcf\x67\x8f\xce\x95\xa9\x7b\xf6\x3a\x16\x4a\x1b\x45\x96\x39\x49" - "\xf7\x5e\xf6\xc3\xc6\xa7\x7b\x42\xf1\xe3\xd3\x3d\x47\x2e\x7c\x7c" - "\xba\x37\x27\xf9\xf8\x74\x6f\x5e\xf2\xf1\xe9\x5e\xa7\x92\x87\x7b" - "\xeb\xe2\xe5\xe1\xde\xf2\x78\x9e\x00\xed\xfe\xc7\xc6\xa7\x7b\x83" - "\x09\x32\xb0\xee\x18\x8d\x7b\x09\x36\x45\xb9\xea\xb7\xf1\xb7\xc7" - "\xe3\x38\x2e\x23\x79\xbf\x8d\x1b\x8e\x7e\x5b\x97\xbc\xdf\xc6\xe5" - "\xf6\xdd\x6f\xe3\x78\x0f\x7a\xdd\xb9\xfd\x36\xae\xe4\xc2\x6d\x8a" - "\x71\x3b\xe2\xfb\x6c\xdc\xfa\x0b\xef\xb3\x71\xed\xc9\xfb\x6c\xbc" - "\x39\x79\x9f\x8d\x1f\xaa\xfa\x6c\xfc\xb4\xf8\x3e\x1b\x3f\x3a\xbe" - "\xcf\x40\xb7\xff\x66\x9f\xa1\x7f\xcc\xca\x3f\x61\xfc\xc7\x98\xb7" - "\xf7\xef\xf4\x8c\xdf\xe9\xa7\x09\x25\x6a\x6e\x3d\x41\x8d\x1d\xaa" - "\x0f\x3f\x40\x9e\xba\x73\xc7\x81\xf1\x07\xf4\xb4\x5f\x9e\xdb\x0f" - "\xe3\xdb\xa0\xa3\xdb\x9b\x4a\xe5\xde\x96\xea\x43\xa6\x39\xf2\x79" - "\x97\xf0\xfe\xd4\x04\xde\x2c\x4a\x41\x1f\x0b\x5f\x38\x42\xac\xd7" - "\x91\x3f\xc4\x70\xf8\xcc\x65\x3c\xac\x09\xd9\x17\x32\xc6\x9f\xc7" - "\xa7\xc6\xec\x2d\xbb\x15\xf0\xee\x9b\xa0\x78\x75\x42\xa2\xfd\x5b" - "\x8b\x77\x57\x28\x3e\xfd\xf9\xd7\x09\x38\xec\x49\xce\xa7\x13\x0e" - "\xa2\x0d\xb5\xc9\xf9\x74\x42\xa0\x6f\x3e\xbd\x0f\xfd\x4f\xb5\x31" - "\x73\x9f\x41\x4f\x45\xfc\x09\x73\x9f\xfb\xb2\xac\x21\xc5\x3b\xd2" - "\x26\xaa\xdc\x6d\xee\xf4\xdc\x97\x68\xff\xa1\x6f\xee\x6b\xd6\x71" - "\xfe\x43\x42\xf9\x3e\xec\xbf\xfb\xd8\xfe\xfb\x20\x39\xce\xf7\x9d" - "\xc7\xfe\xbb\x8f\xed\xbf\x0f\xce\x95\xad\xfb\x74\xfb\x2f\xd9\x1c" - "\xef\xbe\xf6\xe4\xfd\xff\xf3\x84\xfe\xa7\xfc\x12\xcc\x87\x65\xf9" - "\xf8\x7c\x23\x62\xf3\xb1\x6f\x12\xe7\x65\x1e\x49\x92\x37\x3f\x11" - "\x66\x1f\xf9\xca\xcf\xe1\x3d\xf6\xa5\x4a\xca\x7b\x3f\xdf\xa9\xe4" - "\x71\xa2\x39\x5e\x1e\x7f\xde\x14\x2f\x8f\xf7\x39\x13\xca\xb5\xc5" - "\xbf\x07\xff\xfc\x8f\xe9\xd8\x89\xd3\x12\x78\xe0\x8b\x63\x34\xf1" - "\x8f\x8a\x07\xee\xbf\x31\x1e\x8f\x89\x45\xc9\x79\x60\xe2\x4a\xb4" - "\xff\x8b\xe4\x3c\x30\xb1\xae\x6f\x1e\x98\xb8\x17\xb4\xfc\x22\x96" - "\x6f\x1f\x2e\xcd\xed\x9f\x90\xc7\x9f\x5c\xe7\x4d\x0c\x27\x5f\x23" - "\xb8\xdf\xa6\x68\x7c\xff\xc4\x78\x1a\xdf\x9f\x15\x4f\x43\xb4\xe5" - "\xbf\x4f\xc3\x9e\xd8\x07\x9d\x9e\xfb\x13\xe5\xdf\x77\x8c\x1e\xd0" - "\xe5\xff\xc1\x4b\x12\x70\xdc\xa3\x70\x49\xb6\x2e\x72\x3f\xcf\x7f" - "\x7d\xc9\x69\x79\x7f\x7b\xf2\x36\x3f\x60\xc6\x18\xe4\xd3\xce\x91" - "\xa5\x07\x86\x22\xfd\x61\x5e\x0f\xe5\xf5\x90\xcd\x48\x7f\x38\x42" - "\x16\x39\x5e\xf5\x8c\x4b\x0f\xe4\xb2\x2f\x0a\xd3\x9f\xf9\xd7\x3a" - "\x94\xf2\x78\x0c\x62\xbc\x0a\x4a\xa5\xdf\x82\x75\x25\xf3\xfa\x35" - "\xcc\xeb\x0f\x48\xfb\x8f\xf7\x59\xd8\x8f\xd0\xea\xa2\x3c\x5f\x28" - "\x42\x06\xbf\x73\xfe\x04\xd8\x35\x2c\x17\x9c\xdf\xc8\xab\xd6\xcd" - "\xca\x13\x74\xd3\x03\x4d\xc9\xfb\xf8\x81\x23\x7d\xf3\xce\x03\x61" - "\xd5\xcf\x0f\x8e\x88\xef\xe7\x07\x6d\x9a\x67\xe0\x34\x6e\x2b\x78" - "\xe0\x82\xe4\xa4\xc4\x21\x82\x7d\xea\xfb\x15\x4f\xb4\x16\x97\xd1" - "\x8f\x8e\xd3\x83\x55\xb2\x3e\x93\x08\x5b\x97\xa7\x50\x93\xd4\x01" - "\x0f\x7e\x23\xf1\x44\x9e\x82\x08\x99\xc4\x8a\xe7\x5b\xf9\x5d\xad" - "\x47\x84\x91\xef\x10\xef\x09\xf0\x99\x65\xf0\xc2\xa5\x47\xe9\xc1" - "\xf7\xe2\xca\x43\x13\xf8\x14\x8c\x40\xad\x94\xc7\x07\xdb\x8c\x35" - "\xdd\x95\x78\x4e\xbe\xee\x3b\xc9\x62\xf8\x3e\x28\x9f\xb1\x07\xfb" - "\xdc\xbf\x64\x9c\xf8\xac\x0c\xe3\x74\x7e\x3d\x30\x69\xba\xc1\xbf" - "\xca\xd7\x72\x52\x51\xaf\x2f\xdf\x24\x97\x9f\x26\x39\xce\xb3\x36" - "\x18\x23\x07\x93\xea\x63\xe1\xa8\xf8\x1f\x93\x1a\x0c\x7f\x3c\xdc" - "\x37\x7d\x0f\x2c\x03\x9f\xf6\x04\x7c\x60\x47\xdc\x7b\x58\xc1\x98" - "\x6c\x39\x1f\x0c\xee\x73\xc5\xb3\xcc\x0f\x93\x1d\xe7\x5b\xf3\x4b" - "\xb5\x53\xde\xeb\xe7\xf0\xd6\x64\x69\x2f\x31\x8c\xf3\xe3\x38\x79" - "\x7d\xdc\xdc\x42\xee\xdd\xf3\xde\xd6\x94\x27\x95\xdc\x4f\x49\x58" - "\x23\x9c\xbc\x53\xfa\x53\xe9\x72\xff\x54\x24\x51\x0e\x26\x1f\x34" - "\xc6\xe8\x84\xf4\x36\x43\xee\x31\xaf\x65\xb8\x09\xeb\xac\x53\xcc" - "\x4a\x16\xa6\x4c\xd7\xd2\x62\xe7\x6b\x53\xa4\xfd\x67\xac\x97\xe2" - "\xbd\x39\xa1\x5c\xc2\xfa\xdf\xe4\x9d\xa2\xef\x75\xfa\x0c\xf4\x6f" - "\x88\xf7\xb6\x54\x0c\x84\x29\xab\x13\xd6\x2b\x82\x6b\xe5\xf9\xf6" - "\xbf\x02\xee\x54\x5d\xef\xe5\x25\xd8\x78\x53\x76\xba\x4f\x9c\xaf" - "\xfd\x53\xfa\x68\xff\x94\xde\xf6\xcf\x65\xb8\x53\x13\xd6\x12\xa7" - "\xca\xf6\x47\xcf\xd1\x7f\x53\x87\x42\x7f\x19\x74\x83\xcd\x3d\x75" - "\x81\x61\xab\xf3\xfa\x41\xdf\xb6\xfa\xd4\xde\xf5\x3f\x55\xae\x77" - "\xfd\x2f\x98\xcc\x56\xf7\x93\xdc\x5b\x8d\xaf\xbb\xda\x5a\x93\xac" - "\x2d\x53\xfb\x58\xff\x9b\xaa\xaf\xff\xe5\x39\xe2\xf5\xd9\x54\x7f" - "\x7c\x1f\x4e\x4d\xe8\xc3\x3c\x8a\xef\xc3\x29\x3b\xff\x6f\xc7\x35" - "\x06\x94\x9a\x9a\x6a\x4a\x4d\x31\xa5\xa4\xe2\x35\x9a\x48\xfd\x53" - "\xcd\xa9\xfd\xf0\xbb\x48\xbf\xf6\x37\xa5\x9a\xcc\xf8\xf5\xd3\xaf" - "\x17\x25\x3c\xf7\xe7\xb2\xf8\x99\xf5\x6b\xbf\x84\xe7\x8b\xbe\xe7" - "\x7d\x7f\xbd\x5e\xa3\x7e\x73\xc2\x73\xbf\xef\x79\x7f\xd1\x7f\xb3" - "\x3c\x9d\xf3\x1c\xef\x87\x76\xff\xdc\x85\x33\x8b\xe6\x14\xca\xfd" - "\xe2\x59\x8e\x99\xcf\x3c\x33\x6b\xfe\x7c\x47\xc9\x8b\x8e\x7b\xef" - "\x79\xe8\xd6\x3b\x1d\x6a\xdb\xb9\x68\xec\x75\x85\xe9\x34\x79\xd1" - "\x3c\x7e\x31\xf9\xe1\xfb\xf3\x1d\x79\xf7\xde\x13\xff\xd2\x00\x23" - "\xb7\x97\xcf\x07\x25\x46\xfe\x72\x2b\x07\x13\xad\x7e\x53\xea\x9e" - "\x36\xf6\xf3\x55\x6b\x1e\x8f\x2e\x3f\xc8\xfe\xa3\x5d\x6e\xe1\xbd" - "\x86\xf7\xf4\x1f\xba\x8e\x1b\x31\xb2\xae\x9c\x8a\x9f\xe6\xf3\x2b" - "\x0f\xdd\x23\xf6\x07\xc9\xf1\x00\x99\x8e\xd2\x13\xaf\x36\xc1\x2a" - "\xe2\x67\x9f\x3f\x42\x0e\x37\x59\x50\xfe\x16\xbc\x4b\x11\x77\x69" - "\x48\x0b\xe9\xbe\xd0\x8f\xdc\x23\xd3\xf6\x97\x1b\xf9\xac\xc7\xe8" - "\xa1\xaf\xc5\x7e\x21\x9f\xf9\x7c\x90\xca\xf7\xd0\xa7\xc2\xf4\x0b" - "\x17\xeb\x86\x9a\x41\x64\xe6\xbd\xd0\xb7\x07\x91\xe5\xed\xc1\x1c" - "\x0b\xe4\xa1\x9d\xc6\x5e\x68\x25\x9e\xfd\xf4\xc4\x7a\xae\x9b\xf3" - "\x6a\xa6\x5f\x6c\xe5\xfc\x9b\xe3\xf3\x1f\xe9\xdd\x8b\x7d\x68\xa7" - "\x09\xf9\xa6\x7e\x49\x56\x6b\x54\x7c\x1b\x4e\x7f\xd7\x7f\xf3\x44" - "\x4a\xf1\xa1\x2b\x0e\x46\xca\x49\xf9\xfc\x3c\x7c\xdd\xe2\xa8\x88" - "\xb0\x7f\xfa\xe4\x76\xb7\x58\xf7\x02\x99\x21\xd3\x29\xde\x79\xec" - "\xa3\xf0\x70\x46\xed\x2c\x32\xa3\xfd\x43\x8f\xd3\xb4\x31\x8e\x29" - "\x44\xee\xc9\x64\xfe\x77\x17\xfb\x1b\xee\x2e\x5b\xfb\x27\x32\xff" - "\xb6\xab\xdc\xd4\x25\xec\x54\x5a\x22\x02\x82\xe3\x03\x85\x44\x98" - "\x7d\xfc\x0f\xce\x88\x72\x9e\xb9\x9d\x6e\x3b\xb5\x94\x84\x68\xd9" - "\x11\x11\xae\xf8\x93\x3a\x1b\xd0\xdc\x1e\x62\xff\x45\xcb\xb2\xc9" - "\x94\x7a\x2c\x9f\x4c\xcd\xce\x6a\xf2\x4d\x0f\x51\xe9\x11\x11\x38" - "\x38\xe3\x6b\x6a\x71\xee\xa2\x82\x56\x32\x1d\x6c\xfb\x1b\xc9\x18" - "\x37\xab\xbe\xb1\x95\x9d\x21\xfb\xb2\x39\x9c\x76\x86\x96\x2c\xa3" - "\x01\x4b\xfe\x4c\x56\x5f\xa0\x15\xf5\x9c\xa0\xc7\x0f\x53\x0a\xe0" - "\x99\x96\xfe\x8d\xec\x4b\x1f\x63\x3f\xdf\x5c\xaa\x29\x23\xbb\x70" - "\x67\x65\x74\xb9\xb3\x6c\x5d\x22\x6b\x50\xa7\x3b\x2b\xb3\xa5\x18" - "\xf9\xdb\xf6\xd1\xc0\x56\xca\xdc\x7f\xbc\xd5\x54\x7d\x9a\x86\x72" - "\x9b\x8e\xa1\x6d\x35\xa7\x91\x7f\xd5\x7e\xaf\x86\xb2\xb1\x65\x22" - "\x69\xfb\x5b\x7d\xf9\x61\xd2\x00\xab\xba\x8b\x86\xd6\x74\x91\x5d" - "\xab\xdc\xef\xe5\x72\xed\xf4\xc8\x1d\xbe\x83\x44\xa5\xcb\x44\xb4" - "\x7b\xd5\x87\x7e\xe8\xc4\xfe\x1f\x3c\xdd\x60\xf6\x1d\x6c\xa7\xe6" - "\x50\x17\xb5\xd0\x5f\xc9\xe7\xfa\x87\xf7\xb7\x4f\x37\xf4\xd3\x20" - "\x04\xde\x25\x6d\xa8\x4b\xf1\x8e\xbb\x99\xcf\x2a\x97\xd3\xba\x32" - "\xca\x28\x5e\x42\xfd\x8f\x23\x5d\xcd\xed\xeb\x03\xbe\xc8\x3f\xbc" - "\x4b\xa4\x3f\xee\x13\xeb\xcb\x9a\x29\xb5\x25\x54\xcd\x7e\x9f\xa6" - "\x68\xfa\x37\x36\x5f\xe8\x10\xf9\x8a\xff\xee\xd5\x2c\x81\xf0\x6a" - "\x8d\x2c\xef\x9d\x3d\x64\xf2\x99\xcf\x92\x2f\x3f\x44\x5f\xa0\x6e" - "\xb1\xea\x9b\xa1\xd0\x5b\xb9\x2d\xa1\x30\x9f\x77\xca\x16\x1d\xf6" - "\xf4\x75\xf3\x68\xc4\xe6\xd3\x34\x7c\xd3\x69\xca\x12\x9d\x59\x26" - "\xf6\xb1\xe5\xb3\xa9\x9b\x70\xcd\x68\x23\x0b\xda\xae\xfc\xb1\xd3" - "\x74\x5f\xdb\xee\x2c\xaa\xed\xea\xf5\xb5\xed\xea\xe8\xf5\xb5\x05" - "\x4f\xed\x62\x7f\x5b\x3f\x4d\x1b\x6f\x3d\x48\xfd\x21\x27\x4e\xe6" - "\xef\x75\x27\xc9\xbc\xe2\x24\xd1\xcd\xe5\x26\x72\xcc\xe6\x73\x16" - "\x8f\x5e\xe7\x43\xdf\xf0\xfd\x51\x7a\xe4\x08\xae\x19\xf8\xa5\x40" - "\x26\xfe\xc8\xed\x6c\xd3\xf9\x18\x69\x26\xa4\xfd\x01\xd7\x54\x5c" - "\xf7\xb9\x6b\x44\x50\x54\x7c\x94\xd3\x61\xa2\x74\xe6\x67\xe5\xdf" - "\xfb\x51\x4e\xa7\xe7\x91\x3d\x7e\x7a\x7e\xb8\xc1\xd7\x4a\xc7\x3f" - "\xb4\xeb\x8b\xa3\x27\x38\x0e\x55\x50\xe2\xd5\xed\x4c\xe1\x98\x54" - "\x7a\x3a\xe3\x70\x15\xd7\x7b\x94\x1e\xe5\x7a\xac\xf8\x41\x4e\x1f" - "\xa9\x32\xca\x76\x74\x3b\x51\xe7\xa3\x97\x21\x5d\x18\xe9\x68\xb7" - "\x99\xdf\x7d\x74\xf4\x84\x49\xe5\xc9\x32\x01\x66\x58\x87\x0f\xd9" - "\x7f\x68\x1a\xcb\x78\x87\xc9\x2a\x1a\x67\x8c\xa6\x9a\x37\xc5\xc1" - "\x4d\x6f\x8a\x26\x25\x7b\x8f\xe6\xfb\xa9\xc8\xc9\x38\x62\x1c\x6f" - "\x5a\x8d\x77\x8d\x18\x85\x98\x2e\x4d\x85\xec\x4f\xf6\x28\xec\xbf" - "\x8b\xe3\xda\x20\x3c\x79\x7c\xc6\xd7\xfa\x7e\xd9\x81\x7e\xd0\x01" - "\xf9\x2d\x6d\xed\xf4\xdb\xae\x40\x3f\xf7\xbf\x91\xc9\x17\x39\x4a" - "\xa3\x32\xc9\xce\xf6\x60\xed\x9b\xc2\x8f\x6b\x80\xfd\x3b\xc1\x2f" - "\x57\x1d\xa7\x47\xff\xf0\xe3\x4c\xca\xfc\x0f\x17\xe9\xfa\xe9\xd1" - "\xbf\xc5\xe8\xa7\x59\xcd\xfe\x86\x18\xdd\xf4\xc4\x65\xe7\xea\xa6" - "\xc7\x2f\x51\xba\x09\xb2\x2f\x75\x51\xd4\xaf\xd2\x1f\x8b\x26\xa4" - "\xeb\x7e\x22\x8f\x7d\x99\x90\x1e\xd6\xd3\x9b\x13\xd2\x83\x7a\xfa" - "\x00\x43\xf7\xb5\x30\x1e\x8b\x58\xf7\xe5\x7f\xcb\xba\xaf\x65\x86" - "\xae\xfb\xa4\xfe\xc9\xff\xb3\xd8\x0a\x5d\xb4\x90\xf5\x4d\xfe\x7b" - "\x8c\xbf\xd8\x4f\x06\xee\x69\x48\x7b\x81\xd3\xd6\xff\x95\xcc\xf8" - "\x19\x7a\xef\x0b\xd6\x7b\xac\xf3\x58\xf7\x6d\x1c\x2c\x5a\x37\xbe" - "\x29\x0e\xd7\xc8\xd8\x3a\xbf\xec\xd1\x7f\xaf\x20\x6d\x35\xd2\x5e" - "\xc1\x7b\xd6\x83\x4c\x93\xe6\xfc\x06\x9e\x23\xb7\x81\x9f\x4b\x35" - "\x53\x36\xad\x45\x7f\xf3\x79\xc3\x95\xa0\xaf\x35\x85\x8a\x7d\x25" - "\x7c\x86\x35\xca\x3e\x69\x6d\x2d\x25\x6d\x2c\x77\x83\x57\x40\xce" - "\x7c\xae\xaf\xa9\x2c\x24\x8e\xf3\xb9\x3b\xc6\xa1\x60\xf1\x03\x1c" - "\x8f\x28\xa5\xc9\x49\xc4\x7e\xe1\xac\xb3\x81\x8b\x79\x3d\x70\x52" - "\x31\x54\xf2\x0b\xfd\x54\xb7\x53\xf5\xf5\x13\xeb\x39\xde\xd9\x51" - "\xfa\xe5\x0e\xcc\xf7\xc2\xdc\x36\x6b\xb4\x9c\xf8\x1c\x0c\x64\x8c" - "\xcf\x2f\x3a\x37\x9a\x34\xe7\x7a\xe3\x2c\x0c\xc7\xbe\x43\x1e\x5f" - "\x6b\x98\x18\x67\x3f\xfd\x32\xd4\x5c\xda\xc0\xe5\xab\x99\x36\xc2" - "\xe3\x36\x60\xa4\x48\x18\x26\x39\x6f\x74\xfa\x29\x5f\xad\x9d\xa7" - "\x7f\xe8\x6f\x9e\x1e\x24\xd6\xfb\xbe\x00\x60\x94\x1e\x55\x30\x00" - "\x4b\x60\x0c\x88\x7b\xa7\xc3\x1f\xb0\x4c\x7c\x0b\xf8\x85\xdc\x5f" - "\x7c\x2e\x92\xf7\xdb\x40\x97\x0c\xf6\x95\x57\xb6\xe8\x2f\x4f\xd4" - "\xfe\x95\x48\x3f\xdb\x09\x7e\xfb\x65\x3b\x9f\x5b\xe2\xf3\x9c\xe7" - "\x3b\xcb\x09\x1a\x0d\x37\xce\x73\x6a\x8b\xfe\x67\xcf\x72\x02\xb6" - "\x7d\xb3\x49\xec\x02\xfe\xed\x7c\x9e\x13\xf8\x4f\x62\x3e\xd4\xdb" - "\x14\x7c\xe3\x71\x49\xf3\xd1\x9c\x86\xb9\xe3\x01\xa3\xff\xb9\xbd" - "\xdc\x16\xbc\xb3\x2b\x1b\x51\x1c\xf2\xd3\x63\x41\x7e\x8f\x34\x33" - "\xe7\x1f\x05\x3d\xe6\xc3\x18\xf6\xc1\xd1\xa8\x69\xdd\x12\x32\x2b" - "\x9d\xf6\x44\x1a\x97\x57\x3a\xed\x71\x6f\xaf\x4e\x7b\xfc\x63\xa5" - "\xd3\x14\x8d\x95\x4e\x7b\xfc\x5d\xa5\xd3\x1e\xdf\x22\xf7\xc5\xa0" - "\xd3\xf8\x1d\xeb\x35\x43\xa7\x6d\x1a\x2c\x0e\xb0\xee\xe8\xf4\x3c" - "\xbe\xde\xd0\x6d\x6b\x90\xc6\xba\x83\x71\x54\x7a\x2a\x3f\x20\xfe" - "\xdf\x2c\x52\x7e\x07\x7c\xef\xe4\xf3\x0b\x01\xfd\x9e\xc7\x93\x14" - "\xa5\xe3\x1e\x6f\xeb\xd5\x71\x8f\x3b\x7b\xcb\xb2\x8e\x7b\xfc\x3b" - "\xa5\xe3\x54\x7a\xed\xe3\xac\xe3\xf2\x03\x4c\x03\x1d\xbe\x89\xd7" - "\xf0\xf4\xfc\xa0\xe3\xa3\xc1\x58\x1d\x17\x2f\x5f\x4f\x8c\x31\x74" - "\x1c\xeb\x36\x3c\x4f\xf2\x53\xba\x9c\x67\xb3\x9c\x55\x81\xe6\x86" - "\xdc\x71\x1f\x70\x9b\x39\xae\x19\xd3\x6d\xdc\x09\xea\xaf\x9f\x1d" - "\xd2\xdb\xfd\x44\x85\xe1\xfb\xe8\xa7\xc7\xd7\x27\xb3\xa3\x7b\x63" - "\x0f\xd2\xd5\x7c\x76\xde\x57\x7e\x94\x7c\xd5\xa2\xbc\x25\x72\x84" - "\x0a\x4a\xa0\x2b\x52\x9f\xff\x92\xfb\x16\xf3\x8e\x9f\xf1\x95\x75" - "\x0f\xc6\xd2\xe6\x82\x10\x5d\x84\xb9\xfa\x97\xeb\x4c\x78\xe7\x8a" - "\x7b\x27\xd7\x18\x6e\x9e\xc7\x71\xeb\x9e\xd8\xd5\xd7\x7c\xff\xc2" - "\xea\x9b\x3e\xb6\xef\xfa\xa6\x3f\x26\xeb\x83\x4d\x85\x39\xd0\x25" - "\x27\x69\xba\x9c\x97\xc8\xf8\x36\x2b\x92\xc2\xaa\xd4\xdf\xf7\xeb" - "\xe3\xfd\xbb\xdf\x53\xfe\xdf\xbe\xa7\xfc\x37\xac\x8b\xd0\x3e\x6b" - "\xd4\x13\x0f\x67\x60\xc4\xc8\x77\x1c\xf9\x9e\xbc\x44\x5f\x8b\xf9" - "\xd2\x3d\x4c\xce\xd1\xec\x06\x4c\xe6\xbf\xb5\xc8\x27\x63\x86\x40" - "\x57\x8e\x5f\x4c\x1c\xaf\x25\xb6\xec\xe4\x5e\x1a\x3f\x49\xe7\x59" - "\xf7\xcb\xf0\x55\x93\x8c\xa1\xd9\x08\x9b\x14\x63\x1c\xc7\xed\xd3" - "\xd7\x3f\x9e\xac\x87\xde\xac\x8b\xf1\x8b\x6d\x87\x9e\xbb\x9a\xe3" - "\x1a\xb0\x7d\xb9\x4e\xcd\x37\x2f\x87\x7e\x1e\xc4\xe7\x61\xf8\x6c" - "\x4c\x41\x34\xcf\xd4\x28\xe3\x8b\x3d\xe9\x37\xca\xf6\xb5\xce\xc2" - "\xf5\xea\x75\xb2\x8f\x69\xa8\xd3\xf3\x54\xa6\x51\x86\x61\xb3\x9f" - "\x22\xc6\xe5\xab\xe5\x99\xd2\x48\x3b\xeb\xc2\xcb\x61\x8b\x0e\x52" - "\xf5\xcc\x20\x55\xcf\x53\x13\xfd\x34\xdd\x76\xbe\xb3\x19\x7d\xb7" - "\xef\xa9\x95\x17\xde\x3e\xd2\xdb\xf7\x94\xf7\x7b\xda\x77\xbe\x7a" - "\x23\x17\x5e\xaf\x4d\xaf\xb7\x20\xe7\xc2\xe9\x5a\x50\xf4\xc3\xe9" - "\x9a\xad\xd3\xb5\xa0\xee\x7b\xe8\x9a\xac\x9e\xc3\x3f\xbc\x1e\x87" - "\x5e\xcf\x0c\x4b\xb2\x7a\x48\xfe\xf5\x79\x6e\xca\x62\xc4\xb0\xe4" - "\x78\xae\x2a\xbe\xdc\x8c\xbc\xd8\x58\xbd\x2a\xce\xeb\x8c\x42\x23" - "\x56\xaf\x1e\x4b\x16\xba\x7a\xc6\xf2\x82\x3a\x1e\xdf\x85\xe6\xa7" - "\x19\x2b\x39\x3e\xea\xf8\x65\xea\x4c\xb6\x5e\xa6\xfa\x7c\x31\x82" - "\x39\xa6\x95\x10\xf9\xd4\x58\x2d\xf7\xdb\xa1\xd7\x67\xfc\x91\xfd" - "\xef\xd5\x7e\xe1\x8c\x23\x4a\xee\x67\x60\x8e\x38\x23\xab\x6f\x18" - "\xfb\x76\xd5\x97\x65\xf7\xeb\xcb\xa7\xbe\xd3\x33\x73\xa8\x9f\xe6" - "\x66\x48\x3f\xfa\xf4\xcf\x0f\x60\xfe\xa0\xc7\xd5\x7b\xe6\xed\x98" - "\x18\x82\x18\x0b\x9f\xfe\x9d\xee\xfb\x0f\x1a\x94\x83\x96\x33\xa7" - "\x19\x34\x30\xd2\x91\xe6\x34\x68\x00\x9b\x26\xc3\x57\x17\xe1\xb3" - "\x39\x21\x75\x0e\x7b\xe6\x1a\x51\xb9\xaf\x4e\xc1\x9e\xd9\xaa\xec" - "\x16\xd4\xd7\x9d\x6f\x96\x73\xa5\x32\x9e\x2b\x3d\x5d\x1c\x4c\xdb" - "\x57\x67\xe0\x21\xe6\xdb\x4d\x7c\xde\x7b\x54\x44\xc5\xe9\x62\x9b" - "\x80\xcf\xc6\xc9\xf7\xf3\xb3\x4c\x98\x5b\x82\x26\x33\xbf\x15\x1d" - "\x1c\x2f\x46\xc2\xce\x00\xde\xd5\x0c\xd7\x8f\x6b\x70\x69\x16\xc7" - "\xba\xd0\xdb\x33\xf3\x2f\xda\xaa\xcf\x0f\x68\x9d\x76\x93\x81\xef" - "\x66\x79\x8e\xf5\x69\xb4\xbf\x40\xda\x6d\x0a\x1f\xbb\x89\x7d\xf8" - "\xb5\xf4\x7d\xbb\xc4\x52\x3b\xed\x99\x17\x90\x73\x25\xae\x73\x14" - "\xc7\x83\xe3\xb9\x11\xec\x11\x94\x9b\xd6\x43\x37\xc0\x15\x9d\x06" - "\xdd\x9e\x26\x35\x16\xab\x36\x86\x96\xda\x4d\x8d\x41\x79\xc6\x8e" - "\x86\x3b\xdc\xdf\xa9\x58\xcf\x4f\xaf\x37\x68\xd7\x83\x13\xf0\xe1" - "\x3c\xca\xa7\xe9\xe9\x5d\x06\x4e\x52\x5e\xd3\xf9\xcc\xee\xcc\x7a" - "\x3e\x2b\xa4\xe8\xdf\x98\x81\x3c\x87\xcf\xa5\xff\xd3\x81\x18\xfa" - "\xa7\x32\xbf\x31\xfd\x79\x7d\x03\x74\xb9\x04\xb4\xb4\xa8\x33\x0e" - "\x6c\xc3\x3c\xc3\x67\xe9\x33\x18\x4f\xad\xd2\xa0\x79\xbe\x59\xad" - "\x8d\x3d\x33\x29\xa6\x1f\xd0\x5e\x3b\xdb\x67\x29\x46\xfb\xb9\x0c" - "\xd3\x80\xe3\x3b\x72\xdd\xc0\xe7\xe2\x4e\xcf\x33\x85\x89\x6d\x5a" - "\xa1\xce\x8f\x90\xf2\x27\x79\x66\x65\x8f\x7c\x0c\x16\xc1\x12\x87" - "\x08\xab\xb3\xc8\xcf\x8c\xd8\x53\x16\x34\xf7\x25\xf7\xcc\x83\x32" - "\x56\xa4\x49\xae\x25\xc0\xce\x9a\xb5\x58\x00\x37\xd5\xf7\xb3\x7e" - "\xa1\xd2\x0a\x37\xe1\x0a\x1e\x7b\xe6\x8c\x40\xdd\x41\xb7\x8c\xab" - "\x82\xb6\xcd\xaa\x62\x9e\x33\xf8\x8c\xd7\x1e\x95\x9f\x78\xe1\x63" - "\xac\x47\x0c\x9a\x03\xff\xf4\x4e\x4f\xe1\x70\x03\x7f\x23\x3f\xf7" - "\x1d\xe7\xe1\x7d\x9a\x26\x47\x58\xea\x57\x75\x4e\xa8\x30\xcf\x90" - "\x5b\xae\x83\xfb\x99\xf5\x0b\xd3\x43\xd1\xa2\xb0\x38\x1e\x96\xdd" - "\xa4\xe2\x53\x32\xcf\x43\x1e\x97\x84\xfb\x21\x4f\x55\x2f\x8c\x42" - "\x9b\x7a\xd7\x83\x27\xfb\xf6\x4b\xff\x3b\xd5\x1f\x85\x51\x6e\x57" - "\x2f\xbe\x2c\x7f\x85\x3d\xfd\xcf\xef\x42\x6e\x3b\xc7\xb3\x95\x7a" - "\xa5\x64\x18\xe3\x1b\xe4\x38\xb1\x92\xd7\x01\x7f\x3c\xe3\xce\x79" - "\x8c\x3e\xeb\xe5\xc5\x59\x43\x63\xe1\x08\xb7\xdd\x64\xe8\x27\xa5" - "\x3b\x82\x98\xa7\x92\x43\xed\xb1\xcc\x9a\x18\x83\xb3\xd7\xc0\xa7" - "\x57\x27\xcc\x72\x26\xf2\x24\xd7\xcd\xf1\xf7\x74\xd8\xac\x4b\x6c" - "\x47\x69\xd6\x34\x85\xd7\x33\x07\xb9\x1f\xfb\x1a\xd3\x8c\x38\x9f" - "\xaf\x2b\x1d\x82\x7e\x9e\xfd\xe7\xd7\xd5\xd9\xa1\x90\x8a\xe5\x38" - "\xeb\x2f\xc2\xb4\x85\x69\xc5\x6b\xe8\x41\x19\xa3\x43\x9e\x2b\x9f" - "\x25\xcf\x98\x0f\x2c\xde\x22\xe3\xc7\xea\xfe\x80\xc1\xa6\xe2\x88" - "\xdc\x6b\x70\x97\xf0\x39\xdb\x08\xcf\xef\xa4\xbf\x5b\x63\x49\x84" - "\x1e\x0e\xb3\x4c\xcc\xce\xe2\xf3\xf3\x21\x29\x4b\xb3\x47\x1b\x67" - "\xe6\x39\xa6\xa5\xe8\xcc\x27\xe8\xa1\x54\xb6\x8b\x1c\x6e\x8e\x77" - "\xf0\x2c\x9f\x1f\x22\xbd\x7f\x69\xad\x49\x1c\x52\xf2\x3f\x7b\x99" - "\x8c\x23\x28\xf7\xae\x8e\x42\x27\xa4\xfe\xe3\x28\xcd\x7e\x43\xad" - "\xf5\x18\x3a\xea\xd9\x01\xbc\x7f\xe5\xd7\x61\xa0\x2e\x8c\x7f\x33" - "\xcd\xe7\xea\x92\xd9\xcb\x8c\xf9\x0a\x9f\xb9\x53\x7b\x61\xbd\xf0" - "\xfc\x34\xbb\x94\xaf\xbd\x7d\xf0\x7b\x86\xd5\x7e\xae\x5e\x78\x96" - "\x0c\xd9\x2b\xbe\x86\xcf\x6d\xcf\x6a\xe2\xfa\xfb\x1a\x2f\x84\xfb" - "\x31\xee\x27\xcb\x31\x47\xf2\xbe\x49\xbe\xb7\xf6\x6c\xa1\xd1\x06" - "\x83\x26\xaa\x0d\xcf\xee\xeb\x48\xdf\x6d\x89\x69\xfb\x3e\x49\x8b" - "\xde\xf7\x67\x62\x68\xc3\xcf\x21\x35\xae\x3d\xbb\x07\xfc\x51\xaf" - "\x78\x4d\xa5\x41\x76\xb6\x89\xa5\xd0\x05\x12\xc7\x39\x64\xc8\x3a" - "\xf2\xc2\xfe\xfb\x76\xa8\xda\xe3\x7a\x16\xed\x7f\x56\x8f\x9b\xf0" - "\x6c\x05\xe3\x92\xb4\x9d\x71\x38\x3a\x8b\xd8\xbe\x50\x71\x14\x9c" - "\x2f\x30\xbe\x8e\xeb\xb9\x8f\x9d\x77\x48\x1d\xce\x31\x15\xba\x9d" - "\xfd\x42\xdd\x59\xd4\xd1\xed\x84\x5e\xc8\x32\x75\x7a\x9c\xd0\xff" - "\xa7\xc2\xaa\x4e\xe7\x0c\x03\x57\xc6\x0d\x76\xb3\xa5\x53\xcc\x49" - "\x4e\x5f\xae\x57\xc6\x79\x72\xf6\xc7\xcf\x82\xdf\x45\x3f\x24\x0e" - "\x13\xec\xf2\x40\xb0\xb2\x61\xbd\xb6\x50\x1c\xe0\x78\x62\x98\x7b" - "\x04\xd6\x81\x77\x07\x2e\xf7\xc2\x16\x7f\xd2\x54\xb0\x98\x72\x31" - "\x47\x26\x71\x56\xe4\x6c\xd6\x70\x5d\x28\x46\x73\xbc\x6e\x3c\x67" - "\xeb\xcf\x23\xf8\xb9\x63\xa1\x98\xde\xe9\x99\x63\x33\xf6\x04\x55" - "\x2c\x9c\x39\x8e\x9e\xf8\x41\xa9\x4f\xf0\xf9\x21\x8e\x33\xa5\x61" - "\xee\x13\xe0\x7a\x0b\x78\xfe\x8a\xfa\x90\x0f\xf2\x3f\x43\xb6\x33" - "\x98\x7a\xd3\x20\xfc\xb2\xfa\xd8\x3b\x0d\x30\x5e\x1d\x69\x0d\xeb" - "\x0d\x5c\x07\x86\x72\x4d\x3f\x10\xb7\x9d\x06\x6e\x48\x3f\xb0\x4e" - "\xa5\x47\x38\xde\x21\xfb\x36\xe2\xfd\x41\x03\x57\x03\x07\xae\x8f" - "\xcf\x6b\x8a\xf4\xdd\x76\x8e\x35\xc3\xf5\x05\x97\x72\x7c\xdf\x39" - "\x61\x03\xdf\x1f\xca\xc7\x65\x35\x42\xf0\xd8\xc9\xba\xd7\x31\x84" - "\xa8\x25\xc4\xfa\xe4\xb9\x49\x8d\x35\x21\x5e\xdf\x1e\x82\x3a\xae" - "\xe8\x10\x4e\xd2\xba\x9d\x49\xfb\x97\xcb\x20\x7f\x85\xd4\x0d\xab" - "\x76\x5f\xa1\x89\x89\xd0\x11\x28\xd7\x3d\x91\xd7\x96\x20\xb3\xcf" - "\xed\x69\x2a\x0d\xf0\x19\x4b\xe8\x9b\xe7\xf6\x20\x8f\x9d\x6d\x2c" - "\xcc\xaf\x58\x67\xa5\xb2\x5e\xf2\x2e\x1c\xcd\x30\x3e\x36\xbb\xc8" - "\xdc\xe4\xfa\x61\xdf\x01\x00\xdc\x76\x25\x37\xcf\xb5\x1b\x76\x09" - "\xee\xc3\xf1\xfb\xdd\xcf\xf9\x13\xe7\x66\x4f\xbf\xf8\x62\x49\xc1" - "\xbc\x59\x7c\xc9\xba\x6e\xc1\x8d\xe9\xb1\x73\x70\xd6\xc1\x2a\x3e" - "\xc2\xf3\x36\x5e\xef\x7a\x7d\x90\xb1\x7f\xfb\x7c\xcf\xf9\x2f\xdd" - "\x4f\xfc\x6e\x9e\x4b\xb0\xcd\x8d\x77\x45\xbf\x2b\x5d\x26\x6d\xa0" - "\x2f\x2d\x64\x4a\xac\x6f\xf6\xcc\x92\x99\x45\x77\xf2\x4e\x4d\x7a" - "\xb2\x7a\xca\x13\xea\x69\xe8\xa9\x47\xe9\xc0\x90\x89\xf3\x55\x76" - "\xef\x12\x69\x6d\x79\xea\x8c\xee\xf3\x47\x8c\xb5\x94\x3e\xfc\xeb" - "\xf2\xa3\xab\xbe\x60\x7a\x73\x4c\x29\xd3\x47\x4b\x5a\x4d\x6c\xcb" - "\x94\xe1\x9e\xe7\xb4\x72\x6d\x46\x8f\x53\xb4\xff\x74\x2b\xc6\x98" - "\xa2\x6c\x51\xb9\x9b\xd7\x75\xb3\xfa\x9a\xc7\xc6\xfa\x26\xb0\x2f" - "\x5b\x1b\x15\x4d\xec\xd3\x8f\xa0\xe2\xf3\x56\xa5\x63\x8a\x36\x35" - "\xd9\x89\xf1\xf8\xf5\x51\x2a\x7a\xdb\x6c\xc7\x38\x32\x84\xfe\x05" - "\xf7\x9b\xb8\x2c\xbf\x8b\xeb\xe7\xab\x4e\xd4\x99\xc1\x85\xe0\xc6" - "\x14\xa1\xfe\xc8\xac\xdf\xa4\xe2\x67\x12\x29\x72\x97\x2d\x15\x14" - "\xee\x7f\x91\x99\xac\x03\x33\x2c\x57\xff\x68\xa8\xfd\xee\xbb\xc6" - "\xe4\xb8\xcb\x4a\x21\xbd\x91\xb0\x55\xc4\xc6\xd5\xfa\x2a\xfc\xc8" - "\x8d\xe5\x24\xfd\x2c\x2a\xbf\x0a\x27\xc3\x75\x8d\x47\x14\xf3\x99" - "\x66\x2d\xbd\xdb\xe1\x5e\x40\xa6\x0f\xba\xfc\x26\x8e\x1d\xcf\x36" - "\x16\x7f\x5b\xe0\x28\xbd\x70\xe3\x17\x48\x43\xfb\x5d\xa2\xa2\xdb" - "\xa1\x6c\x93\x17\xe6\x68\xab\xba\x1d\xbd\xf0\xcd\xc4\xf0\xdd\x6f" - "\x93\xa9\xbe\x2c\x60\xf2\x99\xef\x22\x9f\x23\x44\x5f\xe0\x3e\x29" - "\x2d\x51\x27\xdb\x3b\x0c\xa3\xd6\xa3\x55\xb8\xbf\x23\x93\x7e\x2e" - "\xd1\x74\x92\x5e\xd8\xb2\xab\x8f\x72\x7c\x0e\xb8\x23\xbd\xe1\xd1" - "\x4e\xcf\x0b\xe8\xff\x7b\xcc\xfa\x78\x07\xbd\xfc\x02\xf8\xbf\x48" - "\xea\x7f\xbc\x7f\xa4\x43\xc6\x16\x9e\x4b\x46\x9e\xe4\x63\x1e\xaf" - "\xcd\x0a\x2f\xf7\xab\x38\xfb\x4d\x80\xcf\x3c\xf4\xe1\x1f\xd1\xdf" - "\xe7\xba\x95\xf7\xa8\xfa\x0d\x0c\x53\x86\xfb\x8c\xe8\x8e\x7a\x28" - "\x13\xec\x6e\x8a\x62\x4e\x1d\x39\x2b\xf2\x9b\xdb\x4f\xcb\x58\x97" - "\xac\x3f\xde\x9f\xfd\x7b\x93\x2f\x7c\xca\xeb\x5b\xa9\x51\x0b\x6c" - "\x0f\x5f\xcd\x29\xaf\x8a\x89\x19\xa5\x66\xfa\x2b\x35\xbb\xfe\x77" - "\xb9\xaf\xfc\xaf\x48\x17\xe5\x4c\xe7\xee\xb3\x62\x9a\xcf\xfc\xbf" - "\x88\xbf\x7d\xc2\xba\x10\x74\x77\x9c\xa4\xb9\xff\xb6\x1f\x70\x3e" - "\xf8\x2f\xc0\x92\xb1\xb4\xc6\xd2\x17\xb8\x47\x9b\x0e\x1b\x7a\x32" - "\x69\x0c\x92\x14\xef\x1a\xab\xeb\x49\x93\x06\x9d\xcb\x31\xcf\xa0" - "\x6b\x47\x73\xbb\xf0\x9c\xcd\xcf\xb8\x8e\xe0\xab\x75\xb9\x77\x93" - "\x35\xf2\x24\xeb\xe0\x7c\xd6\xaf\x48\x9f\x56\x7b\x56\xea\xe4\x3c" - "\xfd\x79\x92\xfe\x3c\x51\x7f\x1e\xaf\x3f\xe7\xea\xcf\x63\xf8\x59" - "\xe9\xee\x17\x9d\x3d\xe3\x8a\xa9\xff\x21\x3c\xbb\x8c\xbe\x00\x3e" - "\x03\xac\xae\x65\x72\x0c\xd0\xf1\x18\xad\xe3\x95\xad\x3f\x1b\xf8" - "\x5c\x65\x8d\x2c\xfb\x9f\xc2\x27\x1c\x8f\x4f\xb1\x25\x06\x1f\xb2" - "\xba\x72\x7f\x08\x3e\x36\x2b\xc7\xe7\xff\x6f\xe0\xc3\xb8\x70\x1a" - "\xea\xaf\x48\xc0\xa7\xda\xc0\x27\x29\xbf\x2d\x14\x01\x1e\xff\xe6" - "\x5f\x21\xe3\xfd\xf6\xe7\xb1\xad\xb6\xcb\x88\x5f\x57\x7c\xf8\x7c" - "\xf1\xeb\x20\x0b\x76\xe4\x41\xfb\x8b\xeb\xf5\x71\x7e\xaf\xb2\x05" - "\x5f\xca\x30\x7c\x8a\xd0\xd6\x1d\xeb\x54\x5b\x77\xae\xe4\x18\x6e" - "\x8b\xe9\x4a\xb7\x4b\x04\x30\x37\xfb\x8a\xe7\x0f\xb1\x70\x8b\x4a" - "\xe6\xcf\x7f\xe1\x4e\x47\xd1\xcc\xb9\xb3\x1c\xd7\x15\x3a\xe6\x3b" - "\xe7\xcc\x2e\x99\x15\xbf\xcf\x6e\xd3\xbf\x97\x22\xcf\x0f\xb0\xbd" - "\x2d\xe7\x5b\xe0\x7f\xd6\xdb\xca\xe7\xf3\xa5\x66\xe1\x79\x29\x87" - "\x75\xfd\xe6\xd7\xc8\xcc\x67\x8a\x81\x4f\x8d\xa1\xe3\x8d\x39\x12" - "\xeb\x78\xa4\xc3\xfe\x9b\x3b\x3a\x26\x9d\xf3\x1e\x30\xd2\x18\xbe" - "\xae\x9b\xfa\x1f\xa5\x97\xe6\x70\x9d\x49\x69\x78\x56\xd4\x61\x7c" - "\xe5\xef\x0d\x98\xa0\x53\x04\xc7\x63\xe2\x73\x79\x28\x27\x8e\xd1" - "\xbc\x2b\x58\xf7\xf2\x37\x79\x94\x5d\x2f\x80\xe3\xbc\x91\x28\x53" - "\x8f\x34\xf3\x5a\xe4\xc5\x5c\x81\xe3\x28\x71\xde\x09\x1c\x1f\x01" - "\xe9\x16\x3d\xce\x14\xa7\x3d\xc6\xf1\x0b\x90\x66\x8b\x49\x7b\x81" - "\x63\xa5\x23\xcd\xa1\xc3\x5b\xc6\x74\xc6\x73\xae\xbe\x96\xc2\x79" - "\x5e\xd5\xeb\x2d\x8f\xc5\x99\x3f\x9e\x71\xeb\xcd\xd9\x8e\x69\x0f" - "\xff\x64\xec\x5d\xcf\xbc\x38\x77\x76\x3a\x49\xb2\x67\x61\xb8\xcc" - "\xbe\xd5\x75\xe3\x9d\x8e\xe2\x59\xb3\xe6\x39\x16\xcd\x9a\x5b\xe2" - "\x98\xb9\x68\xe6\xe2\x74\x9a\xfd\xe2\xbc\x67\xf8\xf4\x3d\x77\xcb" - "\xfc\x82\x67\x66\x3f\xcb\xce\x10\x2a\x77\x7a\xdc\x38\x3e\x8d\x75" - "\x9b\x1e\xaf\xe2\xc0\x3a\xb6\x35\xd2\xf6\xd6\xe1\x9e\xe3\x38\xd9" - "\x71\x6d\xc2\x6f\x2f\x7e\x0d\xf8\x1d\xc6\xef\xd0\x71\x72\x4d\xc7" - "\x75\x4f\xa7\x67\xfe\x18\xc3\x9e\xe8\xe5\xa1\xf9\x79\x06\x0f\x61" - "\xfc\xdf\xa3\xc6\xb7\xf9\xe5\x2d\x11\x29\x3f\x3d\x3c\xb5\xee\x6c" - "\x2f\x4f\x71\x1c\xca\x16\xf6\xf5\x59\x88\xf7\xe0\x61\xd0\x9f\xe7" - "\xd5\x69\x4c\xb7\x63\xb4\x70\x01\xe6\xe3\x07\x39\x86\x0a\xae\x4d" - "\xe0\x97\x83\x2a\x6e\xc9\xfc\x08\xf2\x0d\x43\x1d\x7b\xf5\x3a\xd4" - "\xf3\x60\x71\x80\xbf\x9d\x71\x54\x7f\x66\x58\x80\x31\x80\xef\xf9" - "\xaa\xef\xa9\x59\xd9\x6f\x52\xcd\x1b\x8d\x77\x25\xdb\xf5\x3a\xbc" - "\xa0\x45\xf9\x66\x8f\x5c\xfb\x93\xf3\x2b\x5e\x3b\xb4\xa6\xdc\x2d" - "\x80\xcf\x29\x2d\xf5\x09\x19\x7f\xdc\x57\xde\x05\x1d\x71\xdb\x6d" - "\x3e\x97\xcc\x9f\xc2\x6b\x8b\x53\x8a\x85\xc6\xf1\xa9\xb5\xd4\xe7" - "\x5b\xb9\x9c\xb0\xec\xad\xd3\xd6\x0e\xc8\x55\xb6\x00\xc7\xa3\x2b" - "\x29\xd7\x61\x86\x99\xb6\xc7\x69\xfe\x2d\x6a\xae\xe6\x9a\xae\xec" - "\xb3\x92\xd5\x86\x0f\x1e\x64\x34\x0b\xcf\x35\x86\x0e\xf0\x53\x89" - "\x53\xf7\x97\xf2\xaa\xf6\x97\x1c\xd6\x9f\x1b\x74\x1c\x53\x38\x46" - "\x06\xf0\x3f\xc4\x7d\x87\x79\x6f\x03\xee\x0f\x83\x3e\x07\x15\x7d" - "\x4a\xa4\x0d\x08\xbb\x86\xdf\x1f\xe6\xef\x8c\xe0\xdd\x61\x15\x7f" - "\xa2\x24\x83\xdb\xdc\xeb\x53\x59\x93\x0b\x5c\x07\xf0\xde\x23\x64" - "\xa9\xc1\x77\x96\xe5\xb3\x84\x63\x59\xee\x32\xf4\x0e\xeb\x99\x82" - "\x28\xe4\x54\xda\xdd\x0b\xc6\x1b\xfa\xa6\x97\x0f\x16\xe4\x27\xd3" - "\x25\xc9\xfa\x5d\xd1\x7f\xc1\xef\x84\x67\x5e\x0d\x70\xda\x25\xfb" - "\x80\xe3\x74\x9e\xed\xb1\xef\xbb\x95\x8e\x5c\xb0\xb3\x67\x2e\xa2" - "\xe3\xc1\x31\xbf\xfd\x8c\x5b\x97\xdc\x0f\xd6\xf5\xc6\x82\xc3\x86" - "\xde\x30\xe0\x58\x53\x84\x66\x75\xe1\x5f\xc5\xee\x30\xaf\x9d\xf3" - "\x78\x29\xed\x11\xc0\x19\x78\x46\x9d\x8d\xd2\x2a\x77\x43\x27\x2e" - "\x58\x0d\x1d\x63\x96\x36\xa7\x67\xde\x07\xbd\xba\x68\x61\x56\x2c" - "\x4c\x61\xd9\x1d\x66\xb8\xac\x8f\xd8\x26\x29\x88\x9a\x39\x3e\x49" - "\x58\x1f\x5f\xa0\x83\x17\xe6\x1b\xb8\x82\x86\x07\x0c\x7c\xf5\x6f" - "\x3c\x41\x57\x2d\x68\x98\x1a\xed\x66\x1f\xe1\x26\xd5\x9f\x2e\xa9" - "\x6f\xf0\x6e\x27\xca\x56\xf9\xe9\xa5\x80\x2e\x43\x07\x51\x7e\x67" - "\x63\xd9\x78\xe4\x59\xb8\x4b\xf7\x73\x3d\x84\xfe\x3d\x1c\xc3\xfb" - "\xdb\x63\xd6\x02\x0e\xab\x3e\xbc\xab\xfc\x28\x2d\x0c\xc6\xa4\xeb" - "\x7d\xdb\x98\x77\x94\x16\x6d\x57\xf3\xea\xdd\x0d\xaa\xfc\x22\x75" - "\x76\x45\xc7\x91\x75\x01\x9f\xe3\x62\x19\x97\xb4\x97\x7d\xbc\x28" - "\xcb\x18\x2f\x00\x6b\x8f\xa4\xf9\x60\xb1\x97\xe9\xa4\xe2\x40\xcc" - "\x6b\x51\x74\x5a\x94\x17\x47\x7b\x1e\x37\x51\x0f\xd3\x69\xe0\x72" - "\xa1\x0d\x0c\xa5\x88\x82\xc5\x66\x62\x79\x61\x19\xe7\x3d\x23\xf0" - "\x87\xb4\xab\x14\xdd\x16\xad\x37\xe8\x66\xf4\x1d\xd3\xc9\x4f\x8b" - "\x88\x69\x1b\xdf\xc6\xfe\x87\x8e\x1a\x6d\x07\x4d\x79\x1d\x1c\xcf" - "\xf5\xba\x5c\x1c\xf4\x0e\x61\x9f\x82\xf9\xef\x36\x9a\x7f\x42\x8d" - "\xae\xd1\xa4\x68\xbb\x28\x08\xda\xe6\xc5\xcc\x1b\x0e\x30\x7d\x59" - "\x56\x80\x67\x48\x8f\xc9\x74\x40\xf9\xb7\xcc\xaf\x87\xbd\x1f\x92" - "\xb2\xbc\x50\xc6\xce\x60\x19\x38\xc4\x34\x62\xbd\xc8\xb2\xc4\x32" - "\xc0\xf2\xa4\x68\xe4\x9a\x14\x43\xa3\x26\xa6\x8f\x4e\xa7\x3d\x09" - "\xba\x7c\x96\xa3\x68\xac\xd2\xc5\x8e\xac\xeb\x0a\x47\xc9\x00\x28" - "\x8e\xfb\xc6\xdd\xe9\xc8\x1b\x7b\x9d\xcb\x39\x62\x8a\xba\x8c\xcb" - "\x9b\xc4\xd7\xf4\xf8\x79\x97\x03\xf5\xec\x89\x9f\xbb\x95\xe5\x2a" - "\xfd\xe1\x3a\xe8\x4f\xe9\xbf\x83\xd3\x39\x1e\xe9\xba\xb9\x44\x51" - "\xe0\xbd\xf6\x38\xfa\xd4\xb2\xbb\x8a\xe3\xdf\x4e\xc5\x9c\x71\xca" - "\x19\xf1\x5d\x2d\xde\x6d\x46\xfa\xc0\x62\x8e\x9b\xff\x77\xa1\xa5" - "\xed\xae\xe2\xb9\xbd\xa8\xdc\x96\x1f\x4c\xfb\x2a\x8c\x9f\x37\x98" - "\xd6\xe0\x9c\x70\xa3\x5b\x74\x7a\x16\x0f\x37\xda\xc5\x6b\x00\xa0" - "\x53\xd5\x54\x97\x88\x32\x8d\x0a\x5c\x1c\xa3\x1a\xb0\x53\x79\x0d" - "\x60\x31\xda\xff\x42\x85\x9a\x5f\x2e\x06\xff\xcf\x6b\xd7\x75\x59" - "\x1e\x9e\x61\xff\xdd\xbe\x4b\xf6\xab\xc7\x2e\x63\x5b\x6b\x2b\x6e" - "\x7a\x08\xf3\x01\xaf\x01\x13\xb0\x2e\xd2\x63\xf8\x49\x78\x3f\xd4" - "\xdf\x52\x5b\xf5\x51\xbd\x35\x45\xc5\x0b\x84\x8c\x97\xd7\x9a\xb4" - "\xfc\x1e\xff\x09\xbc\x1b\xb8\xdc\xc6\xfe\x15\xf9\xe0\xbd\x72\xce" - "\x63\xbc\x5b\xe7\xd1\xfc\xeb\x4c\x5a\x18\xfd\x68\x53\xf6\x73\x3b" - "\xeb\x4f\xcc\x2d\x97\x64\x1a\xe3\x9a\x1c\x0f\x4d\x54\xae\xe6\x33" - "\x4b\x6e\xe7\x72\xa7\x3d\x66\xcc\x19\x5c\xf5\xd7\x64\xca\x39\x4a" - "\x58\xf3\xa4\x90\xf2\x71\x5d\x92\x66\xe8\x58\xde\x47\xb3\x2e\x17" - "\x41\x5e\x47\xb4\x46\x44\x50\xc6\x60\xe7\xb1\x83\x8e\x93\xaf\xb4" - "\xb3\x9c\x7d\xec\xa4\x0d\x84\x7a\xd5\xb8\x11\x55\xe3\x06\xea\x0f" - "\xa6\xde\x34\x03\xe3\x43\xca\x71\x5a\xdc\xca\xf8\x33\x6d\x78\x3d" - "\x5e\x03\xad\x7c\x3c\x4e\x32\x7d\xd2\x3f\x1e\xce\xbe\x11\xdc\x56" - "\x6b\x04\x6d\x8e\x6d\x97\x49\xf3\xaf\xf5\xa0\x5d\x26\xb4\xcb\x75" - "\x82\x65\x26\xcc\x3e\x2b\x90\xb7\xc1\x32\xce\xb1\x9c\x3f\x2f\x09" - "\xc7\xb6\x91\xf5\xbf\x6a\xc3\xd2\x2b\x92\xb5\x51\x98\xb8\x8d\x92" - "\x06\x27\x74\x79\x93\x78\xb2\xfe\x68\xa7\x25\x3b\x07\x2e\x67\x5f" - "\x91\xdd\x55\xd0\x6f\xe3\xb8\x0f\x31\x7e\xae\x67\x3c\x93\xf5\x17" - "\xc3\x53\xb0\x96\x36\x58\x97\x97\xcf\xe8\xf4\x2c\x5d\x99\x9c\xde" - "\x4b\xb7\x9f\x9f\xde\x4b\x17\x73\x79\xc6\x83\xf7\x00\xac\x11\x4c" - "\xd6\xc1\xb7\x98\xaf\x55\x24\xab\x77\xe0\xf2\x3a\xc6\x2b\xe9\x3b" - "\xc1\xf2\xa2\xeb\x20\xf0\xa1\x80\x9c\x08\xd6\x49\x9d\x9e\xd2\x9e" - "\xf5\x2f\x6b\x8a\x23\x55\xea\x07\x93\x58\x9f\x0c\x86\x75\xf9\x7a" - "\xde\x0b\x19\x87\xfa\x93\xbe\xd7\xf8\x9b\x0e\x15\xbb\xcb\xb5\x15" - "\x3f\xbe\xc6\x9a\x42\x77\x07\x53\x7f\x9c\x6e\x75\x45\x86\x33\x0d" - "\x01\xd3\x05\x39\x1e\xc9\xf3\x54\xb5\x76\x51\x0a\xfb\x7f\x8d\x8c" - "\xc7\x1d\x4c\xdb\x5d\xae\xf6\x16\x4a\x31\xfe\x55\x4d\x32\xd6\x6f" - "\xf1\x0c\xfd\xf2\x75\x91\x92\xcb\x2b\x37\x88\x55\x0d\xa3\x35\x8f" - "\x55\x38\x96\x58\x61\x47\x2e\x7b\x44\x13\x1c\xe7\xbf\x61\x74\x2f" - "\x9f\x28\x3f\x1a\x83\x4f\x50\x3e\x92\x9c\x07\x96\x5d\x75\x7e\x1e" - "\x28\xfd\x96\xdf\x33\xdd\xd5\x5c\x65\xd9\x78\xc3\x4e\x11\x2b\xae" - "\xdc\xe0\x28\xe3\xfa\x4b\x5b\x55\xdd\x4c\x93\x5c\xde\x57\x98\x04" - "\xba\x94\x23\x6f\xb1\xa1\x07\x98\x5f\xac\x51\xfe\x06\x02\x49\x9e" - "\xc6\x3b\xd8\x3f\xc5\x7e\xb5\x56\xda\x10\x94\xdf\x0b\xf4\xb8\x9c" - "\x41\xb7\x73\x23\xc6\x61\x0a\xa5\xed\x86\x5e\x59\xb6\xcb\x4f\x5e" - "\x19\xcf\x08\x63\x70\x08\x30\xc2\x55\xca\x4f\xd6\x22\xe3\x08\x41" - "\xa6\x39\x76\x10\xcb\x35\xd2\x32\x81\x37\xc7\x11\xc2\x7c\x67\x59" - "\xa0\x67\x5c\xf2\xe4\x42\x57\x08\xf9\xed\x1d\x8c\x4b\x43\x3b\x40" - "\xbb\x37\x4c\xda\x8e\xb3\xa3\xec\xc4\x6d\x3e\xbb\x62\xc8\x8e\x5f" - "\xdf\x4c\xe6\xff\xc7\xfe\x34\x15\xdf\x4a\x99\xcb\x7f\x62\xa6\xff" - "\x93\x43\x26\xa6\x83\x9f\x96\x85\x15\xed\xca\x72\x8c\xfe\xf1\x53" - "\x69\x9d\xd4\x9d\x2b\x9e\x08\x4c\x8d\x88\xef\xd4\x7a\x68\x19\xf4" - "\xdf\x73\x87\xd4\x7b\x97\x37\x71\x0d\x88\xed\x79\xc7\x9c\xf9\x8e" - "\xc2\x17\x17\xcd\x1d\x36\x2c\x6e\xae\x64\x96\x67\x63\x3c\x65\x45" - "\x6a\x3c\x2d\xeb\x89\x7f\xc4\x76\x09\x9e\xd1\x7e\xd7\x39\x31\xce" - "\x27\x15\xe8\xee\xcf\x05\xd9\xd4\x7b\x7f\x0b\x4d\xba\x25\xe6\xf1" - "\x36\x9a\x74\xeb\x6d\x05\x0f\xcd\x9a\x59\xb8\x38\x26\xf5\xf6\xd8" - "\x75\xbd\x75\x1b\x50\x77\xea\x90\x7b\xa1\x2b\x52\xa6\x2c\xe5\xb1" - "\xc5\xfd\x46\x59\x44\xfc\x03\xfa\x3a\x07\x32\x56\xd0\x5c\x12\xa1" - "\x66\xe8\x32\x71\x25\xeb\xf0\xfe\xea\xcc\x1f\xec\x29\xf0\x96\x15" - "\x6d\x0f\xc2\xae\x3b\xc3\xeb\x33\x28\xf7\x69\x4b\x35\xc7\xfa\x6d" - "\xd0\xe3\x98\xbb\x4b\x90\x7e\x09\xae\x9b\x70\xbd\x08\xd7\x2d\x8e" - "\xb9\x98\xf7\xb0\x8f\xf5\x42\xf6\xb1\x76\x4b\x5f\x97\x9b\x43\xe5" - "\xc4\xbe\x22\x78\x3f\x82\x6d\x10\x3f\xb9\xf9\xfb\x60\xfc\x4d\xba" - "\x5c\xa4\x2d\x70\x3c\x47\xd9\x7c\x15\x72\xff\x08\x33\xb0\xca\x86" - "\x62\xb1\x31\x9f\xbf\xa5\x35\x1c\xe9\x7f\x49\x4d\xf9\x92\x52\xed" - "\xfd\xa3\x9d\x1e\x77\xab\x9f\x9e\x5f\xcd\x74\xea\xeb\xdb\x9f\x4c" - "\xe7\x44\xfb\xb0\xd7\x36\x5c\x45\xd2\xbe\xd5\xed\xb9\xcd\x72\x5c" - "\x28\x1f\x11\x63\xd3\xf1\xfe\x65\xba\xb2\x4f\x44\x54\xd9\xa7\xe5" - "\x93\x0c\x39\xc0\x7d\xbe\xc1\xa7\x71\x71\xd7\xe6\x96\xcc\x9a\x37" - "\xab\xd0\x71\xdd\xfc\x74\x8a\x89\xba\xe6\x9c\x35\xd7\x31\x6f\xd6" - "\x4b\x0b\x66\xcd\x97\x11\xd3\xf8\x6d\xdc\x98\x9f\x29\xd2\xff\xb5" - "\xde\x38\x0f\xe4\x18\xc2\xf4\x2d\xdf\xc7\xb1\xba\xc4\xaa\x4f\x86" - "\xb3\x4f\x87\x9a\x6f\x74\xe7\xc4\xcf\x37\x3c\x79\xca\xce\x6b\x98" - "\xa1\xe6\x3a\xcb\xbf\xe6\xe7\xa3\xb4\xdc\xd9\x1b\x17\x7c\xf9\x15" - "\xa0\xa5\x49\xd1\xcd\x72\xac\xd3\xb3\xdc\x66\xd0\xcd\x4f\x9e\x6a" - "\xdd\x96\x6a\x97\xfa\x03\x63\x2c\xf4\x5f\xdc\xf8\xaa\xbe\xf9\xb9" - "\xdc\x0e\xde\x48\x95\xeb\xbd\x69\x0d\x85\x5c\x17\xc3\x3c\x86\xf2" - "\xe8\x9f\x19\xd0\x9b\xac\xdf\x2a\x0c\x78\xa8\x93\xb8\x3e\x7d\x1e" - "\x74\x39\xca\xcb\xfd\x70\xad\xa2\xa1\x90\x75\x0a\xc7\x96\xd0\x2a" - "\x01\x47\xee\xe3\x79\xaa\xd9\xc6\x94\xb1\xe9\x01\x8b\xd7\x69\xa1" - "\x1b\x4a\xf8\xfb\xb0\x9c\xa6\x62\x86\x95\x17\xf2\xda\x30\xea\x9a" - "\x0e\xfc\x0f\xf5\xfa\xbc\x7b\xaa\xd9\xee\x64\xb8\x7e\x5a\x5e\xc5" - "\xf0\x54\x4c\xb4\xe5\x21\x3f\x95\x45\x7a\xed\x27\x4f\x4e\xcc\xbc" - "\x0c\xf8\x28\x3c\x43\xc0\x45\xc6\xdf\x54\x3e\x88\xb2\xdd\xac\x3f" - "\xab\xf4\xb6\x1b\xed\xe9\xf4\x78\xa0\xff\xdc\x01\x63\x6f\xdd\xaf" - "\xb7\x9b\xf1\x63\xdc\x63\x71\xd6\xf1\x2d\x66\x7c\x51\xae\x34\x46" - "\xb6\x79\x5d\xa6\x1f\xd2\xd6\xf7\xfa\x36\x97\xb7\x26\xea\x8d\x17" - "\xe7\x3a\x8a\xe6\xcc\x7d\xbe\x60\xd1\xcc\xe7\x67\x15\x2c\x28\x1e" - "\xe1\x58\x30\xf7\xe9\xa2\x17\x9f\x79\x9e\xb9\x66\x7e\xc9\x82\x67" - "\x9e\x77\xb0\x66\x29\x18\x3f\x69\x52\xc1\xbd\x8f\x3c\xfc\x58\x3a" - "\xdd\x3b\x13\x69\x98\xf9\x4f\xca\x1e\xa1\x5e\x3d\x34\x61\xdc\xa3" - "\x05\xe3\xa6\x3e\x32\x65\x9a\x3c\x0c\xd1\xf3\x7e\xfc\xdc\xe4\x19" - "\xe2\xf8\xd0\x06\x5e\x9a\x8e\xfe\xed\x77\x94\x7e\x95\xa9\xe2\x68" - "\xaf\x18\x1f\x1f\x47\x7b\x05\xe6\xb2\x2b\x60\x65\xae\xc0\xd8\xbf" - "\xf2\x00\x7e\x98\xa7\xfe\xca\xa2\xf8\x2b\x6d\x6a\xa7\x67\x45\x71" - "\x2f\x7f\xfd\x2a\x53\xee\x8f\x57\xcb\x7d\x67\x13\xde\x41\xff\x97" - "\xaf\x8f\x7d\xd7\x3b\x9f\x5c\xb1\xa3\x67\x3e\xd9\xa3\x53\x56\x1c" - "\x36\xe6\x96\x48\x73\x62\x5e\x99\xc6\xf3\x4a\xb5\x9e\xf4\xab\xcb" - "\x24\x4f\xf5\x29\xdf\x16\x32\xe6\x95\x2c\xdb\xbc\x4f\xac\xe6\x1f" - "\x2b\x6d\xb1\x32\x2e\x63\x37\xea\x32\xce\xe5\xe4\xfa\x9d\xa5\x7b" - "\x38\xaf\x69\xc3\x3e\x9e\x0e\x5b\x01\xe3\x57\xa7\x10\x69\xdd\xc3" - "\x15\x4e\x2b\xf3\x78\x8d\x9b\xed\x66\x9d\x9f\x06\x1e\xa7\x95\x6b" - "\x84\xc7\x53\xaf\xe6\x94\x9e\x3f\xb3\x5e\x17\x2b\x86\xdc\xcb\xfe" - "\x27\x3c\x77\x42\x9d\x2b\x7b\x79\xf6\x57\x99\xcc\x0b\xbd\x73\xd9" - "\x95\x71\xfa\xbf\x43\x7e\xaf\x6e\xe5\x1e\x23\x0e\x40\xc9\x30\x32" - "\x99\x87\xad\xa7\x2a\x93\x28\xf7\xd3\xca\x42\xae\x83\xe9\xe9\xa7" - "\x15\x6c\x33\x98\x7b\xe9\xb7\x32\xd0\x43\x3f\x7d\x9d\xc5\x58\x63" - "\x51\x78\xff\xea\xb2\xbe\x68\x95\x9c\x4e\x2f\xe7\x7c\x2f\x9d\x3c" - "\xd4\x8f\x65\xd2\xa0\xd7\xb9\xb4\x7a\xb9\xf4\x5c\x5a\xbd\xdc\x1c" - "\x43\xab\x33\xe7\xd2\xea\xe5\x5d\x31\xfb\x3e\xfa\x3a\xca\xaf\x2e" - "\x63\x9a\x31\x8f\xa1\xdd\x85\xe0\xb3\xca\x5e\xfa\xbd\xec\x3f\x97" - "\x7e\x2f\x87\x92\xd3\xef\xe5\xf5\xd7\xc4\xc3\x59\x97\x6c\xdc\x18" - "\xb8\xdc\xa4\x9f\x13\xfa\xd5\x9c\xa6\xa1\x72\x4e\x1a\x7e\xdd\xa4" - "\x39\x5f\xf7\xe0\x87\x2b\xcf\x23\x7a\x6d\x71\x11\xd6\xe9\xeb\x6c" - "\xc2\x9c\x97\xd7\x95\xce\x33\x16\x1d\x31\xd6\x3c\x70\xdf\xca\x73" - "\x67\xfe\x56\x10\xa7\x33\x3d\xf9\xdb\x53\xe0\xf7\x56\x65\x97\xfe" - "\xaa\xa1\x67\xcd\xe5\xfa\x07\x8a\x53\x97\x93\xa3\xb1\xe6\x56\x4e" - "\x3f\x04\x1e\x92\x6b\x48\xec\xdf\xd3\x17\xcc\x82\x68\x2e\x25\x87" - "\xfb\xeb\x1e\xfe\xef\xeb\xac\x6c\x82\x3e\x72\xce\x9c\x5b\xf8\xe2" - "\xec\xd9\xdf\xaf\x8a\x62\x7d\x77\xd6\x7b\xb4\x8a\x4e\xfe\x1e\xe3" - "\x8a\xe7\x96\xa0\x4e\xd8\xff\x2f\x78\xd5\xb8\xf9\x6b\xe8\x3f\xa7" - "\x4b\xd9\x92\x4f\x04\xd4\xf9\xe0\x5f\xb7\xc7\xe8\x67\xf0\xc8\xaf" - "\xc3\xc2\xf3\xeb\xd1\xbd\x7d\xfc\xeb\xa6\x73\xfb\xf8\xd7\xad\xc9" - "\xfb\xf8\xd7\x11\x6d\x21\x9f\xcf\xf8\x35\xcf\x7f\xa4\xad\xc9\xcf" - "\xbc\x5f\x8e\x39\x73\x00\xf3\xe5\xf6\xa9\x8b\xbd\x77\x17\x2c\x4e" - "\x61\xbf\x72\xf9\x4d\x8e\xc8\x59\xd1\xc6\x7b\xd6\xbc\x3f\xc6\xdf" - "\xe4\xe0\x6f\xf1\xf0\xb7\x5a\x65\x1e\xdc\xaf\x3b\x46\x72\xee\x88" - "\xf7\x8e\xda\x63\xf2\xbb\xc4\xb0\x15\x2a\xf2\x0d\xdb\xda\xba\xdc" - "\x21\xcf\x2d\xaf\x55\xfd\xd1\xca\x7d\xc1\xf5\x15\x2c\xf6\xaa\x3a" - "\xce\xf2\xf7\xb6\xc8\xaa\x6c\x88\x8a\xf5\xe7\x5d\xbb\x4f\xfb\xaa" *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed Jul 20 21:48:53 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 16D06106564A; Wed, 20 Jul 2011 21:48:53 +0000 (UTC) (envelope-from inyaoo@gmail.com) Received: from mail-fx0-f44.google.com (mail-fx0-f44.google.com [209.85.161.44]) by mx1.freebsd.org (Postfix) with ESMTP id 4E1348FC0C; Wed, 20 Jul 2011 21:48:51 +0000 (UTC) Received: by fxe6 with SMTP id 6so1832056fxe.17 for ; Wed, 20 Jul 2011 14:48:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:cc:subject:in-reply-to:references:user-agent:date :message-id:mime-version:content-type; bh=1X0rExJEHAXP+Fw3ZzuBAPn7yclJoFfgI43RcXUQ8vE=; b=S3cVZIyh04GJBUkK+kZo1ycGWjKfDUkl8UJnAqcWK0apWOF3W3x7/mcBQ0m/Oxcm4/ EY6+HaXG+m5dd6kkoj64rprMwBUcYUbBchibhZ6cSntjJdw/9ZPQT6PEdKxPjaVBUCrd k6HSuqZShcqBDnaIVw4pGCFe0G4BFD3U9Qckc= Received: by 10.223.21.220 with SMTP id k28mr6996512fab.63.1311198531210; Wed, 20 Jul 2011 14:48:51 -0700 (PDT) Received: from localhost (tor3.anonymizer.ccc.de [80.237.226.73]) by mx.google.com with ESMTPS id a24sm960217fak.12.2011.07.20.14.48.47 (version=SSLv3 cipher=OTHER); Wed, 20 Jul 2011 14:48:48 -0700 (PDT) From: Pan Tsu To: Attilio Rao In-Reply-To: <201107191300.p6JD0UU7073447@svn.freebsd.org> (Attilio Rao's message of "Tue, 19 Jul 2011 13:00:30 +0000 (UTC)") References: <201107191300.p6JD0UU7073447@svn.freebsd.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (berkeley-unix) Date: Thu, 21 Jul 2011 01:48:44 +0400 Message-ID: <86zkk8pqrn.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r224217 - in head/sys: amd64/include ia64/include mips/conf sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2011 21:48:53 -0000 Attilio Rao writes: > Author: attilio > Date: Tue Jul 19 13:00:30 2011 > New Revision: 224217 > URL: http://svn.freebsd.org/changeset/base/224217 > > Log: > Bump MAXCPU for amd64, ia64 and XLP mips appropriately. > From now on, default values for FreeBSD will be 64 maxiumum supported > CPUs on amd64 and ia64 and 128 for XLP. All the other architectures > seem already capped appropriately (with the exception of sparc64 which > needs further support on jalapeno flavour). > > Bump __FreeBSD_version in order to reflect KBI/KPI brekage introduced > during the infrastructure cleanup for supporting MAXCPU > 32. This > covers cpumask_t retiral too. > > The switch is considered completed at the present time, so for whatever > bug you may experience that is reconducible to that area, please report > immediately. > > Requested by: marcel, jchandra > Tested by: pluknet, sbruno > Approved by: re (kib) > > Modified: > head/sys/amd64/include/param.h > head/sys/ia64/include/param.h > head/sys/mips/conf/XLP > head/sys/mips/conf/XLP64 > head/sys/mips/conf/XLPN32 > head/sys/sys/param.h > > Modified: head/sys/amd64/include/param.h > ============================================================================== > --- head/sys/amd64/include/param.h Tue Jul 19 12:41:57 2011 (r224216) > +++ head/sys/amd64/include/param.h Tue Jul 19 13:00:30 2011 (r224217) > @@ -65,7 +65,7 @@ > > #if defined(SMP) || defined(KLD_MODULE) > #ifndef MAXCPU > -#define MAXCPU 32 > +#define MAXCPU 64 > #endif > #else > #define MAXCPU 1 Do you plan to bump MEMSTAT_MAXCPU, too? $ vmstat -z vmstat: memstat_sysctl_uma: Too many CPUs $ vmstat -m vmstat: memstat_sysctl_malloc: Too many CPUs $ sysctl kern. | grep smp.\*cpus kern.smp.maxcpus: 64 kern.smp.cpus: 2 From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 00:37:32 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D465F1065674; Thu, 21 Jul 2011 00:37:32 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C3C638FC12; Thu, 21 Jul 2011 00:37:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6L0bWf5038441; Thu, 21 Jul 2011 00:37:32 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6L0bWit038439; Thu, 21 Jul 2011 00:37:32 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201107210037.p6L0bWit038439@svn.freebsd.org> From: Xin LI Date: Thu, 21 Jul 2011 00:37:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224238 - stable/8/lib/libz X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 00:37:32 -0000 Author: delphij Date: Thu Jul 21 00:37:32 2011 New Revision: 224238 URL: http://svn.freebsd.org/changeset/base/224238 Log: MFC r224196: Disable gvmat64.S, the assembler version of longest_match for now. PR: kern/154073 Modified: stable/8/lib/libz/Makefile Directory Properties: stable/8/lib/libz/ (props changed) stable/8/lib/libz/contrib/ (props changed) Modified: stable/8/lib/libz/Makefile ============================================================================== --- stable/8/lib/libz/Makefile Wed Jul 20 22:48:48 2011 (r224237) +++ stable/8/lib/libz/Makefile Thu Jul 21 00:37:32 2011 (r224238) @@ -25,11 +25,12 @@ SRCS+= match.S CFLAGS+= -DASMV -DNO_UNDERLINE .endif -.if ${MACHINE_ARCH} == "amd64" -.PATH: ${.CURDIR}/contrib/gcc_gvmat64 -SRCS+= gvmat64.S -CFLAGS+= -DASMV -DNO_UNDERLINE -.endif +#.if ${MACHINE_ARCH} == "amd64" +#.PATH: ${.CURDIR}/contrib/gcc_gvmat64 +#SRCS+= gvmat64.S +#CFLAGS+= -DASMV -DNO_UNDERLINE +#ACFLAGS+= -Wa,--noexecstack +#.endif minigzip: all minigzip.o $(CC) -o minigzip minigzip.o -L. -lz From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 05:36:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 33F571065670; Thu, 21 Jul 2011 05:36:09 +0000 (UTC) (envelope-from pluknet@gmail.com) Received: from mail-gx0-f182.google.com (mail-gx0-f182.google.com [209.85.161.182]) by mx1.freebsd.org (Postfix) with ESMTP id ACBAC8FC12; Thu, 21 Jul 2011 05:36:08 +0000 (UTC) Received: by gxk28 with SMTP id 28so558717gxk.13 for ; Wed, 20 Jul 2011 22:36:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=VMd3O00Chmg9v52/k9M+IEzd4yNZNTbTYhuda34M/DY=; b=IehrKKR5pEBjt3/hqKHldj61+LdEuGaxqZbteoQQgFhFFRnokmcAYIhFiXeaakgIZV tfwW97FP49kmXcOdegVtzVxkJnKhziMSwcF1onJ/EOTbWk4lrTx16jDtHywm48Z1z2LI 1asrv1aydjlhEVuuusdz7y+GlGMfEPhMMF/rA= MIME-Version: 1.0 Received: by 10.150.175.15 with SMTP id x15mr150887ybe.442.1311226567922; Wed, 20 Jul 2011 22:36:07 -0700 (PDT) Received: by 10.151.155.15 with HTTP; Wed, 20 Jul 2011 22:36:07 -0700 (PDT) In-Reply-To: <86zkk8pqrn.fsf@gmail.com> References: <201107191300.p6JD0UU7073447@svn.freebsd.org> <86zkk8pqrn.fsf@gmail.com> Date: Thu, 21 Jul 2011 09:36:07 +0400 Message-ID: From: Sergey Kandaurov To: Pan Tsu Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: Attilio Rao , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r224217 - in head/sys: amd64/include ia64/include mips/conf sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 05:36:09 -0000 On 21 July 2011 01:48, Pan Tsu wrote: > Attilio Rao writes: > >> Author: attilio >> Date: Tue Jul 19 13:00:30 2011 >> New Revision: 224217 >> URL: http://svn.freebsd.org/changeset/base/224217 >> >> Log: >> =A0 Bump MAXCPU for amd64, ia64 and XLP mips appropriately. >> =A0 From now on, default values for FreeBSD will be 64 maxiumum supporte= d >> =A0 CPUs on amd64 and ia64 and 128 for XLP. All the other architectures >> =A0 seem already capped appropriately (with the exception of sparc64 whi= ch >> =A0 needs further support on jalapeno flavour). >> >> =A0 Bump __FreeBSD_version in order to reflect KBI/KPI brekage introduce= d >> =A0 during the infrastructure cleanup for supporting MAXCPU > 32. This >> =A0 covers cpumask_t retiral too. >> >> =A0 The switch is considered completed at the present time, so for whate= ver >> =A0 bug you may experience that is reconducible to that area, please rep= ort >> =A0 immediately. >> >> =A0 Requested by: =A0 =A0 =A0 marcel, jchandra >> =A0 Tested by: =A0pluknet, sbruno >> =A0 Approved by: =A0 =A0 =A0 =A0re (kib) >> >> Modified: >> =A0 head/sys/amd64/include/param.h >> =A0 head/sys/ia64/include/param.h >> =A0 head/sys/mips/conf/XLP >> =A0 head/sys/mips/conf/XLP64 >> =A0 head/sys/mips/conf/XLPN32 >> =A0 head/sys/sys/param.h >> >> Modified: head/sys/amd64/include/param.h >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/sys/amd64/include/param.h =A0 =A0Tue Jul 19 12:41:57 2011 =A0 = =A0 =A0 =A0(r224216) >> +++ head/sys/amd64/include/param.h =A0 =A0Tue Jul 19 13:00:30 2011 =A0 = =A0 =A0 =A0(r224217) >> @@ -65,7 +65,7 @@ >> >> =A0#if defined(SMP) || defined(KLD_MODULE) >> =A0#ifndef MAXCPU >> -#define MAXCPU =A0 =A0 =A0 =A0 =A0 =A0 =A0 32 >> +#define MAXCPU =A0 =A0 =A0 =A0 =A0 =A0 =A0 64 >> =A0#endif >> =A0#else >> =A0#define MAXCPU =A0 =A0 =A0 =A0 =A0 =A0 =A0 1 > > Do you plan to bump MEMSTAT_MAXCPU, too? > > =A0$ vmstat -z > =A0vmstat: memstat_sysctl_uma: Too many CPUs > =A0$ vmstat -m > =A0vmstat: memstat_sysctl_malloc: Too many CPUs > This is a known pending issue. MAXCPU is used in libmemstat for internal needs only. We must get rid of this. libmemstat should get the cpu available information at runtime and use it to prepare the structures. libmemstat should not depend on MAXCPU at all. --=20 wbr, pluknet From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 06:55:43 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AFAEA106566C; Thu, 21 Jul 2011 06:55:43 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9F0518FC0C; Thu, 21 Jul 2011 06:55:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6L6thxU049579; Thu, 21 Jul 2011 06:55:43 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6L6thmk049576; Thu, 21 Jul 2011 06:55:43 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201107210655.p6L6thmk049576@svn.freebsd.org> From: Hans Petter Selasky Date: Thu, 21 Jul 2011 06:55:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224239 - in head/sys/dev/usb: . serial X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 06:55:43 -0000 Author: hselasky Date: Thu Jul 21 06:55:43 2011 New Revision: 224239 URL: http://svn.freebsd.org/changeset/base/224239 Log: Add new USB ID to u3g driver. Approved by: re (kib) Submitted by: Nick Hibma MFC after: 3 days Modified: head/sys/dev/usb/serial/u3g.c head/sys/dev/usb/usbdevs Modified: head/sys/dev/usb/serial/u3g.c ============================================================================== --- head/sys/dev/usb/serial/u3g.c Thu Jul 21 00:37:32 2011 (r224238) +++ head/sys/dev/usb/serial/u3g.c Thu Jul 21 06:55:43 2011 (r224239) @@ -293,6 +293,7 @@ static const STRUCT_USB_HOST_ID u3g_devs U3G_DEV(LONGCHEER, WM66, U3GINIT_HUAWEI), U3G_DEV(LONGCHEER, DISK, U3GINIT_TCT), U3G_DEV(LONGCHEER, W14, 0), + U3G_DEV(LONGCHEER, XSSTICK, 0), U3G_DEV(MERLIN, V620, 0), U3G_DEV(NEOTEL, PRIME, 0), U3G_DEV(NOVATEL, E725, 0), Modified: head/sys/dev/usb/usbdevs ============================================================================== --- head/sys/dev/usb/usbdevs Thu Jul 21 00:37:32 2011 (r224238) +++ head/sys/dev/usb/usbdevs Thu Jul 21 06:55:43 2011 (r224239) @@ -2110,6 +2110,7 @@ product LOGITEC RT2870_3 0x0164 RT2870 product LONGCHEER WM66 0x6061 Longcheer WM66 HSDPA product LONGCHEER W14 0x9603 Mobilcom W14 product LONGCHEER DISK 0xf000 Driver disk +product LONGCHEER XSSTICK 0x9605 4G Systems XSStick P14 /* Lucent products */ From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 07:04:52 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 29B5C106564A; Thu, 21 Jul 2011 07:04:52 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 18A728FC0A; Thu, 21 Jul 2011 07:04:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6L74pMV049918; Thu, 21 Jul 2011 07:04:51 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6L74p5u049916; Thu, 21 Jul 2011 07:04:51 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201107210704.p6L74p5u049916@svn.freebsd.org> From: Hans Petter Selasky Date: Thu, 21 Jul 2011 07:04:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224240 - stable/8/sys/dev/sound/usb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 07:04:52 -0000 Author: hselasky Date: Thu Jul 21 07:04:51 2011 New Revision: 224240 URL: http://svn.freebsd.org/changeset/base/224240 Log: MFC r224024: Restore USB MIDI transmit buffer size to 1Kbyte. Modified: stable/8/sys/dev/sound/usb/uaudio.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/sound/usb/uaudio.c ============================================================================== --- stable/8/sys/dev/sound/usb/uaudio.c Thu Jul 21 06:55:43 2011 (r224239) +++ stable/8/sys/dev/sound/usb/uaudio.c Thu Jul 21 07:04:51 2011 (r224240) @@ -192,7 +192,7 @@ struct uaudio_chan { }; #define UMIDI_CABLES_MAX 16 /* units */ -#define UMIDI_TX_FRAMES 128 /* units */ +#define UMIDI_TX_FRAMES 256 /* units */ #define UMIDI_TX_BUFFER (UMIDI_TX_FRAMES * 4) /* bytes */ enum { From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 07:08:39 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D64DA1065700; Thu, 21 Jul 2011 07:08:39 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AB9178FC13; Thu, 21 Jul 2011 07:08:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6L78dI5050075; Thu, 21 Jul 2011 07:08:39 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6L78d7C050070; Thu, 21 Jul 2011 07:08:39 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201107210708.p6L78d7C050070@svn.freebsd.org> From: Hans Petter Selasky Date: Thu, 21 Jul 2011 07:08:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224241 - stable/8/sys/dev/usb/net X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 07:08:40 -0000 Author: hselasky Date: Thu Jul 21 07:08:39 2011 New Revision: 224241 URL: http://svn.freebsd.org/changeset/base/224241 Log: MFC r224180: Only the USB root HUB thread is allowed to attach and detach drivers to and from USB devices. Remove related DEVMETHOD() lines from USB drivers. Modified: stable/8/sys/dev/usb/net/if_aue.c stable/8/sys/dev/usb/net/if_axe.c stable/8/sys/dev/usb/net/if_rue.c stable/8/sys/dev/usb/net/if_udav.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/usb/net/if_aue.c ============================================================================== --- stable/8/sys/dev/usb/net/if_aue.c Thu Jul 21 07:04:51 2011 (r224240) +++ stable/8/sys/dev/usb/net/if_aue.c Thu Jul 21 07:08:39 2011 (r224241) @@ -256,7 +256,6 @@ static device_method_t aue_methods[] = { /* bus interface */ DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_driver_added, bus_generic_driver_added), /* MII interface */ DEVMETHOD(miibus_readreg, aue_miibus_readreg), Modified: stable/8/sys/dev/usb/net/if_axe.c ============================================================================== --- stable/8/sys/dev/usb/net/if_axe.c Thu Jul 21 07:04:51 2011 (r224240) +++ stable/8/sys/dev/usb/net/if_axe.c Thu Jul 21 07:08:39 2011 (r224241) @@ -225,7 +225,6 @@ static device_method_t axe_methods[] = { /* bus interface */ DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_driver_added, bus_generic_driver_added), /* MII interface */ DEVMETHOD(miibus_readreg, axe_miibus_readreg), Modified: stable/8/sys/dev/usb/net/if_rue.c ============================================================================== --- stable/8/sys/dev/usb/net/if_rue.c Thu Jul 21 07:04:51 2011 (r224240) +++ stable/8/sys/dev/usb/net/if_rue.c Thu Jul 21 07:08:39 2011 (r224241) @@ -188,7 +188,6 @@ static device_method_t rue_methods[] = { /* Bus interface */ DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_driver_added, bus_generic_driver_added), /* MII interface */ DEVMETHOD(miibus_readreg, rue_miibus_readreg), Modified: stable/8/sys/dev/usb/net/if_udav.c ============================================================================== --- stable/8/sys/dev/usb/net/if_udav.c Thu Jul 21 07:04:51 2011 (r224240) +++ stable/8/sys/dev/usb/net/if_udav.c Thu Jul 21 07:08:39 2011 (r224241) @@ -147,7 +147,6 @@ static device_method_t udav_methods[] = /* bus interface */ DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_driver_added, bus_generic_driver_added), /* MII interface */ DEVMETHOD(miibus_readreg, udav_miibus_readreg), From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 08:31:55 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A402F106566C; Thu, 21 Jul 2011 08:31:55 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 93E4F8FC22; Thu, 21 Jul 2011 08:31:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6L8VtII052587; Thu, 21 Jul 2011 08:31:55 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6L8VtHw052585; Thu, 21 Jul 2011 08:31:55 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201107210831.p6L8VtHw052585@svn.freebsd.org> From: Adrian Chadd Date: Thu, 21 Jul 2011 08:31:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224242 - head/sys/dev/ath/ath_hal X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 08:31:55 -0000 Author: adrian Date: Thu Jul 21 08:31:55 2011 New Revision: 224242 URL: http://svn.freebsd.org/changeset/base/224242 Log: This re-enables HT40 channels for use when DFS is enabled. These should be disabled for the AR5416 in hostap/mesh/ibss mode, as the AR5416 doesn't have support for radar detection on the ext channel of a HT40 setup. Later chips do. Approved by: re (kib) Modified: head/sys/dev/ath/ath_hal/ah_regdomain.c Modified: head/sys/dev/ath/ath_hal/ah_regdomain.c ============================================================================== --- head/sys/dev/ath/ath_hal/ah_regdomain.c Thu Jul 21 07:08:39 2011 (r224241) +++ head/sys/dev/ath/ath_hal/ah_regdomain.c Thu Jul 21 08:31:55 2011 (r224242) @@ -526,6 +526,7 @@ getchannels(struct ath_hal *ah, "skip ecm channel\n"); continue; } +#if 0 if ((fband->useDfs & dfsMask) && (cm->flags & IEEE80211_CHAN_HT40)) { /* NB: DFS and HT40 don't mix */ @@ -533,6 +534,7 @@ getchannels(struct ath_hal *ah, "skip HT40 chan, DFS required\n"); continue; } +#endif /* * Make sure that channel separation * meets the requirement. From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 08:35:10 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A9723106566B; Thu, 21 Jul 2011 08:35:10 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 97DD48FC16; Thu, 21 Jul 2011 08:35:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6L8ZAC2052743; Thu, 21 Jul 2011 08:35:10 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6L8ZAha052736; Thu, 21 Jul 2011 08:35:10 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201107210835.p6L8ZAha052736@svn.freebsd.org> From: Adrian Chadd Date: Thu, 21 Jul 2011 08:35:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224243 - in head/sys/dev/ath/ath_hal: ar5416 ar9001 ar9002 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 08:35:10 -0000 Author: adrian Date: Thu Jul 21 08:35:10 2011 New Revision: 224243 URL: http://svn.freebsd.org/changeset/base/224243 Log: Break out the PLL setup into (mostly) per-chip methods, rather than polluting the AR5416 code with later chipset support. Note: ar9280InitPLL() supports Merlin (AR9280) and later (AR9285, AR9287.) Submitted by: ssgriffonuser@gmail.com Approved by: re (kib) Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c head/sys/dev/ath/ath_hal/ar9001/ar9160_attach.c head/sys/dev/ath/ath_hal/ar9002/ar9280.h head/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c head/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c head/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c Thu Jul 21 08:31:55 2011 (r224242) +++ head/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c Thu Jul 21 08:35:10 2011 (r224243) @@ -1423,60 +1423,20 @@ ar5416UpdateChainMasks(struct ath_hal *a void ar5416InitPLL(struct ath_hal *ah, const struct ieee80211_channel *chan) { - uint32_t pll; - - if (AR_SREV_MERLIN_20(ah) && - chan != AH_NULL && IEEE80211_IS_CHAN_5GHZ(chan)) { - /* - * PLL WAR for Merlin 2.0/2.1 - * When doing fast clock, set PLL to 0x142c - * Else, set PLL to 0x2850 to prevent reset-to-reset variation - */ - pll = IS_5GHZ_FAST_CLOCK_EN(ah, chan) ? 0x142c : 0x2850; - } else if (AR_SREV_MERLIN_10_OR_LATER(ah)) { - pll = SM(0x5, AR_RTC_SOWL_PLL_REFDIV); - if (chan != AH_NULL) { - if (IEEE80211_IS_CHAN_HALF(chan)) - pll |= SM(0x1, AR_RTC_SOWL_PLL_CLKSEL); - else if (IEEE80211_IS_CHAN_QUARTER(chan)) - pll |= SM(0x2, AR_RTC_SOWL_PLL_CLKSEL); - - if (IEEE80211_IS_CHAN_5GHZ(chan)) - pll |= SM(0x28, AR_RTC_SOWL_PLL_DIV); - else - pll |= SM(0x2c, AR_RTC_SOWL_PLL_DIV); - - } else - pll |= SM(0x2c, AR_RTC_SOWL_PLL_DIV); - } else if (AR_SREV_SOWL_10_OR_LATER(ah)) { - pll = SM(0x5, AR_RTC_SOWL_PLL_REFDIV); - if (chan != AH_NULL) { - if (IEEE80211_IS_CHAN_HALF(chan)) - pll |= SM(0x1, AR_RTC_SOWL_PLL_CLKSEL); - else if (IEEE80211_IS_CHAN_QUARTER(chan)) - pll |= SM(0x2, AR_RTC_SOWL_PLL_CLKSEL); - - if (IEEE80211_IS_CHAN_5GHZ(chan)) - pll |= SM(0x50, AR_RTC_SOWL_PLL_DIV); - else - pll |= SM(0x58, AR_RTC_SOWL_PLL_DIV); - } else - pll |= SM(0x58, AR_RTC_SOWL_PLL_DIV); - } else { - pll = AR_RTC_PLL_REFDIV_5 | AR_RTC_PLL_DIV2; - if (chan != AH_NULL) { - if (IEEE80211_IS_CHAN_HALF(chan)) - pll |= SM(0x1, AR_RTC_PLL_CLKSEL); - else if (IEEE80211_IS_CHAN_QUARTER(chan)) - pll |= SM(0x2, AR_RTC_PLL_CLKSEL); - - if (IEEE80211_IS_CHAN_5GHZ(chan)) - pll |= SM(0xa, AR_RTC_PLL_DIV); - else - pll |= SM(0xb, AR_RTC_PLL_DIV); - } else + uint32_t pll = AR_RTC_PLL_REFDIV_5 | AR_RTC_PLL_DIV2; + if (chan != AH_NULL) { + if (IEEE80211_IS_CHAN_HALF(chan)) + pll |= SM(0x1, AR_RTC_PLL_CLKSEL); + else if (IEEE80211_IS_CHAN_QUARTER(chan)) + pll |= SM(0x2, AR_RTC_PLL_CLKSEL); + + if (IEEE80211_IS_CHAN_5GHZ(chan)) + pll |= SM(0xa, AR_RTC_PLL_DIV); + else pll |= SM(0xb, AR_RTC_PLL_DIV); - } + } else + pll |= SM(0xb, AR_RTC_PLL_DIV); + OS_REG_WRITE(ah, AR_RTC_PLL_CONTROL, pll); /* TODO: Modified: head/sys/dev/ath/ath_hal/ar9001/ar9160_attach.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar9001/ar9160_attach.c Thu Jul 21 08:31:55 2011 (r224242) +++ head/sys/dev/ath/ath_hal/ar9001/ar9160_attach.c Thu Jul 21 08:35:10 2011 (r224243) @@ -86,6 +86,28 @@ ar9160AniSetup(struct ath_hal *ah) ar5416AniAttach(ah, &aniparams, &aniparams, AH_TRUE); } +static void +ar9160InitPLL(struct ath_hal *ah, const struct ieee80211_channel *chan) +{ + uint32_t pll = SM(0x5, AR_RTC_SOWL_PLL_REFDIV); + if (chan != AH_NULL) { + if (IEEE80211_IS_CHAN_HALF(chan)) + pll |= SM(0x1, AR_RTC_SOWL_PLL_CLKSEL); + else if (IEEE80211_IS_CHAN_QUARTER(chan)) + pll |= SM(0x2, AR_RTC_SOWL_PLL_CLKSEL); + + if (IEEE80211_IS_CHAN_5GHZ(chan)) + pll |= SM(0x50, AR_RTC_SOWL_PLL_DIV); + else + pll |= SM(0x58, AR_RTC_SOWL_PLL_DIV); + } else + pll |= SM(0x58, AR_RTC_SOWL_PLL_DIV); + + OS_REG_WRITE(ah, AR_RTC_PLL_CONTROL, pll); + OS_DELAY(RTC_PLL_SETTLE_DELAY); + OS_REG_WRITE(ah, AR_RTC_SLEEP_CLK, AR_RTC_SLEEP_DERIVED_CLK); +} + /* * Attach for an AR9160 part. */ @@ -118,6 +140,7 @@ ar9160Attach(uint16_t devid, HAL_SOFTC s /* XXX override with 9160 specific state */ /* override 5416 methods for our needs */ + AH5416(ah)->ah_initPLL = ar9160InitPLL; AH5416(ah)->ah_cal.iqCalData.calData = &ar9160_iq_cal; AH5416(ah)->ah_cal.adcGainCalData.calData = &ar9160_adc_gain_cal; Modified: head/sys/dev/ath/ath_hal/ar9002/ar9280.h ============================================================================== --- head/sys/dev/ath/ath_hal/ar9002/ar9280.h Thu Jul 21 08:31:55 2011 (r224242) +++ head/sys/dev/ath/ath_hal/ar9002/ar9280.h Thu Jul 21 08:35:10 2011 (r224243) @@ -59,5 +59,6 @@ struct ath_hal; HAL_BOOL ar9280SetAntennaSwitch(struct ath_hal *, HAL_ANT_SETTING); void ar9280SpurMitigate(struct ath_hal *, const struct ieee80211_channel *); - +void ar9280InitPLL(struct ath_hal *ah, + const struct ieee80211_channel *chan); #endif /* _ATH_AR9280_H_ */ Modified: head/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c Thu Jul 21 08:31:55 2011 (r224242) +++ head/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c Thu Jul 21 08:35:10 2011 (r224243) @@ -99,6 +99,39 @@ ar9280AniSetup(struct ath_hal *ah) ar5416AniAttach(ah, &aniparams, &aniparams, AH_TRUE); } +void +ar9280InitPLL(struct ath_hal *ah, const struct ieee80211_channel *chan) +{ + uint32_t pll = SM(0x5, AR_RTC_SOWL_PLL_REFDIV); + + if (AR_SREV_MERLIN_20(ah) && + chan != AH_NULL && IEEE80211_IS_CHAN_5GHZ(chan)) { + /* + * PLL WAR for Merlin 2.0/2.1 + * When doing fast clock, set PLL to 0x142c + * Else, set PLL to 0x2850 to prevent reset-to-reset variation + */ + pll = IS_5GHZ_FAST_CLOCK_EN(ah, chan) ? 0x142c : 0x2850; + } else if (AR_SREV_MERLIN_10_OR_LATER(ah)) { + pll = SM(0x5, AR_RTC_SOWL_PLL_REFDIV); + if (chan != AH_NULL) { + if (IEEE80211_IS_CHAN_HALF(chan)) + pll |= SM(0x1, AR_RTC_SOWL_PLL_CLKSEL); + else if (IEEE80211_IS_CHAN_QUARTER(chan)) + pll |= SM(0x2, AR_RTC_SOWL_PLL_CLKSEL); + if (IEEE80211_IS_CHAN_5GHZ(chan)) + pll |= SM(0x28, AR_RTC_SOWL_PLL_DIV); + else + pll |= SM(0x2c, AR_RTC_SOWL_PLL_DIV); + } else + pll |= SM(0x2c, AR_RTC_SOWL_PLL_DIV); + } + + OS_REG_WRITE(ah, AR_RTC_PLL_CONTROL, pll); + OS_DELAY(RTC_PLL_SETTLE_DELAY); + OS_REG_WRITE(ah, AR_RTC_SLEEP_CLK, AR_RTC_SLEEP_DERIVED_CLK); +} + /* XXX shouldn't be here! */ #define EEP_MINOR(_ah) \ (AH_PRIVATE(_ah)->ah_eeversion & AR5416_EEP_VER_MINOR_MASK) @@ -138,6 +171,8 @@ ar9280Attach(uint16_t devid, HAL_SOFTC s /* XXX override with 9280 specific state */ /* override 5416 methods for our needs */ + AH5416(ah)->ah_initPLL = ar9280InitPLL; + ah->ah_setAntennaSwitch = ar9280SetAntennaSwitch; ah->ah_configPCIE = ar9280ConfigPCIE; Modified: head/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c Thu Jul 21 08:31:55 2011 (r224242) +++ head/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c Thu Jul 21 08:35:10 2011 (r224243) @@ -136,6 +136,8 @@ ar9285Attach(uint16_t devid, HAL_SOFTC s /* XXX override with 9285 specific state */ /* override 5416 methods for our needs */ + AH5416(ah)->ah_initPLL = ar9280InitPLL; + ah->ah_setAntennaSwitch = ar9285SetAntennaSwitch; ah->ah_configPCIE = ar9285ConfigPCIE; ah->ah_setTxPower = ar9285SetTransmitPower; Modified: head/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c Thu Jul 21 08:31:55 2011 (r224242) +++ head/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c Thu Jul 21 08:35:10 2011 (r224243) @@ -137,6 +137,8 @@ ar9287Attach(uint16_t devid, HAL_SOFTC s /* XXX override with 9280 specific state */ /* override 5416 methods for our needs */ + AH5416(ah)->ah_initPLL = ar9280InitPLL; + ah->ah_setAntennaSwitch = ar9287SetAntennaSwitch; ah->ah_configPCIE = ar9287ConfigPCIE; From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 10:14:27 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A8AD71065672; Thu, 21 Jul 2011 10:14:27 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from mail-gx0-f182.google.com (mail-gx0-f182.google.com [209.85.161.182]) by mx1.freebsd.org (Postfix) with ESMTP id 4088B8FC08; Thu, 21 Jul 2011 10:14:27 +0000 (UTC) Received: by gxk28 with SMTP id 28so675729gxk.13 for ; Thu, 21 Jul 2011 03:14:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=V1Bl3MGHVNi+lk77JEMgmkXy4BQ1PpCWE6UAaRnxAbQ=; b=KRhFXm79Q1D9mOlsMhfXqW5M/2yWtXZ3ivm7Whq45AN/0dFIpFZ+1/Sryh+Q1D/8yr +42KHIuxfqa+CVkx/pFwEyd9o/bf0yHsVZXSm/Nj30U1yxS3NK2cbZngC7RZHmI/OzxG iUs20CpXjYaTlggbAjXJoUOTGsqiYvvACKXe8= MIME-Version: 1.0 Received: by 10.236.136.106 with SMTP id v70mr68923yhi.406.1311243266663; Thu, 21 Jul 2011 03:14:26 -0700 (PDT) Sender: asmrookie@gmail.com Received: by 10.236.105.169 with HTTP; Thu, 21 Jul 2011 03:14:26 -0700 (PDT) In-Reply-To: <86zkk8pqrn.fsf@gmail.com> References: <201107191300.p6JD0UU7073447@svn.freebsd.org> <86zkk8pqrn.fsf@gmail.com> Date: Thu, 21 Jul 2011 12:14:26 +0200 X-Google-Sender-Auth: CSODT7iM6Ppcy0p6FjON33lB48M Message-ID: From: Attilio Rao To: Pan Tsu , Sean Bruno Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r224217 - in head/sys: amd64/include ia64/include mips/conf sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 10:14:27 -0000 2011/7/20 Pan Tsu : > Attilio Rao writes: > >> Author: attilio >> Date: Tue Jul 19 13:00:30 2011 >> New Revision: 224217 >> URL: http://svn.freebsd.org/changeset/base/224217 >> >> Log: >> =C2=A0 Bump MAXCPU for amd64, ia64 and XLP mips appropriately. >> =C2=A0 From now on, default values for FreeBSD will be 64 maxiumum suppo= rted >> =C2=A0 CPUs on amd64 and ia64 and 128 for XLP. All the other architectur= es >> =C2=A0 seem already capped appropriately (with the exception of sparc64 = which >> =C2=A0 needs further support on jalapeno flavour). >> >> =C2=A0 Bump __FreeBSD_version in order to reflect KBI/KPI brekage introd= uced >> =C2=A0 during the infrastructure cleanup for supporting MAXCPU > 32. Thi= s >> =C2=A0 covers cpumask_t retiral too. >> >> =C2=A0 The switch is considered completed at the present time, so for wh= atever >> =C2=A0 bug you may experience that is reconducible to that area, please = report >> =C2=A0 immediately. >> >> =C2=A0 Requested by: =C2=A0 =C2=A0 =C2=A0 marcel, jchandra >> =C2=A0 Tested by: =C2=A0pluknet, sbruno >> =C2=A0 Approved by: =C2=A0 =C2=A0 =C2=A0 =C2=A0re (kib) >> >> Modified: >> =C2=A0 head/sys/amd64/include/param.h >> =C2=A0 head/sys/ia64/include/param.h >> =C2=A0 head/sys/mips/conf/XLP >> =C2=A0 head/sys/mips/conf/XLP64 >> =C2=A0 head/sys/mips/conf/XLPN32 >> =C2=A0 head/sys/sys/param.h >> >> Modified: head/sys/amd64/include/param.h >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/sys/amd64/include/param.h =C2=A0 =C2=A0Tue Jul 19 12:41:57 2011= =C2=A0 =C2=A0 =C2=A0 =C2=A0(r224216) >> +++ head/sys/amd64/include/param.h =C2=A0 =C2=A0Tue Jul 19 13:00:30 2011= =C2=A0 =C2=A0 =C2=A0 =C2=A0(r224217) >> @@ -65,7 +65,7 @@ >> >> =C2=A0#if defined(SMP) || defined(KLD_MODULE) >> =C2=A0#ifndef MAXCPU >> -#define MAXCPU =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 32 >> +#define MAXCPU =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 64 >> =C2=A0#endif >> =C2=A0#else >> =C2=A0#define MAXCPU =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 1 > > Do you plan to bump MEMSTAT_MAXCPU, too? > > =C2=A0$ vmstat -z > =C2=A0vmstat: memstat_sysctl_uma: Too many CPUs > =C2=A0$ vmstat -m > =C2=A0vmstat: memstat_sysctl_malloc: Too many CPUs > > =C2=A0$ sysctl kern. | grep smp.\*cpus > =C2=A0kern.smp.maxcpus: 64 > =C2=A0kern.smp.cpus: 2 > Jeeeez, we seriously need to fix this getting rid of the static values. Anyway, can you try the following patch?: http://www.freebsd.org/~attilio/memstat_maxcpu.diff It is going to add some memory overhead for i386 case. Thanks, Attilio --=20 Peace can only be achieved by understanding - A. Einstein From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 10:19:10 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE6F5106566B; Thu, 21 Jul 2011 10:19:10 +0000 (UTC) (envelope-from pluknet@gmail.com) Received: from mail-gw0-f54.google.com (mail-gw0-f54.google.com [74.125.83.54]) by mx1.freebsd.org (Postfix) with ESMTP id 4069C8FC19; Thu, 21 Jul 2011 10:19:10 +0000 (UTC) Received: by gwb15 with SMTP id 15so1113696gwb.13 for ; Thu, 21 Jul 2011 03:19:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=GghhhROcn3FBn+2DXEWmsljadTwpyE6p3a33kCuaPW4=; b=MGrKi+//Xs8Au0SbXfzmGMocf+czNvCyHATwGmxV++96iyb4yhKdngfLR4MkItoN+y 6FLOmKX5AwS8MQYGJiOyFl202MmMPdLay1Dt4To3kuAcOis1+15brcaS7dKebPWFzR8m ET9krIjaMbWNMBpwbkpEp0ECo3SxXaVFaf2Go= MIME-Version: 1.0 Received: by 10.150.175.15 with SMTP id x15mr436687ybe.442.1311243549575; Thu, 21 Jul 2011 03:19:09 -0700 (PDT) Sender: pluknet@gmail.com Received: by 10.151.155.15 with HTTP; Thu, 21 Jul 2011 03:19:09 -0700 (PDT) In-Reply-To: References: <201107191300.p6JD0UU7073447@svn.freebsd.org> <86zkk8pqrn.fsf@gmail.com> Date: Thu, 21 Jul 2011 14:19:09 +0400 X-Google-Sender-Auth: _E5s_e9LD-Lc8aKAYNt9aA5WEbE Message-ID: From: Sergey Kandaurov To: Attilio Rao Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Sean Bruno , Pan Tsu Subject: Re: svn commit: r224217 - in head/sys: amd64/include ia64/include mips/conf sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 10:19:10 -0000 On 21 July 2011 14:14, Attilio Rao wrote: > 2011/7/20 Pan Tsu : >> Attilio Rao writes: >> >>> Author: attilio >>> Date: Tue Jul 19 13:00:30 2011 >>> New Revision: 224217 >>> URL: http://svn.freebsd.org/changeset/base/224217 >>> >>> Log: >>> =A0 Bump MAXCPU for amd64, ia64 and XLP mips appropriately. >>> =A0 From now on, default values for FreeBSD will be 64 maxiumum support= ed >>> =A0 CPUs on amd64 and ia64 and 128 for XLP. All the other architectures >>> =A0 seem already capped appropriately (with the exception of sparc64 wh= ich >>> =A0 needs further support on jalapeno flavour). >>> >>> =A0 Bump __FreeBSD_version in order to reflect KBI/KPI brekage introduc= ed >>> =A0 during the infrastructure cleanup for supporting MAXCPU > 32. This >>> =A0 covers cpumask_t retiral too. >>> >>> =A0 The switch is considered completed at the present time, so for what= ever >>> =A0 bug you may experience that is reconducible to that area, please re= port >>> =A0 immediately. >>> >>> =A0 Requested by: =A0 =A0 =A0 marcel, jchandra >>> =A0 Tested by: =A0pluknet, sbruno >>> =A0 Approved by: =A0 =A0 =A0 =A0re (kib) >>> >>> Modified: >>> =A0 head/sys/amd64/include/param.h >>> =A0 head/sys/ia64/include/param.h >>> =A0 head/sys/mips/conf/XLP >>> =A0 head/sys/mips/conf/XLP64 >>> =A0 head/sys/mips/conf/XLPN32 >>> =A0 head/sys/sys/param.h >>> >>> Modified: head/sys/amd64/include/param.h >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D >>> --- head/sys/amd64/include/param.h =A0 =A0Tue Jul 19 12:41:57 2011 =A0 = =A0 =A0 =A0(r224216) >>> +++ head/sys/amd64/include/param.h =A0 =A0Tue Jul 19 13:00:30 2011 =A0 = =A0 =A0 =A0(r224217) >>> @@ -65,7 +65,7 @@ >>> >>> =A0#if defined(SMP) || defined(KLD_MODULE) >>> =A0#ifndef MAXCPU >>> -#define MAXCPU =A0 =A0 =A0 =A0 =A0 =A0 =A0 32 >>> +#define MAXCPU =A0 =A0 =A0 =A0 =A0 =A0 =A0 64 >>> =A0#endif >>> =A0#else >>> =A0#define MAXCPU =A0 =A0 =A0 =A0 =A0 =A0 =A0 1 >> >> Do you plan to bump MEMSTAT_MAXCPU, too? >> >> =A0$ vmstat -z >> =A0vmstat: memstat_sysctl_uma: Too many CPUs >> =A0$ vmstat -m >> =A0vmstat: memstat_sysctl_malloc: Too many CPUs >> >> =A0$ sysctl kern. | grep smp.\*cpus >> =A0kern.smp.maxcpus: 64 >> =A0kern.smp.cpus: 2 >> > > Jeeeez, we seriously need to fix this getting rid of the static values. > > Anyway, can you try the following patch?: > http://www.freebsd.org/~attilio/memstat_maxcpu.diff > > It is going to add some memory overhead for i386 case. > It looks good as a temporal fix. I'm running with this patch for several days (I bumped MEMSTAT_MAXCPU to 128 though). --=20 wbr, pluknet From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 12:37:29 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3730B106566B; Thu, 21 Jul 2011 12:37:29 +0000 (UTC) (envelope-from pluknet@gmail.com) Received: from mail-yi0-f54.google.com (mail-yi0-f54.google.com [209.85.218.54]) by mx1.freebsd.org (Postfix) with ESMTP id ACBD78FC13; Thu, 21 Jul 2011 12:37:28 +0000 (UTC) Received: by yic13 with SMTP id 13so727516yic.13 for ; Thu, 21 Jul 2011 05:37:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=snBy+bPpajT9ZEmUJcIUGvj6BLLHor+IyPB/qhZ2zTI=; b=rN/Chg2SEb/1Ro+WMhBEjTJ3i8y0/SScluiACoxkGmWYGUmgXi4EHIpEAuuDhkKs19 Y3VHhsEzTq0UyKE2cnR2JM7IFLcorJAvBzeRtlhVJ4Ih5M6B3uDhTjL5zb8/1+p77ZqB i0V7ud927Hd78vcSf8yCRrwq59aK5XvTpI8YQ= MIME-Version: 1.0 Received: by 10.150.12.9 with SMTP id 9mr611261ybl.328.1311251846707; Thu, 21 Jul 2011 05:37:26 -0700 (PDT) Sender: pluknet@gmail.com Received: by 10.151.155.15 with HTTP; Thu, 21 Jul 2011 05:37:26 -0700 (PDT) In-Reply-To: References: <201107191300.p6JD0UU7073447@svn.freebsd.org> <86zkk8pqrn.fsf@gmail.com> Date: Thu, 21 Jul 2011 16:37:26 +0400 X-Google-Sender-Auth: D7lO022Gbk-hUftsMGl-m1g5VEo Message-ID: From: Sergey Kandaurov To: Attilio Rao Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Sean Bruno , Pan Tsu Subject: Re: svn commit: r224217 - in head/sys: amd64/include ia64/include mips/conf sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 12:37:29 -0000 On 21 July 2011 14:14, Attilio Rao wrote: > 2011/7/20 Pan Tsu : >> Attilio Rao writes: >> >>> Author: attilio >>> Date: Tue Jul 19 13:00:30 2011 >>> New Revision: 224217 >>> URL: http://svn.freebsd.org/changeset/base/224217 >>> >>> Log: >>> =A0 Bump MAXCPU for amd64, ia64 and XLP mips appropriately. >>> =A0 From now on, default values for FreeBSD will be 64 maxiumum support= ed >>> =A0 CPUs on amd64 and ia64 and 128 for XLP. All the other architectures >>> =A0 seem already capped appropriately (with the exception of sparc64 wh= ich >>> =A0 needs further support on jalapeno flavour). >>> >>> =A0 Bump __FreeBSD_version in order to reflect KBI/KPI brekage introduc= ed >>> =A0 during the infrastructure cleanup for supporting MAXCPU > 32. This >>> =A0 covers cpumask_t retiral too. >>> >>> =A0 The switch is considered completed at the present time, so for what= ever >>> =A0 bug you may experience that is reconducible to that area, please re= port >>> =A0 immediately. >>> >>> =A0 Requested by: =A0 =A0 =A0 marcel, jchandra >>> =A0 Tested by: =A0pluknet, sbruno >>> =A0 Approved by: =A0 =A0 =A0 =A0re (kib) >>> >>> Modified: >>> =A0 head/sys/amd64/include/param.h >>> =A0 head/sys/ia64/include/param.h >>> =A0 head/sys/mips/conf/XLP >>> =A0 head/sys/mips/conf/XLP64 >>> =A0 head/sys/mips/conf/XLPN32 >>> =A0 head/sys/sys/param.h >>> >>> Modified: head/sys/amd64/include/param.h >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D >>> --- head/sys/amd64/include/param.h =A0 =A0Tue Jul 19 12:41:57 2011 =A0 = =A0 =A0 =A0(r224216) >>> +++ head/sys/amd64/include/param.h =A0 =A0Tue Jul 19 13:00:30 2011 =A0 = =A0 =A0 =A0(r224217) >>> @@ -65,7 +65,7 @@ >>> >>> =A0#if defined(SMP) || defined(KLD_MODULE) >>> =A0#ifndef MAXCPU >>> -#define MAXCPU =A0 =A0 =A0 =A0 =A0 =A0 =A0 32 >>> +#define MAXCPU =A0 =A0 =A0 =A0 =A0 =A0 =A0 64 >>> =A0#endif >>> =A0#else >>> =A0#define MAXCPU =A0 =A0 =A0 =A0 =A0 =A0 =A0 1 >> >> Do you plan to bump MEMSTAT_MAXCPU, too? >> >> =A0$ vmstat -z >> =A0vmstat: memstat_sysctl_uma: Too many CPUs >> =A0$ vmstat -m >> =A0vmstat: memstat_sysctl_malloc: Too many CPUs >> >> =A0$ sysctl kern. | grep smp.\*cpus >> =A0kern.smp.maxcpus: 64 >> =A0kern.smp.cpus: 2 >> > > Jeeeez, we seriously need to fix this getting rid of the static values. > > Anyway, can you try the following patch?: > http://www.freebsd.org/~attilio/memstat_maxcpu.diff > > It is going to add some memory overhead for i386 case. > Something like this should work (vmstat -z, vmstat -m both work). It gets rid of MEMSTAT_MAXCPU at the expense of malloc() at runtime. http://plukky.net/~pluknet/patches/libmemstat_nomaxcpu.diff Probably it should work with maxid, instead of maxcpu to save some memory. Though, using maxcpu is more safe. --=20 wbr, pluknet From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 14:16:42 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A05961065680; Thu, 21 Jul 2011 14:16:42 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8DFD28FC12; Thu, 21 Jul 2011 14:16:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6LEGg2V072636; Thu, 21 Jul 2011 14:16:42 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6LEGgcQ072633; Thu, 21 Jul 2011 14:16:42 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201107211416.p6LEGgcQ072633@svn.freebsd.org> From: Adrian Chadd Date: Thu, 21 Jul 2011 14:16:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224244 - in head/sys/dev/ath/ath_hal: . ar5416 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 14:16:44 -0000 Author: adrian Date: Thu Jul 21 14:16:42 2011 New Revision: 224244 URL: http://svn.freebsd.org/changeset/base/224244 Log: Modify the radar API a little to be easier to "change" via run-time tools. * introduce pe_enabled, which (will) indicate whether the radar detection stuff is enabled or not. Right now it's incorrectly set, based on something previously written. I'll sort it out later. * Don't set HAL_PHYERR_PARAM_ENABLE in pe_relstep to say whether radar detection is on. * Return whether blockradar, fir128 and enmaxrssi is enabled. * Change some of the phyerr params to be integers rather than HAL_BOOL so they can be set to the NOPARAM value when the setup function is called. This is in line with other radar parameters. * Add new configuration parameters for fir128, blockradar and enmaxrssi, rather than defaulting to off, on and on respectively. Approved by: re (kib) Modified: head/sys/dev/ath/ath_hal/ah.h head/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c Modified: head/sys/dev/ath/ath_hal/ah.h ============================================================================== --- head/sys/dev/ath/ath_hal/ah.h Thu Jul 21 08:35:10 2011 (r224243) +++ head/sys/dev/ath/ath_hal/ah.h Thu Jul 21 14:16:42 2011 (r224244) @@ -718,17 +718,18 @@ typedef struct { u_int32_t pe_relpwr; /* Relative power threshold in 0.5dB steps */ u_int32_t pe_relstep; /* Pulse Relative step threshold in 0.5dB steps */ u_int32_t pe_maxlen; /* Max length of radar sign in 0.8us units */ - HAL_BOOL pe_usefir128; /* Use the average in-band power measured over 128 cycles */ - HAL_BOOL pe_blockradar; /* + int32_t pe_usefir128; /* Use the average in-band power measured over 128 cycles */ + int32_t pe_blockradar; /* * Enable to block radar check if pkt detect is done via OFDM * weak signal detect or pkt is detected immediately after tx * to rx transition */ - HAL_BOOL pe_enmaxrssi; /* + int32_t pe_enmaxrssi; /* * Enable to use the max rssi instead of the last rssi during * fine gain changes for radar detection */ - HAL_BOOL pe_extchannel; /* Enable DFS on ext channel */ + int32_t pe_extchannel; /* Enable DFS on ext channel */ + int32_t pe_enabled; /* Whether radar detection is enabled */ } HAL_PHYERR_PARAM; #define HAL_PHYERR_PARAM_NOVAL 65535 Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c Thu Jul 21 08:35:10 2011 (r224243) +++ head/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c Thu Jul 21 14:16:42 2011 (r224244) @@ -617,10 +617,20 @@ ar5416GetDfsThresh(struct ath_hal *ah, H temp = val & AR_PHY_RADAR_1_RELSTEP_CHECK; pe->pe_relstep = MS(val, AR_PHY_RADAR_1_RELSTEP_THRESH); if (temp) - pe->pe_relstep |= HAL_PHYERR_PARAM_ENABLE; + pe->pe_enabled = 1; + else + pe->pe_enabled = 0; + pe->pe_maxlen = MS(val, AR_PHY_RADAR_1_MAXLEN); pe->pe_extchannel = !! (OS_REG_READ(ah, AR_PHY_RADAR_EXT) & AR_PHY_RADAR_EXT_ENA); + + pe->pe_usefir128 = !! (OS_REG_READ(ah, AR_PHY_RADAR_1) & + AR_PHY_RADAR_1_USE_FIR128); + pe->pe_blockradar = !! (OS_REG_READ(ah, AR_PHY_RADAR_1) & + AR_PHY_RADAR_1_BLOCK_CHECK); + pe->pe_enmaxrssi = !! (OS_REG_READ(ah, AR_PHY_RADAR_1) & + AR_PHY_RADAR_1_MAX_RRSSI); } /* @@ -660,8 +670,20 @@ ar5416EnableDfs(struct ath_hal *ah, HAL_ OS_REG_WRITE(ah, AR_PHY_RADAR_0, val | AR_PHY_RADAR_0_ENA); - val = OS_REG_READ(ah, AR_PHY_RADAR_1); - val |= (AR_PHY_RADAR_1_MAX_RRSSI | AR_PHY_RADAR_1_BLOCK_CHECK); + if (pe->pe_usefir128 == 0) + OS_REG_SET_BIT(ah, AR_PHY_RADAR_1, AR_PHY_RADAR_1_USE_FIR128); + else if (pe->pe_usefir128 == 1) + OS_REG_CLR_BIT(ah, AR_PHY_RADAR_1, AR_PHY_RADAR_1_USE_FIR128); + + if (pe->pe_enmaxrssi == 0) + OS_REG_SET_BIT(ah, AR_PHY_RADAR_1, AR_PHY_RADAR_1_MAX_RRSSI); + else if (pe->pe_enmaxrssi == 1) + OS_REG_CLR_BIT(ah, AR_PHY_RADAR_1, AR_PHY_RADAR_1_MAX_RRSSI); + + if (pe->pe_blockradar == 0) + OS_REG_SET_BIT(ah, AR_PHY_RADAR_1, AR_PHY_RADAR_1_BLOCK_CHECK); + else if (pe->pe_blockradar == 1) + OS_REG_CLR_BIT(ah, AR_PHY_RADAR_1, AR_PHY_RADAR_1_BLOCK_CHECK); if (pe->pe_maxlen != HAL_PHYERR_PARAM_NOVAL) { val &= ~AR_PHY_RADAR_1_MAXLEN; @@ -674,9 +696,9 @@ ar5416EnableDfs(struct ath_hal *ah, HAL_ * it should check the channel is HT/40 and HAL_CAP_EXT_CHAN_DFS * is available. */ - if (pe->pe_extchannel) + if (pe->pe_extchannel == 1) OS_REG_SET_BIT(ah, AR_PHY_RADAR_EXT, AR_PHY_RADAR_EXT_ENA); - else + else if (pe->pe_extchannel == 0) OS_REG_CLR_BIT(ah, AR_PHY_RADAR_EXT, AR_PHY_RADAR_EXT_ENA); if (pe->pe_relstep != HAL_PHYERR_PARAM_NOVAL) { From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 14:25:13 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4D23A106566B; Thu, 21 Jul 2011 14:25:13 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2409D8FC26; Thu, 21 Jul 2011 14:25:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6LEPDQv073089; Thu, 21 Jul 2011 14:25:13 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6LEPCDb073086; Thu, 21 Jul 2011 14:25:12 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201107211425.p6LEPCDb073086@svn.freebsd.org> From: Adrian Chadd Date: Thu, 21 Jul 2011 14:25:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224245 - head/sys/dev/ath X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 14:25:13 -0000 Author: adrian Date: Thu Jul 21 14:25:12 2011 New Revision: 224245 URL: http://svn.freebsd.org/changeset/base/224245 Log: This links in the ath dfs ioctl into the driver and defines the ioctl interface for DFS modules to use. Since there's no open source dfs code yet, this doesn't introduce any operational changes. Approved by: re (kib) Modified: head/sys/dev/ath/if_ath.c head/sys/dev/ath/if_athioctl.h Modified: head/sys/dev/ath/if_ath.c ============================================================================== --- head/sys/dev/ath/if_ath.c Thu Jul 21 14:16:42 2011 (r224244) +++ head/sys/dev/ath/if_ath.c Thu Jul 21 14:25:12 2011 (r224245) @@ -5344,6 +5344,9 @@ ath_ioctl(struct ifnet *ifp, u_long cmd, case SIOCGATHDIAG: error = ath_ioctl_diag(sc, (struct ath_diag *) ifr); break; + case SIOCGATHPHYERR: + error = ath_ioctl_phyerr(sc,(struct ath_diag*) ifr); + break; #endif case SIOCGIFADDR: error = ether_ioctl(ifp, cmd, data); Modified: head/sys/dev/ath/if_athioctl.h ============================================================================== --- head/sys/dev/ath/if_athioctl.h Thu Jul 21 14:16:42 2011 (r224244) +++ head/sys/dev/ath/if_athioctl.h Thu Jul 21 14:25:12 2011 (r224245) @@ -154,6 +154,7 @@ struct ath_diag { }; #define SIOCGATHDIAG _IOWR('i', 138, struct ath_diag) +#define SIOCGATHPHYERR _IOWR('i', 140, struct ath_diag) /* * Radio capture format. @@ -205,4 +206,34 @@ struct ath_tx_radiotap_header { int8_t wt_chan_maxpow; } __packed; +/* + * DFS ioctl commands + */ + +#define DFS_SET_THRESH 2 +#define DFS_GET_THRESH 3 +#define DFS_RADARDETECTS 6 + +/* + * DFS ioctl parameter types + */ +#define DFS_PARAM_FIRPWR 1 +#define DFS_PARAM_RRSSI 2 +#define DFS_PARAM_HEIGHT 3 +#define DFS_PARAM_PRSSI 4 +#define DFS_PARAM_INBAND 5 +#define DFS_PARAM_NOL 6 /* XXX not used in FreeBSD */ +#define DFS_PARAM_RELSTEP_EN 7 +#define DFS_PARAM_RELSTEP 8 +#define DFS_PARAM_RELPWR_EN 9 +#define DFS_PARAM_RELPWR 10 +#define DFS_PARAM_MAXLEN 11 +#define DFS_PARAM_USEFIR128 12 +#define DFS_PARAM_BLOCKRADAR 13 +#define DFS_PARAM_MAXRSSI_EN 14 + +/* FreeBSD-specific start at 32 */ +#define DFS_PARAM_ENABLE 32 +#define DFS_PARAM_EN_EXTCH 33 + #endif /* _DEV_ATH_ATHIOCTL_H */ From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 15:53:41 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7A3B31065674; Thu, 21 Jul 2011 15:53:41 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 374448FC1F; Thu, 21 Jul 2011 15:53:41 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 6069046B2D; Thu, 21 Jul 2011 11:53:40 -0400 (EDT) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id E55718A03C; Thu, 21 Jul 2011 11:53:39 -0400 (EDT) From: John Baldwin To: Sergey Kandaurov Date: Thu, 21 Jul 2011 09:20:09 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110617; KDE/4.5.5; amd64; ; ) References: <201107191300.p6JD0UU7073447@svn.freebsd.org> In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201107210920.09604.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.6 (bigwig.baldwin.cx); Thu, 21 Jul 2011 11:53:40 -0400 (EDT) Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, Attilio Rao , Pan Tsu , svn-src-head@freebsd.org, Sean Bruno Subject: Re: svn commit: r224217 - in head/sys: amd64/include ia64/include mips/conf sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 15:53:41 -0000 On Thursday, July 21, 2011 8:37:26 am Sergey Kandaurov wrote: > On 21 July 2011 14:14, Attilio Rao wrote: > > 2011/7/20 Pan Tsu : > >> Attilio Rao writes: > >> > >>> Author: attilio > >>> Date: Tue Jul 19 13:00:30 2011 > >>> New Revision: 224217 > >>> URL: http://svn.freebsd.org/changeset/base/224217 > >>> > >>> Log: > >>> Bump MAXCPU for amd64, ia64 and XLP mips appropriately. > >>> From now on, default values for FreeBSD will be 64 maxiumum supported > >>> CPUs on amd64 and ia64 and 128 for XLP. All the other architectures > >>> seem already capped appropriately (with the exception of sparc64 which > >>> needs further support on jalapeno flavour). > >>> > >>> Bump __FreeBSD_version in order to reflect KBI/KPI brekage introduced > >>> during the infrastructure cleanup for supporting MAXCPU > 32. This > >>> covers cpumask_t retiral too. > >>> > >>> The switch is considered completed at the present time, so for whatever > >>> bug you may experience that is reconducible to that area, please report > >>> immediately. > >>> > >>> Requested by: marcel, jchandra > >>> Tested by: pluknet, sbruno > >>> Approved by: re (kib) > >>> > >>> Modified: > >>> head/sys/amd64/include/param.h > >>> head/sys/ia64/include/param.h > >>> head/sys/mips/conf/XLP > >>> head/sys/mips/conf/XLP64 > >>> head/sys/mips/conf/XLPN32 > >>> head/sys/sys/param.h > >>> > >>> Modified: head/sys/amd64/include/param.h > >>> ============================================================================== > >>> --- head/sys/amd64/include/param.h Tue Jul 19 12:41:57 2011 (r224216) > >>> +++ head/sys/amd64/include/param.h Tue Jul 19 13:00:30 2011 (r224217) > >>> @@ -65,7 +65,7 @@ > >>> > >>> #if defined(SMP) || defined(KLD_MODULE) > >>> #ifndef MAXCPU > >>> -#define MAXCPU 32 > >>> +#define MAXCPU 64 > >>> #endif > >>> #else > >>> #define MAXCPU 1 > >> > >> Do you plan to bump MEMSTAT_MAXCPU, too? > >> > >> $ vmstat -z > >> vmstat: memstat_sysctl_uma: Too many CPUs > >> $ vmstat -m > >> vmstat: memstat_sysctl_malloc: Too many CPUs > >> > >> $ sysctl kern. | grep smp.\*cpus > >> kern.smp.maxcpus: 64 > >> kern.smp.cpus: 2 > >> > > > > Jeeeez, we seriously need to fix this getting rid of the static values. > > > > Anyway, can you try the following patch?: > > http://www.freebsd.org/~attilio/memstat_maxcpu.diff > > > > It is going to add some memory overhead for i386 case. > > > > Something like this should work (vmstat -z, vmstat -m both work). > It gets rid of MEMSTAT_MAXCPU at the expense of malloc() at runtime. > http://plukky.net/~pluknet/patches/libmemstat_nomaxcpu.diff > > Probably it should work with maxid, instead of maxcpu to save some memory. > Though, using maxcpu is more safe. Actually, I would prefer that it use mp_maxid as that is the general variable things should use. mp_maxcpus is a concession for the few places that may need to know the MAXCPUS value (e.g. if using libkvm to access a structure in a crashdump or live kernel that has a member array with MAXCPU elements). Code that just wants to allocate memory to hold per-CPU data should use mp_maxid whenever possible. -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 16:32:14 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 35D8F106566C; Thu, 21 Jul 2011 16:32:14 +0000 (UTC) (envelope-from gnn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 247FA8FC0A; Thu, 21 Jul 2011 16:32:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6LGWE2G077362; Thu, 21 Jul 2011 16:32:14 GMT (envelope-from gnn@svn.freebsd.org) Received: (from gnn@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6LGWEld077358; Thu, 21 Jul 2011 16:32:14 GMT (envelope-from gnn@svn.freebsd.org) Message-Id: <201107211632.p6LGWEld077358@svn.freebsd.org> From: "George V. Neville-Neil" Date: Thu, 21 Jul 2011 16:32:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224246 - head/lib/libc/amd64/string X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 16:32:14 -0000 Author: gnn Date: Thu Jul 21 16:32:13 2011 New Revision: 224246 URL: http://svn.freebsd.org/changeset/base/224246 Log: Make both stpcpy and strcpy be assembly language implementations on amd64. Submitted by: Guillaume Morin (guillaume at morinfr.org) Reviewed by: kib, jhb Approved by: re (bz) MFC after: 1 month Added: head/lib/libc/amd64/string/stpcpy.S - copied, changed from r223967, head/lib/libc/amd64/string/strcpy.S head/lib/libc/amd64/string/strcpy.c (contents, props changed) Deleted: head/lib/libc/amd64/string/strcpy.S Modified: head/lib/libc/amd64/string/Makefile.inc Modified: head/lib/libc/amd64/string/Makefile.inc ============================================================================== --- head/lib/libc/amd64/string/Makefile.inc Thu Jul 21 14:25:12 2011 (r224245) +++ head/lib/libc/amd64/string/Makefile.inc Thu Jul 21 16:32:13 2011 (r224246) @@ -1,4 +1,4 @@ # $FreeBSD$ MDSRCS+= bcmp.S bcopy.S bzero.S memcmp.S memcpy.S memmove.S memset.S \ - strcat.S strcmp.S strcpy.S + strcat.S strcmp.S stpcpy.S strcpy.c Copied and modified: head/lib/libc/amd64/string/stpcpy.S (from r223967, head/lib/libc/amd64/string/strcpy.S) ============================================================================== --- head/lib/libc/amd64/string/strcpy.S Tue Jul 12 20:38:42 2011 (r223967, copy source) +++ head/lib/libc/amd64/string/stpcpy.S Thu Jul 21 16:32:13 2011 (r224246) @@ -1,17 +1,14 @@ /* - * Written by J.T. Conklin + * Adapted by Guillaume Morin from strcpy.S + * written by J.T. Conklin * Public domain. */ #include __FBSDID("$FreeBSD$"); -#if 0 - RCSID("$NetBSD: strcpy.S,v 1.3 2004/07/19 20:04:41 drochner Exp $") -#endif - /* - * This strcpy implementation copies a byte at a time until the + * This stpcpy implementation copies a byte at a time until the * source pointer is aligned to a word boundary, it then copies by * words until it finds a word containing a zero byte, and finally * copies by bytes until the end of the string is reached. @@ -23,10 +20,11 @@ __FBSDID("$FreeBSD$"); * requirements. */ -ENTRY(strcpy) - movq %rdi,%rax - movabsq $0x0101010101010101,%r8 - movabsq $0x8080808080808080,%r9 + .globl stpcpy,__stpcpy +ENTRY(stpcpy) +__stpcpy: + movabsq $0x0101010101010101,%r8 + movabsq $0x8080808080808080,%r9 /* * Align source to a word boundary. @@ -41,6 +39,8 @@ ENTRY(strcpy) incq %rdi testb %dl,%dl jne .Lalign + movq %rdi,%rax + dec %rax ret .p2align 4 @@ -61,54 +61,56 @@ ENTRY(strcpy) */ movb %dl,(%rdi) - incq %rdi testb %dl,%dl /* 1st byte == 0? */ je .Ldone + incq %rdi shrq $8,%rdx movb %dl,(%rdi) - incq %rdi testb %dl,%dl /* 2nd byte == 0? */ je .Ldone + incq %rdi shrq $8,%rdx movb %dl,(%rdi) - incq %rdi testb %dl,%dl /* 3rd byte == 0? */ je .Ldone + incq %rdi shrq $8,%rdx movb %dl,(%rdi) - incq %rdi testb %dl,%dl /* 4th byte == 0? */ je .Ldone + incq %rdi shrq $8,%rdx movb %dl,(%rdi) - incq %rdi testb %dl,%dl /* 5th byte == 0? */ je .Ldone + incq %rdi shrq $8,%rdx movb %dl,(%rdi) - incq %rdi testb %dl,%dl /* 6th byte == 0? */ je .Ldone + incq %rdi shrq $8,%rdx movb %dl,(%rdi) - incq %rdi testb %dl,%dl /* 7th byte == 0? */ je .Ldone + incq %rdi shrq $8,%rdx movb %dl,(%rdi) incq %rdi testb %dl,%dl /* 8th byte == 0? */ jne .Lword_aligned + decq %rdi .Ldone: + movq %rdi,%rax ret -END(strcpy) - +END(stpcpy) + .section .note.GNU-stack,"",%progbits Added: head/lib/libc/amd64/string/strcpy.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/libc/amd64/string/strcpy.c Thu Jul 21 16:32:13 2011 (r224246) @@ -0,0 +1,38 @@ +/* + * Copyright 2011 George V. Neville-Neil. All rights reserved. + * + * The compilation of software known as FreeBSD is distributed under the + * following terms: + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 +__FBSDID("$FreeBSD$"); + +char *__stpcpy(char * __restrict, const char * __restrict); + +char * +strcpy(char * __restrict to, const char * __restrict from) +{ + __stpcpy(to, from); + return(to); +} From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 19:39:40 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D68DE106564A; Thu, 21 Jul 2011 19:39:40 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BB6A78FC18; Thu, 21 Jul 2011 19:39:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6LJdeEf082971; Thu, 21 Jul 2011 19:39:40 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6LJdesR082969; Thu, 21 Jul 2011 19:39:40 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201107211939.p6LJdesR082969@svn.freebsd.org> From: Alexander Motin Date: Thu, 21 Jul 2011 19:39:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224250 - head/usr.sbin/diskinfo X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 19:39:41 -0000 Author: mav Date: Thu Jul 21 19:39:40 2011 New Revision: 224250 URL: http://svn.freebsd.org/changeset/base/224250 Log: Fix `diskinfo -t` operation for disks smaller then 8GB or bigger then 2TB. Tested to work with 1.44MB floppy, 4GB USB stick and 4TB disk array. Approved by: re (kib) Modified: head/usr.sbin/diskinfo/diskinfo.c Modified: head/usr.sbin/diskinfo/diskinfo.c ============================================================================== --- head/usr.sbin/diskinfo/diskinfo.c Thu Jul 21 19:07:38 2011 (r224249) +++ head/usr.sbin/diskinfo/diskinfo.c Thu Jul 21 19:39:40 2011 (r224250) @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -171,7 +172,7 @@ static char sector[65536]; static char mega[1024 * 1024]; static void -rdsect(int fd, u_int blockno, u_int sectorsize) +rdsect(int fd, off_t blockno, u_int sectorsize) { int error; @@ -232,21 +233,27 @@ TR(double count) static void speeddisk(int fd, off_t mediasize, u_int sectorsize) { - int i; - uint b0, b1, sectorcount; + int bulk, i; + off_t b0, b1, sectorcount, step; sectorcount = mediasize / sectorsize; + step = 1ULL << (flsll(sectorcount / (4 * 200)) - 1); + if (step > 16384) + step = 16384; + bulk = mediasize / (1024 * 1024); + if (bulk > 100) + bulk = 100; printf("Seek times:\n"); printf("\tFull stroke:\t"); b0 = 0; - b1 = sectorcount - 1 - 16384; + b1 = sectorcount - step; T0(); for (i = 0; i < 125; i++) { rdsect(fd, b0, sectorsize); - b0 += 16384; + b0 += step; rdsect(fd, b1, sectorsize); - b1 -= 16384; + b1 -= step; } TN(250); @@ -256,9 +263,9 @@ speeddisk(int fd, off_t mediasize, u_int T0(); for (i = 0; i < 125; i++) { rdsect(fd, b0, sectorsize); - b0 += 16384; + b0 += step; rdsect(fd, b1, sectorsize); - b1 += 16384; + b1 += step; } TN(250); printf("\tQuarter stroke:\t"); @@ -267,9 +274,9 @@ speeddisk(int fd, off_t mediasize, u_int T0(); for (i = 0; i < 250; i++) { rdsect(fd, b0, sectorsize); - b0 += 16384; + b0 += step; rdsect(fd, b1, sectorsize); - b1 += 16384; + b1 += step; } TN(500); @@ -278,7 +285,7 @@ speeddisk(int fd, off_t mediasize, u_int T0(); for (i = 0; i < 400; i++) { rdsect(fd, b0, sectorsize); - b0 += 16384; + b0 += step; } TN(400); @@ -287,7 +294,7 @@ speeddisk(int fd, off_t mediasize, u_int T0(); for (i = 0; i < 400; i++) { rdsect(fd, b0, sectorsize); - b0 -= 16384; + b0 -= step; } TN(400); @@ -301,7 +308,7 @@ speeddisk(int fd, off_t mediasize, u_int TN(2048); printf("\tSeq inner:\t"); - b0 = sectorcount - 2048 - 1; + b0 = sectorcount - 2048; T0(); for (i = 0; i < 2048; i++) { rdsect(fd, b0, sectorsize); @@ -313,28 +320,28 @@ speeddisk(int fd, off_t mediasize, u_int printf("\toutside: "); rdsect(fd, 0, sectorsize); T0(); - for (i = 0; i < 100; i++) { + for (i = 0; i < bulk; i++) { rdmega(fd); } - TR(100 * 1024); + TR(bulk * 1024); printf("\tmiddle: "); - b0 = sectorcount / 2; + b0 = sectorcount / 2 - bulk * (1024*1024 / sectorsize) / 2 - 1; rdsect(fd, b0, sectorsize); T0(); - for (i = 0; i < 100; i++) { + for (i = 0; i < bulk; i++) { rdmega(fd); } - TR(100 * 1024); + TR(bulk * 1024); printf("\tinside: "); - b0 = sectorcount - 100 * (1024*1024 / sectorsize) - 1;; + b0 = sectorcount - bulk * (1024*1024 / sectorsize) - 1;; rdsect(fd, b0, sectorsize); T0(); - for (i = 0; i < 100; i++) { + for (i = 0; i < bulk; i++) { rdmega(fd); } - TR(100 * 1024); + TR(bulk * 1024); printf("\n"); return; From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 20:01:52 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EF21A106564A; Thu, 21 Jul 2011 20:01:51 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D43E28FC18; Thu, 21 Jul 2011 20:01:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6LK1pNS083686; Thu, 21 Jul 2011 20:01:51 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6LK1pdt083682; Thu, 21 Jul 2011 20:01:51 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201107212001.p6LK1pdt083682@svn.freebsd.org> From: Xin LI Date: Thu, 21 Jul 2011 20:01:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224251 - in head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 20:01:52 -0000 Author: delphij Date: Thu Jul 21 20:01:51 2011 New Revision: 224251 URL: http://svn.freebsd.org/changeset/base/224251 Log: A different implementation of r224231 proposed by pjd@, which does not require change in the znode structure. Specifically, it queries rdev from the znode in the same sa_bulk_lookup already done in zfs_getattr(). Submitted by: pjd (with some revisions) Reviewed by: pjd, mm Approved by: re (kib) Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h Thu Jul 21 19:39:40 2011 (r224250) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h Thu Jul 21 20:01:51 2011 (r224251) @@ -209,7 +209,6 @@ typedef struct znode { boolean_t z_is_sa; /* are we native sa? */ /* FreeBSD-specific field. */ struct task z_task; - dev_t z_rdev; } znode_t; Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jul 21 19:39:40 2011 (r224250) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jul 21 20:01:51 2011 (r224251) @@ -2642,11 +2642,11 @@ zfs_getattr(vnode_t *vp, vattr_t *vap, i uint32_t blksize; u_longlong_t nblocks; uint64_t links; - uint64_t mtime[2], ctime[2], crtime[2]; + uint64_t mtime[2], ctime[2], crtime[2], rdev; xvattr_t *xvap = (xvattr_t *)vap; /* vap may be an xvattr_t * */ xoptattr_t *xoap = NULL; boolean_t skipaclchk = (flags & ATTR_NOACLCHECK) ? B_TRUE : B_FALSE; - sa_bulk_attr_t bulk[3]; + sa_bulk_attr_t bulk[4]; int count = 0; ZFS_ENTER(zfsvfs); @@ -2657,6 +2657,9 @@ zfs_getattr(vnode_t *vp, vattr_t *vap, i SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_MTIME(zfsvfs), NULL, &mtime, 16); SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zfsvfs), NULL, &ctime, 16); SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_CTIME(zfsvfs), NULL, &crtime, 16); + if (vp->v_type == VBLK || vp->v_type == VCHR) + SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_RDEV(zfsvfs), NULL, + &rdev, 8); if ((error = sa_bulk_lookup(zp->z_sa_hdl, bulk, count)) != 0) { ZFS_EXIT(zfsvfs); @@ -2694,7 +2697,8 @@ zfs_getattr(vnode_t *vp, vattr_t *vap, i vap->va_nlink = MIN(links, UINT32_MAX); /* nlink_t limit! */ vap->va_size = zp->z_size; vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0]; - vap->va_rdev = zp->z_rdev; + if (vp->v_type == VBLK || vp->v_type == VCHR) + vap->va_rdev = zfs_cmpldev(rdev); vap->va_seq = zp->z_seq; vap->va_flags = 0; /* FreeBSD: Reset chflags(2) flags. */ Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jul 21 19:39:40 2011 (r224250) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jul 21 20:01:51 2011 (r224251) @@ -700,6 +700,7 @@ zfs_znode_alloc(zfsvfs_t *zfsvfs, dmu_bu case VDIR: zp->z_zn_prefetch = B_TRUE; /* z_prefetch default is enabled */ break; +#ifdef sun case VBLK: case VCHR: { @@ -707,9 +708,10 @@ zfs_znode_alloc(zfsvfs_t *zfsvfs, dmu_bu VERIFY(sa_lookup(zp->z_sa_hdl, SA_ZPL_RDEV(zfsvfs), &rdev, sizeof (rdev)) == 0); - zp->z_rdev = zfs_cmpldev(rdev); + vp->v_rdev = zfs_cmpldev(rdev); } break; +#endif /* sun */ case VFIFO: vp->v_op = &zfs_fifoops; break; From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 20:02:23 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 799B0106567F; Thu, 21 Jul 2011 20:02:23 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4F4268FC15; Thu, 21 Jul 2011 20:02:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6LK2NeI083741; Thu, 21 Jul 2011 20:02:23 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6LK2Nxp083738; Thu, 21 Jul 2011 20:02:23 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201107212002.p6LK2Nxp083738@svn.freebsd.org> From: Xin LI Date: Thu, 21 Jul 2011 20:02:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224252 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 20:02:23 -0000 Author: delphij Date: Thu Jul 21 20:02:22 2011 New Revision: 224252 URL: http://svn.freebsd.org/changeset/base/224252 Log: Bring the code more in-line with OpenSolaris source to ease future port. Reviewed by: pjd, mm Approved by: re (kib) Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jul 21 20:01:51 2011 (r224251) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Jul 21 20:02:22 2011 (r224252) @@ -2688,7 +2688,11 @@ zfs_getattr(vnode_t *vp, vattr_t *vap, i mutex_enter(&zp->z_lock); vap->va_type = IFTOVT(zp->z_mode); vap->va_mode = zp->z_mode & ~S_IFMT; -// vap->va_fsid = zp->z_zfsvfs->z_vfs->vfs_dev; +#ifdef sun + vap->va_fsid = zp->z_zfsvfs->z_vfs->vfs_dev; +#else + vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0]; +#endif vap->va_nodeid = zp->z_id; if ((vp->v_flag & VROOT) && zfs_show_ctldir(zp)) links = zp->z_links + 1; @@ -2696,9 +2700,12 @@ zfs_getattr(vnode_t *vp, vattr_t *vap, i links = zp->z_links; vap->va_nlink = MIN(links, UINT32_MAX); /* nlink_t limit! */ vap->va_size = zp->z_size; - vap->va_fsid = vp->v_mount->mnt_stat.f_fsid.val[0]; +#ifdef sun + vap->va_rdev = vp->v_rdev; +#else if (vp->v_type == VBLK || vp->v_type == VCHR) vap->va_rdev = zfs_cmpldev(rdev); +#endif vap->va_seq = zp->z_seq; vap->va_flags = 0; /* FreeBSD: Reset chflags(2) flags. */ Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jul 21 20:01:51 2011 (r224251) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Thu Jul 21 20:02:22 2011 (r224252) @@ -713,6 +713,10 @@ zfs_znode_alloc(zfsvfs_t *zfsvfs, dmu_bu break; #endif /* sun */ case VFIFO: +#ifdef sun + case VSOCK: + case VDOOR: +#endif /* sun */ vp->v_op = &zfs_fifoops; break; case VREG: @@ -721,6 +725,14 @@ zfs_znode_alloc(zfsvfs_t *zfsvfs, dmu_bu vp->v_op = &zfs_shareops; } break; +#ifdef sun + case VLNK: + vn_setops(vp, zfs_symvnodeops); + break; + default: + vn_setops(vp, zfs_evnodeops); + break; +#endif /* sun */ } if (vp->v_type != VFIFO) VN_LOCK_ASHARE(vp); From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 20:06:14 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8F717106566C; Thu, 21 Jul 2011 20:06:14 +0000 (UTC) (envelope-from gnn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7EBAD8FC15; Thu, 21 Jul 2011 20:06:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6LK6E5k083884; Thu, 21 Jul 2011 20:06:14 GMT (envelope-from gnn@svn.freebsd.org) Received: (from gnn@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6LK6Ekq083882; Thu, 21 Jul 2011 20:06:14 GMT (envelope-from gnn@svn.freebsd.org) Message-Id: <201107212006.p6LK6Ekq083882@svn.freebsd.org> From: "George V. Neville-Neil" Date: Thu, 21 Jul 2011 20:06:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224253 - head/lib/libc/amd64/string X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 20:06:14 -0000 Author: gnn Date: Thu Jul 21 20:06:14 2011 New Revision: 224253 URL: http://svn.freebsd.org/changeset/base/224253 Log: Remove incorrect attribution. Approved by: re (kib) Pointed out by: brueffer Pointy hat to: gnn Modified: head/lib/libc/amd64/string/stpcpy.S Modified: head/lib/libc/amd64/string/stpcpy.S ============================================================================== --- head/lib/libc/amd64/string/stpcpy.S Thu Jul 21 20:02:22 2011 (r224252) +++ head/lib/libc/amd64/string/stpcpy.S Thu Jul 21 20:06:14 2011 (r224253) @@ -1,5 +1,5 @@ /* - * Adapted by Guillaume Morin from strcpy.S + * Adapted by Guillaume Morin from strcpy.S * written by J.T. Conklin * Public domain. */ From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 20:43:43 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 716E21065670; Thu, 21 Jul 2011 20:43:43 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 611018FC16; Thu, 21 Jul 2011 20:43:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6LKhhNB085009; Thu, 21 Jul 2011 20:43:43 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6LKhh14085007; Thu, 21 Jul 2011 20:43:43 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201107212043.p6LKhh14085007@svn.freebsd.org> From: John Baldwin Date: Thu, 21 Jul 2011 20:43:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224254 - head/sys/dev/acpica X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 20:43:43 -0000 Author: jhb Date: Thu Jul 21 20:43:43 2011 New Revision: 224254 URL: http://svn.freebsd.org/changeset/base/224254 Log: Allow non-fixed endpoints for a producer address range if the length of the resource covers the entire range. Some BIOSes appear to mark endpoints as non-fixed incorrectly (non-fixed endpoints are supposed to be used in _PRS when OSPM is allowed to allocate a certain chunk of address space within a larger range, I don't believe it is supposed to be used for _CRS). Approved by: re (kib) Modified: head/sys/dev/acpica/acpi_pcib_acpi.c Modified: head/sys/dev/acpica/acpi_pcib_acpi.c ============================================================================== --- head/sys/dev/acpica/acpi_pcib_acpi.c Thu Jul 21 20:06:14 2011 (r224253) +++ head/sys/dev/acpica/acpi_pcib_acpi.c Thu Jul 21 20:43:43 2011 (r224254) @@ -207,9 +207,11 @@ acpi_pcib_producer_handler(ACPI_RESOURCE length = res->Data.ExtAddress64.AddressLength; break; } - if (length == 0 || - res->Data.Address.MinAddressFixed != ACPI_ADDRESS_FIXED || - res->Data.Address.MaxAddressFixed != ACPI_ADDRESS_FIXED) + if (length == 0) + break; + if (min + length - 1 != max && + (res->Data.Address.MinAddressFixed != ACPI_ADDRESS_FIXED || + res->Data.Address.MaxAddressFixed != ACPI_ADDRESS_FIXED)) break; flags = 0; switch (res->Data.Address.ResourceType) { From owner-svn-src-all@FreeBSD.ORG Thu Jul 21 21:08:34 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 269B41065670; Thu, 21 Jul 2011 21:08:34 +0000 (UTC) (envelope-from jonathan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 165A38FC17; Thu, 21 Jul 2011 21:08:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6LL8XJ1085763; Thu, 21 Jul 2011 21:08:33 GMT (envelope-from jonathan@svn.freebsd.org) Received: (from jonathan@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6LL8XLl085761; Thu, 21 Jul 2011 21:08:33 GMT (envelope-from jonathan@svn.freebsd.org) Message-Id: <201107212108.p6LL8XLl085761@svn.freebsd.org> From: Jonathan Anderson Date: Thu, 21 Jul 2011 21:08:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224255 - head/sys/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2011 21:08:34 -0000 Author: jonathan Date: Thu Jul 21 21:08:33 2011 New Revision: 224255 URL: http://svn.freebsd.org/changeset/base/224255 Log: Declare more capability method rights. This is a complete set of rights that can be held in a capability's rights mask. Approved by: re (kib), mentor (rwatson) Sponsored by: Google Inc Modified: head/sys/sys/capability.h Modified: head/sys/sys/capability.h ============================================================================== --- head/sys/sys/capability.h Thu Jul 21 20:43:43 2011 (r224254) +++ head/sys/sys/capability.h Thu Jul 21 21:08:33 2011 (r224255) @@ -53,11 +53,78 @@ * mmap() and aio*() system calls will need special attention as they may * involve reads or writes depending a great deal on context. */ + +/* General file I/O. */ #define CAP_READ 0x0000000000000001ULL /* read/recv */ #define CAP_WRITE 0x0000000000000002ULL /* write/send */ #define CAP_MMAP 0x0000000000000004ULL /* mmap */ #define CAP_MAPEXEC 0x0000000000000008ULL /* mmap(2) as exec */ -#define CAP_MASK_VALID 0x000000000000000fULL +#define CAP_FEXECVE 0x0000000000000010ULL +#define CAP_FSYNC 0x0000000000000020ULL +#define CAP_FTRUNCATE 0x0000000000000040ULL +#define CAP_SEEK 0x0000000000000080ULL + +/* VFS methods. */ +#define CAP_FCHFLAGS 0x0000000000000100ULL +#define CAP_FCHDIR 0x0000000000000200ULL +#define CAP_FCHMOD 0x0000000000000400ULL +#define CAP_FCHOWN 0x0000000000000800ULL +#define CAP_FCNTL 0x0000000000001000ULL +#define CAP_FPATHCONF 0x0000000000002000ULL +#define CAP_FLOCK 0x0000000000004000ULL +#define CAP_FSCK 0x0000000000008000ULL +#define CAP_FSTAT 0x0000000000010000ULL +#define CAP_FSTATFS 0x0000000000020000ULL +#define CAP_FUTIMES 0x0000000000040000ULL + +/* Extended attributes. */ +#define CAP_EXTATTR_DELETE 0x0000000000080000ULL +#define CAP_EXTATTR_GET 0x0000000000100000ULL +#define CAP_EXTATTR_LIST 0x0000000000200000ULL +#define CAP_EXTATTR_SET 0x0000000000400000ULL + +/* Access Control Lists. */ +#define CAP_ACL_CHECK 0x0000000000800000ULL +#define CAP_ACL_DELETE 0x0000000001000000ULL +#define CAP_ACL_GET 0x0000000002000000ULL +#define CAP_ACL_SET 0x0000000004000000ULL + +/* Socket operations. */ +#define CAP_ACCEPT 0x0000000008000000ULL +#define CAP_BIND 0x0000000010000000ULL +#define CAP_CONNECT 0x0000000020000000ULL +#define CAP_GETPEERNAME 0x0000000040000000ULL +#define CAP_GETSOCKNAME 0x0000000080000000ULL +#define CAP_GETSOCKOPT 0x0000000100000000ULL +#define CAP_LISTEN 0x0000000200000000ULL +#define CAP_PEELOFF 0x0000000400000000ULL +#define CAP_SETSOCKOPT 0x0000000800000000ULL +#define CAP_SHUTDOWN 0x0000001000000000ULL + +#define CAP_SOCK_ALL \ + (CAP_ACCEPT | CAP_BIND | CAP_CONNECT \ + | CAP_GETPEERNAME | CAP_GETSOCKNAME | CAP_GETSOCKOPT \ + | CAP_LISTEN | CAP_PEELOFF | CAP_SETSOCKOPT | CAP_SHUTDOWN) + +/* Mandatory Access Control. */ +#define CAP_MAC_GET 0x0000002000000000ULL +#define CAP_MAC_SET 0x0000004000000000ULL + +/* Methods on semaphores. */ +#define CAP_SEM_GETVALUE 0x0000008000000000ULL +#define CAP_SEM_POST 0x0000010000000000ULL +#define CAP_SEM_WAIT 0x0000020000000000ULL + +/* Events - maybe we need a post/get distinction? */ +#define CAP_EVENT 0x0000040000000000ULL +#define CAP_KEVENT 0x0000080000000000ULL + +/* Strange and powerful rights that should not be given lightly. */ +#define CAP_IOCTL 0x0000100000000000ULL +#define CAP_TTYHOOK 0x0000200000000000ULL + +/* The mask of all valid method rights. */ +#define CAP_MASK_VALID 0x00003fffffffffffULL #ifdef _KERNEL From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 00:57:37 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6FF7F106564A; Fri, 22 Jul 2011 00:57:37 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5ECFA8FC13; Fri, 22 Jul 2011 00:57:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6M0vbnE092653; Fri, 22 Jul 2011 00:57:37 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6M0vbNF092649; Fri, 22 Jul 2011 00:57:37 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201107220057.p6M0vbNF092649@svn.freebsd.org> From: Glen Barber Date: Fri, 22 Jul 2011 00:57:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224259 - stable/8/sbin/shutdown X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 00:57:37 -0000 Author: gjb (doc committer) Date: Fri Jul 22 00:57:37 2011 New Revision: 224259 URL: http://svn.freebsd.org/changeset/base/224259 Log: MFC 216823, 223991, 223992: 216823 (by pjd): - For compatibility with Linux and Solaris add poweroff(8). It is implemented as a hard link to shutdown(8) and it is equivalent of: # shutdown -p now While I'm here put one line of usage into one line of C code so it is easier to grep(1) and separate unrelated code with empty line. 223991: - Improvements to the shutdown(8) manual. 223992: - Remove trailing whitespace in the shutdown(8) manual. Approved by: delphij Modified: stable/8/sbin/shutdown/Makefile stable/8/sbin/shutdown/shutdown.8 stable/8/sbin/shutdown/shutdown.c Directory Properties: stable/8/sbin/shutdown/ (props changed) Modified: stable/8/sbin/shutdown/Makefile ============================================================================== --- stable/8/sbin/shutdown/Makefile Fri Jul 22 00:29:12 2011 (r224258) +++ stable/8/sbin/shutdown/Makefile Fri Jul 22 00:57:37 2011 (r224259) @@ -3,6 +3,8 @@ PROG= shutdown MAN= shutdown.8 +LINKS= ${BINDIR}/shutdown ${BINDIR}/poweroff +MLINKS= shutdown.8 poweroff.8 WARNS?= 6 Modified: stable/8/sbin/shutdown/shutdown.8 ============================================================================== --- stable/8/sbin/shutdown/shutdown.8 Fri Jul 22 00:29:12 2011 (r224258) +++ stable/8/sbin/shutdown/shutdown.8 Fri Jul 22 00:57:37 2011 (r224259) @@ -28,11 +28,12 @@ .\" @(#)shutdown.8 8.2 (Berkeley) 4/27/95 .\" $FreeBSD$ .\" -.Dd December 23, 2008 +.Dd July 13, 2011 .Dt SHUTDOWN 8 .Os .Sh NAME -.Nm shutdown +.Nm shutdown , +.Nm poweroff .Nd "close down the system at a given time" .Sh SYNOPSIS .Nm @@ -47,6 +48,7 @@ .Oc .Ar time .Op Ar warning-message ... +.Nm poweroff .Sh DESCRIPTION The .Nm @@ -81,20 +83,20 @@ If one of the .Fl p or .Fl r -is specified, +options are specified, .Nm will execute .Xr halt 8 or .Xr reboot 8 -instead of sending signal to +instead of sending a signal to .Xr init 8 . .It Fl n If the .Fl o -is specified, prevent the file system cache from being flushed by passing +option is specified, prevent the file system cache from being flushed by passing .Fl n -option to +to .Xr halt 8 or .Xr reboot 8 . @@ -104,10 +106,10 @@ This option should probably not be used. is the time at which .Nm will bring the system down and -may be the word +may be the case-insensitive word .Ar now (indicating an immediate shutdown) or -specify a future time in one of two formats: +a future time in one of two formats: .Ar +number , or .Ar yymmddhhmm , @@ -146,7 +148,7 @@ exits. .Pp At shutdown time a message is written to the system log, containing the time of shutdown, the person who initiated the shutdown and the reason. -Corresponding signal is then sent to +The corresponding signal is then sent to .Xr init 8 to respectively halt, reboot or bring the system down to single-user state (depending on the above options). @@ -168,15 +170,24 @@ file that .Nm created will be removed automatically. .Pp -When run without options, the +When run without options, the .Nm -utility will place the system into single user mode at the +utility will place the system into single user mode at the .Ar time specified. +.Pp +Calling +.Dq Nm poweroff +is equivalent to running: +.Bd -literal -offset indent +shutdown -p now +.Ed .Sh FILES .Bl -tag -width /var/run/nologin -compact .It Pa /var/run/nologin -tells login not to let anyone log in +tells +.Xr login 1 +not to let anyone log in .El .Sh COMPATIBILITY The hours and minutes in the second time format may be separated by Modified: stable/8/sbin/shutdown/shutdown.c ============================================================================== --- stable/8/sbin/shutdown/shutdown.c Fri Jul 22 00:29:12 2011 (r224258) +++ stable/8/sbin/shutdown/shutdown.c Fri Jul 22 00:57:37 2011 (r224259) @@ -115,8 +115,31 @@ main(int argc, char **argv) if (geteuid()) errx(1, "NOT super-user"); #endif + nosync = NULL; readstdin = 0; + + /* + * Test for the special case where the utility is called as + * "poweroff", for which it runs 'shutdown -p now'. + */ + if ((p = rindex(argv[0], '/')) == NULL) + p = argv[0]; + else + ++p; + if (strcmp(p, "poweroff") == 0) { + if (getopt(argc, argv, "") != -1) + usage((char *)NULL); + argc -= optind; + argv += optind; + if (argc != 0) + usage((char *)NULL); + dopower = 1; + offset = 0; + (void)time(&shuttime); + goto poweroff; + } + while ((ch = getopt(argc, argv, "-hknopr")) != -1) switch (ch) { case '-': @@ -161,6 +184,7 @@ main(int argc, char **argv) getoffset(*argv++); +poweroff: if (*argv) { for (p = mbuf, len = sizeof(mbuf); *argv; ++argv) { arglen = strlen(*argv); @@ -510,7 +534,7 @@ usage(const char *cp) if (cp != NULL) warnx("%s", cp); (void)fprintf(stderr, - "usage: shutdown [-] [-h | -p | -r | -k] [-o [-n]]" - " time [warning-message ...]\n"); + "usage: shutdown [-] [-h | -p | -r | -k] [-o [-n]] time [warning-message ...]\n" + " poweroff\n"); exit(1); } From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 00:58:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CF5F51065674; Fri, 22 Jul 2011 00:58:09 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BE9678FC15; Fri, 22 Jul 2011 00:58:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6M0w9wj092716; Fri, 22 Jul 2011 00:58:09 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6M0w96w092712; Fri, 22 Jul 2011 00:58:09 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201107220058.p6M0w96w092712@svn.freebsd.org> From: Glen Barber Date: Fri, 22 Jul 2011 00:58:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224260 - stable/7/sbin/shutdown X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 00:58:09 -0000 Author: gjb (doc committer) Date: Fri Jul 22 00:58:09 2011 New Revision: 224260 URL: http://svn.freebsd.org/changeset/base/224260 Log: MFC 216823, 223991, 223992: 216823 (by pjd): - For compatibility with Linux and Solaris add poweroff(8). It is implemented as a hard link to shutdown(8) and it is equivalent of: # shutdown -p now While I'm here put one line of usage into one line of C code so it is easier to grep(1) and separate unrelated code with empty line. 223991: - Improvements to the shutdown(8) manual. 223992: - Remove trailing whitespace in the shutdown(8) manual. Approved by: delphij Modified: stable/7/sbin/shutdown/Makefile stable/7/sbin/shutdown/shutdown.8 stable/7/sbin/shutdown/shutdown.c Directory Properties: stable/7/sbin/shutdown/ (props changed) Modified: stable/7/sbin/shutdown/Makefile ============================================================================== --- stable/7/sbin/shutdown/Makefile Fri Jul 22 00:57:37 2011 (r224259) +++ stable/7/sbin/shutdown/Makefile Fri Jul 22 00:58:09 2011 (r224260) @@ -3,6 +3,8 @@ PROG= shutdown MAN= shutdown.8 +LINKS= ${BINDIR}/shutdown ${BINDIR}/poweroff +MLINKS= shutdown.8 poweroff.8 WARNS?= 6 Modified: stable/7/sbin/shutdown/shutdown.8 ============================================================================== --- stable/7/sbin/shutdown/shutdown.8 Fri Jul 22 00:57:37 2011 (r224259) +++ stable/7/sbin/shutdown/shutdown.8 Fri Jul 22 00:58:09 2011 (r224260) @@ -28,11 +28,12 @@ .\" @(#)shutdown.8 8.2 (Berkeley) 4/27/95 .\" $FreeBSD$ .\" -.Dd December 23, 2008 +.Dd July 13, 2011 .Dt SHUTDOWN 8 .Os .Sh NAME -.Nm shutdown +.Nm shutdown , +.Nm poweroff .Nd "close down the system at a given time" .Sh SYNOPSIS .Nm @@ -47,6 +48,7 @@ .Oc .Ar time .Op Ar warning-message ... +.Nm poweroff .Sh DESCRIPTION The .Nm @@ -81,20 +83,20 @@ If one of the .Fl p or .Fl r -is specified, +options are specified, .Nm will execute .Xr halt 8 or .Xr reboot 8 -instead of sending signal to +instead of sending a signal to .Xr init 8 . .It Fl n If the .Fl o -is specified, prevent the file system cache from being flushed by passing +option is specified, prevent the file system cache from being flushed by passing .Fl n -option to +to .Xr halt 8 or .Xr reboot 8 . @@ -104,10 +106,10 @@ This option should probably not be used. is the time at which .Nm will bring the system down and -may be the word +may be the case-insensitive word .Ar now (indicating an immediate shutdown) or -specify a future time in one of two formats: +a future time in one of two formats: .Ar +number , or .Ar yymmddhhmm , @@ -146,7 +148,7 @@ exits. .Pp At shutdown time a message is written to the system log, containing the time of shutdown, the person who initiated the shutdown and the reason. -Corresponding signal is then sent to +The corresponding signal is then sent to .Xr init 8 to respectively halt, reboot or bring the system down to single-user state (depending on the above options). @@ -168,15 +170,24 @@ file that .Nm created will be removed automatically. .Pp -When run without options, the +When run without options, the .Nm -utility will place the system into single user mode at the +utility will place the system into single user mode at the .Ar time specified. +.Pp +Calling +.Dq Nm poweroff +is equivalent to running: +.Bd -literal -offset indent +shutdown -p now +.Ed .Sh FILES .Bl -tag -width /var/run/nologin -compact .It Pa /var/run/nologin -tells login not to let anyone log in +tells +.Xr login 1 +not to let anyone log in .El .Sh COMPATIBILITY The hours and minutes in the second time format may be separated by Modified: stable/7/sbin/shutdown/shutdown.c ============================================================================== --- stable/7/sbin/shutdown/shutdown.c Fri Jul 22 00:57:37 2011 (r224259) +++ stable/7/sbin/shutdown/shutdown.c Fri Jul 22 00:58:09 2011 (r224260) @@ -115,8 +115,31 @@ main(int argc, char **argv) if (geteuid()) errx(1, "NOT super-user"); #endif + nosync = NULL; readstdin = 0; + + /* + * Test for the special case where the utility is called as + * "poweroff", for which it runs 'shutdown -p now'. + */ + if ((p = rindex(argv[0], '/')) == NULL) + p = argv[0]; + else + ++p; + if (strcmp(p, "poweroff") == 0) { + if (getopt(argc, argv, "") != -1) + usage((char *)NULL); + argc -= optind; + argv += optind; + if (argc != 0) + usage((char *)NULL); + dopower = 1; + offset = 0; + (void)time(&shuttime); + goto poweroff; + } + while ((ch = getopt(argc, argv, "-hknopr")) != -1) switch (ch) { case '-': @@ -161,6 +184,7 @@ main(int argc, char **argv) getoffset(*argv++); +poweroff: if (*argv) { for (p = mbuf, len = sizeof(mbuf); *argv; ++argv) { arglen = strlen(*argv); @@ -510,7 +534,7 @@ usage(const char *cp) if (cp != NULL) warnx("%s", cp); (void)fprintf(stderr, - "usage: shutdown [-] [-h | -p | -r | -k] [-o [-n]]" - " time [warning-message ...]\n"); + "usage: shutdown [-] [-h | -p | -r | -k] [-o [-n]] time [warning-message ...]\n" + " poweroff\n"); exit(1); } From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 09:34:31 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A217F106564A; Fri, 22 Jul 2011 09:34:31 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 901DE8FC08; Fri, 22 Jul 2011 09:34:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6M9YV9A008336; Fri, 22 Jul 2011 09:34:31 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6M9YVhl008332; Fri, 22 Jul 2011 09:34:31 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201107220934.p6M9YVhl008332@svn.freebsd.org> From: Adrian Chadd Date: Fri, 22 Jul 2011 09:34:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224266 - in head/tools/tools/ath: . athradar X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 09:34:31 -0000 Author: adrian Date: Fri Jul 22 09:34:31 2011 New Revision: 224266 URL: http://svn.freebsd.org/changeset/base/224266 Log: Add athradar, an implementation of the radar parameter diagnostic API. This is a reimplementation from scratch. Approved by: re (kib) Added: head/tools/tools/ath/athradar/ head/tools/tools/ath/athradar/Makefile (contents, props changed) head/tools/tools/ath/athradar/athradar.c (contents, props changed) Modified: head/tools/tools/ath/Makefile Modified: head/tools/tools/ath/Makefile ============================================================================== --- head/tools/tools/ath/Makefile Fri Jul 22 06:47:09 2011 (r224265) +++ head/tools/tools/ath/Makefile Fri Jul 22 09:34:31 2011 (r224266) @@ -2,5 +2,6 @@ SUBDIR= arcode athdebug athdecode athkey athpoke athprom athrd athregs SUBDIR+= athstats ath_ee_v14_print ath_prom_read ath_ee_v4k_print +SUBDIR+= athradar .include Added: head/tools/tools/ath/athradar/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/tools/ath/athradar/Makefile Fri Jul 22 09:34:31 2011 (r224266) @@ -0,0 +1,16 @@ +# $FreeBSD$ + +PROG= athradar + +.include <../Makefile.inc> + +SRCS= athradar.c +SRCS+= opt_ah.h +CLEANFILES+= opt_ah.h + +opt_ah.h: + echo "#define AH_DEBUG 1" > opt_ah.h + echo "#define AH_DEBUG_COUNTRY 1" >> opt_ah.h + echo "#define AH_SUPPORT_AR5416 1" >> opt_ah.h + +.include Added: head/tools/tools/ath/athradar/athradar.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/tools/ath/athradar/athradar.c Fri Jul 22 09:34:31 2011 (r224266) @@ -0,0 +1,287 @@ +/* + * Copyright (c) 2011 Adrian Chadd, Xenion Pty Ltd. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. + * + * $FreeBSD$ + */ + +#include "diag.h" + +#include "ah.h" +#include "ah_internal.h" + +#ifndef ATH_DEFAULT +#define ATH_DEFAULT "ath0" +#endif + +#include +#include +#include +#include +#include +#include +#include + +struct radarhandler { + struct ath_diag atd; + int s; + struct ifreq ifr; + int ah_devid; +}; + +int +radar_opendev(struct radarhandler *radar, const char *devid) +{ + HAL_REVS revs; + + radar->s = socket(AF_INET, SOCK_DGRAM, 0); + if (radar->s < 0) { + warn("socket"); + return 0; + } + + strncpy(radar->atd.ad_name, devid, sizeof (radar->atd.ad_name)); + + /* Get the hardware revision, just to verify things are working */ + radar->atd.ad_id = HAL_DIAG_REVS; + radar->atd.ad_out_data = (caddr_t) &revs; + radar->atd.ad_out_size = sizeof(revs); + if (ioctl(radar->s, SIOCGATHDIAG, &radar->atd) < 0) { + warn(radar->atd.ad_name); + return 0; + } + radar->ah_devid = revs.ah_devid; + return 1; +} + +void +radar_closedev(struct radarhandler *radar) +{ + close(radar->s); + radar->s = -1; +} + +void +radarset(struct radarhandler *radar, int op, u_int32_t param) +{ + HAL_PHYERR_PARAM pe; + + pe.pe_firpwr = HAL_PHYERR_PARAM_NOVAL; + pe.pe_rrssi = HAL_PHYERR_PARAM_NOVAL; + pe.pe_height = HAL_PHYERR_PARAM_NOVAL; + pe.pe_prssi = HAL_PHYERR_PARAM_NOVAL; + pe.pe_inband = HAL_PHYERR_PARAM_NOVAL; + pe.pe_enabled = HAL_PHYERR_PARAM_NOVAL; + + pe.pe_relpwr = HAL_PHYERR_PARAM_NOVAL; + pe.pe_relstep = HAL_PHYERR_PARAM_NOVAL; + pe.pe_maxlen = HAL_PHYERR_PARAM_NOVAL; + pe.pe_usefir128 = HAL_PHYERR_PARAM_NOVAL; + pe.pe_blockradar = HAL_PHYERR_PARAM_NOVAL; + pe.pe_enmaxrssi = HAL_PHYERR_PARAM_NOVAL; + + pe.pe_extchannel = HAL_PHYERR_PARAM_NOVAL; + + switch (op) { + case DFS_PARAM_ENABLE: + pe.pe_enabled = param; + break; + case DFS_PARAM_FIRPWR: + pe.pe_firpwr = param; + break; + case DFS_PARAM_RRSSI: + pe.pe_rrssi = param; + break; + case DFS_PARAM_HEIGHT: + pe.pe_height = param; + break; + case DFS_PARAM_PRSSI: + pe.pe_prssi = param; + break; + case DFS_PARAM_INBAND: + pe.pe_inband = param; + break; + case DFS_PARAM_RELPWR: + pe.pe_relpwr = param; + break; + case DFS_PARAM_RELSTEP: + pe.pe_relstep = param; + break; + case DFS_PARAM_MAXLEN: + pe.pe_maxlen = param; + break; + case DFS_PARAM_USEFIR128: + pe.pe_usefir128 = param; + break; + case DFS_PARAM_BLOCKRADAR: + pe.pe_blockradar = param; + break; + case DFS_PARAM_MAXRSSI_EN: + pe.pe_enmaxrssi = param; + break; + case DFS_PARAM_EN_EXTCH: + pe.pe_extchannel = param; + break; + } + radar->atd.ad_id = DFS_SET_THRESH | ATH_DIAG_IN; + radar->atd.ad_out_data = NULL; + radar->atd.ad_out_size = 0; + radar->atd.ad_in_data = (caddr_t) &pe; + radar->atd.ad_in_size = sizeof(HAL_PHYERR_PARAM); + if (ioctl(radar->s, SIOCGATHPHYERR, &radar->atd) < 0) + err(1, radar->atd.ad_name); +} + +static void +radar_get(struct radarhandler *radar) +{ + HAL_PHYERR_PARAM pe; + + radar->atd.ad_id = DFS_GET_THRESH | ATH_DIAG_DYN; + memset(&pe, 0, sizeof(pe)); + + radar->atd.ad_in_data = NULL; + radar->atd.ad_in_size = 0; + radar->atd.ad_out_data = (caddr_t) &pe; + radar->atd.ad_out_size = sizeof(pe); + + if (ioctl(radar->s, SIOCGATHPHYERR, &radar->atd) < 0) + err(1, radar->atd.ad_name); + + printf("Radar parameters (raw):\n"); + printf(" pe_enabled: %d\n", pe.pe_enabled); + printf(" pe_firpwr: %d\n", pe.pe_firpwr); + printf(" pe_rrssi: %d\n", pe.pe_rrssi); + printf(" pe_height: %d\n", pe.pe_height); + printf(" pe_prssi: %d\n", pe.pe_prssi); + printf(" pe_inband: %d\n", pe.pe_inband); + printf(" pe_relpwr: %d\n", pe.pe_relpwr); + printf(" pe_relstep: %d\n", pe.pe_relstep); + printf(" pe_maxlen: %d\n", pe.pe_maxlen); + printf(" pe_usefir128: %d\n", pe.pe_usefir128); + printf(" pe_blockradar: %d\n", pe.pe_blockradar); + printf(" pe_enmaxrssi: %d\n", pe.pe_enmaxrssi); + printf(" pe_extchannel: %d\n", pe.pe_extchannel); +} + +static int +radar_set_param(struct radarhandler *radar, const char *param, const char *val) +{ + int v; + + v = atoi(val); + + if (strcmp(param, "firpwr") == 0) { + radarset(radar, DFS_PARAM_FIRPWR, v); + } else if (strcmp(param, "rrssi") == 0) { + radarset(radar, DFS_PARAM_RRSSI, v); + } else if (strcmp(param, "height") == 0) { + radarset(radar, DFS_PARAM_HEIGHT, v); + } else if (strcmp(param, "prssi") == 0) { + radarset(radar, DFS_PARAM_PRSSI, v); + } else if (strcmp(param, "inband") == 0) { + radarset(radar, DFS_PARAM_INBAND, v); + } else if (strcmp(param, "relpwr") == 0) { + radarset(radar, DFS_PARAM_RELPWR, v); + } else if (strcmp(param, "relstep") == 0) { + radarset(radar, DFS_PARAM_RELSTEP, v); + } else if (strcmp(param, "maxlen") == 0) { + radarset(radar, DFS_PARAM_MAXLEN, v); + } else if (strcmp(param, "extchannel") == 0) { + radarset(radar, DFS_PARAM_EN_EXTCH, v); + } else { + return 0; + } + + return 1; +} + +void +usage(const char *progname) +{ + printf("Usage:\n"); + printf("\t%s: [-i ] ()\n", progname); + printf("\t%s: [-h]\n", progname); + printf("\n"); + printf("Valid commands:\n"); + printf("\tget:\t\tGet current radar parameters\n"); + printf("\tset :\t\tSet radar parameter\n"); +} + +int +main(int argc, char *argv[]) +{ + struct radarhandler radar; + const char *devname = ATH_DEFAULT; + const char *progname = argv[0]; + + memset(&radar, 0, sizeof(radar)); + + /* Parse command line options */ + if (argc >= 2 && strcmp(argv[1], "-h") == 0) { + usage(progname); + exit(0); + } + if (argc >= 2 && strcmp(argv[1], "-?") == 0) { + usage(progname); + exit(0); + } + + if (argc >= 2 && strcmp(argv[1], "-i") == 0) { + if (argc == 2) { + usage(progname); + exit(127); + } + devname = argv[2]; + argc -= 2; argv += 2; + } + + /* At this point we require at least one command */ + if (argc == 1) { + usage(progname); + exit(127); + } + + if (radar_opendev(&radar, devname) == 0) + exit(127); + + if (strcasecmp(argv[1], "get") == 0) { + radar_get(&radar); + } else if (strcasecmp(argv[1], "set") == 0) { + if (argc < 4) { + usage(progname); + exit(127); + } + if (radar_set_param(&radar, argv[2], argv[3]) == 0) { + usage(progname); + exit(127); + } + } else { + usage(progname); + exit(127); + } + + /* wrap up */ + radar_closedev(&radar); + exit(0); +} From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 09:39:50 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 28BF41065675; Fri, 22 Jul 2011 09:39:50 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0E1AA8FC16; Fri, 22 Jul 2011 09:39:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6M9dnrY008519; Fri, 22 Jul 2011 09:39:49 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6M9dnsR008517; Fri, 22 Jul 2011 09:39:49 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201107220939.p6M9dnsR008517@svn.freebsd.org> From: Adrian Chadd Date: Fri, 22 Jul 2011 09:39:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224267 - head/sys/dev/ath/ath_dfs/null X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 09:39:50 -0000 Author: adrian Date: Fri Jul 22 09:39:49 2011 New Revision: 224267 URL: http://svn.freebsd.org/changeset/base/224267 Log: Implement a basic radar parameter API in the dfs_null module. Since no actual radar data is ever handled, this won't do anything. It's mostly here as a reference for those who wish to experiment with radar detection. Approved by: re (kib) Modified: head/sys/dev/ath/ath_dfs/null/dfs_null.c Modified: head/sys/dev/ath/ath_dfs/null/dfs_null.c ============================================================================== --- head/sys/dev/ath/ath_dfs/null/dfs_null.c Fri Jul 22 09:34:31 2011 (r224266) +++ head/sys/dev/ath/ath_dfs/null/dfs_null.c Fri Jul 22 09:39:49 2011 (r224267) @@ -61,7 +61,7 @@ __FBSDID("$FreeBSD$"); #include #ifdef INET -#include +#include #include #endif @@ -141,12 +141,80 @@ ath_dfs_tasklet_needed(struct ath_softc } /* - * Handle ioctl requests from the diagnostic interface + * Handle ioctl requests from the diagnostic interface. + * + * The initial part of this code resembles ath_ioctl_diag(); + * it's likely a good idea to reduce duplication between + * these two routines. */ int ath_ioctl_phyerr(struct ath_softc *sc, struct ath_diag *ad) { - return 1; + unsigned int id = ad->ad_id & ATH_DIAG_ID; + void *indata = NULL; + void *outdata = NULL; + u_int32_t insize = ad->ad_in_size; + u_int32_t outsize = ad->ad_out_size; + int error = 0; + HAL_PHYERR_PARAM peout; + HAL_PHYERR_PARAM *pe; + + if (ad->ad_id & ATH_DIAG_IN) { + /* + * Copy in data. + */ + indata = malloc(insize, M_TEMP, M_NOWAIT); + if (indata == NULL) { + error = ENOMEM; + goto bad; + } + error = copyin(ad->ad_in_data, indata, insize); + if (error) + goto bad; + } + if (ad->ad_id & ATH_DIAG_DYN) { + /* + * Allocate a buffer for the results (otherwise the HAL + * returns a pointer to a buffer where we can read the + * results). Note that we depend on the HAL leaving this + * pointer for us to use below in reclaiming the buffer; + * may want to be more defensive. + */ + outdata = malloc(outsize, M_TEMP, M_NOWAIT); + if (outdata == NULL) { + error = ENOMEM; + goto bad; + } + } + switch (id) { + case DFS_SET_THRESH: + if (insize < sizeof(HAL_PHYERR_PARAM)) { + error = -EINVAL; + break; + } + pe = (HAL_PHYERR_PARAM *) indata; + ath_hal_enabledfs(sc->sc_ah, pe); + break; + case DFS_GET_THRESH: + memset(&peout, 0, sizeof(peout)); + outsize = sizeof(HAL_PHYERR_PARAM); + ath_hal_getdfsthresh(sc->sc_ah, &peout); + pe = (HAL_PHYERR_PARAM *) outdata; + memcpy(pe, &peout, sizeof(*pe)); + break; + default: + error = -EINVAL; + } + if (outsize < ad->ad_out_size) + ad->ad_out_size = outsize; + if (outdata && copyout(outdata, ad->ad_out_data, ad->ad_out_size)) + error = -EFAULT; +bad: + if ((ad->ad_id & ATH_DIAG_IN) && indata != NULL) + free(indata, M_TEMP); + if ((ad->ad_id & ATH_DIAG_DYN) && outdata != NULL) + free(outdata, M_TEMP); + return error; } /* From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 10:47:51 2011 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D0DA1106564A; Fri, 22 Jul 2011 10:47:51 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id BCDBD8FC0C; Fri, 22 Jul 2011 10:47:50 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id NAA03862; Fri, 22 Jul 2011 13:46:29 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4E295504.2060004@FreeBSD.org> Date: Fri, 22 Jul 2011 13:46:28 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:5.0) Gecko/20110705 Thunderbird/5.0 MIME-Version: 1.0 To: Bruce Evans References: <201107181610.49443.hselasky@c2i.net> <4E26AFF8.8080107@FreeBSD.org> <201107201249.39550.hselasky@c2i.net> <20110720221325.E1436@besplex.bde.org> In-Reply-To: <20110720221325.E1436@besplex.bde.org> X-Enigmail-Version: 1.2pre Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: "svn-src-head@FreeBSD.org" , "svn-src-all@FreeBSD.org" , "src-committers@FreeBSD.org" , Hans Petter Selasky Subject: Re: svn commit: r223989 - head/sys/dev/usb/input X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 10:47:51 -0000 on 20/07/2011 18:32 Bruce Evans said the following: [snip] > The low-level console driver should switch to polling mode to read the > keystrokes. However, its API is broken as designed, so it can only > [tell the driver level to] do this around each poll for a character. > Polling involves polling each possible console in turn, so polling mode > must be left after unsuccessfully polling for a short time so as to > get to the next console. This is now done even if there is only 1 > console. Before the multiple-console changes, polling mode was only > left after _successfully_ polling for as long as necessary to read > a character, so things mostly worked -- the race was only lost if > a character arrives in between polls, and you can't type fast enough > for the time between polls to be significant compared with the time > in polls. [snip] > A non-broken API needs cn_open() and cn_close() functions which would > normally switch the driver in an out of polling mode. Given these > interfaces easy to fix the per-character poll to work as well as before > the multiple console changes, including for multiple active consoles. > Just call cn_open() and cn_close() on every active console around the > whole polling loop. A little more is required to prevent races between > characters, and to avoid the races inherent in the cn_checkc() API. > For multi-char input like that at the mountroot prompt, calling > cn_open() and cn_close() around the loop in gets(9) is adequate. The > functions should be almost no-ops when called nested for things like > this. [snip] Thank you for the great explanation of the issue! I think that your suggestion makes a lot of sense and is the proper approach to fixing this issue. Now we need some sole to actually do the work :-) -- Andriy Gapon From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 12:50:22 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 10A931065672; Fri, 22 Jul 2011 12:50:22 +0000 (UTC) (envelope-from jonathan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 00C9F8FC16; Fri, 22 Jul 2011 12:50:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6MCoLD7017775; Fri, 22 Jul 2011 12:50:21 GMT (envelope-from jonathan@svn.freebsd.org) Received: (from jonathan@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6MCoL4d017773; Fri, 22 Jul 2011 12:50:21 GMT (envelope-from jonathan@svn.freebsd.org) Message-Id: <201107221250.p6MCoL4d017773@svn.freebsd.org> From: Jonathan Anderson Date: Fri, 22 Jul 2011 12:50:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224268 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 12:50:22 -0000 Author: jonathan Date: Fri Jul 22 12:50:21 2011 New Revision: 224268 URL: http://svn.freebsd.org/changeset/base/224268 Log: Turn on AUDIT_ARG_RIGHTS() for cap_new(2). Now that the code is in place to audit capability method rights, start using it to audit the 'rights' argument to cap_new(2). Approved by: re (kib), mentor (rwatson) Sponsored by: Google Inc Modified: head/sys/kern/sys_capability.c Modified: head/sys/kern/sys_capability.c ============================================================================== --- head/sys/kern/sys_capability.c Fri Jul 22 09:39:49 2011 (r224267) +++ head/sys/kern/sys_capability.c Fri Jul 22 12:50:21 2011 (r224268) @@ -224,9 +224,7 @@ cap_new(struct thread *td, struct cap_ne cap_rights_t rights = uap->rights; AUDIT_ARG_FD(fd); -#ifdef notyet /* capability auditing will follow in a few commits */ AUDIT_ARG_RIGHTS(rights); -#endif error = fget(td, fd, &fp); if (error) return (error); From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 15:37:23 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8B6F8106564A; Fri, 22 Jul 2011 15:37:23 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 701B28FC14; Fri, 22 Jul 2011 15:37:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6MFbNvi022688; Fri, 22 Jul 2011 15:37:23 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6MFbNlh022686; Fri, 22 Jul 2011 15:37:23 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201107221537.p6MFbNlh022686@svn.freebsd.org> From: Hans Petter Selasky Date: Fri, 22 Jul 2011 15:37:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224269 - head/sys/dev/pci X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 15:37:23 -0000 Author: hselasky Date: Fri Jul 22 15:37:23 2011 New Revision: 224269 URL: http://svn.freebsd.org/changeset/base/224269 Log: Add missing XHCI early takeover code. The XHCI takeover code is supposed to disable the BIOS from using the XHCI controller after bootup. Approved by: re (kib) Reported by: Mike Tancsa MFC after: 1 week Modified: head/sys/dev/pci/pci.c Modified: head/sys/dev/pci/pci.c ============================================================================== --- head/sys/dev/pci/pci.c Fri Jul 22 12:50:21 2011 (r224268) +++ head/sys/dev/pci/pci.c Fri Jul 22 15:37:23 2011 (r224269) @@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -2956,6 +2957,68 @@ ehci_early_takeover(device_t self) bus_release_resource(self, SYS_RES_MEMORY, rid, res); } +/* Perform early XHCI takeover from SMM. */ +static void +xhci_early_takeover(device_t self) +{ + struct resource *res; + uint32_t cparams; + uint32_t eec; + uint8_t eecp; + uint8_t bios_sem; + uint8_t offs; + int rid; + int i; + + rid = PCIR_BAR(0); + res = bus_alloc_resource_any(self, SYS_RES_MEMORY, &rid, RF_ACTIVE); + if (res == NULL) + return; + + cparams = bus_read_4(res, XHCI_HCSPARAMS0); + + eec = -1; + + /* Synchronise with the BIOS if it owns the controller. */ + for (eecp = XHCI_HCS0_XECP(cparams) << 2; eecp != 0 && XHCI_XECP_NEXT(eec); + eecp += XHCI_XECP_NEXT(eec) << 2) { + eec = bus_read_4(res, eecp); + + if (XHCI_XECP_ID(eec) != XHCI_ID_USB_LEGACY) + continue; + + bios_sem = bus_read_1(res, eecp + XHCI_XECP_BIOS_SEM); + if (bios_sem == 0) + continue; + + if (bootverbose) + printf("xhci early: " + "SMM active, request owner change\n"); + + bus_write_1(res, eecp + XHCI_XECP_OS_SEM, 1); + + /* wait a maximum of 5 second */ + + for (i = 0; (i < 5000) && (bios_sem != 0); i++) { + DELAY(1000); + bios_sem = bus_read_1(res, eecp + + XHCI_XECP_BIOS_SEM); + } + + if (bios_sem != 0) { + if (bootverbose) + printf("xhci early: " + "SMM does not respond\n"); + } + + /* Disable interrupts */ + offs = bus_read_1(res, XHCI_CAPLENGTH); + bus_write_4(res, offs + XHCI_USBCMD, 0); + bus_read_4(res, offs + XHCI_USBSTS); + } + bus_release_resource(self, SYS_RES_MEMORY, rid, res); +} + void pci_add_resources(device_t bus, device_t dev, int force, uint32_t prefetchmask) { @@ -3002,7 +3065,9 @@ pci_add_resources(device_t bus, device_t if (pci_usb_takeover && pci_get_class(dev) == PCIC_SERIALBUS && pci_get_subclass(dev) == PCIS_SERIALBUS_USB) { - if (pci_get_progif(dev) == PCIP_SERIALBUS_USB_EHCI) + if (pci_get_progif(dev) == PCIP_SERIALBUS_USB_XHCI) + xhci_early_takeover(dev); + else if (pci_get_progif(dev) == PCIP_SERIALBUS_USB_EHCI) ehci_early_takeover(dev); else if (pci_get_progif(dev) == PCIP_SERIALBUS_USB_OHCI) ohci_early_takeover(dev); From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 16:37:04 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7E6C5106564A; Fri, 22 Jul 2011 16:37:04 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6C63F8FC19; Fri, 22 Jul 2011 16:37:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6MGb4GF024429; Fri, 22 Jul 2011 16:37:04 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6MGb4GQ024422; Fri, 22 Jul 2011 16:37:04 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201107221637.p6MGb4GQ024422@svn.freebsd.org> From: Alexander Motin Date: Fri, 22 Jul 2011 16:37:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224270 - in head/sys/dev/ata: . chipsets X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 16:37:04 -0000 Author: mav Date: Fri Jul 22 16:37:04 2011 New Revision: 224270 URL: http://svn.freebsd.org/changeset/base/224270 Log: - Use mutex to serialize index/data register pair usage, when accessing SATA registers. Unserialized access under heavy load caused wrong speed reporting and potentially could cause device loss. - To free memory and other resources (including above), allocated during chipinit() method call on attach, add new chipdeinit() method, called during driver detach. Submitted by: Andrew Boyer (initial version) Approved by: re (kib) MFC after: 1 week Modified: head/sys/dev/ata/ata-pci.c head/sys/dev/ata/ata-pci.h head/sys/dev/ata/chipsets/ata-acard.c head/sys/dev/ata/chipsets/ata-acerlabs.c head/sys/dev/ata/chipsets/ata-intel.c head/sys/dev/ata/chipsets/ata-promise.c Modified: head/sys/dev/ata/ata-pci.c ============================================================================== --- head/sys/dev/ata/ata-pci.c Fri Jul 22 15:37:23 2011 (r224269) +++ head/sys/dev/ata/ata-pci.c Fri Jul 22 16:37:04 2011 (r224270) @@ -49,8 +49,7 @@ __FBSDID("$FreeBSD$"); #include #include -/* local vars */ -static MALLOC_DEFINE(M_ATAPCI, "ata_pci", "ATA driver PCI"); +MALLOC_DEFINE(M_ATAPCI, "ata_pci", "ATA driver PCI"); /* misc defines */ #define IOMASK 0xfffffffc @@ -146,13 +145,14 @@ ata_pci_detach(device_t dev) device_delete_child(dev, children[i]); free(children, M_TEMP); } - if (ctlr->r_irq) { bus_teardown_intr(dev, ctlr->r_irq, ctlr->handle); bus_release_resource(dev, SYS_RES_IRQ, ctlr->r_irq_rid, ctlr->r_irq); if (ctlr->r_irq_rid != ATA_IRQ_RID) pci_release_msi(dev); } + if (ctlr->chipdeinit != NULL) + ctlr->chipdeinit(dev); if (ctlr->r_res2) bus_release_resource(dev, ctlr->r_type2, ctlr->r_rid2, ctlr->r_res2); if (ctlr->r_res1) Modified: head/sys/dev/ata/ata-pci.h ============================================================================== --- head/sys/dev/ata/ata-pci.h Fri Jul 22 15:37:23 2011 (r224269) +++ head/sys/dev/ata/ata-pci.h Fri Jul 22 16:37:04 2011 (r224270) @@ -55,6 +55,7 @@ struct ata_pci_controller { int channels; int ichannels; int (*chipinit)(device_t); + int (*chipdeinit)(device_t); int (*suspend)(device_t); int (*resume)(device_t); int (*ch_attach)(device_t); @@ -579,6 +580,8 @@ int ata_sii_chipinit(device_t); /* externs */ extern devclass_t ata_pci_devclass; +MALLOC_DECLARE(M_ATAPCI); + /* macro for easy definition of all driver module stuff */ #define ATA_DECLARE_DRIVER(dname) \ static device_method_t __CONCAT(dname,_methods)[] = { \ Modified: head/sys/dev/ata/chipsets/ata-acard.c ============================================================================== --- head/sys/dev/ata/chipsets/ata-acard.c Fri Jul 22 15:37:23 2011 (r224269) +++ head/sys/dev/ata/chipsets/ata-acard.c Fri Jul 22 16:37:04 2011 (r224270) @@ -59,6 +59,7 @@ struct ata_serialize { /* local prototypes */ static int ata_acard_chipinit(device_t dev); +static int ata_acard_chipdeinit(device_t dev); static int ata_acard_ch_attach(device_t dev); static int ata_acard_status(device_t dev); static int ata_acard_850_setmode(device_t dev, int target, int mode); @@ -93,6 +94,7 @@ ata_acard_probe(device_t dev) ata_set_desc(dev); ctlr->chipinit = ata_acard_chipinit; + ctlr->chipdeinit = ata_acard_chipdeinit; return (BUS_PROBE_DEFAULT); } @@ -111,7 +113,7 @@ ata_acard_chipinit(device_t dev) ctlr->setmode = ata_acard_850_setmode; ctlr->locking = ata_serialize; serial = malloc(sizeof(struct ata_serialize), - M_TEMP, M_WAITOK | M_ZERO); + M_ATAPCI, M_WAITOK | M_ZERO); ata_serialize_init(serial); ctlr->chipset_data = serial; } @@ -121,6 +123,21 @@ ata_acard_chipinit(device_t dev) } static int +ata_acard_chipdeinit(device_t dev) +{ + struct ata_pci_controller *ctlr = device_get_softc(dev); + struct ata_serialize *serial; + + if (ctlr->chip->cfg1 == ATP_OLD) { + serial = ctlr->chipset_data; + mtx_destroy(&serial->locked_mtx); + free(serial, M_ATAPCI); + ctlr->chipset_data = NULL; + } + return (0); +} + +static int ata_acard_ch_attach(device_t dev) { struct ata_channel *ch = device_get_softc(dev); Modified: head/sys/dev/ata/chipsets/ata-acerlabs.c ============================================================================== --- head/sys/dev/ata/chipsets/ata-acerlabs.c Fri Jul 22 15:37:23 2011 (r224269) +++ head/sys/dev/ata/chipsets/ata-acerlabs.c Fri Jul 22 16:37:04 2011 (r224270) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); /* local prototypes */ static int ata_ali_chipinit(device_t dev); +static int ata_ali_chipdeinit(device_t dev); static int ata_ali_ch_attach(device_t dev); static int ata_ali_sata_ch_attach(device_t dev); static void ata_ali_reset(device_t dev); @@ -95,6 +96,7 @@ ata_ali_probe(device_t dev) ata_set_desc(dev); ctlr->chipinit = ata_ali_chipinit; + ctlr->chipdeinit = ata_ali_chipdeinit; return (BUS_PROBE_DEFAULT); } @@ -122,7 +124,7 @@ ata_ali_chipinit(device_t dev) return 0; /* Allocate resources for later use by channel attach routines. */ - res = malloc(sizeof(struct ali_sata_resources), M_TEMP, M_WAITOK); + res = malloc(sizeof(struct ali_sata_resources), M_ATAPCI, M_WAITOK); for (i = 0; i < 4; i++) { rid = PCIR_BAR(i); res->bars[i] = bus_alloc_resource_any(dev, SYS_RES_IOPORT, &rid, @@ -173,6 +175,27 @@ ata_ali_chipinit(device_t dev) } static int +ata_ali_chipdeinit(device_t dev) +{ + struct ata_pci_controller *ctlr = device_get_softc(dev); + struct ali_sata_resources *res; + int i; + + if (ctlr->chip->cfg2 == ALI_SATA) { + res = ctlr->chipset_data; + for (i = 0; i < 4; i++) { + if (res->bars[i] != NULL) { + bus_release_resource(dev, SYS_RES_IOPORT, + PCIR_BAR(i), res->bars[i]); + } + } + free(res, M_ATAPCI); + ctlr->chipset_data = NULL; + } + return (0); +} + +static int ata_ali_ch_attach(device_t dev) { struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev)); Modified: head/sys/dev/ata/chipsets/ata-intel.c ============================================================================== --- head/sys/dev/ata/chipsets/ata-intel.c Fri Jul 22 15:37:23 2011 (r224269) +++ head/sys/dev/ata/chipsets/ata-intel.c Fri Jul 22 16:37:04 2011 (r224270) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); /* local prototypes */ static int ata_intel_chipinit(device_t dev); +static int ata_intel_chipdeinit(device_t dev); static int ata_intel_ch_attach(device_t dev); static void ata_intel_reset(device_t dev); static int ata_intel_old_setmode(device_t dev, int target, int mode); @@ -85,6 +86,18 @@ static void ata_intel_31244_reset(device #define INTEL_6CH2 8 #define INTEL_ICH7 16 +struct ata_intel_data { + struct mtx lock; + u_char smap[4]; +}; + +#define ATA_INTEL_SMAP(ctlr, ch) \ + &((struct ata_intel_data *)((ctlr)->chipset_data))->smap[(ch)->unit * 2] +#define ATA_INTEL_LOCK(ctlr) \ + mtx_lock(&((struct ata_intel_data *)((ctlr)->chipset_data))->lock) +#define ATA_INTEL_UNLOCK(ctlr) \ + mtx_unlock(&((struct ata_intel_data *)((ctlr)->chipset_data))->lock) + /* * Intel chipset support functions */ @@ -206,6 +219,7 @@ ata_intel_probe(device_t dev) ata_set_desc(dev); ctlr->chipinit = ata_intel_chipinit; + ctlr->chipdeinit = ata_intel_chipdeinit; return (BUS_PROBE_DEFAULT); } @@ -213,11 +227,14 @@ static int ata_intel_chipinit(device_t dev) { struct ata_pci_controller *ctlr = device_get_softc(dev); + struct ata_intel_data *data; if (ata_setup_interrupt(dev, ata_generic_intr)) return ENXIO; - ctlr->chipset_data = NULL; + data = malloc(sizeof(struct ata_intel_data), M_ATAPCI, M_WAITOK | M_ZERO); + mtx_init(&data->lock, "Intel SATA lock", NULL, MTX_DEF); + ctlr->chipset_data = (void *)data; /* good old PIIX needs special treatment (not implemented) */ if (ctlr->chip->chipid == ATA_I82371FB) { @@ -305,6 +322,19 @@ ata_intel_chipinit(device_t dev) } static int +ata_intel_chipdeinit(device_t dev) +{ + struct ata_pci_controller *ctlr = device_get_softc(dev); + struct ata_intel_data *data; + + data = ctlr->chipset_data; + mtx_destroy(&data->lock); + free(data, M_ATAPCI); + ctlr->chipset_data = NULL; + return (0); +} + +static int ata_intel_ch_attach(device_t dev) { struct ata_pci_controller *ctlr; @@ -329,7 +359,7 @@ ata_intel_ch_attach(device_t dev) ch->flags |= ATA_ALWAYS_DMASTAT; if (ctlr->chip->max_dma >= ATA_SA150) { - smap = (u_char *)&ctlr->chipset_data + ch->unit * 2; + smap = ATA_INTEL_SMAP(ctlr, ch); map = pci_read_config(device_get_parent(dev), 0x90, 1); if (ctlr->chip->cfg1 & INTEL_ICH5) { map &= 0x07; @@ -415,7 +445,7 @@ ata_intel_reset(device_t dev) return (ata_generic_reset(dev)); /* Do hard-reset on respective SATA ports. */ - smap = (u_char *)&ctlr->chipset_data + ch->unit * 2; + smap = ATA_INTEL_SMAP(ctlr, ch); mask = 1 << smap[0]; if ((ch->flags & ATA_NO_SLAVE) == 0) mask |= (1 << smap[1]); @@ -605,7 +635,7 @@ ata_intel_sata_ahci_read(device_t dev, i ctlr = device_get_softc(parent); ch = device_get_softc(dev); port = (port == 1) ? 1 : 0; - smap = (u_char *)&ctlr->chipset_data + ch->unit * 2; + smap = ATA_INTEL_SMAP(ctlr, ch); offset = 0x100 + smap[port] * 0x80; switch (reg) { case ATA_SSTATUS: @@ -635,7 +665,7 @@ ata_intel_sata_cscr_read(device_t dev, i parent = device_get_parent(dev); ctlr = device_get_softc(parent); ch = device_get_softc(dev); - smap = (u_char *)&ctlr->chipset_data + ch->unit * 2; + smap = ATA_INTEL_SMAP(ctlr, ch); port = (port == 1) ? 1 : 0; switch (reg) { case ATA_SSTATUS: @@ -650,9 +680,11 @@ ata_intel_sata_cscr_read(device_t dev, i default: return (EINVAL); } + ATA_INTEL_LOCK(ctlr); pci_write_config(parent, 0xa0, 0x50 + smap[port] * 0x10 + reg * 4, 4); *result = pci_read_config(parent, 0xa4, 4); + ATA_INTEL_UNLOCK(ctlr); return (0); } @@ -680,8 +712,10 @@ ata_intel_sata_sidpr_read(device_t dev, default: return (EINVAL); } + ATA_INTEL_LOCK(ctlr); ATA_IDX_OUTL(ch, ATA_IDX_ADDR, ((ch->unit * 2 + port) << 8) + reg); *result = ATA_IDX_INL(ch, ATA_IDX_DATA); + ATA_INTEL_UNLOCK(ctlr); return (0); } @@ -698,7 +732,7 @@ ata_intel_sata_ahci_write(device_t dev, ctlr = device_get_softc(parent); ch = device_get_softc(dev); port = (port == 1) ? 1 : 0; - smap = (u_char *)&ctlr->chipset_data + ch->unit * 2; + smap = ATA_INTEL_SMAP(ctlr, ch); offset = 0x100 + smap[port] * 0x80; switch (reg) { case ATA_SSTATUS: @@ -728,7 +762,7 @@ ata_intel_sata_cscr_write(device_t dev, parent = device_get_parent(dev); ctlr = device_get_softc(parent); ch = device_get_softc(dev); - smap = (u_char *)&ctlr->chipset_data + ch->unit * 2; + smap = ATA_INTEL_SMAP(ctlr, ch); port = (port == 1) ? 1 : 0; switch (reg) { case ATA_SSTATUS: @@ -743,9 +777,11 @@ ata_intel_sata_cscr_write(device_t dev, default: return (EINVAL); } + ATA_INTEL_LOCK(ctlr); pci_write_config(parent, 0xa0, 0x50 + smap[port] * 0x10 + reg * 4, 4); pci_write_config(parent, 0xa4, value, 4); + ATA_INTEL_UNLOCK(ctlr); return (0); } @@ -773,8 +809,10 @@ ata_intel_sata_sidpr_write(device_t dev, default: return (EINVAL); } + ATA_INTEL_LOCK(ctlr); ATA_IDX_OUTL(ch, ATA_IDX_ADDR, ((ch->unit * 2 + port) << 8) + reg); ATA_IDX_OUTL(ch, ATA_IDX_DATA, value); + ATA_INTEL_UNLOCK(ctlr); return (0); } Modified: head/sys/dev/ata/chipsets/ata-promise.c ============================================================================== --- head/sys/dev/ata/chipsets/ata-promise.c Fri Jul 22 15:37:23 2011 (r224269) +++ head/sys/dev/ata/chipsets/ata-promise.c Fri Jul 22 16:37:04 2011 (r224270) @@ -280,7 +280,7 @@ ata_promise_chipinit(device_t dev) /* setup host packet controls */ hpkt = malloc(sizeof(struct ata_promise_sx4), - M_TEMP, M_NOWAIT | M_ZERO); + M_ATAPCI, M_NOWAIT | M_ZERO); mtx_init(&hpkt->mtx, "ATA promise HPKT lock", NULL, MTX_DEF); TAILQ_INIT(&hpkt->queue); hpkt->busy = 0; From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 16:42:12 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AC3EE106566C; Fri, 22 Jul 2011 16:42:12 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 99F8D8FC18; Fri, 22 Jul 2011 16:42:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6MGgCRq024600; Fri, 22 Jul 2011 16:42:12 GMT (envelope-from tuexen@svn.freebsd.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6MGgCDM024598; Fri, 22 Jul 2011 16:42:12 GMT (envelope-from tuexen@svn.freebsd.org) Message-Id: <201107221642.p6MGgCDM024598@svn.freebsd.org> From: Michael Tuexen Date: Fri, 22 Jul 2011 16:42:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224271 - head/usr.bin/netstat X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 16:42:12 -0000 Author: tuexen Date: Fri Jul 22 16:42:12 2011 New Revision: 224271 URL: http://svn.freebsd.org/changeset/base/224271 Log: Fix the following bugs related to the SCTP support of netstat: * Correctly handle -a. * -A isn't supported. * Show all closed 1-to-1 and 1-to-many style sockets. * Show all listening 1-to-many style sockets. * Use consistent formatting for -W. PR: 150642 Approved by: re@ MFC after: 4 weeks. Modified: head/usr.bin/netstat/sctp.c Modified: head/usr.bin/netstat/sctp.c ============================================================================== --- head/usr.bin/netstat/sctp.c Fri Jul 22 16:37:04 2011 (r224270) +++ head/usr.bin/netstat/sctp.c Fri Jul 22 16:42:12 2011 (r224271) @@ -1,5 +1,6 @@ /*- * Copyright (c) 2001-2007, by Weongyo Jeong. All rights reserved. + * Copyright (c) 2011, by Michael Tuexen. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -63,7 +64,6 @@ __FBSDID("$FreeBSD$"); #ifdef SCTP -void inetprint(struct in_addr *, int, const char *, int); static void sctp_statesprint(uint32_t state); #define NETSTAT_SCTP_STATES_CLOSED 0x0 @@ -102,6 +102,124 @@ struct xraddr_entry { LIST_ENTRY(xraddr_entry) xraddr_entries; }; +/* + * Construct an Internet address representation. + * If numeric_addr has been supplied, give + * numeric value, otherwise try for symbolic name. + */ +static char * +inetname(struct in_addr *inp) +{ + char *cp; + static char line[MAXHOSTNAMELEN]; + struct hostent *hp; + struct netent *np; + + cp = 0; + if (!numeric_addr && inp->s_addr != INADDR_ANY) { + int net = inet_netof(*inp); + int lna = inet_lnaof(*inp); + + if (lna == INADDR_ANY) { + np = getnetbyaddr(net, AF_INET); + if (np) + cp = np->n_name; + } + if (cp == 0) { + hp = gethostbyaddr((char *)inp, sizeof (*inp), AF_INET); + if (hp) { + cp = hp->h_name; + trimdomain(cp, strlen(cp)); + } + } + } + if (inp->s_addr == INADDR_ANY) + strcpy(line, "*"); + else if (cp) { + strlcpy(line, cp, sizeof(line)); + } else { + inp->s_addr = ntohl(inp->s_addr); +#define C(x) ((u_int)((x) & 0xff)) + sprintf(line, "%u.%u.%u.%u", C(inp->s_addr >> 24), + C(inp->s_addr >> 16), C(inp->s_addr >> 8), C(inp->s_addr)); + inp->s_addr = htonl(inp->s_addr); + } + return (line); +} + +#ifdef INET6 +static char ntop_buf[INET6_ADDRSTRLEN]; + +static char * +inet6name(struct in6_addr *in6p) +{ + char *cp; + static char line[50]; + struct hostent *hp; + static char domain[MAXHOSTNAMELEN]; + static int first = 1; + + if (first && !numeric_addr) { + first = 0; + if (gethostname(domain, MAXHOSTNAMELEN) == 0 && + (cp = index(domain, '.'))) + (void) strcpy(domain, cp + 1); + else + domain[0] = 0; + } + cp = 0; + if (!numeric_addr && !IN6_IS_ADDR_UNSPECIFIED(in6p)) { + hp = gethostbyaddr((char *)in6p, sizeof(*in6p), AF_INET6); + if (hp) { + if ((cp = index(hp->h_name, '.')) && + !strcmp(cp + 1, domain)) + *cp = 0; + cp = hp->h_name; + } + } + if (IN6_IS_ADDR_UNSPECIFIED(in6p)) + strcpy(line, "*"); + else if (cp) + strcpy(line, cp); + else + sprintf(line, "%s", + inet_ntop(AF_INET6, (void *)in6p, ntop_buf, + sizeof(ntop_buf))); + return (line); +} +#endif + +static void +sctp_print_address(union sctp_sockstore *address, int port, int num_port) +{ + struct servent *sp = 0; + char line[80], *cp; + int width; + + switch (address->sa.sa_family) { + case AF_INET: + sprintf(line, "%.*s.", Wflag ? 39 : 16, inetname(&address->sin.sin_addr)); + break; +#ifdef INET6 + case AF_INET6: + sprintf(line, "%.*s.", Wflag ? 39 : 16, inet6name(&address->sin6.sin6_addr)); + break; +#endif + default: + sprintf(line, "%.*s.", Wflag ? 39 : 16, ""); + break; + } + cp = index(line, '\0'); + if (!num_port && port) + sp = getservbyport((int)port, "sctp"); + if (sp || port == 0) + sprintf(cp, "%.15s ", sp ? sp->s_name : "*"); + else + sprintf(cp, "%d ", ntohs((u_short)port)); + width = Wflag ? 45 : 22; + printf("%-*.*s ", width, width, line); +} + static int sctp_skip_xinpcb_ifneed(char *buf, const size_t buflen, size_t *offset) { @@ -150,18 +268,14 @@ sctp_skip_xinpcb_ifneed(char *buf, const } static void -sctp_process_tcb(struct xsctp_tcb *xstcb, const char *name, +sctp_process_tcb(struct xsctp_tcb *xstcb, char *buf, const size_t buflen, size_t *offset, int *indent) { int i, xl_total = 0, xr_total = 0, x_max; - struct sockaddr *sa; struct xsctp_raddr *xraddr; struct xsctp_laddr *xladdr; struct xladdr_entry *prev_xl = NULL, *xl = NULL, *xl_tmp; struct xraddr_entry *prev_xr = NULL, *xr = NULL, *xr_tmp; -#ifdef INET6 - struct sockaddr_in6 *in6; -#endif LIST_INIT(&xladdr_head); LIST_INIT(&xraddr_head); @@ -220,38 +334,22 @@ sctp_process_tcb(struct xsctp_tcb *xstcb x_max = (xl_total > xr_total) ? xl_total : xr_total; for (i = 0; i < x_max; i++) { if (((*indent == 0) && i > 0) || *indent > 0) - printf("%-11s ", " "); + printf("%-12s ", " "); if (xl != NULL) { - sa = &(xl->xladdr->address.sa); - if ((sa->sa_family) == AF_INET) - inetprint(&((struct sockaddr_in *)sa)->sin_addr, - htons(xstcb->local_port), - name, numeric_port); -#ifdef INET6 - else { - in6 = (struct sockaddr_in6 *)sa; - inet6print(&in6->sin6_addr, - htons(xstcb->local_port), - name, numeric_port); + sctp_print_address(&(xl->xladdr->address), + htons(xstcb->local_port), numeric_port); + } else { + if (Wflag) { + printf("%-45s ", " "); + } else { + printf("%-22s ", " "); } -#endif } if (xr != NULL && !Lflag) { - sa = &(xr->xraddr->address.sa); - if ((sa->sa_family) == AF_INET) - inetprint(&((struct sockaddr_in *)sa)->sin_addr, - htons(xstcb->remote_port), - name, numeric_port); -#ifdef INET6 - else { - in6 = (struct sockaddr_in6 *)sa; - inet6print(&in6->sin6_addr, - htons(xstcb->remote_port), - name, numeric_port); - } -#endif + sctp_print_address(&(xr->xraddr->address), + htons(xstcb->remote_port), numeric_port); } if (xl != NULL) @@ -285,53 +383,21 @@ out: } } -#ifdef SCTP_DEBUG -uint32_t sctp_pdup[64]; -int sctp_pcnt = 0; -#endif - static void -sctp_process_inpcb(struct xsctp_inpcb *xinpcb, const char *name, +sctp_process_inpcb(struct xsctp_inpcb *xinpcb, char *buf, const size_t buflen, size_t *offset) { - int offset_backup, indent = 0, xladdr_total = 0, is_listening = 0; + int indent = 0, xladdr_total = 0, is_listening = 0; static int first = 1; - char *tname; + char *tname, *pname; struct xsctp_tcb *xstcb; struct xsctp_laddr *xladdr; - struct sockaddr *sa; -#ifdef INET6 - struct sockaddr_in6 *in6; -#endif + size_t offset_laddr; + int process_closed; - if ((xinpcb->flags & SCTP_PCB_FLAGS_TCPTYPE) == - SCTP_PCB_FLAGS_TCPTYPE && xinpcb->maxqlen > 0) + if (xinpcb->maxqlen > 0) is_listening = 1; - if (!Lflag && !is_listening && - !(xinpcb->flags & SCTP_PCB_FLAGS_CONNECTED)) { -#ifdef SCTP_DEBUG - int i, found = 0; - - for (i = 0; i < sctp_pcnt; i++) { - if (sctp_pdup[i] == xinpcb->flags) { - found = 1; - break; - } - } - if (!found) { - sctp_pdup[sctp_pcnt++] = xinpcb->flags; - if (sctp_pcnt >= 64) - sctp_pcnt = 0; - printf("[0x%08x]", xinpcb->flags); - } -#endif - offset_backup = *offset; - if (!sctp_skip_xinpcb_ifneed(buf, buflen, offset)) - return; - *offset = offset_backup; - } - if (first) { if (!Lflag) { printf("Active SCTP associations"); @@ -340,90 +406,115 @@ sctp_process_inpcb(struct xsctp_inpcb *x } else printf("Current listen queue sizes (qlen/maxqlen)"); putchar('\n'); - if (Aflag) - printf("%-8.8s ", "Socket"); if (Lflag) - printf("%-5.5s %-5.5s %-8.8s %-22.22s\n", + printf("%-6.6s %-5.5s %-8.8s %-22.22s\n", "Proto", "Type", "Listen", "Local Address"); else - printf((Aflag && !Wflag) ? - "%-5.5s %-5.5s %-18.18s %-18.18s %s\n" : - "%-5.5s %-5.5s %-22.22s %-22.22s %s\n", - "Proto", "Type", - "Local Address", "Foreign Address", - "(state)"); + if (Wflag) + printf("%-6.6s %-5.5s %-45.45s %-45.45s %s\n", + "Proto", "Type", + "Local Address", "Foreign Address", + "(state)"); + else + printf("%-6.6s %-5.5s %-22.22s %-22.22s %s\n", + "Proto", "Type", + "Local Address", "Foreign Address", + "(state)"); first = 0; } - if (Lflag && xinpcb->maxqlen == 0) { + xladdr = (struct xsctp_laddr *)(buf + *offset); + if (Lflag && !is_listening) { sctp_skip_xinpcb_ifneed(buf, buflen, offset); return; } - if (Aflag) - printf("%8lx ", (u_long)xinpcb); - printf("%-5.5s ", name); + if (xinpcb->flags & SCTP_PCB_FLAGS_BOUND_V6) { + /* Can't distinguish between sctp46 and sctp6 */ + pname = "sctp46"; + } else { + pname = "sctp4"; + } if (xinpcb->flags & SCTP_PCB_FLAGS_TCPTYPE) tname = "1to1"; else if (xinpcb->flags & SCTP_PCB_FLAGS_UDPTYPE) tname = "1toN"; else - return; - - printf("%-5.5s ", tname); + tname = "????"; if (Lflag) { char buf1[9]; snprintf(buf1, 9, "%hu/%hu", xinpcb->qlen, xinpcb->maxqlen); + printf("%-6.6s %-5.5s ", pname, tname); printf("%-8.8s ", buf1); } - /* - * process the local address. This routine are used for Lflag. - */ + + offset_laddr = *offset; + process_closed = 0; +retry: while (*offset < buflen) { xladdr = (struct xsctp_laddr *)(buf + *offset); *offset += sizeof(struct xsctp_laddr); - if (xladdr->last == 1) + if (xladdr->last) { + if (aflag && !Lflag && (xladdr_total == 0) && process_closed) { + printf("%-6.6s %-5.5s ", pname, tname); + if (Wflag) { + printf("%-91.91s CLOSED", " "); + } else { + printf("%-45.45s CLOSED", " "); + } + } + if (process_closed || is_listening) { + putchar('\n'); + } break; + } - if (!Lflag && !is_listening) + if (!Lflag && !is_listening && !process_closed) continue; - if (xladdr_total != 0) + if (xladdr_total == 0) { + printf("%-6.6s %-5.5s ", pname, tname); + } else { putchar('\n'); - if (xladdr_total > 0) printf((Lflag) ? - "%-20.20s " : "%-11.11s ", " "); - - sa = &(xladdr->address.sa); - if ((sa->sa_family) == AF_INET) - inetprint(&((struct sockaddr_in *)sa)->sin_addr, - htons(xinpcb->local_port), name, numeric_port); -#ifdef INET6 - else { - in6 = (struct sockaddr_in6 *)sa; - inet6print(&in6->sin6_addr, - htons(xinpcb->local_port), name, numeric_port); + "%-21.21s " : "%-12.12s ", " "); + } + sctp_print_address(&(xladdr->address), + htons(xinpcb->local_port), numeric_port); + if (aflag && !Lflag && xladdr_total == 0) { + if (Wflag) { + if (process_closed) { + printf("%-45.45s CLOSED", " "); + } else { + printf("%-45.45s LISTEN", " "); + } + } else { + if (process_closed) { + printf("%-22.22s CLOSED", " "); + } else { + printf("%-22.22s LISTEN", " "); + } + } } -#endif - - if (!Lflag && xladdr_total == 0 && is_listening == 1) - printf("%-22.22s LISTEN", " "); - xladdr_total++; } xstcb = (struct xsctp_tcb *)(buf + *offset); *offset += sizeof(struct xsctp_tcb); + if (aflag && (xladdr_total == 0) && xstcb->last && !process_closed) { + process_closed = 1; + *offset = offset_laddr; + goto retry; + } while (xstcb->last == 0 && *offset < buflen) { - sctp_process_tcb(xstcb, name, buf, buflen, offset, &indent); + printf("%-6.6s %-5.5s ", pname, tname); + sctp_process_tcb(xstcb, buf, buflen, offset, &indent); indent++; xstcb = (struct xsctp_tcb *)(buf + *offset); *offset += sizeof(struct xsctp_tcb); } - - putchar('\n'); } /* @@ -461,7 +552,7 @@ sctp_protopr(u_long off __unused, xinpcb = (struct xsctp_inpcb *)(buf + offset); offset += sizeof(struct xsctp_inpcb); while (xinpcb->last == 0 && offset < len) { - sctp_process_inpcb(xinpcb, name, buf, (const size_t)len, + sctp_process_inpcb(xinpcb, buf, (const size_t)len, &offset); xinpcb = (struct xsctp_inpcb *)(buf + offset); From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 18:03:33 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7234F106566C; Fri, 22 Jul 2011 18:03:33 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 618F78FC16; Fri, 22 Jul 2011 18:03:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6MI3X0F027037; Fri, 22 Jul 2011 18:03:33 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6MI3X1j027035; Fri, 22 Jul 2011 18:03:33 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201107221803.p6MI3X1j027035@svn.freebsd.org> From: Kirk McKusick Date: Fri, 22 Jul 2011 18:03:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224272 - head/sys/ufs/ffs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 18:03:33 -0000 Author: mckusick Date: Fri Jul 22 18:03:33 2011 New Revision: 224272 URL: http://svn.freebsd.org/changeset/base/224272 Log: Default debugging error messages to off for journaled soft updates sysctls. Delete limiting on output of these sysctls. Approved by: re (kib) Modified: head/sys/ufs/ffs/ffs_alloc.c Modified: head/sys/ufs/ffs/ffs_alloc.c ============================================================================== --- head/sys/ufs/ffs/ffs_alloc.c Fri Jul 22 16:42:12 2011 (r224271) +++ head/sys/ufs/ffs/ffs_alloc.c Fri Jul 22 18:03:33 2011 (r224272) @@ -2447,7 +2447,7 @@ static SYSCTL_NODE(_vfs_ffs, FFS_SET_BUF #define DEBUG 1 #ifdef DEBUG -static int fsckcmds = 1; +static int fsckcmds = 0; SYSCTL_INT(_debug, OID_AUTO, fsckcmds, CTLFLAG_RW, &fsckcmds, 0, ""); #endif /* DEBUG */ @@ -2470,7 +2470,6 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) struct file *fp, *vfp; int vfslocked, filetype, error; static struct fileops *origops, bufferedops; - static int outcnt = 0; if (req->newlen > sizeof cmd) return (EBADRPC); @@ -2755,7 +2754,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) break; } #ifdef DEBUG - if (fsckcmds && outcnt++ < 100) { + if (fsckcmds) { printf("%s: update inode %jd\n", mp->mnt_stat.f_mntonname, (intmax_t)cmd.value); } @@ -2857,7 +2856,6 @@ buffered_write(fp, uio, active_cred, fla struct fs *fs; int error, vfslocked; daddr_t lbn; - static int outcnt = 0; /* * The devvp is associated with the /dev filesystem. To discover @@ -2875,7 +2873,7 @@ buffered_write(fp, uio, active_cred, fla if ((flags & FOF_OFFSET) == 0) uio->uio_offset = fp->f_offset; #ifdef DEBUG - if (fsckcmds && outcnt++ < 100) { + if (fsckcmds) { printf("%s: buffered write for block %jd\n", fs->fs_fsmnt, (intmax_t)btodb(uio->uio_offset)); } From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 20:43:17 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F7C6106566B; Fri, 22 Jul 2011 20:43:17 +0000 (UTC) (envelope-from alexander@leidinger.net) Received: from mail.ebusiness-leidinger.de (mail.ebusiness-leidinger.de [217.11.53.44]) by mx1.freebsd.org (Postfix) with ESMTP id 2673B8FC12; Fri, 22 Jul 2011 20:43:16 +0000 (UTC) Received: from outgoing.leidinger.net (p4FC418BA.dip.t-dialin.net [79.196.24.186]) by mail.ebusiness-leidinger.de (Postfix) with ESMTPSA id 4CCF784400D; Fri, 22 Jul 2011 22:26:53 +0200 (CEST) Received: from unknown (IO.Leidinger.net [192.168.1.12]) by outgoing.leidinger.net (Postfix) with ESMTP id 87F222A97; Fri, 22 Jul 2011 22:26:50 +0200 (CEST) Date: Fri, 22 Jul 2011 22:26:49 +0200 From: Alexander Leidinger To: Andriy Gapon Message-ID: <20110722222649.0000534f@unknown> In-Reply-To: <4E295504.2060004@FreeBSD.org> References: <201107181610.49443.hselasky@c2i.net> <4E26AFF8.8080107@FreeBSD.org> <201107201249.39550.hselasky@c2i.net> <20110720221325.E1436@besplex.bde.org> <4E295504.2060004@FreeBSD.org> X-Mailer: Claws Mail 3.7.8cvs47 (GTK+ 2.16.6; i586-pc-mingw32msvc) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-EBL-MailScanner-Information: Please contact the ISP for more information X-EBL-MailScanner-ID: 4CCF784400D.A0623 X-EBL-MailScanner: Found to be clean X-EBL-MailScanner-SpamCheck: not spam, spamhaus-ZEN, SpamAssassin (not cached, score=-0.923, required 6, autolearn=disabled, ALL_TRUSTED -1.00, TW_SV 0.08) X-EBL-MailScanner-From: alexander@leidinger.net X-EBL-MailScanner-Watermark: 1311971213.6309@WoQfhDqwxp1vrmFrf7/pqw X-EBL-Spam-Status: No Cc: "svn-src-head@FreeBSD.org" , "svn-src-all@FreeBSD.org" , "src-committers@FreeBSD.org" , Bruce Evans , Hans Petter Selasky Subject: Re: svn commit: r223989 - head/sys/dev/usb/input X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 20:43:17 -0000 On Fri, 22 Jul 2011 13:46:28 +0300 Andriy Gapon wrote: > I think that your suggestion makes a lot of sense and is the proper > approach to fixing this issue. Now we need some sole to actually do > the work :-) Or at least someone who documents the need to do it (and either the explanation or a link to it) in the wiki in the ideas list... ENOTIME ATM from my side. Bye, Alexander. -- http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137 From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 20:58:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A7791106564A; Fri, 22 Jul 2011 20:58:09 +0000 (UTC) (envelope-from crodr001@gmail.com) Received: from mail-ew0-f54.google.com (mail-ew0-f54.google.com [209.85.215.54]) by mx1.freebsd.org (Postfix) with ESMTP id 69E228FC13; Fri, 22 Jul 2011 20:58:08 +0000 (UTC) Received: by ewy1 with SMTP id 1so2619306ewy.13 for ; Fri, 22 Jul 2011 13:58:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=aEY/NqU54dwN9lpVXnIg+8Lks94Ukw4BUuT2WNw1EYQ=; b=G42Qe120evfS9N2tx0yosAYubvmKM6dlVFK20l1OsyH0gVtFIBMHQgPpKKqHrDvQWf AJEixyqGTsgYWF+vArPqniNzcLhXV1SA36aVBWKhyEXjXBmrxh/4JoiAz9IvZ6rVTRyG xpB+fbIi/Xcg8AGXwrtRsi7dRQ0h9+sTbYNUA= MIME-Version: 1.0 Received: by 10.213.15.76 with SMTP id j12mr835842eba.60.1311368286158; Fri, 22 Jul 2011 13:58:06 -0700 (PDT) Sender: crodr001@gmail.com Received: by 10.213.32.8 with HTTP; Fri, 22 Jul 2011 13:58:06 -0700 (PDT) In-Reply-To: <201107151620.p6FGKX98086893@svn.freebsd.org> References: <201107151620.p6FGKX98086893@svn.freebsd.org> Date: Fri, 22 Jul 2011 13:58:06 -0700 X-Google-Sender-Auth: h-t-_iICOJfJekX5J72AiBlmZi0 Message-ID: From: Craig Rodrigues To: Kirk McKusick Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r224061 - in head/sys/ufs: ffs ufs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 20:58:09 -0000 On Fri, Jul 15, 2011 at 9:20 AM, Kirk McKusick wrote: > Author: mckusick > Date: Fri Jul 15 16:20:33 2011 > New Revision: 224061 > URL: http://svn.freebsd.org/changeset/base/224061 > > Log: > Add an FFS specific mount option to allow a filesystem checker > (typically fsck_ffs) to register that it wishes to use FFS specific > sysctl's to update the filesystem. This ensures that two checkers > cannot run on a given filesystem at the same time and that no other > process accidentally or maliciously uses the filesystem updating > sysctls inappropriately. This functionality is needed by the > journaling soft-updates recovery code. > > Modified: > head/sys/ufs/ffs/ffs_alloc.c > head/sys/ufs/ffs/ffs_inode.c > head/sys/ufs/ffs/ffs_vfsops.c > head/sys/ufs/ffs/fs.h > head/sys/ufs/ufs/ufsmount.h > > Modified: head/sys/ufs/ffs/ffs_alloc.c > > ============================================================================== > --- head/sys/ufs/ffs/ffs_alloc.c Fri Jul 15 15:56:23 2011 > (r224060) > +++ head/sys/ufs/ffs/ffs_alloc.c Fri Jul 15 16:20:33 2011 > (r224061) > @@ -2381,6 +2381,18 @@ ffs_fserr(fs, inum, cp) > * in the current directory is oldvalue then change it to newvalue. > * unlink(nameptr, oldvalue) - Verify that the inode number associated > * with nameptr in the current directory is oldvalue then unlink it. > + * > + * The following functions may only be used on a quiescent filesystem > + * by the soft updates journal. They are not safe to be run on an active > + * filesystem. > + * > + * setinode(inode, dip) - the specified disk inode is replaced with the > + * contents pointed to by dip. > + * setbufoutput(fd, flags) - output associated with the specified file > + * descriptor (which must reference the character device supporting > + * the filesystem) switches from using physio to running through the > + * buffer cache when flags is set to 1. The descriptor reverts to > + * physio for output when flags is set to zero. > */ > > static int sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS); > @@ -2427,11 +2439,21 @@ static SYSCTL_NODE(_vfs_ffs, FFS_SET_DOT > static SYSCTL_NODE(_vfs_ffs, FFS_UNLINK, unlink, CTLFLAG_WR, > sysctl_ffs_fsck, "Unlink a Duplicate Name"); > > +static SYSCTL_NODE(_vfs_ffs, FFS_SET_INODE, setinode, CTLFLAG_WR, > + sysctl_ffs_fsck, "Update an On-Disk Inode"); > + > +static SYSCTL_NODE(_vfs_ffs, FFS_SET_BUFOUTPUT, setbufoutput, CTLFLAG_WR, > + sysctl_ffs_fsck, "Set Buffered Writing for Descriptor"); > + > +#define DEBUG 1 > #ifdef DEBUG > -static int fsckcmds = 0; > +static int fsckcmds = 1; > SYSCTL_INT(_debug, OID_AUTO, fsckcmds, CTLFLAG_RW, &fsckcmds, 0, ""); > #endif /* DEBUG */ > > +static int buffered_write(struct file *, struct uio *, struct ucred *, > + int, struct thread *); > + > static int > sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) > { > @@ -2445,8 +2467,10 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) > ufs2_daddr_t blkno; > long blkcnt, blksize; > struct filedesc *fdp; > - struct file *fp; > + struct file *fp, *vfp; > int vfslocked, filetype, error; > + static struct fileops *origops, bufferedops; > + static int outcnt = 0; > > if (req->newlen > sizeof cmd) > return (EBADRPC); > @@ -2454,7 +2478,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) > return (error); > if (cmd.version != FFS_CMD_VERSION) > return (ERPCMISMATCH); > - if ((error = getvnode(curproc->p_fd, cmd.handle, &fp)) != 0) > + if ((error = getvnode(td->td_proc->p_fd, cmd.handle, &fp)) != 0) > return (error); > vp = fp->f_data; > if (vp->v_type != VREG && vp->v_type != VDIR) { > @@ -2467,12 +2491,13 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) > fdrop(fp, td); > return (EINVAL); > } > - if (mp->mnt_flag & MNT_RDONLY) { > + ump = VFSTOUFS(mp); > + if ((mp->mnt_flag & MNT_RDONLY) && > + ump->um_fsckpid != td->td_proc->p_pid) { > vn_finished_write(mp); > fdrop(fp, td); > return (EROFS); > } > - ump = VFSTOUFS(mp); > fs = ump->um_fs; > filetype = IFREG; > > @@ -2493,7 +2518,7 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) > case FFS_ADJ_REFCNT: > #ifdef DEBUG > if (fsckcmds) { > - printf("%s: adjust inode %jd count by %jd\n", > + printf("%s: adjust inode %jd link count by %jd\n", > mp->mnt_stat.f_mntonname, (intmax_t)cmd.value, > (intmax_t)cmd.size); > } > @@ -2504,7 +2529,8 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) > ip->i_nlink += cmd.size; > DIP_SET(ip, i_nlink, ip->i_nlink); > ip->i_effnlink += cmd.size; > - ip->i_flag |= IN_CHANGE; > + ip->i_flag |= IN_CHANGE | IN_MODIFIED; > + error = ffs_update(vp, 1); > if (DOINGSOFTDEP(vp)) > softdep_change_linkcnt(ip); > vput(vp); > @@ -2522,7 +2548,8 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) > break; > ip = VTOI(vp); > DIP_SET(ip, i_blocks, DIP(ip, i_blocks) + cmd.size); > - ip->i_flag |= IN_CHANGE; > + ip->i_flag |= IN_CHANGE | IN_MODIFIED; > + error = ffs_update(vp, 1); > vput(vp); > break; > > @@ -2722,6 +2749,78 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) > UIO_USERSPACE, (ino_t)cmd.size); > break; > > + case FFS_SET_INODE: > + if (ump->um_fsckpid != td->td_proc->p_pid) { > + error = EPERM; > + break; > + } > +#ifdef DEBUG > + if (fsckcmds && outcnt++ < 100) { > + printf("%s: update inode %jd\n", > + mp->mnt_stat.f_mntonname, (intmax_t)cmd.value); > + } > +#endif /* DEBUG */ > + if ((error = ffs_vget(mp, (ino_t)cmd.value, LK_EXCLUSIVE, > &vp))) > + break; > + vfslocked = VFS_LOCK_GIANT(vp->v_mount); > + AUDIT_ARG_VNODE1(vp); > + ip = VTOI(vp); > + if (ip->i_ump->um_fstype == UFS1) > + error = copyin((void *)(intptr_t)cmd.size, > ip->i_din1, > + sizeof(struct ufs1_dinode)); > + else > + error = copyin((void *)(intptr_t)cmd.size, > ip->i_din2, > + sizeof(struct ufs2_dinode)); > + if (error) { > + vput(vp); > + VFS_UNLOCK_GIANT(vfslocked); > + break; > + } > + ip->i_flag |= IN_CHANGE | IN_MODIFIED; > + error = ffs_update(vp, 1); > + vput(vp); > + VFS_UNLOCK_GIANT(vfslocked); > + break; > + > + case FFS_SET_BUFOUTPUT: > + if (ump->um_fsckpid != td->td_proc->p_pid) { > + error = EPERM; > + break; > + } > + if (VTOI(vp)->i_ump != ump) { > + error = EINVAL; > + break; > + } > +#ifdef DEBUG > + if (fsckcmds) { > + printf("%s: %s buffered output for descriptor > %jd\n", > + mp->mnt_stat.f_mntonname, > + cmd.size == 1 ? "enable" : "disable", > + (intmax_t)cmd.value); > + } > +#endif /* DEBUG */ > + if ((error = getvnode(td->td_proc->p_fd, cmd.value, &vfp)) > != 0) > + break; > + if (vfp->f_vnode->v_type != VCHR) { > + fdrop(vfp, td); > + error = EINVAL; > + break; > + } > + if (origops == NULL) { > + origops = vfp->f_ops; > + bcopy((void *)origops, (void *)&bufferedops, > + sizeof(bufferedops)); > + bufferedops.fo_write = buffered_write; > + } > + if (cmd.size == 1) > + atomic_store_rel_ptr((volatile uintptr_t > *)&vfp->f_ops, > + (uintptr_t)&bufferedops); > + else > + atomic_store_rel_ptr((volatile uintptr_t > *)&vfp->f_ops, > + (uintptr_t)origops); > + fdrop(vfp, td); > + break; > + > default: > #ifdef DEBUG > if (fsckcmds) { > @@ -2737,3 +2836,73 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) > vn_finished_write(mp); > return (error); > } > + > +/* > + * Function to switch a descriptor to use the buffer cache to stage > + * its I/O. This is needed so that writes to the filesystem device > + * will give snapshots a chance to copy modified blocks for which it > + * needs to retain copies. > + */ > +static int > +buffered_write(fp, uio, active_cred, flags, td) > + struct file *fp; > + struct uio *uio; > + struct ucred *active_cred; > + int flags; > + struct thread *td; > +{ > Please use ANSI style prototypes for new functions. > > Modified: head/sys/ufs/ffs/ffs_vfsops.c > > ============================================================================== > --- head/sys/ufs/ffs/ffs_vfsops.c Fri Jul 15 15:56:23 2011 > (r224060) > +++ head/sys/ufs/ffs/ffs_vfsops.c Fri Jul 15 16:20:33 2011 > (r224061) > @@ -132,8 +132,8 @@ static struct buf_ops ffs_ops = { > */ > static const char *ffs_opts[] = { "acls", "async", "noatime", > "noclusterr", > "noclusterw", "noexec", "export", "force", "from", "groupquota", > - "multilabel", "nfsv4acls", "snapshot", "nosuid", "suiddir", > "nosymfollow", > - "sync", "union", "userquota", NULL }; > + "multilabel", "nfsv4acls", "fsckpid", "snapshot", "nosuid", "suiddir", > + "nosymfollow", "sync", "union", "userquota", NULL }; > > static int > ffs_mount(struct mount *mp) > @@ -142,6 +142,7 @@ ffs_mount(struct mount *mp) > struct thread *td; > struct ufsmount *ump = 0; > struct fs *fs; > + pid_t fsckpid = 0; > int error, flags; > u_int mntorflags; > accmode_t accmode; > @@ -184,6 +185,29 @@ ffs_mount(struct mount *mp) > vfs_deleteopt(mp->mnt_opt, "snapshot"); > } > > + if (vfs_getopt(mp->mnt_optnew, "fsckpid", NULL, NULL) == 0 && > + vfs_scanopt(mp->mnt_optnew, "fsckpid", "%d", &fsckpid) == 1) { > + /* > + * Once we have set the restricted PID, do not > + * persist "fsckpid" in the options list. > + */ > + vfs_deleteopt(mp->mnt_optnew, "fsckpid"); > + vfs_deleteopt(mp->mnt_opt, "fsckpid"); > + if (mp->mnt_flag & MNT_UPDATE) { > + if (VFSTOUFS(mp)->um_fs->fs_ronly == 0 && > + vfs_flagopt(mp->mnt_optnew, "ro", NULL, 0) == > 0) { > + printf("Checker enable: Must be > read-only\n"); > + return (EINVAL); > + } > + } else if (vfs_flagopt(mp->mnt_optnew, "ro", NULL, 0) == 0) > { > + printf("Checker enable: Must be read-only\n"); > + return (EINVAL); > + } > If you have error messages in an nmount() call, please consider using the vfs_mount_error() function which is in sys/kern/vfs_mount.c. In src/sbin/mount/mount_fs.c, there is an example of how the "errmsg" string can be passed into nmount() from userspace into the kernel in order to retrieve the value of this string. -- Craig Rodrigues rodrigc@crodrigues.org From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 21:08:20 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 28598106566B; Fri, 22 Jul 2011 21:08:20 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 18B098FC14; Fri, 22 Jul 2011 21:08:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6ML8JhC032427; Fri, 22 Jul 2011 21:08:19 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6ML8JUL032425; Fri, 22 Jul 2011 21:08:19 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201107222108.p6ML8JUL032425@svn.freebsd.org> From: Doug Barton Date: Fri, 22 Jul 2011 21:08:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224273 - head/etc/rc.d X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 21:08:20 -0000 Author: dougb Date: Fri Jul 22 21:08:19 2011 New Revision: 224273 URL: http://svn.freebsd.org/changeset/base/224273 Log: Revert the apparently-unecessary module_path twiddling from r223917 Approved by: re (kib) Modified: head/etc/rc.d/kld Modified: head/etc/rc.d/kld ============================================================================== --- head/etc/rc.d/kld Fri Jul 22 18:03:33 2011 (r224272) +++ head/etc/rc.d/kld Fri Jul 22 21:08:19 2011 (r224273) @@ -41,24 +41,11 @@ kld_start() { [ -n "$kld_list" ] || return - local _kernel_path _module_path _kld _path - - _kernel_path=`$SYSCTL_N kern.bootfile` - _kernel_path="${_kernel_path%/*}" - - _module_path=`$SYSCTL_N kern.module_path` - _module_path="${_module_path#*\;}" - _module_path="$_kernel_path `ltr $_module_path \; ' '`" + local _kld echo 'Loading kernel modules:' for _kld in $kld_list ; do - for _path in $_module_path ; do - if [ -x "${_path}/${_kld}.ko" ]; then - load_kld -e ${_kld}.ko ${_path}/${_kld}.ko - continue 2 - fi - done - warn "${_kld}.ko not found in $_module_path" + load_kld -e ${_kld}.ko $_kld done } From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 21:40:55 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6D0B5106566C; Fri, 22 Jul 2011 21:40:55 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5C9748FC14; Fri, 22 Jul 2011 21:40:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6MLetU8033423; Fri, 22 Jul 2011 21:40:55 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6MLetOU033421; Fri, 22 Jul 2011 21:40:55 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201107222140.p6MLetOU033421@svn.freebsd.org> From: Doug Barton Date: Fri, 22 Jul 2011 21:40:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224274 - stable/8/usr.sbin/named X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 21:40:55 -0000 Author: dougb Date: Fri Jul 22 21:40:55 2011 New Revision: 224274 URL: http://svn.freebsd.org/changeset/base/224274 Log: MFC r224122: Fix the location of the default pid file in named.8 Modified: stable/8/usr.sbin/named/Makefile Directory Properties: stable/8/usr.sbin/named/ (props changed) Modified: stable/8/usr.sbin/named/Makefile ============================================================================== --- stable/8/usr.sbin/named/Makefile Fri Jul 22 21:08:19 2011 (r224273) +++ stable/8/usr.sbin/named/Makefile Fri Jul 22 21:40:55 2011 (r224274) @@ -56,7 +56,8 @@ LDADD+= ${BIND_LDADD} ${CRYPTO_LDADD} $ MAN= named.8 lwresd.8 named.conf.5 -MANFILTER= sed -e "s@/etc/named\.conf@/etc/namedb/named.conf@g" +MANFILTER= sed -e "s@/etc/named\.conf@/etc/namedb/named.conf@g" \ + -e "s@/var\/run\/named\/named.pid@/var/run/named/pid@" LINKS= ${BINDIR}/named ${BINDIR}/lwresd From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 21:41:09 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 84AC51065676; Fri, 22 Jul 2011 21:41:09 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 746308FC08; Fri, 22 Jul 2011 21:41:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6MLf9Dd033472; Fri, 22 Jul 2011 21:41:09 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6MLf9Qr033470; Fri, 22 Jul 2011 21:41:09 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201107222141.p6MLf9Qr033470@svn.freebsd.org> From: Doug Barton Date: Fri, 22 Jul 2011 21:41:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224275 - stable/7/usr.sbin/named X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 21:41:09 -0000 Author: dougb Date: Fri Jul 22 21:41:09 2011 New Revision: 224275 URL: http://svn.freebsd.org/changeset/base/224275 Log: MFC r224122: Fix the location of the default pid file in named.8 Modified: stable/7/usr.sbin/named/Makefile Directory Properties: stable/7/usr.sbin/named/ (props changed) Modified: stable/7/usr.sbin/named/Makefile ============================================================================== --- stable/7/usr.sbin/named/Makefile Fri Jul 22 21:40:55 2011 (r224274) +++ stable/7/usr.sbin/named/Makefile Fri Jul 22 21:41:09 2011 (r224275) @@ -33,7 +33,8 @@ LDADD+= ${BIND_LDADD} ${CRYPTO_LDADD} $ MAN= named.8 lwresd.8 named.conf.5 -MANFILTER= sed -e "s@/etc/named\.conf@/etc/namedb/named.conf@g" +MANFILTER= sed -e "s@/etc/named\.conf@/etc/namedb/named.conf@g" \ + -e "s@/var\/run\/named\/named.pid@/var/run/named/pid@" LINKS= ${BINDIR}/named ${BINDIR}/lwresd From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 21:43:16 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 76432106566C; Fri, 22 Jul 2011 21:43:16 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 662138FC08; Fri, 22 Jul 2011 21:43:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6MLhGka033597; Fri, 22 Jul 2011 21:43:16 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6MLhGRo033595; Fri, 22 Jul 2011 21:43:16 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201107222143.p6MLhGRo033595@svn.freebsd.org> From: Doug Barton Date: Fri, 22 Jul 2011 21:43:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224276 - stable/8/etc/namedb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 21:43:16 -0000 Author: dougb Date: Fri Jul 22 21:43:16 2011 New Revision: 224276 URL: http://svn.freebsd.org/changeset/base/224276 Log: MFC r224124: Pick up the 2011-06-08 update to this file, the addition of an IPv6 address for D. Modified: stable/8/etc/namedb/named.root Directory Properties: stable/8/etc/ (props changed) Modified: stable/8/etc/namedb/named.root ============================================================================== --- stable/8/etc/namedb/named.root Fri Jul 22 21:41:09 2011 (r224275) +++ stable/8/etc/namedb/named.root Fri Jul 22 21:43:16 2011 (r224276) @@ -13,8 +13,8 @@ ; on server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ; -; last update: Jun 17, 2010 -; related version of root zone: 2010061700 +; last update: Jun 8, 2011 +; related version of root zone: 2011060800 ; ; formerly NS.INTERNIC.NET ; @@ -36,6 +36,7 @@ C.ROOT-SERVERS.NET. 3600000 A ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 +D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2D::D ; ; FORMERLY NS.NASA.GOV ; From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 21:43:24 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9B6111065770; Fri, 22 Jul 2011 21:43:23 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9C09E8FC18; Fri, 22 Jul 2011 21:43:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6MLhNkl033637; Fri, 22 Jul 2011 21:43:23 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6MLhN0J033636; Fri, 22 Jul 2011 21:43:23 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201107222143.p6MLhN0J033636@svn.freebsd.org> From: Doug Barton Date: Fri, 22 Jul 2011 21:43:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224277 - stable/7/etc/namedb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 21:43:24 -0000 Author: dougb Date: Fri Jul 22 21:43:23 2011 New Revision: 224277 URL: http://svn.freebsd.org/changeset/base/224277 Log: MFC r224124: Pick up the 2011-06-08 update to this file, the addition of an IPv6 address for D. Modified: stable/7/etc/namedb/named.root Directory Properties: stable/7/etc/ (props changed) Modified: stable/7/etc/namedb/named.root ============================================================================== --- stable/7/etc/namedb/named.root Fri Jul 22 21:43:16 2011 (r224276) +++ stable/7/etc/namedb/named.root Fri Jul 22 21:43:23 2011 (r224277) @@ -13,8 +13,8 @@ ; on server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ; -; last update: Jun 17, 2010 -; related version of root zone: 2010061700 +; last update: Jun 8, 2011 +; related version of root zone: 2011060800 ; ; formerly NS.INTERNIC.NET ; @@ -36,6 +36,7 @@ C.ROOT-SERVERS.NET. 3600000 A ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 +D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2D::D ; ; FORMERLY NS.NASA.GOV ; From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 21:45:12 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C219E106564A; Fri, 22 Jul 2011 21:45:12 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A862F8FC0A; Fri, 22 Jul 2011 21:45:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6MLjCSK033768; Fri, 22 Jul 2011 21:45:12 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6MLjCCM033766; Fri, 22 Jul 2011 21:45:12 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201107222145.p6MLjCCM033766@svn.freebsd.org> From: Doug Barton Date: Fri, 22 Jul 2011 21:45:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224278 - stable/8/etc/namedb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 21:45:13 -0000 Author: dougb Date: Fri Jul 22 21:45:12 2011 New Revision: 224278 URL: http://svn.freebsd.org/changeset/base/224278 Log: MFC r224125: Commemorate the release of RFC 6303 by updating the comments regarding our default empty zones. No functional changes. Modified: stable/8/etc/namedb/named.conf Directory Properties: stable/8/etc/ (props changed) Modified: stable/8/etc/namedb/named.conf ============================================================================== --- stable/8/etc/namedb/named.conf Fri Jul 22 21:43:23 2011 (r224277) +++ stable/8/etc/namedb/named.conf Fri Jul 22 21:45:12 2011 (r224278) @@ -122,18 +122,18 @@ zone "arpa" { 1. Faster local resolution for your users 2. No spurious traffic will be sent from your network to the roots */ -// RFCs 1912 and 5735 (and BCP 32 for localhost) +// RFCs 1912, 5735 and 6303 (and BCP 32 for localhost) zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; }; zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; }; zone "255.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// RFC 1912-style zone for IPv6 localhost address +// RFC 1912-style zone for IPv6 localhost address (RFC 6303) zone "0.ip6.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; }; -// "This" Network (RFCs 1912 and 5735) +// "This" Network (RFCs 1912, 5735 and 6303) zone "0.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// Private Use Networks (RFCs 1918 and 5735) +// Private Use Networks (RFCs 1918, 5735 and 6303) zone "10.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "16.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "17.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; @@ -153,18 +153,18 @@ zone "30.172.in-addr.arpa" { type master zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// Link-local/APIPA (RFCs 3927 and 5735) +// Link-local/APIPA (RFCs 3927, 5735 and 6303) zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // IETF protocol assignments (RFCs 5735 and 5736) zone "0.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// TEST-NET-[1-3] for Documentation (RFCs 5735 and 5737) +// TEST-NET-[1-3] for Documentation (RFCs 5735, 5737 and 6303) zone "2.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "100.51.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "113.0.203.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// IPv6 Range for Documentation (RFC 3849) +// IPv6 Example Range for Documentation (RFCs 3849 and 6303) zone "8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // Domain Names for Documentation and Testing (BCP 32) @@ -231,17 +231,17 @@ zone "5.e.f.ip6.arpa" { type master; fil zone "6.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "7.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// IPv6 ULA (RFC 4193) +// IPv6 ULA (RFCs 4193 and 6303) zone "c.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "d.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// IPv6 Link Local (RFC 4291) +// IPv6 Link Local (RFCs 4291 and 6303) zone "8.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "9.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "a.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "b.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// IPv6 Deprecated Site-Local Addresses (RFC 3879) +// IPv6 Deprecated Site-Local Addresses (RFCs 3879 and 6303) zone "c.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "d.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "e.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; From owner-svn-src-all@FreeBSD.ORG Fri Jul 22 21:45:29 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 35A1B106564A; Fri, 22 Jul 2011 21:45:29 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1B5EC8FC13; Fri, 22 Jul 2011 21:45:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6MLjTtu033811; Fri, 22 Jul 2011 21:45:29 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6MLjSUk033809; Fri, 22 Jul 2011 21:45:28 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201107222145.p6MLjSUk033809@svn.freebsd.org> From: Doug Barton Date: Fri, 22 Jul 2011 21:45:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224279 - stable/7/etc/namedb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2011 21:45:29 -0000 Author: dougb Date: Fri Jul 22 21:45:28 2011 New Revision: 224279 URL: http://svn.freebsd.org/changeset/base/224279 Log: MFC r224125: Commemorate the release of RFC 6303 by updating the comments regarding our default empty zones. No functional changes. Modified: stable/7/etc/namedb/named.conf Directory Properties: stable/7/etc/ (props changed) Modified: stable/7/etc/namedb/named.conf ============================================================================== --- stable/7/etc/namedb/named.conf Fri Jul 22 21:45:12 2011 (r224278) +++ stable/7/etc/namedb/named.conf Fri Jul 22 21:45:28 2011 (r224279) @@ -122,18 +122,18 @@ zone "arpa" { 1. Faster local resolution for your users 2. No spurious traffic will be sent from your network to the roots */ -// RFCs 1912 and 5735 (and BCP 32 for localhost) +// RFCs 1912, 5735 and 6303 (and BCP 32 for localhost) zone "localhost" { type master; file "/etc/namedb/master/localhost-forward.db"; }; zone "127.in-addr.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; }; zone "255.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// RFC 1912-style zone for IPv6 localhost address +// RFC 1912-style zone for IPv6 localhost address (RFC 6303) zone "0.ip6.arpa" { type master; file "/etc/namedb/master/localhost-reverse.db"; }; -// "This" Network (RFCs 1912 and 5735) +// "This" Network (RFCs 1912, 5735 and 6303) zone "0.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// Private Use Networks (RFCs 1918 and 5735) +// Private Use Networks (RFCs 1918, 5735 and 6303) zone "10.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "16.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "17.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; @@ -153,18 +153,18 @@ zone "30.172.in-addr.arpa" { type master zone "31.172.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "168.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// Link-local/APIPA (RFCs 3927 and 5735) +// Link-local/APIPA (RFCs 3927, 5735 and 6303) zone "254.169.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // IETF protocol assignments (RFCs 5735 and 5736) zone "0.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// TEST-NET-[1-3] for Documentation (RFCs 5735 and 5737) +// TEST-NET-[1-3] for Documentation (RFCs 5735, 5737 and 6303) zone "2.0.192.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "100.51.198.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "113.0.203.in-addr.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// IPv6 Range for Documentation (RFC 3849) +// IPv6 Example Range for Documentation (RFCs 3849 and 6303) zone "8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; // Domain Names for Documentation and Testing (BCP 32) @@ -231,17 +231,17 @@ zone "5.e.f.ip6.arpa" { type master; fil zone "6.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "7.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// IPv6 ULA (RFC 4193) +// IPv6 ULA (RFCs 4193 and 6303) zone "c.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "d.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// IPv6 Link Local (RFC 4291) +// IPv6 Link Local (RFCs 4291 and 6303) zone "8.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "9.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "a.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "b.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; -// IPv6 Deprecated Site-Local Addresses (RFC 3879) +// IPv6 Deprecated Site-Local Addresses (RFCs 3879 and 6303) zone "c.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "d.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; zone "e.e.f.ip6.arpa" { type master; file "/etc/namedb/master/empty.db"; }; From owner-svn-src-all@FreeBSD.ORG Sat Jul 23 08:55:06 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3594E1065675; Sat, 23 Jul 2011 08:55:06 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 000A38FC1C; Sat, 23 Jul 2011 08:55:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6N8t5k7053497; Sat, 23 Jul 2011 08:55:05 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6N8t5R6053496; Sat, 23 Jul 2011 08:55:05 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201107230855.p6N8t5R6053496@svn.freebsd.org> From: Hans Petter Selasky Date: Sat, 23 Jul 2011 08:55:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224280 - stable/8/sys/dev/usb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 23 Jul 2011 08:55:06 -0000 Author: hselasky Date: Sat Jul 23 08:55:05 2011 New Revision: 224280 URL: http://svn.freebsd.org/changeset/base/224280 Log: MFC r224095: Fix for VirtualBox 4.x and other virtual machines that fail to generate a port reset change event. Modified: stable/8/sys/dev/usb/usb_request.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/dev/usb/usb_request.c ============================================================================== --- stable/8/sys/dev/usb/usb_request.c Fri Jul 22 21:45:28 2011 (r224279) +++ stable/8/sys/dev/usb/usb_request.c Sat Jul 23 08:55:05 2011 (r224280) @@ -779,10 +779,17 @@ usbd_req_reset_port(struct usb_device *u uint16_t pr_recovery_delay; #endif - err = usbd_req_set_port_feature(udev, mtx, port, UHF_PORT_RESET); - if (err) { + /* clear any leftover port reset changes first */ + usbd_req_clear_port_feature( + udev, mtx, port, UHF_C_PORT_RESET); + + /* assert port reset on the given port */ + err = usbd_req_set_port_feature( + udev, mtx, port, UHF_PORT_RESET); + + /* check for errors */ + if (err) goto done; - } #ifdef USB_DEBUG /* range check input parameters */ pr_poll_delay = usb_pr_poll_delay; @@ -798,6 +805,9 @@ usbd_req_reset_port(struct usb_device *u #endif n = 0; while (1) { + uint16_t status; + uint16_t change; + #ifdef USB_DEBUG /* wait for the device to recover from reset */ usb_pause_mtx(mtx, USB_MS_TO_TICKS(pr_poll_delay)); @@ -811,14 +821,25 @@ usbd_req_reset_port(struct usb_device *u if (err) { goto done; } + status = UGETW(ps.wPortStatus); + change = UGETW(ps.wPortChange); + /* if the device disappeared, just give up */ - if (!(UGETW(ps.wPortStatus) & UPS_CURRENT_CONNECT_STATUS)) { + if (!(status & UPS_CURRENT_CONNECT_STATUS)) goto done; - } + /* check if reset is complete */ - if (UGETW(ps.wPortChange) & UPS_C_PORT_RESET) { + if (change & UPS_C_PORT_RESET) break; - } + + /* + * Some Virtual Machines like VirtualBox 4.x fail to + * generate a port reset change event. Check if reset + * is no longer asserted. + */ + if (!(status & UPS_RESET)) + break; + /* check for timeout */ if (n > 1000) { n = 0; From owner-svn-src-all@FreeBSD.ORG Sat Jul 23 12:55:02 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 264C3106566B; Sat, 23 Jul 2011 12:55:02 +0000 (UTC) (envelope-from deischen@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0EB758FC08; Sat, 23 Jul 2011 12:55:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6NCt1ew062874; Sat, 23 Jul 2011 12:55:01 GMT (envelope-from deischen@svn.freebsd.org) Received: (from deischen@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6NCt14a062873; Sat, 23 Jul 2011 12:55:01 GMT (envelope-from deischen@svn.freebsd.org) Message-Id: <201107231255.p6NCt14a062873@svn.freebsd.org> From: Daniel Eischen Date: Sat, 23 Jul 2011 12:55:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224281 - stable/8/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 23 Jul 2011 12:55:02 -0000 Author: deischen Date: Sat Jul 23 12:55:01 2011 New Revision: 224281 URL: http://svn.freebsd.org/changeset/base/224281 Log: MFC r218627 Allow SO_SETFIB to select/set the default routing table. Requested by: Andrew Boyer aboyer at averesystems dot com. Modified: stable/8/sys/kern/uipc_socket.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/kern/uipc_socket.c ============================================================================== --- stable/8/sys/kern/uipc_socket.c Sat Jul 23 08:55:05 2011 (r224280) +++ stable/8/sys/kern/uipc_socket.c Sat Jul 23 12:55:01 2011 (r224281) @@ -2490,15 +2490,16 @@ sosetopt(struct socket *so, struct socko case SO_SETFIB: error = sooptcopyin(sopt, &optval, sizeof optval, sizeof optval); - if (optval < 1 || optval > rt_numfibs) { + if (optval < 0 || optval > rt_numfibs) { error = EINVAL; goto bad; } - if ((so->so_proto->pr_domain->dom_family == PF_INET) || - (so->so_proto->pr_domain->dom_family == PF_ROUTE)) { + if (so->so_proto != NULL && + ((so->so_proto->pr_domain->dom_family == PF_INET) || + (so->so_proto->pr_domain->dom_family == PF_ROUTE))) { so->so_fibnum = optval; /* Note: ignore error */ - if (so->so_proto && so->so_proto->pr_ctloutput) + if (so->so_proto->pr_ctloutput) (*so->so_proto->pr_ctloutput)(so, sopt); } else { so->so_fibnum = 0; From owner-svn-src-all@FreeBSD.ORG Sat Jul 23 22:11:41 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 311B2106564A; Sat, 23 Jul 2011 22:11:41 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 210958FC16; Sat, 23 Jul 2011 22:11:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6NMBftT078947; Sat, 23 Jul 2011 22:11:41 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6NMBfYR078945; Sat, 23 Jul 2011 22:11:41 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201107232211.p6NMBfYR078945@svn.freebsd.org> From: Alexander Motin Date: Sat, 23 Jul 2011 22:11:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224283 - head/sys/cam/ata X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 23 Jul 2011 22:11:41 -0000 Author: mav Date: Sat Jul 23 22:11:40 2011 New Revision: 224283 URL: http://svn.freebsd.org/changeset/base/224283 Log: Do not try to execute FLUSHCACHE on close and print extra messages for invalidated (considered lost) ada device. Exactly same already done for the da devices. Approved by: re (kib) MFC after: 1 week Modified: head/sys/cam/ata/ata_da.c Modified: head/sys/cam/ata/ata_da.c ============================================================================== --- head/sys/cam/ata/ata_da.c Sat Jul 23 18:03:08 2011 (r224282) +++ head/sys/cam/ata/ata_da.c Sat Jul 23 22:11:40 2011 (r224283) @@ -425,7 +425,8 @@ adaclose(struct disk *dp) softc = (struct ada_softc *)periph->softc; /* We only sync the cache if the drive is capable of it. */ - if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) { + if ((softc->flags & ADA_FLAG_CAN_FLUSHCACHE) != 0 && + (softc->flags & ADA_FLAG_PACK_INVALID) == 0) { ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); cam_fill_ataio(&ccb->ataio, @@ -1361,7 +1362,8 @@ adadone(struct cam_periph *periph, union return; } if (error != 0) { - if (error == ENXIO) { + if (error == ENXIO && + (softc->flags & ADA_FLAG_PACK_INVALID) == 0) { /* * Catastrophic error. Mark our pack as * invalid. From owner-svn-src-all@FreeBSD.ORG Sat Jul 23 22:55:33 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 501F21065670; Sat, 23 Jul 2011 22:55:33 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3DDF78FC08; Sat, 23 Jul 2011 22:55:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p6NMtXPZ080306; Sat, 23 Jul 2011 22:55:33 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p6NMtWNp080295; Sat, 23 Jul 2011 22:55:33 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201107232255.p6NMtWNp080295@svn.freebsd.org> From: Glen Barber Date: Sat, 23 Jul 2011 22:55:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r224284 - in head: share/man/man4 share/man/man5 share/man/man8 usr.sbin/faithd X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 23 Jul 2011 22:55:33 -0000 Author: gjb (doc committer) Date: Sat Jul 23 22:55:32 2011 New Revision: 224284 URL: http://svn.freebsd.org/changeset/base/224284 Log: Fix various broken links in manual pages. Submitted by: Michiel Overtoom (motoom % xs4all nl) PR: 159130 159131 159132 159133 159134 159135 159136 159137 158138 159144 Approved by: re (kib) MFC after: 3 days Modified: head/share/man/man4/dc.4 head/share/man/man4/gif.4 head/share/man/man4/lmc.4 head/share/man/man4/mpt.4 head/share/man/man4/rue.4 head/share/man/man4/stf.4 head/share/man/man4/wi.4 head/share/man/man5/reiserfs.5 head/share/man/man8/crash.8 head/usr.sbin/faithd/faithd.8 Modified: head/share/man/man4/dc.4 ============================================================================== --- head/share/man/man4/dc.4 Sat Jul 23 22:11:40 2011 (r224283) +++ head/share/man/man4/dc.4 Sat Jul 23 22:55:32 2011 (r224284) @@ -30,7 +30,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 16, 2005 +.Dd July 23, 2011 .Dt DC 4 .Os .Sh NAME @@ -357,7 +357,7 @@ the card should be configured correctly. .Re .Rs .%T Davicom DM9102 data sheet -.%U http://www.davicom8.com +.%U http://www.davicom.com.tw/userfile/24247/DM9102H-DS-F01-021508.pdf .Re .Rs .%T Intel 21143 Hardware Reference Manual Modified: head/share/man/man4/gif.4 ============================================================================== --- head/share/man/man4/gif.4 Sat Jul 23 22:11:40 2011 (r224283) +++ head/share/man/man4/gif.4 Sat Jul 23 22:55:32 2011 (r224284) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 8, 2009 +.Dd July 23, 2011 .Dt GIF 4 .Os .Sh NAME @@ -198,7 +198,7 @@ to 1. .%B RFC2893 .%T Transition Mechanisms for IPv6 Hosts and Routers .%D August 2000 -.%U ftp://ftp.isi.edu/in-notes/rfc2893.txt +.%U http://www.ietf.org/rfc/rfc2893.txt .Re .Rs .%A Sally Floyd Modified: head/share/man/man4/lmc.4 ============================================================================== --- head/share/man/man4/lmc.4 Sat Jul 23 22:11:40 2011 (r224283) +++ head/share/man/man4/lmc.4 Sat Jul 23 22:55:32 2011 (r224284) @@ -43,7 +43,7 @@ .\" this program; if not, write to the Free Software Foundation, Inc., 59 .\" Temple Place - Suite 330, Boston, MA 02111-1307, USA. .\" -.Dd May 20, 2006 +.Dd July 23, 2011 .Dt LMC 4 .Os .\" @@ -723,8 +723,6 @@ Thus, cable length does not affect data/ .Xr ngctl 8 , .Xr ping 8 , .Xr ifnet 9 -.Pp -.Pa http://www.sbei.com/ .\" .Sh HISTORY .\" Modified: head/share/man/man4/mpt.4 ============================================================================== --- head/share/man/man4/mpt.4 Sat Jul 23 22:11:40 2011 (r224283) +++ head/share/man/man4/mpt.4 Sat Jul 23 22:55:32 2011 (r224284) @@ -35,7 +35,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 13, 2010 +.Dd July 23, 2011 .Dt MPT 4 .Os .Sh NAME @@ -161,7 +161,7 @@ can take on - no separate compilation is .Xr gmultipath 8 .Rs .%T "LSI Logic Website" -.%U http://www.lsilogic.com/ +.%U http://www.lsi.com/ .Re .Sh HISTORY The Modified: head/share/man/man4/rue.4 ============================================================================== --- head/share/man/man4/rue.4 Sat Jul 23 22:11:40 2011 (r224283) +++ head/share/man/man4/rue.4 Sat Jul 23 22:55:32 2011 (r224284) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 16, 2005 +.Dd July 23, 2011 .Dt RUE 4 .Os .Sh NAME @@ -139,8 +139,8 @@ The driver failed to allocate an mbuf fo .Xr ng_ether 4 , .Xr ifconfig 8 .Rs -.%T "ReakTek RTL8150 data sheet" -.%U ftp://ftp.realtek.com.tw/lancard/data_sheet/8150/ +.%T "RealTek RTL8150 data sheet" +.%U http://pdf.seekdatasheet.com/2008714/200807142333305235.pdf .Re .Sh HISTORY The Modified: head/share/man/man4/stf.4 ============================================================================== --- head/share/man/man4/stf.4 Sat Jul 23 22:11:40 2011 (r224283) +++ head/share/man/man4/stf.4 Sat Jul 23 22:55:32 2011 (r224284) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 27, 2001 +.Dd July 23, 2011 .Dt STF 4 .Os .Sh NAME @@ -230,7 +230,7 @@ and not to use your 6to4 prefix as a sou .Xr inet 4 , .Xr inet6 4 .Pp -.Pa http://www.6bone.net/6bone_6to4.html +.Pa http://www.ipv6day.org/action.php?n=En.IPv6day .Rs .%A Brian Carpenter .%A Keith Moore Modified: head/share/man/man4/wi.4 ============================================================================== --- head/share/man/man4/wi.4 Sat Jul 23 22:11:40 2011 (r224283) +++ head/share/man/man4/wi.4 Sat Jul 23 22:55:32 2011 (r224284) @@ -31,7 +31,7 @@ .\" $FreeBSD$ .\" $OpenBSD: wi.4tbl,v 1.14 2002/04/29 19:53:50 jsyn Exp $ .\" -.Dd January 4, 2010 +.Dd July 23, 2011 .Dt WI 4 .Os .Sh NAME @@ -319,7 +319,7 @@ command. .Xr wpa_supplicant 8 . .Rs .%T HCF Light programming specification -.%U http://www.wavelan.com +.%U http://web.archive.org/web/20040130141721/http://wavelan.com/ .Re .Sh HISTORY The Modified: head/share/man/man5/reiserfs.5 ============================================================================== --- head/share/man/man5/reiserfs.5 Sat Jul 23 22:11:40 2011 (r224283) +++ head/share/man/man5/reiserfs.5 Sat Jul 23 22:55:32 2011 (r224284) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 16, 2006 +.Dd July 23, 2011 .Dt REISERFS 5 .Os .Sh NAME @@ -71,7 +71,6 @@ first appeared in .An -nosplit The ReiserFS kernel implementation was written by .An Hans Reiser -.Pq Pa http://www.namesys.com/ , and ported to .Fx by Modified: head/share/man/man8/crash.8 ============================================================================== --- head/share/man/man8/crash.8 Sat Jul 23 22:11:40 2011 (r224283) +++ head/share/man/man8/crash.8 Sat Jul 23 22:55:32 2011 (r224284) @@ -36,7 +36,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 2, 1996 +.Dd July 23, 2011 .Dt CRASH 8 .Os .Sh NAME @@ -207,7 +207,7 @@ the panic message is printed. For more details consult the chapter on kernel debugging in the .%B "FreeBSD Developers' Handbook" -.Pq Pa http://www.FreeBSD.org/ . +.Pq Pa http://www.freebsd.org/doc/en/books/developers-handbook/ . .Sh SEE ALSO .Xr kgdb 1 , .Xr dumpon 8 , Modified: head/usr.sbin/faithd/faithd.8 ============================================================================== --- head/usr.sbin/faithd/faithd.8 Sat Jul 23 22:11:40 2011 (r224283) +++ head/usr.sbin/faithd/faithd.8 Sat Jul 23 22:55:32 2011 (r224284) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd January 9, 2010 +.Dd July 23, 2011 .Dt FAITHD 8 .Os .Sh NAME @@ -368,7 +368,7 @@ setting. .%A Kazu Yamamoto .%T "An IPv6-to-IPv4 transport relay translator" .%B RFC3142 -.%U ftp://ftp.isi.edu/in-notes/rfc3142.txt +.%U http://www.ietf.org/rfc/rfc3142.txt .%D June 2001 .Re .\"