PERFORCE change 197378 for review

Jakub Wojciech Klama jceel at FreeBSD.org
Mon Aug 8 20:16:19 UTC 2011


http://p4web.freebsd.org/@@197378?ac=10

Change 197378 by jceel at jceel_cyclone on 2011/08/08 20:16:06

	IFC @197377

Affected files ...

.. //depot/projects/soc2011/jceel_lpc/contrib/gdb/FREEBSD-diffs#2 integrate
.. //depot/projects/soc2011/jceel_lpc/contrib/gdb/gdb/sparc64fbsd-tdep.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/etc/Makefile#2 integrate
.. //depot/projects/soc2011/jceel_lpc/etc/nsswitch.conf#2 integrate
.. //depot/projects/soc2011/jceel_lpc/gnu/usr.bin/gdb/arch/sparc64/Makefile#2 integrate
.. //depot/projects/soc2011/jceel_lpc/gnu/usr.bin/gdb/arch/sparc64/init.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_read.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_read_support_compression_uu.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_read_support_format_iso9660.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_read_support_format_mtree.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_write_open_fd.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_write_open_file.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_write_open_filename.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_write_set_compression_xz.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_write_set_format_zip.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/test/Makefile#3 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/test/test_open_failure.c#1 branch
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/test/test_read_format_mtree.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/test/test_write_compress_lzma.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libarchive/test/test_write_compress_xz.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libc/net/ethers.3#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libkvm/kvm_ia64.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libthread_db/arch/amd64/libpthread_md.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libthread_db/arch/sparc64/libpthread_md.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/lib/libthread_db/libthr_db.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/release/Makefile.sysinstall#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sbin/rcorder/rcorder.8#3 integrate
.. //depot/projects/soc2011/jceel_lpc/share/man/man8/diskless.8#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/amd64/conf/GENERIC#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/AVILA#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/BWCT#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/CAMBRIA#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/CNS11XXNAS#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/CRB#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/DB-78XXX#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/DB-88F5XXX#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/DB-88F6XXX#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/DOCKSTAR#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/EP80219#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/GUMSTIX#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/HL200#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/HL201#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/IQ31244#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/KB920X#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/LN2410SBC#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/NSLU#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/QILA9G20#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/SAM9G20EK#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/SHEEVAPLUG#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/SIMICS#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/arm/conf/TS7800#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_dfs/null/dfs_null.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ah.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ah.h#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ah_internal.h#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ah_regdomain.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ar5212/ar5212.h#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ar5212/ar5212_misc.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ar5416/ar5416.h#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/ath_hal/ar9002/ar9287_attach.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/if_ath.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/if_athdfs.h#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/dev/ath/if_athvar.h#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/i386/conf/GENERIC#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/i386/conf/XBOX#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/i386/conf/XEN#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/ia64/ia64/dump_machdep.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/ia64/ia64/pmap.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/kern/vfs_mount.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/mips/cavium/asm_octeon.S#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/mips/cavium/octeon_mp.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/net/if_llatbl.h#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/net/route.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/net80211/ieee80211_scan_sta.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/netinet/in.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/netinet/raw_ip.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/netinet6/in6.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/pc98/conf/GENERIC#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/sparc64/conf/GENERIC#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/sparc64/sparc64/dump_machdep.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/sparc64/sparc64/mp_machdep.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/sys/vm/vm_contig.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/tools/regression/netinet/tcpdrop/tcpdrop.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/tools/regression/security/cap_test/Makefile#2 integrate
.. //depot/projects/soc2011/jceel_lpc/tools/regression/security/cap_test/cap_test.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/tools/regression/security/cap_test/cap_test.h#2 integrate
.. //depot/projects/soc2011/jceel_lpc/tools/regression/security/cap_test/cap_test.t#1 branch
.. //depot/projects/soc2011/jceel_lpc/tools/regression/security/cap_test/cap_test_capabilities.c#1 branch
.. //depot/projects/soc2011/jceel_lpc/tools/regression/security/cap_test/cap_test_capmode.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/tools/regression/security/cap_test/cap_test_fcntl.c#1 branch
.. //depot/projects/soc2011/jceel_lpc/tools/regression/security/cap_test/cap_test_sysctl.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/usr.bin/ar/write.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/usr.bin/catman/catman.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/usr.bin/man/man.1#3 integrate
.. //depot/projects/soc2011/jceel_lpc/usr.bin/xlint/lint1/tree.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/usr.sbin/bsdinstall/scripts/mirrorselect#2 integrate
.. //depot/projects/soc2011/jceel_lpc/usr.sbin/makefs/cd9660.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/usr.sbin/pmcstat/pmcstat.c#3 integrate
.. //depot/projects/soc2011/jceel_lpc/usr.sbin/pmcstat/pmcstat.h#2 integrate
.. //depot/projects/soc2011/jceel_lpc/usr.sbin/pmcstat/pmcstat_log.c#2 integrate
.. //depot/projects/soc2011/jceel_lpc/usr.sbin/service/service.8#2 integrate

Differences ...

==== //depot/projects/soc2011/jceel_lpc/contrib/gdb/FREEBSD-diffs#2 (text+ko) ====

@@ -927,3 +927,39 @@
 +#include "ia64/tm-ia64.h"
 +
 +#endif /* TM_FBSD_H */
+Index: gdb/sparc64fbsd-tdep.c
+===================================================================
+--- gdb/sparc64fbsd-tdep.c	(revision 223862)
++++ gdb/sparc64fbsd-tdep.c	(working copy)
+@@ -64,6 +64,31 @@ sparc64fbsd_supply_fpregset (const struct regset *
+ {
+   sparc64_supply_fpregset (regcache, regnum, fpregs);
+ }
++
++void
++supply_gregset (const void *gregs)
++{
++  sparc64_supply_gregset (&sparc64fbsd_gregset, current_regcache, -1, gregs);
++}
++
++void
++supply_fpregset (const void *fpregs)
++{
++  sparc64_supply_fpregset (current_regcache, -1, fpregs);
++}
++
++void
++fill_gregset (void *gregs, int regnum)
++{
++  sparc64_collect_gregset (&sparc64fbsd_gregset, current_regcache, regnum,
++			   gregs);
++}
++
++void
++fill_fpregset (void *fpregs, int regnum)
++{
++  sparc64_collect_fpregset (current_regcache, regnum, fpregs);
++}
+ 
+ 
+ /* Signal trampolines.  */

==== //depot/projects/soc2011/jceel_lpc/contrib/gdb/gdb/sparc64fbsd-tdep.c#2 (text+ko) ====

@@ -64,6 +64,31 @@
 {
   sparc64_supply_fpregset (regcache, regnum, fpregs);
 }
+
+void
+supply_gregset (const void *gregs)
+{
+  sparc64_supply_gregset (&sparc64fbsd_gregset, current_regcache, -1, gregs);
+}
+
+void
+supply_fpregset (const void *fpregs)
+{
+  sparc64_supply_fpregset (current_regcache, -1, fpregs);
+}
+
+void
+fill_gregset (void *gregs, int regnum)
+{
+  sparc64_collect_gregset (&sparc64fbsd_gregset, current_regcache, regnum,
+			   gregs);
+}
+
+void
+fill_fpregset (void *fpregs, int regnum)
+{
+  sparc64_collect_fpregset (current_regcache, regnum, fpregs);
+}
 
 
 /* Signal trampolines.  */

==== //depot/projects/soc2011/jceel_lpc/etc/Makefile#2 (text+ko) ====

@@ -1,5 +1,5 @@
 #	from: @(#)Makefile	5.11 (Berkeley) 5/21/91
-# $FreeBSD: src/etc/Makefile,v 1.387 2011/02/22 08:13:49 uqs Exp $
+# $FreeBSD: src/etc/Makefile,v 1.389 2011/08/06 09:16:53 dougb Exp $
 
 .include <bsd.own.mk>
 

==== //depot/projects/soc2011/jceel_lpc/etc/nsswitch.conf#2 (text) ====

@@ -1,15 +1,23 @@
 #
-# nsswitch.conf(5) - name service switch configuration file
-# $FreeBSD: src/etc/nsswitch.conf,v 1.1 2006/05/03 15:14:47 ume Exp $
+# $FreeBSD: src/etc/nsswitch.conf,v 1.2 2011/08/06 09:16:53 dougb Exp $
+#
+# To enable NIS the commented entries should replace their uncommented
+# equivalents.  See nsswitch.conf(5) for more information.
 #
-group: compat
-group_compat: nis
+group: files
+#group_compat: nis
+#group: compat
+
+passwd: files
+#passwd_compat: nis
+#passwd: compat
+
+services: files
+#services_compat: nis
+#services: compat
+
 hosts: files dns
 networks: files
-passwd: compat
-passwd_compat: nis
 shells: files
-services: compat
-services_compat: nis
 protocols: files
 rpc: files

==== //depot/projects/soc2011/jceel_lpc/gnu/usr.bin/gdb/arch/sparc64/Makefile#2 (text+ko) ====

@@ -1,6 +1,7 @@
-# $FreeBSD: src/gnu/usr.bin/gdb/arch/sparc64/Makefile,v 1.3 2004/12/05 06:59:01 marcel Exp $
+# $FreeBSD: src/gnu/usr.bin/gdb/arch/sparc64/Makefile,v 1.4 2011/08/06 17:53:45 marius Exp $
 
 .if !defined(GDB_CROSS_DEBUGGER)
+LIBSRCS+= fbsd-threads.c
 LIBSRCS+= solib.c solib-legacy.c solib-svr4.c
 LIBSRCS+= sparc-nat.c sparc64-nat.c sparc64fbsd-nat.c
 .endif

==== //depot/projects/soc2011/jceel_lpc/gnu/usr.bin/gdb/arch/sparc64/init.c#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/gnu/usr.bin/gdb/arch/sparc64/init.c,v 1.2 2004/12/05 06:59:01 marcel Exp $ */
+/* $FreeBSD: src/gnu/usr.bin/gdb/arch/sparc64/init.c,v 1.3 2011/08/06 17:53:45 marius Exp $ */
 
 /* Do not modify this file.  */
 /* It is created automatically by the Makefile.  */
@@ -11,6 +11,7 @@
 extern initialize_file_ftype _initialize_ser_hardwire;
 extern initialize_file_ftype _initialize_ser_pipe;
 extern initialize_file_ftype _initialize_ser_tcp;
+extern initialize_file_ftype _initialize_thread_db;
 extern initialize_file_ftype _initialize_sparc64fbsd_nat;
 extern initialize_file_ftype _initialize_sparc64_nat;
 extern initialize_file_ftype _initialize_sparc_nat;
@@ -124,6 +125,7 @@
   _initialize_ser_pipe ();
   _initialize_ser_tcp ();
 #ifndef CROSS_DEBUGGER
+  _initialize_thread_db ();
   _initialize_sparc64fbsd_nat ();
   _initialize_sparc64_nat ();
   _initialize_sparc_nat ();

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_read.c#2 (text+ko) ====

@@ -32,7 +32,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read.c,v 1.56 2010/11/05 05:11:54 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read.c,v 1.57 2011/08/07 08:42:36 mm Exp $");
 
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
@@ -377,6 +377,12 @@
 
 		/* If no bidder, we're done. */
 		if (best_bidder == NULL) {
+			/* Verify the final pipelin by asking it for some data. */
+			__archive_read_filter_ahead(a->filter, 1, &avail);
+			if (avail < 0) {
+				cleanup_filters(a);
+				return (ARCHIVE_FATAL);
+			}
 			a->archive.compression_name = a->filter->name;
 			a->archive.compression_code = a->filter->code;
 			return (ARCHIVE_OK);
@@ -389,18 +395,12 @@
 		filter->bidder = best_bidder;
 		filter->archive = a;
 		filter->upstream = a->filter;
-		r = (best_bidder->init)(filter);
+		a->filter = filter;
+		r = (best_bidder->init)(a->filter);
 		if (r != ARCHIVE_OK) {
-			free(filter);
+			cleanup_filters(a);
 			return (r);
 		}
-		a->filter = filter;
-		/* Verify the filter by asking it for some data. */
-		__archive_read_filter_ahead(filter, 1, &avail);
-		if (avail < 0) {
-			cleanup_filters(a);
-			return (ARCHIVE_FATAL);
-		}
 	}
 }
 

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_read_support_compression_uu.c#3 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_uu.c,v 1.2 2011/07/17 21:27:38 mm Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_compression_uu.c,v 1.3 2011/08/07 08:42:36 mm Exp $");
 
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
@@ -381,7 +381,17 @@
 		unsigned char *ptr;
 		size_t newsize;
 
-		newsize = uudecode->in_allocated << 1;
+		/*
+		 * Calculate a new buffer size for in_buff.
+		 * Increase its value until it has enough size we need.
+		 */
+		newsize = uudecode->in_allocated;
+		do {
+			if (newsize < IN_BUFF_SIZE*32)
+				newsize <<= 1;
+			else
+				newsize += IN_BUFF_SIZE;
+		} while (size > newsize);
 		ptr = malloc(newsize);
 		if (ptr == NULL ||
 		    newsize < uudecode->in_allocated) {

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_read_support_format_iso9660.c#2 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_iso9660.c,v 1.40 2010/01/23 07:55:53 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_iso9660.c,v 1.41 2011/08/07 08:42:36 mm Exp $");
 
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
@@ -709,16 +709,18 @@
 
 	/* Location of Occurrence of Type L Path Table must be
 	 * available location,
-	 * > SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
+	 * >= SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
 	location = archive_le32dec(h+SVD_type_L_path_table_offset);
-	if (location <= SYSTEM_AREA_BLOCK+2 || location >= volume_block)
+	if (location < SYSTEM_AREA_BLOCK+2 || location >= volume_block)
 		return (0);
 
-	/* Location of Occurrence of Type M Path Table must be
-	 * available location,
-	 * > SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
+	/* The Type M Path Table must be at a valid location (WinISO
+	 * and probably other programs omit this, so we allow zero)
+	 *
+	 * >= SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
 	location = archive_be32dec(h+SVD_type_M_path_table_offset);
-	if (location <= SYSTEM_AREA_BLOCK+2 || location >= volume_block)
+	if ((location > 0 && location < SYSTEM_AREA_BLOCK+2)
+	    || location >= volume_block)
 		return (0);
 
 	/* Read Root Directory Record in Volume Descriptor. */
@@ -781,16 +783,17 @@
 
 	/* Location of Occurrence of Type L Path Table must be
 	 * available location,
-	 * > SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
+	 * >= SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
 	location = archive_le32dec(h+PVD_type_1_path_table_offset);
-	if (location <= SYSTEM_AREA_BLOCK+2 || location >= volume_block)
+	if (location < SYSTEM_AREA_BLOCK+2 || location >= volume_block)
 		return (0);
 
 	/* Location of Occurrence of Type M Path Table must be
 	 * available location,
-	 * > SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
+	 * >= SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
 	location = archive_be32dec(h+PVD_type_m_path_table_offset);
-	if (location <= SYSTEM_AREA_BLOCK+2 || location >= volume_block)
+	if ((location > 0 && location < SYSTEM_AREA_BLOCK+2)
+	    || location >= volume_block)
 		return (0);
 
 	/* Reserved field must be 0. */
@@ -862,19 +865,24 @@
 	 * available location,
 	 * > SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
 	location = archive_le32dec(h+PVD_type_1_path_table_offset);
-	if (location <= SYSTEM_AREA_BLOCK+2 || location >= volume_block)
+	if (location < SYSTEM_AREA_BLOCK+2 || location >= volume_block)
 		return (0);
 
-	/* Location of Occurrence of Type M Path Table must be
-	 * available location,
-	 * > SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
+	/* The Type M Path Table must also be at a valid location
+	 * (although ECMA 119 requires a Type M Path Table, WinISO and
+	 * probably other programs omit it, so we permit a zero here)
+	 *
+	 * >= SYSTEM_AREA_BLOCK(16) + 2 and < Volume Space Size. */
 	location = archive_be32dec(h+PVD_type_m_path_table_offset);
-	if (location <= SYSTEM_AREA_BLOCK+2 || location >= volume_block)
+	if ((location > 0 && location < SYSTEM_AREA_BLOCK+2)
+	    || location >= volume_block)
 		return (0);
 
 	/* Reserved field must be 0. */
+	/* FreeBSD: makefs erroneously created images with 0x20 */
 	for (i = 0; i < PVD_reserved4_size; ++i)
-		if (h[PVD_reserved4_offset + i] != 0)
+		if (h[PVD_reserved4_offset + i] != 0 &&
+		    h[PVD_reserved4_offset + i] != 32)
 			return (0);
 
 	/* Reserved field must be 0. */
@@ -1677,6 +1685,7 @@
 	const unsigned char *rr_start, *rr_end;
 	const unsigned char *p;
 	size_t dr_len;
+	uint64_t fsize;
 	int32_t location;
 	int flags;
 
@@ -1685,6 +1694,7 @@
 	dr_len = (size_t)isodirrec[DR_length_offset];
 	name_len = (size_t)isodirrec[DR_name_len_offset];
 	location = archive_le32dec(isodirrec + DR_extent_offset);
+	fsize = toi(isodirrec + DR_size_offset, DR_size_size);
 	/* Sanity check that dr_len needs at least 34. */
 	if (dr_len < 34) {
 		archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
@@ -1703,7 +1713,10 @@
 	 * link or file size is zero. As far as I know latest mkisofs
 	 * do that.
 	 */
-	if (location >= iso9660->volume_block) {
+	if (location > 0 &&
+	    (location + ((fsize + iso9660->logical_block_size -1)
+	       / iso9660->logical_block_size)) >
+	      (unsigned int)iso9660->volume_block) {
 		archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
 		    "Invalid location of extent of file");
 		return (NULL);
@@ -1719,7 +1732,7 @@
 	memset(file, 0, sizeof(*file));
 	file->parent = parent;
 	file->offset = iso9660->logical_block_size * (uint64_t)location;
-	file->size = toi(isodirrec + DR_size_offset, DR_size_size);
+	file->size = fsize;
 	file->mtime = isodate7(isodirrec + DR_date_offset);
 	file->ctime = file->atime = file->mtime;
 

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_read_support_format_mtree.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_mtree.c,v 1.18 2011/07/17 21:27:38 mm Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_support_format_mtree.c,v 1.19 2011/08/07 08:42:36 mm Exp $");
 
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
@@ -525,6 +525,7 @@
 	/* Initialize reasonable defaults. */
 	mtree->filetype = AE_IFREG;
 	archive_entry_set_size(entry, 0);
+	archive_string_empty(&mtree->contents_name);
 
 	/* Parse options from this line. */
 	parsed_kws = 0;
@@ -613,9 +614,8 @@
 	}
 
 	/*
-	 * If there is a contents file on disk, use that size;
-	 * otherwise leave it as-is (it might have been set from
-	 * the mtree size= keyword).
+	 * Check for a mismatch between the type in the specification and
+	 * the type of the contents object on disk.
 	 */
 	if (st != NULL) {
 		mismatched_type = 0;
@@ -660,6 +660,11 @@
 		}
 	}
 
+	/*
+	 * If there is a contents file on disk, pick some of the metadata
+	 * from that file.  For most of these, we only set it from the contents
+	 * if it wasn't already parsed from the specification.
+	 */
 	if (st != NULL) {
 		if ((parsed_kws & MTREE_HAS_DEVICE) == 0 &&
 		    (archive_entry_filetype(entry) == AE_IFCHR ||

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_write_open_fd.c#2 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_open_fd.c,v 1.10 2009/12/28 02:28:44 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_open_fd.c,v 1.11 2011/08/07 20:24:32 mm Exp $");
 
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
@@ -51,7 +51,6 @@
 #include "archive.h"
 
 struct write_fd_data {
-	off_t		offset;
 	int		fd;
 };
 
@@ -122,12 +121,16 @@
 	ssize_t	bytesWritten;
 
 	mine = (struct write_fd_data *)client_data;
-	bytesWritten = write(mine->fd, buff, length);
-	if (bytesWritten <= 0) {
-		archive_set_error(a, errno, "Write error");
-		return (-1);
+	for (;;) {
+		bytesWritten = write(mine->fd, buff, length);
+		if (bytesWritten <= 0) {
+			if (errno == EINTR)
+				continue;
+			archive_set_error(a, errno, "Write error");
+			return (-1);
+		}
+		return (bytesWritten);
 	}
-	return (bytesWritten);
 }
 
 static int

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_write_open_file.c#2 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_open_file.c,v 1.19 2007/01/09 08:05:56 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_open_file.c,v 1.20 2011/08/07 20:24:32 mm Exp $");
 
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
@@ -86,12 +86,16 @@
 	size_t	bytesWritten;
 
 	mine = client_data;
-	bytesWritten = fwrite(buff, 1, length, mine->f);
-	if (bytesWritten < length) {
-		archive_set_error(a, errno, "Write error");
-		return (-1);
+	for (;;) {
+		bytesWritten = fwrite(buff, 1, length, mine->f);
+		if (bytesWritten <= 0) {
+			if (errno == EINTR)
+				continue;
+			archive_set_error(a, errno, "Write error");
+			return (-1);
+		}
+		return (bytesWritten);
 	}
-	return (bytesWritten);
 }
 
 static int

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_write_open_filename.c#2 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_open_filename.c,v 1.21 2009/04/17 00:39:35 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_open_filename.c,v 1.22 2011/08/07 20:24:32 mm Exp $");
 
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
@@ -142,12 +142,16 @@
 	ssize_t	bytesWritten;
 
 	mine = (struct write_file_data *)client_data;
-	bytesWritten = write(mine->fd, buff, length);
-	if (bytesWritten <= 0) {
-		archive_set_error(a, errno, "Write error");
-		return (-1);
+	for (;;) {
+		bytesWritten = write(mine->fd, buff, length);
+		if (bytesWritten <= 0) {
+			if (errno == EINTR)
+				continue;
+			archive_set_error(a, errno, "Write error");
+			return (-1);
+		}
+		return (bytesWritten);
 	}
-	return (bytesWritten);
 }
 
 static int

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_write_set_compression_xz.c#2 (text+ko) ====

@@ -26,7 +26,7 @@
 
 #include "archive_platform.h"
 
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_compression_xz.c,v 1.2 2009/12/28 03:28:21 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_compression_xz.c,v 1.3 2011/08/07 08:42:36 mm Exp $");
 
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
@@ -421,8 +421,8 @@
 			archive_set_error(&a->archive, ENOMEM,
 			    "lzma compression error: "
 			    "%ju MiB would have been needed",
-			    (lzma_memusage(&(state->stream)) + 1024 * 1024 -1)
-			    / (1024 * 1024));
+			    (uintmax_t)((lzma_memusage(&(state->stream)) + 1024 * 1024 -1)
+				/ (1024 * 1024)));
 			return (ARCHIVE_FATAL);
 		default:
 			/* Any other return value indicates an error. */

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/archive_write_set_format_zip.c#2 (text+ko) ====

@@ -47,7 +47,7 @@
  */
 
 #include "archive_platform.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_format_zip.c,v 1.2 2010/01/23 07:52:44 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_format_zip.c,v 1.3 2011/08/07 08:42:36 mm Exp $");
 
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
@@ -502,6 +502,9 @@
 	int entries;
 	int ret;
 
+	if (a->compressor.write == NULL)
+		return (ARCHIVE_OK);
+
 	zip = a->format_data;
 	l = zip->central_directory;
 

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/test/Makefile#3 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/lib/libarchive/test/Makefile,v 1.43 2011/07/17 21:27:38 mm Exp $
+# $FreeBSD: src/lib/libarchive/test/Makefile,v 1.44 2011/08/07 08:42:36 mm Exp $
 
 # Where to find the libarchive sources
 LA_SRCDIR=${.CURDIR}/..
@@ -25,6 +25,7 @@
 	test_fuzz.c				\
 	test_link_resolver.c			\
 	test_open_fd.c				\
+	test_open_failure.c			\
 	test_open_file.c			\
 	test_open_filename.c			\
 	test_pax_filename_encoding.c		\

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/test/test_read_format_mtree.c#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 #include "test.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/test/test_read_format_mtree.c,v 1.7 2009/12/30 05:59:21 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/test/test_read_format_mtree.c,v 1.8 2011/08/07 08:42:36 mm Exp $");
 
 static void
 test_read_format_mtree1(void)
@@ -134,10 +134,53 @@
 	assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
 }
 
+/*
+ * Reported to libarchive.googlecode.com as Issue 121.
+ */
+static void
+test_read_format_mtree3(void)
+{
+	static char archive[] =
+	    "#mtree\n"
+	    "a type=file contents=file\n"
+	    "b type=link link=a\n"
+	    "c type=file contents=file\n";
+	struct archive_entry *ae;
+	struct archive *a;
 
+	assertMakeDir("mtree3", 0777);
+	assertChdir("mtree3");
+	assertMakeFile("file", 0644, "file contents");
 
+	assert((a = archive_read_new()) != NULL);
+	assertEqualIntA(a, ARCHIVE_OK,
+	    archive_read_support_compression_all(a));
+	assertEqualIntA(a, ARCHIVE_OK,
+	    archive_read_support_format_all(a));
+	assertEqualIntA(a, ARCHIVE_OK,
+	    archive_read_open_memory(a, archive, sizeof(archive)));
+	assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+	assertEqualString(archive_entry_pathname(ae), "a");
+	assertEqualInt(archive_entry_filetype(ae), AE_IFREG);
+	assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+	assertEqualString(archive_entry_pathname(ae), "b");
+	assertEqualInt(archive_entry_filetype(ae), AE_IFLNK);
+	assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+	assertEqualString(archive_entry_pathname(ae), "c");
+	assertEqualInt(archive_entry_filetype(ae), AE_IFREG);
+
+	assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+	assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+	assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
+
+	assertChdir("..");
+}
+
+
+
 DEFINE_TEST(test_read_format_mtree)
 {
 	test_read_format_mtree1();
 	test_read_format_mtree2();
+	test_read_format_mtree3();
 }

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/test/test_write_compress_lzma.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include "test.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/test/test_write_compress_lzma.c,v 1.1 2009/04/17 01:06:31 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/test/test_write_compress_lzma.c,v 1.2 2011/08/07 08:42:36 mm Exp $");
 
 /*
  * A basic exercise of lzma reading and writing.
@@ -185,10 +185,15 @@
 	archive_write_close(a);
 	assert(0 == archive_write_finish(a));
 
-	/* Level 0 really does result in larger data. */
+	/* It would be nice to assert that compression-level=0 produced
+	 * consistently larger/smaller results than the default compression,
+	 * but the results here vary a lot depending on the version of liblzma
+	 * being used. */
+	/* 
 	failure("Compression-level=0 wrote %d bytes; default wrote %d bytes",
 	    (int)used2, (int)used1);
 	assert(used2 > used1);
+	*/
 
 	assert((a = archive_read_new()) != NULL);
 	assertA(0 == archive_read_support_format_all(a));

==== //depot/projects/soc2011/jceel_lpc/lib/libarchive/test/test_write_compress_xz.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include "test.h"
-__FBSDID("$FreeBSD: src/lib/libarchive/test/test_write_compress_xz.c,v 1.1 2009/04/17 01:06:31 kientzle Exp $");
+__FBSDID("$FreeBSD: src/lib/libarchive/test/test_write_compress_xz.c,v 1.2 2011/08/07 08:42:36 mm Exp $");
 
 /*
  * A basic exercise of xz reading and writing.
@@ -193,10 +193,14 @@
 	archive_write_close(a);
 	assert(0 == archive_write_finish(a));
 
-	/* Level 0 really does result in larger data. */
+	/* I would like to assert that compression-level=0 results in
+	 * larger data than the default compression, but that's not true
+	 * for all versions of liblzma. */
+	/*
 	failure("Compression-level=0 wrote %d bytes; default wrote %d bytes",
 	    (int)used2, (int)used1);
 	assert(used2 > used1);
+	*/
 
 	assert((a = archive_read_new()) != NULL);
 	assertA(0 == archive_read_support_format_all(a));

==== //depot/projects/soc2011/jceel_lpc/lib/libc/net/ethers.3#2 (text+ko) ====

@@ -29,7 +29,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/lib/libc/net/ethers.3,v 1.26 2010/08/28 16:32:01 brucec Exp $
+.\" $FreeBSD: src/lib/libc/net/ethers.3,v 1.27 2011/08/08 03:09:03 hrs Exp $
 .\"
 .Dd October 30, 2007
 .Dt ETHERS 3
@@ -68,7 +68,7 @@
 These functions operate on ethernet addresses using an
 .Vt ether_addr
 structure, which is defined in the header file
-.In netinet/if_ether.h :
+.In net/ethernet.h :
 .Bd -literal -offset indent
 /*
  * The number of bytes in an ethernet (MAC) address.

==== //depot/projects/soc2011/jceel_lpc/lib/libkvm/kvm_ia64.c#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/lib/libkvm/kvm_ia64.c,v 1.9 2011/01/23 11:08:28 uqs Exp $ */
+/* $FreeBSD: src/lib/libkvm/kvm_ia64.c,v 1.10 2011/08/06 15:59:54 marcel Exp $ */
 /*	$NetBSD: kvm_alpha.c,v 1.7.2.1 1997/11/02 20:34:26 mellon Exp $	*/
 
 /*
@@ -33,6 +33,7 @@
 #include <sys/mman.h>
 
 #include <machine/atomic.h>
+#include <machine/bootinfo.h>
 #include <machine/pte.h>
 
 #include <kvm.h>
@@ -51,11 +52,16 @@
 #define	KPTE_DIR0_INDEX(va,ps)	((((va)/(ps)) / NKPTEPG(ps)) / NKPTEDIR(ps))
 #define	KPTE_DIR1_INDEX(va,ps)	((((va)/(ps)) / NKPTEPG(ps)) % NKPTEDIR(ps))
 
+#define	PBVM_BASE		0x9ffc000000000000UL
+#define	PBVM_PGSZ		(64 * 1024)
+
 struct vmstate {
 	void	*mmapbase;
 	size_t	mmapsize;
 	size_t	pagesize;
 	u_long	kptdir;
+	u_long	*pbvm_pgtbl;
+	u_int	pbvm_pgtblsz;
 };
 
 /*
@@ -110,11 +116,28 @@
 	return (pgsz - ((size_t)pa & (pgsz - 1)));
 }
 
+static ssize_t
+_kvm_read_phys(kvm_t *kd, uint64_t pa, void *buf, size_t bufsz)
+{
+	off_t ofs;
+	size_t sz;
+
+	sz = _kvm_pa2off(kd, pa, &ofs, 0);
+	if (sz < bufsz)
+		return ((ssize_t)sz);
+
+	if (lseek(kd->pmfd, ofs, 0) == -1)
+		return (-1);
+	return (read(kd->pmfd, buf, bufsz));
+}
+
 void
 _kvm_freevtop(kvm_t *kd)
 {
 	struct vmstate *vm = kd->vmst;
 
+	if (vm->pbvm_pgtbl != NULL)
+		free(vm->pbvm_pgtbl);
 	if (vm->mmapbase != NULL)
 		munmap(vm->mmapbase, vm->mmapsize);
 	free(vm);
@@ -124,10 +147,12 @@
 int
 _kvm_initvtop(kvm_t *kd)
 {
+	struct bootinfo bi;
 	struct nlist nl[2];
 	uint64_t va;
 	Elf64_Ehdr *ehdr;
 	size_t hdrsz;
+	ssize_t sz;
 
 	kd->vmst = (struct vmstate *)_kvm_malloc(kd, sizeof(*kd->vmst));
 	if (kd->vmst == NULL) {
@@ -146,6 +171,42 @@
 		return (-1);
 
 	/*
+	 * Load the PBVM page table. We need this to resolve PBVM addresses.
+	 * The PBVM page table is obtained from the bootinfo structure, of
+	 * which the physical address is given to us in e_entry. If e_entry
+	 * is 0, then this is assumed to be a pre-PBVM kernel.
+	 */
+	if (ehdr->e_entry != 0) {
+		sz = _kvm_read_phys(kd, ehdr->e_entry, &bi, sizeof(bi));
+		if (sz != sizeof(bi)) {
+			_kvm_err(kd, kd->program,
+			    "cannot read bootinfo from PA %#lx", ehdr->e_entry);
+			return (-1);
+		}
+		if (bi.bi_magic != BOOTINFO_MAGIC) {
+			_kvm_err(kd, kd->program, "invalid bootinfo");
+			return (-1);
+		}
+		kd->vmst->pbvm_pgtbl = _kvm_malloc(kd, bi.bi_pbvm_pgtblsz);
+		if (kd->vmst->pbvm_pgtbl == NULL) {
+			_kvm_err(kd, kd->program, "cannot allocate page table");
+			return (-1);
+		}
+		kd->vmst->pbvm_pgtblsz = bi.bi_pbvm_pgtblsz;
+		sz = _kvm_read_phys(kd, bi.bi_pbvm_pgtbl, kd->vmst->pbvm_pgtbl,
+		    bi.bi_pbvm_pgtblsz);
+		if (sz != bi.bi_pbvm_pgtblsz) {
+			_kvm_err(kd, kd->program,
+			    "cannot read page table from PA %#lx",
+			    bi.bi_pbvm_pgtbl);
+			return (-1);
+		}
+	} else {
+		kd->vmst->pbvm_pgtbl = NULL;
+		kd->vmst->pbvm_pgtblsz = 0;
+	}
+
+	/*
 	 * At this point we've got enough information to use kvm_read() for
 	 * direct mapped (ie region 6 and region 7) address, such as symbol
 	 * addresses/values.
@@ -174,17 +235,18 @@
 }
 
 int
-_kvm_kvatop(kvm_t *kd, u_long va, off_t *pa)
+_kvm_kvatop(kvm_t *kd, u_long va, off_t *ofs)
 {
 	struct ia64_lpte pte;
-	uint64_t pgaddr, pt0addr, pt1addr;
+	uint64_t pa, pgaddr, pt0addr, pt1addr;
 	size_t pgno, pgsz, pt0no, pt1no;
 
 	if (va >= REGION_BASE(6)) {
 		/* Regions 6 and 7: direct mapped. */
-		return (_kvm_pa2off(kd, REGION_ADDR(va), pa, 0));
+		pa = REGION_ADDR(va);
+		return (_kvm_pa2off(kd, pa, ofs, 0));
 	} else if (va >= REGION_BASE(5)) {
-		/* Region 5: virtual. */
+		/* Region 5: Kernel Virtual Memory. */
 		va = REGION_ADDR(va);
 		pgsz = kd->vmst->pagesize;
 		pt0no = KPTE_DIR0_INDEX(va, pgsz);
@@ -207,12 +269,24 @@
 			goto fail;
 		if (!(pte.pte & PTE_PRESENT))
 			goto fail;
-		va = (pte.pte & PTE_PPN_MASK) + (va & (pgsz - 1));
-		return (_kvm_pa2off(kd, va, pa, pgsz));
+		pa = (pte.pte & PTE_PPN_MASK) + (va & (pgsz - 1));
+		return (_kvm_pa2off(kd, pa, ofs, pgsz));
+	} else if (va >= PBVM_BASE) {
+		/* Region 4: Pre-Boot Virtual Memory (PBVM). */
+		va -= PBVM_BASE;
+		pgsz = PBVM_PGSZ;
+		pt0no = va / pgsz;
+		if (pt0no >= (kd->vmst->pbvm_pgtblsz >> 3))
+			goto fail;
+		pt0addr = kd->vmst->pbvm_pgtbl[pt0no];
+		if (!(pt0addr & PTE_PRESENT))
+			goto fail;
+		pa = (pt0addr & PTE_PPN_MASK) + va % pgsz;

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list