From owner-svn-src-projects@freebsd.org Wed Aug 10 02:44:48 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 59776BB40F9 for ; Wed, 10 Aug 2016 02:44:48 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 0CC1218D2; Wed, 10 Aug 2016 02:44:47 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7A2ilJR030606; Wed, 10 Aug 2016 02:44:47 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7A2ilPh030605; Wed, 10 Aug 2016 02:44:47 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201608100244.u7A2ilPh030605@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Wed, 10 Aug 2016 02:44:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r303899 - projects/contrib-netbsd-update-12 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.22 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, 10 Aug 2016 02:44:48 -0000 Author: ngie Date: Wed Aug 10 02:44:46 2016 New Revision: 303899 URL: https://svnweb.freebsd.org/changeset/base/303899 Log: Copy ^/head to ^/projects/contrib-netbsd-update-12 for 12.0-CURRENT and 11.0-STABLE Added: - copied from r303898, head/ Directory Properties: projects/contrib-netbsd-update-12/ (props changed) From owner-svn-src-projects@freebsd.org Wed Aug 10 14:31:34 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4313EBB4C14 for ; Wed, 10 Aug 2016 14:31:34 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 029021E71; Wed, 10 Aug 2016 14:31:33 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7AEVXPY096944; Wed, 10 Aug 2016 14:31:33 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7AEVW88096940; Wed, 10 Aug 2016 14:31:32 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201608101431.u7AEVW88096940@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Wed, 10 Aug 2016 14:31:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r303918 - in projects/hps_head: share/man/man9 sys/kern sys/sys 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.22 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, 10 Aug 2016 14:31:34 -0000 Author: hselasky Date: Wed Aug 10 14:31:32 2016 New Revision: 303918 URL: https://svnweb.freebsd.org/changeset/base/303918 Log: MFC r303425: Extract the calculation of the callout fire time into the new function callout_when(9). See the man page update for the description of the intended use. Tested by: pho Reviewed by: jhb, bjk (man page updates) X-Differential revision: https://reviews.freebsd.org/D7137 Modified: projects/hps_head/share/man/man9/Makefile projects/hps_head/share/man/man9/timeout.9 projects/hps_head/sys/kern/kern_timeout.c projects/hps_head/sys/sys/callout.h Modified: projects/hps_head/share/man/man9/Makefile ============================================================================== --- projects/hps_head/share/man/man9/Makefile Wed Aug 10 14:00:07 2016 (r303917) +++ projects/hps_head/share/man/man9/Makefile Wed Aug 10 14:31:32 2016 (r303918) @@ -1766,6 +1766,7 @@ MLINKS+=timeout.9 callout.9 \ timeout.9 callout_schedule_sbt_curcpu.9 \ timeout.9 callout_schedule_sbt_on.9 \ timeout.9 callout_stop.9 \ + timeout.9 callout_when.9 \ timeout.9 untimeout.9 MLINKS+=ucred.9 cred_update_thread.9 \ ucred.9 crcopy.9 \ Modified: projects/hps_head/share/man/man9/timeout.9 ============================================================================== --- projects/hps_head/share/man/man9/timeout.9 Wed Aug 10 14:00:07 2016 (r303917) +++ projects/hps_head/share/man/man9/timeout.9 Wed Aug 10 14:31:32 2016 (r303918) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 13, 2015 +.Dd July 27, 2016 .Dt TIMEOUT 9 .Os .Sh NAME @@ -57,6 +57,7 @@ .Nm callout_schedule_sbt_curcpu , .Nm callout_schedule_sbt_on , .Nm callout_stop , +.Nm callout_when , .Nm timeout , .Nm untimeout .Nd execute a function after a specified length of time @@ -127,6 +128,8 @@ struct callout_handle handle = CALLOUT_H "sbintime_t pr" "int cpu" "int flags" .Ft int .Fn callout_stop "struct callout *c" +.Ft void +.Fn callout_when "sbintime_t sbt" "sbintime_t precision" "int flags" "sbintime_t *sbt_res" "sbintime_t *precision_res" .Ft struct callout_handle .Fn timeout "timeout_t *func" "void *arg" "int ticks" .Ft void @@ -417,6 +420,26 @@ or this value is used as the length of t Smaller values .Pq which result in larger time intervals allow the callout subsystem to aggregate more events in one timer interrupt. +.It Dv C_PRECALC +The +.Fa sbt +argument specifies the absolute time at which the callout should be run, +and the +.Fa pr +argument specifies the requested precision, which will not be +adjusted during the scheduling process. +The +.Fa sbt +and +.Fa pr +values should be calculated by an earlier call to +.Fn callout_when +which uses the user-supplied +.Fa sbt , +.Fa pr , +and +.Fa flags +values. .It Dv C_HARDCLOCK Align the timeouts to .Fn hardclock @@ -641,6 +664,39 @@ If this function returns a value differe it is safe to free the callout structure pointed to by the .Fa c argument right away. +.Pp +The +.Fn callout_when +function may be used to pre-calculate the absolute time at which the +timeout should be run and the precision of the scheduled run time +according to the required time +.Fa sbt , +precision +.Fa precision , +and additional adjustments requested by the +.Fa flags +argument. +Flags accepted by the +.Fn callout_when +function are the same as flags for the +.Fn callout_reset +function. +The resulting time is assigned to the variable pointed to by the +.Fa sbt_res +argument, and the resulting precision is assigned to +.Fa *precision_res . +When passing the results to +.Fa callout_reset , +add the +.Va C_PRECALC +flag to +.Fa flags , +to avoid incorrect re-adjustment. +The function is intended for situations where precise time of the callout +run should be known in advance, since +trying to read this time from the callout structure itself after a +.Fn callout_reset +call is racy. .Sh CALLOUT FUNCTION RETURN VALUES .Bl -tag -width ".Dv CALLOUT_RET_CANCELLED" .It CALLOUT_RET_DRAINING Modified: projects/hps_head/sys/kern/kern_timeout.c ============================================================================== --- projects/hps_head/sys/kern/kern_timeout.c Wed Aug 10 14:00:07 2016 (r303917) +++ projects/hps_head/sys/kern/kern_timeout.c Wed Aug 10 14:31:32 2016 (r303918) @@ -1133,6 +1133,56 @@ callout_restart_async(struct callout *c, return (retval); } +void +callout_when(sbintime_t sbt, sbintime_t precision, int flags, + sbintime_t *res, sbintime_t *prec_res) +{ + sbintime_t to_sbt, to_pr; + + if ((flags & (C_ABSOLUTE | C_PRECALC)) != 0) { + *res = sbt; + *prec_res = precision; + return; + } + if ((flags & C_HARDCLOCK) != 0 && sbt < tick_sbt) + sbt = tick_sbt; + if ((flags & C_HARDCLOCK) != 0 || +#ifdef NO_EVENTTIMERS + sbt >= sbt_timethreshold) { + to_sbt = getsbinuptime(); + + /* Add safety belt for the case of hz > 1000. */ + to_sbt += tc_tick_sbt - tick_sbt; +#else + sbt >= sbt_tickthreshold) { + /* + * Obtain the time of the last hardclock() call on + * this CPU directly from the kern_clocksource.c. + * This value is per-CPU, but it is equal for all + * active ones. + */ +#ifdef __LP64__ + to_sbt = DPCPU_GET(hardclocktime); +#else + spinlock_enter(); + to_sbt = DPCPU_GET(hardclocktime); + spinlock_exit(); +#endif +#endif + if ((flags & C_HARDCLOCK) == 0) + to_sbt += tick_sbt; + } else + to_sbt = sbinuptime(); + if (SBT_MAX - to_sbt < sbt) + to_sbt = SBT_MAX; + else + to_sbt += sbt; + *res = to_sbt; + to_pr = ((C_PRELGET(flags) < 0) ? sbt >> tc_precexp : + sbt >> C_PRELGET(flags)); + *prec_res = to_pr > precision ? to_pr : precision; +} + /* * New interface; clients allocate their own callout structures. * @@ -1150,7 +1200,7 @@ callout_restart_async(struct callout *c, * callout_deactivate() - marks the callout as having been serviced */ int -callout_reset_sbt_on(struct callout *c, sbintime_t sbt, sbintime_t precision, +callout_reset_sbt_on(struct callout *c, sbintime_t sbt, sbintime_t prec, callout_func_t *ftn, void *arg, int cpu, int flags) { struct callout_args coa; @@ -1158,54 +1208,11 @@ callout_reset_sbt_on(struct callout *c, /* store arguments for callout add function */ coa.func = ftn; coa.arg = arg; - coa.precision = precision; coa.flags = flags; coa.cpu = cpu; - /* compute the rest of the arguments needed */ - if (coa.flags & C_ABSOLUTE) { - coa.time = sbt; - } else { - sbintime_t pr; - - if ((coa.flags & C_HARDCLOCK) && (sbt < tick_sbt)) - sbt = tick_sbt; - if ((coa.flags & C_HARDCLOCK) || -#ifdef NO_EVENTTIMERS - sbt >= sbt_timethreshold) { - coa.time = getsbinuptime(); - - /* Add safety belt for the case of hz > 1000. */ - coa.time += tc_tick_sbt - tick_sbt; -#else - sbt >= sbt_tickthreshold) { - /* - * Obtain the time of the last hardclock() call on - * this CPU directly from the kern_clocksource.c. - * This value is per-CPU, but it is equal for all - * active ones. - */ -#ifdef __LP64__ - coa.time = DPCPU_GET(hardclocktime); -#else - spinlock_enter(); - coa.time = DPCPU_GET(hardclocktime); - spinlock_exit(); -#endif -#endif - if ((coa.flags & C_HARDCLOCK) == 0) - coa.time += tick_sbt; - } else - coa.time = sbinuptime(); - if (SBT_MAX - coa.time < sbt) - coa.time = SBT_MAX; - else - coa.time += sbt; - pr = ((C_PRELGET(coa.flags) < 0) ? sbt >> tc_precexp : - sbt >> C_PRELGET(coa.flags)); - if (pr > coa.precision) - coa.precision = pr; - } + /* compute trigger time for callout */ + callout_when(sbt, prec, flags, &coa.time, &coa.precision); /* get callback started, if any */ return (callout_restart_async(c, &coa, NULL)); Modified: projects/hps_head/sys/sys/callout.h ============================================================================== --- projects/hps_head/sys/sys/callout.h Wed Aug 10 14:00:07 2016 (r303917) +++ projects/hps_head/sys/sys/callout.h Wed Aug 10 14:31:32 2016 (r303918) @@ -64,6 +64,7 @@ #define C_PRELGET(x) (int)((((x) >> 1) & C_PRELRANGE) - 1) #define C_HARDCLOCK 0x0100 /* align to hardclock() calls */ #define C_ABSOLUTE 0x0200 /* event time is absolute. */ +#define C_PRECALC 0x0400 /* event time is pre-calculated. */ struct callout_handle { struct callout *callout; @@ -113,6 +114,7 @@ int callout_schedule_on(struct callout * #define callout_schedule_curcpu(c, on_tick) \ callout_schedule_on((c), (on_tick), PCPU_GET(cpuid)) int callout_stop(struct callout *); +void callout_when(sbintime_t, sbintime_t, int, sbintime_t *, sbintime_t *); void callout_process(sbintime_t now); #endif From owner-svn-src-projects@freebsd.org Wed Aug 10 17:11:14 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2CAECBB5A22 for ; Wed, 10 Aug 2016 17:11:14 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 ECEC316B4; Wed, 10 Aug 2016 17:11:13 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7AHBDbB055290; Wed, 10 Aug 2016 17:11:13 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7AHBC9q055280; Wed, 10 Aug 2016 17:11:12 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201608101711.u7AHBC9q055280@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Wed, 10 Aug 2016 17:11:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r303926 - in projects/hps_head/sys: compat/linuxkpi/common/src ddb kern sys 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.22 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, 10 Aug 2016 17:11:14 -0000 Author: hselasky Date: Wed Aug 10 17:11:12 2016 New Revision: 303926 URL: https://svnweb.freebsd.org/changeset/base/303926 Log: MFC r303426: Rewrite subr_sleepqueue.c use of callouts to not depend on the specifics of callout KPI. Diff reduce with ^head . Differential revision: https://reviews.freebsd.org/D7137 Modified: projects/hps_head/sys/compat/linuxkpi/common/src/linux_compat.c projects/hps_head/sys/ddb/db_ps.c projects/hps_head/sys/kern/init_main.c projects/hps_head/sys/kern/kern_condvar.c projects/hps_head/sys/kern/kern_lock.c projects/hps_head/sys/kern/kern_synch.c projects/hps_head/sys/kern/kern_thread.c projects/hps_head/sys/kern/subr_sleepqueue.c projects/hps_head/sys/sys/proc.h Modified: projects/hps_head/sys/compat/linuxkpi/common/src/linux_compat.c ============================================================================== --- projects/hps_head/sys/compat/linuxkpi/common/src/linux_compat.c Wed Aug 10 16:31:15 2016 (r303925) +++ projects/hps_head/sys/compat/linuxkpi/common/src/linux_compat.c Wed Aug 10 17:11:12 2016 (r303926) @@ -1142,9 +1142,7 @@ linux_wait_for_timeout_common(struct com if (c->done) break; sleepq_add(c, NULL, "completion", flags, 0); - sleepq_release(c); sleepq_set_timeout(c, linux_timer_jiffies_until(end)); - sleepq_lock(c); if (flags & SLEEPQ_INTERRUPTIBLE) ret = sleepq_timedwait_sig(c, 0); else Modified: projects/hps_head/sys/ddb/db_ps.c ============================================================================== --- projects/hps_head/sys/ddb/db_ps.c Wed Aug 10 16:31:15 2016 (r303925) +++ projects/hps_head/sys/ddb/db_ps.c Wed Aug 10 17:11:12 2016 (r303926) @@ -375,8 +375,13 @@ DB_SHOW_COMMAND(thread, db_show_thread) db_printf(" lock: %s turnstile: %p\n", td->td_lockname, td->td_blocked); if (TD_ON_SLEEPQ(td)) - db_printf(" wmesg: %s wchan: %p\n", td->td_wmesg, - td->td_wchan); + db_printf( + " wmesg: %s wchan: %p sleeptimo %lx. %jx (curr %lx. %jx)\n", + td->td_wmesg, td->td_wchan, + (long)sbttobt(td->td_sleeptimo).sec, + (uintmax_t)sbttobt(td->td_sleeptimo).frac, + (long)sbttobt(sbinuptime()).sec, + (uintmax_t)sbttobt(sbinuptime()).frac); db_printf(" priority: %d\n", td->td_priority); db_printf(" container lock: %s (%p)\n", lock->lo_name, lock); if (td->td_swvoltick != 0) { Modified: projects/hps_head/sys/kern/init_main.c ============================================================================== --- projects/hps_head/sys/kern/init_main.c Wed Aug 10 16:31:15 2016 (r303925) +++ projects/hps_head/sys/kern/init_main.c Wed Aug 10 17:11:12 2016 (r303926) @@ -514,8 +514,7 @@ proc0_init(void *dummy __unused) callout_init_mtx(&p->p_itcallout, &p->p_mtx, 0); callout_init_mtx(&p->p_limco, &p->p_mtx, 0); - mtx_init(&td->td_slpmutex, "td_slpmutex", NULL, MTX_SPIN); - callout_init_mtx(&td->td_slpcallout, &td->td_slpmutex, 0); + callout_init(&td->td_slpcallout, 1); /* Create credentials. */ newcred = crget(); Modified: projects/hps_head/sys/kern/kern_condvar.c ============================================================================== --- projects/hps_head/sys/kern/kern_condvar.c Wed Aug 10 16:31:15 2016 (r303925) +++ projects/hps_head/sys/kern/kern_condvar.c Wed Aug 10 17:11:12 2016 (r303926) @@ -298,13 +298,15 @@ _cv_timedwait_sbt(struct cv *cvp, struct DROP_GIANT(); sleepq_add(cvp, lock, cvp->cv_description, SLEEPQ_CONDVAR, 0); - sleepq_release(cvp); sleepq_set_timeout_sbt(cvp, sbt, pr, flags); if (lock != &Giant.lock_object) { + if (class->lc_flags & LC_SLEEPABLE) + sleepq_release(cvp); WITNESS_SAVE(lock, lock_witness); lock_state = class->lc_unlock(lock); + if (class->lc_flags & LC_SLEEPABLE) + sleepq_lock(cvp); } - sleepq_lock(cvp); rval = sleepq_timedwait(cvp, 0); #ifdef KTRACE @@ -359,13 +361,15 @@ _cv_timedwait_sig_sbt(struct cv *cvp, st sleepq_add(cvp, lock, cvp->cv_description, SLEEPQ_CONDVAR | SLEEPQ_INTERRUPTIBLE, 0); - sleepq_release(cvp); sleepq_set_timeout_sbt(cvp, sbt, pr, flags); if (lock != &Giant.lock_object) { + if (class->lc_flags & LC_SLEEPABLE) + sleepq_release(cvp); WITNESS_SAVE(lock, lock_witness); lock_state = class->lc_unlock(lock); + if (class->lc_flags & LC_SLEEPABLE) + sleepq_lock(cvp); } - sleepq_lock(cvp); rval = sleepq_timedwait_sig(cvp, 0); #ifdef KTRACE Modified: projects/hps_head/sys/kern/kern_lock.c ============================================================================== --- projects/hps_head/sys/kern/kern_lock.c Wed Aug 10 16:31:15 2016 (r303925) +++ projects/hps_head/sys/kern/kern_lock.c Wed Aug 10 17:11:12 2016 (r303926) @@ -206,11 +206,9 @@ sleeplk(struct lock *lk, u_int flags, st GIANT_SAVE(); sleepq_add(&lk->lock_object, NULL, wmesg, SLEEPQ_LK | (catch ? SLEEPQ_INTERRUPTIBLE : 0), queue); - if ((flags & LK_TIMELOCK) && timo) { - sleepq_release(&lk->lock_object); + if ((flags & LK_TIMELOCK) && timo) sleepq_set_timeout(&lk->lock_object, timo); - sleepq_lock(&lk->lock_object); - } + /* * Decisional switch for real sleeping. */ Modified: projects/hps_head/sys/kern/kern_synch.c ============================================================================== --- projects/hps_head/sys/kern/kern_synch.c Wed Aug 10 16:31:15 2016 (r303925) +++ projects/hps_head/sys/kern/kern_synch.c Wed Aug 10 17:11:12 2016 (r303926) @@ -211,16 +211,12 @@ _sleep(void *ident, struct lock_object * * return from cursig(). */ sleepq_add(ident, lock, wmesg, sleepq_flags, 0); + if (sbt != 0) + sleepq_set_timeout_sbt(ident, sbt, pr, flags); if (lock != NULL && class->lc_flags & LC_SLEEPABLE) { sleepq_release(ident); WITNESS_SAVE(lock, lock_witness); lock_state = class->lc_unlock(lock); - if (sbt != 0) - sleepq_set_timeout_sbt(ident, sbt, pr, flags); - sleepq_lock(ident); - } else if (sbt != 0) { - sleepq_release(ident); - sleepq_set_timeout_sbt(ident, sbt, pr, flags); sleepq_lock(ident); } if (sbt != 0 && catch) @@ -276,11 +272,8 @@ msleep_spin_sbt(void *ident, struct mtx * We put ourselves on the sleep queue and start our timeout. */ sleepq_add(ident, &mtx->lock_object, wmesg, SLEEPQ_SLEEP, 0); - if (sbt != 0) { - sleepq_release(ident); + if (sbt != 0) sleepq_set_timeout_sbt(ident, sbt, pr, flags); - sleepq_lock(ident); - } /* * Can't call ktrace with any spin locks held so it can lock the Modified: projects/hps_head/sys/kern/kern_thread.c ============================================================================== --- projects/hps_head/sys/kern/kern_thread.c Wed Aug 10 16:31:15 2016 (r303925) +++ projects/hps_head/sys/kern/kern_thread.c Wed Aug 10 17:11:12 2016 (r303926) @@ -154,9 +154,6 @@ thread_ctor(void *mem, int size, void *a audit_thread_alloc(td); #endif umtx_thread_alloc(td); - - mtx_init(&td->td_slpmutex, "td_slpmutex", NULL, MTX_SPIN); - callout_init_mtx(&td->td_slpcallout, &td->td_slpmutex, 0); return (0); } @@ -170,10 +167,6 @@ thread_dtor(void *mem, int size, void *a td = (struct thread *)mem; - /* make sure to drain any use of the "td->td_slpcallout" */ - callout_drain(&td->td_slpcallout); - mtx_destroy(&td->td_slpmutex); - #ifdef INVARIANTS /* Verify that this thread is in a safe state to free. */ switch (td->td_state) { @@ -325,7 +318,7 @@ thread_reap(void) /* * Don't even bother to lock if none at this instant, - * we really don't care about the next instant.. + * we really don't care about the next instant. */ if (!TAILQ_EMPTY(&zombie_threads)) { mtx_lock_spin(&zombie_lock); @@ -390,6 +383,7 @@ thread_free(struct thread *td) if (td->td_kstack != 0) vm_thread_dispose(td); vm_domain_policy_cleanup(&td->td_vm_dom_policy); + callout_drain(&td->td_slpcallout); uma_zfree(thread_zone, td); } @@ -587,6 +581,7 @@ thread_wait(struct proc *p) td->td_cpuset = NULL; cpu_thread_clean(td); thread_cow_free(td); + callout_drain(&td->td_slpcallout); thread_reap(); /* check for zombie threads etc. */ } @@ -612,6 +607,7 @@ thread_link(struct thread *td, struct pr LIST_INIT(&td->td_lprof[0]); LIST_INIT(&td->td_lprof[1]); sigqueue_init(&td->td_sigqueue, p); + callout_init(&td->td_slpcallout, 1); TAILQ_INSERT_TAIL(&p->p_threads, td, td_plist); p->p_numthreads++; } Modified: projects/hps_head/sys/kern/subr_sleepqueue.c ============================================================================== --- projects/hps_head/sys/kern/subr_sleepqueue.c Wed Aug 10 16:31:15 2016 (r303925) +++ projects/hps_head/sys/kern/subr_sleepqueue.c Wed Aug 10 17:11:12 2016 (r303926) @@ -155,8 +155,7 @@ static uma_zone_t sleepq_zone; */ static int sleepq_catch_signals(void *wchan, int pri); static int sleepq_check_signals(void); -static int sleepq_check_timeout(struct thread *); -static void sleepq_stop_timeout(struct thread *); +static int sleepq_check_timeout(void); #ifdef INVARIANTS static void sleepq_dtor(void *mem, int size, void *arg); #endif @@ -377,16 +376,26 @@ void sleepq_set_timeout_sbt(void *wchan, sbintime_t sbt, sbintime_t pr, int flags) { + struct sleepqueue_chain *sc; struct thread *td; + sbintime_t pr1; td = curthread; - - mtx_lock_spin(&td->td_slpmutex); + sc = SC_LOOKUP(wchan); + mtx_assert(&sc->sc_lock, MA_OWNED); + MPASS(TD_ON_SLEEPQ(td)); + MPASS(td->td_sleepqueue == NULL); + MPASS(wchan != NULL); if (cold) panic("timed sleep before timers are working"); - callout_reset_sbt_on(&td->td_slpcallout, sbt, pr, - sleepq_timeout, td, PCPU_GET(cpuid), flags | C_DIRECT_EXEC); - mtx_unlock_spin(&td->td_slpmutex); + KASSERT(td->td_sleeptimo == 0, ("td %d %p td_sleeptimo %jx", + td->td_tid, td, (uintmax_t)td->td_sleeptimo)); + thread_lock(td); + callout_when(sbt, pr, flags, &td->td_sleeptimo, &pr1); + thread_unlock(td); + callout_reset_sbt_on(&td->td_slpcallout, td->td_sleeptimo, pr1, + sleepq_timeout, td, PCPU_GET(cpuid), flags | C_PRECALC | + C_DIRECT_EXEC); } /* @@ -571,29 +580,39 @@ sleepq_switch(void *wchan, int pri) * Check to see if we timed out. */ static int -sleepq_check_timeout(struct thread *td) +sleepq_check_timeout(void) { + struct thread *td; + int res; + + td = curthread; THREAD_LOCK_ASSERT(td, MA_OWNED); /* - * If TDF_TIMEOUT is set, we timed out. + * If TDF_TIMEOUT is set, we timed out. But recheck + * td_sleeptimo anyway. */ - if (td->td_flags & TDF_TIMEOUT) { - td->td_flags &= ~TDF_TIMEOUT; - return (EWOULDBLOCK); + res = 0; + if (td->td_sleeptimo != 0) { + if (td->td_sleeptimo <= sbinuptime()) + res = EWOULDBLOCK; + td->td_sleeptimo = 0; } - return (0); -} - -/* - * Atomically stop the timeout by using a mutex. - */ -static void -sleepq_stop_timeout(struct thread *td) -{ - mtx_lock_spin(&td->td_slpmutex); - callout_stop(&td->td_slpcallout); - mtx_unlock_spin(&td->td_slpmutex); + if (td->td_flags & TDF_TIMEOUT) + td->td_flags &= ~TDF_TIMEOUT; + else + /* + * We ignore the situation where timeout subsystem was + * unable to stop our callout. The struct thread is + * type-stable, the callout will use the correct + * memory when running. The checks of the + * td_sleeptimo value in this function and in + * sleepq_timeout() ensure that the thread does not + * get spurious wakeups, even if the callout was reset + * or thread reused. + */ + callout_stop(&td->td_slpcallout); + return (res); } /* @@ -666,11 +685,9 @@ sleepq_timedwait(void *wchan, int pri) MPASS(!(td->td_flags & TDF_SINTR)); thread_lock(td); sleepq_switch(wchan, pri); - rval = sleepq_check_timeout(td); + rval = sleepq_check_timeout(); thread_unlock(td); - sleepq_stop_timeout(td); - return (rval); } @@ -681,18 +698,12 @@ sleepq_timedwait(void *wchan, int pri) int sleepq_timedwait_sig(void *wchan, int pri) { - struct thread *td; int rcatch, rvalt, rvals; - td = curthread; - rcatch = sleepq_catch_signals(wchan, pri); - rvalt = sleepq_check_timeout(td); + rvalt = sleepq_check_timeout(); rvals = sleepq_check_signals(); - thread_unlock(td); - - sleepq_stop_timeout(td); - + thread_unlock(curthread); if (rcatch) return (rcatch); if (rvals) @@ -898,49 +909,45 @@ sleepq_broadcast(void *wchan, int flags, static void sleepq_timeout(void *arg) { - struct thread *td = arg; - int wakeup_swapper = 0; + struct sleepqueue_chain *sc; + struct sleepqueue *sq; + struct thread *td; + void *wchan; + int wakeup_swapper; + td = arg; + wakeup_swapper = 0; CTR3(KTR_PROC, "sleepq_timeout: thread %p (pid %ld, %s)", (void *)td, (long)td->td_proc->p_pid, (void *)td->td_name); - /* Handle the three cases which can happen */ - thread_lock(td); - if (TD_ON_SLEEPQ(td)) { - if (TD_IS_SLEEPING(td)) { - struct sleepqueue_chain *sc; - struct sleepqueue *sq; - void *wchan; - /* - * Case I - thread is asleep and needs to be - * awoken: - */ - wchan = td->td_wchan; - sc = SC_LOOKUP(wchan); - THREAD_LOCKPTR_ASSERT(td, &sc->sc_lock); - sq = sleepq_lookup(wchan); - MPASS(sq != NULL); - td->td_flags |= TDF_TIMEOUT; - wakeup_swapper = sleepq_resume_thread(sq, td, 0); - } else { - /* - * Case II - cancel going to sleep by setting - * the timeout flag because the target thread - * is not asleep yet. It can be on another CPU - * in between sleepq_add() and one of the - * sleepq_*wait*() routines or it can be in - * sleepq_catch_signals(). - */ - td->td_flags |= TDF_TIMEOUT; - } - } else { + if (td->td_sleeptimo > sbinuptime() || td->td_sleeptimo == 0) { /* - * Case III - thread is already woken up by a wakeup - * call and should not timeout. Nothing to do! + * The thread does not want a timeout (yet). */ + } else if (TD_IS_SLEEPING(td) && TD_ON_SLEEPQ(td)) { + /* + * See if the thread is asleep and get the wait + * channel if it is. + */ + wchan = td->td_wchan; + sc = SC_LOOKUP(wchan); + THREAD_LOCKPTR_ASSERT(td, &sc->sc_lock); + sq = sleepq_lookup(wchan); + MPASS(sq != NULL); + td->td_flags |= TDF_TIMEOUT; + wakeup_swapper = sleepq_resume_thread(sq, td, 0); + } else if (TD_ON_SLEEPQ(td)) { + /* + * If the thread is on the SLEEPQ but isn't sleeping + * yet, it can either be on another CPU in between + * sleepq_add() and one of the sleepq_*wait*() + * routines or it can be in sleepq_catch_signals(). + */ + td->td_flags |= TDF_TIMEOUT; } + thread_unlock(td); if (wakeup_swapper) kick_proc0(); Modified: projects/hps_head/sys/sys/proc.h ============================================================================== --- projects/hps_head/sys/sys/proc.h Wed Aug 10 16:31:15 2016 (r303925) +++ projects/hps_head/sys/sys/proc.h Wed Aug 10 17:11:12 2016 (r303926) @@ -282,6 +282,7 @@ struct thread { int td_no_sleeping; /* (k) Sleeping disabled count. */ int td_dom_rr_idx; /* (k) RR Numa domain selection. */ void *td_su; /* (k) FFS SU private */ + sbintime_t td_sleeptimo; /* (t) Sleep timeout. */ #define td_endzero td_sigmask /* Copied during fork1() or create_thread(). */ @@ -319,7 +320,6 @@ struct thread { #define td_retval td_uretoff.tdu_retval u_int td_cowgen; /* (k) Generation of COW pointers. */ struct callout td_slpcallout; /* (h) Callout for sleep. */ - struct mtx td_slpmutex; /* (h) Mutex for sleep callout */ struct trapframe *td_frame; /* (k) */ struct vm_object *td_kstack_obj;/* (a) Kstack object. */ vm_offset_t td_kstack; /* (a) Kernel VA of kstack. */ From owner-svn-src-projects@freebsd.org Wed Aug 10 18:53:12 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 25DA8BB5D5B for ; Wed, 10 Aug 2016 18:53:12 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 CCCAA1CB6; Wed, 10 Aug 2016 18:53:11 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7AIrBLE094245; Wed, 10 Aug 2016 18:53:11 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7AIrB9X094244; Wed, 10 Aug 2016 18:53:11 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201608101853.u7AIrB9X094244@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Wed, 10 Aug 2016 18:53:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r303938 - projects/hps_head/sys/kern 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.22 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, 10 Aug 2016 18:53:12 -0000 Author: hselasky Date: Wed Aug 10 18:53:10 2016 New Revision: 303938 URL: https://svnweb.freebsd.org/changeset/base/303938 Log: Solve a LOR between the callout mutex and the sleepqueue mutex after recent changes. This is solved by making a custom msleep_spin() implementation where the sleepqueue mutex is locked first. Modified: projects/hps_head/sys/kern/kern_timeout.c Modified: projects/hps_head/sys/kern/kern_timeout.c ============================================================================== --- projects/hps_head/sys/kern/kern_timeout.c Wed Aug 10 18:45:26 2016 (r303937) +++ projects/hps_head/sys/kern/kern_timeout.c Wed Aug 10 18:53:10 2016 (r303938) @@ -1266,22 +1266,36 @@ callout_drain(struct callout *c) retval = callout_async_drain(c, &callout_drain_function); if (retval == CALLOUT_RET_DRAINING) { + void *ident = &callout_drain_function; struct callout_cpu *cc; int direct; + int busy; CTR3(KTR_CALLOUT, "need to drain %p func %p arg %p", c, c->c_func, c->c_arg); - cc = callout_lock(c); - direct = ((c->c_flags & CALLOUT_DIRECT) != 0); - - /* Wait for drain to complete */ - while (cc_exec_curr(cc, direct) == c) { - msleep_spin(&callout_drain_function, - (struct mtx *)&cc->cc_lock, "codrain", 0); - } + do { + /* + * The sleepq_lock() is lower rank than the + * callout_lock() and must be locked first: + */ + sleepq_lock(ident); + cc = callout_lock(c); + direct = ((c->c_flags & CALLOUT_DIRECT) != 0); + busy = (cc_exec_curr(cc, direct) == c); + CC_UNLOCK(cc); + DROP_GIANT(); + + if (busy && !SCHEDULER_STOPPED()) { + /* Wait for drain to complete */ + sleepq_add(ident, &cc->cc_lock.lock_object, "codrain", SLEEPQ_SLEEP, 0); + sleepq_wait(ident, 0); + } else { + sleepq_release(ident); + } - CC_UNLOCK(cc); + PICKUP_GIANT(); + } while (busy); } CTR4(KTR_CALLOUT, "%s: %p func %p arg %p", From owner-svn-src-projects@freebsd.org Fri Aug 12 06:09:21 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A760BBB7414 for ; Fri, 12 Aug 2016 06:09:21 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 5261F1723; Fri, 12 Aug 2016 06:09:21 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7C69Kv9085077; Fri, 12 Aug 2016 06:09:20 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7C69KRQ085076; Fri, 12 Aug 2016 06:09:20 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201608120609.u7C69KRQ085076@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Fri, 12 Aug 2016 06:09:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r303985 - projects/contrib-netbsd-update-12 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.22 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, 12 Aug 2016 06:09:21 -0000 Author: ngie Date: Fri Aug 12 06:09:20 2016 New Revision: 303985 URL: https://svnweb.freebsd.org/changeset/base/303985 Log: Rename ^/projects/contrib-netbsd-update-12 to ^/projects/netbsd-tests-update-12 The latter project branch name is clearer IMHO Added: - copied from r303984, projects/contrib-netbsd-update-12/ Directory Properties: projects/netbsd-tests-update-12/ (props changed) Deleted: projects/contrib-netbsd-update-12/ From owner-svn-src-projects@freebsd.org Fri Aug 12 08:50:07 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 63D94BB66CD for ; Fri, 12 Aug 2016 08:50:07 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 07E4E1C0B; Fri, 12 Aug 2016 08:50:06 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7C8o6Ga044530; Fri, 12 Aug 2016 08:50:06 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7C8o5ZF044519; Fri, 12 Aug 2016 08:50:05 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201608120850.u7C8o5ZF044519@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Fri, 12 Aug 2016 08:50:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r304003 - in projects/netbsd-tests-update-12: bin/cat/tests contrib/netbsd-tests contrib/netbsd-tests/bin/cat contrib/netbsd-tests/bin/sh contrib/netbsd-tests/bin/sh/dotcmd contrib/netb... 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.22 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, 12 Aug 2016 08:50:07 -0000 Author: ngie Date: Fri Aug 12 08:50:05 2016 New Revision: 304003 URL: https://svnweb.freebsd.org/changeset/base/304003 Log: Checkpoint initial integration work - Some of the lib/libc and lib/thr tests fail - lib/msun/exp_test:exp2_values now passes with clang 3.8.0 The Makefiles in contrib/netbsd-tests were pruned as they have no value Sponsored by: EMC / Isilon Storage Division Added: projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_se_output.in - copied unchanged from r303986, vendor/NetBSD/tests/dist/bin/cat/d_se_output.in projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_se_output.out - copied unchanged from r303986, vendor/NetBSD/tests/dist/bin/cat/d_se_output.out projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_arith.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/bin/sh/t_arith.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_cmdsub.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/bin/sh/t_cmdsub.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_option.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/bin/sh/t_option.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_redir.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/bin/sh/t_redir.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_redircloexec.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/bin/sh/t_redircloexec.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_shift.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/bin/sh/t_shift.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_varval.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/bin/sh/t_varval.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/dev/fss/ - copied from r303986, vendor/NetBSD/tests/dist/dev/fss/ projects/netbsd-tests-update-12/contrib/netbsd-tests/dev/usb/ - copied from r303986, vendor/NetBSD/tests/dist/dev/usb/ projects/netbsd-tests-update-12/contrib/netbsd-tests/include/sys/t_pslist.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/include/sys/t_pslist.c projects/netbsd-tests-update-12/contrib/netbsd-tests/kernel/kqueue/t_vnode.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/kernel/kqueue/t_vnode.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/db/h_lfsr.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/lib/libc/db/h_lfsr.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/db/t_db_hash_seq.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/lib/libc/db/t_db_hash_seq.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/inet/t_inet_addr.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/lib/libc/inet/t_inet_addr.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/stdio/t_open_memstream.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/lib/libc/stdio/t_open_memstream.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/stdlib/t_strtoi.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/lib/libc/stdlib/t_strtoi.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sync/cpp_atomic_ops_linkable.cc - copied unchanged from r303986, vendor/NetBSD/tests/dist/lib/libc/sync/cpp_atomic_ops_linkable.cc projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sys/t_bind.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/lib/libc/sys/t_bind.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sys/t_getsockname.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/lib/libc/sys/t_getsockname.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sys/t_posix_fallocate.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/lib/libc/sys/t_posix_fallocate.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sys/t_wait.c - copied, changed from r303986, vendor/NetBSD/tests/dist/lib/libc/sys/t_wait.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libm/t_fenv.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/lib/libm/t_fenv.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libm/t_hypot.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/lib/libm/t_hypot.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libusbhid/ - copied from r303986, vendor/NetBSD/tests/dist/lib/libusbhid/ projects/netbsd-tests-update-12/contrib/netbsd-tests/net/arp/ - copied from r303986, vendor/NetBSD/tests/dist/net/arp/ projects/netbsd-tests-update-12/contrib/netbsd-tests/net/icmp/t_icmp6_redirect.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/icmp/t_icmp6_redirect.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/icmp/t_icmp_redirect.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/icmp/t_icmp_redirect.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/if/ifconf.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/if/ifconf.c projects/netbsd-tests-update-12/contrib/netbsd-tests/net/if/t_ifconf.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/if/t_ifconf.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/if/t_ifconfig.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/if/t_ifconfig.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/if_gif/ - copied from r303986, vendor/NetBSD/tests/dist/net/if_gif/ projects/netbsd-tests-update-12/contrib/netbsd-tests/net/if_pppoe/ - copied from r303986, vendor/NetBSD/tests/dist/net/if_pppoe/ projects/netbsd-tests-update-12/contrib/netbsd-tests/net/if_tap/ - copied from r303986, vendor/NetBSD/tests/dist/net/if_tap/ projects/netbsd-tests-update-12/contrib/netbsd-tests/net/in_cksum/ - copied from r303986, vendor/NetBSD/tests/dist/net/in_cksum/ projects/netbsd-tests-update-12/contrib/netbsd-tests/net/mcast/ - copied from r303986, vendor/NetBSD/tests/dist/net/mcast/ projects/netbsd-tests-update-12/contrib/netbsd-tests/net/mpls/t_mpls_fw6.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/mpls/t_mpls_fw6.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/mpls/t_mpls_fw64.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/mpls/t_mpls_fw64.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/ndp/ - copied from r303986, vendor/NetBSD/tests/dist/net/ndp/ projects/netbsd-tests-update-12/contrib/netbsd-tests/net/net/t_forwarding.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/net/t_forwarding.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/net/t_ipaddress.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/net/t_ipaddress.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/net/t_ipv6_lifetime.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/net/t_ipv6_lifetime.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/net/t_ipv6address.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/net/t_ipv6address.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/route/t_flags.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/route/t_flags.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/route/t_flags6.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/route/t_flags6.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/route/t_route.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/net/route/t_route.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/sbin/gpt/ - copied from r303986, vendor/NetBSD/tests/dist/sbin/gpt/ projects/netbsd-tests-update-12/contrib/netbsd-tests/sbin/resize_ffs/t_check.sh - copied unchanged from r303986, vendor/NetBSD/tests/dist/sbin/resize_ffs/t_check.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/sys/net/ - copied from r303986, vendor/NetBSD/tests/dist/sys/net/ projects/netbsd-tests-update-12/contrib/netbsd-tests/sys/netatalk/ - copied from r303986, vendor/NetBSD/tests/dist/sys/netatalk/ projects/netbsd-tests-update-12/contrib/netbsd-tests/sys/netinet/ - copied from r303986, vendor/NetBSD/tests/dist/sys/netinet/ projects/netbsd-tests-update-12/contrib/netbsd-tests/sys/netinet6/ - copied from r303986, vendor/NetBSD/tests/dist/sys/netinet6/ projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/config/d_min - copied unchanged from r303986, vendor/NetBSD/tests/dist/usr.bin/config/d_min projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/gdb/ - copied from r303986, vendor/NetBSD/tests/dist/usr.bin/gdb/ projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/ld/ - copied from r303986, vendor/NetBSD/tests/dist/usr.bin/ld/ projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/netpgpverify/Testspec - copied unchanged from r303986, vendor/NetBSD/tests/dist/usr.bin/netpgpverify/Testspec projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_anon_struct.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/usr.bin/xlint/lint1/d_c99_anon_struct.c projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_compound_literal_comma.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/usr.bin/xlint/lint1/d_c99_compound_literal_comma.c projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_flex_array_packed.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/usr.bin/xlint/lint1/d_c99_flex_array_packed.c projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_nested_struct.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/usr.bin/xlint/lint1/d_c99_nested_struct.c projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/xlint/lint1/d_c99_union_init4.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/usr.bin/xlint/lint1/d_c99_union_init4.c projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/xlint/lint1/d_cast_fun_array_param.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/usr.bin/xlint/lint1/d_cast_fun_array_param.c projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/xlint/lint1/d_type_question_colon.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/usr.bin/xlint/lint1/d_type_question_colon.c projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/xlint/lint1/d_typefun.c - copied unchanged from r303986, vendor/NetBSD/tests/dist/usr.bin/xlint/lint1/d_typefun.c projects/netbsd-tests-update-12/lib/libc/tests/stdio/open_memstream2_test.c - copied unchanged from r304002, projects/netbsd-tests-update-12/lib/libc/tests/stdio/open_memstream_test.c Deleted: projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_compexit.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/dev/fss/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/dev/usb/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/dev/usb/libhid/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/dev/usb/t_hid/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/fs/nfs/nfsservice/mountd.c projects/netbsd-tests-update-12/contrib/netbsd-tests/fs/nfs/nfsservice/nfsd.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libusbhid/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/net/arp/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/net/if_gif/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/net/if_pppoe/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/net/if_tap/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/net/in_cksum/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/net/mcast/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/net/ndp/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/sbin/gpt/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/sys/net/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/sys/netatalk/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/sys/netinet/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/sys/netinet6/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/gdb/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/ld/Makefile projects/netbsd-tests-update-12/lib/libc/tests/stdio/open_memstream_test.c Modified: projects/netbsd-tests-update-12/bin/cat/tests/Makefile projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_align.in projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_align.out projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/t_cat.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/dotcmd/scoped_command projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/dotcmd/t_dotcmd.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_evaltested.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_exit.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_expand.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_fsplit.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_here.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_set_e.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_ulimit.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_varquote.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/t_wait.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/crypto/opencrypto/t_opencrypto.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/dev/audio/t_pad_output.bz2.uue projects/netbsd-tests-update-12/contrib/netbsd-tests/dev/dm/h_dm.c projects/netbsd-tests-update-12/contrib/netbsd-tests/dev/sysmon/t_swsensor.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/dev/sysmon/t_swwdog.c projects/netbsd-tests-update-12/contrib/netbsd-tests/fs/common/fstest_lfs.c projects/netbsd-tests-update-12/contrib/netbsd-tests/fs/common/h_fsmacros.h projects/netbsd-tests-update-12/contrib/netbsd-tests/fs/nfs/nfsservice/rumpnfsd.c projects/netbsd-tests-update-12/contrib/netbsd-tests/fs/nfs/t_rquotad.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/fs/tmpfs/t_vnd.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/fs/vfs/t_io.c projects/netbsd-tests-update-12/contrib/netbsd-tests/fs/vfs/t_renamerace.c projects/netbsd-tests-update-12/contrib/netbsd-tests/fs/vfs/t_unpriv.c projects/netbsd-tests-update-12/contrib/netbsd-tests/fs/vfs/t_vnops.c projects/netbsd-tests-update-12/contrib/netbsd-tests/games/t_factor.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/h_macros.h projects/netbsd-tests-update-12/contrib/netbsd-tests/include/sys/t_bitops.c projects/netbsd-tests-update-12/contrib/netbsd-tests/include/sys/t_cdefs.c projects/netbsd-tests-update-12/contrib/netbsd-tests/include/sys/t_socket.c projects/netbsd-tests-update-12/contrib/netbsd-tests/include/t_paths.c projects/netbsd-tests-update-12/contrib/netbsd-tests/ipf/expected/n14 projects/netbsd-tests-update-12/contrib/netbsd-tests/ipf/expected/n14_6 projects/netbsd-tests-update-12/contrib/netbsd-tests/ipf/t_filter_parse.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/ipf/t_nat_exec.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/kernel/kqueue/t_ioctl.c projects/netbsd-tests-update-12/contrib/netbsd-tests/kernel/kqueue/t_proc1.c projects/netbsd-tests-update-12/contrib/netbsd-tests/kernel/kqueue/t_proc2.c projects/netbsd-tests-update-12/contrib/netbsd-tests/kernel/kqueue/t_proc3.c projects/netbsd-tests-update-12/contrib/netbsd-tests/kernel/t_rnd.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libbpfjit/t_bpfjit.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/arch/ia64/return_one.S projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/arch/powerpc/return_one.S projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/arch/riscv/return_one.S projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/db/t_db.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/gen/execve/t_execve.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/gen/isqemu.h projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/gen/posix_spawn/t_spawn.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/gen/t_fnmatch.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/gen/t_fpsetmask.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/gen/t_randomid.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/gen/t_siginfo.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/gen/t_sleep.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/gen/t_time.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/gen/t_vis.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/inet/t_inet_network.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/net/t_servent.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/rpc/t_rpc.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/stdlib/t_getenv.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/stdlib/t_posix_memalign.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/stdlib/t_strtod.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/stdlib/t_strtol.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/string/t_memset.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sys/t_connect.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sys/t_getrusage.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sys/t_kevent.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sys/t_mlock.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sys/t_mmap.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sys/t_mprotect.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sys/t_setrlimit.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/sys/t_sigqueue.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/time/t_strptime.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libcurses/director/testlang_parse.y projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libm/t_exp.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libm/t_fmod.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libm/t_log.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libm/t_pow.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libpthread/t_cond.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libpthread/t_mutex.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libpthread/t_rwlock.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/librumpclient/t_exec.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/librumpclient/t_fd.c projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/librumphijack/t_tcpip.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libutil/t_parsedate.c projects/netbsd-tests-update-12/contrib/netbsd-tests/net/bpfilter/t_bpfilter.c projects/netbsd-tests-update-12/contrib/netbsd-tests/net/bpfjit/t_bpfjit.c projects/netbsd-tests-update-12/contrib/netbsd-tests/net/icmp/t_forward.c projects/netbsd-tests-update-12/contrib/netbsd-tests/net/icmp/t_ping.c projects/netbsd-tests-update-12/contrib/netbsd-tests/net/icmp/t_ping2.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/if_bridge/t_bridge.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/mpls/t_ldp_regen.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/mpls/t_mpls_fw.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/mpls/t_rfc4182.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/net/net/t_tcp.c projects/netbsd-tests-update-12/contrib/netbsd-tests/net/route/t_change.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/rump/modautoload/t_modautoload.c projects/netbsd-tests-update-12/contrib/netbsd-tests/rump/rumpkern/h_server/h_simpleserver.c projects/netbsd-tests-update-12/contrib/netbsd-tests/rump/rumpkern/t_lwproc.c projects/netbsd-tests-update-12/contrib/netbsd-tests/rump/rumpkern/t_sp.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/rump/rumpnet/t_shmif.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/rump/rumpvfs/t_p2kifs.c projects/netbsd-tests-update-12/contrib/netbsd-tests/sbin/resize_ffs/common.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/sbin/resize_ffs/t_grow.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/sbin/resize_ffs/t_grow_swapped.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/sbin/resize_ffs/t_shrink.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/sbin/resize_ffs/t_shrink_swapped.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/sbin/sysctl/t_perm.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/share/mk/t_lib.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/share/mk/t_prog.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/share/mk/t_test.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/cc/t_hello.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/config/support/conf/files projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/config/t_config.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/make/t_make.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/netpgpverify/t_netpgpverify.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/sed/t_sed.sh projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/sort/d_any_char_dflag_out.txt (contents, props changed) projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/sort/d_any_char_fflag_out.txt (contents, props changed) projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.bin/sort/d_any_char_iflag_out.txt (contents, props changed) projects/netbsd-tests-update-12/contrib/netbsd-tests/usr.sbin/traceroute/t_traceroute.sh projects/netbsd-tests-update-12/lib/libc/tests/db/Makefile projects/netbsd-tests-update-12/lib/libc/tests/hash/Makefile projects/netbsd-tests-update-12/lib/libc/tests/inet/Makefile projects/netbsd-tests-update-12/lib/libc/tests/stdio/Makefile projects/netbsd-tests-update-12/lib/libc/tests/stdlib/Makefile projects/netbsd-tests-update-12/lib/libc/tests/sys/Makefile Directory Properties: projects/netbsd-tests-update-12/contrib/netbsd-tests/ (props changed) Modified: projects/netbsd-tests-update-12/bin/cat/tests/Makefile ============================================================================== --- projects/netbsd-tests-update-12/bin/cat/tests/Makefile Fri Aug 12 08:29:26 2016 (r304002) +++ projects/netbsd-tests-update-12/bin/cat/tests/Makefile Fri Aug 12 08:50:05 2016 (r304003) @@ -6,6 +6,8 @@ NETBSD_ATF_TESTS_SH= cat_test ${PACKAGE}FILES+= d_align.in ${PACKAGE}FILES+= d_align.out +${PACKAGE}FILES+= d_se_output.in +${PACKAGE}FILES+= d_se_output.out .include Modified: projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_align.in ============================================================================== --- projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_align.in Fri Aug 12 08:29:26 2016 (r304002) +++ projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_align.in Fri Aug 12 08:50:05 2016 (r304003) @@ -1,3 +1,5 @@ a b c + 1 2 3 + x y z Modified: projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_align.out ============================================================================== --- projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_align.out Fri Aug 12 08:29:26 2016 (r304002) +++ projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_align.out Fri Aug 12 08:50:05 2016 (r304003) @@ -1,3 +1,5 @@ 1 a b c$ + $ 2 1 2 3$ + $ 3 x y z$ Copied: projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_se_output.in (from r303986, vendor/NetBSD/tests/dist/bin/cat/d_se_output.in) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_se_output.in Fri Aug 12 08:50:05 2016 (r304003, copy of r303986, vendor/NetBSD/tests/dist/bin/cat/d_se_output.in) @@ -0,0 +1,3 @@ + +Of course it runs NetBSD + Copied: projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_se_output.out (from r303986, vendor/NetBSD/tests/dist/bin/cat/d_se_output.out) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/d_se_output.out Fri Aug 12 08:50:05 2016 (r304003, copy of r303986, vendor/NetBSD/tests/dist/bin/cat/d_se_output.out) @@ -0,0 +1,3 @@ +$ +Of course it runs NetBSD$ +$ Modified: projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/t_cat.sh ============================================================================== --- projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/t_cat.sh Fri Aug 12 08:29:26 2016 (r304002) +++ projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/cat/t_cat.sh Fri Aug 12 08:50:05 2016 (r304003) @@ -1,4 +1,4 @@ -# $NetBSD: t_cat.sh,v 1.2 2012/03/27 17:57:02 jruoho Exp $ +# $NetBSD: t_cat.sh,v 1.3 2016/06/16 01:04:58 sevan Exp $ # # Copyright (c) 2012 The NetBSD Foundation, Inc. # All rights reserved. @@ -52,8 +52,20 @@ nonexistent_body() { -x "cat /some/name/that/does/not/exist" } +atf_test_case se_output +se_output_head() { + atf_set "descr" "Test that cat(1) prints a $ sign " \ + "on blank lines with options '-se' (PR bin/51250)" +} + +se_output_body() { + atf_check -s ignore -o file:$(atf_get_srcdir)/d_se_output.out \ + -x "cat -se $(atf_get_srcdir)/d_se_output.in" +} + atf_init_test_cases() { atf_add_test_case align atf_add_test_case nonexistent + atf_add_test_case se_output } Modified: projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/dotcmd/scoped_command ============================================================================== --- projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/dotcmd/scoped_command Fri Aug 12 08:29:26 2016 (r304002) +++ projects/netbsd-tests-update-12/contrib/netbsd-tests/bin/sh/dotcmd/scoped_command Fri Aug 12 08:50:05 2016 (r304003) @@ -1,6 +1,6 @@ #!/bin/sh # -# $NetBSD: scoped_command,v 1.1 2014/05/31 14:29:06 christos Exp $ +# $NetBSD: scoped_command,v 1.2 2016/03/27 14:57:50 christos Exp $ # # Copyright (c) 2014 The NetBSD Foundation, Inc. # All rights reserved. @@ -30,6 +30,27 @@ # POSSIBILITY OF SUCH DAMAGE. # +: ${TEST_SH:=/bin/sh} + +sane_sh() +{ + set -- ${TEST_SH} + case "$#" in + (0) set /bin/sh;; + (1|2) ;; + (*) set "$1";; # Just ignore options if we cannot make them work + esac + + case "$1" in + /*) TEST_SH="$1${2+ }$2";; + ./*) TEST_SH="${PWD}${1#.}${2+ }$2";; + */*) TEST_SH="${PWD}/$1${2+ }$2";; + *) TEST_SH="$( command -v "$1" )${2+ }$2";; + esac +} + +sane_sh + set -e # USAGE: @@ -52,7 +73,7 @@ cmd="echo 'before ${3}' ${2} echo 'after ${3}, return value:' ${?}" -echo "#!/bin/sh" +echo "#!${TEST_SH}" [ 'func' = "${1}" ] && cat </dev/null + then + # 16 bits or less, or hex unsupported, just give up... + return + fi + test $( ${TEST_SH} -c 'echo $(( 0x1FFFF ))' ) = 131071 || return + + # when attempting to exceed the number of available bits + # the shell may react in any of 3 (rational) ways + # 1. syntax error (maybe even core dump...) and fail + # 2. represent a positive number input as negative value + # 3. keep the number positive, but not the value expected + # (perhaps pegged at the max possible value) + # any of those may be accompanied by a message to stderr + + # Must check all 3 possibilities for each plausible size + # Tests do not use 0x8000... because that value can have weird + # other side effects that are not relevant to discover here. + # But we do want to try and force the sign bit set. + + if ! ${TEST_SH} -c ': $(( 0xC0000000 ))' 2>/dev/null + then + # proobably shell detected overflow and complained + ARITH_BITS=32 + return + fi + if ${TEST_SH} 2>/dev/null \ + -c 'case $(( 0xC0000000 )); in (-*) exit 0;; esac; exit 1' + then + ARITH_BITS=32 + return + fi + if ${TEST_SH} -c '[ $(( 0xC0000000 )) != 3221225472 ]' 2>/dev/null + then + ARITH_BITS=32 + return + fi + + if ! ${TEST_SH} -c ': $(( 0xC000000000000000 ))' 2>/dev/null + then + ARITH_BITS=64 + return + fi + if ${TEST_SH} 2>/dev/null \ + -c 'case $(( 0xC000000000000000 )); in (-*) exit 0;; esac; exit 1' + then + ARITH_BITS=64 + return + fi + if ${TEST_SH} 2>/dev/null \ + -c '[ $((0xC000000000000000)) != 13835058055282163712 ]' + then + ARITH_BITS=64 + return + fi + + if ${TEST_SH} 2>/dev/null -c \ + '[ $((0x123456781234567812345678)) = 5634002657842756053938493048 ]' + then + # just assume... (for now anyway, revisit when it happens...) + ARITH_BITS=96 + return + fi +} + +atf_test_case constants +constants_head() +{ + atf_set "descr" "Tests that arithmetic expansion can handle constants" +} +constants_body() +{ + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $((0x0))' + + # atf_expect_fail "PR bin/50959" + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $((0X0))' + # atf_expect_pass + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $((000))' + + atf_check -s exit:0 -o inline:'1\n' -e empty \ + ${TEST_SH} -c 'echo $(( 000000001 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty \ + ${TEST_SH} -c 'echo $(( 0x000000 ))' + + atf_check -s exit:0 -o inline:'99999\n' -e empty \ + ${TEST_SH} -c 'echo $((99999))' + + [ ${ARITH_BITS} -gt 44 ] && + atf_check -s exit:0 -o inline:'9191919191919\n' -e empty \ + ${TEST_SH} -c 'echo $((9191919191919))' + + atf_check -s exit:0 -o inline:'13\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xD ))' + atf_check -s exit:0 -o inline:'11\n' -e empty ${TEST_SH} -c \ + 'echo $(( 013 ))' + atf_check -s exit:0 -o inline:'7\n' -e empty ${TEST_SH} -c \ + 'x=7;echo $(($x))' + atf_check -s exit:0 -o inline:'9\n' -e empty ${TEST_SH} -c \ + 'x=9;echo $((x))' + + atf_check -s exit:0 -o inline:'11\n' -e empty \ + ${TEST_SH} -c 'x=0xB; echo $(( $x ))' + atf_check -s exit:0 -o inline:'27\n' -e empty \ + ${TEST_SH} -c 'x=0X1B; echo $(( x ))' + atf_check -s exit:0 -o inline:'27\n' -e empty \ + ${TEST_SH} -c 'X=033; echo $(( $X ))' + atf_check -s exit:0 -o inline:'219\n' -e empty \ + ${TEST_SH} -c 'X=0333; echo $(( X ))' + atf_check -s exit:0 -o inline:'0\n' -e empty \ + ${TEST_SH} -c 'NULL=; echo $(( NULL ))' + + # Not clear if this is 0, nothing, or an error, so omit for now + # atf_check -s exit:0 -o inline:'0\n' -e empty \ + # ${TEST_SH} -c 'echo $(( ))' + + # not clear whether this should return 0 or an error, so omit for now + # atf_check -s exit:0 -o inline:'0\n' -e empty \ + # ${TEST_SH} -c 'echo $(( UNDEFINED_VAR ))' +} + + +atf_test_case do_unary_plus +do_unary_plus_head() +{ + atf_set "descr" "Tests that unary plus works as expected" +} +do_unary_plus_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( +0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( +1 ))' + atf_check -s exit:0 -o inline:'6\n' -e empty ${TEST_SH} -c \ + 'echo $(( + 6 ))' + atf_check -s exit:0 -o inline:'4321\n' -e empty ${TEST_SH} -c \ + 'echo $(( + 4321 ))' + atf_check -s exit:0 -o inline:'17185\n' -e empty ${TEST_SH} -c \ + 'echo $(( + 0x4321 ))' +} + +atf_test_case do_unary_minus +do_unary_minus_head() +{ + atf_set "descr" "Tests that unary minus works as expected" +} +do_unary_minus_body() +{ + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( -1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( - 0 ))' + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( - 1 ))' + atf_check -s exit:0 -o inline:'-6\n' -e empty ${TEST_SH} -c \ + 'echo $(( - 6 ))' + atf_check -s exit:0 -o inline:'-4321\n' -e empty ${TEST_SH} -c \ + 'echo $(( - 4321 ))' + atf_check -s exit:0 -o inline:'-2257\n' -e empty ${TEST_SH} -c \ + 'echo $(( - 04321 ))' + atf_check -s exit:0 -o inline:'-7\n' -e empty ${TEST_SH} -c \ + 'echo $((-7))' +} + +atf_test_case do_unary_not +do_unary_not_head() +{ + atf_set "descr" "Tests that unary not (boolean) works as expected" +} +do_unary_not_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( ! 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( ! 0 ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( !1234 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( !0xFFFF ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( ! 000000 ))' +} + +atf_test_case do_unary_tilde +do_unary_tilde_head() +{ + atf_set "descr" "Tests that unary not (bitwise) works as expected" +} +do_unary_tilde_body() +{ + # definitely 2's complement arithmetic here... + + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( ~ 0 ))' + atf_check -s exit:0 -o inline:'-2\n' -e empty ${TEST_SH} -c \ + 'echo $(( ~ 1 ))' + + atf_check -s exit:0 -o inline:'-1235\n' -e empty ${TEST_SH} -c \ + 'echo $(( ~1234 ))' + atf_check -s exit:0 -o inline:'-256\n' -e empty ${TEST_SH} -c \ + 'echo $(( ~0xFF ))' +} + +atf_test_case elementary_add +elementary_add_head() +{ + atf_set "descr" "Tests that simple addition works as expected" +} +elementary_add_body() +{ + # some of these tests actually test unary ops & op precedence... + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 + 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 + 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 + 1 ))' + atf_check -s exit:0 -o inline:'2\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 + 1 ))' + atf_check -s exit:0 -o inline:'10\n' -e empty ${TEST_SH} -c \ + 'echo $(( 4 + 6 ))' + atf_check -s exit:0 -o inline:'10\n' -e empty ${TEST_SH} -c \ + 'echo $(( 6 + 4 ))' + atf_check -s exit:0 -o inline:'5555\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1234 + 4321 ))' + atf_check -s exit:0 -o inline:'3333\n' -e empty ${TEST_SH} -c \ + 'echo $((1111+2222))' + atf_check -s exit:0 -o inline:'5555\n' -e empty ${TEST_SH} -c \ + 'echo $((+3333+2222))' + atf_check -s exit:0 -o inline:'7777\n' -e empty ${TEST_SH} -c \ + 'echo $((+3333 + +4444))' + atf_check -s exit:0 -o inline:'-7777\n' -e empty ${TEST_SH} -c \ + 'echo -$((+4125+ +3652))' +} + +atf_test_case elementary_sub +elementary_sub_head() +{ + atf_set "descr" "Tests that simple subtraction works as expected" +} +elementary_sub_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 - 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 - 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 - 1 ))' + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 - 1 ))' + atf_check -s exit:0 -o inline:'488\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1066 - 578 ))' + atf_check -s exit:0 -o inline:'-3662\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2016-5678 ))' + atf_check -s exit:0 -o inline:'-3662\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2016+-5678 ))' + atf_check -s exit:0 -o inline:'-3662\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2016-+5678 ))' + atf_check -s exit:0 -o inline:'-7694\n' -e empty ${TEST_SH} -c \ + 'echo $(( -2016-5678 ))' + atf_check -s exit:0 -o inline:'--1\n' -e empty ${TEST_SH} -c \ + 'echo -$(( -1018 - -1017 ))' +} + +atf_test_case elementary_mul +elementary_mul_head() +{ + atf_set "descr" "Tests that simple multiplication works as expected" +} +elementary_mul_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 * 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 * 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 * 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 * 1 ))' + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( -1 * 1 ))' + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 * -1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( -1 * -1 ))' + atf_check -s exit:0 -o inline:'391\n' -e empty ${TEST_SH} -c \ + 'echo $(( 17 * 23 ))' + atf_check -s exit:0 -o inline:'169\n' -e empty ${TEST_SH} -c \ + 'echo $(( 13*13 ))' + atf_check -s exit:0 -o inline:'-11264\n' -e empty ${TEST_SH} -c \ + 'echo $(( -11 *1024 ))' + atf_check -s exit:0 -o inline:'-16983\n' -e empty ${TEST_SH} -c \ + 'echo $(( 17* -999 ))' + atf_check -s exit:0 -o inline:'9309\n' -e empty ${TEST_SH} -c \ + 'echo $(( -29*-321 ))' +} + +atf_test_case elementary_div +elementary_div_head() +{ + atf_set "descr" "Tests that simple division works as expected" +} +elementary_div_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 / 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 / 1 ))' + test ${ARITH_BITS} -ge 38 && + atf_check -s exit:0 -o inline:'99999999999\n' -e empty \ + ${TEST_SH} -c 'echo $(( 99999999999 / 1 ))' + atf_check -s exit:0 -o inline:'2\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2 / 1 ))' + + atf_check -s exit:0 -o inline:'3\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 / 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 / 2 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 / 3 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 / 4 ))' + + atf_check -s exit:0 -o inline:'173\n' -e empty ${TEST_SH} -c \ + 'echo $(( 123456 / 713 ))' + atf_check -s exit:0 -o inline:'13\n' -e empty ${TEST_SH} -c \ + 'echo $(( 169 / 13 ))' +} + +atf_test_case elementary_rem +elementary_rem_head() +{ + atf_set "descr" "Tests that simple modulus works as expected" +} +elementary_rem_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 % 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 % 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2 % 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 9999 % 1 ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 % 2 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 % 2 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2 % 2 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xFFFF % 2 ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 % 3 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 % 3 ))' + atf_check -s exit:0 -o inline:'2\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2 % 3 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 % 3 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3123 % 3 ))' + + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 9999 % 2 ))' + + atf_check -s exit:0 -o inline:'107\n' -e empty ${TEST_SH} -c \ + 'echo $(( 123456%173 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $((169%13))' +} + +atf_test_case elementary_shl +elementary_shl_head() +{ + atf_set "descr" "Tests that simple shift left works as expected" +} +elementary_shl_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 << 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 << 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 << 17 ))' + + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 << 0 ))' + atf_check -s exit:0 -o inline:'2\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 << 1 ))' + atf_check -s exit:0 -o inline:'131072\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 << 17 ))' + + atf_check -s exit:0 -o inline:'2021161080\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x3C3C3C3C << 1 ))' + + test "${ARITH_BITS}" -ge 40 && + atf_check -s exit:0 -o inline:'129354309120\n' -e empty \ + ${TEST_SH} -c 'echo $(( 0x3C3C3C3C << 7 ))' + test "${ARITH_BITS}" -ge 72 && + atf_check -s exit:0 -o inline:'1111145054534149079040\n' \ + -e empty ${TEST_SH} -c 'echo $(( 0x3C3C3C3C << 40 ))' + + return 0 +} + +atf_test_case elementary_shr +elementary_shr_head() +{ + atf_set "descr" "Tests that simple shift right works as expected" +} +elementary_shr_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 >> 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 >> 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 >> 17 ))' + + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 >> 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 >> 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2 >> 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 >> 1 ))' + + atf_check -s exit:0 -o inline:'4\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x10 >> 2 ))' + atf_check -s exit:0 -o inline:'4\n' -e empty ${TEST_SH} -c \ + 'echo $(( 022 >> 2 ))' + + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 131072 >> 17 ))' + + test ${ARITH_BITS} -ge 40 && + atf_check -s exit:0 -o inline:'8\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x4000000000 >> 35 ))' + test ${ARITH_BITS} -ge 80 && + atf_check -s exit:0 -o inline:'4464\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x93400FACE005C871000 >> 64 ))' + + return 0 +} + +atf_test_case elementary_eq +elementary_eq_head() +{ + atf_set "descr" "Tests that simple equality test works as expected" +} +elementary_eq_body() +{ + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 == 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 == 0000 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 == 0x00 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 == 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'X=30; Y=0x1E; echo $(( X == Y ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x1234 == 4660 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x1234 == 011064 ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 == 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 == 0000000000000001 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 == 0x10000000000000 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 == 2 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'X=3; Y=7; echo $(( X == Y ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1234 == 0x4660 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 01234 == 0x11064 ))' +} +atf_test_case elementary_ne +elementary_ne_head() +{ + atf_set "descr" "Tests that simple inequality test works as expected" +} +elementary_ne_body() +{ + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 != 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x71 != 17 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1234 != 01234 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x1234 != 01234 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'X=3; echo $(( X != 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'X=3; Y=0x11; echo $(( X != Y ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 != 3 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 != 0x0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xA != 012 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'X=1; echo $(( X != 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'X=0xC; Y=014; echo $(( X != Y ))' +} +atf_test_case elementary_lt +elementary_lt_head() +{ + atf_set "descr" "Tests that simple less than test works as expected" +} +elementary_lt_body() +{ + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 < 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( -1 < 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 < 10 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 100 < 101 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xA1 < 200 ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 < 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 < 0 ))' + + test ${ARITH_BITS} -ge 40 && + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x1BEEFF00D < 0x1FACECAFE ))' + + return 0 +} +atf_test_case elementary_le +elementary_le_head() +{ + atf_set "descr" "Tests that simple less or equal test works as expected" +} +elementary_le_body() +{ + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 <= 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( -1 <= 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 <= 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 <= 10 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 100 <= 101 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xA1 <= 161 ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 <= 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( -100 <= -200 ))' + + test ${ARITH_BITS} -ge 40 && + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'cost=; AUD=; echo $(( $cost 0x2FEEDBABE <= $AUD 12866927294 ))' + + return 0 +} +atf_test_case elementary_gt +elementary_gt_head() +{ + atf_set "descr" "Tests that simple greater than works as expected" +} +elementary_gt_body() +{ + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 > 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 > -1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 11 > 012 ))' + + # atf_expect_fail "PR bin/50959" + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2147483647 > 0X7FFFFF0 ))' + # atf_expect_pass + + test ${ARITH_BITS} -gt 32 && + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x80000000 > 0x7FFFFFFF ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 > 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 > 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( -1 > 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 > 10 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2015 > 2016 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xA1 > 200 ))' + + test ${ARITH_BITS} -ge 44 && + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x7F07F07F0 > 34099628014 ))' + + return 0 +} +atf_test_case elementary_ge +elementary_ge_head() +{ + atf_set "descr" "Tests that simple greater or equal works as expected" +} +elementary_ge_body() +{ + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 >= 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 >= 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( -100 >= -101 ))' + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( -1 >= 0 ))' +} + +atf_test_case fiddle_bits_and +fiddle_bits_and_head() +{ + atf_set "descr" "Test bitwise and operations in arithmetic expressions" +} +fiddle_bits_and_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 & 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 & 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 & 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 & 1 ))' + + atf_check -s exit:0 -o inline:'255\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xFF & 0xFF ))' + atf_check -s exit:0 -o inline:'255\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xFFFF & 0377 ))' + + test "${ARITH_BITS}" -ge 48 && + atf_check -s exit:0 -o inline:'70377641607203\n' -e empty \ + ${TEST_SH} -c 'echo $(( 0x5432FEDC0123 & 0x42871357BAB3 ))' + + return 0 +} +atf_test_case fiddle_bits_or +fiddle_bits_or_head() +{ + atf_set "descr" "Test bitwise or operations in arithmetic expressions" +} +fiddle_bits_or_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 | 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 | 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 | 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 | 1 ))' + + atf_check -s exit:0 -o inline:'4369\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x1111 | 0x1111 ))' + atf_check -s exit:0 -o inline:'255\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xAA | 0125 ))' + + test "${ARITH_BITS}" -ge 48 && + atf_check -s exit:0 -o inline:'95348271856563\n' -e empty \ + ${TEST_SH} -c 'echo $(( 0x5432FEDC0123 | 0x42871357BAB3 ))' + + return 0 +} +atf_test_case fiddle_bits_xor +fiddle_bits_xor_head() +{ + atf_set "descr" "Test bitwise xor operations in arithmetic expressions" +} +fiddle_bits_xor_body() +{ + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 ^ 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 ^ 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 ^ 1 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 ^ 1 ))' + + atf_check -s exit:0 -o inline:'255\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xF0 ^ 0x0F ))' + atf_check -s exit:0 -o inline:'15\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xF0 ^ 0xFF ))' + + test "${ARITH_BITS}" -ge 48 && + atf_check -s exit:0 -o inline:'24970630249360\n' -e empty \ + ${TEST_SH} -c 'echo $(( 0x5432FEDC0123 ^ 0x42871357BAB3 ))' + + return 0 +} + +atf_test_case logical_and +logical_and_head() +{ + atf_set "descr" "Test logical and operations in arithmetic expressions" +} +logical_and_body() +{ + # cannot test short-circuit eval until sh implements side effects... + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 && 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 && 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 && 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 && 1 ))' + + # atf_expect_fail "PR bin/50960" + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x1111 && 01234 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0xFFFF && 0xF0F0 ))' +} +atf_test_case logical_or +logical_or_head() +{ + atf_set "descr" "Test logical or operations in arithmetic expressions" +} +logical_or_body() +{ + # cannot test short-circuit eval until sh implements side effects... + + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 || 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 || 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 || 1 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 || 1 ))' + + # atf_expect_fail "PR bin/50960" + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x1111 || 01234 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x33 || 0xF0F0 ))' +} + +atf_test_case make_selection +make_selection_head() +{ + atf_set "descr" "Test ?: operator in arithmetic expressions" +} +make_selection_body() +{ + # atf_expect_fail "PR bin/50958" + + atf_check -s exit:0 -o inline:'3\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0 ? 2 : 3 ))' + atf_check -s exit:0 -o inline:'2\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 ? 2 : 3 ))' + + atf_check -s exit:0 -o inline:'111\n' -e empty ${TEST_SH} -c \ + 'echo $(( 0x1234 ? 111 : 222 ))' + + atf_check -s exit:0 -o inline:'-1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 < 2 ? -1 : 1 > 2 ? 1 : 0 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 < 1 ? -1 : 1 > 1 ? 1 : 0 ))' + atf_check -s exit:0 -o inline:'1\n' -e empty ${TEST_SH} -c \ + 'echo $(( 2 < 1 ? -1 : 2 > 1 ? 1 : 0 ))' +} + +atf_test_case operator_precedence +operator_precedence_head() +{ + atf_set "descr" "Test operator precedence without parentheses" +} +operator_precedence_body() +{ + # NB: apart from $(( )) ** NO ** parentheses in the expressions. + + atf_check -s exit:0 -o inline:'6\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 + 2 + 3 ))' + atf_check -s exit:0 -o inline:'2\n' -e empty ${TEST_SH} -c \ + 'echo $(( 1 - 2 + 3 ))' + atf_check -s exit:0 -o inline:'0\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 - 2 - 1 ))' + atf_check -s exit:0 -o inline:'2\n' -e empty ${TEST_SH} -c \ + 'echo $(( 3 - 2 + 1 ))' + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Sat Aug 13 01:40:09 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B3A61BB841C for ; Sat, 13 Aug 2016 01:40:09 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 86CF91431; Sat, 13 Aug 2016 01:40:09 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7D1e8bZ023244; Sat, 13 Aug 2016 01:40:08 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7D1e8TT023243; Sat, 13 Aug 2016 01:40:08 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201608130140.u7D1e8TT023243@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sat, 13 Aug 2016 01:40:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r304032 - projects/netbsd-tests-update-12/lib/msun/tests 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.22 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: Sat, 13 Aug 2016 01:40:09 -0000 Author: ngie Date: Sat Aug 13 01:40:08 2016 New Revision: 304032 URL: https://svnweb.freebsd.org/changeset/base/304032 Log: Adjust CFLAGS for fmod_test so it can find isqemu.h Sponsored by: EMC / Isilon Storage Division Modified: projects/netbsd-tests-update-12/lib/msun/tests/Makefile Modified: projects/netbsd-tests-update-12/lib/msun/tests/Makefile ============================================================================== --- projects/netbsd-tests-update-12/lib/msun/tests/Makefile Sat Aug 13 01:34:35 2016 (r304031) +++ projects/netbsd-tests-update-12/lib/msun/tests/Makefile Sat Aug 13 01:40:08 2016 (r304032) @@ -7,6 +7,9 @@ TESTSRC= ${SRCTOP}/contrib/netbsd-tests/ # All architectures on FreeBSD have fenv.h CFLAGS+= -DHAVE_FENV_H +# For isqemu.h +CFLAGS+= -I${TESTSRC:H}/libc/gen + # Not sure why this isn't defined for all architectures, since most # have long double. .if ${MACHINE_CPUARCH} == "aarch64" || \ From owner-svn-src-projects@freebsd.org Sat Aug 13 02:53:03 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6C040BB635F for ; Sat, 13 Aug 2016 02:53:03 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 3C7AB15B1; Sat, 13 Aug 2016 02:53:03 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7D2r2Xt052347; Sat, 13 Aug 2016 02:53:02 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7D2r2bO052346; Sat, 13 Aug 2016 02:53:02 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201608130253.u7D2r2bO052346@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sat, 13 Aug 2016 02:53:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r304035 - projects/netbsd-tests-update-12/bin/cat/tests 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.22 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: Sat, 13 Aug 2016 02:53:03 -0000 Author: ngie Date: Sat Aug 13 02:53:02 2016 New Revision: 304035 URL: https://svnweb.freebsd.org/changeset/base/304035 Log: Hack around output differences between FreeBSD and other BSDs with cat(1) cat -be on FreeBSD doesn't align the $ with the start of the line like NetBSD, et al's cat -be does PR: 210607 Sponsored by: EMC / Isilon Storage Division Modified: projects/netbsd-tests-update-12/bin/cat/tests/Makefile Modified: projects/netbsd-tests-update-12/bin/cat/tests/Makefile ============================================================================== --- projects/netbsd-tests-update-12/bin/cat/tests/Makefile Sat Aug 13 02:05:06 2016 (r304034) +++ projects/netbsd-tests-update-12/bin/cat/tests/Makefile Sat Aug 13 02:53:02 2016 (r304035) @@ -11,4 +11,10 @@ ${PACKAGE}FILES+= d_se_output.out .include +d_align.out: ${TESTSRC}/d_align.out + sed -E -e 's,^[[:space:]]{7}\$$$$,\$$,' < ${.ALLSRC} > ${.TARGET}.tmp + mv ${.TARGET}.tmp ${.TARGET} + +CLEANFILES+= d_align.out d_align.out.tmp + .include From owner-svn-src-projects@freebsd.org Sat Aug 13 04:45:41 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 05C9EBB818C for ; Sat, 13 Aug 2016 04:45:41 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 B145A1B18; Sat, 13 Aug 2016 04:45:40 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7D4jdgn093814; Sat, 13 Aug 2016 04:45:39 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7D4jdSd093813; Sat, 13 Aug 2016 04:45:39 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201608130445.u7D4jdSd093813@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sat, 13 Aug 2016 04:45:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r304036 - projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libpthread 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.22 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: Sat, 13 Aug 2016 04:45:41 -0000 Author: ngie Date: Sat Aug 13 04:45:39 2016 New Revision: 304036 URL: https://svnweb.freebsd.org/changeset/base/304036 Log: Expect :mutexattr2 to fail on FreeBSD pthread_mutexattr_getprioceiling and pthread_mutexattr_setprioceiling both return EINVAL if ->m_protocol != PTHREAD_PRIO_PROTECT. The reasoning behind this decision isn't documented in neither the FreeBSD nor the OpenGroup manpages. Add printf's to add in debugging the issue PR: 211802 Sponsored by: EMC / Isilon Storage Division Modified: projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libpthread/t_mutex.c Modified: projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libpthread/t_mutex.c ============================================================================== --- projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libpthread/t_mutex.c Sat Aug 13 02:53:02 2016 (r304035) +++ projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libpthread/t_mutex.c Sat Aug 13 04:45:39 2016 (r304036) @@ -553,14 +553,31 @@ ATF_TC_BODY(mutexattr2, tc) { pthread_mutexattr_t mattr; +#ifdef __FreeBSD__ + atf_tc_expect_fail("fails on i == 0 with: " + "pthread_mutexattr_setprioceiling(&mattr, i): Invalid argument " + "-- PR # 211802"); +#endif + PTHREAD_REQUIRE(pthread_mutexattr_init(&mattr)); int max_prio = sched_get_priority_max(SCHED_FIFO); int min_prio = sched_get_priority_min(SCHED_FIFO); for (int i = min_prio; i <= max_prio; i++) { int prioceiling; +#ifdef __FreeBSD__ + int protocol; + + PTHREAD_REQUIRE(pthread_mutexattr_getprotocol(&mattr, + &protocol)); + + printf("priority: %d\nprotocol: %d\n", i, protocol); +#endif PTHREAD_REQUIRE(pthread_mutexattr_setprioceiling(&mattr, i)); PTHREAD_REQUIRE(pthread_mutexattr_getprioceiling(&mattr, &prioceiling)); +#ifdef __FreeBSD__ + printf("prioceiling: %d\n", prioceiling); +#endif ATF_REQUIRE_EQ(i, prioceiling); } } From owner-svn-src-projects@freebsd.org Sat Aug 13 05:42:12 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 63DD8BB8F70 for ; Sat, 13 Aug 2016 05:42:12 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 36C3F194F; Sat, 13 Aug 2016 05:42:12 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7D5gBNp015712; Sat, 13 Aug 2016 05:42:11 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7D5gBIY015711; Sat, 13 Aug 2016 05:42:11 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201608130542.u7D5gBIY015711@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sat, 13 Aug 2016 05:42:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r304037 - projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/db 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.22 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: Sat, 13 Aug 2016 05:42:12 -0000 Author: ngie Date: Sat Aug 13 05:42:11 2016 New Revision: 304037 URL: https://svnweb.freebsd.org/changeset/base/304037 Log: Skip 64kB bucket testcases This bucket size isn't supported on FreeBSD Sponsored by: EMC / Isilon Storage Division Modified: projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/db/t_db.sh Modified: projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/db/t_db.sh ============================================================================== --- projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/db/t_db.sh Sat Aug 13 04:45:39 2016 (r304036) +++ projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/db/t_db.sh Sat Aug 13 05:42:11 2016 (r304037) @@ -910,9 +910,15 @@ bsize_ffactor_body() h_bsize_ffactor 32768 455 h_bsize_ffactor 32768 683 + # Begin FreeBSD + if false; then + # End FreeBSD h_bsize_ffactor 65536 341 h_bsize_ffactor 65536 455 h_bsize_ffactor 65536 683 + # Begin FreeBSD + fi + # End FreeBSD } # This tests 64K block size addition/removal @@ -958,7 +964,11 @@ bsize_torture_body() { TMPDIR="$(pwd)/db_dir"; export TMPDIR mkdir ${TMPDIR} - for i in 2048 4096 8192 16384 32768 65536 + # Begin FreeBSD + # + # db(3) doesn't support 64kB bucket sizes + for i in 2048 4096 8192 16384 32768 # 65536 + # End FreeBSD do atf_check "$(prog_lfsr)" $i done From owner-svn-src-projects@freebsd.org Sat Aug 13 06:11:54 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 948E1BB82EA for ; Sat, 13 Aug 2016 06:11:54 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 6012B149A; Sat, 13 Aug 2016 06:11:54 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7D6BrXP024467; Sat, 13 Aug 2016 06:11:53 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7D6Brpd024466; Sat, 13 Aug 2016 06:11:53 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201608130611.u7D6Brpd024466@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sat, 13 Aug 2016 06:11:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r304038 - projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/rpc 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.22 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: Sat, 13 Aug 2016 06:11:54 -0000 Author: ngie Date: Sat Aug 13 06:11:53 2016 New Revision: 304038 URL: https://svnweb.freebsd.org/changeset/base/304038 Log: Expect :raw to fail on FreeBSD clnt_raw fails with `RPC_CANTDECODERES` today with the testcase provided by NetBSD. PR: 211804 Sponsored by: EMC / Isilon Storage Division Modified: projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/rpc/t_rpc.c Modified: projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/rpc/t_rpc.c ============================================================================== --- projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/rpc/t_rpc.c Sat Aug 13 05:42:11 2016 (r304037) +++ projects/netbsd-tests-update-12/contrib/netbsd-tests/lib/libc/rpc/t_rpc.c Sat Aug 13 06:11:53 2016 (r304038) @@ -323,6 +323,10 @@ ATF_TC_HEAD(raw, tc) ATF_TC_BODY(raw, tc) { +#ifdef __FreeBSD__ + atf_tc_expect_fail("fails with: clnt_call: " + "RPC: Can't decode result -- PR # 211804"); +#endif rawtest(NULL); } From owner-svn-src-projects@freebsd.org Sat Aug 13 06:16:41 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id D1C92BB8323 for ; Sat, 13 Aug 2016 06:16:41 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 8ED8216B3; Sat, 13 Aug 2016 06:16:41 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7D6Ge7L026706; Sat, 13 Aug 2016 06:16:40 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7D6Gcw1026683; Sat, 13 Aug 2016 06:16:38 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201608130616.u7D6Gcw1026683@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sat, 13 Aug 2016 06:16:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r304039 - in projects/netbsd-tests-update-12: . bin/ps cddl/usr.sbin/dtrace/tests/common/raise cddl/usr.sbin/dtrace/tests/common/safety cddl/usr.sbin/dtrace/tests/tools etc/rc.d include... 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.22 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: Sat, 13 Aug 2016 06:16:41 -0000 Author: ngie Date: Sat Aug 13 06:16:38 2016 New Revision: 304039 URL: https://svnweb.freebsd.org/changeset/base/304039 Log: MFhead @ r304038 Added: projects/netbsd-tests-update-12/lib/libc/gen/dirname_compat.c - copied unchanged from r304038, head/lib/libc/gen/dirname_compat.c projects/netbsd-tests-update-12/libexec/rtld-elf/rtld_utrace.h - copied unchanged from r304038, head/libexec/rtld-elf/rtld_utrace.h projects/netbsd-tests-update-12/sys/boot/fdt/dts/arm/pcduino3.dts - copied unchanged from r304038, head/sys/boot/fdt/dts/arm/pcduino3.dts projects/netbsd-tests-update-12/sys/compat/cloudabi/cloudabi_vdso.c - copied unchanged from r304038, head/sys/compat/cloudabi/cloudabi_vdso.c projects/netbsd-tests-update-12/sys/compat/cloudabi64/cloudabi64_vdso.lds.s - copied unchanged from r304038, head/sys/compat/cloudabi64/cloudabi64_vdso.lds.s projects/netbsd-tests-update-12/sys/dev/hyperv/include/vmbus_xact.h - copied unchanged from r304038, head/sys/dev/hyperv/include/vmbus_xact.h projects/netbsd-tests-update-12/sys/dev/hyperv/netvsc/if_hnreg.h - copied unchanged from r304038, head/sys/dev/hyperv/netvsc/if_hnreg.h projects/netbsd-tests-update-12/sys/dev/hyperv/netvsc/if_hnvar.h - copied unchanged from r304038, head/sys/dev/hyperv/netvsc/if_hnvar.h projects/netbsd-tests-update-12/sys/dev/hyperv/vmbus/vmbus_xact.c - copied unchanged from r304038, head/sys/dev/hyperv/vmbus/vmbus_xact.c projects/netbsd-tests-update-12/sys/kern/subr_gtaskqueue.c - copied unchanged from r304038, head/sys/kern/subr_gtaskqueue.c projects/netbsd-tests-update-12/sys/riscv/include/sbi.h - copied unchanged from r304038, head/sys/riscv/include/sbi.h projects/netbsd-tests-update-12/sys/riscv/riscv/riscv_console.c - copied unchanged from r304038, head/sys/riscv/riscv/riscv_console.c projects/netbsd-tests-update-12/sys/riscv/riscv/sbi.S - copied unchanged from r304038, head/sys/riscv/riscv/sbi.S projects/netbsd-tests-update-12/sys/sys/gtaskqueue.h - copied unchanged from r304038, head/sys/sys/gtaskqueue.h Deleted: projects/netbsd-tests-update-12/sys/boot/fdt/dts/arm/pcduino3b.dts projects/netbsd-tests-update-12/sys/riscv/htif/ projects/netbsd-tests-update-12/usr.bin/kdump/linux32_syscalls.conf projects/netbsd-tests-update-12/usr.bin/kdump/linux_syscalls.conf projects/netbsd-tests-update-12/usr.bin/truss/makesyscallsconf.sh Modified: projects/netbsd-tests-update-12/Makefile projects/netbsd-tests-update-12/Makefile.inc1 projects/netbsd-tests-update-12/bin/ps/ps.1 projects/netbsd-tests-update-12/cddl/usr.sbin/dtrace/tests/common/raise/Makefile projects/netbsd-tests-update-12/cddl/usr.sbin/dtrace/tests/common/safety/Makefile projects/netbsd-tests-update-12/cddl/usr.sbin/dtrace/tests/tools/genmakefiles.sh projects/netbsd-tests-update-12/etc/rc.d/jail projects/netbsd-tests-update-12/include/unistd.h projects/netbsd-tests-update-12/lib/libc/gen/Makefile.inc projects/netbsd-tests-update-12/lib/libc/gen/Symbol.map projects/netbsd-tests-update-12/lib/libc/gen/dirname.3 projects/netbsd-tests-update-12/lib/libc/gen/dirname.c projects/netbsd-tests-update-12/lib/libc/net/getaddrinfo.c projects/netbsd-tests-update-12/lib/libc/tests/resolv/resolv_test.c projects/netbsd-tests-update-12/lib/libcrypt/Makefile projects/netbsd-tests-update-12/lib/libcrypt/crypt-md5.c projects/netbsd-tests-update-12/lib/libcrypt/crypt-nthash.c projects/netbsd-tests-update-12/lib/libcrypt/crypt-sha256.c projects/netbsd-tests-update-12/lib/libcrypt/crypt-sha512.c projects/netbsd-tests-update-12/lib/libcrypt/crypt.3 projects/netbsd-tests-update-12/lib/libcrypt/crypt.c projects/netbsd-tests-update-12/lib/libcrypt/crypt.h projects/netbsd-tests-update-12/lib/libcrypt/misc.c projects/netbsd-tests-update-12/lib/libsysdecode/Makefile projects/netbsd-tests-update-12/lib/libsysdecode/utrace.c projects/netbsd-tests-update-12/libexec/rtld-elf/rtld.c projects/netbsd-tests-update-12/sbin/ipfw/ipfw2.c projects/netbsd-tests-update-12/secure/lib/libcrypt/crypt-blowfish.c projects/netbsd-tests-update-12/secure/lib/libcrypt/crypt-des.c projects/netbsd-tests-update-12/share/misc/committers-src.dot projects/netbsd-tests-update-12/share/mk/bsd.README projects/netbsd-tests-update-12/share/mk/bsd.progs.mk projects/netbsd-tests-update-12/sys/amd64/amd64/pmap.c projects/netbsd-tests-update-12/sys/amd64/amd64/trap.c projects/netbsd-tests-update-12/sys/amd64/cloudabi64/cloudabi64_sysvec.c projects/netbsd-tests-update-12/sys/arm64/arm64/pmap.c projects/netbsd-tests-update-12/sys/arm64/arm64/trap.c projects/netbsd-tests-update-12/sys/arm64/arm64/vm_machdep.c projects/netbsd-tests-update-12/sys/arm64/cloudabi64/cloudabi64_sysvec.c projects/netbsd-tests-update-12/sys/arm64/include/pmap.h projects/netbsd-tests-update-12/sys/boot/efi/loader/Makefile projects/netbsd-tests-update-12/sys/boot/fdt/dts/riscv/qemu.dts projects/netbsd-tests-update-12/sys/boot/fdt/dts/riscv/rocket.dts projects/netbsd-tests-update-12/sys/boot/fdt/dts/riscv/spike.dts projects/netbsd-tests-update-12/sys/boot/i386/btx/btxldr/btxldr.S projects/netbsd-tests-update-12/sys/boot/i386/libi386/smbios.c projects/netbsd-tests-update-12/sys/cam/scsi/scsi_da.c projects/netbsd-tests-update-12/sys/compat/cloudabi/cloudabi_util.h projects/netbsd-tests-update-12/sys/compat/cloudabi64/cloudabi64_module.c projects/netbsd-tests-update-12/sys/conf/files projects/netbsd-tests-update-12/sys/conf/files.amd64 projects/netbsd-tests-update-12/sys/conf/files.arm64 projects/netbsd-tests-update-12/sys/conf/files.i386 projects/netbsd-tests-update-12/sys/conf/files.riscv projects/netbsd-tests-update-12/sys/conf/kern.post.mk projects/netbsd-tests-update-12/sys/conf/ldscript.riscv projects/netbsd-tests-update-12/sys/dev/filemon/filemon.c projects/netbsd-tests-update-12/sys/dev/hyperv/include/vmbus.h projects/netbsd-tests-update-12/sys/dev/hyperv/netvsc/hv_net_vsc.c projects/netbsd-tests-update-12/sys/dev/hyperv/netvsc/hv_net_vsc.h projects/netbsd-tests-update-12/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c projects/netbsd-tests-update-12/sys/dev/hyperv/netvsc/hv_rndis.h projects/netbsd-tests-update-12/sys/dev/hyperv/netvsc/hv_rndis_filter.c projects/netbsd-tests-update-12/sys/dev/hyperv/netvsc/hv_rndis_filter.h projects/netbsd-tests-update-12/sys/dev/hyperv/vmbus/vmbus.c projects/netbsd-tests-update-12/sys/dev/hyperv/vmbus/vmbus_var.h projects/netbsd-tests-update-12/sys/dev/virtio/network/if_vtnet.c projects/netbsd-tests-update-12/sys/dev/virtio/network/if_vtnetvar.h projects/netbsd-tests-update-12/sys/fs/autofs/autofs_vnops.c projects/netbsd-tests-update-12/sys/fs/nfs/nfs_commonkrpc.c projects/netbsd-tests-update-12/sys/fs/nfs/nfs_commonport.c projects/netbsd-tests-update-12/sys/fs/nfs/nfsport.h projects/netbsd-tests-update-12/sys/fs/nfs/nfsproto.h projects/netbsd-tests-update-12/sys/fs/nfsclient/nfs_clbio.c projects/netbsd-tests-update-12/sys/fs/nfsclient/nfs_clcomsubs.c projects/netbsd-tests-update-12/sys/fs/nfsclient/nfs_clstate.c projects/netbsd-tests-update-12/sys/fs/nfsclient/nfs_clsubs.c projects/netbsd-tests-update-12/sys/fs/nfsclient/nfs_clvfsops.c projects/netbsd-tests-update-12/sys/fs/nfsclient/nfs_clvnops.c projects/netbsd-tests-update-12/sys/fs/nfsserver/nfs_nfsdcache.c projects/netbsd-tests-update-12/sys/fs/nfsserver/nfs_nfsdport.c projects/netbsd-tests-update-12/sys/fs/nfsserver/nfs_nfsdsocket.c projects/netbsd-tests-update-12/sys/fs/nfsserver/nfs_nfsdstate.c projects/netbsd-tests-update-12/sys/fs/smbfs/smbfs_node.c projects/netbsd-tests-update-12/sys/fs/tmpfs/tmpfs_subr.c projects/netbsd-tests-update-12/sys/fs/unionfs/union_vnops.c projects/netbsd-tests-update-12/sys/i386/i386/trap.c projects/netbsd-tests-update-12/sys/kern/kern_descrip.c projects/netbsd-tests-update-12/sys/kern/kern_kthread.c projects/netbsd-tests-update-12/sys/kern/kern_ktrace.c projects/netbsd-tests-update-12/sys/kern/kern_timeout.c projects/netbsd-tests-update-12/sys/kern/subr_taskqueue.c projects/netbsd-tests-update-12/sys/kern/vfs_bio.c projects/netbsd-tests-update-12/sys/kern/vfs_cluster.c projects/netbsd-tests-update-12/sys/kern/vfs_default.c projects/netbsd-tests-update-12/sys/kern/vfs_lookup.c projects/netbsd-tests-update-12/sys/kern/vfs_mount.c projects/netbsd-tests-update-12/sys/kern/vfs_subr.c projects/netbsd-tests-update-12/sys/kern/vnode_if.src projects/netbsd-tests-update-12/sys/modules/cloudabi/Makefile projects/netbsd-tests-update-12/sys/modules/cloudabi64/Makefile projects/netbsd-tests-update-12/sys/modules/dtb/allwinner/Makefile projects/netbsd-tests-update-12/sys/modules/hyperv/vmbus/Makefile projects/netbsd-tests-update-12/sys/net/ifdi_if.m projects/netbsd-tests-update-12/sys/net/iflib.c projects/netbsd-tests-update-12/sys/net/iflib.h projects/netbsd-tests-update-12/sys/netinet/ip_fw.h projects/netbsd-tests-update-12/sys/netinet/sctp_indata.c projects/netbsd-tests-update-12/sys/netinet/tcp_fastopen.c projects/netbsd-tests-update-12/sys/netpfil/ipfw/ip_fw2.c projects/netbsd-tests-update-12/sys/netpfil/ipfw/ip_fw_sockopt.c projects/netbsd-tests-update-12/sys/powerpc/include/bus_dma.h projects/netbsd-tests-update-12/sys/riscv/conf/GENERIC projects/netbsd-tests-update-12/sys/riscv/conf/QEMU projects/netbsd-tests-update-12/sys/riscv/conf/ROCKET projects/netbsd-tests-update-12/sys/riscv/conf/SPIKE projects/netbsd-tests-update-12/sys/riscv/include/cpufunc.h projects/netbsd-tests-update-12/sys/riscv/include/pcpu.h projects/netbsd-tests-update-12/sys/riscv/include/riscvreg.h projects/netbsd-tests-update-12/sys/riscv/include/vmparam.h projects/netbsd-tests-update-12/sys/riscv/riscv/exception.S projects/netbsd-tests-update-12/sys/riscv/riscv/genassym.c projects/netbsd-tests-update-12/sys/riscv/riscv/identcpu.c projects/netbsd-tests-update-12/sys/riscv/riscv/intr_machdep.c projects/netbsd-tests-update-12/sys/riscv/riscv/locore.S projects/netbsd-tests-update-12/sys/riscv/riscv/machdep.c projects/netbsd-tests-update-12/sys/riscv/riscv/mp_machdep.c projects/netbsd-tests-update-12/sys/riscv/riscv/pmap.c projects/netbsd-tests-update-12/sys/riscv/riscv/timer.c projects/netbsd-tests-update-12/sys/riscv/riscv/vm_machdep.c projects/netbsd-tests-update-12/sys/sys/_task.h projects/netbsd-tests-update-12/sys/sys/buf.h projects/netbsd-tests-update-12/sys/sys/taskqueue.h projects/netbsd-tests-update-12/sys/sys/vnode.h projects/netbsd-tests-update-12/sys/tools/embed_mfs.sh projects/netbsd-tests-update-12/sys/ufs/ffs/ffs_snapshot.c projects/netbsd-tests-update-12/sys/ufs/ffs/ffs_vnops.c projects/netbsd-tests-update-12/sys/ufs/ufs/ufs_lookup.c projects/netbsd-tests-update-12/sys/ufs/ufs/ufs_quota.c projects/netbsd-tests-update-12/sys/vm/vm_object.c projects/netbsd-tests-update-12/sys/vm/vm_pageout.c projects/netbsd-tests-update-12/tools/tools/ath/ath_ee_9300_print/main.c projects/netbsd-tests-update-12/usr.bin/kdump/kdump.c projects/netbsd-tests-update-12/usr.bin/truss/syscalls.c projects/netbsd-tests-update-12/usr.bin/xinstall/xinstall.c projects/netbsd-tests-update-12/usr.sbin/acpi/acpidump/acpi.c Directory Properties: projects/netbsd-tests-update-12/ (props changed) projects/netbsd-tests-update-12/cddl/ (props changed) Modified: projects/netbsd-tests-update-12/Makefile ============================================================================== --- projects/netbsd-tests-update-12/Makefile Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/Makefile Sat Aug 13 06:16:38 2016 (r304039) @@ -209,7 +209,8 @@ SUB_MAKE= `test -x ${MYMAKE} && echo ${M SUB_MAKE= ${MAKE} -m ${.CURDIR}/share/mk .endif -_MAKE= PATH=${PATH} ${SUB_MAKE} -f Makefile.inc1 TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} +_MAKE= PATH=${PATH} MAKE_CMD=${MAKE} ${SUB_MAKE} -f Makefile.inc1 \ + TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} # Only allow meta mode for the whitelisted targets. See META_TGT_WHITELIST # above. Modified: projects/netbsd-tests-update-12/Makefile.inc1 ============================================================================== --- projects/netbsd-tests-update-12/Makefile.inc1 Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/Makefile.inc1 Sat Aug 13 06:16:38 2016 (r304039) @@ -1013,7 +1013,7 @@ distributeworld installworld stageworld: ${IMAKEENV} rm -rf ${INSTALLTMP} .if make(distributeworld) .for dist in ${EXTRA_DISTRIBUTIONS} - find ${DESTDIR}/${DISTDIR}/${dist} -mindepth 1 -empty -delete + find ${DESTDIR}/${DISTDIR}/${dist} -mindepth 1 -type d -empty -delete .endfor .if defined(NO_ROOT) .for dist in base ${EXTRA_DISTRIBUTIONS} @@ -2378,11 +2378,11 @@ check-old-dirs: .PHONY done delete-old: delete-old-files delete-old-dirs .PHONY - @echo "To remove old libraries run '${MAKE} delete-old-libs'." + @echo "To remove old libraries run '${MAKE_CMD} delete-old-libs'." check-old: check-old-files check-old-libs check-old-dirs .PHONY - @echo "To remove old files and directories run '${MAKE} delete-old'." - @echo "To remove old libraries run '${MAKE} delete-old-libs'." + @echo "To remove old files and directories run '${MAKE_CMD} delete-old'." + @echo "To remove old libraries run '${MAKE_CMD} delete-old-libs'." .endif Modified: projects/netbsd-tests-update-12/bin/ps/ps.1 ============================================================================== --- projects/netbsd-tests-update-12/bin/ps/ps.1 Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/bin/ps/ps.1 Sat Aug 13 06:16:38 2016 (r304039) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd July 28, 2016 +.Dd August 12, 2016 .Dt PS 1 .Os .Sh NAME @@ -319,7 +319,6 @@ the include file .It Dv "P_ADVLOCK" Ta No "0x00001" Ta "Process may hold a POSIX advisory lock" .It Dv "P_CONTROLT" Ta No "0x00002" Ta "Has a controlling terminal" .It Dv "P_KPROC" Ta No "0x00004" Ta "Kernel process" -.It Dv "P_FOLLOWFORK" Ta No "0x00008" Ta "Attach debugger to new children" .It Dv "P_PPWAIT" Ta No "0x00010" Ta "Parent is waiting for child to exec/exit" .It Dv "P_PROFIL" Ta No "0x00020" Ta "Has started profiling" .It Dv "P_STOPPROF" Ta No "0x00040" Ta "Has thread in requesting to stop prof" @@ -768,7 +767,8 @@ operating systems. The .Nm command appeared in -.At v4 . +.At v3 +in section 8 of the manual. .Sh BUGS Since .Nm Modified: projects/netbsd-tests-update-12/cddl/usr.sbin/dtrace/tests/common/raise/Makefile ============================================================================== --- projects/netbsd-tests-update-12/cddl/usr.sbin/dtrace/tests/common/raise/Makefile Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/cddl/usr.sbin/dtrace/tests/common/raise/Makefile Sat Aug 13 06:16:38 2016 (r304039) @@ -20,4 +20,6 @@ CFILES= \ tst.raise3.c \ +TEST_METADATA.t_dtrace_contrib+= required_memory="4g" + .include "../../dtrace.test.mk" Modified: projects/netbsd-tests-update-12/cddl/usr.sbin/dtrace/tests/common/safety/Makefile ============================================================================== --- projects/netbsd-tests-update-12/cddl/usr.sbin/dtrace/tests/common/safety/Makefile Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/cddl/usr.sbin/dtrace/tests/common/safety/Makefile Sat Aug 13 06:16:38 2016 (r304039) @@ -53,4 +53,6 @@ CFILES= \ +TEST_METADATA.t_dtrace_contrib+= required_memory="4g" + .include "../../dtrace.test.mk" Modified: projects/netbsd-tests-update-12/cddl/usr.sbin/dtrace/tests/tools/genmakefiles.sh ============================================================================== --- projects/netbsd-tests-update-12/cddl/usr.sbin/dtrace/tests/tools/genmakefiles.sh Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/cddl/usr.sbin/dtrace/tests/tools/genmakefiles.sh Sat Aug 13 06:16:38 2016 (r304039) @@ -34,15 +34,28 @@ genmakefile() # One-off variable definitions. local special - if [ "$basedir" = proc ]; then + case "$basedir" in + proc) special=" LIBADD.tst.sigwait.exe+= rt " - elif [ "$basedir" = uctf ]; then + ;; + raise) + special=" +TEST_METADATA.t_dtrace_contrib+= required_memory=\"4g\" +" + ;; + safety) + special=" +TEST_METADATA.t_dtrace_contrib+= required_memory=\"4g\" +" + ;; + uctf) special=" WITH_CTF=YES " - fi + ;; + esac local makefile=$(mktemp) cat <<__EOF__ > $makefile Modified: projects/netbsd-tests-update-12/etc/rc.d/jail ============================================================================== --- projects/netbsd-tests-update-12/etc/rc.d/jail Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/etc/rc.d/jail Sat Aug 13 06:16:38 2016 (r304039) @@ -260,6 +260,7 @@ parse_options() extract_var $_jv set_hostname_allow allow.set_hostname YN NO extract_var $_jv sysvipc_allow allow.sysvipc YN NO + extract_var $_jv enforce_statfs enforce_statfs - 2 extract_var $_jv osreldate osreldate extract_var $_jv osrelease osrelease for _p in $_parameters; do Modified: projects/netbsd-tests-update-12/include/unistd.h ============================================================================== --- projects/netbsd-tests-update-12/include/unistd.h Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/include/unistd.h Sat Aug 13 06:16:38 2016 (r304039) @@ -484,11 +484,18 @@ pid_t vfork(void) __returns_twice; #if __BSD_VISIBLE struct timeval; /* select(2) */ + +struct crypt_data { + int initialized; /* For compatibility with glibc. */ + char __buf[256]; /* Buffer returned by crypt_r(). */ +}; + int acct(const char *); int async_daemon(void); int check_utility_compat(const char *); const char * crypt_get_format(void); +char *crypt_r(const char *, const char *, struct crypt_data *); int crypt_set_format(const char *); int des_cipher(const char *, char *, long, int); int des_setkey(const char *key); Modified: projects/netbsd-tests-update-12/lib/libc/gen/Makefile.inc ============================================================================== --- projects/netbsd-tests-update-12/lib/libc/gen/Makefile.inc Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/lib/libc/gen/Makefile.inc Sat Aug 13 06:16:38 2016 (r304039) @@ -29,6 +29,7 @@ SRCS+= __getosreldate.c \ devname.c \ dirfd.c \ dirname.c \ + dirname_compat.c \ disklabel.c \ dlfcn.c \ drand48.c \ Modified: projects/netbsd-tests-update-12/lib/libc/gen/Symbol.map ============================================================================== --- projects/netbsd-tests-update-12/lib/libc/gen/Symbol.map Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/lib/libc/gen/Symbol.map Sat Aug 13 06:16:38 2016 (r304039) @@ -82,7 +82,6 @@ FBSD_1.0 { daemon; devname; devname_r; - dirname; getdiskbyname; dladdr; dlclose; @@ -418,6 +417,10 @@ FBSD_1.4 { stravis; }; +FBSD_1.5 { + dirname; +}; + FBSDprivate_1.0 { /* needed by thread libraries */ __thr_jtable; Modified: projects/netbsd-tests-update-12/lib/libc/gen/dirname.3 ============================================================================== --- projects/netbsd-tests-update-12/lib/libc/gen/dirname.3 Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/lib/libc/gen/dirname.3 Sat Aug 13 06:16:38 2016 (r304039) @@ -16,7 +16,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 29, 2016 +.Dd August 12, 2016 .Dt DIRNAME 3 .Os .Sh NAME @@ -37,6 +37,7 @@ Any trailing .Sq \&/ characters are not counted as part of the directory name. +.Sh RETURN VALUES If .Fa path is a null pointer, the empty string, or contains no @@ -46,40 +47,24 @@ characters, returns a pointer to the string .Qq \&. , signifying the current directory. +Otherwise, +it returns a pointer to the parent directory of +.Fa path . .Sh IMPLEMENTATION NOTES -The +This implementation of .Fn dirname -function -returns a pointer to internal storage space allocated on the first call -that will be overwritten -by subsequent calls. +uses the buffer provided by the caller to store the resulting parent +directory. +Other vendor implementations may return a pointer to internal storage +space instead. +The advantage of the former approach is that it ensures thread-safety, +while also placing no upper limit on the supported length of the +pathname. .Pp -Other vendor implementations of -.Fn dirname -may store their result in the input buffer, -making it safe to use in multithreaded applications. -Future versions of -.Fx -will follow this approach as well. -.Sh RETURN VALUES -On successful completion, -.Fn dirname -returns a pointer to the parent directory of -.Fa path . -.Pp -If -.Fn dirname -fails, a null pointer is returned and the global variable -.Va errno -is set to indicate the error. -.Sh ERRORS -The following error codes may be set in -.Va errno : -.Bl -tag -width Er -.It Bq Er ENAMETOOLONG -The path component to be returned was larger than -.Dv MAXPATHLEN . -.El +The algorithm used by this implementation also discards redundant +slashes and +.Qq \&. +pathname components from the pathname string. .Sh SEE ALSO .Xr basename 1 , .Xr dirname 1 , @@ -96,5 +81,10 @@ function first appeared in .Ox 2.2 and .Fx 4.2 . +.Pp +In +.Fx 12.0 , +this function was reimplemented to store its result in the provided +input buffer. .Sh AUTHORS -.An "Todd C. Miller" +.An Nuxi, the Netherlands Modified: projects/netbsd-tests-update-12/lib/libc/gen/dirname.c ============================================================================== --- projects/netbsd-tests-update-12/lib/libc/gen/dirname.c Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/lib/libc/gen/dirname.c Sat Aug 13 06:16:38 2016 (r304039) @@ -1,77 +1,90 @@ -/* $OpenBSD: dirname.c,v 1.13 2005/08/08 08:05:33 espie Exp $ */ - -/* - * Copyright (c) 1997, 2004 Todd C. Miller +/*- + * Copyright (c) 2015-2016 Nuxi, https://nuxi.nl/ * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. */ #include __FBSDID("$FreeBSD$"); -#include #include -#include +#include #include -#include char * dirname(char *path) { - static char *dname = NULL; - size_t len; - const char *endp; - - if (dname == NULL) { - dname = (char *)malloc(MAXPATHLEN); - if (dname == NULL) - return(NULL); - } - - /* Empty or NULL string gets treated as "." */ - if (path == NULL || *path == '\0') { - dname[0] = '.'; - dname[1] = '\0'; - return (dname); + const char *in, *prev, *begin, *end; + char *out; + size_t prevlen; + bool skipslash; + + /* + * If path is a null pointer or points to an empty string, + * dirname() shall return a pointer to the string ".". + */ + if (path == NULL || *path == '\0') + return ((char *)"."); + + /* Retain at least one leading slash character. */ + in = out = *path == '/' ? path + 1 : path; + + skipslash = true; + prev = "."; + prevlen = 1; + for (;;) { + /* Extract the next pathname component. */ + while (*in == '/') + ++in; + begin = in; + while (*in != '/' && *in != '\0') + ++in; + end = in; + if (begin == end) + break; + + /* + * Copy over the previous pathname component, except if + * it's dot. There is no point in retaining those. + */ + if (prevlen != 1 || *prev != '.') { + if (!skipslash) + *out++ = '/'; + skipslash = false; + memmove(out, prev, prevlen); + out += prevlen; + } + + /* Preserve the pathname component for the next iteration. */ + prev = begin; + prevlen = end - begin; } - /* Strip any trailing slashes */ - endp = path + strlen(path) - 1; - while (endp > path && *endp == '/') - endp--; - - /* Find the start of the dir */ - while (endp > path && *endp != '/') - endp--; - - /* Either the dir is "/" or there are no slashes */ - if (endp == path) { - dname[0] = *endp == '/' ? '/' : '.'; - dname[1] = '\0'; - return (dname); - } else { - /* Move forward past the separating slashes */ - do { - endp--; - } while (endp > path && *endp == '/'); - } - - len = endp - path + 1; - if (len >= MAXPATHLEN) { - errno = ENAMETOOLONG; - return (NULL); - } - memcpy(dname, path, len); - dname[len] = '\0'; - return (dname); + /* + * If path does not contain a '/', then dirname() shall return a + * pointer to the string ".". + */ + if (out == path) + *out++ = '.'; + *out = '\0'; + return (path); } Copied: projects/netbsd-tests-update-12/lib/libc/gen/dirname_compat.c (from r304038, head/lib/libc/gen/dirname_compat.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/netbsd-tests-update-12/lib/libc/gen/dirname_compat.c Sat Aug 13 06:16:38 2016 (r304039, copy of r304038, head/lib/libc/gen/dirname_compat.c) @@ -0,0 +1,79 @@ +/* $OpenBSD: dirname.c,v 1.13 2005/08/08 08:05:33 espie Exp $ */ + +/* + * Copyright (c) 1997, 2004 Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include + +char * +__freebsd11_dirname(char *path) +{ + static char *dname = NULL; + size_t len; + const char *endp; + + if (dname == NULL) { + dname = (char *)malloc(MAXPATHLEN); + if (dname == NULL) + return(NULL); + } + + /* Empty or NULL string gets treated as "." */ + if (path == NULL || *path == '\0') { + dname[0] = '.'; + dname[1] = '\0'; + return (dname); + } + + /* Strip any trailing slashes */ + endp = path + strlen(path) - 1; + while (endp > path && *endp == '/') + endp--; + + /* Find the start of the dir */ + while (endp > path && *endp != '/') + endp--; + + /* Either the dir is "/" or there are no slashes */ + if (endp == path) { + dname[0] = *endp == '/' ? '/' : '.'; + dname[1] = '\0'; + return (dname); + } else { + /* Move forward past the separating slashes */ + do { + endp--; + } while (endp > path && *endp == '/'); + } + + len = endp - path + 1; + if (len >= MAXPATHLEN) { + errno = ENAMETOOLONG; + return (NULL); + } + memcpy(dname, path, len); + dname[len] = '\0'; + return (dname); +} + +__sym_compat(dirname, __freebsd11_dirname, FBSD_1.0); Modified: projects/netbsd-tests-update-12/lib/libc/net/getaddrinfo.c ============================================================================== --- projects/netbsd-tests-update-12/lib/libc/net/getaddrinfo.c Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/lib/libc/net/getaddrinfo.c Sat Aug 13 06:16:38 2016 (r304039) @@ -2249,6 +2249,8 @@ _dns_getaddrinfo(void *rv, void *cb_data struct res_target q, q2; res_state res; + ai = NULL; + hostname = va_arg(ap, char *); pai = va_arg(ap, const struct addrinfo *); @@ -2327,16 +2329,16 @@ _dns_getaddrinfo(void *rv, void *cb_data /* prefer IPv6 */ if (q.next) { ai = getanswer(buf2, q2.n, q2.name, q2.qtype, pai, res); - if (ai) { + if (ai != NULL) { cur->ai_next = ai; while (cur && cur->ai_next) cur = cur->ai_next; } } - if (!ai || pai->ai_family != AF_UNSPEC || + if (ai == NULL || pai->ai_family != AF_UNSPEC || (pai->ai_flags & (AI_ALL | AI_V4MAPPED)) != AI_V4MAPPED) { ai = getanswer(buf, q.n, q.name, q.qtype, pai, res); - if (ai) + if (ai != NULL) cur->ai_next = ai; } free(buf); Modified: projects/netbsd-tests-update-12/lib/libc/tests/resolv/resolv_test.c ============================================================================== --- projects/netbsd-tests-update-12/lib/libc/tests/resolv/resolv_test.c Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/lib/libc/tests/resolv/resolv_test.c Sat Aug 13 06:16:38 2016 (r304039) @@ -291,7 +291,7 @@ do { \ ATF_TC(getaddrinfo_test); ATF_TC_HEAD(getaddrinfo_test, tc) { - atf_tc_set_md_var(tc, "timeout", "450"); + atf_tc_set_md_var(tc, "timeout", "1200"); } ATF_TC_BODY(getaddrinfo_test, tc) { @@ -301,7 +301,7 @@ ATF_TC_BODY(getaddrinfo_test, tc) ATF_TC(gethostby_test); ATF_TC_HEAD(gethostby_test, tc) { - atf_tc_set_md_var(tc, "timeout", "450"); + atf_tc_set_md_var(tc, "timeout", "1200"); } ATF_TC_BODY(gethostby_test, tc) { @@ -312,7 +312,7 @@ ATF_TC_BODY(gethostby_test, tc) ATF_TC(getipnodeby_test); ATF_TC_HEAD(getipnodeby_test, tc) { - atf_tc_set_md_var(tc, "timeout", "450"); + atf_tc_set_md_var(tc, "timeout", "1200"); } ATF_TC_BODY(getipnodeby_test, tc) { Modified: projects/netbsd-tests-update-12/lib/libcrypt/Makefile ============================================================================== --- projects/netbsd-tests-update-12/lib/libcrypt/Makefile Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/lib/libcrypt/Makefile Sat Aug 13 06:16:38 2016 (r304039) @@ -17,7 +17,8 @@ SRCS= crypt.c misc.c \ crypt-sha256.c sha256c.c \ crypt-sha512.c sha512c.c MAN= crypt.3 -MLINKS= crypt.3 crypt_get_format.3 crypt.3 crypt_set_format.3 +MLINKS= crypt.3 crypt_get_format.3 crypt.3 crypt_r.3 \ + crypt.3 crypt_set_format.3 CFLAGS+= -I${.CURDIR}/../libmd -I${.CURDIR}/../libutil \ -I${.CURDIR}/../../sys/crypto/sha2 Modified: projects/netbsd-tests-update-12/lib/libcrypt/crypt-md5.c ============================================================================== --- projects/netbsd-tests-update-12/lib/libcrypt/crypt-md5.c Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/lib/libcrypt/crypt-md5.c Sat Aug 13 06:16:38 2016 (r304039) @@ -41,31 +41,27 @@ __FBSDID("$FreeBSD$"); * UNIX password */ -char * -crypt_md5(const char *pw, const char *salt) +int +crypt_md5(const char *pw, const char *salt, char *buffer) { MD5_CTX ctx,ctx1; unsigned long l; int sl, pl; u_int i; u_char final[MD5_SIZE]; - static const char *sp, *ep; - static char passwd[120], *p; + const char *ep; static const char *magic = "$1$"; - /* Refine the Salt first */ - sp = salt; - - /* If it starts with the magic string, then skip that */ - if(!strncmp(sp, magic, strlen(magic))) - sp += strlen(magic); + /* If the salt starts with the magic string, skip that. */ + if (!strncmp(salt, magic, strlen(magic))) + salt += strlen(magic); /* It stops at the first '$', max 8 chars */ - for(ep = sp; *ep && *ep != '$' && ep < (sp + 8); ep++) + for (ep = salt; *ep && *ep != '$' && ep < salt + 8; ep++) continue; /* get the length of the true salt */ - sl = ep - sp; + sl = ep - salt; MD5Init(&ctx); @@ -76,12 +72,12 @@ crypt_md5(const char *pw, const char *sa MD5Update(&ctx, (const u_char *)magic, strlen(magic)); /* Then the raw salt */ - MD5Update(&ctx, (const u_char *)sp, (u_int)sl); + MD5Update(&ctx, (const u_char *)salt, (u_int)sl); /* Then just as many characters of the MD5(pw,salt,pw) */ MD5Init(&ctx1); MD5Update(&ctx1, (const u_char *)pw, strlen(pw)); - MD5Update(&ctx1, (const u_char *)sp, (u_int)sl); + MD5Update(&ctx1, (const u_char *)salt, (u_int)sl); MD5Update(&ctx1, (const u_char *)pw, strlen(pw)); MD5Final(final, &ctx1); for(pl = (int)strlen(pw); pl > 0; pl -= MD5_SIZE) @@ -99,9 +95,9 @@ crypt_md5(const char *pw, const char *sa MD5Update(&ctx, (const u_char *)pw, 1); /* Now make the output string */ - strcpy(passwd, magic); - strncat(passwd, sp, (u_int)sl); - strcat(passwd, "$"); + buffer = stpcpy(buffer, magic); + buffer = stpncpy(buffer, salt, (u_int)sl); + *buffer++ = '$'; MD5Final(final, &ctx); @@ -118,7 +114,7 @@ crypt_md5(const char *pw, const char *sa MD5Update(&ctx1, (const u_char *)final, MD5_SIZE); if(i % 3) - MD5Update(&ctx1, (const u_char *)sp, (u_int)sl); + MD5Update(&ctx1, (const u_char *)salt, (u_int)sl); if(i % 7) MD5Update(&ctx1, (const u_char *)pw, strlen(pw)); @@ -130,24 +126,22 @@ crypt_md5(const char *pw, const char *sa MD5Final(final, &ctx1); } - p = passwd + strlen(passwd); - l = (final[ 0]<<16) | (final[ 6]<<8) | final[12]; - _crypt_to64(p, l, 4); p += 4; + _crypt_to64(buffer, l, 4); buffer += 4; l = (final[ 1]<<16) | (final[ 7]<<8) | final[13]; - _crypt_to64(p, l, 4); p += 4; + _crypt_to64(buffer, l, 4); buffer += 4; l = (final[ 2]<<16) | (final[ 8]<<8) | final[14]; - _crypt_to64(p, l, 4); p += 4; + _crypt_to64(buffer, l, 4); buffer += 4; l = (final[ 3]<<16) | (final[ 9]<<8) | final[15]; - _crypt_to64(p, l, 4); p += 4; + _crypt_to64(buffer, l, 4); buffer += 4; l = (final[ 4]<<16) | (final[10]<<8) | final[ 5]; - _crypt_to64(p, l, 4); p += 4; + _crypt_to64(buffer, l, 4); buffer += 4; l = final[11]; - _crypt_to64(p, l, 2); p += 2; - *p = '\0'; + _crypt_to64(buffer, l, 2); buffer += 2; + *buffer = '\0'; /* Don't leave anything around in vm they could use. */ memset(final, 0, sizeof(final)); - return (passwd); + return (0); } Modified: projects/netbsd-tests-update-12/lib/libcrypt/crypt-nthash.c ============================================================================== --- projects/netbsd-tests-update-12/lib/libcrypt/crypt-nthash.c Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/lib/libcrypt/crypt-nthash.c Sat Aug 13 06:16:38 2016 (r304039) @@ -46,16 +46,14 @@ __FBSDID("$FreeBSD$"); */ /* ARGSUSED */ -char * -crypt_nthash(const char *pw, const char *salt __unused) +int +crypt_nthash(const char *pw, const char *salt __unused, char *buffer) { size_t unipwLen; - int i, j; - static char hexconvtab[] = "0123456789abcdef"; + int i; + static const char hexconvtab[] = "0123456789abcdef"; static const char *magic = "$3$"; - static char passwd[120]; u_int16_t unipw[128]; - char final[MD4_SIZE*2 + 1]; u_char hash[MD4_SIZE]; const char *s; MD4_CTX ctx; @@ -70,19 +68,14 @@ crypt_nthash(const char *pw, const char MD4Init(&ctx); MD4Update(&ctx, (u_char *)unipw, unipwLen*sizeof(u_int16_t)); MD4Final(hash, &ctx); - - for (i = j = 0; i < MD4_SIZE; i++) { - final[j++] = hexconvtab[hash[i] >> 4]; - final[j++] = hexconvtab[hash[i] & 15]; - } - final[j] = '\0'; - - strcpy(passwd, magic); - strcat(passwd, "$"); - strncat(passwd, final, MD4_SIZE*2); - /* Don't leave anything around in vm they could use. */ - memset(final, 0, sizeof(final)); + buffer = stpcpy(buffer, magic); + *buffer++ = '$'; + for (i = 0; i < MD4_SIZE; i++) { + *buffer++ = hexconvtab[hash[i] >> 4]; + *buffer++ = hexconvtab[hash[i] & 15]; + } + *buffer = '\0'; - return (passwd); + return (0); } Modified: projects/netbsd-tests-update-12/lib/libcrypt/crypt-sha256.c ============================================================================== --- projects/netbsd-tests-update-12/lib/libcrypt/crypt-sha256.c Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/lib/libcrypt/crypt-sha256.c Sat Aug 13 06:16:38 2016 (r304039) @@ -59,11 +59,10 @@ static const char sha256_rounds_prefix[] /* Maximum number of rounds. */ #define ROUNDS_MAX 999999999 -static char * -crypt_sha256_r(const char *key, const char *salt, char *buffer, int buflen) +int +crypt_sha256(const char *key, const char *salt, char *buffer) { u_long srounds; - int n; uint8_t alt_result[32], temp_result[32]; SHA256_CTX ctx, alt_ctx; size_t salt_len, key_len, cnt, rounds; @@ -210,42 +209,27 @@ crypt_sha256_r(const char *key, const ch /* Now we can construct the result string. It consists of three * parts. */ - cp = stpncpy(buffer, sha256_salt_prefix, MAX(0, buflen)); - buflen -= sizeof(sha256_salt_prefix) - 1; + cp = stpcpy(buffer, sha256_salt_prefix); - if (rounds_custom) { - n = snprintf(cp, MAX(0, buflen), "%s%zu$", - sha256_rounds_prefix, rounds); + if (rounds_custom) + cp += sprintf(cp, "%s%zu$", sha256_rounds_prefix, rounds); - cp += n; - buflen -= n; - } + cp = stpncpy(cp, salt, salt_len); - cp = stpncpy(cp, salt, MIN((size_t)MAX(0, buflen), salt_len)); - buflen -= MIN((size_t)MAX(0, buflen), salt_len); + *cp++ = '$'; - if (buflen > 0) { - *cp++ = '$'; - --buflen; - } - - b64_from_24bit(alt_result[0], alt_result[10], alt_result[20], 4, &buflen, &cp); - b64_from_24bit(alt_result[21], alt_result[1], alt_result[11], 4, &buflen, &cp); - b64_from_24bit(alt_result[12], alt_result[22], alt_result[2], 4, &buflen, &cp); - b64_from_24bit(alt_result[3], alt_result[13], alt_result[23], 4, &buflen, &cp); - b64_from_24bit(alt_result[24], alt_result[4], alt_result[14], 4, &buflen, &cp); - b64_from_24bit(alt_result[15], alt_result[25], alt_result[5], 4, &buflen, &cp); - b64_from_24bit(alt_result[6], alt_result[16], alt_result[26], 4, &buflen, &cp); - b64_from_24bit(alt_result[27], alt_result[7], alt_result[17], 4, &buflen, &cp); - b64_from_24bit(alt_result[18], alt_result[28], alt_result[8], 4, &buflen, &cp); - b64_from_24bit(alt_result[9], alt_result[19], alt_result[29], 4, &buflen, &cp); - b64_from_24bit(0, alt_result[31], alt_result[30], 3, &buflen, &cp); - if (buflen <= 0) { - errno = ERANGE; - buffer = NULL; - } - else - *cp = '\0'; /* Terminate the string. */ + b64_from_24bit(alt_result[0], alt_result[10], alt_result[20], 4, &cp); + b64_from_24bit(alt_result[21], alt_result[1], alt_result[11], 4, &cp); + b64_from_24bit(alt_result[12], alt_result[22], alt_result[2], 4, &cp); + b64_from_24bit(alt_result[3], alt_result[13], alt_result[23], 4, &cp); + b64_from_24bit(alt_result[24], alt_result[4], alt_result[14], 4, &cp); + b64_from_24bit(alt_result[15], alt_result[25], alt_result[5], 4, &cp); + b64_from_24bit(alt_result[6], alt_result[16], alt_result[26], 4, &cp); + b64_from_24bit(alt_result[27], alt_result[7], alt_result[17], 4, &cp); + b64_from_24bit(alt_result[18], alt_result[28], alt_result[8], 4, &cp); + b64_from_24bit(alt_result[9], alt_result[19], alt_result[29], 4, &cp); + b64_from_24bit(0, alt_result[31], alt_result[30], 3, &cp); + *cp = '\0'; /* Terminate the string. */ /* Clear the buffer for the intermediate result so that people * attaching to processes or reading core dumps cannot get any @@ -263,37 +247,7 @@ crypt_sha256_r(const char *key, const ch if (copied_salt != NULL) memset(copied_salt, '\0', salt_len); - return buffer; -} - -/* This entry point is equivalent to crypt(3). */ -char * -crypt_sha256(const char *key, const char *salt) -{ - /* We don't want to have an arbitrary limit in the size of the - * password. We can compute an upper bound for the size of the - * result in advance and so we can prepare the buffer we pass to - * `crypt_sha256_r'. */ - static char *buffer; - static int buflen; - int needed; - char *new_buffer; - - needed = (sizeof(sha256_salt_prefix) - 1 - + sizeof(sha256_rounds_prefix) + 9 + 1 - + strlen(salt) + 1 + 43 + 1); - - if (buflen < needed) { - new_buffer = (char *)realloc(buffer, needed); - - if (new_buffer == NULL) - return NULL; - - buffer = new_buffer; - buflen = needed; - } - - return crypt_sha256_r(key, salt, buffer, buflen); + return (0); } #ifdef TEST Modified: projects/netbsd-tests-update-12/lib/libcrypt/crypt-sha512.c ============================================================================== --- projects/netbsd-tests-update-12/lib/libcrypt/crypt-sha512.c Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/lib/libcrypt/crypt-sha512.c Sat Aug 13 06:16:38 2016 (r304039) @@ -59,11 +59,10 @@ static const char sha512_rounds_prefix[] /* Maximum number of rounds. */ #define ROUNDS_MAX 999999999 -static char * -crypt_sha512_r(const char *key, const char *salt, char *buffer, int buflen) +int +crypt_sha512(const char *key, const char *salt, char *buffer) { u_long srounds; - int n; uint8_t alt_result[64], temp_result[64]; SHA512_CTX ctx, alt_ctx; size_t salt_len, key_len, cnt, rounds; @@ -210,54 +209,39 @@ crypt_sha512_r(const char *key, const ch /* Now we can construct the result string. It consists of three * parts. */ - cp = stpncpy(buffer, sha512_salt_prefix, MAX(0, buflen)); - buflen -= sizeof(sha512_salt_prefix) - 1; + cp = stpcpy(buffer, sha512_salt_prefix); - if (rounds_custom) { - n = snprintf(cp, MAX(0, buflen), "%s%zu$", - sha512_rounds_prefix, rounds); + if (rounds_custom) + cp += sprintf(cp, "%s%zu$", sha512_rounds_prefix, rounds); - cp += n; - buflen -= n; - } + cp = stpncpy(cp, salt, salt_len); - cp = stpncpy(cp, salt, MIN((size_t)MAX(0, buflen), salt_len)); - buflen -= MIN((size_t)MAX(0, buflen), salt_len); + *cp++ = '$'; - if (buflen > 0) { - *cp++ = '$'; - --buflen; - } + b64_from_24bit(alt_result[0], alt_result[21], alt_result[42], 4, &cp); + b64_from_24bit(alt_result[22], alt_result[43], alt_result[1], 4, &cp); + b64_from_24bit(alt_result[44], alt_result[2], alt_result[23], 4, &cp); + b64_from_24bit(alt_result[3], alt_result[24], alt_result[45], 4, &cp); + b64_from_24bit(alt_result[25], alt_result[46], alt_result[4], 4, &cp); + b64_from_24bit(alt_result[47], alt_result[5], alt_result[26], 4, &cp); + b64_from_24bit(alt_result[6], alt_result[27], alt_result[48], 4, &cp); + b64_from_24bit(alt_result[28], alt_result[49], alt_result[7], 4, &cp); + b64_from_24bit(alt_result[50], alt_result[8], alt_result[29], 4, &cp); + b64_from_24bit(alt_result[9], alt_result[30], alt_result[51], 4, &cp); + b64_from_24bit(alt_result[31], alt_result[52], alt_result[10], 4, &cp); + b64_from_24bit(alt_result[53], alt_result[11], alt_result[32], 4, &cp); + b64_from_24bit(alt_result[12], alt_result[33], alt_result[54], 4, &cp); + b64_from_24bit(alt_result[34], alt_result[55], alt_result[13], 4, &cp); + b64_from_24bit(alt_result[56], alt_result[14], alt_result[35], 4, &cp); + b64_from_24bit(alt_result[15], alt_result[36], alt_result[57], 4, &cp); + b64_from_24bit(alt_result[37], alt_result[58], alt_result[16], 4, &cp); + b64_from_24bit(alt_result[59], alt_result[17], alt_result[38], 4, &cp); + b64_from_24bit(alt_result[18], alt_result[39], alt_result[60], 4, &cp); + b64_from_24bit(alt_result[40], alt_result[61], alt_result[19], 4, &cp); + b64_from_24bit(alt_result[62], alt_result[20], alt_result[41], 4, &cp); + b64_from_24bit(0, 0, alt_result[63], 2, &cp); - b64_from_24bit(alt_result[0], alt_result[21], alt_result[42], 4, &buflen, &cp); - b64_from_24bit(alt_result[22], alt_result[43], alt_result[1], 4, &buflen, &cp); - b64_from_24bit(alt_result[44], alt_result[2], alt_result[23], 4, &buflen, &cp); - b64_from_24bit(alt_result[3], alt_result[24], alt_result[45], 4, &buflen, &cp); - b64_from_24bit(alt_result[25], alt_result[46], alt_result[4], 4, &buflen, &cp); - b64_from_24bit(alt_result[47], alt_result[5], alt_result[26], 4, &buflen, &cp); - b64_from_24bit(alt_result[6], alt_result[27], alt_result[48], 4, &buflen, &cp); - b64_from_24bit(alt_result[28], alt_result[49], alt_result[7], 4, &buflen, &cp); - b64_from_24bit(alt_result[50], alt_result[8], alt_result[29], 4, &buflen, &cp); - b64_from_24bit(alt_result[9], alt_result[30], alt_result[51], 4, &buflen, &cp); - b64_from_24bit(alt_result[31], alt_result[52], alt_result[10], 4, &buflen, &cp); - b64_from_24bit(alt_result[53], alt_result[11], alt_result[32], 4, &buflen, &cp); - b64_from_24bit(alt_result[12], alt_result[33], alt_result[54], 4, &buflen, &cp); - b64_from_24bit(alt_result[34], alt_result[55], alt_result[13], 4, &buflen, &cp); - b64_from_24bit(alt_result[56], alt_result[14], alt_result[35], 4, &buflen, &cp); - b64_from_24bit(alt_result[15], alt_result[36], alt_result[57], 4, &buflen, &cp); - b64_from_24bit(alt_result[37], alt_result[58], alt_result[16], 4, &buflen, &cp); - b64_from_24bit(alt_result[59], alt_result[17], alt_result[38], 4, &buflen, &cp); - b64_from_24bit(alt_result[18], alt_result[39], alt_result[60], 4, &buflen, &cp); - b64_from_24bit(alt_result[40], alt_result[61], alt_result[19], 4, &buflen, &cp); - b64_from_24bit(alt_result[62], alt_result[20], alt_result[41], 4, &buflen, &cp); - b64_from_24bit(0, 0, alt_result[63], 2, &buflen, &cp); - - if (buflen <= 0) { - errno = ERANGE; - buffer = NULL; - } - else - *cp = '\0'; /* Terminate the string. */ + *cp = '\0'; /* Terminate the string. */ /* Clear the buffer for the intermediate result so that people * attaching to processes or reading core dumps cannot get any @@ -275,37 +259,7 @@ crypt_sha512_r(const char *key, const ch if (copied_salt != NULL) memset(copied_salt, '\0', salt_len); - return buffer; -} - -/* This entry point is equivalent to crypt(3). */ -char * -crypt_sha512(const char *key, const char *salt) -{ - /* We don't want to have an arbitrary limit in the size of the - * password. We can compute an upper bound for the size of the - * result in advance and so we can prepare the buffer we pass to - * `crypt_sha512_r'. */ - static char *buffer; - static int buflen; - int needed; - char *new_buffer; - - needed = (sizeof(sha512_salt_prefix) - 1 - + sizeof(sha512_rounds_prefix) + 9 + 1 - + strlen(salt) + 1 + 86 + 1); - - if (buflen < needed) { - new_buffer = (char *)realloc(buffer, needed); - - if (new_buffer == NULL) - return NULL; - - buffer = new_buffer; - buflen = needed; - } - - return crypt_sha512_r(key, salt, buffer, buflen); + return (0); } #ifdef TEST Modified: projects/netbsd-tests-update-12/lib/libcrypt/crypt.3 ============================================================================== --- projects/netbsd-tests-update-12/lib/libcrypt/crypt.3 Sat Aug 13 06:11:53 2016 (r304038) +++ projects/netbsd-tests-update-12/lib/libcrypt/crypt.3 Sat Aug 13 06:16:38 2016 (r304039) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 9, 2014 +.Dd August 10, 2016 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Sat Aug 13 15:48:35 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9ECC5BABF68 for ; Sat, 13 Aug 2016 15:48:35 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 62F0614EB; Sat, 13 Aug 2016 15:48:35 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7DFmYrX037042; Sat, 13 Aug 2016 15:48:34 GMT (envelope-from nwhitehorn@FreeBSD.org) Received: (from nwhitehorn@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7DFmYsR037038; Sat, 13 Aug 2016 15:48:34 GMT (envelope-from nwhitehorn@FreeBSD.org) Message-Id: <201608131548.u7DFmYsR037038@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: nwhitehorn set sender to nwhitehorn@FreeBSD.org using -f From: Nathan Whitehorn Date: Sat, 13 Aug 2016 15:48:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r304042 - projects/powernv/kern 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.22 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: Sat, 13 Aug 2016 15:48:35 -0000 Author: nwhitehorn Date: Sat Aug 13 15:48:34 2016 New Revision: 304042 URL: https://svnweb.freebsd.org/changeset/base/304042 Log: More fixes and extra debugging for systems that have sparse CPU maps and on which the BSP is not CPU 0 (and CPU 0 may not even exist). Modified: projects/powernv/kern/kern_clock.c projects/powernv/kern/kern_clocksource.c projects/powernv/kern/kern_shutdown.c projects/powernv/kern/subr_pcpu.c Modified: projects/powernv/kern/kern_clock.c ============================================================================== --- projects/powernv/kern/kern_clock.c Sat Aug 13 15:41:04 2016 (r304041) +++ projects/powernv/kern/kern_clock.c Sat Aug 13 15:48:34 2016 (r304042) @@ -608,7 +608,9 @@ hardclock_cnt(int cnt, int usermode) void hardclock_sync(int cpu) { - int *t = DPCPU_ID_PTR(cpu, pcputicks); + int *t; + KASSERT(!CPU_ABSENT(cpu), ("Absent CPU %d", cpu)); + t = DPCPU_ID_PTR(cpu, pcputicks); *t = ticks; } Modified: projects/powernv/kern/kern_clocksource.c ============================================================================== --- projects/powernv/kern/kern_clocksource.c Sat Aug 13 15:41:04 2016 (r304041) +++ projects/powernv/kern/kern_clocksource.c Sat Aug 13 15:48:34 2016 (r304042) @@ -823,6 +823,8 @@ cpu_new_callout(int cpu, sbintime_t bt, CTR6(KTR_SPARE2, "new co at %d: on %d at %d.%08x - %d.%08x", curcpu, cpu, (int)(bt_opt >> 32), (u_int)(bt_opt & 0xffffffff), (int)(bt >> 32), (u_int)(bt & 0xffffffff)); + + KASSERT(!CPU_ABSENT(cpu), ("Absent CPU %d", cpu)); state = DPCPU_ID_PTR(cpu, timerstate); ET_HW_LOCK(state); Modified: projects/powernv/kern/kern_shutdown.c ============================================================================== --- projects/powernv/kern/kern_shutdown.c Sat Aug 13 15:41:04 2016 (r304041) +++ projects/powernv/kern/kern_shutdown.c Sat Aug 13 15:48:34 2016 (r304042) @@ -322,15 +322,16 @@ kern_reboot(int howto) #if defined(SMP) /* - * Bind us to CPU 0 so that all shutdown code runs there. Some + * Bind us to the first CPU so that all shutdown code runs there. Some * systems don't shutdown properly (i.e., ACPI power off) if we * run on another processor. */ if (!SCHEDULER_STOPPED()) { thread_lock(curthread); - sched_bind(curthread, 0); + sched_bind(curthread, CPU_FIRST()); thread_unlock(curthread); - KASSERT(PCPU_GET(cpuid) == 0, ("boot: not running on cpu 0")); + KASSERT(PCPU_GET(cpuid) == CPU_FIRST(), + ("boot: not running on cpu 0")); } #endif /* We're in the process of rebooting. */ Modified: projects/powernv/kern/subr_pcpu.c ============================================================================== --- projects/powernv/kern/subr_pcpu.c Sat Aug 13 15:41:04 2016 (r304041) +++ projects/powernv/kern/subr_pcpu.c Sat Aug 13 15:48:34 2016 (r304042) @@ -277,6 +277,8 @@ pcpu_destroy(struct pcpu *pcpu) struct pcpu * pcpu_find(u_int cpuid) { + KASSERT(cpuid_to_pcpu[cpuid] != NULL, + ("Getting unitialized PCPU %d", cpuid)); return (cpuid_to_pcpu[cpuid]); } @@ -407,7 +409,7 @@ DB_SHOW_ALL_COMMAND(pcpu, db_show_cpu_al int id; db_printf("Current CPU: %d\n\n", PCPU_GET(cpuid)); - for (id = 0; id <= mp_maxid; id++) { + CPU_FOREACH(id) { pc = pcpu_find(id); if (pc != NULL) { show_pcpu(pc); From owner-svn-src-projects@freebsd.org Sat Aug 13 15:49:47 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5EFBDBB800F for ; Sat, 13 Aug 2016 15:49:47 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 302851792; Sat, 13 Aug 2016 15:49:47 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7DFnkjW037172; Sat, 13 Aug 2016 15:49:46 GMT (envelope-from nwhitehorn@FreeBSD.org) Received: (from nwhitehorn@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7DFnkPt037171; Sat, 13 Aug 2016 15:49:46 GMT (envelope-from nwhitehorn@FreeBSD.org) Message-Id: <201608131549.u7DFnkPt037171@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: nwhitehorn set sender to nwhitehorn@FreeBSD.org using -f From: Nathan Whitehorn Date: Sat, 13 Aug 2016 15:49:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r304044 - projects/powernv/powerpc/aim 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.22 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: Sat, 13 Aug 2016 15:49:47 -0000 Author: nwhitehorn Date: Sat Aug 13 15:49:46 2016 New Revision: 304044 URL: https://svnweb.freebsd.org/changeset/base/304044 Log: Don't rely on having mapped trap vectors. This allows the system to run with low memory unmapped, which can be useful during debugging to catch NULL pointer dereferences. Modified: projects/powernv/powerpc/aim/trap_subr64.S Modified: projects/powernv/powerpc/aim/trap_subr64.S ============================================================================== --- projects/powernv/powerpc/aim/trap_subr64.S Sat Aug 13 15:48:56 2016 (r304043) +++ projects/powernv/powerpc/aim/trap_subr64.S Sat Aug 13 15:49:46 2016 (r304044) @@ -720,11 +720,13 @@ u_trap: * Now the common trap catching code. */ k_trap: + GET_TOCBASE(%r31) /* Get TOC base while we can */ + mtsprg2 %r31 FRAME_SETUP(PC_TEMPSAVE) -/* Call C interrupt dispatcher: */ -trapagain: - GET_TOCBASE(%r2) + + /* Call C interrupt dispatcher: */ addi %r3,%r1,48 + mfsprg2 %r2 bl CNAME(powerpc_interrupt) nop @@ -750,7 +752,6 @@ CNAME(trapexit): ori %r3,%r3,PSL_EE@l mtmsr %r3 isync - GET_TOCBASE(%r2) addi %r3,%r1,48 bl CNAME(ast) nop @@ -797,9 +798,11 @@ dbtrap: ld %r1,TOC_REF(tmpstk)(%r1) addi %r1,%r1,(TMPSTKSZ-48) + GET_TOCBASE(%r31) + mtsprg2 %r31 FRAME_SETUP(PC_DBSAVE) /* Call C trap code: */ - GET_TOCBASE(%r2) + mfsprg2 %r2 addi %r3,%r1,48 bl CNAME(db_trap_glue) nop From owner-svn-src-projects@freebsd.org Sat Aug 13 22:51:39 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0DE93BB8922 for ; Sat, 13 Aug 2016 22:51:39 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 9D0671F20; Sat, 13 Aug 2016 22:51:38 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7DMpbwP093091; Sat, 13 Aug 2016 22:51:37 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7DMpboZ093082; Sat, 13 Aug 2016 22:51:37 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201608132251.u7DMpboZ093082@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sat, 13 Aug 2016 22:51:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r304062 - in projects/netbsd-tests-update-12: cddl/contrib/opensolaris/tools/ctf/cvt sbin/ipfw share/timedef sys/conf sys/kern sys/modules sys/modules/ipfw sys/modules/ipfw_nat64 sys/ne... 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.22 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: Sat, 13 Aug 2016 22:51:39 -0000 Author: ngie Date: Sat Aug 13 22:51:36 2016 New Revision: 304062 URL: https://svnweb.freebsd.org/changeset/base/304062 Log: MFhead @ r304061 Added: projects/netbsd-tests-update-12/sbin/ipfw/nat64lsn.c - copied unchanged from r304061, head/sbin/ipfw/nat64lsn.c projects/netbsd-tests-update-12/sbin/ipfw/nat64stl.c - copied unchanged from r304061, head/sbin/ipfw/nat64stl.c projects/netbsd-tests-update-12/sys/modules/ipfw_nat64/ - copied from r304061, head/sys/modules/ipfw_nat64/ projects/netbsd-tests-update-12/sys/netinet6/ip_fw_nat64.h - copied unchanged from r304061, head/sys/netinet6/ip_fw_nat64.h projects/netbsd-tests-update-12/sys/netpfil/ipfw/ip_fw_bpf.c - copied unchanged from r304061, head/sys/netpfil/ipfw/ip_fw_bpf.c projects/netbsd-tests-update-12/sys/netpfil/ipfw/nat64/ - copied from r304061, head/sys/netpfil/ipfw/nat64/ Modified: projects/netbsd-tests-update-12/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c projects/netbsd-tests-update-12/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c projects/netbsd-tests-update-12/sbin/ipfw/Makefile projects/netbsd-tests-update-12/sbin/ipfw/ipfw.8 projects/netbsd-tests-update-12/sbin/ipfw/ipfw2.c projects/netbsd-tests-update-12/sbin/ipfw/ipfw2.h projects/netbsd-tests-update-12/sbin/ipfw/main.c projects/netbsd-tests-update-12/sbin/ipfw/nptv6.c projects/netbsd-tests-update-12/sbin/ipfw/tables.c projects/netbsd-tests-update-12/share/timedef/af_ZA.UTF-8.src projects/netbsd-tests-update-12/share/timedef/am_ET.UTF-8.src projects/netbsd-tests-update-12/share/timedef/ar_JO.UTF-8.src projects/netbsd-tests-update-12/share/timedef/ar_MA.UTF-8.src projects/netbsd-tests-update-12/share/timedef/ar_SA.UTF-8.src projects/netbsd-tests-update-12/share/timedef/be_BY.CP1131.src projects/netbsd-tests-update-12/share/timedef/be_BY.CP1251.src projects/netbsd-tests-update-12/share/timedef/be_BY.ISO8859-5.src projects/netbsd-tests-update-12/share/timedef/be_BY.UTF-8.src projects/netbsd-tests-update-12/share/timedef/bg_BG.CP1251.src projects/netbsd-tests-update-12/share/timedef/bg_BG.UTF-8.src projects/netbsd-tests-update-12/share/timedef/ca_IT.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/ca_IT.UTF-8.src projects/netbsd-tests-update-12/share/timedef/cs_CZ.ISO8859-2.src projects/netbsd-tests-update-12/share/timedef/cs_CZ.UTF-8.src projects/netbsd-tests-update-12/share/timedef/da_DK.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/da_DK.UTF-8.src projects/netbsd-tests-update-12/share/timedef/de_AT.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/de_AT.UTF-8.src projects/netbsd-tests-update-12/share/timedef/de_DE.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/de_DE.UTF-8.src projects/netbsd-tests-update-12/share/timedef/el_GR.ISO8859-7.src projects/netbsd-tests-update-12/share/timedef/el_GR.UTF-8.src projects/netbsd-tests-update-12/share/timedef/en_CA.UTF-8.src projects/netbsd-tests-update-12/share/timedef/en_GB.UTF-8.src projects/netbsd-tests-update-12/share/timedef/en_IE.UTF-8.src projects/netbsd-tests-update-12/share/timedef/en_PH.UTF-8.src projects/netbsd-tests-update-12/share/timedef/en_SG.UTF-8.src projects/netbsd-tests-update-12/share/timedef/en_US.UTF-8.src projects/netbsd-tests-update-12/share/timedef/en_ZA.UTF-8.src projects/netbsd-tests-update-12/share/timedef/es_AR.ISO8859-1.src projects/netbsd-tests-update-12/share/timedef/es_CR.UTF-8.src projects/netbsd-tests-update-12/share/timedef/es_ES.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/es_ES.UTF-8.src projects/netbsd-tests-update-12/share/timedef/es_MX.ISO8859-1.src projects/netbsd-tests-update-12/share/timedef/es_MX.UTF-8.src projects/netbsd-tests-update-12/share/timedef/et_EE.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/eu_ES.UTF-8.src projects/netbsd-tests-update-12/share/timedef/fi_FI.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/fi_FI.UTF-8.src projects/netbsd-tests-update-12/share/timedef/fr_BE.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/fr_BE.UTF-8.src projects/netbsd-tests-update-12/share/timedef/fr_CA.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/fr_CA.UTF-8.src projects/netbsd-tests-update-12/share/timedef/fr_CH.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/fr_CH.UTF-8.src projects/netbsd-tests-update-12/share/timedef/fr_FR.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/fr_FR.UTF-8.src projects/netbsd-tests-update-12/share/timedef/he_IL.UTF-8.src projects/netbsd-tests-update-12/share/timedef/hi_IN.ISCII-DEV.src projects/netbsd-tests-update-12/share/timedef/hi_IN.UTF-8.src projects/netbsd-tests-update-12/share/timedef/hr_HR.ISO8859-2.src projects/netbsd-tests-update-12/share/timedef/hr_HR.UTF-8.src projects/netbsd-tests-update-12/share/timedef/hu_HU.ISO8859-2.src projects/netbsd-tests-update-12/share/timedef/hu_HU.UTF-8.src projects/netbsd-tests-update-12/share/timedef/hy_AM.ARMSCII-8.src projects/netbsd-tests-update-12/share/timedef/hy_AM.UTF-8.src projects/netbsd-tests-update-12/share/timedef/is_IS.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/is_IS.UTF-8.src projects/netbsd-tests-update-12/share/timedef/it_CH.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/it_CH.UTF-8.src projects/netbsd-tests-update-12/share/timedef/it_IT.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/it_IT.UTF-8.src projects/netbsd-tests-update-12/share/timedef/ja_JP.SJIS.src projects/netbsd-tests-update-12/share/timedef/ja_JP.UTF-8.src projects/netbsd-tests-update-12/share/timedef/ja_JP.eucJP.src projects/netbsd-tests-update-12/share/timedef/kk_KZ.UTF-8.src projects/netbsd-tests-update-12/share/timedef/ko_KR.UTF-8.src projects/netbsd-tests-update-12/share/timedef/ko_KR.eucKR.src projects/netbsd-tests-update-12/share/timedef/lt_LT.ISO8859-13.src projects/netbsd-tests-update-12/share/timedef/lt_LT.UTF-8.src projects/netbsd-tests-update-12/share/timedef/lv_LV.ISO8859-13.src projects/netbsd-tests-update-12/share/timedef/lv_LV.UTF-8.src projects/netbsd-tests-update-12/share/timedef/mn_MN.UTF-8.src projects/netbsd-tests-update-12/share/timedef/nb_NO.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/nb_NO.UTF-8.src projects/netbsd-tests-update-12/share/timedef/nl_BE.UTF-8.src projects/netbsd-tests-update-12/share/timedef/nl_NL.UTF-8.src projects/netbsd-tests-update-12/share/timedef/nn_NO.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/nn_NO.UTF-8.src projects/netbsd-tests-update-12/share/timedef/pl_PL.ISO8859-2.src projects/netbsd-tests-update-12/share/timedef/pl_PL.UTF-8.src projects/netbsd-tests-update-12/share/timedef/pt_BR.ISO8859-1.src projects/netbsd-tests-update-12/share/timedef/pt_BR.UTF-8.src projects/netbsd-tests-update-12/share/timedef/pt_PT.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/pt_PT.UTF-8.src projects/netbsd-tests-update-12/share/timedef/ro_RO.ISO8859-2.src projects/netbsd-tests-update-12/share/timedef/ro_RO.UTF-8.src projects/netbsd-tests-update-12/share/timedef/ru_RU.CP1251.src projects/netbsd-tests-update-12/share/timedef/ru_RU.CP866.src projects/netbsd-tests-update-12/share/timedef/ru_RU.ISO8859-5.src projects/netbsd-tests-update-12/share/timedef/ru_RU.KOI8-R.src projects/netbsd-tests-update-12/share/timedef/ru_RU.UTF-8.src projects/netbsd-tests-update-12/share/timedef/se_FI.UTF-8.src projects/netbsd-tests-update-12/share/timedef/se_NO.UTF-8.src projects/netbsd-tests-update-12/share/timedef/sk_SK.ISO8859-2.src projects/netbsd-tests-update-12/share/timedef/sk_SK.UTF-8.src projects/netbsd-tests-update-12/share/timedef/sl_SI.ISO8859-2.src projects/netbsd-tests-update-12/share/timedef/sl_SI.UTF-8.src projects/netbsd-tests-update-12/share/timedef/sr_RS.ISO8859-2.src projects/netbsd-tests-update-12/share/timedef/sr_RS.ISO8859-5.src projects/netbsd-tests-update-12/share/timedef/sr_RS.UTF-8.src projects/netbsd-tests-update-12/share/timedef/sr_RS.UTF-8@latin.src projects/netbsd-tests-update-12/share/timedef/sv_FI.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/sv_SE.ISO8859-15.src projects/netbsd-tests-update-12/share/timedef/sv_SE.UTF-8.src projects/netbsd-tests-update-12/share/timedef/tr_TR.ISO8859-9.src projects/netbsd-tests-update-12/share/timedef/tr_TR.UTF-8.src projects/netbsd-tests-update-12/share/timedef/uk_UA.CP1251.src projects/netbsd-tests-update-12/share/timedef/uk_UA.ISO8859-5.src projects/netbsd-tests-update-12/share/timedef/uk_UA.KOI8-U.src projects/netbsd-tests-update-12/share/timedef/uk_UA.UTF-8.src projects/netbsd-tests-update-12/share/timedef/zh_CN.GB2312.src projects/netbsd-tests-update-12/share/timedef/zh_CN.GBK.src projects/netbsd-tests-update-12/share/timedef/zh_CN.UTF-8.src projects/netbsd-tests-update-12/share/timedef/zh_CN.eucCN.src projects/netbsd-tests-update-12/share/timedef/zh_HK.UTF-8.src projects/netbsd-tests-update-12/share/timedef/zh_TW.Big5.src projects/netbsd-tests-update-12/share/timedef/zh_TW.UTF-8.src projects/netbsd-tests-update-12/sys/conf/NOTES projects/netbsd-tests-update-12/sys/conf/files projects/netbsd-tests-update-12/sys/conf/options projects/netbsd-tests-update-12/sys/kern/kern_exec.c projects/netbsd-tests-update-12/sys/modules/Makefile projects/netbsd-tests-update-12/sys/modules/ipfw/Makefile projects/netbsd-tests-update-12/sys/netinet/ip_fw.h projects/netbsd-tests-update-12/sys/netpfil/ipfw/ip_fw2.c projects/netbsd-tests-update-12/sys/netpfil/ipfw/ip_fw_log.c projects/netbsd-tests-update-12/sys/netpfil/ipfw/ip_fw_private.h projects/netbsd-tests-update-12/sys/netpfil/ipfw/ip_fw_table.c projects/netbsd-tests-update-12/sys/netpfil/ipfw/nptv6/nptv6.c projects/netbsd-tests-update-12/sys/powerpc/aim/locore.S projects/netbsd-tests-update-12/sys/powerpc/booke/locore.S projects/netbsd-tests-update-12/sys/powerpc/booke/pmap.c projects/netbsd-tests-update-12/sys/powerpc/mpc85xx/platform_mpc85xx.c projects/netbsd-tests-update-12/sys/powerpc/powerpc/machdep.c projects/netbsd-tests-update-12/sys/powerpc/powerpc/mmu_if.m projects/netbsd-tests-update-12/sys/powerpc/powerpc/pmap_dispatch.c projects/netbsd-tests-update-12/sys/vm/vm_page.c projects/netbsd-tests-update-12/sys/vm/vm_phys.c projects/netbsd-tests-update-12/tests/sys/acl/00.sh projects/netbsd-tests-update-12/tests/sys/acl/01.sh projects/netbsd-tests-update-12/tests/sys/acl/02.sh projects/netbsd-tests-update-12/tests/sys/acl/03.sh projects/netbsd-tests-update-12/tests/sys/acl/04.sh projects/netbsd-tests-update-12/usr.bin/nfsstat/nfsstat.1 projects/netbsd-tests-update-12/usr.bin/nfsstat/nfsstat.c Directory Properties: projects/netbsd-tests-update-12/ (props changed) projects/netbsd-tests-update-12/cddl/ (props changed) projects/netbsd-tests-update-12/cddl/contrib/opensolaris/ (props changed) Modified: projects/netbsd-tests-update-12/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c ============================================================================== --- projects/netbsd-tests-update-12/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c Sat Aug 13 22:14:16 2016 (r304061) +++ projects/netbsd-tests-update-12/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c Sat Aug 13 22:51:36 2016 (r304062) @@ -816,6 +816,11 @@ die_enum_create(dwarf_t *dw, Dwarf_Die d Dwarf_Unsigned uval; Dwarf_Signed sval; + if (die_isdecl(dw, die)) { + tdp->t_type = FORWARD; + return; + } + debug(3, "die %llu: creating enum\n", off); tdp->t_type = ENUM; Modified: projects/netbsd-tests-update-12/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c ============================================================================== --- projects/netbsd-tests-update-12/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c Sat Aug 13 22:14:16 2016 (r304061) +++ projects/netbsd-tests-update-12/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c Sat Aug 13 22:51:36 2016 (r304062) @@ -338,7 +338,8 @@ fwd_equiv(tdesc_t *ctdp, tdesc_t *mtdp) { tdesc_t *defn = (ctdp->t_type == FORWARD ? mtdp : ctdp); - return (defn->t_type == STRUCT || defn->t_type == UNION); + return (defn->t_type == STRUCT || defn->t_type == UNION || + defn->t_type == ENUM); } static int Modified: projects/netbsd-tests-update-12/sbin/ipfw/Makefile ============================================================================== --- projects/netbsd-tests-update-12/sbin/ipfw/Makefile Sat Aug 13 22:14:16 2016 (r304061) +++ projects/netbsd-tests-update-12/sbin/ipfw/Makefile Sat Aug 13 22:51:36 2016 (r304062) @@ -5,7 +5,7 @@ PACKAGE=ipfw PROG= ipfw SRCS= ipfw2.c dummynet.c ipv6.c main.c nat.c tables.c -SRCS+= nptv6.c +SRCS+= nat64lsn.c nat64stl.c nptv6.c WARNS?= 2 .if ${MK_PF} != "no" Modified: projects/netbsd-tests-update-12/sbin/ipfw/ipfw.8 ============================================================================== --- projects/netbsd-tests-update-12/sbin/ipfw/ipfw.8 Sat Aug 13 22:14:16 2016 (r304061) +++ projects/netbsd-tests-update-12/sbin/ipfw/ipfw.8 Sat Aug 13 22:51:36 2016 (r304062) @@ -1,7 +1,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 19, 2016 +.Dd August 13, 2016 .Dt IPFW 8 .Os .Sh NAME @@ -113,6 +113,37 @@ in-kernel NAT. .Oc .Oc .Ar pathname +.Ss STATEFUL IPv6/IPv4 NETWORK ADDRESS AND PROTOCOL TRANSLATION +.Nm +.Oo Cm set Ar N Oc Cm nat64lsn Ar name Cm create Ar create-options +.Nm +.Oo Cm set Ar N Oc Cm nat64lsn Ar name Cm config Ar config-options +.Nm +.Oo Cm set Ar N Oc Cm nat64lsn +.Brq Ar name | all +.Brq Cm list | show +.Op Cm states +.Nm +.Oo Cm set Ar N Oc Cm nat64lsn +.Brq Ar name | all +.Cm destroy +.Nm +.Oo Cm set Ar N Oc Cm nat64lsn Ar name Cm stats Op Cm reset +.Ss STATELESS IPv6/IPv4 NETWORK ADDRESS AND PROTOCOL TRANSLATION +.Nm +.Oo Cm set Ar N Oc Cm nat64stl Ar name Cm create Ar create-options +.Nm +.Oo Cm set Ar N Oc Cm nat64stl Ar name Cm config Ar config-options +.Nm +.Oo Cm set Ar N Oc Cm nat64stl +.Brq Ar name | all +.Brq Cm list | show +.Nm +.Oo Cm set Ar N Oc Cm nat64stl +.Brq Ar name | all +.Cm destroy +.Nm +.Oo Cm set Ar N Oc Cm nat64stl Ar name Cm stats Op Cm reset .Ss IPv6-to-IPv6 NETWORK PREFIX TRANSLATION .Nm .Oo Cm set Ar N Oc Cm nptv6 Ar name Cm create Ar create-options @@ -125,7 +156,7 @@ in-kernel NAT. .Brq Ar name | all .Cm destroy .Nm -.Oo Cm set Ar N Oc Cm nptv6 Ar name Cm stats +.Oo Cm set Ar N Oc Cm nptv6 Ar name Cm stats Op Cm reset .Ss INTERNAL DIAGNOSTICS .Nm .Cm internal iflist @@ -837,6 +868,16 @@ nat instance see the .Sx NETWORK ADDRESS TRANSLATION (NAT) Section for further information. +.It Cm nat64lsn Ar name +Pass packet to a stateful NAT64 instance (for IPv6/IPv4 network address and +protocol translation): see the +.Sx IPv6/IPv4 NETWORK ADDRESS AND PROTOCOL TRANSLATION +Section for further information. +.It Cm nat64stl Ar name +Pass packet to a stateless NAT64 instance (for IPv6/IPv4 network address and +protocol translation): see the +.Sx IPv6/IPv4 NETWORK ADDRESS AND PROTOCOL TRANSLATION +Section for further information. .It Cm nptv6 Ar name Pass packet to a NPTv6 instance (for IPv6-to-IPv6 network prefix translation): see the @@ -2927,9 +2968,189 @@ instances. See .Sx SYSCTL VARIABLES for more info. +.Sh IPv6/IPv4 NETWORK ADDRESS AND PROTOCOL TRANSLATION +.Nm +supports in-kernel IPv6/IPv4 network address and protocol translation. +Stateful NAT64 translation allows IPv6-only clients to contact IPv4 servers +using unicast TCP, UDP or ICMP protocols. +One or more IPv4 addresses assigned to a stateful NAT64 translator are shared +among serveral IPv6-only clients. +When stateful NAT64 is used in conjunction with DNS64, no changes are usually +required in the IPv6 client or the IPv4 server. +The kernel module +.Cm ipfw_nat64 +should be loaded or kernel should have +.Cm options IPFIREWALL_NAT64 +to be able use stateful NAT64 translator. +.Pp +Stateful NAT64 uses a bunch of memory for several types of objects. +When IPv6 client initiates connection, NAT64 translator creates a host entry +in the states table. +Each host entry has a number of ports group entries allocated on demand. +Ports group entries contains connection state entries. +There are several options to control limits and lifetime for these objects. +.Pp +NAT64 translator follows RFC7915 when does ICMPv6/ICMP translation, +unsupported message types will be silently dropped. +IPv6 needs several ICMPv6 message types to be explicitly allowed for correct +operation. +Make sure that ND6 neighbor solicitation (ICMPv6 type 135) and neighbor +advertisement (ICMPv6 type 136) messages will not be handled by translation +rules. +.Pp +After translation NAT64 translator sends packets through corresponding netisr +queue. +Thus translator host should be configured as IPv4 and IPv6 router. +.Pp +Currently both stateful and stateless NAT64 translators use Well-Known IPv6 +Prefix +.Ar 64:ff9b::/96 +to represent IPv4 addresses in the IPv6 address. +Thus DNS64 service and routing should be configured to use Well-Known IPv6 +Prefix. +.Pp +The stateful NAT64 configuration command is the following: +.Bd -ragged -offset indent +.Bk -words +.Cm nat64lsn +.Ar name +.Cm create +.Ar create-options +.Ek +.Ed +.Pp +The following parameters can be configured: +.Bl -tag -width indent +.It Cm prefix4 Ar ipv4_prefix/mask +The IPv4 prefix with mask defines the pool of IPv4 addresses used as +source address after translation. +Stateful NAT64 module translates IPv6 source address of client to one +IPv4 address from this pool. +Note that incoming IPv4 packets that don't have corresponding state entry +in the states table will be dropped by translator. +Make sure that translation rules handle packets, destined to configured prefix. +.It Cm max_ports Ar number +Maximum number of ports reserved for upper level protocols to one IPv6 client. +All reserved ports are divided into chunks between supported protocols. +The number of connections from one IPv6 client is limited by this option. +Note that closed TCP connections still remain in the list of connections until +.Cm tcp_close_age +interval will not expire. +Default value is +.Ar 2048 . +.It Cm host_del_age Ar seconds +The number of seconds until the host entry for a IPv6 client will be deleted +and all its resources will be released due to inactivity. +Default value is +.Ar 3600 . +.It Cm pg_del_age Ar seconds +The number of seconds until a ports group with unused state entries will +be released. +Default value is +.Ar 900 . +.It Cm tcp_syn_age Ar seconds +The number of seconds while a state entry for TCP connection with only SYN +sent will be kept. +If TCP connection establishing will not be finished, +state entry will be deleted. +Default value is +.Ar 10 . +.It Cm tcp_est_age Ar seconds +The number of seconds while a state entry for established TCP connection +will be kept. +Default value is +.Ar 7200 . +.It Cm tcp_close_age Ar seconds +The number of seconds while a state entry for closed TCP connection +will be kept. +Keeping state entries for closed connections is needed, because IPv4 servers +typically keep closed connections in a TIME_WAIT state for a several minutes. +Since translator's IPv4 addresses are shared among all IPv6 clients, +new connections from the same addresses and ports may be rejected by server, +because these connections are still in a TIME_WAIT state. +Keeping them in translator's state table protects from such rejects. +Default value is +.Ar 180 . +.It Cm udp_age Ar seconds +The number of seconds while translator keeps state entry in a waiting for +reply to the sent UDP datagram. +Default value is +.Ar 120 . +.It Cm icmp_age Ar seconds +The number of seconds while translator keeps state entry in a waiting for +reply to the sent ICMP message. +Default value is +.Ar 60 . +.It Cm log +Turn on logging of all handled packets via BPF through +.Ar ipfwlog0 +interface. +.Ar ipfwlog0 +is a pseudo interface and can be created after a boot manually with +.Cm ifconfig +command. +Note that it has different purpose than +.Ar ipfw0 +interface. +Translators sends to BPF an additional information with each packet. +With +.Cm tcpdump +you are able to see each handled packet before and after translation. +.It Cm -log +Turn off logging of all handled packets via BPF. +.El +.Pp +To inspect a states table of stateful NAT64 the following command can be used: +.Bd -ragged -offset indent +.Bk -words +.Cm nat64lsn +.Ar name +.Cm show Cm states +.Ek +.Ed +.Pp +.Pp +Stateless NAT64 translator doesn't use a states table for translation +and converts IPv4 addresses to IPv6 and vice versa solely based on the +mappings taken from configured lookup tables. +Since a states table doesn't used by stateless translator, +it can be configured to pass IPv4 clients to IPv6-only servers. +.Pp +The stateless NAT64 configuration command is the following: +.Bd -ragged -offset indent +.Bk -words +.Cm nat64stl +.Ar name +.Cm create +.Ar create-options +.Ek +.Ed +.Pp +The following parameters can be configured: +.Bl -tag -width indent +.It Cm table4 Ar table46 +The lookup table +.Ar table46 +contains mapping how IPv4 addresses should be translated to IPv6 addresses. +.It Cm table6 Ar table64 +The lookup table +.Ar table64 +contains mapping how IPv6 addresses should be translated to IPv4 addresses. +.It Cm log +Turn on logging of all handled packets via BPF through +.Ar ipfwlog0 +interface. +.It Cm -log +Turn off logging of all handled packets via BPF. +.El +.Pp +Note that the behavior of stateless translator with respect to not matched +packets differs from stateful translator. +If corresponding addresses was not found in the lookup tables, the packet +will not be dropped and the search continues. .Sh IPv6-to-IPv6 NETWORK PREFIX TRANSLATION (NPTv6) .Nm -support in-kernel IPv6-to-IPv6 network prefix translation as described +supports in-kernel IPv6-to-IPv6 network prefix translation as described in RFC6296. The kernel module .Cm ipfw_nptv6 Modified: projects/netbsd-tests-update-12/sbin/ipfw/ipfw2.c ============================================================================== --- projects/netbsd-tests-update-12/sbin/ipfw/ipfw2.c Sat Aug 13 22:14:16 2016 (r304061) +++ projects/netbsd-tests-update-12/sbin/ipfw/ipfw2.c Sat Aug 13 22:51:36 2016 (r304062) @@ -235,6 +235,8 @@ static struct _s_x ether_types[] = { }; static struct _s_x rule_eactions[] = { + { "nat64lsn", TOK_NAT64LSN }, + { "nat64stl", TOK_NAT64STL }, { "nptv6", TOK_NPTV6 }, { NULL, 0 } /* terminator */ }; Modified: projects/netbsd-tests-update-12/sbin/ipfw/ipfw2.h ============================================================================== --- projects/netbsd-tests-update-12/sbin/ipfw/ipfw2.h Sat Aug 13 22:14:16 2016 (r304061) +++ projects/netbsd-tests-update-12/sbin/ipfw/ipfw2.h Sat Aug 13 22:51:36 2016 (r304062) @@ -254,7 +254,30 @@ enum tokens { TOK_UNLOCK, TOK_VLIST, TOK_OLIST, + + /* NAT64 tokens */ + TOK_NAT64STL, + TOK_NAT64LSN, TOK_STATS, + TOK_STATES, + TOK_CONFIG, + TOK_TABLE4, + TOK_TABLE6, + TOK_PREFIX4, + TOK_PREFIX6, + TOK_AGG_LEN, + TOK_AGG_COUNT, + TOK_MAX_PORTS, + TOK_JMAXLEN, + TOK_PORT_RANGE, + TOK_HOST_DEL_AGE, + TOK_PG_DEL_AGE, + TOK_TCP_SYN_AGE, + TOK_TCP_CLOSE_AGE, + TOK_TCP_EST_AGE, + TOK_UDP_AGE, + TOK_ICMP_AGE, + TOK_LOGOFF, /* NPTv6 tokens */ TOK_NPTV6, @@ -347,6 +370,8 @@ void ipfw_flush(int force); void ipfw_zero(int ac, char *av[], int optname); void ipfw_list(int ac, char *av[], int show_counters); void ipfw_internal_handler(int ac, char *av[]); +void ipfw_nat64lsn_handler(int ac, char *av[]); +void ipfw_nat64stl_handler(int ac, char *av[]); void ipfw_nptv6_handler(int ac, char *av[]); int ipfw_check_object_name(const char *name); @@ -384,7 +409,10 @@ void bp_flush(struct buf_pr *b); /* tables.c */ struct _ipfw_obj_ctlv; +struct _ipfw_obj_ntlv; int table_check_name(const char *tablename); void ipfw_list_ta(int ac, char *av[]); void ipfw_list_values(int ac, char *av[]); +void table_fill_ntlv(struct _ipfw_obj_ntlv *ntlv, const char *name, + uint8_t set, uint16_t uidx); Modified: projects/netbsd-tests-update-12/sbin/ipfw/main.c ============================================================================== --- projects/netbsd-tests-update-12/sbin/ipfw/main.c Sat Aug 13 22:14:16 2016 (r304061) +++ projects/netbsd-tests-update-12/sbin/ipfw/main.c Sat Aug 13 22:51:36 2016 (r304062) @@ -425,6 +425,10 @@ ipfw_main(int oldac, char **oldav) if (co.use_set || try_next) { if (_substrcmp(*av, "delete") == 0) ipfw_delete(av); + else if (!strncmp(*av, "nat64stl", strlen(*av))) + ipfw_nat64stl_handler(ac, av); + else if (!strncmp(*av, "nat64lsn", strlen(*av))) + ipfw_nat64lsn_handler(ac, av); else if (!strncmp(*av, "nptv6", strlen(*av))) ipfw_nptv6_handler(ac, av); else if (_substrcmp(*av, "flush") == 0) Copied: projects/netbsd-tests-update-12/sbin/ipfw/nat64lsn.c (from r304061, head/sbin/ipfw/nat64lsn.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/netbsd-tests-update-12/sbin/ipfw/nat64lsn.c Sat Aug 13 22:51:36 2016 (r304062, copy of r304061, head/sbin/ipfw/nat64lsn.c) @@ -0,0 +1,854 @@ +/*- + * Copyright (c) 2015-2016 Yandex LLC + * Copyright (c) 2015-2016 Alexander V. Chernikov + * Copyright (c) 2015-2016 Andrey V. Elsukov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#include "ipfw2.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +static void nat64lsn_fill_ntlv(ipfw_obj_ntlv *ntlv, const char *name, + uint8_t set); +typedef int (nat64lsn_cb_t)(ipfw_nat64lsn_cfg *cfg, const char *name, + uint8_t set); +static int nat64lsn_foreach(nat64lsn_cb_t *f, const char *name, uint8_t set, + int sort); + +static void nat64lsn_create(const char *name, uint8_t set, int ac, char **av); +static void nat64lsn_config(const char *name, uint8_t set, int ac, char **av); +static void nat64lsn_destroy(const char *name, uint8_t set); +static void nat64lsn_stats(const char *name, uint8_t set); +static void nat64lsn_reset_stats(const char *name, uint8_t set); +static int nat64lsn_show_cb(ipfw_nat64lsn_cfg *cfg, const char *name, + uint8_t set); +static int nat64lsn_destroy_cb(ipfw_nat64lsn_cfg *cfg, const char *name, + uint8_t set); +static int nat64lsn_states_cb(ipfw_nat64lsn_cfg *cfg, const char *name, + uint8_t set); + +static struct _s_x nat64cmds[] = { + { "create", TOK_CREATE }, + { "config", TOK_CONFIG }, + { "destroy", TOK_DESTROY }, + { "list", TOK_LIST }, + { "show", TOK_LIST }, + { "stats", TOK_STATS }, + { NULL, 0 } +}; + +static uint64_t +nat64lsn_print_states(void *buf) +{ + char s[INET6_ADDRSTRLEN], a[INET_ADDRSTRLEN], f[INET_ADDRSTRLEN]; + char sflags[4], *sf, *proto; + ipfw_obj_header *oh; + ipfw_obj_data *od; + ipfw_nat64lsn_stg *stg; + ipfw_nat64lsn_state *ste; + uint64_t next_idx; + int i, sz; + + oh = (ipfw_obj_header *)buf; + od = (ipfw_obj_data *)(oh + 1); + stg = (ipfw_nat64lsn_stg *)(od + 1); + sz = od->head.length - sizeof(*od); + next_idx = 0; + while (sz > 0 && next_idx != 0xFF) { + next_idx = stg->next_idx; + sz -= sizeof(*stg); + if (stg->count == 0) { + stg++; + continue; + } + switch (stg->proto) { + case IPPROTO_TCP: + proto = "TCP"; + break; + case IPPROTO_UDP: + proto = "UDP"; + break; + case IPPROTO_ICMPV6: + proto = "ICMPv6"; + break; + } + inet_ntop(AF_INET6, &stg->host6, s, sizeof(s)); + inet_ntop(AF_INET, &stg->alias4, a, sizeof(a)); + ste = (ipfw_nat64lsn_state *)(stg + 1); + for (i = 0; i < stg->count && sz > 0; i++) { + sf = sflags; + inet_ntop(AF_INET, &ste->daddr, f, sizeof(f)); + if (stg->proto == IPPROTO_TCP) { + if (ste->flags & 0x02) + *sf++ = 'S'; + if (ste->flags & 0x04) + *sf++ = 'E'; + if (ste->flags & 0x01) + *sf++ = 'F'; + } + *sf = '\0'; + switch (stg->proto) { + case IPPROTO_TCP: + case IPPROTO_UDP: + printf("%s:%d\t%s:%d\t%s\t%s\t%d\t%s:%d\n", + s, ste->sport, a, ste->aport, proto, + sflags, ste->idle, f, ste->dport); + break; + case IPPROTO_ICMPV6: + printf("%s\t%s\t%s\t\t%d\t%s\n", + s, a, proto, ste->idle, f); + break; + default: + printf("%s\t%s\t%d\t\t%d\t%s\n", + s, a, stg->proto, ste->idle, f); + } + ste++; + sz -= sizeof(*ste); + } + stg = (ipfw_nat64lsn_stg *)ste; + } + return (next_idx); +} + +static int +nat64lsn_states_cb(ipfw_nat64lsn_cfg *cfg, const char *name, uint8_t set) +{ + ipfw_obj_header *oh; + ipfw_obj_data *od; + void *buf; + uint64_t next_idx; + size_t sz; + + if (name != NULL && strcmp(cfg->name, name) != 0) + return (ESRCH); + + if (set != 0 && cfg->set != set) + return (ESRCH); + + next_idx = 0; + sz = 4096; + if ((buf = calloc(1, sz)) == NULL) + err(EX_OSERR, NULL); + do { + oh = (ipfw_obj_header *)buf; + od = (ipfw_obj_data *)(oh + 1); + nat64lsn_fill_ntlv(&oh->ntlv, cfg->name, set); + od->head.type = IPFW_TLV_OBJDATA; + od->head.length = sizeof(*od) + sizeof(next_idx); + *((uint64_t *)(od + 1)) = next_idx; + if (do_get3(IP_FW_NAT64LSN_LIST_STATES, &oh->opheader, &sz)) + err(EX_OSERR, "Error reading nat64lsn states"); + next_idx = nat64lsn_print_states(buf); + sz = 4096; + memset(buf, 0, sz); + } while (next_idx != 0xFF); + + free(buf); + return (0); +} + +static struct _s_x nat64statscmds[] = { + { "reset", TOK_RESET }, + { NULL, 0 } +}; + +static void +ipfw_nat64lsn_stats_handler(const char *name, uint8_t set, int ac, char *av[]) +{ + int tcmd; + + if (ac == 0) { + nat64lsn_stats(name, set); + return; + } + NEED1("nat64lsn stats needs command"); + tcmd = get_token(nat64statscmds, *av, "nat64lsn stats command"); + switch (tcmd) { + case TOK_RESET: + nat64lsn_reset_stats(name, set); + } +} + +static struct _s_x nat64listcmds[] = { + { "states", TOK_STATES }, + { "config", TOK_CONFIG }, + { NULL, 0 } +}; + +static void +ipfw_nat64lsn_list_handler(const char *name, uint8_t set, int ac, char *av[]) +{ + int tcmd; + + if (ac == 0) { + nat64lsn_foreach(nat64lsn_show_cb, name, set, 1); + return; + } + NEED1("nat64lsn list needs command"); + tcmd = get_token(nat64listcmds, *av, "nat64lsn list command"); + switch (tcmd) { + case TOK_STATES: + nat64lsn_foreach(nat64lsn_states_cb, name, set, 1); + break; + case TOK_CONFIG: + nat64lsn_foreach(nat64lsn_show_cb, name, set, 1); + } +} + +/* + * This one handles all nat64lsn-related commands + * ipfw [set N] nat64lsn NAME {create | config} ... + * ipfw [set N] nat64lsn NAME stats + * ipfw [set N] nat64lsn {NAME | all} destroy + * ipfw [set N] nat64lsn {NAME | all} {list | show} [config | states] + */ +#define nat64lsn_check_name table_check_name +void +ipfw_nat64lsn_handler(int ac, char *av[]) +{ + const char *name; + int tcmd; + uint8_t set; + + if (co.use_set != 0) + set = co.use_set - 1; + else + set = 0; + ac--; av++; + + NEED1("nat64lsn needs instance name"); + name = *av; + if (nat64lsn_check_name(name) != 0) { + if (strcmp(name, "all") == 0) + name = NULL; + else + errx(EX_USAGE, "nat64lsn instance name %s is invalid", + name); + } + ac--; av++; + NEED1("nat64lsn needs command"); + + tcmd = get_token(nat64cmds, *av, "nat64lsn command"); + if (name == NULL && tcmd != TOK_DESTROY && tcmd != TOK_LIST) + errx(EX_USAGE, "nat64lsn instance name required"); + switch (tcmd) { + case TOK_CREATE: + ac--; av++; + nat64lsn_create(name, set, ac, av); + break; + case TOK_CONFIG: + ac--; av++; + nat64lsn_config(name, set, ac, av); + break; + case TOK_LIST: + ac--; av++; + ipfw_nat64lsn_list_handler(name, set, ac, av); + break; + case TOK_DESTROY: + if (name == NULL) + nat64lsn_foreach(nat64lsn_destroy_cb, NULL, set, 0); + else + nat64lsn_destroy(name, set); + break; + case TOK_STATS: + ac--; av++; + ipfw_nat64lsn_stats_handler(name, set, ac, av); + } +} + +static void +nat64lsn_fill_ntlv(ipfw_obj_ntlv *ntlv, const char *name, uint8_t set) +{ + + ntlv->head.type = IPFW_TLV_EACTION_NAME(1); /* it doesn't matter */ + ntlv->head.length = sizeof(ipfw_obj_ntlv); + ntlv->idx = 1; + ntlv->set = set; + strlcpy(ntlv->name, name, sizeof(ntlv->name)); +} + +static void +nat64lsn_apply_mask(int af, void *prefix, uint16_t plen) +{ + struct in6_addr mask6, *p6; + struct in_addr mask4, *p4; + + if (af == AF_INET) { + p4 = (struct in_addr *)prefix; + mask4.s_addr = htonl(~((1 << (32 - plen)) - 1)); + p4->s_addr &= mask4.s_addr; + } else if (af == AF_INET6) { + p6 = (struct in6_addr *)prefix; + n2mask(&mask6, plen); + APPLY_MASK(p6, &mask6); + } +} + +static void +nat64lsn_parse_prefix(const char *arg, int af, void *prefix, uint16_t *plen) +{ + char *p, *l; + + p = strdup(arg); + if (p == NULL) + err(EX_OSERR, NULL); + if ((l = strchr(p, '/')) != NULL) + *l++ = '\0'; + if (l == NULL) + errx(EX_USAGE, "Prefix length required"); + if (inet_pton(af, p, prefix) != 1) + errx(EX_USAGE, "Bad prefix: %s", p); + *plen = (uint16_t)strtol(l, &l, 10); + if (*l != '\0' || *plen == 0 || (af == AF_INET && *plen > 32) || + (af == AF_INET6 && *plen > 96)) + errx(EX_USAGE, "Bad prefix length: %s", arg); + nat64lsn_apply_mask(af, prefix, *plen); + free(p); +} + +static uint32_t +nat64lsn_parse_int(const char *arg, const char *desc) +{ + char *p; + uint32_t val; + + val = (uint32_t)strtol(arg, &p, 10); + if (*p != '\0') + errx(EX_USAGE, "Invalid %s value: %s\n", desc, arg); + return (val); +} + +static struct _s_x nat64newcmds[] = { + { "prefix6", TOK_PREFIX6 }, + { "agg_len", TOK_AGG_LEN }, /* not yet */ + { "agg_count", TOK_AGG_COUNT }, /* not yet */ + { "port_range", TOK_PORT_RANGE }, /* not yet */ + { "jmaxlen", TOK_JMAXLEN }, + { "prefix4", TOK_PREFIX4 }, + { "max_ports", TOK_MAX_PORTS }, + { "host_del_age", TOK_HOST_DEL_AGE }, + { "pg_del_age", TOK_PG_DEL_AGE }, + { "tcp_syn_age", TOK_TCP_SYN_AGE }, + { "tcp_close_age",TOK_TCP_CLOSE_AGE }, + { "tcp_est_age", TOK_TCP_EST_AGE }, + { "udp_age", TOK_UDP_AGE }, + { "icmp_age", TOK_ICMP_AGE }, + { "log", TOK_LOG }, + { "-log", TOK_LOGOFF }, + { NULL, 0 } +}; + +/* + * Creates new nat64lsn instance + * ipfw nat64lsn create + * [ max_ports ] + * Request: [ ipfw_obj_lheader ipfw_nat64lsn_cfg ] + */ +#define NAT64LSN_HAS_PREFIX4 0x01 +#define NAT64LSN_HAS_PREFIX6 0x02 +static void +nat64lsn_create(const char *name, uint8_t set, int ac, char **av) +{ + char buf[sizeof(ipfw_obj_lheader) + sizeof(ipfw_nat64lsn_cfg)]; + ipfw_nat64lsn_cfg *cfg; + ipfw_obj_lheader *olh; + int tcmd, flags; + char *opt; + + memset(&buf, 0, sizeof(buf)); + olh = (ipfw_obj_lheader *)buf; + cfg = (ipfw_nat64lsn_cfg *)(olh + 1); + + /* Some reasonable defaults */ + inet_pton(AF_INET6, "64:ff9b::", &cfg->prefix6); + cfg->plen6 = 96; + cfg->set = set; + cfg->max_ports = NAT64LSN_MAX_PORTS; + cfg->jmaxlen = NAT64LSN_JMAXLEN; + cfg->nh_delete_delay = NAT64LSN_HOST_AGE; + cfg->pg_delete_delay = NAT64LSN_PG_AGE; + cfg->st_syn_ttl = NAT64LSN_TCP_SYN_AGE; + cfg->st_estab_ttl = NAT64LSN_TCP_EST_AGE; + cfg->st_close_ttl = NAT64LSN_TCP_FIN_AGE; + cfg->st_udp_ttl = NAT64LSN_UDP_AGE; + cfg->st_icmp_ttl = NAT64LSN_ICMP_AGE; + flags = NAT64LSN_HAS_PREFIX6; + while (ac > 0) { + tcmd = get_token(nat64newcmds, *av, "option"); + opt = *av; + ac--; av++; + + switch (tcmd) { + case TOK_PREFIX4: + NEED1("IPv4 prefix required"); + nat64lsn_parse_prefix(*av, AF_INET, &cfg->prefix4, + &cfg->plen4); + flags |= NAT64LSN_HAS_PREFIX4; + ac--; av++; + break; +#if 0 + case TOK_PREFIX6: + NEED1("IPv6 prefix required"); + nat64lsn_parse_prefix(*av, AF_INET6, &cfg->prefix6, + &cfg->plen6); + ac--; av++; + break; + case TOK_AGG_LEN: + NEED1("Aggregation prefix len required"); + cfg->agg_prefix_len = nat64lsn_parse_int(*av, opt); + ac--; av++; + break; + case TOK_AGG_COUNT: + NEED1("Max per-prefix count required"); + cfg->agg_prefix_max = nat64lsn_parse_int(*av, opt); + ac--; av++; + break; + case TOK_PORT_RANGE: + NEED1("port range x[:y] required"); + if ((p = strchr(*av, ':')) == NULL) + cfg->min_port = (uint16_t)nat64lsn_parse_int( + *av, opt); + else { + *p++ = '\0'; + cfg->min_port = (uint16_t)nat64lsn_parse_int( + *av, opt); + cfg->max_port = (uint16_t)nat64lsn_parse_int( + p, opt); + } + ac--; av++; + break; + case TOK_JMAXLEN: + NEED1("job queue length required"); + cfg->jmaxlen = nat64lsn_parse_int(*av, opt); + ac--; av++; + break; +#endif + case TOK_MAX_PORTS: + NEED1("Max per-user ports required"); + cfg->max_ports = nat64lsn_parse_int(*av, opt); + ac--; av++; + break; + case TOK_HOST_DEL_AGE: + NEED1("host delete delay required"); + cfg->nh_delete_delay = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_PG_DEL_AGE: + NEED1("portgroup delete delay required"); + cfg->pg_delete_delay = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_TCP_SYN_AGE: + NEED1("tcp syn age required"); + cfg->st_syn_ttl = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_TCP_CLOSE_AGE: + NEED1("tcp close age required"); + cfg->st_close_ttl = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_TCP_EST_AGE: + NEED1("tcp est age required"); + cfg->st_estab_ttl = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_UDP_AGE: + NEED1("udp age required"); + cfg->st_udp_ttl = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_ICMP_AGE: + NEED1("icmp age required"); + cfg->st_icmp_ttl = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_LOG: + cfg->flags |= NAT64_LOG; + break; + case TOK_LOGOFF: + cfg->flags &= ~NAT64_LOG; + break; + } + } + + /* Check validness */ + if ((flags & NAT64LSN_HAS_PREFIX4) != NAT64LSN_HAS_PREFIX4) + errx(EX_USAGE, "prefix4 required"); + + olh->count = 1; + olh->objsize = sizeof(*cfg); + olh->size = sizeof(buf); + strlcpy(cfg->name, name, sizeof(cfg->name)); + if (do_set3(IP_FW_NAT64LSN_CREATE, &olh->opheader, sizeof(buf)) != 0) + err(EX_OSERR, "nat64lsn instance creation failed"); +} + +/* + * Configures existing nat64lsn instance + * ipfw nat64lsn config + * Request: [ ipfw_obj_header ipfw_nat64lsn_cfg ] + */ +static void +nat64lsn_config(const char *name, uint8_t set, int ac, char **av) +{ + char buf[sizeof(ipfw_obj_header) + sizeof(ipfw_nat64lsn_cfg)]; + ipfw_nat64lsn_cfg *cfg; + ipfw_obj_header *oh; + size_t sz; + char *opt; + int tcmd; + + if (ac == 0) + errx(EX_USAGE, "config options required"); + memset(&buf, 0, sizeof(buf)); + oh = (ipfw_obj_header *)buf; + cfg = (ipfw_nat64lsn_cfg *)(oh + 1); + sz = sizeof(buf); + + nat64lsn_fill_ntlv(&oh->ntlv, name, set); + if (do_get3(IP_FW_NAT64LSN_CONFIG, &oh->opheader, &sz) != 0) + err(EX_OSERR, "failed to get config for instance %s", name); + + while (ac > 0) { + tcmd = get_token(nat64newcmds, *av, "option"); + opt = *av; + ac--; av++; + + switch (tcmd) { + case TOK_MAX_PORTS: + NEED1("Max per-user ports required"); + cfg->max_ports = nat64lsn_parse_int(*av, opt); + ac--; av++; + break; + case TOK_JMAXLEN: + NEED1("job queue length required"); + cfg->jmaxlen = nat64lsn_parse_int(*av, opt); + ac--; av++; + break; + case TOK_HOST_DEL_AGE: + NEED1("host delete delay required"); + cfg->nh_delete_delay = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_PG_DEL_AGE: + NEED1("portgroup delete delay required"); + cfg->pg_delete_delay = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_TCP_SYN_AGE: + NEED1("tcp syn age required"); + cfg->st_syn_ttl = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_TCP_CLOSE_AGE: + NEED1("tcp close age required"); + cfg->st_close_ttl = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_TCP_EST_AGE: + NEED1("tcp est age required"); + cfg->st_estab_ttl = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_UDP_AGE: + NEED1("udp age required"); + cfg->st_udp_ttl = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; + break; + case TOK_ICMP_AGE: + NEED1("icmp age required"); + cfg->st_icmp_ttl = (uint16_t)nat64lsn_parse_int( + *av, opt); + ac--; av++; *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***