Date: Sat, 13 Aug 2016 22:57:42 +0000 (UTC) From: Mark Johnston <markj@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: 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 ... Message-ID: <201608132257.u7DMvgWc096589@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@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@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@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 ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201608132257.u7DMvgWc096589>