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