svn commit: r307868 - in user/alc/PQ_LAUNDRY: . contrib/binutils/bfd contrib/elftoolchain/elfcopy contrib/gcc/config/rs6000 contrib/libarchive contrib/libarchive/cat/test contrib/libarchive/cpio/te...
Alan Cox
alc at FreeBSD.org
Mon Oct 24 17:08:16 UTC 2016
Author: alc
Date: Mon Oct 24 17:08:12 2016
New Revision: 307868
URL: https://svnweb.freebsd.org/changeset/base/307868
Log:
MFH r307867
Added:
user/alc/PQ_LAUNDRY/contrib/gcc/config/rs6000/freebsdspe.h
- copied unchanged from r307867, head/contrib/gcc/config/rs6000/freebsdspe.h
user/alc/PQ_LAUNDRY/lib/libc/powerpc/gen/Makefile.common
- copied unchanged from r307867, head/lib/libc/powerpc/gen/Makefile.common
user/alc/PQ_LAUNDRY/lib/libc/powerpcspe/
- copied from r307867, head/lib/libc/powerpcspe/
user/alc/PQ_LAUNDRY/share/man/man4/jedec_ts.4
- copied unchanged from r307867, head/share/man/man4/jedec_ts.4
user/alc/PQ_LAUNDRY/sys/conf/ldscript.powerpcspe
- copied unchanged from r307867, head/sys/conf/ldscript.powerpcspe
user/alc/PQ_LAUNDRY/sys/dev/jedec_ts/
- copied from r307867, head/sys/dev/jedec_ts/
user/alc/PQ_LAUNDRY/sys/modules/i2c/jedec_ts/
- copied from r307867, head/sys/modules/i2c/jedec_ts/
user/alc/PQ_LAUNDRY/sys/powerpc/booke/spe.c
- copied unchanged from r307867, head/sys/powerpc/booke/spe.c
user/alc/PQ_LAUNDRY/sys/powerpc/conf/MPC85XXSPE
- copied unchanged from r307867, head/sys/powerpc/conf/MPC85XXSPE
Modified:
user/alc/PQ_LAUNDRY/Makefile
user/alc/PQ_LAUNDRY/Makefile.inc1
user/alc/PQ_LAUNDRY/UPDATING
user/alc/PQ_LAUNDRY/contrib/binutils/bfd/config.bfd
user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfcopy/main.c
user/alc/PQ_LAUNDRY/contrib/libarchive/NEWS
user/alc/PQ_LAUNDRY/contrib/libarchive/cat/test/main.c
user/alc/PQ_LAUNDRY/contrib/libarchive/cat/test/test.h
user/alc/PQ_LAUNDRY/contrib/libarchive/cpio/test/main.c
user/alc/PQ_LAUNDRY/contrib/libarchive/cpio/test/test.h
user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive.h
user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_entry.h
user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/main.c
user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test.h
user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_format_mtree_crash747.c
user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_format_zip_high_compression.c
user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_set_format.c
user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_write_format_iso9660.c
user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/main.c
user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test.h
user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test_option_b.c
user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test_symlink_dir.c
user/alc/PQ_LAUNDRY/contrib/tzdata/asia
user/alc/PQ_LAUNDRY/contrib/tzdata/australasia
user/alc/PQ_LAUNDRY/contrib/tzdata/europe
user/alc/PQ_LAUNDRY/contrib/tzdata/northamerica
user/alc/PQ_LAUNDRY/etc/rc
user/alc/PQ_LAUNDRY/etc/rc.d/Makefile
user/alc/PQ_LAUNDRY/etc/rc.d/swaplate
user/alc/PQ_LAUNDRY/gnu/lib/libgcc/Makefile
user/alc/PQ_LAUNDRY/gnu/lib/libgomp/Makefile
user/alc/PQ_LAUNDRY/gnu/usr.bin/binutils/Makefile.inc0
user/alc/PQ_LAUNDRY/gnu/usr.bin/cc/Makefile.tgt
user/alc/PQ_LAUNDRY/gnu/usr.bin/cc/cc_tools/Makefile.hdrs
user/alc/PQ_LAUNDRY/gnu/usr.bin/cc/include/Makefile
user/alc/PQ_LAUNDRY/gnu/usr.bin/gdb/Makefile.inc
user/alc/PQ_LAUNDRY/gnu/usr.bin/gdb/libgdb/Makefile
user/alc/PQ_LAUNDRY/include/stddef.h
user/alc/PQ_LAUNDRY/lib/libarchive/Makefile
user/alc/PQ_LAUNDRY/lib/libc/powerpc/gen/Makefile.inc
user/alc/PQ_LAUNDRY/lib/libcasper/services/cap_dns/Makefile
user/alc/PQ_LAUNDRY/lib/libcasper/services/cap_grp/Makefile
user/alc/PQ_LAUNDRY/lib/libcasper/services/cap_pwd/Makefile
user/alc/PQ_LAUNDRY/lib/libcasper/services/cap_sysctl/Makefile
user/alc/PQ_LAUNDRY/lib/libgcc_s/Makefile
user/alc/PQ_LAUNDRY/lib/librss/Makefile
user/alc/PQ_LAUNDRY/lib/librss/librss.3
user/alc/PQ_LAUNDRY/lib/libusb/libusb20_ugen20.c
user/alc/PQ_LAUNDRY/lib/msun/powerpc/fenv.h
user/alc/PQ_LAUNDRY/sbin/swapon/swapon.8
user/alc/PQ_LAUNDRY/sbin/swapon/swapon.c
user/alc/PQ_LAUNDRY/share/doc/psd/contents/contents.ms
user/alc/PQ_LAUNDRY/share/doc/psd/title/Title
user/alc/PQ_LAUNDRY/share/misc/pci_vendors
user/alc/PQ_LAUNDRY/share/mk/bsd.cpu.mk
user/alc/PQ_LAUNDRY/share/mk/bsd.endian.mk
user/alc/PQ_LAUNDRY/share/mk/bsd.suffixes.mk
user/alc/PQ_LAUNDRY/share/mk/local.meta.sys.mk
user/alc/PQ_LAUNDRY/share/mk/sys.mk
user/alc/PQ_LAUNDRY/sys/amd64/amd64/trap.c
user/alc/PQ_LAUNDRY/sys/arm/allwinner/aw_thermal.c
user/alc/PQ_LAUNDRY/sys/arm/conf/GENERIC
user/alc/PQ_LAUNDRY/sys/arm64/include/param.h
user/alc/PQ_LAUNDRY/sys/boot/efi/Makefile
user/alc/PQ_LAUNDRY/sys/boot/powerpc/Makefile
user/alc/PQ_LAUNDRY/sys/boot/zfs/zfsimpl.c
user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
user/alc/PQ_LAUNDRY/sys/conf/Makefile.powerpc
user/alc/PQ_LAUNDRY/sys/conf/NOTES
user/alc/PQ_LAUNDRY/sys/conf/files
user/alc/PQ_LAUNDRY/sys/conf/files.powerpc
user/alc/PQ_LAUNDRY/sys/conf/kern.mk
user/alc/PQ_LAUNDRY/sys/conf/options.powerpc
user/alc/PQ_LAUNDRY/sys/dev/cxgbe/common/t4_hw.c
user/alc/PQ_LAUNDRY/sys/dev/dpaa/bman_fdt.c
user/alc/PQ_LAUNDRY/sys/dev/dpaa/qman_fdt.c
user/alc/PQ_LAUNDRY/sys/dev/evdev/evdev.c
user/alc/PQ_LAUNDRY/sys/dev/evdev/evdev.h
user/alc/PQ_LAUNDRY/sys/dev/evdev/evdev_utils.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_netvsc_drv_freebsd.c
user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/hv_rndis_filter.c
user/alc/PQ_LAUNDRY/sys/dev/hyperv/netvsc/if_hnvar.h
user/alc/PQ_LAUNDRY/sys/dev/hyperv/utilities/hv_heartbeat.c
user/alc/PQ_LAUNDRY/sys/dev/hyperv/utilities/hv_kvp.c
user/alc/PQ_LAUNDRY/sys/dev/hyperv/utilities/hv_kvp.h
user/alc/PQ_LAUNDRY/sys/dev/hyperv/utilities/hv_shutdown.c
user/alc/PQ_LAUNDRY/sys/dev/hyperv/utilities/hv_timesync.c
user/alc/PQ_LAUNDRY/sys/dev/hyperv/utilities/hv_util.c
user/alc/PQ_LAUNDRY/sys/dev/hyperv/utilities/hv_util.h
user/alc/PQ_LAUNDRY/sys/dev/hyperv/utilities/hv_utilreg.h
user/alc/PQ_LAUNDRY/sys/dev/hyperv/utilities/vmbus_icreg.h
user/alc/PQ_LAUNDRY/sys/dev/usb/input/ums.c
user/alc/PQ_LAUNDRY/sys/i386/i386/trap.c
user/alc/PQ_LAUNDRY/sys/kern/subr_smp.c
user/alc/PQ_LAUNDRY/sys/kern/subr_turnstile.c
user/alc/PQ_LAUNDRY/sys/kern/subr_uio.c
user/alc/PQ_LAUNDRY/sys/modules/Makefile
user/alc/PQ_LAUNDRY/sys/modules/i2c/Makefile
user/alc/PQ_LAUNDRY/sys/net/rndis.h
user/alc/PQ_LAUNDRY/sys/net80211/ieee80211.h
user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_freebsd.c
user/alc/PQ_LAUNDRY/sys/net80211/ieee80211_freebsd.h
user/alc/PQ_LAUNDRY/sys/netinet/sctp_bsd_addr.c
user/alc/PQ_LAUNDRY/sys/netinet/sctp_output.c
user/alc/PQ_LAUNDRY/sys/powerpc/booke/booke_machdep.c
user/alc/PQ_LAUNDRY/sys/powerpc/conf/MPC85XX
user/alc/PQ_LAUNDRY/sys/powerpc/include/param.h
user/alc/PQ_LAUNDRY/sys/powerpc/include/spr.h
user/alc/PQ_LAUNDRY/sys/powerpc/include/trap.h
user/alc/PQ_LAUNDRY/sys/powerpc/powerpc/trap.c
user/alc/PQ_LAUNDRY/sys/sys/_types.h
user/alc/PQ_LAUNDRY/sys/x86/include/x86_smp.h
user/alc/PQ_LAUNDRY/sys/x86/include/x86_var.h
user/alc/PQ_LAUNDRY/sys/x86/x86/cpu_machdep.c
user/alc/PQ_LAUNDRY/sys/x86/x86/mp_x86.c
user/alc/PQ_LAUNDRY/tools/build/mk/OptionalObsoleteFiles.inc
user/alc/PQ_LAUNDRY/usr.bin/bsdcat/Makefile
user/alc/PQ_LAUNDRY/usr.bin/cpio/Makefile
user/alc/PQ_LAUNDRY/usr.bin/tar/Makefile
user/alc/PQ_LAUNDRY/usr.sbin/Makefile
user/alc/PQ_LAUNDRY/usr.sbin/Makefile.powerpc
user/alc/PQ_LAUNDRY/usr.sbin/amd/Makefile.inc
user/alc/PQ_LAUNDRY/usr.sbin/amd/amd/Makefile
user/alc/PQ_LAUNDRY/usr.sbin/amd/libamu/Makefile
user/alc/PQ_LAUNDRY/usr.sbin/daemon/daemon.8
user/alc/PQ_LAUNDRY/usr.sbin/daemon/daemon.c
user/alc/PQ_LAUNDRY/usr.sbin/pw/grupd.c
user/alc/PQ_LAUNDRY/usr.sbin/pw/pw_nis.c
user/alc/PQ_LAUNDRY/usr.sbin/pw/pwupd.c
user/alc/PQ_LAUNDRY/usr.sbin/tzsetup/Makefile
user/alc/PQ_LAUNDRY/usr.sbin/tzsetup/tzsetup.c
Directory Properties:
user/alc/PQ_LAUNDRY/ (props changed)
user/alc/PQ_LAUNDRY/contrib/binutils/ (props changed)
user/alc/PQ_LAUNDRY/contrib/elftoolchain/ (props changed)
user/alc/PQ_LAUNDRY/contrib/gcc/ (props changed)
user/alc/PQ_LAUNDRY/contrib/libarchive/ (props changed)
user/alc/PQ_LAUNDRY/contrib/tzdata/ (props changed)
user/alc/PQ_LAUNDRY/gnu/lib/ (props changed)
user/alc/PQ_LAUNDRY/gnu/usr.bin/binutils/ (props changed)
user/alc/PQ_LAUNDRY/gnu/usr.bin/cc/cc_tools/ (props changed)
user/alc/PQ_LAUNDRY/gnu/usr.bin/gdb/ (props changed)
user/alc/PQ_LAUNDRY/sys/cddl/contrib/opensolaris/ (props changed)
Modified: user/alc/PQ_LAUNDRY/Makefile
==============================================================================
--- user/alc/PQ_LAUNDRY/Makefile Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/Makefile Mon Oct 24 17:08:12 2016 (r307868)
@@ -239,7 +239,7 @@ _MAKE+= MK_META_MODE=no
_TARGET_ARCH= ${TARGET:S/pc98/i386/:S/arm64/aarch64/}
.elif !defined(TARGET) && defined(TARGET_ARCH) && \
${TARGET_ARCH} != ${MACHINE_ARCH}
-_TARGET= ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/aarch64/arm64/:C/powerpc64/powerpc/:C/riscv64/riscv/}
+_TARGET= ${TARGET_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb)?/arm/:C/aarch64/arm64/:C/powerpc64/powerpc/:C/powerpcspe/powerpc/:C/riscv64/riscv/}
.endif
.if defined(TARGET) && !defined(_TARGET)
_TARGET=${TARGET}
@@ -422,7 +422,7 @@ _UNIVERSE_TARGETS= ${TARGETS}
TARGET_ARCHES_arm?= arm armeb armv6
TARGET_ARCHES_arm64?= aarch64
TARGET_ARCHES_mips?= mipsel mips mips64el mips64 mipsn32
-TARGET_ARCHES_powerpc?= powerpc powerpc64
+TARGET_ARCHES_powerpc?= powerpc powerpc64 powerpcspe
TARGET_ARCHES_pc98?= i386
.for target in ${TARGETS}
TARGET_ARCHES_${target}?= ${target}
Modified: user/alc/PQ_LAUNDRY/Makefile.inc1
==============================================================================
--- user/alc/PQ_LAUNDRY/Makefile.inc1 Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/Makefile.inc1 Mon Oct 24 17:08:12 2016 (r307868)
@@ -358,6 +358,7 @@ KNOWN_ARCHES?= aarch64/arm64 \
mipsn32/mips \
powerpc \
powerpc64/powerpc \
+ powerpcspe/powerpc \
riscv64/riscv \
sparc64
@@ -452,7 +453,7 @@ PACKAGE= kernel
#
BOOTSTRAPPING?= 0
-# Keep these in sync
+# Keep these in sync -- see below for special case exception
MINIMUM_SUPPORTED_OSREL?= 900044
MINIMUM_SUPPORTED_REL?= 9.1
@@ -1556,10 +1557,23 @@ _elftoolchain_libs= lib/libelf lib/libdw
.endif
legacy: .PHONY
+# Temporary special case for automatically detecting the clang compiler issue
+# Note: 9.x didn't have FreeBSD_version bumps often enough, so you may need to
+# set BOOTSTRAPPING to 0 if you're stable/9 tree post-dates r286035 but is before
+# the version bump in r296219 (from July 29, 2015 -> Feb 29, 2016).
+.if ${BOOTSTRAPPING} != 0 && \
+ ${WANT_COMPILER_TYPE} == "clang" && ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} < 30601
+.if ${BOOTSTRAPPING} > 10000000 && ${BOOTSTRAPPING} < 1002501
+ @echo "ERROR: Source upgrades from stable/10 prior to r286033 are not supported."; false
+.elif ${BOOTSTRAPPING} > 9000000 && ${BOOTSTRAPPING} < 903509
+ @echo "ERROR: Source upgrades from stable/9 prior to r286035 are not supported."; false
+.endif
+.endif
.if ${BOOTSTRAPPING} < ${MINIMUM_SUPPORTED_OSREL} && ${BOOTSTRAPPING} != 0
@echo "ERROR: Source upgrades from versions prior to ${MINIMUM_SUPPORTED_REL} are not supported."; \
false
.endif
+
.for _tool in tools/build ${_elftoolchain_libs}
${_+_}@${ECHODIR} "===> ${_tool} (obj,includes,all,install)"; \
cd ${.CURDIR}/${_tool}; \
Modified: user/alc/PQ_LAUNDRY/UPDATING
==============================================================================
--- user/alc/PQ_LAUNDRY/UPDATING Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/UPDATING Mon Oct 24 17:08:12 2016 (r307868)
@@ -41,10 +41,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12
11.0-RELEASE). These revisions post-date the 10.2 and 9.3 releases, so
you'll need to take the unusual step of upgrading to the tip of the
stable branch before moving to 11 or -current via a source upgrade.
- stable/11 and 11.0-RELEASE post-date the fix so you can move from them
- to -current. This differs from the historical situation where one could
- upgrade from anywhere on the last couple of stable branches, so be
- careful.
+ stable/11 and 11.0-RELEASE have working newer compiler. This differs
+ from the historical situation where one could upgrade from anywhere on
+ the last couple of stable branches, so be careful.
+
+ If you're running a hybrid system on 9.x or 10.x with an updated clang
+ compiler or are using an supported external toolchain, the build system
+ will allow the upgrade. Otherwise it will print a reminder.
****************************** SPECIAL WARNING: ******************************
Modified: user/alc/PQ_LAUNDRY/contrib/binutils/bfd/config.bfd
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/binutils/bfd/config.bfd Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/binutils/bfd/config.bfd Mon Oct 24 17:08:12 2016 (r307868)
@@ -1103,7 +1103,7 @@ case "${targ}" in
want64=true
;;
#endif
- powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
+ powerpc-*-*bsd* | powerpcspe-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
powerpc-*-solaris2* | powerpc-*-linux-* | powerpc-*-rtems* | \
powerpc-*-chorus*)
targ_defvec=bfd_elf32_powerpc_vec
Modified: user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfcopy/main.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfcopy/main.c Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/elftoolchain/elfcopy/main.c Mon Oct 24 17:08:12 2016 (r307868)
@@ -1529,6 +1529,22 @@ print_version(void)
exit(EXIT_SUCCESS);
}
+/*
+ * Compare the ending of s with end.
+ */
+static int
+strrcmp(const char *s, const char *end)
+{
+ size_t endlen, slen;
+
+ slen = strlen(s);
+ endlen = strlen(end);
+
+ if (slen >= endlen)
+ s += slen - endlen;
+ return (strcmp(s, end));
+}
+
int
main(int argc, char **argv)
{
@@ -1562,12 +1578,16 @@ main(int argc, char **argv)
if ((ecp->progname = ELFTC_GETPROGNAME()) == NULL)
ecp->progname = "elfcopy";
- if (strcmp(ecp->progname, "strip") == 0)
+ if (strrcmp(ecp->progname, "strip") == 0)
strip_main(ecp, argc, argv);
- else if (strcmp(ecp->progname, "mcs") == 0)
+ else if (strrcmp(ecp->progname, "mcs") == 0)
mcs_main(ecp, argc, argv);
- else
+ else {
+ if (strrcmp(ecp->progname, "elfcopy") != 0 &&
+ strrcmp(ecp->progname, "objcopy") != 0)
+ warnx("program mode not known, defaulting to elfcopy");
elfcopy_main(ecp, argc, argv);
+ }
free_sec_add(ecp);
free_sec_act(ecp);
Copied: user/alc/PQ_LAUNDRY/contrib/gcc/config/rs6000/freebsdspe.h (from r307867, head/contrib/gcc/config/rs6000/freebsdspe.h)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/alc/PQ_LAUNDRY/contrib/gcc/config/rs6000/freebsdspe.h Mon Oct 24 17:08:12 2016 (r307868, copy of r307867, head/contrib/gcc/config/rs6000/freebsdspe.h)
@@ -0,0 +1,77 @@
+/* Definitions of target machine for GNU compiler,
+ for PowerPC e500 machines running FreeBSD.
+ Based on linuxspe.h
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+ Contributed by Aldy Hernandez (aldy at quesejoda.com).
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 2, or (at your
+ option) any later version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING. If not, write to the
+ Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
+#undef TARGET_VERSION
+#define TARGET_VERSION fprintf (stderr, " (PowerPC E500 FreeBSD)");
+
+/* Override rs6000.h and sysv4.h definition. */
+#undef TARGET_DEFAULT
+#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_STRICT_ALIGN)
+
+#undef TARGET_SPE_ABI
+#undef TARGET_SPE
+#undef TARGET_E500
+#undef TARGET_ISEL
+#undef TARGET_FPRS
+#undef TARGET_E500_SINGLE
+#undef TARGET_E500_DOUBLE
+
+#define TARGET_SPE_ABI rs6000_spe_abi
+#define TARGET_SPE rs6000_spe
+#define TARGET_E500 (rs6000_cpu == PROCESSOR_PPC8540)
+#define TARGET_ISEL rs6000_isel
+#define TARGET_FPRS (rs6000_float_gprs == 0)
+#define TARGET_E500_SINGLE (TARGET_HARD_FLOAT && rs6000_float_gprs == 1)
+#define TARGET_E500_DOUBLE (TARGET_HARD_FLOAT && rs6000_float_gprs == 2)
+
+#undef SUBSUBTARGET_OVERRIDE_OPTIONS
+#define SUBSUBTARGET_OVERRIDE_OPTIONS \
+ if (rs6000_select[1].string == NULL) \
+ rs6000_cpu = PROCESSOR_PPC8540; \
+ if (!rs6000_explicit_options.abi) \
+ rs6000_spe_abi = 1; \
+ if (!rs6000_explicit_options.float_gprs) \
+ rs6000_float_gprs = 1; \
+ /* See note below. */ \
+ /*if (!rs6000_explicit_options.long_double)*/ \
+ /* rs6000_long_double_type_size = 128;*/ \
+ if (!rs6000_explicit_options.spe) \
+ rs6000_spe = 1; \
+ if (!rs6000_explicit_options.isel) \
+ rs6000_isel = 1; \
+ if (target_flags & MASK_64BIT) \
+ error ("-m64 not supported in this configuration")
+
+/* The e500 ABI says that either long doubles are 128 bits, or if
+ implemented in any other size, the compiler/linker should error out.
+ We have no emulation libraries for 128 bit long doubles, and I hate
+ the dozens of failures on the regression suite. So I'm breaking ABI
+ specifications, until I properly fix the emulation.
+
+ Enable these later.
+#undef CPP_LONGDOUBLE_DEFAULT_SPEC
+#define CPP_LONGDOUBLE_DEFAULT_SPEC "-D__LONG_DOUBLE_128__=1"
+*/
+
+#undef ASM_DEFAULT_SPEC
+#define ASM_DEFAULT_SPEC "-mppc -mspe -me500"
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/NEWS
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/NEWS Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/NEWS Mon Oct 24 17:08:12 2016 (r307868)
@@ -1,3 +1,6 @@
+Oct 23, 2016: libarchive 3.2.2 released
+ Security release
+
Jun 20, 2016: libarchive 3.2.1 released
This fixes a handful of security and other critical issues with 3.2.0
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/cat/test/main.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/cat/test/main.c Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/cat/test/main.c Mon Oct 24 17:08:12 2016 (r307868)
@@ -129,6 +129,13 @@
# include <crtdbg.h>
#endif
+mode_t umasked(mode_t expected_mode)
+{
+ mode_t mode = umask(0);
+ umask(mode);
+ return expected_mode & ~mode;
+}
+
/* Path to working directory for current test */
const char *testworkdir;
#ifdef PROGRAM
@@ -1156,6 +1163,35 @@ assertion_file_contains_lines_any_order(
return (0);
}
+/* Verify that a text file does not contains the specified strings */
+int
+assertion_file_contains_no_invalid_strings(const char *file, int line,
+ const char *pathname, const char *strings[])
+{
+ char *buff;
+ int i;
+
+ buff = slurpfile(NULL, "%s", pathname);
+ if (buff == NULL) {
+ failure_start(file, line, "Can't read file: %s", pathname);
+ failure_finish(NULL);
+ return (0);
+ }
+
+ for (i = 0; strings[i] != NULL; ++i) {
+ if (strstr(buff, strings[i]) != NULL) {
+ failure_start(file, line, "Invalid string in %s: %s", pathname,
+ strings[i]);
+ failure_finish(NULL);
+ free(buff);
+ return(0);
+ }
+ }
+
+ free(buff);
+ return (0);
+}
+
/* Test that two paths point to the same file. */
/* As a side-effect, asserts that both files exist. */
static int
@@ -1293,6 +1329,11 @@ assertion_file_time(const char *file, in
switch (type) {
case 'a': filet_nsec = st.st_atimespec.tv_nsec; break;
case 'b': filet = st.st_birthtime;
+ /* FreeBSD filesystems that don't support birthtime
+ * (e.g., UFS1) always return -1 here. */
+ if (filet == -1) {
+ return (1);
+ }
filet_nsec = st.st_birthtimespec.tv_nsec; break;
case 'm': filet_nsec = st.st_mtimespec.tv_nsec; break;
default: fprintf(stderr, "INTERNAL: Bad type %c for file time", type);
@@ -1370,6 +1411,8 @@ assertion_file_mode(const char *file, in
assertion_count(file, line);
#if defined(_WIN32) && !defined(__CYGWIN__)
failure_start(file, line, "assertFileMode not yet implemented for Windows");
+ (void)mode; /* UNUSED */
+ (void)r; /* UNUSED */
#else
{
struct stat st;
@@ -1424,7 +1467,7 @@ assertion_file_nlinks(const char *file,
assertion_count(file, line);
r = lstat(pathname, &st);
if (r == 0 && (int)st.st_nlink == nlinks)
- return (1);
+ return (1);
failure_start(file, line, "File %s has %d links, expected %d",
pathname, st.st_nlink, nlinks);
failure_finish(NULL);
@@ -1660,6 +1703,7 @@ assertion_make_file(const char *file, in
if (0 != chmod(path, mode)) {
failure_start(file, line, "Could not chmod %s", path);
failure_finish(NULL);
+ close(fd);
return (0);
}
if (contents != NULL) {
@@ -1674,6 +1718,7 @@ assertion_make_file(const char *file, in
failure_start(file, line,
"Could not write to %s", path);
failure_finish(NULL);
+ close(fd);
return (0);
}
}
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/cat/test/test.h
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/cat/test/test.h Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/cat/test/test.h Mon Oct 24 17:08:12 2016 (r307868)
@@ -174,6 +174,9 @@
/* Assert that file contents match a string. */
#define assertFileContents(data, data_size, pathname) \
assertion_file_contents(__FILE__, __LINE__, data, data_size, pathname)
+/* Verify that a file does not contain invalid strings */
+#define assertFileContainsNoInvalidStrings(pathname, strings) \
+ assertion_file_contains_no_invalid_strings(__FILE__, __LINE__, pathname, strings)
#define assertFileMtime(pathname, sec, nsec) \
assertion_file_mtime(__FILE__, __LINE__, pathname, sec, nsec)
#define assertFileMtimeRecent(pathname) \
@@ -182,6 +185,8 @@
assertion_file_nlinks(__FILE__, __LINE__, pathname, nlinks)
#define assertFileSize(pathname, size) \
assertion_file_size(__FILE__, __LINE__, pathname, size)
+#define assertFileMode(pathname, mode) \
+ assertion_file_mode(__FILE__, __LINE__, pathname, mode)
#define assertTextFileContents(text, pathname) \
assertion_text_file_contents(__FILE__, __LINE__, text, pathname)
#define assertFileContainsLinesAnyOrder(pathname, lines) \
@@ -239,6 +244,7 @@ int assertion_file_atime_recent(const ch
int assertion_file_birthtime(const char *, int, const char *, long, long);
int assertion_file_birthtime_recent(const char *, int, const char *);
int assertion_file_contains_lines_any_order(const char *, int, const char *, const char **);
+int assertion_file_contains_no_invalid_strings(const char *, int, const char *, const char **);
int assertion_file_contents(const char *, int, const void *, int, const char *);
int assertion_file_exists(const char *, int, const char *);
int assertion_file_mode(const char *, int, const char *, int);
@@ -327,6 +333,9 @@ void copy_reference_file(const char *);
*/
void extract_reference_files(const char **);
+/* Subtract umask from mode */
+mode_t umasked(mode_t expected_mode);
+
/* Path to working directory for current test */
extern const char *testworkdir;
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/cpio/test/main.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/cpio/test/main.c Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/cpio/test/main.c Mon Oct 24 17:08:12 2016 (r307868)
@@ -1164,6 +1164,35 @@ assertion_file_contains_lines_any_order(
return (0);
}
+/* Verify that a text file does not contains the specified strings */
+int
+assertion_file_contains_no_invalid_strings(const char *file, int line,
+ const char *pathname, const char *strings[])
+{
+ char *buff;
+ int i;
+
+ buff = slurpfile(NULL, "%s", pathname);
+ if (buff == NULL) {
+ failure_start(file, line, "Can't read file: %s", pathname);
+ failure_finish(NULL);
+ return (0);
+ }
+
+ for (i = 0; strings[i] != NULL; ++i) {
+ if (strstr(buff, strings[i]) != NULL) {
+ failure_start(file, line, "Invalid string in %s: %s", pathname,
+ strings[i]);
+ failure_finish(NULL);
+ free(buff);
+ return(0);
+ }
+ }
+
+ free(buff);
+ return (0);
+}
+
/* Test that two paths point to the same file. */
/* As a side-effect, asserts that both files exist. */
static int
@@ -1383,6 +1412,8 @@ assertion_file_mode(const char *file, in
assertion_count(file, line);
#if defined(_WIN32) && !defined(__CYGWIN__)
failure_start(file, line, "assertFileMode not yet implemented for Windows");
+ (void)mode; /* UNUSED */
+ (void)r; /* UNUSED */
#else
{
struct stat st;
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/cpio/test/test.h
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/cpio/test/test.h Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/cpio/test/test.h Mon Oct 24 17:08:12 2016 (r307868)
@@ -174,6 +174,9 @@
/* Assert that file contents match a string. */
#define assertFileContents(data, data_size, pathname) \
assertion_file_contents(__FILE__, __LINE__, data, data_size, pathname)
+/* Verify that a file does not contain invalid strings */
+#define assertFileContainsNoInvalidStrings(pathname, strings) \
+ assertion_file_contains_no_invalid_strings(__FILE__, __LINE__, pathname, strings)
#define assertFileMtime(pathname, sec, nsec) \
assertion_file_mtime(__FILE__, __LINE__, pathname, sec, nsec)
#define assertFileMtimeRecent(pathname) \
@@ -241,6 +244,7 @@ int assertion_file_atime_recent(const ch
int assertion_file_birthtime(const char *, int, const char *, long, long);
int assertion_file_birthtime_recent(const char *, int, const char *);
int assertion_file_contains_lines_any_order(const char *, int, const char *, const char **);
+int assertion_file_contains_no_invalid_strings(const char *, int, const char *, const char **);
int assertion_file_contents(const char *, int, const void *, int, const char *);
int assertion_file_exists(const char *, int, const char *);
int assertion_file_mode(const char *, int, const char *, int);
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive.h
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive.h Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive.h Mon Oct 24 17:08:12 2016 (r307868)
@@ -36,7 +36,7 @@
* assert that ARCHIVE_VERSION_NUMBER >= 2012108.
*/
/* Note: Compiler will complain if this does not match archive_entry.h! */
-#define ARCHIVE_VERSION_NUMBER 3002001
+#define ARCHIVE_VERSION_NUMBER 3002002
#include <sys/stat.h>
#include <stddef.h> /* for wchar_t */
@@ -155,7 +155,7 @@ __LA_DECL int archive_version_number(vo
/*
* Textual name/version of the library, useful for version displays.
*/
-#define ARCHIVE_VERSION_ONLY_STRING "3.2.1"
+#define ARCHIVE_VERSION_ONLY_STRING "3.2.2"
#define ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING
__LA_DECL const char * archive_version_string(void);
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_entry.h
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_entry.h Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/archive_entry.h Mon Oct 24 17:08:12 2016 (r307868)
@@ -29,7 +29,7 @@
#define ARCHIVE_ENTRY_H_INCLUDED
/* Note: Compiler will complain if this does not match archive.h! */
-#define ARCHIVE_VERSION_NUMBER 3002001
+#define ARCHIVE_VERSION_NUMBER 3002002
/*
* Note: archive_entry.h is for use outside of libarchive; the
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/main.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/main.c Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/main.c Mon Oct 24 17:08:12 2016 (r307868)
@@ -1162,6 +1162,35 @@ assertion_file_contains_lines_any_order(
return (0);
}
+/* Verify that a text file does not contains the specified strings */
+int
+assertion_file_contains_no_invalid_strings(const char *file, int line,
+ const char *pathname, const char *strings[])
+{
+ char *buff;
+ int i;
+
+ buff = slurpfile(NULL, "%s", pathname);
+ if (buff == NULL) {
+ failure_start(file, line, "Can't read file: %s", pathname);
+ failure_finish(NULL);
+ return (0);
+ }
+
+ for (i = 0; strings[i] != NULL; ++i) {
+ if (strstr(buff, strings[i]) != NULL) {
+ failure_start(file, line, "Invalid string in %s: %s", pathname,
+ strings[i]);
+ failure_finish(NULL);
+ free(buff);
+ return(0);
+ }
+ }
+
+ free(buff);
+ return (0);
+}
+
/* Test that two paths point to the same file. */
/* As a side-effect, asserts that both files exist. */
static int
@@ -1381,6 +1410,8 @@ assertion_file_mode(const char *file, in
assertion_count(file, line);
#if defined(_WIN32) && !defined(__CYGWIN__)
failure_start(file, line, "assertFileMode not yet implemented for Windows");
+ (void)mode; /* UNUSED */
+ (void)r; /* UNUSED */
#else
{
struct stat st;
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test.h
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test.h Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test.h Mon Oct 24 17:08:12 2016 (r307868)
@@ -174,6 +174,9 @@
/* Assert that file contents match a string. */
#define assertFileContents(data, data_size, pathname) \
assertion_file_contents(__FILE__, __LINE__, data, data_size, pathname)
+/* Verify that a file does not contain invalid strings */
+#define assertFileContainsNoInvalidStrings(pathname, strings) \
+ assertion_file_contains_no_invalid_strings(__FILE__, __LINE__, pathname, strings)
#define assertFileMtime(pathname, sec, nsec) \
assertion_file_mtime(__FILE__, __LINE__, pathname, sec, nsec)
#define assertFileMtimeRecent(pathname) \
@@ -241,6 +244,7 @@ int assertion_file_atime_recent(const ch
int assertion_file_birthtime(const char *, int, const char *, long, long);
int assertion_file_birthtime_recent(const char *, int, const char *);
int assertion_file_contains_lines_any_order(const char *, int, const char *, const char **);
+int assertion_file_contains_no_invalid_strings(const char *, int, const char *, const char **);
int assertion_file_contents(const char *, int, const void *, int, const char *);
int assertion_file_exists(const char *, int, const char *);
int assertion_file_mode(const char *, int, const char *, int);
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_format_mtree_crash747.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_format_mtree_crash747.c Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_format_mtree_crash747.c Mon Oct 24 17:08:12 2016 (r307868)
@@ -33,6 +33,11 @@ DEFINE_TEST(test_read_format_mtree_crash
const char *reffile = "test_read_format_mtree_crash747.mtree.bz2";
struct archive *a;
+ if (archive_bzlib_version() == NULL) {
+ skipping("This test requires bzlib");
+ return;
+ }
+
extract_reference_file(reffile);
assert((a = archive_read_new()) != NULL);
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_format_zip_high_compression.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_format_zip_high_compression.c Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_format_zip_high_compression.c Mon Oct 24 17:08:12 2016 (r307868)
@@ -50,6 +50,11 @@ DEFINE_TEST(test_read_format_zip_high_co
size_t s;
int64_t o;
+ if (archive_zlib_version() == NULL) {
+ skipping("Zip compression test requires zlib");
+ return;
+ }
+
extract_reference_file(refname);
p = slurpfile(&archive_size, refname);
@@ -82,6 +87,11 @@ DEFINE_TEST(test_read_format_zip_high_co
char *body, *body_read, *buff;
int n;
+ if (archive_zlib_version() == NULL) {
+ skipping("Zip compression test requires zlib");
+ return;
+ }
+
assert((body = malloc(body_size)) != NULL);
assert((body_read = malloc(body_size)) != NULL);
assert((buff = malloc(buff_size)) != NULL);
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_set_format.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_set_format.c Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_read_set_format.c Mon Oct 24 17:08:12 2016 (r307868)
@@ -133,11 +133,12 @@ DEFINE_TEST(test_read_append_filter)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_TAR));
r = archive_read_append_filter(a, ARCHIVE_FILTER_GZIP);
- if (r == ARCHIVE_WARN && !canGzip()) {
- skipping("gzip reading not fully supported on this platform");
+ if (r != ARCHIVE_OK && archive_zlib_version() == NULL && !canGzip()) {
+ skipping("gzip tests require zlib or working gzip command");
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
return;
}
+ assertEqualIntA(a, ARCHIVE_OK, r);
assertEqualInt(ARCHIVE_OK,
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -200,8 +201,11 @@ DEFINE_TEST(test_read_append_filter_wron
{
struct archive_entry *ae;
struct archive *a;
+#if !defined(_WIN32) || defined(__CYGWIN__)
+ FILE * fp;
int fd;
fpos_t pos;
+#endif
/*
* If we have "bunzip2 -q", try using that.
@@ -211,11 +215,13 @@ DEFINE_TEST(test_read_append_filter_wron
return;
}
+#if !defined(_WIN32) || defined(__CYGWIN__)
/* bunzip2 will write to stderr, redirect it to a file */
fflush(stderr);
fgetpos(stderr, &pos);
fd = dup(fileno(stderr));
- freopen("stderr1", "w", stderr);
+ fp = freopen("stderr1", "w", stderr);
+#endif
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_TAR));
@@ -227,12 +233,15 @@ DEFINE_TEST(test_read_append_filter_wron
assertEqualIntA(a, ARCHIVE_WARN, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
- /* restore stderr */
- fflush(stderr);
- dup2(fd, fileno(stderr));
- close(fd);
- clearerr(stderr);
- fsetpos(stderr, &pos);
-
+#if !defined(_WIN32) || defined(__CYGWIN__)
+ /* restore stderr and verify results */
+ if (fp != NULL) {
+ fflush(stderr);
+ dup2(fd, fileno(stderr));
+ close(fd);
+ clearerr(stderr);
+ fsetpos(stderr, &pos);
+ }
assertTextFileContents("bunzip2: (stdin) is not a bzip2 file.\n", "stderr1");
+#endif
}
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_write_format_iso9660.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_write_format_iso9660.c Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/libarchive/test/test_write_format_iso9660.c Mon Oct 24 17:08:12 2016 (r307868)
@@ -117,8 +117,8 @@ DEFINE_TEST(test_write_format_iso9660)
*/
dirname[0] = '\0';
strcpy(dir, "/dir0");
- for (i = 0; i < 10; i++) {
- dir[4] = '0' + i;
+ for (i = 0; i < 13; i++) {
+ dir[4] = "0123456789ABCDEF"[i];
if (i == 0)
strcat(dirname, dir+1);
else
@@ -134,6 +134,19 @@ DEFINE_TEST(test_write_format_iso9660)
archive_entry_free(ae);
}
+ strcat(dirname, "/file");
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_atime(ae, 2, 20);
+ archive_entry_set_birthtime(ae, 3, 30);
+ archive_entry_set_ctime(ae, 4, 40);
+ archive_entry_set_mtime(ae, 5, 50);
+ archive_entry_copy_pathname(ae, dirname);
+ archive_entry_set_mode(ae, S_IFREG | 0755);
+ archive_entry_set_size(ae, 8);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+ assertEqualIntA(a, 8, archive_write_data(a, "12345678", 9));
+
/*
* "dir0/dir1/file1" has 8 bytes of data.
*/
@@ -333,6 +346,45 @@ DEFINE_TEST(test_write_format_iso9660)
assertEqualInt(2048, archive_entry_size(ae));
/*
+ * Read "dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA"
+ */
+ assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+ assertEqualInt(2, archive_entry_atime(ae));
+ assertEqualInt(3, archive_entry_birthtime(ae));
+ assertEqualInt(4, archive_entry_ctime(ae));
+ assertEqualInt(5, archive_entry_mtime(ae));
+ assertEqualString("dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA",
+ archive_entry_pathname(ae));
+ assert((S_IFDIR | 0555) == archive_entry_mode(ae));
+ assertEqualInt(2048, archive_entry_size(ae));
+
+ /*
+ * Read "dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA/dirB"
+ */
+ assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+ assertEqualInt(2, archive_entry_atime(ae));
+ assertEqualInt(3, archive_entry_birthtime(ae));
+ assertEqualInt(4, archive_entry_ctime(ae));
+ assertEqualInt(5, archive_entry_mtime(ae));
+ assertEqualString("dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA/dirB",
+ archive_entry_pathname(ae));
+ assert((S_IFDIR | 0555) == archive_entry_mode(ae));
+ assertEqualInt(2048, archive_entry_size(ae));
+
+ /*
+ * Read "dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA/dirB/dirC"
+ */
+ assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+ assertEqualInt(2, archive_entry_atime(ae));
+ assertEqualInt(3, archive_entry_birthtime(ae));
+ assertEqualInt(4, archive_entry_ctime(ae));
+ assertEqualInt(5, archive_entry_mtime(ae));
+ assertEqualString("dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA/dirB/dirC",
+ archive_entry_pathname(ae));
+ assert((S_IFDIR | 0555) == archive_entry_mode(ae));
+ assertEqualInt(2048, archive_entry_size(ae));
+
+ /*
* Read "hardlnk"
*/
assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
@@ -386,6 +438,21 @@ DEFINE_TEST(test_write_format_iso9660)
assertEqualMem(buff2, "12345678", 8);
/*
+ * Read "dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA/dirB/dirC/file"
+ */
+ assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+ assertEqualInt(2, archive_entry_atime(ae));
+ assertEqualInt(3, archive_entry_birthtime(ae));
+ assertEqualInt(4, archive_entry_ctime(ae));
+ assertEqualInt(5, archive_entry_mtime(ae));
+ assertEqualString("dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA/dirB/dirC/file", archive_entry_pathname(ae));
+ assert((AE_IFREG | 0555) == archive_entry_mode(ae));
+ assertEqualInt(1, archive_entry_nlink(ae));
+ assertEqualInt(8, archive_entry_size(ae));
+ assertEqualIntA(a, 8, archive_read_data(a, buff2, 10));
+ assertEqualMem(buff2, "12345678", 8);
+
+ /*
* Read "dir0/dir1/file1"
*/
assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
@@ -580,29 +647,65 @@ DEFINE_TEST(test_write_format_iso9660)
assertEqualInt(2048, archive_entry_size(ae));
/*
- * Read "hardlnk"
+ * Read "dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA"
*/
assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
assertEqualInt(5, archive_entry_atime(ae));
assertEqualInt(5, archive_entry_ctime(ae));
assertEqualInt(5, archive_entry_mtime(ae));
- assertEqualString("hardlnk", archive_entry_pathname(ae));
+ assertEqualString("dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA",
+ archive_entry_pathname(ae));
+ assert((S_IFDIR | 0700) == archive_entry_mode(ae));
+ assertEqualInt(2048, archive_entry_size(ae));
+
+ /*
+ * Read "dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA/dirB"
+ */
+ assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+ assertEqualInt(5, archive_entry_atime(ae));
+ assertEqualInt(5, archive_entry_ctime(ae));
+ assertEqualInt(5, archive_entry_mtime(ae));
+ assertEqualString("dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA/dirB",
+ archive_entry_pathname(ae));
+ assert((S_IFDIR | 0700) == archive_entry_mode(ae));
+ assertEqualInt(2048, archive_entry_size(ae));
+
+ /*
+ * Read "dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA/dirB/dirC"
+ */
+ assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+ assertEqualInt(5, archive_entry_atime(ae));
+ assertEqualInt(5, archive_entry_ctime(ae));
+ assertEqualInt(5, archive_entry_mtime(ae));
+ assertEqualString("dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA/dirB/dirC",
+ archive_entry_pathname(ae));
+ assert((S_IFDIR | 0700) == archive_entry_mode(ae));
+ assertEqualInt(2048, archive_entry_size(ae));
+
+ /*
+ * Read "file"
+ */
+ assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+ assertEqualInt(5, archive_entry_atime(ae));
+ assertEqualInt(5, archive_entry_ctime(ae));
+ assertEqualInt(5, archive_entry_mtime(ae));
+ assertEqualString("file", archive_entry_pathname(ae));
assert((AE_IFREG | 0400) == archive_entry_mode(ae));
- assertEqualInt(2, archive_entry_nlink(ae));
assertEqualInt(8, archive_entry_size(ae));
assertEqualIntA(a, 8, archive_read_data(a, buff2, 10));
assertEqualMem(buff2, "12345678", 8);
/*
- * Read "file"
+ * Read "hardlnk"
*/
assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
assertEqualInt(5, archive_entry_atime(ae));
assertEqualInt(5, archive_entry_ctime(ae));
assertEqualInt(5, archive_entry_mtime(ae));
- assertEqualString("file", archive_entry_pathname(ae));
- assertEqualString("hardlnk", archive_entry_hardlink(ae));
+ assertEqualString("hardlnk", archive_entry_pathname(ae));
+ assertEqualString("file", archive_entry_hardlink(ae));
assert((AE_IFREG | 0400) == archive_entry_mode(ae));
+ assertEqualInt(2, archive_entry_nlink(ae));
assertEqualInt(0, archive_entry_size(ae));
assertEqualIntA(a, 0, archive_read_data(a, buff2, 10));
@@ -625,6 +728,22 @@ DEFINE_TEST(test_write_format_iso9660)
assertEqualMem(buff2, "12345678", 8);
/*
+ * Read "dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA/dirB/dirC/file"
+ */
+ assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+ assertEqualInt(5, archive_entry_atime(ae));
+ assertEqualInt(5, archive_entry_ctime(ae));
+ assertEqualInt(5, archive_entry_mtime(ae));
+ assertEqualString(
+ "dir0/dir1/dir2/dir3/dir4/dir5/dir6/dir7/dir8/dir9/dirA/dirB/dirC/file",
+ archive_entry_pathname(ae));
+ assert((AE_IFREG | 0400) == archive_entry_mode(ae));
+ assertEqualInt(1, archive_entry_nlink(ae));
+ assertEqualInt(8, archive_entry_size(ae));
+ assertEqualIntA(a, 8, archive_read_data(a, buff2, 10));
+ assertEqualMem(buff2, "12345678", 8);
+
+ /*
* Read "dir0/dir1/file1"
*/
assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
@@ -746,6 +865,42 @@ DEFINE_TEST(test_write_format_iso9660)
assertEqualInt(2048, archive_entry_size(ae));
/*
+ * Read "rr_moved/dir7/dir8/dir9/dira"
+ */
+ assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+ assertEqualInt(5, archive_entry_atime(ae));
+ assertEqualInt(5, archive_entry_ctime(ae));
+ assertEqualInt(5, archive_entry_mtime(ae));
+ assertEqualString("RR_MOVED/DIR7/DIR8/DIR9/DIRA",
+ archive_entry_pathname(ae));
+ assert((S_IFDIR | 0700) == archive_entry_mode(ae));
+ assertEqualInt(2048, archive_entry_size(ae));
+
+ /*
+ * Read "rr_moved/dir7/dir8/dir9/dira/dirB"
+ */
+ assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+ assertEqualInt(5, archive_entry_atime(ae));
+ assertEqualInt(5, archive_entry_ctime(ae));
+ assertEqualInt(5, archive_entry_mtime(ae));
+ assertEqualString("RR_MOVED/DIR7/DIR8/DIR9/DIRA/DIRB",
+ archive_entry_pathname(ae));
+ assert((S_IFDIR | 0700) == archive_entry_mode(ae));
+ assertEqualInt(2048, archive_entry_size(ae));
+
+ /*
+ * Read "rr_moved/dir7/dir8/dir9/dirA/dirB/dirC"
+ */
+ assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+ assertEqualInt(5, archive_entry_atime(ae));
+ assertEqualInt(5, archive_entry_ctime(ae));
+ assertEqualInt(5, archive_entry_mtime(ae));
+ assertEqualString("RR_MOVED/DIR7/DIR8/DIR9/DIRA/DIRB/DIRC",
+ archive_entry_pathname(ae));
+ assert((S_IFDIR | 0700) == archive_entry_mode(ae));
+ assertEqualInt(2048, archive_entry_size(ae));
+
+ /*
* Read "dir0"
*/
assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
@@ -827,33 +982,35 @@ DEFINE_TEST(test_write_format_iso9660)
assertEqualInt(2048, archive_entry_size(ae));
/*
- * Read "file"
+ * Read "hardlink"
*/
assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
assertEqualInt(5, archive_entry_atime(ae));
- assertEqualInt(0, archive_entry_birthtime(ae));
assertEqualInt(5, archive_entry_ctime(ae));
assertEqualInt(5, archive_entry_mtime(ae));
- assertEqualString("FILE", archive_entry_pathname(ae));
+ assertEqualString("HARDLNK", archive_entry_pathname(ae));
+ assertEqualString(NULL, archive_entry_hardlink(ae));
assert((AE_IFREG | 0400) == archive_entry_mode(ae));
- assertEqualInt(2, archive_entry_nlink(ae));
assertEqualInt(8, archive_entry_size(ae));
assertEqualIntA(a, 8, archive_read_data(a, buff2, 10));
assertEqualMem(buff2, "12345678", 8);
/*
- * Read "hardlink"
+ * Read "file"
*/
assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
assertEqualInt(5, archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_birthtime(ae));
assertEqualInt(5, archive_entry_ctime(ae));
assertEqualInt(5, archive_entry_mtime(ae));
- assertEqualString("HARDLNK", archive_entry_pathname(ae));
- assertEqualString("FILE", archive_entry_hardlink(ae));
+ assertEqualString("FILE", archive_entry_pathname(ae));
+ assertEqualString("HARDLNK", archive_entry_hardlink(ae));
assert((AE_IFREG | 0400) == archive_entry_mode(ae));
+ assertEqualInt(2, archive_entry_nlink(ae));
assertEqualInt(0, archive_entry_size(ae));
assertEqualIntA(a, 0, archive_read_data(a, buff2, 10));
+
/*
* Read longname
*/
@@ -871,6 +1028,22 @@ DEFINE_TEST(test_write_format_iso9660)
assertEqualMem(buff2, "12345678", 8);
/*
+ * Read "rr_moved/dir7/dir8/dir9/dirA/dirB/dirC/file"
+ */
+ assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+ assertEqualInt(5, archive_entry_atime(ae));
+ assertEqualInt(5, archive_entry_ctime(ae));
+ assertEqualInt(5, archive_entry_mtime(ae));
+ assertEqualString(
+ "RR_MOVED/DIR7/DIR8/DIR9/DIRA/DIRB/DIRC/FILE",
+ archive_entry_pathname(ae));
+ assert((AE_IFREG | 0400) == archive_entry_mode(ae));
+ assertEqualInt(1, archive_entry_nlink(ae));
+ assertEqualInt(8, archive_entry_size(ae));
+ assertEqualIntA(a, 8, archive_read_data(a, buff2, 10));
+ assertEqualMem(buff2, "12345678", 8);
+
+ /*
* Read "dir0/dir1/file1"
*/
assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/main.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/main.c Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/main.c Mon Oct 24 17:08:12 2016 (r307868)
@@ -1188,7 +1188,7 @@ assertion_file_contains_no_invalid_strin
return(0);
}
}
-
+
free(buff);
return (0);
}
@@ -1412,6 +1412,8 @@ assertion_file_mode(const char *file, in
assertion_count(file, line);
#if defined(_WIN32) && !defined(__CYGWIN__)
failure_start(file, line, "assertFileMode not yet implemented for Windows");
+ (void)mode; /* UNUSED */
+ (void)r; /* UNUSED */
#else
{
struct stat st;
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test.h
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test.h Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test.h Mon Oct 24 17:08:12 2016 (r307868)
@@ -244,7 +244,7 @@ int assertion_file_atime_recent(const ch
int assertion_file_birthtime(const char *, int, const char *, long, long);
int assertion_file_birthtime_recent(const char *, int, const char *);
int assertion_file_contains_lines_any_order(const char *, int, const char *, const char **);
-int assertion_file_contains_no_invalid_strings(const char *, int, const char *, const char **);
+int assertion_file_contains_no_invalid_strings(const char *, int, const char *, const char **);
int assertion_file_contents(const char *, int, const void *, int, const char *);
int assertion_file_exists(const char *, int, const char *);
int assertion_file_mode(const char *, int, const char *, int);
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test_option_b.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test_option_b.c Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test_option_b.c Mon Oct 24 17:08:12 2016 (r307868)
@@ -33,7 +33,7 @@ DEFINE_TEST(test_option_b)
assertMakeFile("file1", 0644, "file1");
if (systemf("cat file1 > test_cat.out 2> test_cat.err") != 0) {
- skipping("Platform doesn't have cat");
+ skipping("This test requires a `cat` program");
return;
}
testprog_ustar = malloc(strlen(testprog) + sizeof(USTAR_OPT) + 1);
Modified: user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test_symlink_dir.c
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test_symlink_dir.c Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/libarchive/tar/test/test_symlink_dir.c Mon Oct 24 17:08:12 2016 (r307868)
@@ -63,7 +63,7 @@ DEFINE_TEST(test_symlink_dir)
/* "dir2" is a symlink to a non-existing "real_dir2" */
assertMakeSymlink("dest1/dir2", "real_dir2");
} else {
- skipping("some symlink checks");
+ skipping("Symlinks are not supported on this platform");
}
/* "dir3" is a symlink to an existing "non_dir3" */
assertMakeFile("dest1/non_dir3", 0755, "abcdef");
Modified: user/alc/PQ_LAUNDRY/contrib/tzdata/asia
==============================================================================
--- user/alc/PQ_LAUNDRY/contrib/tzdata/asia Mon Oct 24 17:02:25 2016 (r307867)
+++ user/alc/PQ_LAUNDRY/contrib/tzdata/asia Mon Oct 24 17:08:12 2016 (r307868)
@@ -2544,11 +2544,6 @@ Zone Asia/Karachi 4:28:12 - LMT 1907
# From Paul Eggert (2015-03-03):
# http://www.timeanddate.com/time/change/west-bank/ramallah?year=2014
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-user
mailing list