From owner-svn-src-projects@FreeBSD.ORG Sun Dec 14 14:03:46 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4283781E; Sun, 14 Dec 2014 14:03:46 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2C5F6CB0; Sun, 14 Dec 2014 14:03:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBEE3kAZ095895; Sun, 14 Dec 2014 14:03:46 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBEE3f0l095867; Sun, 14 Dec 2014 14:03:41 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201412141403.sBEE3f0l095867@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sun, 14 Dec 2014 14:03:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275761 - in projects/clang350-import: lib/libc/stdlib share/man/man9 sys/kern sys/sys usr.sbin/autofs X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Dec 2014 14:03:46 -0000 Author: dim Date: Sun Dec 14 14:03:40 2014 New Revision: 275761 URL: https://svnweb.freebsd.org/changeset/base/275761 Log: Merge ^/head r275749 through r275758. Modified: projects/clang350-import/lib/libc/stdlib/quick_exit.3 projects/clang350-import/share/man/man9/mutex.9 projects/clang350-import/share/man/man9/rmlock.9 projects/clang350-import/share/man/man9/rwlock.9 projects/clang350-import/share/man/man9/sx.9 projects/clang350-import/sys/kern/kern_mutex.c projects/clang350-import/sys/kern/kern_proc.c projects/clang350-import/sys/kern/kern_rmlock.c projects/clang350-import/sys/kern/kern_rwlock.c projects/clang350-import/sys/kern/kern_sx.c projects/clang350-import/sys/kern/subr_lock.c projects/clang350-import/sys/sys/lock.h projects/clang350-import/sys/sys/mutex.h projects/clang350-import/sys/sys/rmlock.h projects/clang350-import/sys/sys/rwlock.h projects/clang350-import/sys/sys/sx.h projects/clang350-import/usr.sbin/autofs/automountd.c projects/clang350-import/usr.sbin/autofs/common.c Directory Properties: projects/clang350-import/ (props changed) projects/clang350-import/contrib/llvm/ (props changed) projects/clang350-import/lib/libc/ (props changed) projects/clang350-import/share/ (props changed) projects/clang350-import/sys/ (props changed) Modified: projects/clang350-import/lib/libc/stdlib/quick_exit.3 ============================================================================== --- projects/clang350-import/lib/libc/stdlib/quick_exit.3 Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/lib/libc/stdlib/quick_exit.3 Sun Dec 14 14:03:40 2014 (r275761) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 7, 2011 +.Dd December 13, 2014 .Dt QUICK_EXIT 3 .Os .Sh NAME @@ -35,7 +35,7 @@ .Sh SYNOPSIS .In stdlib.h .Ft _Noreturn void -.Fn quick_exit "void" +.Fn quick_exit "int status" .Sh DESCRIPTION The .Fn quick_exit Modified: projects/clang350-import/share/man/man9/mutex.9 ============================================================================== --- projects/clang350-import/share/man/man9/mutex.9 Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/share/man/man9/mutex.9 Sun Dec 14 14:03:40 2014 (r275761) @@ -28,7 +28,7 @@ .\" from BSDI $Id: mutex.4,v 1.1.2.3 1998/04/27 22:53:13 ewv Exp $ .\" $FreeBSD$ .\" -.Dd November 16, 2011 +.Dd December 13, 2014 .Dt MUTEX 9 .Os .Sh NAME @@ -177,13 +177,17 @@ It may contain either or .Dv MTX_SPIN but not both. -See below for additional initialization options. -It is not permissible to pass the same -.Fa mutex -to +If the kernel has been compiled with +.Cd "option INVARIANTS" , .Fn mtx_init -multiple times without intervening calls to -.Fn mtx_destroy . +will assert that the +.Fa mutex +has not been initialized multiple times without intervening calls to +.Fn mtx_destroy +unless the +.Dv MTX_NEW +option is specified. +See below for additional initialization options. .Pp The .Fn mtx_lock @@ -453,6 +457,8 @@ to ignore this lock. Witness should not log messages about duplicate locks being acquired. .It Dv MTX_NOPROFILE Do not profile this lock. +.It Dv MTX_NEW +Do not check for double-init. .El .Ss Lock and Unlock Flags The flags passed to the Modified: projects/clang350-import/share/man/man9/rmlock.9 ============================================================================== --- projects/clang350-import/share/man/man9/rmlock.9 Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/share/man/man9/rmlock.9 Sun Dec 14 14:03:40 2014 (r275761) @@ -26,7 +26,7 @@ .\" $FreeBSD$ .\" .\" Based on rwlock.9 man page -.Dd June 25, 2013 +.Dd December 13, 2014 .Dt RMLOCK 9 .Os .Sh NAME @@ -156,6 +156,15 @@ Allow threads to recursively acquire sha .Fa rm . .It Dv RM_SLEEPABLE Create a sleepable read-mostly lock. +.It Dv RM_NEW +If the kernel has been compiled with +.Cd "option INVARIANTS" , +.Fn rm_init_flags +will assert that the +.Fa rm +has not been initialized multiple times without intervening calls to +.Fn rm_destroy +unless this option is specified. .El .It Fn rm_rlock "struct rmlock *rm" "struct rm_priotracker* tracker" Lock Modified: projects/clang350-import/share/man/man9/rwlock.9 ============================================================================== --- projects/clang350-import/share/man/man9/rwlock.9 Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/share/man/man9/rwlock.9 Sun Dec 14 14:03:40 2014 (r275761) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 20, 2013 +.Dd December 13, 2014 .Dt RWLOCK 9 .Os .Sh NAME @@ -154,6 +154,15 @@ Do not log any operations for this lock .It Dv RW_RECURSE Allow threads to recursively acquire exclusive locks for .Fa rw . +.It Dv RW_NEW +If the kernel has been compiled with +.Cd "option INVARIANTS" , +.Fn rw_init_flags +will assert that the +.Fa rw +has not been initialized multiple times without intervening calls to +.Fn rw_destroy +unless this option is specified. .El .It Fn rw_rlock "struct rwlock *rw" Lock Modified: projects/clang350-import/share/man/man9/sx.9 ============================================================================== --- projects/clang350-import/share/man/man9/sx.9 Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/share/man/man9/sx.9 Sun Dec 14 14:03:40 2014 (r275761) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 16, 2011 +.Dd December 13, 2014 .Dt SX 9 .Os .Sh NAME @@ -144,6 +144,15 @@ Allow threads to recursively acquire exc .It Dv SX_QUIET Do not log any operations for this lock via .Xr ktr 4 . +.It Dv SX_NEW +If the kernel has been compiled with +.Cd "options INVARIANTS" , +.Fn sx_init +will assert that the +.Fa sx +has not been initialized multiple times without intervening calls to +.Fn sx_destroy +unless this option is specified. .El .Pp Shared/exclusive locks are destroyed with Modified: projects/clang350-import/sys/kern/kern_mutex.c ============================================================================== --- projects/clang350-import/sys/kern/kern_mutex.c Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/sys/kern/kern_mutex.c Sun Dec 14 14:03:40 2014 (r275761) @@ -881,7 +881,7 @@ _mtx_init(volatile uintptr_t *c, const c m = mtxlock2mtx(c); MPASS((opts & ~(MTX_SPIN | MTX_QUIET | MTX_RECURSE | - MTX_NOWITNESS | MTX_DUPOK | MTX_NOPROFILE)) == 0); + MTX_NOWITNESS | MTX_DUPOK | MTX_NOPROFILE | MTX_NEW)) == 0); ASSERT_ATOMIC_LOAD_PTR(m->mtx_lock, ("%s: mtx_lock not aligned for %s: %p", __func__, name, &m->mtx_lock)); @@ -907,6 +907,8 @@ _mtx_init(volatile uintptr_t *c, const c flags |= LO_DUPOK; if (opts & MTX_NOPROFILE) flags |= LO_NOPROFILE; + if (opts & MTX_NEW) + flags |= LO_NEW; /* Initialize mutex. */ lock_init(&m->lock_object, class, name, type, flags); Modified: projects/clang350-import/sys/kern/kern_proc.c ============================================================================== --- projects/clang350-import/sys/kern/kern_proc.c Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/sys/kern/kern_proc.c Sun Dec 14 14:03:40 2014 (r275761) @@ -3031,6 +3031,7 @@ sysctl_debug_stop_all_proc(SYSCTL_HANDLE } SYSCTL_PROC(_debug, OID_AUTO, stop_all_proc, CTLTYPE_INT | CTLFLAG_RW | - CTLFLAG_MPSAFE, (void *)&ap_resume, 0, sysctl_debug_stop_all_proc, "I", + CTLFLAG_MPSAFE, __DEVOLATILE(int *, &ap_resume), 0, + sysctl_debug_stop_all_proc, "I", ""); #endif Modified: projects/clang350-import/sys/kern/kern_rmlock.c ============================================================================== --- projects/clang350-import/sys/kern/kern_rmlock.c Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/sys/kern/kern_rmlock.c Sun Dec 14 14:03:40 2014 (r275761) @@ -277,22 +277,28 @@ void rm_init_flags(struct rmlock *rm, const char *name, int opts) { struct lock_class *lc; - int liflags; + int liflags, xflags; liflags = 0; if (!(opts & RM_NOWITNESS)) liflags |= LO_WITNESS; if (opts & RM_RECURSE) liflags |= LO_RECURSABLE; + if (opts & RM_NEW) + liflags |= LO_NEW; rm->rm_writecpus = all_cpus; LIST_INIT(&rm->rm_activeReaders); if (opts & RM_SLEEPABLE) { liflags |= LO_SLEEPABLE; lc = &lock_class_rm_sleepable; - sx_init_flags(&rm->rm_lock_sx, "rmlock_sx", SX_NOWITNESS); + xflags = (opts & RM_NEW ? SX_NEW : 0); + sx_init_flags(&rm->rm_lock_sx, "rmlock_sx", + xflags | SX_NOWITNESS); } else { lc = &lock_class_rm; - mtx_init(&rm->rm_lock_mtx, name, "rmlock_mtx", MTX_NOWITNESS); + xflags = (opts & RM_NEW ? MTX_NEW : 0); + mtx_init(&rm->rm_lock_mtx, name, "rmlock_mtx", + xflags | MTX_NOWITNESS); } lock_init(&rm->lock_object, lc, name, NULL, liflags); } Modified: projects/clang350-import/sys/kern/kern_rwlock.c ============================================================================== --- projects/clang350-import/sys/kern/kern_rwlock.c Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/sys/kern/kern_rwlock.c Sun Dec 14 14:03:40 2014 (r275761) @@ -187,7 +187,7 @@ _rw_init_flags(volatile uintptr_t *c, co rw = rwlock2rw(c); MPASS((opts & ~(RW_DUPOK | RW_NOPROFILE | RW_NOWITNESS | RW_QUIET | - RW_RECURSE)) == 0); + RW_RECURSE | RW_NEW)) == 0); ASSERT_ATOMIC_LOAD_PTR(rw->rw_lock, ("%s: rw_lock not aligned for %s: %p", __func__, name, &rw->rw_lock)); @@ -203,6 +203,8 @@ _rw_init_flags(volatile uintptr_t *c, co flags |= LO_RECURSABLE; if (opts & RW_QUIET) flags |= LO_QUIET; + if (opts & RW_NEW) + flags |= LO_NEW; lock_init(&rw->lock_object, &lock_class_rw, name, NULL, flags); rw->rw_lock = RW_UNLOCKED; Modified: projects/clang350-import/sys/kern/kern_sx.c ============================================================================== --- projects/clang350-import/sys/kern/kern_sx.c Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/sys/kern/kern_sx.c Sun Dec 14 14:03:40 2014 (r275761) @@ -209,7 +209,7 @@ sx_init_flags(struct sx *sx, const char int flags; MPASS((opts & ~(SX_QUIET | SX_RECURSE | SX_NOWITNESS | SX_DUPOK | - SX_NOPROFILE | SX_NOADAPTIVE)) == 0); + SX_NOPROFILE | SX_NOADAPTIVE | SX_NEW)) == 0); ASSERT_ATOMIC_LOAD_PTR(sx->sx_lock, ("%s: sx_lock not aligned for %s: %p", __func__, description, &sx->sx_lock)); @@ -225,6 +225,8 @@ sx_init_flags(struct sx *sx, const char flags |= LO_RECURSABLE; if (opts & SX_QUIET) flags |= LO_QUIET; + if (opts & SX_NEW) + flags |= LO_NEW; flags |= opts & SX_NOADAPTIVE; lock_init(&sx->lock_object, &lock_class_sx, description, NULL, flags); Modified: projects/clang350-import/sys/kern/subr_lock.c ============================================================================== --- projects/clang350-import/sys/kern/subr_lock.c Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/sys/kern/subr_lock.c Sun Dec 14 14:03:40 2014 (r275761) @@ -75,8 +75,8 @@ lock_init(struct lock_object *lock, stru int i; /* Check for double-init and zero object. */ - KASSERT(!lock_initialized(lock), ("lock \"%s\" %p already initialized", - name, lock)); + KASSERT(flags & LO_NEW || !lock_initialized(lock), + ("lock \"%s\" %p already initialized", name, lock)); /* Look up lock class to find its index. */ for (i = 0; i < LOCK_CLASS_MAX; i++) Modified: projects/clang350-import/sys/sys/lock.h ============================================================================== --- projects/clang350-import/sys/sys/lock.h Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/sys/sys/lock.h Sun Dec 14 14:03:40 2014 (r275761) @@ -84,6 +84,7 @@ struct lock_class { #define LO_IS_VNODE 0x00800000 /* Tell WITNESS about a VNODE lock */ #define LO_CLASSMASK 0x0f000000 /* Class index bitmask. */ #define LO_NOPROFILE 0x10000000 /* Don't profile this lock */ +#define LO_NEW 0x20000000 /* Don't check for double-init */ /* * Lock classes are statically assigned an index into the gobal lock_classes Modified: projects/clang350-import/sys/sys/mutex.h ============================================================================== --- projects/clang350-import/sys/sys/mutex.h Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/sys/sys/mutex.h Sun Dec 14 14:03:40 2014 (r275761) @@ -52,6 +52,7 @@ #define MTX_RECURSE 0x00000004 /* Option: lock allowed to recurse */ #define MTX_NOWITNESS 0x00000008 /* Don't do any witness checking. */ #define MTX_NOPROFILE 0x00000020 /* Don't profile this lock */ +#define MTX_NEW 0x00000040 /* Don't check for double-init */ /* * Option flags passed to certain lock/unlock routines, through the use Modified: projects/clang350-import/sys/sys/rmlock.h ============================================================================== --- projects/clang350-import/sys/sys/rmlock.h Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/sys/sys/rmlock.h Sun Dec 14 14:03:40 2014 (r275761) @@ -45,6 +45,7 @@ #define RM_NOWITNESS 0x00000001 #define RM_RECURSE 0x00000002 #define RM_SLEEPABLE 0x00000004 +#define RM_NEW 0x00000008 void rm_init(struct rmlock *rm, const char *name); void rm_init_flags(struct rmlock *rm, const char *name, int opts); Modified: projects/clang350-import/sys/sys/rwlock.h ============================================================================== --- projects/clang350-import/sys/sys/rwlock.h Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/sys/sys/rwlock.h Sun Dec 14 14:03:40 2014 (r275761) @@ -258,6 +258,7 @@ struct rw_args_flags { #define RW_NOWITNESS 0x04 #define RW_QUIET 0x08 #define RW_RECURSE 0x10 +#define RW_NEW 0x20 /* * The INVARIANTS-enabled rw_assert() functionality. Modified: projects/clang350-import/sys/sys/sx.h ============================================================================== --- projects/clang350-import/sys/sys/sx.h Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/sys/sys/sx.h Sun Dec 14 14:03:40 2014 (r275761) @@ -292,6 +292,7 @@ __sx_sunlock(struct sx *sx, const char * #define SX_QUIET 0x08 #define SX_NOADAPTIVE 0x10 #define SX_RECURSE 0x20 +#define SX_NEW 0x40 /* * Options passed to sx_*lock_hard(). Modified: projects/clang350-import/usr.sbin/autofs/automountd.c ============================================================================== --- projects/clang350-import/usr.sbin/autofs/automountd.c Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/usr.sbin/autofs/automountd.c Sun Dec 14 14:03:40 2014 (r275761) @@ -82,14 +82,8 @@ done(int request_error, bool wildcards) request_id, request_error); error = ioctl(autofs_fd, AUTOFSDONE, &add); - if (error != 0) { - /* - * Do this instead of log_err() to avoid calling - * done() again with error, from atexit handler. - */ + if (error != 0) log_warn("AUTOFSDONE"); - } - quick_exit(1); } /* Modified: projects/clang350-import/usr.sbin/autofs/common.c ============================================================================== --- projects/clang350-import/usr.sbin/autofs/common.c Sun Dec 14 13:40:42 2014 (r275760) +++ projects/clang350-import/usr.sbin/autofs/common.c Sun Dec 14 14:03:40 2014 (r275761) @@ -676,8 +676,8 @@ node_print(const struct node *n) node_print_indent(child, 0); } -struct node * -node_find(struct node *node, const char *path) +static struct node * +node_find_x(struct node *node, const char *path) { struct node *child, *found; char *tmp; @@ -702,7 +702,7 @@ node_find(struct node *node, const char free(tmp); TAILQ_FOREACH(child, &node->n_children, n_next) { - found = node_find(child, path); + found = node_find_x(child, path); if (found != NULL) return (found); } @@ -710,6 +710,17 @@ node_find(struct node *node, const char return (node); } +struct node * +node_find(struct node *root, const char *path) +{ + struct node *node; + + node = node_find_x(root, path); + if (node == root) + return (NULL); + return (node); +} + /* * Canonical form of a map entry looks like this: * From owner-svn-src-projects@FreeBSD.ORG Sun Dec 14 18:20:05 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DF649709; Sun, 14 Dec 2014 18:20:04 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C05FAD34; Sun, 14 Dec 2014 18:20:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBEIK45K021593; Sun, 14 Dec 2014 18:20:04 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBEIK4xO021592; Sun, 14 Dec 2014 18:20:04 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201412141820.sBEIK4xO021592@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sun, 14 Dec 2014 18:20:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275773 - projects/clang350-import/contrib/llvm/tools/clang/lib/CodeGen X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Dec 2014 18:20:05 -0000 Author: dim Date: Sun Dec 14 18:20:03 2014 New Revision: 275773 URL: https://svnweb.freebsd.org/changeset/base/275773 Log: Pull in r221170 from upstream clang trunk (by Roman Divacky): Implement vaarg lowering for ppc32. Lowering of scalars and aggregates is supported. Complex numbers are not. This adds va_args support for PowerPC (32 bit) to clang. Modified: projects/clang350-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp Modified: projects/clang350-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp ============================================================================== --- projects/clang350-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp Sun Dec 14 18:16:49 2014 (r275772) +++ projects/clang350-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp Sun Dec 14 18:20:03 2014 (r275773) @@ -2835,11 +2835,19 @@ llvm::Value *NaClX86_64ABIInfo::EmitVAAr // PowerPC-32 - namespace { -class PPC32TargetCodeGenInfo : public DefaultTargetCodeGenInfo { +/// PPC32_SVR4_ABIInfo - The 32-bit PowerPC ELF (SVR4) ABI information. +class PPC32_SVR4_ABIInfo : public DefaultABIInfo { +public: + PPC32_SVR4_ABIInfo(CodeGen::CodeGenTypes &CGT) : DefaultABIInfo(CGT) {} + + llvm::Value *EmitVAArg(llvm::Value *VAListAddr, QualType Ty, + CodeGenFunction &CGF) const override; +}; + +class PPC32TargetCodeGenInfo : public TargetCodeGenInfo { public: - PPC32TargetCodeGenInfo(CodeGenTypes &CGT) : DefaultTargetCodeGenInfo(CGT) {} + PPC32TargetCodeGenInfo(CodeGenTypes &CGT) : TargetCodeGenInfo(new PPC32_SVR4_ABIInfo(CGT)) {} int getDwarfEHStackPointer(CodeGen::CodeGenModule &M) const override { // This is recovered from gcc output. @@ -2852,6 +2860,96 @@ public: } +llvm::Value *PPC32_SVR4_ABIInfo::EmitVAArg(llvm::Value *VAListAddr, + QualType Ty, + CodeGenFunction &CGF) const { + if (const ComplexType *CTy = Ty->getAs()) { + // TODO: Implement this. For now ignore. + (void)CTy; + return nullptr; + } + + bool isI64 = Ty->isIntegerType() && getContext().getTypeSize(Ty) == 64; + bool isInt = Ty->isIntegerType() || Ty->isPointerType() || Ty->isAggregateType(); + llvm::Type *CharPtr = CGF.Int8PtrTy; + llvm::Type *CharPtrPtr = CGF.Int8PtrPtrTy; + + CGBuilderTy &Builder = CGF.Builder; + llvm::Value *GPRPtr = Builder.CreateBitCast(VAListAddr, CharPtr, "gprptr"); + llvm::Value *GPRPtrAsInt = Builder.CreatePtrToInt(GPRPtr, CGF.Int32Ty); + llvm::Value *FPRPtrAsInt = Builder.CreateAdd(GPRPtrAsInt, Builder.getInt32(1)); + llvm::Value *FPRPtr = Builder.CreateIntToPtr(FPRPtrAsInt, CharPtr); + llvm::Value *OverflowAreaPtrAsInt = Builder.CreateAdd(FPRPtrAsInt, Builder.getInt32(3)); + llvm::Value *OverflowAreaPtr = Builder.CreateIntToPtr(OverflowAreaPtrAsInt, CharPtrPtr); + llvm::Value *RegsaveAreaPtrAsInt = Builder.CreateAdd(OverflowAreaPtrAsInt, Builder.getInt32(4)); + llvm::Value *RegsaveAreaPtr = Builder.CreateIntToPtr(RegsaveAreaPtrAsInt, CharPtrPtr); + llvm::Value *GPR = Builder.CreateLoad(GPRPtr, false, "gpr"); + // Align GPR when TY is i64. + if (isI64) { + llvm::Value *GPRAnd = Builder.CreateAnd(GPR, Builder.getInt8(1)); + llvm::Value *CC64 = Builder.CreateICmpEQ(GPRAnd, Builder.getInt8(1)); + llvm::Value *GPRPlusOne = Builder.CreateAdd(GPR, Builder.getInt8(1)); + GPR = Builder.CreateSelect(CC64, GPRPlusOne, GPR); + } + llvm::Value *FPR = Builder.CreateLoad(FPRPtr, false, "fpr"); + llvm::Value *OverflowArea = Builder.CreateLoad(OverflowAreaPtr, false, "overflow_area"); + llvm::Value *OverflowAreaAsInt = Builder.CreatePtrToInt(OverflowArea, CGF.Int32Ty); + llvm::Value *RegsaveArea = Builder.CreateLoad(RegsaveAreaPtr, false, "regsave_area"); + llvm::Value *RegsaveAreaAsInt = Builder.CreatePtrToInt(RegsaveArea, CGF.Int32Ty); + + llvm::Value *CC = Builder.CreateICmpULT(isInt ? GPR : FPR, + Builder.getInt8(8), "cond"); + + llvm::Value *RegConstant = Builder.CreateMul(isInt ? GPR : FPR, + Builder.getInt8(isInt ? 4 : 8)); + + llvm::Value *OurReg = Builder.CreateAdd(RegsaveAreaAsInt, Builder.CreateSExt(RegConstant, CGF.Int32Ty)); + + if (Ty->isFloatingType()) + OurReg = Builder.CreateAdd(OurReg, Builder.getInt32(32)); + + llvm::BasicBlock *UsingRegs = CGF.createBasicBlock("using_regs"); + llvm::BasicBlock *UsingOverflow = CGF.createBasicBlock("using_overflow"); + llvm::BasicBlock *Cont = CGF.createBasicBlock("cont"); + + Builder.CreateCondBr(CC, UsingRegs, UsingOverflow); + + CGF.EmitBlock(UsingRegs); + + llvm::Type *PTy = llvm::PointerType::getUnqual(CGF.ConvertType(Ty)); + llvm::Value *Result1 = Builder.CreateIntToPtr(OurReg, PTy); + // Increase the GPR/FPR indexes. + if (isInt) { + GPR = Builder.CreateAdd(GPR, Builder.getInt8(isI64 ? 2 : 1)); + Builder.CreateStore(GPR, GPRPtr); + } else { + FPR = Builder.CreateAdd(FPR, Builder.getInt8(1)); + Builder.CreateStore(FPR, FPRPtr); + } + CGF.EmitBranch(Cont); + + CGF.EmitBlock(UsingOverflow); + + // Increase the overflow area. + llvm::Value *Result2 = Builder.CreateIntToPtr(OverflowAreaAsInt, PTy); + OverflowAreaAsInt = Builder.CreateAdd(OverflowAreaAsInt, Builder.getInt32(isInt ? 4 : 8)); + Builder.CreateStore(Builder.CreateIntToPtr(OverflowAreaAsInt, CharPtr), OverflowAreaPtr); + CGF.EmitBranch(Cont); + + CGF.EmitBlock(Cont); + + llvm::PHINode *Result = CGF.Builder.CreatePHI(PTy, 2, "vaarg.addr"); + Result->addIncoming(Result1, UsingRegs); + Result->addIncoming(Result2, UsingOverflow); + + if (Ty->isAggregateType()) { + llvm::Value *AGGPtr = Builder.CreateBitCast(Result, CharPtrPtr, "aggrptr") ; + return Builder.CreateLoad(AGGPtr, false, "aggr"); + } + + return Result; +} + bool PPC32TargetCodeGenInfo::initDwarfEHRegSizeTable(CodeGen::CodeGenFunction &CGF, llvm::Value *Address) const { From owner-svn-src-projects@FreeBSD.ORG Sun Dec 14 18:21:04 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A1FD87FB; Sun, 14 Dec 2014 18:21:04 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8CC27D44; Sun, 14 Dec 2014 18:21:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBEIL4vF022848; Sun, 14 Dec 2014 18:21:04 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBEIL4gq022847; Sun, 14 Dec 2014 18:21:04 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201412141821.sBEIL4gq022847@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sun, 14 Dec 2014 18:21:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275774 - projects/clang350-import/contrib/llvm/patches X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Dec 2014 18:21:04 -0000 Author: dim Date: Sun Dec 14 18:21:03 2014 New Revision: 275774 URL: https://svnweb.freebsd.org/changeset/base/275774 Log: Add clang patch corrsponding to r275773. Added: projects/clang350-import/contrib/llvm/patches/patch-23-llvm-r221170-ppc-vaarg.diff Added: projects/clang350-import/contrib/llvm/patches/patch-23-llvm-r221170-ppc-vaarg.diff ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang350-import/contrib/llvm/patches/patch-23-llvm-r221170-ppc-vaarg.diff Sun Dec 14 18:21:03 2014 (r275774) @@ -0,0 +1,298 @@ +Pull in r221170 from upstream clang trunk (by Roman Divacky): + + Implement vaarg lowering for ppc32. Lowering of scalars and + aggregates is supported. Complex numbers are not. + +Pull in r221174 from upstream clang trunk (by Roman Divacky): + + Require asserts to unbreak the buildbots. + +Pull in r221284 from upstream clang trunk (by Roman Divacky): + + Rewrite the test to not require asserts. + +Pull in r221285 from upstream clang trunk (by Roman Divacky): + + Since the file has both ppc and ppc64 tests in it rename it. + +This adds va_args support for PowerPC (32 bit) to clang. + +Introduced here: http://svnweb.freebsd.org/changeset/base/275773 + +Index: tools/clang/lib/CodeGen/TargetInfo.cpp +=================================================================== +--- tools/clang/lib/CodeGen/TargetInfo.cpp ++++ tools/clang/lib/CodeGen/TargetInfo.cpp +@@ -2835,12 +2835,20 @@ llvm::Value *NaClX86_64ABIInfo::EmitVAArg(llvm::Va + + + // PowerPC-32 +- + namespace { +-class PPC32TargetCodeGenInfo : public DefaultTargetCodeGenInfo { ++/// PPC32_SVR4_ABIInfo - The 32-bit PowerPC ELF (SVR4) ABI information. ++class PPC32_SVR4_ABIInfo : public DefaultABIInfo { + public: +- PPC32TargetCodeGenInfo(CodeGenTypes &CGT) : DefaultTargetCodeGenInfo(CGT) {} ++ PPC32_SVR4_ABIInfo(CodeGen::CodeGenTypes &CGT) : DefaultABIInfo(CGT) {} + ++ llvm::Value *EmitVAArg(llvm::Value *VAListAddr, QualType Ty, ++ CodeGenFunction &CGF) const override; ++}; ++ ++class PPC32TargetCodeGenInfo : public TargetCodeGenInfo { ++public: ++ PPC32TargetCodeGenInfo(CodeGenTypes &CGT) : TargetCodeGenInfo(new PPC32_SVR4_ABIInfo(CGT)) {} ++ + int getDwarfEHStackPointer(CodeGen::CodeGenModule &M) const override { + // This is recovered from gcc output. + return 1; // r1 is the dedicated stack pointer +@@ -2852,6 +2860,96 @@ namespace { + + } + ++llvm::Value *PPC32_SVR4_ABIInfo::EmitVAArg(llvm::Value *VAListAddr, ++ QualType Ty, ++ CodeGenFunction &CGF) const { ++ if (const ComplexType *CTy = Ty->getAs()) { ++ // TODO: Implement this. For now ignore. ++ (void)CTy; ++ return nullptr; ++ } ++ ++ bool isI64 = Ty->isIntegerType() && getContext().getTypeSize(Ty) == 64; ++ bool isInt = Ty->isIntegerType() || Ty->isPointerType() || Ty->isAggregateType(); ++ llvm::Type *CharPtr = CGF.Int8PtrTy; ++ llvm::Type *CharPtrPtr = CGF.Int8PtrPtrTy; ++ ++ CGBuilderTy &Builder = CGF.Builder; ++ llvm::Value *GPRPtr = Builder.CreateBitCast(VAListAddr, CharPtr, "gprptr"); ++ llvm::Value *GPRPtrAsInt = Builder.CreatePtrToInt(GPRPtr, CGF.Int32Ty); ++ llvm::Value *FPRPtrAsInt = Builder.CreateAdd(GPRPtrAsInt, Builder.getInt32(1)); ++ llvm::Value *FPRPtr = Builder.CreateIntToPtr(FPRPtrAsInt, CharPtr); ++ llvm::Value *OverflowAreaPtrAsInt = Builder.CreateAdd(FPRPtrAsInt, Builder.getInt32(3)); ++ llvm::Value *OverflowAreaPtr = Builder.CreateIntToPtr(OverflowAreaPtrAsInt, CharPtrPtr); ++ llvm::Value *RegsaveAreaPtrAsInt = Builder.CreateAdd(OverflowAreaPtrAsInt, Builder.getInt32(4)); ++ llvm::Value *RegsaveAreaPtr = Builder.CreateIntToPtr(RegsaveAreaPtrAsInt, CharPtrPtr); ++ llvm::Value *GPR = Builder.CreateLoad(GPRPtr, false, "gpr"); ++ // Align GPR when TY is i64. ++ if (isI64) { ++ llvm::Value *GPRAnd = Builder.CreateAnd(GPR, Builder.getInt8(1)); ++ llvm::Value *CC64 = Builder.CreateICmpEQ(GPRAnd, Builder.getInt8(1)); ++ llvm::Value *GPRPlusOne = Builder.CreateAdd(GPR, Builder.getInt8(1)); ++ GPR = Builder.CreateSelect(CC64, GPRPlusOne, GPR); ++ } ++ llvm::Value *FPR = Builder.CreateLoad(FPRPtr, false, "fpr"); ++ llvm::Value *OverflowArea = Builder.CreateLoad(OverflowAreaPtr, false, "overflow_area"); ++ llvm::Value *OverflowAreaAsInt = Builder.CreatePtrToInt(OverflowArea, CGF.Int32Ty); ++ llvm::Value *RegsaveArea = Builder.CreateLoad(RegsaveAreaPtr, false, "regsave_area"); ++ llvm::Value *RegsaveAreaAsInt = Builder.CreatePtrToInt(RegsaveArea, CGF.Int32Ty); ++ ++ llvm::Value *CC = Builder.CreateICmpULT(isInt ? GPR : FPR, ++ Builder.getInt8(8), "cond"); ++ ++ llvm::Value *RegConstant = Builder.CreateMul(isInt ? GPR : FPR, ++ Builder.getInt8(isInt ? 4 : 8)); ++ ++ llvm::Value *OurReg = Builder.CreateAdd(RegsaveAreaAsInt, Builder.CreateSExt(RegConstant, CGF.Int32Ty)); ++ ++ if (Ty->isFloatingType()) ++ OurReg = Builder.CreateAdd(OurReg, Builder.getInt32(32)); ++ ++ llvm::BasicBlock *UsingRegs = CGF.createBasicBlock("using_regs"); ++ llvm::BasicBlock *UsingOverflow = CGF.createBasicBlock("using_overflow"); ++ llvm::BasicBlock *Cont = CGF.createBasicBlock("cont"); ++ ++ Builder.CreateCondBr(CC, UsingRegs, UsingOverflow); ++ ++ CGF.EmitBlock(UsingRegs); ++ ++ llvm::Type *PTy = llvm::PointerType::getUnqual(CGF.ConvertType(Ty)); ++ llvm::Value *Result1 = Builder.CreateIntToPtr(OurReg, PTy); ++ // Increase the GPR/FPR indexes. ++ if (isInt) { ++ GPR = Builder.CreateAdd(GPR, Builder.getInt8(isI64 ? 2 : 1)); ++ Builder.CreateStore(GPR, GPRPtr); ++ } else { ++ FPR = Builder.CreateAdd(FPR, Builder.getInt8(1)); ++ Builder.CreateStore(FPR, FPRPtr); ++ } ++ CGF.EmitBranch(Cont); ++ ++ CGF.EmitBlock(UsingOverflow); ++ ++ // Increase the overflow area. ++ llvm::Value *Result2 = Builder.CreateIntToPtr(OverflowAreaAsInt, PTy); ++ OverflowAreaAsInt = Builder.CreateAdd(OverflowAreaAsInt, Builder.getInt32(isInt ? 4 : 8)); ++ Builder.CreateStore(Builder.CreateIntToPtr(OverflowAreaAsInt, CharPtr), OverflowAreaPtr); ++ CGF.EmitBranch(Cont); ++ ++ CGF.EmitBlock(Cont); ++ ++ llvm::PHINode *Result = CGF.Builder.CreatePHI(PTy, 2, "vaarg.addr"); ++ Result->addIncoming(Result1, UsingRegs); ++ Result->addIncoming(Result2, UsingOverflow); ++ ++ if (Ty->isAggregateType()) { ++ llvm::Value *AGGPtr = Builder.CreateBitCast(Result, CharPtrPtr, "aggrptr") ; ++ return Builder.CreateLoad(AGGPtr, false, "aggr"); ++ } ++ ++ return Result; ++} ++ + bool + PPC32TargetCodeGenInfo::initDwarfEHRegSizeTable(CodeGen::CodeGenFunction &CGF, + llvm::Value *Address) const { +Index: tools/clang/test/CodeGen/ppc-varargs-struct.c +=================================================================== +--- tools/clang/test/CodeGen/ppc-varargs-struct.c ++++ tools/clang/test/CodeGen/ppc-varargs-struct.c +@@ -0,0 +1,112 @@ ++// REQUIRES: powerpc-registered-target ++// REQUIRES: asserts ++// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s ++// RUN: %clang_cc1 -triple powerpc-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-PPC ++ ++#include ++ ++struct x { ++ long a; ++ double b; ++}; ++ ++void testva (int n, ...) ++{ ++ va_list ap; ++ ++ struct x t = va_arg (ap, struct x); ++// CHECK: bitcast i8* %{{[a-z.0-9]*}} to %struct.x* ++// CHECK: bitcast %struct.x* %t to i8* ++// CHECK: bitcast %struct.x* %{{[0-9]+}} to i8* ++// CHECK: call void @llvm.memcpy ++// CHECK-PPC: [[ARRAYDECAY:%[a-z0-9]+]] = getelementptr inbounds [1 x %struct.__va_list_tag]* %ap, i32 0, i32 0 ++// CHECK-PPC-NEXT: [[GPRPTR:%[a-z0-9]+]] = bitcast %struct.__va_list_tag* [[ARRAYDECAY]] to i8* ++// CHECK-PPC-NEXT: [[ZERO:%[0-9]+]] = ptrtoint i8* [[GPRPTR]] to i32 ++// CHECK-PPC-NEXT: [[ONE:%[0-9]+]] = add i32 [[ZERO]], 1 ++// CHECK-PPC-NEXT: [[TWO:%[0-9]+]] = inttoptr i32 [[ONE]] to i8* ++// CHECK-PPC-NEXT: [[THREE:%[0-9]+]] = add i32 [[ONE]], 3 ++// CHECK-PPC-NEXT: [[FOUR:%[0-9]+]] = inttoptr i32 [[THREE]] to i8** ++// CHECK-PPC-NEXT: [[FIVE:%[0-9]+]] = add i32 [[THREE]], 4 ++// CHECK-PPC-NEXT: [[SIX:%[0-9]+]] = inttoptr i32 [[FIVE]] to i8** ++// CHECK-PPC-NEXT: [[GPR:%[a-z0-9]+]] = load i8* [[GPRPTR]] ++// CHECK-PPC-NEXT: [[FPR:%[a-z0-9]+]] = load i8* [[TWO]] ++// CHECK-PPC-NEXT: [[OVERFLOW_AREA:%[a-z_0-9]+]] = load i8** [[FOUR]] ++// CHECK-PPC-NEXT: [[SEVEN:%[0-9]+]] = ptrtoint i8* [[OVERFLOW_AREA]] to i32 ++// CHECK-PPC-NEXT: [[REGSAVE_AREA:%[a-z_0-9]+]] = load i8** [[SIX]] ++// CHECK-PPC-NEXT: [[EIGHT:%[0-9]+]] = ptrtoint i8* [[REGSAVE_AREA]] to i32 ++// CHECK-PPC-NEXT: [[COND:%[a-z0-9]+]] = icmp ult i8 [[GPR]], 8 ++// CHECK-PPC-NEXT: [[NINE:%[0-9]+]] = mul i8 [[GPR]], 4 ++// CHECK-PPC-NEXT: [[TEN:%[0-9]+]] = sext i8 [[NINE]] to i32 ++// CHECK-PPC-NEXT: [[ELEVEN:%[0-9]+]] = add i32 [[EIGHT]], [[TEN]] ++// CHECK-PPC-NEXT: br i1 [[COND]], label [[USING_REGS:%[a-z_0-9]+]], label [[USING_OVERFLOW:%[a-z_0-9]+]] ++// ++// CHECK-PPC1:[[USING_REGS]] ++// CHECK-PPC: [[TWELVE:%[0-9]+]] = inttoptr i32 [[ELEVEN]] to %struct.x* ++// CHECK-PPC-NEXT: [[THIRTEEN:%[0-9]+]] = add i8 [[GPR]], 1 ++// CHECK-PPC-NEXT: store i8 [[THIRTEEN]], i8* [[GPRPTR]] ++// CHECK-PPC-NEXT: br label [[CONT:%[a-z0-9]+]] ++// ++// CHECK-PPC1:[[USING_OVERFLOW]] ++// CHECK-PPC: [[FOURTEEN:%[0-9]+]] = inttoptr i32 [[SEVEN]] to %struct.x* ++// CHECK-PPC-NEXT: [[FIFTEEN:%[0-9]+]] = add i32 [[SEVEN]], 4 ++// CHECK-PPC-NEXT: [[SIXTEEN:%[0-9]+]] = inttoptr i32 [[FIFTEEN]] to i8* ++// CHECK-PPC-NEXT: store i8* [[SIXTEEN]], i8** [[FOUR]] ++// CHECK-PPC-NEXT: br label [[CONT]] ++// ++// CHECK-PPC1:[[CONT]] ++// CHECK-PPC: [[VAARG_ADDR:%[a-z.0-9]+]] = phi %struct.x* [ [[TWELVE]], [[USING_REGS]] ], [ [[FOURTEEN]], [[USING_OVERFLOW]] ] ++// CHECK-PPC-NEXT: [[AGGRPTR:%[a-z0-9]+]] = bitcast %struct.x* [[VAARG_ADDR]] to i8** ++// CHECK-PPC-NEXT: [[AGGR:%[a-z0-9]+]] = load i8** [[AGGRPTR]] ++// CHECK-PPC-NEXT: [[SEVENTEEN:%[0-9]+]] = bitcast %struct.x* %t to i8* ++// CHECK-PPC-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* [[SEVENTEEN]], i8* [[AGGR]], i32 16, i32 8, i1 false) ++ ++ int v = va_arg (ap, int); ++// CHECK: ptrtoint i8* %{{[a-z.0-9]*}} to i64 ++// CHECK: add i64 %{{[0-9]+}}, 4 ++// CHECK: inttoptr i64 %{{[0-9]+}} to i8* ++// CHECK: bitcast i8* %{{[0-9]+}} to i32* ++// CHECK-PPC: [[ARRAYDECAY1:%[a-z0-9]+]] = getelementptr inbounds [1 x %struct.__va_list_tag]* %ap, i32 0, i32 0 ++// CHECK-PPC-NEXT: [[GPRPTR1:%[a-z0-9]+]] = bitcast %struct.__va_list_tag* [[ARRAYDECAY1]] to i8* ++// CHECK-PPC-NEXT: [[EIGHTEEN:%[0-9]+]] = ptrtoint i8* [[GPRPTR1]] to i32 ++// CHECK-PPC-NEXT: [[NINETEEN:%[0-9]+]] = add i32 [[EIGHTEEN]], 1 ++// CHECK-PPC-NEXT: [[TWENTY:%[0-9]+]] = inttoptr i32 [[NINETEEN]] to i8* ++// CHECK-PPC-NEXT: [[TWENTYONE:%[0-9]+]] = add i32 [[NINETEEN]], 3 ++// CHECK-PPC-NEXT: [[TWENTYTWO:%[0-9]+]] = inttoptr i32 [[TWENTYONE]] to i8** ++// CHECK-PPC-NEXT: [[TWENTYTHREE:%[0-9]+]] = add i32 [[TWENTYONE]], 4 ++// CHECK-PPC-NEXT: [[TWENTYFOUR:%[0-9]+]] = inttoptr i32 [[TWENTYTHREE]] to i8** ++// CHECK-PPC-NEXT: [[GPR1:%[a-z0-9]+]] = load i8* [[GPRPTR1]] ++// CHECK-PPC-NEXT: [[FPR1:%[a-z0-9]+]] = load i8* [[TWENTY]] ++// CHECK-PPC-NEXT: [[OVERFLOW_AREA1:%[a-z_0-9]+]] = load i8** [[TWENTYTWO]] ++// CHECK-PPC-NEXT: [[TWENTYFIVE:%[0-9]+]] = ptrtoint i8* [[OVERFLOW_AREA1]] to i32 ++// CHECK-PPC-NEXT: [[REGSAVE_AREA1:%[a-z_0-9]+]] = load i8** [[TWENTYFOUR]] ++// CHECK-PPC-NEXT: [[TWENTYSIX:%[0-9]+]] = ptrtoint i8* [[REGSAVE_AREA1]] to i32 ++// CHECK-PPC-NEXT: [[COND1:%[a-z0-9]+]] = icmp ult i8 [[GPR1]], 8 ++// CHECK-PPC-NEXT: [[TWENTYSEVEN:%[0-9]+]] = mul i8 [[GPR1]], 4 ++// CHECK-PPC-NEXT: [[TWENTYEIGHT:%[0-9]+]] = sext i8 [[TWENTYSEVEN]] to i32 ++// CHECK-PPC-NEXT: [[TWENTYNINE:%[0-9]+]] = add i32 [[TWENTYSIX]], [[TWENTYEIGHT]] ++// CHECK-PPC-NEXT: br i1 [[COND1]], label [[USING_REGS1:%[a-z_0-9]+]], label [[USING_OVERFLOW1:%[a-z_0-9]+]] ++// ++// CHECK-PPC1:[[USING_REGS1]]: ++// CHECK-PPC: [[THIRTY:%[0-9]+]] = inttoptr i32 [[TWENTYNINE]] to i32* ++// CHECK-PPC-NEXT: [[THIRTYONE:%[0-9]+]] = add i8 [[GPR1]], 1 ++// CHECK-PPC-NEXT: store i8 [[THIRTYONE]], i8* [[GPRPTR1]] ++// CHECK-PPC-NEXT: br label [[CONT1:%[a-z0-9]+]] ++// ++// CHECK-PPC1:[[USING_OVERFLOW1]]: ++// CHECK-PPC: [[THIRTYTWO:%[0-9]+]] = inttoptr i32 [[TWENTYFIVE]] to i32* ++// CHECK-PPC-NEXT: [[THIRTYTHREE:%[0-9]+]] = add i32 [[TWENTYFIVE]], 4 ++// CHECK-PPC-NEXT: [[THIRTYFOUR:%[0-9]+]] = inttoptr i32 [[THIRTYTHREE]] to i8* ++// CHECK-PPC-NEXT: store i8* [[THIRTYFOUR]], i8** [[TWENTYTWO]] ++// CHECK-PPC-NEXT: br label [[CONT1]] ++// ++// CHECK-PPC1:[[CONT1]]: ++// CHECK-PPC: [[VAARG_ADDR1:%[a-z.0-9]+]] = phi i32* [ [[THIRTY]], [[USING_REGS1]] ], [ [[THIRTYTWO]], [[USING_OVERFLOW1]] ] ++// CHECK-PPC-NEXT: [[THIRTYFIVE:%[0-9]+]] = load i32* [[VAARG_ADDR1]] ++// CHECK-PPC-NEXT: store i32 [[THIRTYFIVE]], i32* %v, align 4 ++ ++#ifdef __powerpc64__ ++ __int128_t u = va_arg (ap, __int128_t); ++#endif ++// CHECK: bitcast i8* %{{[a-z.0-9]+}} to i128* ++// CHECK-NEXT: load i128* %{{[0-9]+}} ++} +Index: tools/clang/test/CodeGen/ppc64-varargs-struct.c +=================================================================== +--- tools/clang/test/CodeGen/ppc64-varargs-struct.c ++++ tools/clang/test/CodeGen/ppc64-varargs-struct.c +@@ -1,30 +0,0 @@ +-// REQUIRES: powerpc-registered-target +-// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s +- +-#include +- +-struct x { +- long a; +- double b; +-}; +- +-void testva (int n, ...) +-{ +- va_list ap; +- +- struct x t = va_arg (ap, struct x); +-// CHECK: bitcast i8* %{{[a-z.0-9]*}} to %struct.x* +-// CHECK: bitcast %struct.x* %t to i8* +-// CHECK: bitcast %struct.x* %{{[0-9]+}} to i8* +-// CHECK: call void @llvm.memcpy +- +- int v = va_arg (ap, int); +-// CHECK: ptrtoint i8* %{{[a-z.0-9]*}} to i64 +-// CHECK: add i64 %{{[0-9]+}}, 4 +-// CHECK: inttoptr i64 %{{[0-9]+}} to i8* +-// CHECK: bitcast i8* %{{[0-9]+}} to i32* +- +- __int128_t u = va_arg (ap, __int128_t); +-// CHECK: bitcast i8* %{{[a-z.0-9]+}} to i128* +-// CHECK-NEXT: load i128* %{{[0-9]+}} +-} From owner-svn-src-projects@FreeBSD.ORG Tue Dec 16 18:57:43 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 46F20656; Tue, 16 Dec 2014 18:57:43 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1985FC19; Tue, 16 Dec 2014 18:57:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBGIvgJg045244; Tue, 16 Dec 2014 18:57:42 GMT (envelope-from bryanv@FreeBSD.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBGIvgKR045243; Tue, 16 Dec 2014 18:57:42 GMT (envelope-from bryanv@FreeBSD.org) Message-Id: <201412161857.sBGIvgKR045243@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: bryanv set sender to bryanv@FreeBSD.org using -f From: Bryan Venteicher Date: Tue, 16 Dec 2014 18:57:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275835 - projects/paravirt X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Dec 2014 18:57:43 -0000 Author: bryanv Date: Tue Dec 16 18:57:42 2014 New Revision: 275835 URL: https://svnweb.freebsd.org/changeset/base/275835 Log: Create projects branch for paravirt work This branch will initially be used to develop support for KVM paravirtualization - KVM clock, EIO, and async page fault - and then hopefully pvops infrastructure and support for other hypervisors. Added: - copied from r275834, head/ Directory Properties: projects/paravirt/ (props changed) From owner-svn-src-projects@FreeBSD.ORG Tue Dec 16 19:09:54 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 72924838 for ; Tue, 16 Dec 2014 19:09:54 +0000 (UTC) Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3C5FAD1F for ; Tue, 16 Dec 2014 19:09:53 +0000 (UTC) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 763CA20707 for ; Tue, 16 Dec 2014 14:09:52 -0500 (EST) Received: from frontend1 ([10.202.2.160]) by compute4.internal (MEProxy); Tue, 16 Dec 2014 14:09:52 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.net; h= x-sasl-enc:message-id:date:from:mime-version:to:subject :references:in-reply-to:content-type:content-transfer-encoding; s=mesmtp; bh=jgvUEidNAwcmQXRSs9/wa4Q2GEU=; b=TiM8bU7nom4I9kW/EM PB3AtPZHeBO1nLYLH0+NWGU8VU8zNUoioek8CHVAcRVjArWV49+CfvzVWNFqXozP fkEb/TdK3PrJFg8aI7atFbFaA3lDjos67mcTIgmucy1FHT1sAPC42NwkB698GND5 r4z6kzpOsp6LiEYWCuOkvxYOU= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=x-sasl-enc:message-id:date:from :mime-version:to:subject:references:in-reply-to:content-type :content-transfer-encoding; s=smtpout; bh=jgvUEidNAwcmQXRSs9/wa4 Q2GEU=; b=JdR068EjBgYuSrjegaGRFNHdTnPBznUlthHWg0b0NPSM0wtOkAewuK VmZta+e4H9PaHUvwAm31ef4xSg+cVcRotwgQPV87/UP6LkiJDdtWGJ380CpRE5gf ZndRXrgmKFdAXO+SBySmYWmyQ7bLm8/+NqdrFz5u1CWchJ07PGYUc= X-Sasl-enc: L9BSBYz9CL80+WAIDqAZs4/nEneovSyze7ybDIJjdJJs 1418756992 Received: from [192.168.1.65] (unknown [81.132.153.28]) by mail.messagingengine.com (Postfix) with ESMTPA id CB202C00283; Tue, 16 Dec 2014 14:09:51 -0500 (EST) Message-ID: <5490837E.8050907@fastmail.net> Date: Tue, 16 Dec 2014 19:09:50 +0000 From: Bruce Simpson User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: Bryan Venteicher , src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: Re: svn commit: r275835 - projects/paravirt References: <201412161857.sBGIvgKR045243@svn.freebsd.org> In-Reply-To: <201412161857.sBGIvgKR045243@svn.freebsd.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Dec 2014 19:09:54 -0000 Bryan, I am very glad to see this, because: there are some limitations with Bhyve right now which make a KVM based workflow more suitable for my specific use case (protocol testbed on laptop). On 16/12/2014 18:57, Bryan Venteicher wrote: > This branch will initially be used to develop support for KVM > paravirtualization - KVM clock, EIO, and async page fault - > and then hopefully pvops infrastructure and support for other > hypervisors. > KVM is likely to be a better choice in constrained environments (e.g. laptops) because of the richer support for sparse storage (QCOW2, virtio-scsi, virtio-block and TRIM etc.) Unfortunately one limitation of this approach is that ZFS on Linux has not yet gained TRIM features, so this rules out direct migration to Bhyve on the same system at a later date; I will have to use ext4 for guests hosted on a laptop SSD and migrate everything manually. I have discussed the lack of sparse storage support in BHyve in private with marcel@. He is aware of the issue and is working to address it in tools, however it does need to be looked at further afield. I cannot get directly involved in this due to other commitments. thanks Bruce From owner-svn-src-projects@FreeBSD.ORG Wed Dec 17 01:48:04 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0818469A; Wed, 17 Dec 2014 01:48:04 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D0B601C9; Wed, 17 Dec 2014 01:48:03 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBH1m3kW047117; Wed, 17 Dec 2014 01:48:03 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBH1m3ei047116; Wed, 17 Dec 2014 01:48:03 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201412170148.sBH1m3ei047116@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Wed, 17 Dec 2014 01:48:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275848 - projects/building-blocks X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Dec 2014 01:48:04 -0000 Author: ngie Date: Wed Dec 17 01:48:02 2014 New Revision: 275848 URL: https://svnweb.freebsd.org/changeset/base/275848 Log: Do not enable DEBUG_FILES in stages 1. through 3. of the build Blindly building debugging symbols into the toolchain slows down builds considerably and eats up a lot more resources than required, both in terms of memory and disk I/O This change has no noticeable effect for those who do not build with MK_DEBUG_FILES=no (which is the default) Sponsored by: EMC / Isilon Storage Division Modified: projects/building-blocks/Makefile.inc1 Modified: projects/building-blocks/Makefile.inc1 ============================================================================== --- projects/building-blocks/Makefile.inc1 Wed Dec 17 01:36:00 2014 (r275847) +++ projects/building-blocks/Makefile.inc1 Wed Dec 17 01:48:02 2014 (r275848) @@ -261,7 +261,8 @@ BMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \ MK_HTML=no MK_INFO=no NO_LINT=yes MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ - MK_CLANG_FULL=no MK_LLDB=no MK_TESTS=no + MK_CLANG_FULL=no MK_LLDB=no MK_TESTS=no \ + MK_DEBUG_FILES=no # build-tools stage TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ @@ -273,12 +274,13 @@ TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ -DNO_LINT \ -DNO_CPU_CFLAGS \ MK_WARNS=no MK_CTF=no MK_CLANG_FULL=no MK_LLDB=no MK_MAN=no \ - MK_SHAREDOCS=no MK_TESTS=no + MK_DEBUG_FILES=no \ + MK_SHAREDOCS=no MK_TESTS=no \ # cross-tools stage XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - MK_GDB=no MK_TESTS=no + MK_DEBUG_FILES=no MK_GDB=no MK_TESTS=no # kernel-tools stage KTMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ @@ -1471,7 +1473,7 @@ NXBMAKE= ${NXBENV} ${MAKE} \ TBLGEN=${OBJTREE}/nxb-bin/usr/bin/tblgen \ CLANG_TBLGEN=${OBJTREE}/nxb-bin/usr/bin/clang-tblgen \ MACHINE=${TARGET} MACHINE_ARCH=${TARGET_ARCH} \ - MK_GDB=no MK_TESTS=no \ + MK_DEBUG_FILES=no MK_GDB=no MK_TESTS=no \ SSP_CFLAGS= \ MK_HTML=no MK_INFO=no NO_LINT=yes MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ @@ -2008,6 +2010,7 @@ XDEV_CPUTYPE?=${TARGET_CPUTYPE} NOFUN=-DNO_FSCHG MK_HTML=no MK_INFO=no -DNO_LINT \ MK_MAN=no MK_NLS=no MK_PROFILE=no \ MK_KERBEROS=no MK_RESCUE=no MK_TESTS=no MK_WARNS=no \ + MK_DEBUG_FILES=no \ MK_VI=no \ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ CPUTYPE=${XDEV_CPUTYPE} -DNO_SHARE From owner-svn-src-projects@FreeBSD.ORG Wed Dec 17 01:48:33 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8CD29789; Wed, 17 Dec 2014 01:48:33 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 79E9D1CB; Wed, 17 Dec 2014 01:48:33 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBH1mXZJ047222; Wed, 17 Dec 2014 01:48:33 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBH1mXn0047221; Wed, 17 Dec 2014 01:48:33 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201412170148.sBH1mXn0047221@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Wed, 17 Dec 2014 01:48:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275849 - projects/building-blocks X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Dec 2014 01:48:33 -0000 Author: ngie Date: Wed Dec 17 01:48:32 2014 New Revision: 275849 URL: https://svnweb.freebsd.org/changeset/base/275849 Log: Remove leftover MK_VI == no from previous work that's no longer needed Modified: projects/building-blocks/Makefile.inc1 Modified: projects/building-blocks/Makefile.inc1 ============================================================================== --- projects/building-blocks/Makefile.inc1 Wed Dec 17 01:48:02 2014 (r275848) +++ projects/building-blocks/Makefile.inc1 Wed Dec 17 01:48:32 2014 (r275849) @@ -2011,7 +2011,6 @@ NOFUN=-DNO_FSCHG MK_HTML=no MK_INFO=no - MK_MAN=no MK_NLS=no MK_PROFILE=no \ MK_KERBEROS=no MK_RESCUE=no MK_TESTS=no MK_WARNS=no \ MK_DEBUG_FILES=no \ - MK_VI=no \ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ CPUTYPE=${XDEV_CPUTYPE} -DNO_SHARE From owner-svn-src-projects@FreeBSD.ORG Thu Dec 18 18:35:49 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 18DA57F7; Thu, 18 Dec 2014 18:35:49 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 055242B07; Thu, 18 Dec 2014 18:35:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBIIZmn9010956; Thu, 18 Dec 2014 18:35:48 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBIIZmwm010955; Thu, 18 Dec 2014 18:35:48 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201412181835.sBIIZmwm010955@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Thu, 18 Dec 2014 18:35:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275911 - projects/building-blocks X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Dec 2014 18:35:49 -0000 Author: ngie Date: Thu Dec 18 18:35:47 2014 New Revision: 275911 URL: https://svnweb.freebsd.org/changeset/base/275911 Log: Try building a little less groff for build-tools Modified: projects/building-blocks/Makefile.inc1 Modified: projects/building-blocks/Makefile.inc1 ============================================================================== --- projects/building-blocks/Makefile.inc1 Thu Dec 18 18:30:33 2014 (r275910) +++ projects/building-blocks/Makefile.inc1 Thu Dec 18 18:35:47 2014 (r275911) @@ -1236,7 +1236,8 @@ _gperf= gnu/usr.bin/gperf .endif .if ${MK_GROFF} != "no" -_groff= gnu/usr.bin/groff +_groff= gnu/usr.bin/groff/src/libs \ + gnu/usr.bin/groff/src/roff/groff .endif .if ${MK_VT} != "no" From owner-svn-src-projects@FreeBSD.ORG Thu Dec 18 18:44:27 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A9F7FB7C; Thu, 18 Dec 2014 18:44:27 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 91B4D2C43; Thu, 18 Dec 2014 18:44:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBIIiRP3015511; Thu, 18 Dec 2014 18:44:27 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBIIiOvA015492; Thu, 18 Dec 2014 18:44:24 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201412181844.sBIIiOvA015492@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Thu, 18 Dec 2014 18:44:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275912 - in projects/clang350-import: . bin/sh bin/sh/tests/execution cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/lib/libdtrace/common cddl/contrib/opensolaris/lib/libzfs... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Dec 2014 18:44:27 -0000 Author: dim Date: Thu Dec 18 18:44:22 2014 New Revision: 275912 URL: https://svnweb.freebsd.org/changeset/base/275912 Log: Merge ^/head r275759 through r275911. Added: projects/clang350-import/bin/sh/tests/execution/set-x4.0 - copied unchanged from r275905, head/bin/sh/tests/execution/set-x4.0 projects/clang350-import/contrib/elftoolchain/readelf/ - copied from r275905, head/contrib/elftoolchain/readelf/ projects/clang350-import/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff - copied unchanged from r275905, head/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff projects/clang350-import/sys/boot/fdt/dts/mips/beripad-sockit.dts - copied unchanged from r275905, head/sys/boot/fdt/dts/mips/beripad-sockit.dts projects/clang350-import/sys/dev/ofw/ofw_cpu.c - copied unchanged from r275905, head/sys/dev/ofw/ofw_cpu.c projects/clang350-import/sys/kern/kern_procctl.c - copied unchanged from r275905, head/sys/kern/kern_procctl.c projects/clang350-import/sys/mips/conf/BERI_SOCKIT - copied unchanged from r275905, head/sys/mips/conf/BERI_SOCKIT projects/clang350-import/tools/tools/nanobsd/defaults.sh - copied unchanged from r275905, head/tools/tools/nanobsd/defaults.sh projects/clang350-import/usr.sbin/vigr/ - copied from r275905, head/usr.sbin/vigr/ Deleted: projects/clang350-import/sys/powerpc/ofw/ofw_cpu.c Modified: projects/clang350-import/Makefile.inc1 projects/clang350-import/UPDATING projects/clang350-import/bin/sh/output.c projects/clang350-import/bin/sh/tests/execution/Makefile projects/clang350-import/cddl/contrib/opensolaris/cmd/zdb/zdb.c projects/clang350-import/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c projects/clang350-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c projects/clang350-import/contrib/binutils/gas/config/tc-ppc.c projects/clang350-import/contrib/elftoolchain/elfcopy/main.c projects/clang350-import/contrib/elftoolchain/elfcopy/segments.c projects/clang350-import/contrib/unbound/iterator/iterator.c projects/clang350-import/contrib/unbound/iterator/iterator.h projects/clang350-import/etc/Makefile projects/clang350-import/etc/devd/usb.conf projects/clang350-import/etc/mtree/BSD.include.dist projects/clang350-import/etc/mtree/BSD.tests.dist projects/clang350-import/etc/mtree/BSD.usr.dist projects/clang350-import/gnu/usr.bin/cc/cc1plus/Makefile projects/clang350-import/gnu/usr.bin/groff/Makefile projects/clang350-import/gnu/usr.bin/groff/src/Makefile projects/clang350-import/gnu/usr.bin/groff/src/devices/Makefile projects/clang350-import/gnu/usr.bin/groff/src/libs/Makefile projects/clang350-import/gnu/usr.bin/groff/src/preproc/Makefile projects/clang350-import/gnu/usr.bin/groff/src/roff/Makefile projects/clang350-import/gnu/usr.bin/groff/src/utils/Makefile projects/clang350-import/lib/libc/iconv/iconv.3 projects/clang350-import/lib/libc/net/sctp_sys_calls.c projects/clang350-import/lib/libc/sys/kqueue.2 projects/clang350-import/lib/libc/sys/procctl.2 projects/clang350-import/lib/msun/ld128/k_expl.h projects/clang350-import/lib/msun/ld80/k_expl.h projects/clang350-import/lib/msun/src/catrig.c projects/clang350-import/lib/msun/src/catrigf.c projects/clang350-import/lib/msun/src/k_exp.c projects/clang350-import/lib/msun/src/k_expf.c projects/clang350-import/lib/msun/src/math_private.h projects/clang350-import/lib/msun/src/s_ccosh.c projects/clang350-import/lib/msun/src/s_ccoshf.c projects/clang350-import/lib/msun/src/s_cexp.c projects/clang350-import/lib/msun/src/s_cexpf.c projects/clang350-import/lib/msun/src/s_conj.c projects/clang350-import/lib/msun/src/s_conjf.c projects/clang350-import/lib/msun/src/s_conjl.c projects/clang350-import/lib/msun/src/s_cproj.c projects/clang350-import/lib/msun/src/s_cprojf.c projects/clang350-import/lib/msun/src/s_cprojl.c projects/clang350-import/lib/msun/src/s_csinh.c projects/clang350-import/lib/msun/src/s_csinhf.c projects/clang350-import/lib/msun/src/s_csqrt.c projects/clang350-import/lib/msun/src/s_csqrtf.c projects/clang350-import/lib/msun/src/s_csqrtl.c projects/clang350-import/lib/msun/src/s_ctanh.c projects/clang350-import/lib/msun/src/s_ctanhf.c projects/clang350-import/sbin/ffsinfo/ffsinfo.c projects/clang350-import/sbin/ifconfig/Makefile projects/clang350-import/sbin/ifconfig/ifconfig.8 projects/clang350-import/sbin/ifconfig/ifvxlan.c projects/clang350-import/sbin/ping6/ping6.c projects/clang350-import/sbin/shutdown/shutdown.8 projects/clang350-import/sbin/shutdown/shutdown.c projects/clang350-import/share/man/man4/vxlan.4 projects/clang350-import/share/man/man7/build.7 projects/clang350-import/share/man/man9/rmlock.9 projects/clang350-import/share/man/man9/sx.9 projects/clang350-import/sys/amd64/amd64/exception.S projects/clang350-import/sys/amd64/vmm/io/vatpic.c projects/clang350-import/sys/arm/mv/mv_common.c projects/clang350-import/sys/arm/mv/mv_pci.c projects/clang350-import/sys/boot/fdt/dts/arm/socfpga-sockit-beri.dts projects/clang350-import/sys/boot/fdt/dts/mips/beri-netfpga.dts projects/clang350-import/sys/boot/fdt/dts/mips/beri-sim.dts projects/clang350-import/sys/boot/fdt/dts/mips/beripad-de4.dts projects/clang350-import/sys/cam/ctl/ctl.c projects/clang350-import/sys/cam/ctl/ctl.h projects/clang350-import/sys/cam/ctl/ctl_backend.h projects/clang350-import/sys/cam/ctl/ctl_backend_block.c projects/clang350-import/sys/cam/ctl/ctl_cmd_table.c projects/clang350-import/sys/cam/ctl/ctl_frontend_iscsi.c projects/clang350-import/sys/cam/ctl/ctl_frontend_iscsi.h projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_bookmark.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deadlist.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/uberblock.h projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap_impl.h projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap_leaf.h projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/clang350-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/clang350-import/sys/compat/freebsd32/freebsd32.h projects/clang350-import/sys/compat/freebsd32/freebsd32_misc.c projects/clang350-import/sys/compat/linprocfs/linprocfs.c projects/clang350-import/sys/compat/svr4/svr4_socket.c projects/clang350-import/sys/conf/files projects/clang350-import/sys/conf/files.powerpc projects/clang350-import/sys/dev/cxgbe/tom/t4_ddp.c projects/clang350-import/sys/dev/drm/drm_sysctl.c projects/clang350-import/sys/dev/drm2/drm_sysctl.c projects/clang350-import/sys/dev/fdt/fdt_common.c projects/clang350-import/sys/dev/fdt/fdt_common.h projects/clang350-import/sys/dev/iscsi/iscsi.c projects/clang350-import/sys/dev/iscsi/iscsi_proto.h projects/clang350-import/sys/dev/malo/if_malo_pci.c projects/clang350-import/sys/dev/mmc/mmc.c projects/clang350-import/sys/dev/mwl/if_mwl_pci.c projects/clang350-import/sys/dev/sis/if_sis.c projects/clang350-import/sys/dev/usb/net/if_urndis.c projects/clang350-import/sys/dev/usb/serial/umodem.c projects/clang350-import/sys/fs/ext2fs/ext2_alloc.c projects/clang350-import/sys/fs/ext2fs/ext2_lookup.c projects/clang350-import/sys/fs/ext2fs/ext2_vnops.c projects/clang350-import/sys/fs/fuse/fuse_vnops.c projects/clang350-import/sys/fs/msdosfs/msdosfs_lookup.c projects/clang350-import/sys/fs/nandfs/nandfs_vnops.c projects/clang350-import/sys/fs/nfsclient/nfs_clvnops.c projects/clang350-import/sys/fs/nfsserver/nfs_nfsdserv.c projects/clang350-import/sys/fs/tmpfs/tmpfs_vnops.c projects/clang350-import/sys/fs/unionfs/union_subr.c projects/clang350-import/sys/fs/unionfs/union_vnops.c projects/clang350-import/sys/kern/init_main.c projects/clang350-import/sys/kern/kern_conf.c projects/clang350-import/sys/kern/kern_exit.c projects/clang350-import/sys/kern/kern_fork.c projects/clang350-import/sys/kern/kern_thread.c projects/clang350-import/sys/kern/sys_process.c projects/clang350-import/sys/kern/uipc_socket.c projects/clang350-import/sys/kern/uipc_usrreq.c projects/clang350-import/sys/kern/vfs_syscalls.c projects/clang350-import/sys/kern/vfs_vnops.c projects/clang350-import/sys/mips/beri/beri_machdep.c projects/clang350-import/sys/mips/beri/files.beri projects/clang350-import/sys/net80211/ieee80211_scan_sta.c projects/clang350-import/sys/netinet/sctp_pcb.c projects/clang350-import/sys/netinet6/sctp6_usrreq.c projects/clang350-import/sys/nfsclient/nfs_vnops.c projects/clang350-import/sys/nfsserver/nfs_serv.c projects/clang350-import/sys/security/mac_lomac/mac_lomac.c projects/clang350-import/sys/sys/elf_common.h projects/clang350-import/sys/sys/proc.h projects/clang350-import/sys/sys/procctl.h projects/clang350-import/sys/ufs/ffs/ffs_alloc.c projects/clang350-import/sys/ufs/ffs/ffs_snapshot.c projects/clang350-import/sys/ufs/ufs/ufs_lookup.c projects/clang350-import/tools/build/mk/OptionalObsoleteFiles.inc projects/clang350-import/tools/tools/nanobsd/nanobsd.sh projects/clang350-import/usr.bin/id/id.c projects/clang350-import/usr.bin/killall/killall.c projects/clang350-import/usr.bin/sed/compile.c projects/clang350-import/usr.sbin/Makefile projects/clang350-import/usr.sbin/bsdinstall/distextract/Makefile projects/clang350-import/usr.sbin/bsdinstall/distextract/distextract.c projects/clang350-import/usr.sbin/chkgrp/chkgrp.c projects/clang350-import/usr.sbin/ctladm/ctladm.8 projects/clang350-import/usr.sbin/ctld/discovery.c projects/clang350-import/usr.sbin/ctld/login.c projects/clang350-import/usr.sbin/iscsid/discovery.c projects/clang350-import/usr.sbin/iscsid/login.c projects/clang350-import/usr.sbin/jail/command.c projects/clang350-import/usr.sbin/kldxref/Makefile projects/clang350-import/usr.sbin/lpr/lpr/lpr.c projects/clang350-import/usr.sbin/pw/tests/pw_useradd.sh projects/clang350-import/usr.sbin/pw/tests/pw_usermod.sh Directory Properties: projects/clang350-import/ (props changed) projects/clang350-import/cddl/ (props changed) projects/clang350-import/cddl/contrib/opensolaris/ (props changed) projects/clang350-import/cddl/contrib/opensolaris/lib/libzfs/ (props changed) projects/clang350-import/contrib/binutils/ (props changed) projects/clang350-import/contrib/llvm/ (props changed) projects/clang350-import/contrib/llvm/tools/clang/ (props changed) projects/clang350-import/contrib/unbound/ (props changed) projects/clang350-import/etc/ (props changed) projects/clang350-import/lib/libc/ (props changed) projects/clang350-import/sbin/ (props changed) projects/clang350-import/share/ (props changed) projects/clang350-import/share/man/man4/ (props changed) projects/clang350-import/sys/ (props changed) projects/clang350-import/sys/amd64/vmm/ (props changed) projects/clang350-import/sys/boot/ (props changed) projects/clang350-import/sys/cddl/contrib/opensolaris/ (props changed) projects/clang350-import/sys/conf/ (props changed) projects/clang350-import/usr.sbin/jail/ (props changed) Modified: projects/clang350-import/Makefile.inc1 ============================================================================== --- projects/clang350-import/Makefile.inc1 Thu Dec 18 18:35:47 2014 (r275911) +++ projects/clang350-import/Makefile.inc1 Thu Dec 18 18:44:22 2014 (r275912) @@ -113,6 +113,8 @@ _REDUNDENT_LIB_DIRS+= ${LOCAL_LIB_DIR .for _DIR in ${LOCAL_LIB_DIRS} .if empty(_REDUNDENT_LIB_DIRS:M${_DIR}) && exists(${.CURDIR}/${_DIR}/Makefile) SUBDIR+= ${_DIR} +.else +.warning ${_DIR} not added to SUBDIR list. See UPDATING 20141121. .endif .endfor .endif @@ -261,7 +263,8 @@ BMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \ MK_HTML=no MK_INFO=no NO_LINT=yes MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ - MK_CLANG_FULL=no MK_LLDB=no MK_TESTS=no + MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ + MK_LLDB=no MK_TESTS=no # build-tools stage TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ @@ -271,7 +274,9 @@ TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ BOOTSTRAPPING=${OSRELDATE} \ SSP_CFLAGS= \ -DNO_LINT \ - -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no MK_CLANG_FULL=no MK_LLDB=no MK_TESTS=no + -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ + MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ + MK_LLDB=no MK_TESTS=no # cross-tools stage XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \ @@ -524,8 +529,9 @@ _worldtmp: -p ${WORLDTMP}/usr/lib >/dev/null .endif .if ${MK_TESTS} != "no" + mkdir -p ${WORLDTMP}${TESTSBASE} mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ - -p ${WORLDTMP}/usr >/dev/null + -p ${WORLDTMP}${TESTSBASE} >/dev/null .endif .for _mtree in ${LOCAL_MTREE} mtree -deU -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null @@ -788,7 +794,7 @@ _zoneinfo= zic tzsetup ITOOLS= [ awk cap_mkdb cat chflags chmod chown \ date echo egrep find grep id install ${_install-info} \ ln lockf make mkdir mtree mv pwd_mkdb \ - rm sed services_mkdb sh sysctl test true uname wc ${_zoneinfo} \ + rm sed services_mkdb sh strip sysctl test true uname wc ${_zoneinfo} \ ${LOCAL_ITOOLS} # Needed for share/man @@ -864,8 +870,9 @@ distributeworld installworld: _installch -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib >/dev/null .endif .if ${MK_TESTS} != "no" && ${dist} == "tests" + -mkdir -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE} mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ - -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null + -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE} >/dev/null .endif .if defined(NO_ROOT) ${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.root.dist | \ @@ -1474,7 +1481,8 @@ NXBMAKE= ${NXBENV} ${MAKE} \ MK_HTML=no MK_INFO=no NO_LINT=yes MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ - MK_CLANG_FULL=no MK_LLDB=no + MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ + MK_LLDB=no native-xtools: .MAKE mkdir -p ${OBJTREE}/nxb-bin/bin @@ -2083,8 +2091,9 @@ _xi-mtree: mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ -p ${XDDESTDIR}/usr/include >/dev/null .if ${MK_TESTS} != "no" + mkdir -p ${XDDESTDIR}${TESTSBASE} mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ - -p ${XDDESTDIR}/usr >/dev/null + -p ${XDDESTDIR}${TESTSBASE} >/dev/null .endif .ORDER: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries Modified: projects/clang350-import/UPDATING ============================================================================== --- projects/clang350-import/UPDATING Thu Dec 18 18:35:47 2014 (r275911) +++ projects/clang350-import/UPDATING Thu Dec 18 18:44:22 2014 (r275912) @@ -31,6 +31,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20141121: + The handling of LOCAL_LIB_DIRS has been altered to skip addition of + directories to top level SUBDIR variable when their parent + directory is included in LOCAL_DIRS. Users with build systems with + such hierarchies and without SUBDIR entries in the parent + directory Makefiles should add them or add the directories to + LOCAL_DIRS. + 20141109: faith(4) and faithd(8) has been removed from base system. It has been obsolete for a very long time. Modified: projects/clang350-import/bin/sh/output.c ============================================================================== --- projects/clang350-import/bin/sh/output.c Thu Dec 18 18:35:47 2014 (r275911) +++ projects/clang350-import/bin/sh/output.c Thu Dec 18 18:44:22 2014 (r275912) @@ -54,6 +54,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include "shell.h" #include "syntax.h" @@ -111,42 +113,86 @@ outstr(const char *p, struct output *fil outbin(p, strlen(p), file); } +static void +byteseq(int ch, struct output *file) +{ + char seq[4]; + + seq[0] = '\\'; + seq[1] = (ch >> 6 & 0x3) + '0'; + seq[2] = (ch >> 3 & 0x7) + '0'; + seq[3] = (ch & 0x7) + '0'; + outbin(seq, 4, file); +} + +static void +outdqstr(const char *p, struct output *file) +{ + const char *end; + mbstate_t mbs; + size_t clen; + wchar_t wc; + + memset(&mbs, '\0', sizeof(mbs)); + end = p + strlen(p); + outstr("$'", file); + while ((clen = mbrtowc(&wc, p, end - p + 1, &mbs)) != 0) { + if (clen == (size_t)-2) { + while (p < end) + byteseq(*p++, file); + break; + } + if (clen == (size_t)-1) { + memset(&mbs, '\0', sizeof(mbs)); + byteseq(*p++, file); + continue; + } + if (wc == L'\n') + outcslow('\n', file), p++; + else if (wc == L'\r') + outstr("\\r", file), p++; + else if (wc == L'\t') + outstr("\\t", file), p++; + else if (!iswprint(wc)) { + for (; clen > 0; clen--) + byteseq(*p++, file); + } else { + if (wc == L'\'' || wc == L'\\') + outcslow('\\', file); + outbin(p, clen, file); + p += clen; + } + } + outcslow('\'', file); +} + /* Like outstr(), but quote for re-input into the shell. */ void outqstr(const char *p, struct output *file) { - char ch; - int inquotes; + int i; if (p[0] == '\0') { outstr("''", file); return; } - if (p[strcspn(p, "|&;<>()$`\\\"' \t\n*?[~#=")] == '\0' || + for (i = 0; p[i] != '\0'; i++) { + if ((p[i] > '\0' && p[i] < ' ' && p[i] != '\n') || + (p[i] & 0x80) != 0 || p[i] == '\'') { + outdqstr(p, file); + return; + } + } + + if (p[strcspn(p, "|&;<>()$`\\\" \n*?[~#=")] == '\0' || strcmp(p, "[") == 0) { outstr(p, file); return; } - inquotes = 0; - while ((ch = *p++) != '\0') { - switch (ch) { - case '\'': - /* Can't quote single quotes inside single quotes. */ - if (inquotes) - outcslow('\'', file); - inquotes = 0; - outstr("\\'", file); - break; - default: - if (!inquotes) - outcslow('\'', file); - inquotes = 1; - outc(ch, file); - } - } - if (inquotes) - outcslow('\'', file); + outcslow('\'', file); + outstr(p, file); + outcslow('\'', file); } void Modified: projects/clang350-import/bin/sh/tests/execution/Makefile ============================================================================== --- projects/clang350-import/bin/sh/tests/execution/Makefile Thu Dec 18 18:35:47 2014 (r275911) +++ projects/clang350-import/bin/sh/tests/execution/Makefile Thu Dec 18 18:44:22 2014 (r275912) @@ -44,6 +44,7 @@ FILES+= set-n4.0 FILES+= set-x1.0 FILES+= set-x2.0 FILES+= set-x3.0 +FILES+= set-x4.0 FILES+= shellproc1.0 FILES+= subshell1.0 subshell1.0.stdout FILES+= subshell2.0 Copied: projects/clang350-import/bin/sh/tests/execution/set-x4.0 (from r275905, head/bin/sh/tests/execution/set-x4.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang350-import/bin/sh/tests/execution/set-x4.0 Thu Dec 18 18:44:22 2014 (r275912, copy of r275905, head/bin/sh/tests/execution/set-x4.0) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +key=`printf '\r\t\001\200\300'` +r=`{ set -x; : "$key"; } 2>&1 >/dev/null` +case $r in +*[![:print:]]*) echo fail; exit 3 +esac Modified: projects/clang350-import/cddl/contrib/opensolaris/cmd/zdb/zdb.c ============================================================================== --- projects/clang350-import/cddl/contrib/opensolaris/cmd/zdb/zdb.c Thu Dec 18 18:35:47 2014 (r275911) +++ projects/clang350-import/cddl/contrib/opensolaris/cmd/zdb/zdb.c Thu Dec 18 18:44:22 2014 (r275912) @@ -1184,7 +1184,7 @@ visit_indirect(spa_t *spa, const dnode_p print_indirect(bp, zb, dnp); if (BP_GET_LEVEL(bp) > 0 && !BP_IS_HOLE(bp)) { - uint32_t flags = ARC_WAIT; + arc_flags_t flags = ARC_FLAG_WAIT; int i; blkptr_t *cbp; int epb = BP_GET_LSIZE(bp) >> SPA_BLKPTRSHIFT; @@ -1884,8 +1884,8 @@ dump_dir(objset_t *os) if (dds.dds_type == DMU_OST_META) { dds.dds_creation_txg = TXG_INITIAL; usedobjs = BP_GET_FILL(os->os_rootbp); - refdbytes = os->os_spa->spa_dsl_pool-> - dp_mos_dir->dd_phys->dd_used_bytes; + refdbytes = dsl_dir_phys(os->os_spa->spa_dsl_pool->dp_mos_dir)-> + dd_used_bytes; } else { dmu_objset_space(os, &refdbytes, &scratch, &usedobjs, &scratch); } Modified: projects/clang350-import/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c ============================================================================== --- projects/clang350-import/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c Thu Dec 18 18:35:47 2014 (r275911) +++ projects/clang350-import/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c Thu Dec 18 18:44:22 2014 (r275912) @@ -110,7 +110,7 @@ dtrace_dof_init(void) Elf32_Ehdr *elf; #endif dof_helper_t dh; - Link_map *lmp; + Link_map *lmp = NULL; #if defined(sun) Lmid_t lmid; #else Modified: projects/clang350-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c ============================================================================== --- projects/clang350-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c Thu Dec 18 18:35:47 2014 (r275911) +++ projects/clang350-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c Thu Dec 18 18:44:22 2014 (r275912) @@ -24,7 +24,7 @@ * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright (c) 2012 Pawel Jakub Dawidek . * All rights reserved. - * Copyright 2013 Nexenta Systems, Inc. All rights reserved. + * Copyright 2014 Nexenta Systems, Inc. All rights reserved. */ #include @@ -193,9 +193,6 @@ zfs_iter_bookmarks(zfs_handle_t *zhp, zf fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_CREATETXG)); fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_CREATION)); - /* Allocate an nvlist to hold the bookmarks. */ - bmarks = fnvlist_alloc(); - if ((err = lzc_get_bookmarks(zhp->zfs_name, props, &bmarks)) != 0) goto out; Modified: projects/clang350-import/contrib/binutils/gas/config/tc-ppc.c ============================================================================== --- projects/clang350-import/contrib/binutils/gas/config/tc-ppc.c Thu Dec 18 18:35:47 2014 (r275911) +++ projects/clang350-import/contrib/binutils/gas/config/tc-ppc.c Thu Dec 18 18:44:22 2014 (r275912) @@ -2509,121 +2509,168 @@ md_assemble (char *str) (char *) NULL, 0); } #ifdef OBJ_ELF - else if ((reloc = ppc_elf_suffix (&str, &ex)) != BFD_RELOC_UNUSED) + else { - /* Some TLS tweaks. */ - switch (reloc) + if (ex.X_op == O_symbol && str[0] == '(') { - default: - break; - case BFD_RELOC_PPC_TLS: - insn = ppc_insert_operand (insn, operand, ppc_obj64 ? 13 : 2, - (char *) NULL, 0); - break; - /* We'll only use the 32 (or 64) bit form of these relocations - in constants. Instructions get the 16 bit form. */ - case BFD_RELOC_PPC_DTPREL: - reloc = BFD_RELOC_PPC_DTPREL16; - break; - case BFD_RELOC_PPC_TPREL: - reloc = BFD_RELOC_PPC_TPREL16; - break; - } + const char *sym_name = S_GET_NAME (ex.X_add_symbol); + if (sym_name[0] == '.') + ++sym_name; - /* For the absolute forms of branches, convert the PC - relative form back into the absolute. */ - if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0) - { - switch (reloc) + if (strcasecmp (sym_name, "__tls_get_addr") == 0) { - case BFD_RELOC_PPC_B26: - reloc = BFD_RELOC_PPC_BA26; - break; - case BFD_RELOC_PPC_B16: - reloc = BFD_RELOC_PPC_BA16; - break; - case BFD_RELOC_PPC_B16_BRTAKEN: - reloc = BFD_RELOC_PPC_BA16_BRTAKEN; - break; - case BFD_RELOC_PPC_B16_BRNTAKEN: - reloc = BFD_RELOC_PPC_BA16_BRNTAKEN; - break; - default: - break; + expressionS tls_exp; + + hold = input_line_pointer; + input_line_pointer = str + 1; + expression (&tls_exp); + if (tls_exp.X_op == O_symbol) + { + reloc = BFD_RELOC_UNUSED; + if (strncasecmp (input_line_pointer, "@tlsgd)", 7) == 0) + { + reloc = BFD_RELOC_PPC_TLSGD; + input_line_pointer += 7; + } + else if (strncasecmp (input_line_pointer, "@tlsld)", 7) == 0) + { + reloc = BFD_RELOC_PPC_TLSLD; + input_line_pointer += 7; + } + if (reloc != BFD_RELOC_UNUSED) + { + SKIP_WHITESPACE (); + str = input_line_pointer; + + if (fc >= MAX_INSN_FIXUPS) + as_fatal (_("too many fixups")); + fixups[fc].exp = tls_exp; + fixups[fc].opindex = *opindex_ptr; + fixups[fc].reloc = reloc; + ++fc; + } + } + input_line_pointer = hold; } } - if (ppc_obj64 - && (operand->flags & (PPC_OPERAND_DS | PPC_OPERAND_DQ)) != 0) + if ((reloc = ppc_elf_suffix (&str, &ex)) != BFD_RELOC_UNUSED) { + /* Some TLS tweaks. */ switch (reloc) { - case BFD_RELOC_16: - reloc = BFD_RELOC_PPC64_ADDR16_DS; - break; - case BFD_RELOC_LO16: - reloc = BFD_RELOC_PPC64_ADDR16_LO_DS; - break; - case BFD_RELOC_16_GOTOFF: - reloc = BFD_RELOC_PPC64_GOT16_DS; - break; - case BFD_RELOC_LO16_GOTOFF: - reloc = BFD_RELOC_PPC64_GOT16_LO_DS; - break; - case BFD_RELOC_LO16_PLTOFF: - reloc = BFD_RELOC_PPC64_PLT16_LO_DS; - break; - case BFD_RELOC_16_BASEREL: - reloc = BFD_RELOC_PPC64_SECTOFF_DS; - break; - case BFD_RELOC_LO16_BASEREL: - reloc = BFD_RELOC_PPC64_SECTOFF_LO_DS; - break; - case BFD_RELOC_PPC_TOC16: - reloc = BFD_RELOC_PPC64_TOC16_DS; - break; - case BFD_RELOC_PPC64_TOC16_LO: - reloc = BFD_RELOC_PPC64_TOC16_LO_DS; - break; - case BFD_RELOC_PPC64_PLTGOT16: - reloc = BFD_RELOC_PPC64_PLTGOT16_DS; - break; - case BFD_RELOC_PPC64_PLTGOT16_LO: - reloc = BFD_RELOC_PPC64_PLTGOT16_LO_DS; - break; - case BFD_RELOC_PPC_DTPREL16: - reloc = BFD_RELOC_PPC64_DTPREL16_DS; - break; - case BFD_RELOC_PPC_DTPREL16_LO: - reloc = BFD_RELOC_PPC64_DTPREL16_LO_DS; - break; - case BFD_RELOC_PPC_TPREL16: - reloc = BFD_RELOC_PPC64_TPREL16_DS; + default: break; - case BFD_RELOC_PPC_TPREL16_LO: - reloc = BFD_RELOC_PPC64_TPREL16_LO_DS; + + case BFD_RELOC_PPC_TLS: + insn = ppc_insert_operand (insn, operand, ppc_obj64 ? 13 : 2, + (char *) NULL, 0); break; - case BFD_RELOC_PPC_GOT_DTPREL16: - case BFD_RELOC_PPC_GOT_DTPREL16_LO: - case BFD_RELOC_PPC_GOT_TPREL16: - case BFD_RELOC_PPC_GOT_TPREL16_LO: + + /* We'll only use the 32 (or 64) bit form of these relocations + in constants. Instructions get the 16 bit form. */ + case BFD_RELOC_PPC_DTPREL: + reloc = BFD_RELOC_PPC_DTPREL16; break; - default: - as_bad (_("unsupported relocation for DS offset field")); + case BFD_RELOC_PPC_TPREL: + reloc = BFD_RELOC_PPC_TPREL16; break; } + + /* For the absolute forms of branches, convert the PC + relative form back into the absolute. */ + if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0) + { + switch (reloc) + { + case BFD_RELOC_PPC_B26: + reloc = BFD_RELOC_PPC_BA26; + break; + case BFD_RELOC_PPC_B16: + reloc = BFD_RELOC_PPC_BA16; + break; + case BFD_RELOC_PPC_B16_BRTAKEN: + reloc = BFD_RELOC_PPC_BA16_BRTAKEN; + break; + case BFD_RELOC_PPC_B16_BRNTAKEN: + reloc = BFD_RELOC_PPC_BA16_BRNTAKEN; + break; + default: + break; + } + } + + if (ppc_obj64 + && (operand->flags & (PPC_OPERAND_DS | PPC_OPERAND_DQ)) != 0) + { + switch (reloc) + { + case BFD_RELOC_16: + reloc = BFD_RELOC_PPC64_ADDR16_DS; + break; + case BFD_RELOC_LO16: + reloc = BFD_RELOC_PPC64_ADDR16_LO_DS; + break; + case BFD_RELOC_16_GOTOFF: + reloc = BFD_RELOC_PPC64_GOT16_DS; + break; + case BFD_RELOC_LO16_GOTOFF: + reloc = BFD_RELOC_PPC64_GOT16_LO_DS; + break; + case BFD_RELOC_LO16_PLTOFF: + reloc = BFD_RELOC_PPC64_PLT16_LO_DS; + break; + case BFD_RELOC_16_BASEREL: + reloc = BFD_RELOC_PPC64_SECTOFF_DS; + break; + case BFD_RELOC_LO16_BASEREL: + reloc = BFD_RELOC_PPC64_SECTOFF_LO_DS; + break; + case BFD_RELOC_PPC_TOC16: + reloc = BFD_RELOC_PPC64_TOC16_DS; + break; + case BFD_RELOC_PPC64_TOC16_LO: + reloc = BFD_RELOC_PPC64_TOC16_LO_DS; + break; + case BFD_RELOC_PPC64_PLTGOT16: + reloc = BFD_RELOC_PPC64_PLTGOT16_DS; + break; + case BFD_RELOC_PPC64_PLTGOT16_LO: + reloc = BFD_RELOC_PPC64_PLTGOT16_LO_DS; + break; + case BFD_RELOC_PPC_DTPREL16: + reloc = BFD_RELOC_PPC64_DTPREL16_DS; + break; + case BFD_RELOC_PPC_DTPREL16_LO: + reloc = BFD_RELOC_PPC64_DTPREL16_LO_DS; + break; + case BFD_RELOC_PPC_TPREL16: + reloc = BFD_RELOC_PPC64_TPREL16_DS; + break; + case BFD_RELOC_PPC_TPREL16_LO: + reloc = BFD_RELOC_PPC64_TPREL16_LO_DS; + break; + case BFD_RELOC_PPC_GOT_DTPREL16: + case BFD_RELOC_PPC_GOT_DTPREL16_LO: + case BFD_RELOC_PPC_GOT_TPREL16: + case BFD_RELOC_PPC_GOT_TPREL16_LO: + break; + default: + as_bad (_("unsupported relocation for DS offset field")); + break; + } + } } /* We need to generate a fixup for this expression. */ if (fc >= MAX_INSN_FIXUPS) as_fatal (_("too many fixups")); fixups[fc].exp = ex; - fixups[fc].opindex = 0; + fixups[fc].opindex = *opindex_ptr; fixups[fc].reloc = reloc; ++fc; } -#endif /* OBJ_ELF */ - +#else /* OBJ_ELF */ else { /* We need to generate a fixup for this expression. */ @@ -2634,6 +2681,7 @@ md_assemble (char *str) fixups[fc].reloc = BFD_RELOC_UNUSED; ++fc; } +#endif /* OBJ_ELF */ if (need_paren) { @@ -5908,6 +5956,8 @@ md_apply_fix (fixS *fixP, valueT *valP, break; case BFD_RELOC_PPC_TLS: + case BFD_RELOC_PPC_TLSLD: + case BFD_RELOC_PPC_TLSGD: break; case BFD_RELOC_PPC_DTPMOD: Modified: projects/clang350-import/contrib/elftoolchain/elfcopy/main.c ============================================================================== --- projects/clang350-import/contrib/elftoolchain/elfcopy/main.c Thu Dec 18 18:35:47 2014 (r275911) +++ projects/clang350-import/contrib/elftoolchain/elfcopy/main.c Thu Dec 18 18:44:22 2014 (r275912) @@ -1109,7 +1109,8 @@ strip_main(struct elfcopy *ecp, int argc if (ecp->strip == 0 && ((ecp->flags & DISCARD_LOCAL) == 0) && - ((ecp->flags & DISCARD_LLABEL) == 0)) + ((ecp->flags & DISCARD_LLABEL) == 0) && + lookup_symop_list(ecp, NULL, SYMOP_STRIP) == NULL) ecp->strip = STRIP_ALL; if (optind == argc) strip_usage(); Modified: projects/clang350-import/contrib/elftoolchain/elfcopy/segments.c ============================================================================== --- projects/clang350-import/contrib/elftoolchain/elfcopy/segments.c Thu Dec 18 18:35:47 2014 (r275911) +++ projects/clang350-import/contrib/elftoolchain/elfcopy/segments.c Thu Dec 18 18:44:22 2014 (r275912) @@ -439,7 +439,7 @@ copy_phdr(struct elfcopy *ecp) seg->fsz = seg->msz = 0; for (i = 0; i < seg->nsec; i++) { s = seg->v_sec[i]; - seg->msz = s->off + s->sz - seg->off; + seg->msz = s->vma + s->sz - seg->addr; if (s->type != SHT_NOBITS) seg->fsz = seg->msz; } Copied: projects/clang350-import/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff (from r275905, head/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang350-import/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff Thu Dec 18 18:44:22 2014 (r275912, copy of r275905, head/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff) @@ -0,0 +1,298 @@ +Pull in r221170 from upstream clang trunk (by Roman Divacky): + + Implement vaarg lowering for ppc32. Lowering of scalars and + aggregates is supported. Complex numbers are not. + +Pull in r221174 from upstream clang trunk (by Roman Divacky): + + Require asserts to unbreak the buildbots. + +Pull in r221284 from upstream clang trunk (by Roman Divacky): + + Rewrite the test to not require asserts. + +Pull in r221285 from upstream clang trunk (by Roman Divacky): + + Since the file has both ppc and ppc64 tests in it rename it. + +This adds va_args support for PowerPC (32 bit) to clang. + +Introduced here: http://svnweb.freebsd.org/changeset/base/275759 + +Index: tools/clang/lib/CodeGen/TargetInfo.cpp +=================================================================== +--- tools/clang/lib/CodeGen/TargetInfo.cpp ++++ tools/clang/lib/CodeGen/TargetInfo.cpp +@@ -2733,12 +2733,20 @@ llvm::Value *NaClX86_64ABIInfo::EmitVAArg(llvm::Va + + + // PowerPC-32 +- + namespace { +-class PPC32TargetCodeGenInfo : public DefaultTargetCodeGenInfo { ++/// PPC32_SVR4_ABIInfo - The 32-bit PowerPC ELF (SVR4) ABI information. ++class PPC32_SVR4_ABIInfo : public DefaultABIInfo { + public: +- PPC32TargetCodeGenInfo(CodeGenTypes &CGT) : DefaultTargetCodeGenInfo(CGT) {} ++ PPC32_SVR4_ABIInfo(CodeGen::CodeGenTypes &CGT) : DefaultABIInfo(CGT) {} + ++ llvm::Value *EmitVAArg(llvm::Value *VAListAddr, QualType Ty, ++ CodeGenFunction &CGF) const; ++}; ++ ++class PPC32TargetCodeGenInfo : public TargetCodeGenInfo { ++public: ++ PPC32TargetCodeGenInfo(CodeGenTypes &CGT) : TargetCodeGenInfo(new PPC32_SVR4_ABIInfo(CGT)) {} ++ + int getDwarfEHStackPointer(CodeGen::CodeGenModule &M) const { + // This is recovered from gcc output. + return 1; // r1 is the dedicated stack pointer +@@ -2750,6 +2758,96 @@ namespace { + + } + ++llvm::Value *PPC32_SVR4_ABIInfo::EmitVAArg(llvm::Value *VAListAddr, ++ QualType Ty, ++ CodeGenFunction &CGF) const { ++ if (const ComplexType *CTy = Ty->getAs()) { ++ // TODO: Implement this. For now ignore. ++ (void)CTy; ++ return NULL; ++ } ++ ++ bool isI64 = Ty->isIntegerType() && getContext().getTypeSize(Ty) == 64; ++ bool isInt = Ty->isIntegerType() || Ty->isPointerType() || Ty->isAggregateType(); ++ llvm::Type *CharPtr = CGF.Int8PtrTy; ++ llvm::Type *CharPtrPtr = CGF.Int8PtrPtrTy; ++ ++ CGBuilderTy &Builder = CGF.Builder; ++ llvm::Value *GPRPtr = Builder.CreateBitCast(VAListAddr, CharPtr, "gprptr"); ++ llvm::Value *GPRPtrAsInt = Builder.CreatePtrToInt(GPRPtr, CGF.Int32Ty); ++ llvm::Value *FPRPtrAsInt = Builder.CreateAdd(GPRPtrAsInt, Builder.getInt32(1)); ++ llvm::Value *FPRPtr = Builder.CreateIntToPtr(FPRPtrAsInt, CharPtr); ++ llvm::Value *OverflowAreaPtrAsInt = Builder.CreateAdd(FPRPtrAsInt, Builder.getInt32(3)); ++ llvm::Value *OverflowAreaPtr = Builder.CreateIntToPtr(OverflowAreaPtrAsInt, CharPtrPtr); ++ llvm::Value *RegsaveAreaPtrAsInt = Builder.CreateAdd(OverflowAreaPtrAsInt, Builder.getInt32(4)); ++ llvm::Value *RegsaveAreaPtr = Builder.CreateIntToPtr(RegsaveAreaPtrAsInt, CharPtrPtr); ++ llvm::Value *GPR = Builder.CreateLoad(GPRPtr, false, "gpr"); ++ // Align GPR when TY is i64. ++ if (isI64) { ++ llvm::Value *GPRAnd = Builder.CreateAnd(GPR, Builder.getInt8(1)); ++ llvm::Value *CC64 = Builder.CreateICmpEQ(GPRAnd, Builder.getInt8(1)); ++ llvm::Value *GPRPlusOne = Builder.CreateAdd(GPR, Builder.getInt8(1)); ++ GPR = Builder.CreateSelect(CC64, GPRPlusOne, GPR); ++ } ++ llvm::Value *FPR = Builder.CreateLoad(FPRPtr, false, "fpr"); ++ llvm::Value *OverflowArea = Builder.CreateLoad(OverflowAreaPtr, false, "overflow_area"); ++ llvm::Value *OverflowAreaAsInt = Builder.CreatePtrToInt(OverflowArea, CGF.Int32Ty); ++ llvm::Value *RegsaveArea = Builder.CreateLoad(RegsaveAreaPtr, false, "regsave_area"); ++ llvm::Value *RegsaveAreaAsInt = Builder.CreatePtrToInt(RegsaveArea, CGF.Int32Ty); ++ ++ llvm::Value *CC = Builder.CreateICmpULT(isInt ? GPR : FPR, ++ Builder.getInt8(8), "cond"); ++ ++ llvm::Value *RegConstant = Builder.CreateMul(isInt ? GPR : FPR, ++ Builder.getInt8(isInt ? 4 : 8)); ++ ++ llvm::Value *OurReg = Builder.CreateAdd(RegsaveAreaAsInt, Builder.CreateSExt(RegConstant, CGF.Int32Ty)); ++ ++ if (Ty->isFloatingType()) ++ OurReg = Builder.CreateAdd(OurReg, Builder.getInt32(32)); ++ ++ llvm::BasicBlock *UsingRegs = CGF.createBasicBlock("using_regs"); ++ llvm::BasicBlock *UsingOverflow = CGF.createBasicBlock("using_overflow"); ++ llvm::BasicBlock *Cont = CGF.createBasicBlock("cont"); ++ ++ Builder.CreateCondBr(CC, UsingRegs, UsingOverflow); ++ ++ CGF.EmitBlock(UsingRegs); ++ ++ llvm::Type *PTy = llvm::PointerType::getUnqual(CGF.ConvertType(Ty)); ++ llvm::Value *Result1 = Builder.CreateIntToPtr(OurReg, PTy); ++ // Increase the GPR/FPR indexes. ++ if (isInt) { ++ GPR = Builder.CreateAdd(GPR, Builder.getInt8(isI64 ? 2 : 1)); ++ Builder.CreateStore(GPR, GPRPtr); ++ } else { ++ FPR = Builder.CreateAdd(FPR, Builder.getInt8(1)); ++ Builder.CreateStore(FPR, FPRPtr); ++ } ++ CGF.EmitBranch(Cont); ++ ++ CGF.EmitBlock(UsingOverflow); ++ ++ // Increase the overflow area. ++ llvm::Value *Result2 = Builder.CreateIntToPtr(OverflowAreaAsInt, PTy); ++ OverflowAreaAsInt = Builder.CreateAdd(OverflowAreaAsInt, Builder.getInt32(isInt ? 4 : 8)); ++ Builder.CreateStore(Builder.CreateIntToPtr(OverflowAreaAsInt, CharPtr), OverflowAreaPtr); ++ CGF.EmitBranch(Cont); ++ ++ CGF.EmitBlock(Cont); ++ ++ llvm::PHINode *Result = CGF.Builder.CreatePHI(PTy, 2, "vaarg.addr"); ++ Result->addIncoming(Result1, UsingRegs); ++ Result->addIncoming(Result2, UsingOverflow); ++ ++ if (Ty->isAggregateType()) { ++ llvm::Value *AGGPtr = Builder.CreateBitCast(Result, CharPtrPtr, "aggrptr") ; ++ return Builder.CreateLoad(AGGPtr, false, "aggr"); ++ } ++ ++ return Result; ++} ++ + bool + PPC32TargetCodeGenInfo::initDwarfEHRegSizeTable(CodeGen::CodeGenFunction &CGF, + llvm::Value *Address) const { +Index: tools/clang/test/CodeGen/ppc64-varargs-struct.c +=================================================================== +--- tools/clang/test/CodeGen/ppc64-varargs-struct.c ++++ tools/clang/test/CodeGen/ppc64-varargs-struct.c +@@ -1,30 +0,0 @@ +-// REQUIRES: ppc64-registered-target +-// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s +- +-#include +- +-struct x { +- long a; +- double b; +-}; +- +-void testva (int n, ...) +-{ +- va_list ap; +- +- struct x t = va_arg (ap, struct x); +-// CHECK: bitcast i8* %{{[a-z.0-9]*}} to %struct.x* +-// CHECK: bitcast %struct.x* %t to i8* +-// CHECK: bitcast %struct.x* %{{[0-9]+}} to i8* +-// CHECK: call void @llvm.memcpy +- +- int v = va_arg (ap, int); +-// CHECK: ptrtoint i8* %{{[a-z.0-9]*}} to i64 +-// CHECK: add i64 %{{[0-9]+}}, 4 +-// CHECK: inttoptr i64 %{{[0-9]+}} to i8* +-// CHECK: bitcast i8* %{{[0-9]+}} to i32* +- +- __int128_t u = va_arg (ap, __int128_t); +-// CHECK: bitcast i8* %{{[a-z.0-9]+}} to i128* +-// CHECK-NEXT: load i128* %{{[0-9]+}} +-} +Index: tools/clang/test/CodeGen/ppc-varargs-struct.c +=================================================================== +--- tools/clang/test/CodeGen/ppc-varargs-struct.c ++++ tools/clang/test/CodeGen/ppc-varargs-struct.c +@@ -0,0 +1,112 @@ ++// REQUIRES: ppc64-registered-target ++// REQUIRES: asserts ++// RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s ++// RUN: %clang_cc1 -triple powerpc-unknown-linux-gnu -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-PPC ++ ++#include ++ ++struct x { ++ long a; ++ double b; ++}; ++ ++void testva (int n, ...) ++{ ++ va_list ap; ++ ++ struct x t = va_arg (ap, struct x); ++// CHECK: bitcast i8* %{{[a-z.0-9]*}} to %struct.x* ++// CHECK: bitcast %struct.x* %t to i8* ++// CHECK: bitcast %struct.x* %{{[0-9]+}} to i8* ++// CHECK: call void @llvm.memcpy ++// CHECK-PPC: [[ARRAYDECAY:%[a-z0-9]+]] = getelementptr inbounds [1 x %struct.__va_list_tag]* %ap, i32 0, i32 0 ++// CHECK-PPC-NEXT: [[GPRPTR:%[a-z0-9]+]] = bitcast %struct.__va_list_tag* [[ARRAYDECAY]] to i8* ++// CHECK-PPC-NEXT: [[ZERO:%[0-9]+]] = ptrtoint i8* [[GPRPTR]] to i32 ++// CHECK-PPC-NEXT: [[ONE:%[0-9]+]] = add i32 [[ZERO]], 1 ++// CHECK-PPC-NEXT: [[TWO:%[0-9]+]] = inttoptr i32 [[ONE]] to i8* ++// CHECK-PPC-NEXT: [[THREE:%[0-9]+]] = add i32 [[ONE]], 3 ++// CHECK-PPC-NEXT: [[FOUR:%[0-9]+]] = inttoptr i32 [[THREE]] to i8** ++// CHECK-PPC-NEXT: [[FIVE:%[0-9]+]] = add i32 [[THREE]], 4 ++// CHECK-PPC-NEXT: [[SIX:%[0-9]+]] = inttoptr i32 [[FIVE]] to i8** ++// CHECK-PPC-NEXT: [[GPR:%[a-z0-9]+]] = load i8* [[GPRPTR]] ++// CHECK-PPC-NEXT: [[FPR:%[a-z0-9]+]] = load i8* [[TWO]] ++// CHECK-PPC-NEXT: [[OVERFLOW_AREA:%[a-z_0-9]+]] = load i8** [[FOUR]] ++// CHECK-PPC-NEXT: [[SEVEN:%[0-9]+]] = ptrtoint i8* [[OVERFLOW_AREA]] to i32 ++// CHECK-PPC-NEXT: [[REGSAVE_AREA:%[a-z_0-9]+]] = load i8** [[SIX]] ++// CHECK-PPC-NEXT: [[EIGHT:%[0-9]+]] = ptrtoint i8* [[REGSAVE_AREA]] to i32 ++// CHECK-PPC-NEXT: [[COND:%[a-z0-9]+]] = icmp ult i8 [[GPR]], 8 ++// CHECK-PPC-NEXT: [[NINE:%[0-9]+]] = mul i8 [[GPR]], 4 ++// CHECK-PPC-NEXT: [[TEN:%[0-9]+]] = sext i8 [[NINE]] to i32 ++// CHECK-PPC-NEXT: [[ELEVEN:%[0-9]+]] = add i32 [[EIGHT]], [[TEN]] ++// CHECK-PPC-NEXT: br i1 [[COND]], label [[USING_REGS:%[a-z_0-9]+]], label [[USING_OVERFLOW:%[a-z_0-9]+]] ++// ++// CHECK-PPC1:[[USING_REGS]] ++// CHECK-PPC: [[TWELVE:%[0-9]+]] = inttoptr i32 [[ELEVEN]] to %struct.x* ++// CHECK-PPC-NEXT: [[THIRTEEN:%[0-9]+]] = add i8 [[GPR]], 1 ++// CHECK-PPC-NEXT: store i8 [[THIRTEEN]], i8* [[GPRPTR]] ++// CHECK-PPC-NEXT: br label [[CONT:%[a-z0-9]+]] ++// ++// CHECK-PPC1:[[USING_OVERFLOW]] ++// CHECK-PPC: [[FOURTEEN:%[0-9]+]] = inttoptr i32 [[SEVEN]] to %struct.x* ++// CHECK-PPC-NEXT: [[FIFTEEN:%[0-9]+]] = add i32 [[SEVEN]], 4 ++// CHECK-PPC-NEXT: [[SIXTEEN:%[0-9]+]] = inttoptr i32 [[FIFTEEN]] to i8* ++// CHECK-PPC-NEXT: store i8* [[SIXTEEN]], i8** [[FOUR]] ++// CHECK-PPC-NEXT: br label [[CONT]] ++// ++// CHECK-PPC1:[[CONT]] ++// CHECK-PPC: [[VAARG_ADDR:%[a-z.0-9]+]] = phi %struct.x* [ [[TWELVE]], [[USING_REGS]] ], [ [[FOURTEEN]], [[USING_OVERFLOW]] ] ++// CHECK-PPC-NEXT: [[AGGRPTR:%[a-z0-9]+]] = bitcast %struct.x* [[VAARG_ADDR]] to i8** ++// CHECK-PPC-NEXT: [[AGGR:%[a-z0-9]+]] = load i8** [[AGGRPTR]] ++// CHECK-PPC-NEXT: [[SEVENTEEN:%[0-9]+]] = bitcast %struct.x* %t to i8* ++// CHECK-PPC-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* [[SEVENTEEN]], i8* [[AGGR]], i32 16, i32 8, i1 false) ++ ++ int v = va_arg (ap, int); ++// CHECK: ptrtoint i8* %{{[a-z.0-9]*}} to i64 ++// CHECK: add i64 %{{[0-9]+}}, 4 ++// CHECK: inttoptr i64 %{{[0-9]+}} to i8* ++// CHECK: bitcast i8* %{{[0-9]+}} to i32* ++// CHECK-PPC: [[ARRAYDECAY1:%[a-z0-9]+]] = getelementptr inbounds [1 x %struct.__va_list_tag]* %ap, i32 0, i32 0 ++// CHECK-PPC-NEXT: [[GPRPTR1:%[a-z0-9]+]] = bitcast %struct.__va_list_tag* [[ARRAYDECAY1]] to i8* ++// CHECK-PPC-NEXT: [[EIGHTEEN:%[0-9]+]] = ptrtoint i8* [[GPRPTR1]] to i32 ++// CHECK-PPC-NEXT: [[NINETEEN:%[0-9]+]] = add i32 [[EIGHTEEN]], 1 ++// CHECK-PPC-NEXT: [[TWENTY:%[0-9]+]] = inttoptr i32 [[NINETEEN]] to i8* ++// CHECK-PPC-NEXT: [[TWENTYONE:%[0-9]+]] = add i32 [[NINETEEN]], 3 ++// CHECK-PPC-NEXT: [[TWENTYTWO:%[0-9]+]] = inttoptr i32 [[TWENTYONE]] to i8** ++// CHECK-PPC-NEXT: [[TWENTYTHREE:%[0-9]+]] = add i32 [[TWENTYONE]], 4 ++// CHECK-PPC-NEXT: [[TWENTYFOUR:%[0-9]+]] = inttoptr i32 [[TWENTYTHREE]] to i8** ++// CHECK-PPC-NEXT: [[GPR1:%[a-z0-9]+]] = load i8* [[GPRPTR1]] ++// CHECK-PPC-NEXT: [[FPR1:%[a-z0-9]+]] = load i8* [[TWENTY]] ++// CHECK-PPC-NEXT: [[OVERFLOW_AREA1:%[a-z_0-9]+]] = load i8** [[TWENTYTWO]] ++// CHECK-PPC-NEXT: [[TWENTYFIVE:%[0-9]+]] = ptrtoint i8* [[OVERFLOW_AREA1]] to i32 ++// CHECK-PPC-NEXT: [[REGSAVE_AREA1:%[a-z_0-9]+]] = load i8** [[TWENTYFOUR]] ++// CHECK-PPC-NEXT: [[TWENTYSIX:%[0-9]+]] = ptrtoint i8* [[REGSAVE_AREA1]] to i32 ++// CHECK-PPC-NEXT: [[COND1:%[a-z0-9]+]] = icmp ult i8 [[GPR1]], 8 ++// CHECK-PPC-NEXT: [[TWENTYSEVEN:%[0-9]+]] = mul i8 [[GPR1]], 4 ++// CHECK-PPC-NEXT: [[TWENTYEIGHT:%[0-9]+]] = sext i8 [[TWENTYSEVEN]] to i32 ++// CHECK-PPC-NEXT: [[TWENTYNINE:%[0-9]+]] = add i32 [[TWENTYSIX]], [[TWENTYEIGHT]] ++// CHECK-PPC-NEXT: br i1 [[COND1]], label [[USING_REGS1:%[a-z_0-9]+]], label [[USING_OVERFLOW1:%[a-z_0-9]+]] ++// ++// CHECK-PPC1:[[USING_REGS1]]: ++// CHECK-PPC: [[THIRTY:%[0-9]+]] = inttoptr i32 [[TWENTYNINE]] to i32* ++// CHECK-PPC-NEXT: [[THIRTYONE:%[0-9]+]] = add i8 [[GPR1]], 1 ++// CHECK-PPC-NEXT: store i8 [[THIRTYONE]], i8* [[GPRPTR1]] ++// CHECK-PPC-NEXT: br label [[CONT1:%[a-z0-9]+]] ++// ++// CHECK-PPC1:[[USING_OVERFLOW1]]: ++// CHECK-PPC: [[THIRTYTWO:%[0-9]+]] = inttoptr i32 [[TWENTYFIVE]] to i32* ++// CHECK-PPC-NEXT: [[THIRTYTHREE:%[0-9]+]] = add i32 [[TWENTYFIVE]], 4 ++// CHECK-PPC-NEXT: [[THIRTYFOUR:%[0-9]+]] = inttoptr i32 [[THIRTYTHREE]] to i8* ++// CHECK-PPC-NEXT: store i8* [[THIRTYFOUR]], i8** [[TWENTYTWO]] ++// CHECK-PPC-NEXT: br label [[CONT1]] ++// ++// CHECK-PPC1:[[CONT1]]: ++// CHECK-PPC: [[VAARG_ADDR1:%[a-z.0-9]+]] = phi i32* [ [[THIRTY]], [[USING_REGS1]] ], [ [[THIRTYTWO]], [[USING_OVERFLOW1]] ] ++// CHECK-PPC-NEXT: [[THIRTYFIVE:%[0-9]+]] = load i32* [[VAARG_ADDR1]] ++// CHECK-PPC-NEXT: store i32 [[THIRTYFIVE]], i32* %v, align 4 ++ ++#ifdef __powerpc64__ ++ __int128_t u = va_arg (ap, __int128_t); ++#endif ++// CHECK: bitcast i8* %{{[a-z.0-9]+}} to i128* ++// CHECK-NEXT: load i128* %{{[0-9]+}} ++} Modified: projects/clang350-import/contrib/unbound/iterator/iterator.c ============================================================================== --- projects/clang350-import/contrib/unbound/iterator/iterator.c Thu Dec 18 18:35:47 2014 (r275911) +++ projects/clang350-import/contrib/unbound/iterator/iterator.c Thu Dec 18 18:44:22 2014 (r275912) @@ -120,6 +120,7 @@ iter_new(struct module_qstate* qstate, i iq->query_restart_count = 0; iq->referral_count = 0; iq->sent_count = 0; + iq->target_count = NULL; iq->wait_priming_stub = 0; iq->refetch_glue = 0; iq->dnssec_expected = 0; @@ -445,6 +446,26 @@ handle_cname_response(struct module_qsta return 1; } +/** create target count structure for this query */ +static void +target_count_create(struct iter_qstate* iq) +{ + if(!iq->target_count) { + iq->target_count = (int*)calloc(2, sizeof(int)); + /* if calloc fails we simply do not track this number */ + if(iq->target_count) + iq->target_count[0] = 1; + } +} + +static void +target_count_increase(struct iter_qstate* iq, int num) +{ + target_count_create(iq); + if(iq->target_count) + iq->target_count[1] += num; +} + /** * Generate a subrequest. * Generate a local request event. Local events are tied to this module, and @@ -516,6 +537,10 @@ generate_sub_request(uint8_t* qname, siz subiq = (struct iter_qstate*)subq->minfo[id]; memset(subiq, 0, sizeof(*subiq)); subiq->num_target_queries = 0; + target_count_create(iq); + subiq->target_count = iq->target_count; + if(iq->target_count) + iq->target_count[0] ++; /* extra reference */ subiq->num_current_queries = 0; subiq->depth = iq->depth+1; outbound_list_init(&subiq->outlist); @@ -1342,6 +1367,12 @@ query_for_targets(struct module_qstate* if(iq->depth == ie->max_dependency_depth) return 0; + if(iq->depth > 0 && iq->target_count && + iq->target_count[1] > MAX_TARGET_COUNT) { + verbose(VERB_QUERY, "request has exceeded the maximum " + "number of glue fetches %d", iq->target_count[1]); + return 0; + } iter_mark_cycle_targets(qstate, iq->dp); missing = (int)delegpt_count_missing_targets(iq->dp); @@ -1524,6 +1555,7 @@ processLastResort(struct module_qstate* return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } iq->num_target_queries += qs; + target_count_increase(iq, qs); if(qs != 0) { qstate->ext_state[id] = module_wait_subquery; return 0; /* and wait for them */ @@ -1533,6 +1565,12 @@ processLastResort(struct module_qstate* verbose(VERB_QUERY, "maxdepth and need more nameservers, fail"); return error_response_cache(qstate, id, LDNS_RCODE_SERVFAIL); } + if(iq->depth > 0 && iq->target_count && + iq->target_count[1] > MAX_TARGET_COUNT) { + verbose(VERB_QUERY, "request has exceeded the maximum " + "number of glue fetches %d", iq->target_count[1]); + return error_response_cache(qstate, id, LDNS_RCODE_SERVFAIL); + } /* mark cycle targets for parent-side lookups */ iter_mark_pside_cycle_targets(qstate, iq->dp); /* see if we can issue queries to get nameserver addresses */ @@ -1562,6 +1600,7 @@ processLastResort(struct module_qstate* if(query_count != 0) { /* suspend to await results */ verbose(VERB_ALGO, "try parent-side glue lookup"); iq->num_target_queries += query_count; + target_count_increase(iq, query_count); qstate->ext_state[id] = module_wait_subquery; return 0; } @@ -1717,6 +1756,7 @@ processQueryTargets(struct module_qstate return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } iq->num_target_queries += extra; + target_count_increase(iq, extra); if(iq->num_target_queries > 0) { /* wait to get all targets, we want to try em */ verbose(VERB_ALGO, "wait for all targets for fallback"); @@ -1757,6 +1797,7 @@ processQueryTargets(struct module_qstate /* errors ignored, these targets are not strictly necessary for * this result, we do not have to reply with SERVFAIL */ iq->num_target_queries += extra; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Dec 18 18:46:13 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9B6B3D85; Thu, 18 Dec 2014 18:46:13 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 83AEC2C88; Thu, 18 Dec 2014 18:46:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBIIkDhb015927; Thu, 18 Dec 2014 18:46:13 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBIIk9Ip015905; Thu, 18 Dec 2014 18:46:09 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201412181846.sBIIk9Ip015905@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Thu, 18 Dec 2014 18:46:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275913 - in projects/building-blocks: . bin/ps bin/sh bin/sh/tests/execution cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/lib/libdtrace/co... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Dec 2014 18:46:13 -0000 Author: ngie Date: Thu Dec 18 18:46:08 2014 New Revision: 275913 URL: https://svnweb.freebsd.org/changeset/base/275913 Log: MFhead @ r275911 (also, sort out MK_* flags in BMAKE, etc on this branch) Added: projects/building-blocks/bin/sh/tests/execution/set-x4.0 - copied unchanged from r275911, head/bin/sh/tests/execution/set-x4.0 projects/building-blocks/contrib/elftoolchain/readelf/ - copied from r275911, head/contrib/elftoolchain/readelf/ projects/building-blocks/contrib/file/magic/Magdir/kerberos - copied unchanged from r275911, head/contrib/file/magic/Magdir/kerberos projects/building-blocks/contrib/file/magic/Magdir/meteorological - copied unchanged from r275911, head/contrib/file/magic/Magdir/meteorological projects/building-blocks/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff - copied unchanged from r275911, head/contrib/llvm/patches/patch-r275759-clang-r221170-ppc-vaarg.diff projects/building-blocks/share/man/man7/crypto.7 - copied unchanged from r275911, head/share/man/man7/crypto.7 projects/building-blocks/sys/boot/fdt/dts/mips/beripad-sockit.dts - copied unchanged from r275911, head/sys/boot/fdt/dts/mips/beripad-sockit.dts projects/building-blocks/sys/crypto/aesni/aesni_ghash.c - copied unchanged from r275911, head/sys/crypto/aesni/aesni_ghash.c projects/building-blocks/sys/dev/ofw/ofw_cpu.c - copied unchanged from r275911, head/sys/dev/ofw/ofw_cpu.c projects/building-blocks/sys/kern/kern_procctl.c - copied unchanged from r275911, head/sys/kern/kern_procctl.c projects/building-blocks/sys/libkern/timingsafe_bcmp.c - copied unchanged from r275911, head/sys/libkern/timingsafe_bcmp.c projects/building-blocks/sys/mips/conf/BERI_SOCKIT - copied unchanged from r275911, head/sys/mips/conf/BERI_SOCKIT projects/building-blocks/sys/opencrypto/gfmult.c - copied unchanged from r275911, head/sys/opencrypto/gfmult.c projects/building-blocks/sys/opencrypto/gfmult.h - copied unchanged from r275911, head/sys/opencrypto/gfmult.h projects/building-blocks/sys/opencrypto/gmac.c - copied unchanged from r275911, head/sys/opencrypto/gmac.c projects/building-blocks/sys/opencrypto/gmac.h - copied unchanged from r275911, head/sys/opencrypto/gmac.h projects/building-blocks/tests/sys/opencrypto/ - copied from r275911, head/tests/sys/opencrypto/ projects/building-blocks/tools/tools/nanobsd/defaults.sh - copied unchanged from r275911, head/tools/tools/nanobsd/defaults.sh projects/building-blocks/usr.sbin/vigr/ - copied from r275911, head/usr.sbin/vigr/ Deleted: projects/building-blocks/contrib/file/magic/Magdir/rinex projects/building-blocks/sys/powerpc/ofw/ofw_cpu.c Modified: projects/building-blocks/Makefile.inc1 projects/building-blocks/UPDATING projects/building-blocks/bin/ps/ps.1 projects/building-blocks/bin/sh/output.c projects/building-blocks/bin/sh/tests/execution/Makefile projects/building-blocks/cddl/contrib/opensolaris/cmd/zdb/zdb.c projects/building-blocks/cddl/contrib/opensolaris/cmd/zfs/zfs.8 projects/building-blocks/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c projects/building-blocks/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c projects/building-blocks/contrib/binutils/bfd/ChangeLog projects/building-blocks/contrib/binutils/bfd/bfd-in2.h projects/building-blocks/contrib/binutils/bfd/ecoff.c projects/building-blocks/contrib/binutils/bfd/elf32-ppc.c projects/building-blocks/contrib/binutils/bfd/elf64-ppc.c projects/building-blocks/contrib/binutils/bfd/libbfd.h projects/building-blocks/contrib/binutils/bfd/reloc.c projects/building-blocks/contrib/binutils/bfd/section.c projects/building-blocks/contrib/binutils/gas/config/tc-ppc.c projects/building-blocks/contrib/binutils/include/elf/ChangeLog projects/building-blocks/contrib/binutils/include/elf/ppc.h projects/building-blocks/contrib/binutils/include/elf/ppc64.h projects/building-blocks/contrib/elftoolchain/elfcopy/main.c projects/building-blocks/contrib/elftoolchain/elfcopy/segments.c projects/building-blocks/contrib/file/ChangeLog projects/building-blocks/contrib/file/Makefile.in projects/building-blocks/contrib/file/TODO projects/building-blocks/contrib/file/aclocal.m4 projects/building-blocks/contrib/file/config.h.in projects/building-blocks/contrib/file/configure projects/building-blocks/contrib/file/configure.ac projects/building-blocks/contrib/file/doc/Makefile.in projects/building-blocks/contrib/file/doc/file.man projects/building-blocks/contrib/file/doc/libmagic.man projects/building-blocks/contrib/file/magic/Localstuff projects/building-blocks/contrib/file/magic/Magdir/android projects/building-blocks/contrib/file/magic/Magdir/animation projects/building-blocks/contrib/file/magic/Magdir/archive projects/building-blocks/contrib/file/magic/Magdir/blender projects/building-blocks/contrib/file/magic/Magdir/commands projects/building-blocks/contrib/file/magic/Magdir/compress projects/building-blocks/contrib/file/magic/Magdir/database projects/building-blocks/contrib/file/magic/Magdir/elf projects/building-blocks/contrib/file/magic/Magdir/filesystems projects/building-blocks/contrib/file/magic/Magdir/images projects/building-blocks/contrib/file/magic/Magdir/jpeg projects/building-blocks/contrib/file/magic/Magdir/linux projects/building-blocks/contrib/file/magic/Magdir/macintosh projects/building-blocks/contrib/file/magic/Magdir/msooxml projects/building-blocks/contrib/file/magic/Magdir/netbsd projects/building-blocks/contrib/file/magic/Magdir/pascal projects/building-blocks/contrib/file/magic/Magdir/pgp projects/building-blocks/contrib/file/magic/Magdir/python projects/building-blocks/contrib/file/magic/Magdir/riff projects/building-blocks/contrib/file/magic/Magdir/sequent projects/building-blocks/contrib/file/magic/Magdir/sereal projects/building-blocks/contrib/file/magic/Magdir/ssh projects/building-blocks/contrib/file/magic/Magdir/vms projects/building-blocks/contrib/file/magic/Magdir/vorbis projects/building-blocks/contrib/file/magic/Magdir/windows projects/building-blocks/contrib/file/magic/Makefile.am projects/building-blocks/contrib/file/magic/Makefile.in projects/building-blocks/contrib/file/missing projects/building-blocks/contrib/file/python/Makefile.in projects/building-blocks/contrib/file/src/Makefile.in projects/building-blocks/contrib/file/src/apprentice.c projects/building-blocks/contrib/file/src/ascmagic.c projects/building-blocks/contrib/file/src/cdf.c projects/building-blocks/contrib/file/src/cdf.h projects/building-blocks/contrib/file/src/compress.c projects/building-blocks/contrib/file/src/elfclass.h projects/building-blocks/contrib/file/src/encoding.c projects/building-blocks/contrib/file/src/file.c projects/building-blocks/contrib/file/src/file.h projects/building-blocks/contrib/file/src/file_opts.h projects/building-blocks/contrib/file/src/fsmagic.c projects/building-blocks/contrib/file/src/funcs.c projects/building-blocks/contrib/file/src/getline.c projects/building-blocks/contrib/file/src/magic.c projects/building-blocks/contrib/file/src/magic.h projects/building-blocks/contrib/file/src/magic.h.in projects/building-blocks/contrib/file/src/pread.c projects/building-blocks/contrib/file/src/readcdf.c projects/building-blocks/contrib/file/src/readelf.c projects/building-blocks/contrib/file/src/softmagic.c projects/building-blocks/contrib/file/src/vasprintf.c projects/building-blocks/contrib/file/tests/Makefile.in projects/building-blocks/contrib/llvm/patches/patch-r274286-llvm-r201784-asm-dollar.diff projects/building-blocks/contrib/llvm/patches/patch-r275633-llvm-r223171-fix-vectorizer.diff projects/building-blocks/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp projects/building-blocks/contrib/unbound/iterator/iterator.c projects/building-blocks/contrib/unbound/iterator/iterator.h projects/building-blocks/etc/Makefile projects/building-blocks/etc/devd/usb.conf projects/building-blocks/etc/mtree/BSD.include.dist projects/building-blocks/etc/mtree/BSD.tests.dist projects/building-blocks/etc/mtree/BSD.usr.dist projects/building-blocks/gnu/usr.bin/binutils/libbfd/bfd.h projects/building-blocks/gnu/usr.bin/cc/cc1plus/Makefile projects/building-blocks/gnu/usr.bin/groff/Makefile projects/building-blocks/gnu/usr.bin/groff/src/Makefile projects/building-blocks/gnu/usr.bin/groff/src/devices/Makefile projects/building-blocks/gnu/usr.bin/groff/src/libs/Makefile projects/building-blocks/gnu/usr.bin/groff/src/preproc/Makefile projects/building-blocks/gnu/usr.bin/groff/src/roff/Makefile projects/building-blocks/gnu/usr.bin/groff/src/utils/Makefile projects/building-blocks/lib/libc/iconv/iconv.3 projects/building-blocks/lib/libc/net/sctp_sys_calls.c projects/building-blocks/lib/libc/stdlib/quick_exit.3 projects/building-blocks/lib/libc/sys/kqueue.2 projects/building-blocks/lib/libc/sys/procctl.2 projects/building-blocks/lib/libmagic/config.h projects/building-blocks/lib/msun/ld128/k_expl.h projects/building-blocks/lib/msun/ld80/k_expl.h projects/building-blocks/lib/msun/src/catrig.c projects/building-blocks/lib/msun/src/catrigf.c projects/building-blocks/lib/msun/src/k_exp.c projects/building-blocks/lib/msun/src/k_expf.c projects/building-blocks/lib/msun/src/math_private.h projects/building-blocks/lib/msun/src/s_ccosh.c projects/building-blocks/lib/msun/src/s_ccoshf.c projects/building-blocks/lib/msun/src/s_cexp.c projects/building-blocks/lib/msun/src/s_cexpf.c projects/building-blocks/lib/msun/src/s_conj.c projects/building-blocks/lib/msun/src/s_conjf.c projects/building-blocks/lib/msun/src/s_conjl.c projects/building-blocks/lib/msun/src/s_cproj.c projects/building-blocks/lib/msun/src/s_cprojf.c projects/building-blocks/lib/msun/src/s_cprojl.c projects/building-blocks/lib/msun/src/s_csinh.c projects/building-blocks/lib/msun/src/s_csinhf.c projects/building-blocks/lib/msun/src/s_csqrt.c projects/building-blocks/lib/msun/src/s_csqrtf.c projects/building-blocks/lib/msun/src/s_csqrtl.c projects/building-blocks/lib/msun/src/s_ctanh.c projects/building-blocks/lib/msun/src/s_ctanhf.c projects/building-blocks/sbin/ffsinfo/ffsinfo.c projects/building-blocks/sbin/ifconfig/Makefile projects/building-blocks/sbin/ifconfig/ifconfig.8 projects/building-blocks/sbin/ifconfig/ifvxlan.c projects/building-blocks/sbin/ping6/ping6.c projects/building-blocks/sbin/shutdown/shutdown.8 projects/building-blocks/sbin/shutdown/shutdown.c projects/building-blocks/share/man/man4/crypto.4 projects/building-blocks/share/man/man4/vxlan.4 projects/building-blocks/share/man/man7/Makefile projects/building-blocks/share/man/man7/build.7 projects/building-blocks/share/man/man9/crypto.9 projects/building-blocks/share/man/man9/mutex.9 projects/building-blocks/share/man/man9/rmlock.9 projects/building-blocks/share/man/man9/rwlock.9 projects/building-blocks/share/man/man9/sx.9 projects/building-blocks/share/misc/committers-ports.dot projects/building-blocks/share/mk/bsd.opts.mk projects/building-blocks/share/mk/src.opts.mk projects/building-blocks/sys/amd64/amd64/exception.S projects/building-blocks/sys/amd64/vmm/io/vatpic.c projects/building-blocks/sys/arm/mv/mv_common.c projects/building-blocks/sys/arm/mv/mv_pci.c projects/building-blocks/sys/boot/fdt/dts/arm/socfpga-sockit-beri.dts projects/building-blocks/sys/boot/fdt/dts/mips/beri-netfpga.dts projects/building-blocks/sys/boot/fdt/dts/mips/beri-sim.dts projects/building-blocks/sys/boot/fdt/dts/mips/beripad-de4.dts projects/building-blocks/sys/cam/ctl/ctl.c projects/building-blocks/sys/cam/ctl/ctl.h projects/building-blocks/sys/cam/ctl/ctl_backend.h projects/building-blocks/sys/cam/ctl/ctl_backend_block.c projects/building-blocks/sys/cam/ctl/ctl_cmd_table.c projects/building-blocks/sys/cam/ctl/ctl_frontend_iscsi.c projects/building-blocks/sys/cam/ctl/ctl_frontend_iscsi.h projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_bookmark.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deadlist.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/uberblock.h projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap_impl.h projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap_leaf.h projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/building-blocks/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/building-blocks/sys/compat/freebsd32/freebsd32.h projects/building-blocks/sys/compat/freebsd32/freebsd32_misc.c projects/building-blocks/sys/compat/linprocfs/linprocfs.c projects/building-blocks/sys/compat/svr4/svr4_socket.c projects/building-blocks/sys/conf/files projects/building-blocks/sys/conf/files.amd64 projects/building-blocks/sys/conf/files.i386 projects/building-blocks/sys/conf/files.powerpc projects/building-blocks/sys/crypto/aesni/aesni.c projects/building-blocks/sys/crypto/aesni/aesni.h projects/building-blocks/sys/crypto/aesni/aesni_wrap.c projects/building-blocks/sys/crypto/via/padlock_hash.c projects/building-blocks/sys/dev/beri/virtio/virtio_mmio_platform.c projects/building-blocks/sys/dev/cxgbe/adapter.h projects/building-blocks/sys/dev/cxgbe/tom/t4_ddp.c projects/building-blocks/sys/dev/cxgbe/tom/t4_tom.h projects/building-blocks/sys/dev/drm/drm_sysctl.c projects/building-blocks/sys/dev/drm2/drm_sysctl.c projects/building-blocks/sys/dev/fdt/fdt_common.c projects/building-blocks/sys/dev/fdt/fdt_common.h projects/building-blocks/sys/dev/iscsi/iscsi.c projects/building-blocks/sys/dev/iscsi/iscsi_proto.h projects/building-blocks/sys/dev/malo/if_malo_pci.c projects/building-blocks/sys/dev/mmc/mmc.c projects/building-blocks/sys/dev/mwl/if_mwl_pci.c projects/building-blocks/sys/dev/sis/if_sis.c projects/building-blocks/sys/dev/usb/net/if_urndis.c projects/building-blocks/sys/dev/usb/serial/umodem.c projects/building-blocks/sys/dev/virtio/mmio/virtio_mmio.c projects/building-blocks/sys/dev/virtio/mmio/virtio_mmio_if.m projects/building-blocks/sys/dev/virtio/virtio_bus_if.m projects/building-blocks/sys/dev/virtio/virtqueue.c projects/building-blocks/sys/fs/ext2fs/ext2_alloc.c projects/building-blocks/sys/fs/ext2fs/ext2_lookup.c projects/building-blocks/sys/fs/ext2fs/ext2_vnops.c projects/building-blocks/sys/fs/fuse/fuse_vnops.c projects/building-blocks/sys/fs/msdosfs/msdosfs_lookup.c projects/building-blocks/sys/fs/nandfs/nandfs_vnops.c projects/building-blocks/sys/fs/nfsclient/nfs_clvnops.c projects/building-blocks/sys/fs/nfsserver/nfs_nfsdserv.c projects/building-blocks/sys/fs/tmpfs/tmpfs_vnops.c projects/building-blocks/sys/fs/unionfs/union_subr.c projects/building-blocks/sys/fs/unionfs/union_vnops.c projects/building-blocks/sys/geom/eli/g_eli_crypto.c projects/building-blocks/sys/geom/eli/g_eli_integrity.c projects/building-blocks/sys/geom/eli/g_eli_privacy.c projects/building-blocks/sys/kern/init_main.c projects/building-blocks/sys/kern/kern_conf.c projects/building-blocks/sys/kern/kern_exec.c projects/building-blocks/sys/kern/kern_exit.c projects/building-blocks/sys/kern/kern_fork.c projects/building-blocks/sys/kern/kern_mutex.c projects/building-blocks/sys/kern/kern_proc.c projects/building-blocks/sys/kern/kern_rmlock.c projects/building-blocks/sys/kern/kern_rwlock.c projects/building-blocks/sys/kern/kern_sig.c projects/building-blocks/sys/kern/kern_sx.c projects/building-blocks/sys/kern/kern_thread.c projects/building-blocks/sys/kern/subr_clock.c projects/building-blocks/sys/kern/subr_lock.c projects/building-blocks/sys/kern/sys_process.c projects/building-blocks/sys/kern/uipc_socket.c projects/building-blocks/sys/kern/uipc_usrreq.c projects/building-blocks/sys/kern/vfs_subr.c projects/building-blocks/sys/kern/vfs_syscalls.c projects/building-blocks/sys/kern/vfs_vnops.c projects/building-blocks/sys/mips/beri/beri_machdep.c projects/building-blocks/sys/mips/beri/files.beri projects/building-blocks/sys/mips/rmi/dev/sec/rmisec.c projects/building-blocks/sys/modules/aesni/Makefile projects/building-blocks/sys/modules/crypto/Makefile projects/building-blocks/sys/net/if_dead.c projects/building-blocks/sys/net80211/ieee80211_scan_sta.c projects/building-blocks/sys/netinet/ip_input.c projects/building-blocks/sys/netinet/ip_ipsec.c projects/building-blocks/sys/netinet/ip_ipsec.h projects/building-blocks/sys/netinet/ip_output.c projects/building-blocks/sys/netinet/sctp_input.c projects/building-blocks/sys/netinet/sctp_pcb.c projects/building-blocks/sys/netinet/tcp_input.c projects/building-blocks/sys/netinet/udp_usrreq.c projects/building-blocks/sys/netinet6/ip6_forward.c projects/building-blocks/sys/netinet6/ip6_ipsec.c projects/building-blocks/sys/netinet6/ip6_ipsec.h projects/building-blocks/sys/netinet6/ip6_output.c projects/building-blocks/sys/netinet6/raw_ip6.c projects/building-blocks/sys/netinet6/sctp6_usrreq.c projects/building-blocks/sys/netinet6/udp6_usrreq.c projects/building-blocks/sys/netipsec/ipsec.c projects/building-blocks/sys/netipsec/ipsec.h projects/building-blocks/sys/netipsec/ipsec6.h projects/building-blocks/sys/netipsec/ipsec_input.c projects/building-blocks/sys/netipsec/ipsec_output.c projects/building-blocks/sys/netipsec/xform_ah.c projects/building-blocks/sys/netipsec/xform_esp.c projects/building-blocks/sys/netipsec/xform_ipcomp.c projects/building-blocks/sys/nfsclient/nfs_vnops.c projects/building-blocks/sys/nfsserver/nfs_serv.c projects/building-blocks/sys/ofed/drivers/net/mlx4/en_cq.c projects/building-blocks/sys/opencrypto/criov.c projects/building-blocks/sys/opencrypto/crypto.c projects/building-blocks/sys/opencrypto/cryptodev.c projects/building-blocks/sys/opencrypto/cryptodev.h projects/building-blocks/sys/opencrypto/cryptosoft.c projects/building-blocks/sys/opencrypto/xform.c projects/building-blocks/sys/opencrypto/xform.h projects/building-blocks/sys/rpc/svc.c projects/building-blocks/sys/security/mac_lomac/mac_lomac.c projects/building-blocks/sys/sys/bufobj.h projects/building-blocks/sys/sys/elf_common.h projects/building-blocks/sys/sys/libkern.h projects/building-blocks/sys/sys/lock.h projects/building-blocks/sys/sys/mutex.h projects/building-blocks/sys/sys/param.h projects/building-blocks/sys/sys/proc.h projects/building-blocks/sys/sys/procctl.h projects/building-blocks/sys/sys/rmlock.h projects/building-blocks/sys/sys/rwlock.h projects/building-blocks/sys/sys/sx.h projects/building-blocks/sys/ufs/ffs/ffs_alloc.c projects/building-blocks/sys/ufs/ffs/ffs_snapshot.c projects/building-blocks/sys/ufs/ufs/ufs_lookup.c projects/building-blocks/tests/sys/Makefile projects/building-blocks/tools/build/mk/OptionalObsoleteFiles.inc projects/building-blocks/tools/tools/nanobsd/nanobsd.sh projects/building-blocks/usr.bin/id/id.c projects/building-blocks/usr.bin/killall/killall.c projects/building-blocks/usr.bin/mkimg/Makefile projects/building-blocks/usr.bin/mkimg/qcow.c projects/building-blocks/usr.bin/sed/compile.c projects/building-blocks/usr.sbin/Makefile projects/building-blocks/usr.sbin/autofs/automountd.c projects/building-blocks/usr.sbin/autofs/autounmountd.8 projects/building-blocks/usr.sbin/autofs/common.c projects/building-blocks/usr.sbin/bluetooth/bthidd/kbd.c projects/building-blocks/usr.sbin/bsdinstall/distextract/Makefile projects/building-blocks/usr.sbin/bsdinstall/distextract/distextract.c projects/building-blocks/usr.sbin/chkgrp/chkgrp.c projects/building-blocks/usr.sbin/ctladm/ctladm.8 projects/building-blocks/usr.sbin/ctld/discovery.c projects/building-blocks/usr.sbin/ctld/login.c projects/building-blocks/usr.sbin/iscsid/discovery.c projects/building-blocks/usr.sbin/iscsid/login.c projects/building-blocks/usr.sbin/jail/command.c projects/building-blocks/usr.sbin/kldxref/Makefile projects/building-blocks/usr.sbin/lpr/lpr/lpr.c projects/building-blocks/usr.sbin/pw/tests/pw_useradd.sh projects/building-blocks/usr.sbin/pw/tests/pw_usermod.sh projects/building-blocks/usr.sbin/syslogd/syslogd.c Directory Properties: projects/building-blocks/ (props changed) projects/building-blocks/cddl/ (props changed) projects/building-blocks/cddl/contrib/opensolaris/ (props changed) projects/building-blocks/cddl/contrib/opensolaris/cmd/zfs/ (props changed) projects/building-blocks/cddl/contrib/opensolaris/lib/libzfs/ (props changed) projects/building-blocks/contrib/binutils/ (props changed) projects/building-blocks/contrib/file/ (props changed) projects/building-blocks/contrib/llvm/ (props changed) projects/building-blocks/contrib/llvm/tools/clang/ (props changed) projects/building-blocks/contrib/unbound/ (props changed) projects/building-blocks/etc/ (props changed) projects/building-blocks/gnu/usr.bin/binutils/ (props changed) projects/building-blocks/lib/libc/ (props changed) projects/building-blocks/sbin/ (props changed) projects/building-blocks/share/ (props changed) projects/building-blocks/share/man/man4/ (props changed) projects/building-blocks/sys/ (props changed) projects/building-blocks/sys/amd64/vmm/ (props changed) projects/building-blocks/sys/boot/ (props changed) projects/building-blocks/sys/cddl/contrib/opensolaris/ (props changed) projects/building-blocks/sys/conf/ (props changed) projects/building-blocks/usr.bin/mkimg/ (props changed) projects/building-blocks/usr.sbin/jail/ (props changed) Modified: projects/building-blocks/Makefile.inc1 ============================================================================== --- projects/building-blocks/Makefile.inc1 Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/Makefile.inc1 Thu Dec 18 18:46:08 2014 (r275913) @@ -113,6 +113,8 @@ _REDUNDENT_LIB_DIRS+= ${LOCAL_LIB_DIR .for _DIR in ${LOCAL_LIB_DIRS} .if empty(_REDUNDENT_LIB_DIRS:M${_DIR}) && exists(${.CURDIR}/${_DIR}/Makefile) SUBDIR+= ${_DIR} +.else +.warning ${_DIR} not added to SUBDIR list. See UPDATING 20141121. .endif .endfor .endif @@ -261,8 +263,9 @@ BMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \ MK_HTML=no MK_INFO=no NO_LINT=yes MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ - MK_CLANG_FULL=no MK_LLDB=no MK_TESTS=no \ - MK_DEBUG_FILES=no + MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ + MK_DEBUG_FILES=no \ + MK_LLDB=no MK_TESTS=no # build-tools stage TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ @@ -273,9 +276,12 @@ TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ SSP_CFLAGS= \ -DNO_LINT \ -DNO_CPU_CFLAGS \ - MK_WARNS=no MK_CTF=no MK_CLANG_FULL=no MK_LLDB=no MK_MAN=no \ + MK_CTF=no \ + MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ MK_DEBUG_FILES=no \ + MK_LLDB=no MK_MAN=no \ MK_SHAREDOCS=no MK_TESTS=no \ + MK_WARNS=no # cross-tools stage XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \ @@ -528,8 +534,9 @@ _worldtmp: -p ${WORLDTMP}/usr/lib >/dev/null .endif .if ${MK_TESTS} != "no" + mkdir -p ${WORLDTMP}${TESTSBASE} mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ - -p ${WORLDTMP}/usr >/dev/null + -p ${WORLDTMP}${TESTSBASE} >/dev/null .endif .for _mtree in ${LOCAL_MTREE} mtree -deU -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null @@ -792,7 +799,7 @@ _zoneinfo= zic tzsetup ITOOLS= [ awk cap_mkdb cat chflags chmod chown \ date echo egrep find grep id install ${_install-info} \ ln lockf make mkdir mtree mv pwd_mkdb \ - rm sed services_mkdb sh sysctl test true uname wc ${_zoneinfo} \ + rm sed services_mkdb sh strip sysctl test true uname wc ${_zoneinfo} \ ${LOCAL_ITOOLS} # Needed for share/man @@ -868,8 +875,9 @@ distributeworld installworld: _installch -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib >/dev/null .endif .if ${MK_TESTS} != "no" && ${dist} == "tests" + -mkdir -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE} mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ - -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null + -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE} >/dev/null .endif .if defined(NO_ROOT) ${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.root.dist | \ @@ -1479,7 +1487,8 @@ NXBMAKE= ${NXBENV} ${MAKE} \ MK_HTML=no MK_INFO=no NO_LINT=yes MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ - MK_CLANG_FULL=no MK_LLDB=no + MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ + MK_LLDB=no native-xtools: .MAKE mkdir -p ${OBJTREE}/nxb-bin/bin @@ -2093,8 +2102,9 @@ _xi-mtree: mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ -p ${XDDESTDIR}/usr/include >/dev/null .if ${MK_TESTS} != "no" + mkdir -p ${XDDESTDIR}${TESTSBASE} mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ - -p ${XDDESTDIR}/usr >/dev/null + -p ${XDDESTDIR}${TESTSBASE} >/dev/null .endif .ORDER: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries Modified: projects/building-blocks/UPDATING ============================================================================== --- projects/building-blocks/UPDATING Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/UPDATING Thu Dec 18 18:46:08 2014 (r275913) @@ -31,6 +31,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20141121: + The handling of LOCAL_LIB_DIRS has been altered to skip addition of + directories to top level SUBDIR variable when their parent + directory is included in LOCAL_DIRS. Users with build systems with + such hierarchies and without SUBDIR entries in the parent + directory Makefiles should add them or add the directories to + LOCAL_DIRS. + 20141109: faith(4) and faithd(8) has been removed from base system. It has been obsolete for a very long time. Modified: projects/building-blocks/bin/ps/ps.1 ============================================================================== --- projects/building-blocks/bin/ps/ps.1 Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/bin/ps/ps.1 Thu Dec 18 18:46:08 2014 (r275913) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd August 27, 2014 +.Dd December 9, 2014 .Dt PS 1 .Os .Sh NAME @@ -332,6 +332,7 @@ the include file .It Dv "P_SINGLE_BOUNDARY" Ta No "0x400000" Ta "Threads should suspend at user boundary" .It Dv "P_HWPMC" Ta No "0x800000" Ta "Process is using HWPMCs" .It Dv "P_JAILED" Ta No "0x1000000" Ta "Process is in jail" +.It Dv "P_TOTAL_STOP" Ta No "0x2000000" Ta "Stopped for system suspend" .It Dv "P_INEXEC" Ta No "0x4000000" Ta "Process is in execve()" .It Dv "P_STATCHILD" Ta No "0x8000000" Ta "Child process stopped or exited" .It Dv "P_INMEM" Ta No "0x10000000" Ta "Loaded into memory" Modified: projects/building-blocks/bin/sh/output.c ============================================================================== --- projects/building-blocks/bin/sh/output.c Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/bin/sh/output.c Thu Dec 18 18:46:08 2014 (r275913) @@ -54,6 +54,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include "shell.h" #include "syntax.h" @@ -111,42 +113,86 @@ outstr(const char *p, struct output *fil outbin(p, strlen(p), file); } +static void +byteseq(int ch, struct output *file) +{ + char seq[4]; + + seq[0] = '\\'; + seq[1] = (ch >> 6 & 0x3) + '0'; + seq[2] = (ch >> 3 & 0x7) + '0'; + seq[3] = (ch & 0x7) + '0'; + outbin(seq, 4, file); +} + +static void +outdqstr(const char *p, struct output *file) +{ + const char *end; + mbstate_t mbs; + size_t clen; + wchar_t wc; + + memset(&mbs, '\0', sizeof(mbs)); + end = p + strlen(p); + outstr("$'", file); + while ((clen = mbrtowc(&wc, p, end - p + 1, &mbs)) != 0) { + if (clen == (size_t)-2) { + while (p < end) + byteseq(*p++, file); + break; + } + if (clen == (size_t)-1) { + memset(&mbs, '\0', sizeof(mbs)); + byteseq(*p++, file); + continue; + } + if (wc == L'\n') + outcslow('\n', file), p++; + else if (wc == L'\r') + outstr("\\r", file), p++; + else if (wc == L'\t') + outstr("\\t", file), p++; + else if (!iswprint(wc)) { + for (; clen > 0; clen--) + byteseq(*p++, file); + } else { + if (wc == L'\'' || wc == L'\\') + outcslow('\\', file); + outbin(p, clen, file); + p += clen; + } + } + outcslow('\'', file); +} + /* Like outstr(), but quote for re-input into the shell. */ void outqstr(const char *p, struct output *file) { - char ch; - int inquotes; + int i; if (p[0] == '\0') { outstr("''", file); return; } - if (p[strcspn(p, "|&;<>()$`\\\"' \t\n*?[~#=")] == '\0' || + for (i = 0; p[i] != '\0'; i++) { + if ((p[i] > '\0' && p[i] < ' ' && p[i] != '\n') || + (p[i] & 0x80) != 0 || p[i] == '\'') { + outdqstr(p, file); + return; + } + } + + if (p[strcspn(p, "|&;<>()$`\\\" \n*?[~#=")] == '\0' || strcmp(p, "[") == 0) { outstr(p, file); return; } - inquotes = 0; - while ((ch = *p++) != '\0') { - switch (ch) { - case '\'': - /* Can't quote single quotes inside single quotes. */ - if (inquotes) - outcslow('\'', file); - inquotes = 0; - outstr("\\'", file); - break; - default: - if (!inquotes) - outcslow('\'', file); - inquotes = 1; - outc(ch, file); - } - } - if (inquotes) - outcslow('\'', file); + outcslow('\'', file); + outstr(p, file); + outcslow('\'', file); } void Modified: projects/building-blocks/bin/sh/tests/execution/Makefile ============================================================================== --- projects/building-blocks/bin/sh/tests/execution/Makefile Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/bin/sh/tests/execution/Makefile Thu Dec 18 18:46:08 2014 (r275913) @@ -44,6 +44,7 @@ FILES+= set-n4.0 FILES+= set-x1.0 FILES+= set-x2.0 FILES+= set-x3.0 +FILES+= set-x4.0 FILES+= shellproc1.0 FILES+= subshell1.0 subshell1.0.stdout FILES+= subshell2.0 Copied: projects/building-blocks/bin/sh/tests/execution/set-x4.0 (from r275911, head/bin/sh/tests/execution/set-x4.0) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/building-blocks/bin/sh/tests/execution/set-x4.0 Thu Dec 18 18:46:08 2014 (r275913, copy of r275911, head/bin/sh/tests/execution/set-x4.0) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +key=`printf '\r\t\001\200\300'` +r=`{ set -x; : "$key"; } 2>&1 >/dev/null` +case $r in +*[![:print:]]*) echo fail; exit 3 +esac Modified: projects/building-blocks/cddl/contrib/opensolaris/cmd/zdb/zdb.c ============================================================================== --- projects/building-blocks/cddl/contrib/opensolaris/cmd/zdb/zdb.c Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/cddl/contrib/opensolaris/cmd/zdb/zdb.c Thu Dec 18 18:46:08 2014 (r275913) @@ -1184,7 +1184,7 @@ visit_indirect(spa_t *spa, const dnode_p print_indirect(bp, zb, dnp); if (BP_GET_LEVEL(bp) > 0 && !BP_IS_HOLE(bp)) { - uint32_t flags = ARC_WAIT; + arc_flags_t flags = ARC_FLAG_WAIT; int i; blkptr_t *cbp; int epb = BP_GET_LSIZE(bp) >> SPA_BLKPTRSHIFT; @@ -1884,8 +1884,8 @@ dump_dir(objset_t *os) if (dds.dds_type == DMU_OST_META) { dds.dds_creation_txg = TXG_INITIAL; usedobjs = BP_GET_FILL(os->os_rootbp); - refdbytes = os->os_spa->spa_dsl_pool-> - dp_mos_dir->dd_phys->dd_used_bytes; + refdbytes = dsl_dir_phys(os->os_spa->spa_dsl_pool->dp_mos_dir)-> + dd_used_bytes; } else { dmu_objset_space(os, &refdbytes, &scratch, &usedobjs, &scratch); } Modified: projects/building-blocks/cddl/contrib/opensolaris/cmd/zfs/zfs.8 ============================================================================== --- projects/building-blocks/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Thu Dec 18 18:46:08 2014 (r275913) @@ -23,15 +23,15 @@ .\" Copyright (c) 2012, Glen Barber .\" Copyright (c) 2012, Bryan Drewery .\" Copyright (c) 2013 by Saso Kiselkov. All rights reserved. -.\" Copyright (c) 2013 Nexenta Systems, Inc. All Rights Reserved. .\" Copyright (c) 2014, Joyent, Inc. All rights reserved. .\" Copyright (c) 2013, Steven Hartland +.\" Copyright (c) 2014 Nexenta Systems, Inc. All Rights Reserved. .\" Copyright (c) 2014, Xin LI .\" Copyright (c) 2014, The FreeBSD Foundation, All Rights Reserved. .\" .\" $FreeBSD$ .\" -.Dd November 12, 2014 +.Dd December 12, 2014 .Dt ZFS 8 .Os .Sh NAME @@ -3505,10 +3505,9 @@ are also displayed. .Bd -literal -offset 2n .Li # Ic zfs allow cindys create,destroy,mount,snapshot tank/cindys .Li # Ic zfs allow tank/cindys -------------------------------------------------------------- -Local+Descendent permissions on (tank/cindys) - user cindys create,destroy,mount,snapshot -------------------------------------------------------------- +---- Permissions on tank/cindys -------------------------------------- +Local+Descendent permissions: + user cindys create,destroy,mount,snapshot .Ed .It Sy Example 18 No Delegating Create Time Permissions on a Tn ZFS No Dataset .Pp @@ -3524,12 +3523,11 @@ are also displayed. .Li # Ic zfs allow staff create,mount tank/users .Li # Ic zfs allow -c destroy tank/users .Li # Ic zfs allow tank/users -------------------------------------------------------------- -Create time permissions on (tank/users) - create,destroy -Local+Descendent permissions on (tank/users) - group staff create,mount -------------------------------------------------------------- +---- Permissions on tank/users --------------------------------------- +Permission sets: + destroy +Local+Descendent permissions: + group staff create,mount .Ed .It Xo .Sy Example 19 @@ -3547,14 +3545,11 @@ are also displayed. .Li # Ic zfs allow -s @pset create,destroy,snapshot,mount tank/users .Li # Ic zfs allow staff @pset tank/users .Li # Ic zfs allow tank/users -------------------------------------------------------------- -Permission sets on (tank/users) +---- Permissions on tank/users --------------------------------------- +Permission sets: @pset create,destroy,mount,snapshot -Create time permissions on (tank/users) - create,destroy -Local+Descendent permissions on (tank/users) - group staff @pset,create,mount -------------------------------------------------------------- +Local+Descendent permissions: + group staff @pset .Ed .It Sy Example 20 No Delegating Property Permissions on a Tn ZFS No Dataset .Pp @@ -3566,16 +3561,15 @@ file system. The permissions on are also displayed. .Bd -literal -offset 2n .Li # Ic zfs allow cindys quota,reservation users/home -.Li # Ic zfs allow cindys -------------------------------------------------------------- -Local+Descendent permissions on (users/home) +.Li # Ic zfs allow users/home +---- Permissions on users/home --------------------------------------- +Local+Descendent permissions: user cindys quota,reservation -------------------------------------------------------------- .Li # Ic su - cindys .Li cindys% Ic zfs set quota=10G users/home/marks .Li cindys% Ic zfs get quota users/home/marks -NAME PROPERTY VALUE SOURCE -users/home/marks quota 10G local +NAME PROPERTY VALUE SOURCE +users/home/marks quota 10G local .Ed .It Sy Example 21 No Removing ZFS Delegated Permissions on a Tn ZFS No Dataset .Pp @@ -3589,14 +3583,11 @@ are also displayed. .Bd -literal -offset 2n .Li # Ic zfs unallow staff snapshot tank/users .Li # Ic zfs allow tank/users -------------------------------------------------------------- -Permission sets on (tank/users) +---- Permissions on tank/users --------------------------------------- +Permission sets: @pset create,destroy,mount,snapshot -Create time permissions on (tank/users) - create,destroy -Local+Descendent permissions on (tank/users) - group staff @pset,create,mount -------------------------------------------------------------- +Local+Descendent permissions: + group staff @pset .Ed .It Sy Example 22 Showing the differences between a snapshot and a ZFS Dataset .Pp Modified: projects/building-blocks/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c ============================================================================== --- projects/building-blocks/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c Thu Dec 18 18:46:08 2014 (r275913) @@ -110,7 +110,7 @@ dtrace_dof_init(void) Elf32_Ehdr *elf; #endif dof_helper_t dh; - Link_map *lmp; + Link_map *lmp = NULL; #if defined(sun) Lmid_t lmid; #else Modified: projects/building-blocks/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c ============================================================================== --- projects/building-blocks/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_iter.c Thu Dec 18 18:46:08 2014 (r275913) @@ -24,7 +24,7 @@ * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright (c) 2012 Pawel Jakub Dawidek . * All rights reserved. - * Copyright 2013 Nexenta Systems, Inc. All rights reserved. + * Copyright 2014 Nexenta Systems, Inc. All rights reserved. */ #include @@ -193,9 +193,6 @@ zfs_iter_bookmarks(zfs_handle_t *zhp, zf fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_CREATETXG)); fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_CREATION)); - /* Allocate an nvlist to hold the bookmarks. */ - bmarks = fnvlist_alloc(); - if ((err = lzc_get_bookmarks(zhp->zfs_name, props, &bmarks)) != 0) goto out; Modified: projects/building-blocks/contrib/binutils/bfd/ChangeLog ============================================================================== --- projects/building-blocks/contrib/binutils/bfd/ChangeLog Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/contrib/binutils/bfd/ChangeLog Thu Dec 18 18:46:08 2014 (r275913) @@ -1,3 +1,49 @@ +2009-02-15 Alan Modra + + * elf64-ppc.c (struct _ppc64_elf_section_data): Delete t_symndx, + add toc.symndx and toc.add. + (ppc64_elf_check_relocs): Don't set htab->tls_get_addr here. + Set up toc.add. + (get_tls_mask): Add toc_addend param, set from toc.add. Adjust all + callers. + (ppc64_elf_tls_setup): Set htab->tls_get_addr and tls_get_addr_fd. + (branch_reloc_hash_match): New function, extracted from.. + (ppc64_elf_tls_optimize): ..here. + (ppc64_elf_relocate_section): Properly set addends when optimizing + tls sequences. Avoid unnecessary reading and writing of insns. + Only redo reloc when symbol changed. Bypass symbol checks when + using tlsld_got. + * elf32-ppc.c (ppc_elf_tls_setup): Correct comment. + (branch_reloc_hash_match): New function, extracted from.. + (ppc_elf_tls_optimize): ..here. + (ppc_elf_relocate_section): Avoid unnecessary reading of insns. + Don't clear addend on zapped __tls_get_addr reloc. + +2008-08-11 Alan Modra + + * elf64-ppc.c (toc_adjusting_stub_needed): Any call via the plt + needs r2 valid, not just those to external syms. + +2007-11-06 Alan Modra + + * elf32-ppc.c (ppc_elf_check_relocs): Don't refcount tlsld_got here.. + (ppc_elf_gc_sweep_hook): ..or here.. + (ppc_elf_tls_optimize): ..or here. Make two passes through the + relocs, ensuring that tls_get_addr calls follow gd and ld relocs. + (allocate_dynrelocs): Refcount tlsld_got here. + (ppc_elf_size_dynamic_sections): Call allocate_dynrelocs before + allocating tlsld_got. + (ppc_elf_relocate_section): Remove check that a tls_get_addr + call follows gd and ld relocs. + +2007-08-13 Alan Modra + + * elf64-ppc.c (ADDI_R12_R12, LD_R11_0R2, LD_R2_0R2): Define. + Update stub comments. + (build_plt_stub): Build two variants, one without "addis". + (ppc_build_one_stub): Build stubs without "addis" if possible. + (ppc_size_one_stub): Size new stubs. + 2007-07-02 Joseph Myers * elfxx-mips.c (mips_elf_calculate_relocation): Handle Modified: projects/building-blocks/contrib/binutils/bfd/bfd-in2.h ============================================================================== --- projects/building-blocks/contrib/binutils/bfd/bfd-in2.h Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/contrib/binutils/bfd/bfd-in2.h Thu Dec 18 18:46:08 2014 (r275913) @@ -1380,6 +1380,9 @@ typedef struct bfd_section /* Nonzero if this section has TLS related relocations. */ unsigned int has_tls_reloc:1; + /* Nonzero if this section has a call to __tls_get_addr. */ + unsigned int has_tls_get_addr_call:1; + /* Nonzero if this section has a gp reloc. */ unsigned int has_gp_reloc:1; @@ -1640,11 +1643,11 @@ extern asection bfd_ind_section; /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \ 0, 0, 0, 0, \ \ - /* has_gp_reloc, need_finalize_relax, reloc_done, */ \ - 0, 0, 0, \ + /* has_tls_get_addr_call, has_gp_reloc, need_finalize_relax, */ \ + 0, 0, 0, \ \ - /* vma, lma, size, rawsize */ \ - 0, 0, 0, 0, \ + /* reloc_done, vma, lma, size, rawsize */ \ + 0, 0, 0, 0, 0, \ \ /* output_offset, output_section, alignment_power, */ \ 0, (struct bfd_section *) &SEC, 0, \ @@ -2896,6 +2899,8 @@ in the instruction. */ /* PowerPC and PowerPC64 thread-local storage relocations. */ BFD_RELOC_PPC_TLS, + BFD_RELOC_PPC_TLSGD, + BFD_RELOC_PPC_TLSLD, BFD_RELOC_PPC_DTPMOD, BFD_RELOC_PPC_TPREL16, BFD_RELOC_PPC_TPREL16_LO, Modified: projects/building-blocks/contrib/binutils/bfd/ecoff.c ============================================================================== --- projects/building-blocks/contrib/binutils/bfd/ecoff.c Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/contrib/binutils/bfd/ecoff.c Thu Dec 18 18:46:08 2014 (r275913) @@ -58,10 +58,10 @@ static asection bfd_debug_section = 0, 0, 1, 0, /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ 0, 0, 0, 0, - /* has_gp_reloc, need_finalize_relax, reloc_done, */ - 0, 0, 0, - /* vma, lma, size, rawsize, */ - 0, 0, 0, 0, + /* has_tls_get_addr_call, has_gp_reloc, need_finalize_relax, */ + 0, 0, 0, + /* reloc_done, vma, lma, size, rawsize, */ + 0, 0, 0, 0, 0, /* output_offset, output_section, alignment_power, */ 0, NULL, 0, /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ Modified: projects/building-blocks/contrib/binutils/bfd/elf32-ppc.c ============================================================================== --- projects/building-blocks/contrib/binutils/bfd/elf32-ppc.c Thu Dec 18 18:44:22 2014 (r275912) +++ projects/building-blocks/contrib/binutils/bfd/elf32-ppc.c Thu Dec 18 18:46:08 2014 (r275913) @@ -746,7 +746,7 @@ static reloc_howto_type ppc_elf_howto_ra 0xffff, /* dst_mask */ FALSE), /* pcrel_offset */ - /* Marker reloc for TLS. */ + /* Marker relocs for TLS. */ HOWTO (R_PPC_TLS, 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ @@ -761,6 +761,34 @@ static reloc_howto_type ppc_elf_howto_ra 0, /* dst_mask */ FALSE), /* pcrel_offset */ + HOWTO (R_PPC_TLSGD, + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_PPC_TLSGD", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ + + HOWTO (R_PPC_TLSLD, + 0, /* rightshift */ + 2, /* size (0 = byte, 1 = short, 2 = long) */ + 32, /* bitsize */ + FALSE, /* pc_relative */ + 0, /* bitpos */ + complain_overflow_dont, /* complain_on_overflow */ + bfd_elf_generic_reloc, /* special_function */ + "R_PPC_TLSLD", /* name */ + FALSE, /* partial_inplace */ + 0, /* src_mask */ + 0, /* dst_mask */ + FALSE), /* pcrel_offset */ + /* Computes the load module index of the load module that contains the definition of its TLS sym. */ HOWTO (R_PPC_DTPMOD32, @@ -1524,6 +1552,8 @@ ppc_elf_reloc_type_lookup (bfd *abfd ATT case BFD_RELOC_CTOR: r = R_PPC_ADDR32; break; case BFD_RELOC_PPC_TOC16: r = R_PPC_TOC16; break; case BFD_RELOC_PPC_TLS: r = R_PPC_TLS; break; + case BFD_RELOC_PPC_TLSGD: r = R_PPC_TLSGD; break; + case BFD_RELOC_PPC_TLSLD: r = R_PPC_TLSLD; break; case BFD_RELOC_PPC_DTPMOD: r = R_PPC_DTPMOD32; break; case BFD_RELOC_PPC_TPREL16: r = R_PPC_TPREL16; break; case BFD_RELOC_PPC_TPREL16_LO: r = R_PPC_TPREL16_LO; break; @@ -2345,16 +2375,34 @@ struct plt_entry bfd_vma glink_offset; }; -/* Of those relocs that might be copied as dynamic relocs, this macro +/* Of those relocs that might be copied as dynamic relocs, this function selects those that must be copied when linking a shared library, even when the symbol is local. */ -#define MUST_BE_DYN_RELOC(RTYPE) \ - ((RTYPE) != R_PPC_REL24 \ - && (RTYPE) != R_PPC_REL14 \ - && (RTYPE) != R_PPC_REL14_BRTAKEN \ - && (RTYPE) != R_PPC_REL14_BRNTAKEN \ - && (RTYPE) != R_PPC_REL32) +static int +must_be_dyn_reloc (struct bfd_link_info *info, + enum elf_ppc_reloc_type r_type) +{ + switch (r_type) + { + default: + return 1; + + case R_PPC_REL24: + case R_PPC_REL14: + case R_PPC_REL14_BRTAKEN: + case R_PPC_REL14_BRNTAKEN: + case R_PPC_REL32: + return 0; + + case R_PPC_TPREL32: + case R_PPC_TPREL16: + case R_PPC_TPREL16_LO: + case R_PPC_TPREL16_HI: + case R_PPC_TPREL16_HA: + return !info->executable; + } +} /* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid copying dynamic variables from a shared lib into an app's dynbss @@ -2421,7 +2469,7 @@ struct ppc_elf_link_hash_table /* The .got.plt section (VxWorks only)*/ asection *sgotplt; - /* Shortcut to .__tls_get_addr. */ + /* Shortcut to __tls_get_addr. */ struct elf_link_hash_entry *tls_get_addr; /* The bfd that forced an old-style PLT. */ @@ -3040,6 +3088,7 @@ ppc_elf_check_relocs (bfd *abfd, const Elf_Internal_Rela *rel; const Elf_Internal_Rela *rel_end; asection *got2, *sreloc; + struct elf_link_hash_entry *tga; if (info->relocatable) return TRUE; @@ -3063,6 +3112,8 @@ ppc_elf_check_relocs (bfd *abfd, ppc_elf_howto_init (); htab = ppc_elf_hash_table (info); + tga = elf_link_hash_lookup (&htab->elf, "__tls_get_addr", + FALSE, FALSE, TRUE); symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sym_hashes = elf_sym_hashes (abfd); got2 = bfd_get_section_by_name (abfd, ".got2"); @@ -3074,7 +3125,7 @@ ppc_elf_check_relocs (bfd *abfd, unsigned long r_symndx; enum elf_ppc_reloc_type r_type; struct elf_link_hash_entry *h; - int tls_type = 0; + int tls_type; r_symndx = ELF32_R_SYM (rel->r_info); if (r_symndx < symtab_hdr->sh_info) @@ -3101,14 +3152,48 @@ ppc_elf_check_relocs (bfd *abfd, BFD_ASSERT (h == htab->elf.hgot); } + tls_type = 0; r_type = ELF32_R_TYPE (rel->r_info); + if (h != NULL && h == tga) + switch (r_type) + { + default: + break; + + case R_PPC_PLTREL24: + case R_PPC_LOCAL24PC: + case R_PPC_REL24: + case R_PPC_REL14: + case R_PPC_REL14_BRTAKEN: + case R_PPC_REL14_BRNTAKEN: + case R_PPC_ADDR24: + case R_PPC_ADDR14: + case R_PPC_ADDR14_BRTAKEN: + case R_PPC_ADDR14_BRNTAKEN: + if (rel != relocs + && (ELF32_R_TYPE (rel[-1].r_info) == R_PPC_TLSGD + || ELF32_R_TYPE (rel[-1].r_info) == R_PPC_TLSLD)) + /* We have a new-style __tls_get_addr call with a marker + reloc. */ + ; + else + /* Mark this section as having an old-style call. */ + sec->has_tls_get_addr_call = 1; + break; + } + switch (r_type) { + case R_PPC_TLSGD: + case R_PPC_TLSLD: + /* These special tls relocs tie a call to __tls_get_addr with + its parameter symbol. */ + break; + case R_PPC_GOT_TLSLD16: case R_PPC_GOT_TLSLD16_LO: case R_PPC_GOT_TLSLD16_HI: case R_PPC_GOT_TLSLD16_HA: - htab->tlsld_got.refcount += 1; tls_type = TLS_TLS | TLS_LD; goto dogottls; @@ -3123,7 +3208,7 @@ ppc_elf_check_relocs (bfd *abfd, case R_PPC_GOT_TPREL16_LO: case R_PPC_GOT_TPREL16_HI: case R_PPC_GOT_TPREL16_HA: - if (info->shared) + if (!info->executable) info->flags |= DF_STATIC_TLS; tls_type = TLS_TLS | TLS_TPREL; goto dogottls; @@ -3358,7 +3443,7 @@ ppc_elf_check_relocs (bfd *abfd, /* This refers only to functions defined in the shared library. */ case R_PPC_LOCAL24PC: - if (h && h == htab->elf.hgot && htab->plt_type == PLT_UNSET) + if (h != NULL && h == htab->elf.hgot && htab->plt_type == PLT_UNSET) { htab->plt_type = PLT_OLD; htab->old_bfd = abfd; @@ -3381,7 +3466,11 @@ ppc_elf_check_relocs (bfd *abfd, /* We shouldn't really be seeing these. */ case R_PPC_TPREL32: - if (info->shared) + case R_PPC_TPREL16: + case R_PPC_TPREL16_LO: + case R_PPC_TPREL16_HI: + case R_PPC_TPREL16_HA: + if (!info->executable) info->flags |= DF_STATIC_TLS; goto dodyn; @@ -3390,14 +3479,6 @@ ppc_elf_check_relocs (bfd *abfd, case R_PPC_DTPREL32: goto dodyn; - case R_PPC_TPREL16: - case R_PPC_TPREL16_LO: - case R_PPC_TPREL16_HI: - case R_PPC_TPREL16_HA: - if (info->shared) - info->flags |= DF_STATIC_TLS; - goto dodyn; - case R_PPC_REL32: if (h == NULL && got2 != NULL @@ -3488,7 +3569,7 @@ ppc_elf_check_relocs (bfd *abfd, dynamic library if we manage to avoid copy relocs for the symbol. */ if ((info->shared - && (MUST_BE_DYN_RELOC (r_type) + && (must_be_dyn_reloc (info, r_type) || (h != NULL && (! info->symbolic || h->root.type == bfd_link_hash_defweak @@ -3583,7 +3664,7 @@ ppc_elf_check_relocs (bfd *abfd, } p->count += 1; - if (!MUST_BE_DYN_RELOC (r_type)) + if (!must_be_dyn_reloc (info, r_type)) p->pc_count += 1; } @@ -3903,9 +3984,6 @@ ppc_elf_gc_sweep_hook (bfd *abfd, case R_PPC_GOT_TLSLD16_LO: case R_PPC_GOT_TLSLD16_HI: case R_PPC_GOT_TLSLD16_HA: - htab->tlsld_got.refcount -= 1; - /* Fall thru */ - case R_PPC_GOT_TLSGD16: case R_PPC_GOT_TLSGD16_LO: case R_PPC_GOT_TLSGD16_HI: @@ -3979,7 +4057,8 @@ ppc_elf_gc_sweep_hook (bfd *abfd, return TRUE; } -/* Set htab->tls_get_addr and call the generic ELF tls_setup function. */ +/* Set plt output section type, htab->tls_get_addr, and call the + generic ELF tls_setup function. */ asection * ppc_elf_tls_setup (bfd *obfd, struct bfd_link_info *info) @@ -4000,6 +4079,43 @@ ppc_elf_tls_setup (bfd *obfd, struct bfd return _bfd_elf_tls_setup (obfd, info); } +/* Return TRUE iff REL is a branch reloc with a global symbol matching + HASH. */ + +static bfd_boolean +branch_reloc_hash_match (const bfd *ibfd, + const Elf_Internal_Rela *rel, + const struct elf_link_hash_entry *hash) +{ + Elf_Internal_Shdr *symtab_hdr = &elf_tdata (ibfd)->symtab_hdr; + enum elf_ppc_reloc_type r_type = ELF32_R_TYPE (rel->r_info); + unsigned int r_symndx = ELF32_R_SYM (rel->r_info); + + if (r_symndx >= symtab_hdr->sh_info + && (r_type == R_PPC_PLTREL24 + || r_type == R_PPC_LOCAL24PC + || r_type == R_PPC_REL14 + || r_type == R_PPC_REL14_BRTAKEN + || r_type == R_PPC_REL14_BRNTAKEN + || r_type == R_PPC_REL24 + || r_type == R_PPC_ADDR24 + || r_type == R_PPC_ADDR14 + || r_type == R_PPC_ADDR14_BRTAKEN + || r_type == R_PPC_ADDR14_BRNTAKEN)) + { + struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (ibfd); + struct elf_link_hash_entry *h; + + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + if (h == hash) + return TRUE; + } + return FALSE; +} + /* Run through all the TLS relocs looking for optimization opportunities. */ @@ -4010,187 +4126,204 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUT bfd *ibfd; asection *sec; struct ppc_elf_link_hash_table *htab; + int pass; - if (info->relocatable || info->shared) + if (info->relocatable || !info->executable) return TRUE; htab = ppc_elf_hash_table (info); - for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) - { - Elf_Internal_Sym *locsyms = NULL; - Elf_Internal_Shdr *symtab_hdr = &elf_tdata (ibfd)->symtab_hdr; - - for (sec = ibfd->sections; sec != NULL; sec = sec->next) - if (sec->has_tls_reloc && !bfd_is_abs_section (sec->output_section)) - { - Elf_Internal_Rela *relstart, *rel, *relend; - int expecting_tls_get_addr; + /* Make two passes through the relocs. First time check that tls + relocs involved in setting up a tls_get_addr call are indeed + followed by such a call. If they are not, exclude them from + the optimizations done on the second pass. */ + for (pass = 0; pass < 2; ++pass) + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + { + Elf_Internal_Sym *locsyms = NULL; + Elf_Internal_Shdr *symtab_hdr = &elf_tdata (ibfd)->symtab_hdr; - /* Read the relocations. */ - relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL, - info->keep_memory); - if (relstart == NULL) - return FALSE; + for (sec = ibfd->sections; sec != NULL; sec = sec->next) + if (sec->has_tls_reloc && !bfd_is_abs_section (sec->output_section)) + { + Elf_Internal_Rela *relstart, *rel, *relend; - expecting_tls_get_addr = 0; - relend = relstart + sec->reloc_count; - for (rel = relstart; rel < relend; rel++) - { - enum elf_ppc_reloc_type r_type; - unsigned long r_symndx; - struct elf_link_hash_entry *h = NULL; - char *tls_mask; - char tls_set, tls_clear; - bfd_boolean is_local; + /* Read the relocations. */ + relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL, + info->keep_memory); + if (relstart == NULL) + return FALSE; - r_symndx = ELF32_R_SYM (rel->r_info); - if (r_symndx >= symtab_hdr->sh_info) - { - struct elf_link_hash_entry **sym_hashes; + relend = relstart + sec->reloc_count; + for (rel = relstart; rel < relend; rel++) + { + enum elf_ppc_reloc_type r_type; + unsigned long r_symndx; + struct elf_link_hash_entry *h = NULL; + char *tls_mask; + char tls_set, tls_clear; + bfd_boolean is_local; + int expecting_tls_get_addr; + bfd_signed_vma *got_count; - sym_hashes = elf_sym_hashes (ibfd); - h = sym_hashes[r_symndx - symtab_hdr->sh_info]; - while (h->root.type == bfd_link_hash_indirect - || h->root.type == bfd_link_hash_warning) - h = (struct elf_link_hash_entry *) h->root.u.i.link; - } + r_symndx = ELF32_R_SYM (rel->r_info); + if (r_symndx >= symtab_hdr->sh_info) + { + struct elf_link_hash_entry **sym_hashes; - is_local = FALSE; - if (h == NULL - || !h->def_dynamic) - is_local = TRUE; + sym_hashes = elf_sym_hashes (ibfd); + h = sym_hashes[r_symndx - symtab_hdr->sh_info]; + while (h->root.type == bfd_link_hash_indirect + || h->root.type == bfd_link_hash_warning) + h = (struct elf_link_hash_entry *) h->root.u.i.link; + } - r_type = ELF32_R_TYPE (rel->r_info); - switch (r_type) - { - case R_PPC_GOT_TLSLD16: - case R_PPC_GOT_TLSLD16_LO: - case R_PPC_GOT_TLSLD16_HI: - case R_PPC_GOT_TLSLD16_HA: - /* These relocs should never be against a symbol - defined in a shared lib. Leave them alone if - that turns out to be the case. */ - expecting_tls_get_addr = 0; - htab->tlsld_got.refcount -= 1; - if (!is_local) - continue; + expecting_tls_get_addr = 0; + is_local = FALSE; + if (h == NULL + || !h->def_dynamic) + is_local = TRUE; - /* LD -> LE */ - tls_set = 0; - tls_clear = TLS_LD; - expecting_tls_get_addr = 1; - break; + r_type = ELF32_R_TYPE (rel->r_info); + switch (r_type) + { + case R_PPC_GOT_TLSLD16: + case R_PPC_GOT_TLSLD16_LO: + expecting_tls_get_addr = 1; + /* Fall thru */ + + case R_PPC_GOT_TLSLD16_HI: + case R_PPC_GOT_TLSLD16_HA: + /* These relocs should never be against a symbol + defined in a shared lib. Leave them alone if + that turns out to be the case. */ + if (!is_local) + continue; - case R_PPC_GOT_TLSGD16: - case R_PPC_GOT_TLSGD16_LO: - case R_PPC_GOT_TLSGD16_HI: - case R_PPC_GOT_TLSGD16_HA: - if (is_local) - /* GD -> LE */ + /* LD -> LE */ tls_set = 0; - else - /* GD -> IE */ - tls_set = TLS_TLS | TLS_TPRELGD; - tls_clear = TLS_GD; - expecting_tls_get_addr = 1; - break; + tls_clear = TLS_LD; + break; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Dec 18 19:02:26 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2F70B5A9; Thu, 18 Dec 2014 19:02:26 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1C29D2F00; Thu, 18 Dec 2014 19:02:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBIJ2Pf8024989; Thu, 18 Dec 2014 19:02:25 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBIJ2P0S024988; Thu, 18 Dec 2014 19:02:25 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201412181902.sBIJ2P0S024988@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Thu, 18 Dec 2014 19:02:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275915 - projects/building-blocks/rescue/rescue X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Dec 2014 19:02:26 -0000 Author: ngie Date: Thu Dec 18 19:02:25 2014 New Revision: 275915 URL: https://svnweb.freebsd.org/changeset/base/275915 Log: Conditionally build ex, routed, rtquery, and vi support into rescue, based on their respective MK_ flags Modified: projects/building-blocks/rescue/rescue/Makefile Modified: projects/building-blocks/rescue/rescue/Makefile ============================================================================== --- projects/building-blocks/rescue/rescue/Makefile Thu Dec 18 18:59:26 2014 (r275914) +++ projects/building-blocks/rescue/rescue/Makefile Thu Dec 18 19:02:25 2014 (r275915) @@ -97,7 +97,7 @@ CRUNCH_PROGS_sbin= badsect \ mount_msdosfs mount_nfs mount_nullfs \ mount_udf mount_unionfs newfs \ newfs_msdos nos-tun ping reboot \ - restore rcorder route routed rtquery rtsol savecore \ + restore rcorder route rtsol savecore \ spppcontrol swapon sysctl tunefs umount .if ${MK_ATM} != "no" @@ -111,6 +111,9 @@ CRUNCH_PROGS_sbin+= ping6 .if ${MK_IPFILTER} != "no" CRUNCH_PROGS_sbin+= ipf .endif +.if ${MK_ROUTED} != "no" +CRUNCH_PROGS_sbin+= routed rtquery +.endif .if ${MK_ZFS} != "no" CRUNCH_PROGS_sbin+= zfs CRUNCH_PROGS_sbin+= zpool @@ -199,8 +202,10 @@ CRUNCH_LIBS+= -lcrypto .endif CRUNCH_LIBS+= -lmd +.if ${MK_VI} != "no" CRUNCH_PROGS_usr.bin+= vi CRUNCH_ALIAS_vi= ex +.endif CRUNCH_PROGS_usr.bin+= id CRUNCH_ALIAS_id= groups whoami From owner-svn-src-projects@FreeBSD.ORG Thu Dec 18 21:22:24 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A9B96BB3; Thu, 18 Dec 2014 21:22:24 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8A6D627A7; Thu, 18 Dec 2014 21:22:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBILMOre092047; Thu, 18 Dec 2014 21:22:24 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBILMO6n092046; Thu, 18 Dec 2014 21:22:24 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201412182122.sBILMO6n092046@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Thu, 18 Dec 2014 21:22:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275919 - projects/building-blocks X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Dec 2014 21:22:24 -0000 Author: ngie Date: Thu Dec 18 21:22:23 2014 New Revision: 275919 URL: https://svnweb.freebsd.org/changeset/base/275919 Log: Parallelize bootstrap-tools Based on a patch submitted via -arch: https://lists.freebsd.org/pipermail/freebsd-arch/2014-December/016493.html MFC after: 1 week Submitted by: Jia-Shiun Li Sponsored by: EMC / Isilon Storage Division Modified: projects/building-blocks/Makefile.inc1 Modified: projects/building-blocks/Makefile.inc1 ============================================================================== --- projects/building-blocks/Makefile.inc1 Thu Dec 18 20:23:19 2014 (r275918) +++ projects/building-blocks/Makefile.inc1 Thu Dec 18 21:22:23 2014 (r275919) @@ -1235,6 +1235,8 @@ legacy: # # bootstrap-tools: Build tools needed for compatibility # +_bt= _bootstrap-tools + .if ${MK_GAMES} != "no" _strfile= games/fortune/strfile .endif @@ -1246,6 +1248,8 @@ _gperf= gnu/usr.bin/gperf .if ${MK_GROFF} != "no" _groff= gnu/usr.bin/groff/src/libs \ gnu/usr.bin/groff/src/roff/groff + +${_bt}-gnu/usr.bin/groff/src/roff/groff: ${_bt}-gnu/usr.bin/groff/src/libs .endif .if ${MK_VT} != "no" @@ -1259,11 +1263,15 @@ _sed= usr.bin/sed .if ${BOOTSTRAPPING} < 1000002 _m4= lib/libohash \ usr.bin/m4 + +${_bt}-usr.bin/m4: ${_bt}-lib/libohash .endif .if ${BOOTSTRAPPING} < 1000013 _yacc= lib/liby \ usr.bin/yacc + +${_bt}-usr.bin/yacc: ${_bt}-lib/liby .endif .if ${BOOTSTRAPPING} < 1000014 @@ -1273,6 +1281,8 @@ _crunch= usr.sbin/crunch .if ${BOOTSTRAPPING} < 1000026 _nmtree= lib/libnetbsd \ usr.sbin/nmtree + +${_bt}-usr.sbin/nmtree: ${_bt}-lib/libnetbsd .endif .if ${BOOTSTRAPPING} < 1000027 @@ -1299,6 +1309,9 @@ _clang_tblgen= \ lib/clang/libllvmtablegen \ usr.bin/clang/tblgen \ usr.bin/clang/clang-tblgen + +${_bt}-usr.bin/clang/clang-tblgen: ${_bt}-lib/clang/libllvmtablegen ${_bt}-lib/clang/libllvmsupport +${_bt}-usr.bin/clang/tblgen: ${_bt}-lib/clang/libllvmtablegen ${_bt}-lib/clang/libllvmsupport .endif # dtrace tools are required for older bootstrap env and cross-build @@ -1324,12 +1337,16 @@ _kerberos5_bootstrap_tools= \ kerberos5/tools/asn1_compile \ kerberos5/tools/slc \ usr.bin/compile_et + +${_bt}-kerberos5/tools/slc: ${_bt}-kerberos5/lib/libroken +${_bt}-kerberos5/tools/asn1_compile: ${_bt}-kerberos5/lib/libroken .endif +bootstrap-tools: .PHONY + # Please document (add comment) why something is in 'bootstrap-tools'. # Try to bound the building of the bootstrap-tool to just the # FreeBSD versions that need the tool built at this stage of the build. -bootstrap-tools: .MAKE .for _tool in \ ${_clang_tblgen} \ ${_kerberos5_bootstrap_tools} \ @@ -1354,12 +1371,15 @@ bootstrap-tools: .MAKE ${_crunch} \ ${_nmtree} \ ${_vtfontcvt} +${_bt}-${_tool}: .PHONY .MAKE ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ cd ${.CURDIR}/${_tool} && \ ${MAKE} DIRPRFX=${_tool}/ obj && \ ${MAKE} DIRPRFX=${_tool}/ depend && \ ${MAKE} DIRPRFX=${_tool}/ all && \ ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX}/legacy install + +bootstrap-tools: ${_bt}-${_tool} .endfor # From owner-svn-src-projects@FreeBSD.ORG Fri Dec 19 00:34:11 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D80D5479; Fri, 19 Dec 2014 00:34:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C4D702605; Fri, 19 Dec 2014 00:34:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBJ0YBkV085912; Fri, 19 Dec 2014 00:34:11 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBJ0YBFl085911; Fri, 19 Dec 2014 00:34:11 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201412190034.sBJ0YBFl085911@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Fri, 19 Dec 2014 00:34:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275924 - projects/building-blocks X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Dec 2014 00:34:11 -0000 Author: ngie Date: Fri Dec 19 00:34:10 2014 New Revision: 275924 URL: https://svnweb.freebsd.org/changeset/base/275924 Log: Put all of gnu/usr.bin/groff back Forgot about those pesky definitions files.. Modified: projects/building-blocks/Makefile.inc1 Modified: projects/building-blocks/Makefile.inc1 ============================================================================== --- projects/building-blocks/Makefile.inc1 Fri Dec 19 00:20:29 2014 (r275923) +++ projects/building-blocks/Makefile.inc1 Fri Dec 19 00:34:10 2014 (r275924) @@ -1246,10 +1246,7 @@ _gperf= gnu/usr.bin/gperf .endif .if ${MK_GROFF} != "no" -_groff= gnu/usr.bin/groff/src/libs \ - gnu/usr.bin/groff/src/roff/groff - -${_bt}-gnu/usr.bin/groff/src/roff/groff: ${_bt}-gnu/usr.bin/groff/src/libs +_groff= gnu/usr.bin/groff .endif .if ${MK_VT} != "no"