svn commit: r304063 - in user/alc/PQ_LAUNDRY: . bin/ps cddl/contrib/opensolaris/tools/ctf/cvt lib/libc/gen lib/libc/net lib/libc/tests/resolv lib/libsysdecode libexec/rtld-elf sbin/ipfw share/misc ...

Mark Johnston markj at FreeBSD.org
Sat Aug 13 22:57:45 UTC 2016


Author: markj
Date: Sat Aug 13 22:57:41 2016
New Revision: 304063
URL: https://svnweb.freebsd.org/changeset/base/304063

Log:
  MFH r304062

Added:
  user/alc/PQ_LAUNDRY/lib/libc/gen/dirname_compat.c
     - copied unchanged from r304062, head/lib/libc/gen/dirname_compat.c
  user/alc/PQ_LAUNDRY/libexec/rtld-elf/rtld_utrace.h
     - copied unchanged from r304062, head/libexec/rtld-elf/rtld_utrace.h
  user/alc/PQ_LAUNDRY/sbin/ipfw/nat64lsn.c
     - copied unchanged from r304062, head/sbin/ipfw/nat64lsn.c
  user/alc/PQ_LAUNDRY/sbin/ipfw/nat64stl.c
     - copied unchanged from r304062, head/sbin/ipfw/nat64stl.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_gtaskqueue.c
     - copied unchanged from r304062, head/sys/kern/subr_gtaskqueue.c
  user/alc/PQ_LAUNDRY/sys/modules/ipfw_nat64/
     - copied from r304062, head/sys/modules/ipfw_nat64/
  user/alc/PQ_LAUNDRY/sys/netinet6/ip_fw_nat64.h
     - copied unchanged from r304062, head/sys/netinet6/ip_fw_nat64.h
  user/alc/PQ_LAUNDRY/sys/netpfil/ipfw/ip_fw_bpf.c
     - copied unchanged from r304062, head/sys/netpfil/ipfw/ip_fw_bpf.c
  user/alc/PQ_LAUNDRY/sys/netpfil/ipfw/nat64/
     - copied from r304062, head/sys/netpfil/ipfw/nat64/
  user/alc/PQ_LAUNDRY/sys/sys/gtaskqueue.h
     - copied unchanged from r304062, head/sys/sys/gtaskqueue.h
Modified:
  user/alc/PQ_LAUNDRY/Makefile
  user/alc/PQ_LAUNDRY/Makefile.inc1
  user/alc/PQ_LAUNDRY/bin/ps/ps.1
  user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c
  user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c
  user/alc/PQ_LAUNDRY/lib/libc/gen/Makefile.inc
  user/alc/PQ_LAUNDRY/lib/libc/gen/Symbol.map
  user/alc/PQ_LAUNDRY/lib/libc/gen/dirname.3
  user/alc/PQ_LAUNDRY/lib/libc/gen/dirname.c
  user/alc/PQ_LAUNDRY/lib/libc/net/getaddrinfo.c
  user/alc/PQ_LAUNDRY/lib/libc/tests/resolv/resolv_test.c
  user/alc/PQ_LAUNDRY/lib/libsysdecode/Makefile
  user/alc/PQ_LAUNDRY/lib/libsysdecode/utrace.c
  user/alc/PQ_LAUNDRY/libexec/rtld-elf/rtld.c
  user/alc/PQ_LAUNDRY/sbin/ipfw/Makefile
  user/alc/PQ_LAUNDRY/sbin/ipfw/ipfw.8
  user/alc/PQ_LAUNDRY/sbin/ipfw/ipfw2.c
  user/alc/PQ_LAUNDRY/sbin/ipfw/ipfw2.h
  user/alc/PQ_LAUNDRY/sbin/ipfw/main.c
  user/alc/PQ_LAUNDRY/sbin/ipfw/nptv6.c
  user/alc/PQ_LAUNDRY/sbin/ipfw/tables.c
  user/alc/PQ_LAUNDRY/share/misc/committers-src.dot
  user/alc/PQ_LAUNDRY/share/timedef/af_ZA.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/am_ET.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/ar_JO.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/ar_MA.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/ar_SA.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/be_BY.CP1131.src
  user/alc/PQ_LAUNDRY/share/timedef/be_BY.CP1251.src
  user/alc/PQ_LAUNDRY/share/timedef/be_BY.ISO8859-5.src
  user/alc/PQ_LAUNDRY/share/timedef/be_BY.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/bg_BG.CP1251.src
  user/alc/PQ_LAUNDRY/share/timedef/bg_BG.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/ca_IT.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/ca_IT.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/cs_CZ.ISO8859-2.src
  user/alc/PQ_LAUNDRY/share/timedef/cs_CZ.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/da_DK.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/da_DK.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/de_AT.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/de_AT.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/de_DE.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/de_DE.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/el_GR.ISO8859-7.src
  user/alc/PQ_LAUNDRY/share/timedef/el_GR.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/en_CA.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/en_GB.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/en_IE.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/en_PH.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/en_SG.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/en_US.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/en_ZA.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/es_AR.ISO8859-1.src
  user/alc/PQ_LAUNDRY/share/timedef/es_CR.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/es_ES.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/es_ES.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/es_MX.ISO8859-1.src
  user/alc/PQ_LAUNDRY/share/timedef/es_MX.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/et_EE.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/eu_ES.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/fi_FI.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/fi_FI.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/fr_BE.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/fr_BE.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/fr_CA.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/fr_CA.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/fr_CH.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/fr_CH.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/fr_FR.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/fr_FR.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/he_IL.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/hi_IN.ISCII-DEV.src
  user/alc/PQ_LAUNDRY/share/timedef/hi_IN.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/hr_HR.ISO8859-2.src
  user/alc/PQ_LAUNDRY/share/timedef/hr_HR.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/hu_HU.ISO8859-2.src
  user/alc/PQ_LAUNDRY/share/timedef/hu_HU.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/hy_AM.ARMSCII-8.src
  user/alc/PQ_LAUNDRY/share/timedef/hy_AM.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/is_IS.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/is_IS.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/it_CH.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/it_CH.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/it_IT.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/it_IT.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/ja_JP.SJIS.src
  user/alc/PQ_LAUNDRY/share/timedef/ja_JP.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/ja_JP.eucJP.src
  user/alc/PQ_LAUNDRY/share/timedef/kk_KZ.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/ko_KR.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/ko_KR.eucKR.src
  user/alc/PQ_LAUNDRY/share/timedef/lt_LT.ISO8859-13.src
  user/alc/PQ_LAUNDRY/share/timedef/lt_LT.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/lv_LV.ISO8859-13.src
  user/alc/PQ_LAUNDRY/share/timedef/lv_LV.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/mn_MN.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/nb_NO.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/nb_NO.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/nl_BE.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/nl_NL.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/nn_NO.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/nn_NO.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/pl_PL.ISO8859-2.src
  user/alc/PQ_LAUNDRY/share/timedef/pl_PL.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/pt_BR.ISO8859-1.src
  user/alc/PQ_LAUNDRY/share/timedef/pt_BR.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/pt_PT.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/pt_PT.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/ro_RO.ISO8859-2.src
  user/alc/PQ_LAUNDRY/share/timedef/ro_RO.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/ru_RU.CP1251.src
  user/alc/PQ_LAUNDRY/share/timedef/ru_RU.CP866.src
  user/alc/PQ_LAUNDRY/share/timedef/ru_RU.ISO8859-5.src
  user/alc/PQ_LAUNDRY/share/timedef/ru_RU.KOI8-R.src
  user/alc/PQ_LAUNDRY/share/timedef/ru_RU.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/se_FI.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/se_NO.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/sk_SK.ISO8859-2.src
  user/alc/PQ_LAUNDRY/share/timedef/sk_SK.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/sl_SI.ISO8859-2.src
  user/alc/PQ_LAUNDRY/share/timedef/sl_SI.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/sr_RS.ISO8859-2.src
  user/alc/PQ_LAUNDRY/share/timedef/sr_RS.ISO8859-5.src
  user/alc/PQ_LAUNDRY/share/timedef/sr_RS.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/sr_RS.UTF-8 at latin.src
  user/alc/PQ_LAUNDRY/share/timedef/sv_FI.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/sv_SE.ISO8859-15.src
  user/alc/PQ_LAUNDRY/share/timedef/sv_SE.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/tr_TR.ISO8859-9.src
  user/alc/PQ_LAUNDRY/share/timedef/tr_TR.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/uk_UA.CP1251.src
  user/alc/PQ_LAUNDRY/share/timedef/uk_UA.ISO8859-5.src
  user/alc/PQ_LAUNDRY/share/timedef/uk_UA.KOI8-U.src
  user/alc/PQ_LAUNDRY/share/timedef/uk_UA.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/zh_CN.GB2312.src
  user/alc/PQ_LAUNDRY/share/timedef/zh_CN.GBK.src
  user/alc/PQ_LAUNDRY/share/timedef/zh_CN.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/zh_CN.eucCN.src
  user/alc/PQ_LAUNDRY/share/timedef/zh_HK.UTF-8.src
  user/alc/PQ_LAUNDRY/share/timedef/zh_TW.Big5.src
  user/alc/PQ_LAUNDRY/share/timedef/zh_TW.UTF-8.src
  user/alc/PQ_LAUNDRY/sys/arm64/arm64/pmap.c
  user/alc/PQ_LAUNDRY/sys/arm64/arm64/trap.c
  user/alc/PQ_LAUNDRY/sys/arm64/include/pmap.h
  user/alc/PQ_LAUNDRY/sys/boot/efi/loader/Makefile
  user/alc/PQ_LAUNDRY/sys/conf/NOTES
  user/alc/PQ_LAUNDRY/sys/conf/files
  user/alc/PQ_LAUNDRY/sys/conf/kern.post.mk
  user/alc/PQ_LAUNDRY/sys/conf/options
  user/alc/PQ_LAUNDRY/sys/dev/filemon/filemon.c
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_net_vsc.c
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_net_vsc.h
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_rndis.h
  user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/if_hnreg.h
  user/alc/PQ_LAUNDRY/sys/fs/nfs/nfs_commonkrpc.c
  user/alc/PQ_LAUNDRY/sys/fs/nfs/nfs_commonport.c
  user/alc/PQ_LAUNDRY/sys/fs/nfs/nfsport.h
  user/alc/PQ_LAUNDRY/sys/fs/nfs/nfsproto.h
  user/alc/PQ_LAUNDRY/sys/fs/nfsclient/nfs_clbio.c
  user/alc/PQ_LAUNDRY/sys/fs/nfsclient/nfs_clcomsubs.c
  user/alc/PQ_LAUNDRY/sys/fs/nfsclient/nfs_clstate.c
  user/alc/PQ_LAUNDRY/sys/fs/nfsclient/nfs_clsubs.c
  user/alc/PQ_LAUNDRY/sys/fs/nfsclient/nfs_clvfsops.c
  user/alc/PQ_LAUNDRY/sys/fs/nfsclient/nfs_clvnops.c
  user/alc/PQ_LAUNDRY/sys/fs/nfsserver/nfs_nfsdcache.c
  user/alc/PQ_LAUNDRY/sys/fs/nfsserver/nfs_nfsdport.c
  user/alc/PQ_LAUNDRY/sys/fs/nfsserver/nfs_nfsdsocket.c
  user/alc/PQ_LAUNDRY/sys/fs/nfsserver/nfs_nfsdstate.c
  user/alc/PQ_LAUNDRY/sys/kern/kern_exec.c
  user/alc/PQ_LAUNDRY/sys/kern/subr_taskqueue.c
  user/alc/PQ_LAUNDRY/sys/kern/vfs_subr.c
  user/alc/PQ_LAUNDRY/sys/kern/vnode_if.src
  user/alc/PQ_LAUNDRY/sys/modules/Makefile
  user/alc/PQ_LAUNDRY/sys/modules/ipfw/Makefile
  user/alc/PQ_LAUNDRY/sys/net/ifdi_if.m
  user/alc/PQ_LAUNDRY/sys/net/iflib.c
  user/alc/PQ_LAUNDRY/sys/net/iflib.h
  user/alc/PQ_LAUNDRY/sys/netinet/ip_fw.h
  user/alc/PQ_LAUNDRY/sys/netpfil/ipfw/ip_fw2.c
  user/alc/PQ_LAUNDRY/sys/netpfil/ipfw/ip_fw_log.c
  user/alc/PQ_LAUNDRY/sys/netpfil/ipfw/ip_fw_private.h
  user/alc/PQ_LAUNDRY/sys/netpfil/ipfw/ip_fw_table.c
  user/alc/PQ_LAUNDRY/sys/netpfil/ipfw/nptv6/nptv6.c
  user/alc/PQ_LAUNDRY/sys/powerpc/aim/locore.S
  user/alc/PQ_LAUNDRY/sys/powerpc/booke/locore.S
  user/alc/PQ_LAUNDRY/sys/powerpc/booke/pmap.c
  user/alc/PQ_LAUNDRY/sys/powerpc/mpc85xx/platform_mpc85xx.c
  user/alc/PQ_LAUNDRY/sys/powerpc/powerpc/machdep.c
  user/alc/PQ_LAUNDRY/sys/powerpc/powerpc/mmu_if.m
  user/alc/PQ_LAUNDRY/sys/powerpc/powerpc/pmap_dispatch.c
  user/alc/PQ_LAUNDRY/sys/sys/_task.h
  user/alc/PQ_LAUNDRY/sys/sys/taskqueue.h
  user/alc/PQ_LAUNDRY/sys/vm/vm_page.c
  user/alc/PQ_LAUNDRY/sys/vm/vm_phys.c
  user/alc/PQ_LAUNDRY/tests/sys/acl/00.sh
  user/alc/PQ_LAUNDRY/tests/sys/acl/01.sh
  user/alc/PQ_LAUNDRY/tests/sys/acl/02.sh
  user/alc/PQ_LAUNDRY/tests/sys/acl/03.sh
  user/alc/PQ_LAUNDRY/tests/sys/acl/04.sh
  user/alc/PQ_LAUNDRY/usr.bin/kdump/kdump.c
  user/alc/PQ_LAUNDRY/usr.bin/nfsstat/nfsstat.1
  user/alc/PQ_LAUNDRY/usr.bin/nfsstat/nfsstat.c
  user/alc/PQ_LAUNDRY/usr.sbin/acpi/acpidump/acpi.c
Directory Properties:
  user/alc/PQ_LAUNDRY/   (props changed)
  user/alc/PQ_LAUNDRY/cddl/   (props changed)
  user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/   (props changed)

Modified: user/alc/PQ_LAUNDRY/Makefile
==============================================================================
--- user/alc/PQ_LAUNDRY/Makefile	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/Makefile	Sat Aug 13 22:57:41 2016	(r304063)
@@ -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: user/alc/PQ_LAUNDRY/Makefile.inc1
==============================================================================
--- user/alc/PQ_LAUNDRY/Makefile.inc1	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/Makefile.inc1	Sat Aug 13 22:57:41 2016	(r304063)
@@ -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: user/alc/PQ_LAUNDRY/bin/ps/ps.1
==============================================================================
--- user/alc/PQ_LAUNDRY/bin/ps/ps.1	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/bin/ps/ps.1	Sat Aug 13 22:57:41 2016	(r304063)
@@ -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: user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c
==============================================================================
--- user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c	Sat Aug 13 22:57:41 2016	(r304063)
@@ -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: user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c
==============================================================================
--- user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c	Sat Aug 13 22:57:41 2016	(r304063)
@@ -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: user/alc/PQ_LAUNDRY/lib/libc/gen/Makefile.inc
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libc/gen/Makefile.inc	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/lib/libc/gen/Makefile.inc	Sat Aug 13 22:57:41 2016	(r304063)
@@ -29,6 +29,7 @@ SRCS+=	__getosreldate.c \
 	devname.c \
 	dirfd.c \
 	dirname.c \
+	dirname_compat.c \
 	disklabel.c \
 	dlfcn.c \
 	drand48.c \

Modified: user/alc/PQ_LAUNDRY/lib/libc/gen/Symbol.map
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libc/gen/Symbol.map	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/lib/libc/gen/Symbol.map	Sat Aug 13 22:57:41 2016	(r304063)
@@ -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: user/alc/PQ_LAUNDRY/lib/libc/gen/dirname.3
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libc/gen/dirname.3	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/lib/libc/gen/dirname.3	Sat Aug 13 22:57:41 2016	(r304063)
@@ -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: user/alc/PQ_LAUNDRY/lib/libc/gen/dirname.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libc/gen/dirname.c	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/lib/libc/gen/dirname.c	Sat Aug 13 22:57:41 2016	(r304063)
@@ -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 <Todd.Miller at courtesan.com>
+/*-
+ * 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 <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
-#include <errno.h>
 #include <libgen.h>
-#include <stdlib.h>
+#include <stdbool.h>
 #include <string.h>
-#include <sys/param.h>
 
 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: user/alc/PQ_LAUNDRY/lib/libc/gen/dirname_compat.c (from r304062, head/lib/libc/gen/dirname_compat.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/alc/PQ_LAUNDRY/lib/libc/gen/dirname_compat.c	Sat Aug 13 22:57:41 2016	(r304063, copy of r304062, 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 <Todd.Miller at courtesan.com>
+ *
+ * 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 <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <errno.h>
+#include <libgen.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/param.h>
+
+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: user/alc/PQ_LAUNDRY/lib/libc/net/getaddrinfo.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libc/net/getaddrinfo.c	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/lib/libc/net/getaddrinfo.c	Sat Aug 13 22:57:41 2016	(r304063)
@@ -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: user/alc/PQ_LAUNDRY/lib/libc/tests/resolv/resolv_test.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libc/tests/resolv/resolv_test.c	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/lib/libc/tests/resolv/resolv_test.c	Sat Aug 13 22:57:41 2016	(r304063)
@@ -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: user/alc/PQ_LAUNDRY/lib/libsysdecode/Makefile
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libsysdecode/Makefile	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/lib/libsysdecode/Makefile	Sat Aug 13 22:57:41 2016	(r304063)
@@ -9,6 +9,7 @@ SRCS=	errno.c ioctl.c syscallnames.c utr
 INCS=	sysdecode.h
 
 CFLAGS+= -I${.CURDIR}/../../sys
+CFLAGS+= -I${.CURDIR}/../../libexec/rtld-elf
 
 MAN+=	sysdecode.3 \
 	sysdecode_abi_to_freebsd_errno.3 \

Modified: user/alc/PQ_LAUNDRY/lib/libsysdecode/utrace.c
==============================================================================
--- user/alc/PQ_LAUNDRY/lib/libsysdecode/utrace.c	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/lib/libsysdecode/utrace.c	Sat Aug 13 22:57:41 2016	(r304063)
@@ -33,31 +33,21 @@ __FBSDID("$FreeBSD$");
 #include <sys/param.h>
 #include <dlfcn.h>
 #include <stdio.h>
-#include <strings.h>
+#include <string.h>
 #include <sysdecode.h>
+#include "rtld_utrace.h"
 
-#define	UTRACE_DLOPEN_START		1
-#define	UTRACE_DLOPEN_STOP		2
-#define	UTRACE_DLCLOSE_START		3
-#define	UTRACE_DLCLOSE_STOP		4
-#define	UTRACE_LOAD_OBJECT		5
-#define	UTRACE_UNLOAD_OBJECT		6
-#define	UTRACE_ADD_RUNDEP		7
-#define	UTRACE_PRELOAD_FINISHED		8
-#define	UTRACE_INIT_CALL		9
-#define	UTRACE_FINI_CALL		10
-#define	UTRACE_DLSYM_START		11
-#define	UTRACE_DLSYM_STOP		12
-
-struct utrace_rtld {
-	char sig[4];				/* 'RTLD' */
+#ifdef __LP64__
+struct utrace_rtld32 {
+	char sig[4];
 	int event;
-	void *handle;
-	void *mapbase;
-	size_t mapsize;
+	uint32_t handle;
+	uint32_t mapbase;
+	uint32_t mapsize;
 	int refcnt;
 	char name[MAXPATHLEN];
 };
+#endif
 
 static int
 print_utrace_rtld(FILE *fp, void *p)
@@ -145,6 +135,14 @@ struct utrace_malloc {
 	void *r;
 };
 
+#ifdef __LP64__
+struct utrace_malloc32 {
+	uint32_t p;
+	uint32_t s;
+	uint32_t r;
+};
+#endif
+
 static void
 print_utrace_malloc(FILE *fp, void *p)
 {
@@ -163,15 +161,49 @@ print_utrace_malloc(FILE *fp, void *p)
 int
 sysdecode_utrace(FILE *fp, void *p, size_t len)
 {
+#ifdef __LP64__
+	struct utrace_rtld ur;
+	struct utrace_rtld32 *pr;
+	struct utrace_malloc um;
+	struct utrace_malloc32 *pm;
+#endif
+	static const char rtld_utrace_sig[RTLD_UTRACE_SIG_SZ] = RTLD_UTRACE_SIG;
 
-	if (len == sizeof(struct utrace_rtld) && bcmp(p, "RTLD", 4) == 0) {
+	if (len == sizeof(struct utrace_rtld) && bcmp(p, rtld_utrace_sig,
+	    sizeof(rtld_utrace_sig)) == 0)
 		return (print_utrace_rtld(fp, p));
-	}
 
 	if (len == sizeof(struct utrace_malloc)) {
 		print_utrace_malloc(fp, p);
 		return (1);
 	}
-	
+
+#ifdef __LP64__
+	if (len == sizeof(struct utrace_rtld32) && bcmp(p, rtld_utrace_sig,
+	    sizeof(rtld_utrace_sig)) == 0) {
+		pr = p;
+		memset(&ur, 0, sizeof(ur));
+		memcpy(ur.sig, pr->sig, sizeof(ur.sig));
+		ur.event = pr->event;
+		ur.handle = (void *)(uintptr_t)pr->handle;
+		ur.mapbase = (void *)(uintptr_t)pr->mapbase;
+		ur.mapsize = pr->mapsize;
+		ur.refcnt = pr->refcnt;
+		memcpy(ur.name, pr->name, sizeof(ur.name));
+		return (print_utrace_rtld(fp, &ur));
+	}
+
+	if (len == sizeof(struct utrace_malloc32)) {
+		pm = p;
+		memset(&um, 0, sizeof(um));
+		um.p = pm->p == (uint32_t)-1 ? (void *)(intptr_t)-1 :
+		    (void *)(uintptr_t)pm->p;
+		um.s = pm->s;
+		um.r = (void *)(uintptr_t)pm->r;
+		print_utrace_malloc(fp, &um);
+		return (1);
+	}
+#endif
+
 	return (0);
 }

Modified: user/alc/PQ_LAUNDRY/libexec/rtld-elf/rtld.c
==============================================================================
--- user/alc/PQ_LAUNDRY/libexec/rtld-elf/rtld.c	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/libexec/rtld-elf/rtld.c	Sat Aug 13 22:57:41 2016	(r304063)
@@ -59,6 +59,7 @@
 #include "paths.h"
 #include "rtld_tls.h"
 #include "rtld_printf.h"
+#include "rtld_utrace.h"
 #include "notes.h"
 
 /* Types. */
@@ -273,29 +274,6 @@ char *ld_env_prefix = LD_;
     (dlp)->num_alloc = obj_count,				\
     (dlp)->num_used = 0)
 
-#define	UTRACE_DLOPEN_START		1
-#define	UTRACE_DLOPEN_STOP		2
-#define	UTRACE_DLCLOSE_START		3
-#define	UTRACE_DLCLOSE_STOP		4
-#define	UTRACE_LOAD_OBJECT		5
-#define	UTRACE_UNLOAD_OBJECT		6
-#define	UTRACE_ADD_RUNDEP		7
-#define	UTRACE_PRELOAD_FINISHED		8
-#define	UTRACE_INIT_CALL		9
-#define	UTRACE_FINI_CALL		10
-#define	UTRACE_DLSYM_START		11
-#define	UTRACE_DLSYM_STOP		12
-
-struct utrace_rtld {
-	char sig[4];			/* 'RTLD' */
-	int event;
-	void *handle;
-	void *mapbase;			/* Used for 'parent' and 'init/fini' */
-	size_t mapsize;
-	int refcnt;			/* Used for 'mode' */
-	char name[MAXPATHLEN];
-};
-
 #define	LD_UTRACE(e, h, mb, ms, r, n) do {			\
 	if (ld_utrace != NULL)					\
 		ld_utrace_log(e, h, mb, ms, r, n);		\
@@ -306,11 +284,9 @@ ld_utrace_log(int event, void *handle, v
     int refcnt, const char *name)
 {
 	struct utrace_rtld ut;
+	static const char rtld_utrace_sig[RTLD_UTRACE_SIG_SZ] = RTLD_UTRACE_SIG;
 
-	ut.sig[0] = 'R';
-	ut.sig[1] = 'T';
-	ut.sig[2] = 'L';
-	ut.sig[3] = 'D';
+	memcpy(ut.sig, rtld_utrace_sig, sizeof(ut.sig));
 	ut.event = event;
 	ut.handle = handle;
 	ut.mapbase = mapbase;
@@ -1916,6 +1892,7 @@ static void
 init_rtld(caddr_t mapbase, Elf_Auxinfo **aux_info)
 {
     Obj_Entry objtmp;	/* Temporary rtld object */
+    const Elf_Ehdr *ehdr;
     const Elf_Dyn *dyn_rpath;
     const Elf_Dyn *dyn_soname;
     const Elf_Dyn *dyn_runpath;
@@ -1954,6 +1931,9 @@ init_rtld(caddr_t mapbase, Elf_Auxinfo *
 
 	relocate_objects(&objtmp, true, &objtmp, 0, NULL);
     }
+    ehdr = (Elf_Ehdr *)mapbase;
+    objtmp.phdr = (Elf_Phdr *)((char *)mapbase + ehdr->e_phoff);
+    objtmp.phsize = ehdr->e_phnum * sizeof(objtmp.phdr[0]);
 
     /* Initialize the object list. */
     TAILQ_INIT(&obj_list);
@@ -2164,8 +2144,7 @@ load_needed_objects(Obj_Entry *first, in
 {
     Obj_Entry *obj;
 
-    obj = first;
-    TAILQ_FOREACH_FROM(obj, &obj_list, next) {
+    for (obj = first; obj != NULL; obj = TAILQ_NEXT(obj, next)) {
 	if (obj->marker)
 	    continue;
 	if (process_needed(obj, obj->needed, flags) == -1)
@@ -2769,9 +2748,8 @@ relocate_objects(Obj_Entry *first, bool 
 	Obj_Entry *obj;
 	int error;
 
-	error = 0;
-	obj = first;
-	TAILQ_FOREACH_FROM(obj, &obj_list, next) {
+	for (error = 0, obj = first;  obj != NULL;
+	    obj = TAILQ_NEXT(obj, next)) {
 		if (obj->marker)
 			continue;
 		error = relocate_object(obj, bind_now, rtldobj, flags,
@@ -2811,8 +2789,7 @@ resolve_objects_ifunc(Obj_Entry *first, 
 {
 	Obj_Entry *obj;
 
-	obj = first;
-	TAILQ_FOREACH_FROM(obj, &obj_list, next) {
+	for (obj = first; obj != NULL; obj = TAILQ_NEXT(obj, next)) {
 		if (obj->marker)
 			continue;
 		if (resolve_object_ifunc(obj, bind_now, flags, lockstate) == -1)
@@ -4316,7 +4293,7 @@ trace_loaded_objects(Obj_Entry *obj)
 
     list_containers = getenv(_LD("TRACE_LOADED_OBJECTS_ALL"));
 
-    TAILQ_FOREACH_FROM(obj, &obj_list, next) {
+    for (; obj != NULL; obj = TAILQ_NEXT(obj, next)) {
 	Needed_Entry		*needed;
 	char			*name, *path;
 	bool			is_lib;
@@ -4661,8 +4638,7 @@ allocate_tls(Obj_Entry *objs, void *oldt
 	 */
 	free_tls(oldtls, 2*sizeof(Elf_Addr), sizeof(Elf_Addr));
     } else {
-	obj = objs;
-	TAILQ_FOREACH_FROM(obj, &obj_list, next) {
+	for (obj = objs; obj != NULL; obj = TAILQ_NEXT(obj, next)) {
 		if (obj->marker || obj->tlsoffset == 0)
 			continue;
 		addr = segbase - obj->tlsoffset;

Copied: user/alc/PQ_LAUNDRY/libexec/rtld-elf/rtld_utrace.h (from r304062, head/libexec/rtld-elf/rtld_utrace.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/alc/PQ_LAUNDRY/libexec/rtld-elf/rtld_utrace.h	Sat Aug 13 22:57:41 2016	(r304063, copy of r304062, head/libexec/rtld-elf/rtld_utrace.h)
@@ -0,0 +1,62 @@
+/*-
+ * Copyright (c) 2007 John Baldwin
+ *
+ * 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.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef RTLD_UTRACE_H
+#define RTLD_UTRACE_H
+
+#include <sys/param.h>
+
+#define	UTRACE_DLOPEN_START		1
+#define	UTRACE_DLOPEN_STOP		2
+#define	UTRACE_DLCLOSE_START		3
+#define	UTRACE_DLCLOSE_STOP		4
+#define	UTRACE_LOAD_OBJECT		5
+#define	UTRACE_UNLOAD_OBJECT		6
+#define	UTRACE_ADD_RUNDEP		7
+#define	UTRACE_PRELOAD_FINISHED		8
+#define	UTRACE_INIT_CALL		9
+#define	UTRACE_FINI_CALL		10
+#define	UTRACE_DLSYM_START		11
+#define	UTRACE_DLSYM_STOP		12
+
+#define	RTLD_UTRACE_SIG_SZ		4
+#define	RTLD_UTRACE_SIG			"RTLD"
+
+struct utrace_rtld {
+	char sig[RTLD_UTRACE_SIG_SZ];
+	int event;
+	void *handle;
+	void *mapbase;			/* Used for 'parent' and 'init/fini' */
+	size_t mapsize;
+	int refcnt;			/* Used for 'mode' */
+	char name[MAXPATHLEN];
+};
+
+#endif

Modified: user/alc/PQ_LAUNDRY/sbin/ipfw/Makefile
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/ipfw/Makefile	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/sbin/ipfw/Makefile	Sat Aug 13 22:57:41 2016	(r304063)
@@ -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: user/alc/PQ_LAUNDRY/sbin/ipfw/ipfw.8
==============================================================================
--- user/alc/PQ_LAUNDRY/sbin/ipfw/ipfw.8	Sat Aug 13 22:51:36 2016	(r304062)
+++ user/alc/PQ_LAUNDRY/sbin/ipfw/ipfw.8	Sat Aug 13 22:57:41 2016	(r304063)
@@ -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 .

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-user mailing list