From owner-svn-src-projects@FreeBSD.ORG Mon Jan 31 22:14:48 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AB0D1106564A; Mon, 31 Jan 2011 22:14:48 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 96CB68FC1B; Mon, 31 Jan 2011 22:14:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p0VMEmVh047033; Mon, 31 Jan 2011 22:14:48 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p0VMEmuE047000; Mon, 31 Jan 2011 22:14:48 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201101312214.p0VMEmuE047000@svn.freebsd.org> From: Attilio Rao Date: Mon, 31 Jan 2011 22:14:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r218144 - in projects/sv: . bin/ps bin/sh contrib/top contrib/tzdata etc etc/mail etc/periodic/daily etc/rc.d gnu/lib/libgcc gnu/lib/libgomp gnu/usr.bin/binutils lib/libc lib/libc/sys l... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 31 Jan 2011 22:14:48 -0000 Author: attilio Date: Mon Jan 31 22:14:47 2011 New Revision: 218144 URL: http://svn.freebsd.org/changeset/base/218144 Log: MFC Added: projects/sv/share/doc/papers/kernmalloc/appendix.ms - copied unchanged from r218142, head/share/doc/papers/kernmalloc/appendix.ms projects/sv/share/doc/papers/sysperf/appendix.ms - copied unchanged from r218142, head/share/doc/papers/sysperf/appendix.ms projects/sv/sys/dev/ath/ath_rate/sample/tx_schedules.h - copied unchanged from r218142, head/sys/dev/ath/ath_rate/sample/tx_schedules.h projects/sv/sys/dev/ath/if_ath_debug.c - copied unchanged from r218142, head/sys/dev/ath/if_ath_debug.c projects/sv/sys/dev/ath/if_ath_debug.h - copied unchanged from r218142, head/sys/dev/ath/if_ath_debug.h projects/sv/sys/dev/ath/if_ath_misc.h - copied unchanged from r218142, head/sys/dev/ath/if_ath_misc.h projects/sv/sys/dev/ath/if_ath_tx.c - copied unchanged from r218142, head/sys/dev/ath/if_ath_tx.c projects/sv/sys/dev/ath/if_ath_tx.h - copied unchanged from r218142, head/sys/dev/ath/if_ath_tx.h projects/sv/sys/modules/khelp/h_ertt/ - copied from r218142, head/sys/modules/khelp/h_ertt/ projects/sv/sys/netinet/khelp/ - copied from r218142, head/sys/netinet/khelp/ projects/sv/tools/regression/bin/sh/builtins/trap7.0 - copied unchanged from r218142, head/tools/regression/bin/sh/builtins/trap7.0 projects/sv/tools/regression/bin/sh/execution/killed2.0 - copied unchanged from r218142, head/tools/regression/bin/sh/execution/killed2.0 Modified: projects/sv/Makefile projects/sv/Makefile.inc1 projects/sv/bin/ps/ps.1 projects/sv/bin/sh/jobs.c projects/sv/bin/sh/var.c projects/sv/contrib/tzdata/australasia projects/sv/contrib/tzdata/northamerica projects/sv/etc/ftpusers projects/sv/etc/group projects/sv/etc/mail/aliases projects/sv/etc/master.passwd projects/sv/etc/periodic/daily/800.scrub-zfs projects/sv/etc/rc.d/rpcbind projects/sv/gnu/lib/libgcc/Makefile projects/sv/gnu/lib/libgomp/Makefile projects/sv/gnu/usr.bin/binutils/Makefile.inc0 projects/sv/lib/libc/Makefile projects/sv/lib/libc/sys/Makefile.inc projects/sv/lib/libc/sys/ptrace.2 projects/sv/lib/libelf/elf_data.c projects/sv/libexec/rtld-elf/amd64/rtld_machdep.h projects/sv/libexec/rtld-elf/arm/rtld_machdep.h projects/sv/libexec/rtld-elf/i386/rtld_machdep.h projects/sv/libexec/rtld-elf/ia64/rtld_machdep.h projects/sv/libexec/rtld-elf/map_object.c projects/sv/libexec/rtld-elf/mips/rtld_machdep.h projects/sv/libexec/rtld-elf/powerpc/rtld_machdep.h projects/sv/libexec/rtld-elf/powerpc64/rtld_machdep.h projects/sv/libexec/rtld-elf/rtld.c projects/sv/libexec/rtld-elf/sparc64/rtld_machdep.h projects/sv/sbin/fdisk/fdisk.c projects/sv/sbin/geom/class/part/gpart.8 projects/sv/sbin/hastctl/hastctl.c projects/sv/sbin/hastd/control.c projects/sv/sbin/hastd/hast.h projects/sv/sbin/hastd/hastd.c projects/sv/sbin/hastd/hastd.h projects/sv/sbin/hastd/pjdlog.c projects/sv/sbin/hastd/pjdlog.h projects/sv/sbin/hastd/primary.c projects/sv/sbin/hastd/proto.c projects/sv/sbin/hastd/proto.h projects/sv/sbin/hastd/proto_common.c projects/sv/sbin/hastd/proto_impl.h projects/sv/sbin/hastd/proto_socketpair.c projects/sv/sbin/hastd/proto_tcp4.c projects/sv/sbin/hastd/proto_uds.c projects/sv/sbin/hastd/secondary.c projects/sv/sbin/hastd/subr.c projects/sv/sbin/hastd/subr.h projects/sv/sbin/ifconfig/ifieee80211.c projects/sv/sbin/iscontrol/config.c projects/sv/sbin/iscontrol/fsm.c projects/sv/sbin/mount/mount.8 projects/sv/share/doc/papers/kernmalloc/Makefile projects/sv/share/doc/papers/sysperf/Makefile projects/sv/share/examples/etc/make.conf projects/sv/share/man/man4/altq.4 projects/sv/share/man/man4/ixgb.4 projects/sv/share/man/man4/nfe.4 projects/sv/share/man/man4/re.4 projects/sv/share/man/man7/build.7 projects/sv/share/man/man9/Makefile projects/sv/share/man/man9/sbuf.9 projects/sv/share/syscons/keymaps/Makefile projects/sv/sys/amd64/amd64/machdep.c projects/sv/sys/amd64/amd64/vm_machdep.c projects/sv/sys/amd64/linux32/linux.h projects/sv/sys/amd64/linux32/linux32_machdep.c projects/sv/sys/amd64/linux32/linux32_proto.h projects/sv/sys/amd64/linux32/syscalls.master projects/sv/sys/arm/include/fdt.h projects/sv/sys/arm/s3c2xx0/std.ln2410sbc projects/sv/sys/cam/ata/ata_xpt.c projects/sv/sys/cddl/compat/opensolaris/kern/opensolaris_atomic.c projects/sv/sys/cddl/compat/opensolaris/sys/atomic.h projects/sv/sys/compat/linprocfs/linprocfs.c projects/sv/sys/compat/linux/linux_futex.c projects/sv/sys/compat/linux/linux_futex.h projects/sv/sys/compat/linux/linux_misc.c projects/sv/sys/compat/linux/linux_misc.h projects/sv/sys/conf/files projects/sv/sys/dev/ahci/ahci.c projects/sv/sys/dev/alc/if_alc.c projects/sv/sys/dev/ata/ata-pci.h projects/sv/sys/dev/ata/chipsets/ata-intel.c projects/sv/sys/dev/ath/ath_hal/ah.c projects/sv/sys/dev/ath/ath_hal/ah.h projects/sv/sys/dev/ath/ath_hal/ah_debug.h projects/sv/sys/dev/ath/ath_hal/ah_eeprom_v4k.c projects/sv/sys/dev/ath/ath_hal/ah_eeprom_v4k.h projects/sv/sys/dev/ath/ath_hal/ar5212/ar5212.h projects/sv/sys/dev/ath/ath_hal/ar5416/ar2133.c projects/sv/sys/dev/ath/ath_hal/ar5416/ar5416.h projects/sv/sys/dev/ath/ath_hal/ar5416/ar5416_ani.c projects/sv/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c projects/sv/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c projects/sv/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c projects/sv/sys/dev/ath/ath_hal/ar5416/ar5416_xmit.c projects/sv/sys/dev/ath/ath_hal/ar5416/ar5416phy.h projects/sv/sys/dev/ath/ath_hal/ar5416/ar5416reg.h projects/sv/sys/dev/ath/ath_hal/ar9001/ar9160_attach.c projects/sv/sys/dev/ath/ath_hal/ar9002/ar9280.h projects/sv/sys/dev/ath/ath_hal/ar9002/ar9280_attach.c projects/sv/sys/dev/ath/ath_hal/ar9002/ar9285.h projects/sv/sys/dev/ath/ath_hal/ar9002/ar9285_attach.c projects/sv/sys/dev/ath/ath_hal/ar9002/ar9285v2.ini projects/sv/sys/dev/ath/ath_rate/sample/sample.c projects/sv/sys/dev/ath/if_ath.c projects/sv/sys/dev/ath/if_athvar.h projects/sv/sys/dev/cs/if_cs.c projects/sv/sys/dev/cs/if_csreg.h projects/sv/sys/dev/cs/if_csvar.h projects/sv/sys/dev/cxgb/cxgb_sge.c projects/sv/sys/dev/fdt/fdt_common.c projects/sv/sys/dev/fdt/fdt_pci.c projects/sv/sys/dev/fdt/fdtbus.c projects/sv/sys/dev/flash/mx25l.c projects/sv/sys/dev/ichsmb/ichsmb_pci.c projects/sv/sys/dev/ichwd/ichwd.c projects/sv/sys/dev/ichwd/ichwd.h projects/sv/sys/dev/md/md.c projects/sv/sys/dev/mii/miidevs projects/sv/sys/dev/mii/rlphy.c projects/sv/sys/dev/nfe/if_nfe.c projects/sv/sys/dev/re/if_re.c projects/sv/sys/dev/siis/siis.c projects/sv/sys/dev/siis/siis.h projects/sv/sys/dev/tsec/if_tsec_fdt.c projects/sv/sys/dev/uart/uart_tty.c projects/sv/sys/dev/usb/usb_freebsd.h projects/sv/sys/dev/xen/netfront/netfront.c projects/sv/sys/fs/nfs/nfsport.h projects/sv/sys/fs/procfs/procfs_dbregs.c projects/sv/sys/fs/procfs/procfs_fpregs.c projects/sv/sys/fs/procfs/procfs_map.c projects/sv/sys/fs/procfs/procfs_regs.c projects/sv/sys/geom/geom_disk.c projects/sv/sys/geom/journal/g_journal.c projects/sv/sys/geom/part/g_part.c projects/sv/sys/geom/part/g_part.h projects/sv/sys/geom/part/g_part_bsd.c projects/sv/sys/geom/part/g_part_ebr.c projects/sv/sys/geom/part/g_part_gpt.c projects/sv/sys/geom/part/g_part_mbr.c projects/sv/sys/i386/i386/machdep.c projects/sv/sys/i386/linux/linux_machdep.c projects/sv/sys/i386/linux/linux_proto.h projects/sv/sys/i386/linux/syscalls.master projects/sv/sys/kern/kern_descrip.c projects/sv/sys/kern/kern_fork.c projects/sv/sys/kern/kern_jail.c projects/sv/sys/kern/kern_malloc.c projects/sv/sys/kern/kern_proc.c projects/sv/sys/kern/kern_sig.c projects/sv/sys/kern/kern_sysctl.c projects/sv/sys/kern/subr_lock.c projects/sv/sys/kern/subr_sleepqueue.c projects/sv/sys/kern/subr_trap.c projects/sv/sys/kern/subr_witness.c projects/sv/sys/kern/sys_process.c projects/sv/sys/kern/uipc_syscalls.c projects/sv/sys/kern/vfs_mount.c projects/sv/sys/kern/vfs_subr.c projects/sv/sys/mips/include/sf_buf.h projects/sv/sys/mips/mips/uio_machdep.c projects/sv/sys/mips/mips/vm_machdep.c projects/sv/sys/modules/ath/Makefile projects/sv/sys/modules/khelp/Makefile projects/sv/sys/net/if.c projects/sv/sys/net80211/ieee80211_ioctl.c projects/sv/sys/net80211/ieee80211_scan.c projects/sv/sys/netinet/if_ether.c projects/sv/sys/netinet/in_pcb.c projects/sv/sys/netinet/sctp.h projects/sv/sys/netinet/sctp_cc_functions.c projects/sv/sys/netinet/sctp_constants.h projects/sv/sys/netinet/sctp_header.h projects/sv/sys/netinet/sctp_indata.c projects/sv/sys/netinet/sctp_indata.h projects/sv/sys/netinet/sctp_input.c projects/sv/sys/netinet/sctp_output.c projects/sv/sys/netinet/sctp_output.h projects/sv/sys/netinet/sctp_pcb.c projects/sv/sys/netinet/sctp_pcb.h projects/sv/sys/netinet/sctp_structs.h projects/sv/sys/netinet/sctp_sysctl.c projects/sv/sys/netinet/sctp_sysctl.h projects/sv/sys/netinet/sctp_timer.c projects/sv/sys/netinet/sctp_uio.h projects/sv/sys/netinet/sctp_usrreq.c projects/sv/sys/netinet/sctputil.c projects/sv/sys/netinet/tcp_usrreq.c projects/sv/sys/pci/if_rlreg.h projects/sv/sys/powerpc/aim/trap.c projects/sv/sys/powerpc/include/fdt.h projects/sv/sys/powerpc/include/intr_machdep.h projects/sv/sys/powerpc/include/openpicvar.h projects/sv/sys/powerpc/mambo/mambo_openpic.c projects/sv/sys/powerpc/mpc85xx/atpic.c projects/sv/sys/powerpc/mpc85xx/isa.c projects/sv/sys/powerpc/mpc85xx/nexus.c projects/sv/sys/powerpc/mpc85xx/openpic_fdt.c projects/sv/sys/powerpc/mpc85xx/pci_fdt.c projects/sv/sys/powerpc/powermac/cpcht.c projects/sv/sys/powerpc/powermac/hrowpic.c projects/sv/sys/powerpc/powermac/openpic_macio.c projects/sv/sys/powerpc/powerpc/exec_machdep.c projects/sv/sys/powerpc/powerpc/intr_machdep.c projects/sv/sys/powerpc/powerpc/openpic.c projects/sv/sys/powerpc/powerpc/pic_if.m projects/sv/sys/powerpc/ps3/ps3pic.c projects/sv/sys/powerpc/psim/openpic_iobus.c projects/sv/sys/sys/diskmbr.h projects/sv/sys/sys/gpt.h projects/sv/sys/sys/proc.h projects/sv/sys/sys/ptrace.h projects/sv/sys/sys/sysctl.h projects/sv/sys/sys/sysent.h projects/sv/sys/vm/uma_core.c projects/sv/sys/vm/vm_map.c projects/sv/sys/vm/vm_page.c projects/sv/sys/vm/vm_phys.c projects/sv/sys/vm/vm_reserv.c projects/sv/tools/tools/ath/ath_ee_v4k_print/v4k.c projects/sv/tools/tools/ath/athpow/athpow.c projects/sv/usr.bin/csup/updater.c projects/sv/usr.bin/getopt/getopt.1 projects/sv/usr.bin/ktrdump/ktrdump.8 projects/sv/usr.bin/ktrdump/ktrdump.c projects/sv/usr.bin/man/man.sh projects/sv/usr.sbin/Makefile.mips projects/sv/usr.sbin/newsyslog/newsyslog.8 projects/sv/usr.sbin/newsyslog/newsyslog.c projects/sv/usr.sbin/newsyslog/newsyslog.conf.5 projects/sv/usr.sbin/newsyslog/pathnames.h Directory Properties: projects/sv/ (props changed) projects/sv/cddl/contrib/opensolaris/ (props changed) projects/sv/contrib/bind9/ (props changed) projects/sv/contrib/binutils/ (props changed) projects/sv/contrib/bzip2/ (props changed) projects/sv/contrib/dialog/ (props changed) projects/sv/contrib/ee/ (props changed) projects/sv/contrib/expat/ (props changed) projects/sv/contrib/file/ (props changed) projects/sv/contrib/gdb/ (props changed) projects/sv/contrib/gdtoa/ (props changed) projects/sv/contrib/gnu-sort/ (props changed) projects/sv/contrib/groff/ (props changed) projects/sv/contrib/less/ (props changed) projects/sv/contrib/libpcap/ (props changed) projects/sv/contrib/llvm/ (props changed) projects/sv/contrib/llvm/tools/clang/ (props changed) projects/sv/contrib/ncurses/ (props changed) projects/sv/contrib/netcat/ (props changed) projects/sv/contrib/ntp/ (props changed) projects/sv/contrib/one-true-awk/ (props changed) projects/sv/contrib/openbsm/ (props changed) projects/sv/contrib/openpam/ (props changed) projects/sv/contrib/pf/ (props changed) projects/sv/contrib/sendmail/ (props changed) projects/sv/contrib/tcpdump/ (props changed) projects/sv/contrib/tcsh/ (props changed) projects/sv/contrib/top/ (props changed) projects/sv/contrib/top/install-sh (props changed) projects/sv/contrib/tzcode/stdtime/ (props changed) projects/sv/contrib/tzcode/zic/ (props changed) projects/sv/contrib/tzdata/ (props changed) projects/sv/contrib/wpa/ (props changed) projects/sv/contrib/xz/ (props changed) projects/sv/crypto/openssh/ (props changed) projects/sv/crypto/openssl/ (props changed) projects/sv/lib/libc/ (props changed) projects/sv/lib/libc/stdtime/ (props changed) projects/sv/lib/libutil/ (props changed) projects/sv/lib/libz/ (props changed) projects/sv/sbin/ (props changed) projects/sv/sbin/ipfw/ (props changed) projects/sv/share/mk/bsd.arch.inc.mk (props changed) projects/sv/share/zoneinfo/ (props changed) projects/sv/sys/ (props changed) projects/sv/sys/amd64/include/xen/ (props changed) projects/sv/sys/cddl/contrib/opensolaris/ (props changed) projects/sv/sys/contrib/dev/acpica/ (props changed) projects/sv/sys/contrib/octeon-sdk/ (props changed) projects/sv/sys/contrib/pf/ (props changed) projects/sv/sys/contrib/x86emu/ (props changed) projects/sv/usr.bin/calendar/ (props changed) projects/sv/usr.bin/csup/ (props changed) projects/sv/usr.bin/procstat/ (props changed) projects/sv/usr.sbin/zic/ (props changed) Modified: projects/sv/Makefile ============================================================================== --- projects/sv/Makefile Mon Jan 31 22:10:01 2011 (r218143) +++ projects/sv/Makefile Mon Jan 31 22:14:47 2011 (r218144) @@ -28,7 +28,8 @@ # delete-old-dirs - Delete obsolete directories. # delete-old-files - Delete obsolete files. # delete-old-libs - Delete obsolete libraries. -# targets - Print a list of supported TARGET/TARGET_ARCH pairs. +# targets - Print a list of supported TARGET/TARGET_ARCH pairs +# for world and kernel targets. # # This makefile is simple by design. The FreeBSD make automatically reads # the /usr/share/mk/sys.mk unless the -m argument is specified on the @@ -125,6 +126,38 @@ BINMAKE= \ -m ${.CURDIR}/share/mk _MAKE= PATH=${PATH} ${BINMAKE} -f Makefile.inc1 +# Guess machine architecture from machine type, and vice versa. +.if !defined(TARGET_ARCH) && defined(TARGET) +_TARGET_ARCH= ${TARGET:S/pc98/i386/:S/sun4v/sparc64/:S/mips/mipsel/} +.elif !defined(TARGET) && defined(TARGET_ARCH) && \ + ${TARGET_ARCH} != ${MACHINE_ARCH} +_TARGET= ${TARGET_ARCH:C/mips.*e[lb]/mips/:C/armeb/arm/} +.endif +# Legacy names, for a transition period mips:mips -> mipsel:mips +.if defined(TARGET) && defined(TARGET_ARCH) && \ + ${TARGET_ARCH} == "mips" && ${TARGET} == "mips" +.warning "TARGET_ARCH of mips is deprecated in favor of mipsel or mipseb" +.if defined(TARGET_BIG_ENDIAN) +_TARGET_ARCH=mipseb +.else +_TARGET_ARCH=mipsel +.endif +.endif +# arm with TARGET_BIG_ENDIAN -> armeb +.if defined(TARGET_ARCH) && ${TARGET_ARCH} == "arm" && defined(TARGET_BIG_ENDIAN) +.warning "TARGET_ARCH of arm with TARGET_BIG_ENDIAN is deprecated. use armeb" +_TARGET_ARCH=armeb +.endif +.if defined(TARGET) && !defined(_TARGET) +_TARGET=${TARGET} +.endif +.if defined(TARGET_ARCH) && !defined(_TARGET_ARCH) +_TARGET_ARCH=${TARGET_ARCH} +.endif +# Otherwise, default to current machine type and architecture. +_TARGET?= ${MACHINE} +_TARGET_ARCH?= ${MACHINE_ARCH} + # # Make sure we have an up-to-date make(1). Only world and buildworld # should do this as those are the initial targets used for upgrades. @@ -172,8 +205,7 @@ cleanworld: # ${TGTS}: - ${_+_}@cd ${.CURDIR}; \ - ${_MAKE} ${.TARGET} + ${_+_}cd ${.CURDIR}; ${_MAKE} TARGET=${_TARGET} TARGET_ARCH=${_TARGET_ARCH} ${.TARGET} # Set a reasonable default .MAIN: all @@ -297,7 +329,7 @@ TARGET_ARCHES_${target}?= ${target} .endfor targets: - @echo "Supported TARGETS/TARGET_ARCH pairs" + @echo "Supported TARGET/TARGET_ARCH pairs for world and kernel targets" .for target in ${TARGETS} .for target_arch in ${TARGET_ARCHES_${target}} @echo " ${target}/${target_arch}" Modified: projects/sv/Makefile.inc1 ============================================================================== --- projects/sv/Makefile.inc1 Mon Jan 31 22:10:01 2011 (r218143) +++ projects/sv/Makefile.inc1 Mon Jan 31 22:14:47 2011 (r218144) @@ -116,32 +116,6 @@ VERSION!= uname -srp VERSION+= ${OSRELDATE} .endif -# Guess machine architecture from machine type, and vice versa. -.if !defined(TARGET_ARCH) && defined(TARGET) -TARGET_ARCH= ${TARGET:S/pc98/i386/:S/sun4v/sparc64/:S/mips/mipsel/} -.elif !defined(TARGET) && defined(TARGET_ARCH) && \ - ${TARGET_ARCH} != ${MACHINE_ARCH} -TARGET= ${TARGET_ARCH:C/mips.*e[lb]/mips/:C/armeb/arm/} -.endif -# Legacy names, for a transition period mips:mips -> mipsel:mips -.if defined(TARGET) && defined(TARGET_ARCH) && \ - ${TARGET_ARCH} == "mips" && ${TARGET} == "mips" -.warning "TARGET_ARCH of mips is deprecated in favor of mipsel or mipseb" -.if defined(TARGET_BIG_ENDIAN) -TARGET_ARCH=mipseb -.else -TARGET_ARCH=mipsel -.endif -.endif -# arm with TARGET_BIG_ENDIAN -> armeb -.if defined(TARGET_ARCH) && ${TARGET_ARCH} == "arm" && defined(TARGET_BIG_ENDIAN) -.warning "TARGET_ARCH of arm with TARGET_BIG_ENDIAN is deprecated. use armeb" -TARGET_ARCH=armeb -.endif -# Otherwise, default to current machine type and architecture. -TARGET?= ${MACHINE} -TARGET_ARCH?= ${MACHINE_ARCH} - KNOWN_ARCHES?= amd64 arm armeb/arm i386 i386/pc98 ia64 mipsel/mips mipseb/mips mips64el/mips mips64eb/mips mipsn32el/mips mipsn32eb/mips powerpc powerpc64/powerpc sparc64 sparc64/sun4v .if ${TARGET} == ${TARGET_ARCH} _t= ${TARGET} Modified: projects/sv/bin/ps/ps.1 ============================================================================== --- projects/sv/bin/ps/ps.1 Mon Jan 31 22:10:01 2011 (r218143) +++ projects/sv/bin/ps/ps.1 Mon Jan 31 22:14:47 2011 (r218144) @@ -288,6 +288,7 @@ the include file .It Dv "P_ADVLOCK" Ta No "0x00001 Process may hold a POSIX advisory lock" .It Dv "P_CONTROLT" Ta No "0x00002 Has a controlling terminal" .It Dv "P_KTHREAD" Ta No "0x00004 Kernel thread" +.It Dv "P_FOLLOWFORK" Ta No "0x00008 Attach debugger to new children" .It Dv "P_PPWAIT" Ta No "0x00010 Parent is waiting for child to exec/exit" .It Dv "P_PROFIL" Ta No "0x00020 Has started profiling" .It Dv "P_STOPPROF" Ta No "0x00040 Has thread in requesting to stop prof" Modified: projects/sv/bin/sh/jobs.c ============================================================================== --- projects/sv/bin/sh/jobs.c Mon Jan 31 22:10:01 2011 (r218143) +++ projects/sv/bin/sh/jobs.c Mon Jan 31 22:14:47 2011 (r218144) @@ -1056,13 +1056,13 @@ dowait(int block, struct job *job) } if (sig > 0 && sig != SIGINT && sig != SIGPIPE) { if (sig < sys_nsig && sys_siglist[sig]) - out1str(sys_siglist[sig]); + out2str(sys_siglist[sig]); else - out1fmt("Signal %d", sig); + outfmt(out2, "Signal %d", sig); if (coredump) - out1str(" (core dumped)"); - out1c('\n'); - flushout(out1); + out2str(" (core dumped)"); + out2c('\n'); + flushout(out2); } } else { TRACE(("Not printing status, rootshell=%d, job=%p\n", rootshell, job)); Modified: projects/sv/bin/sh/var.c ============================================================================== --- projects/sv/bin/sh/var.c Mon Jan 31 22:10:01 2011 (r218143) +++ projects/sv/bin/sh/var.c Mon Jan 31 22:14:47 2011 (r218144) @@ -600,9 +600,8 @@ var_compare(const void *a, const void *b /* - * Command to list all variables which are set. Currently this command - * is invoked from the set command when the set command is called without - * any variables. + * Command to list all variables which are set. This is invoked from the + * set command when it is called without any options or operands. */ int @@ -840,9 +839,7 @@ setvarcmd(int argc, char **argv) /* - * The unset builtin command. We unset the function before we unset the - * variable to allow a function to be unset when there is a readonly variable - * with the same name. + * The unset builtin command. */ int Modified: projects/sv/contrib/tzdata/australasia ============================================================================== --- projects/sv/contrib/tzdata/australasia Mon Jan 31 22:10:01 2011 (r218143) +++ projects/sv/contrib/tzdata/australasia Mon Jan 31 22:14:47 2011 (r218144) @@ -1,5 +1,5 @@ #
-# @(#)australasia	8.20
+# @(#)australasia	8.22
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
@@ -84,14 +84,13 @@ Rule	AS	1986	only	-	Oct	19	2:00s	1:00	-
 Rule	AS	1987	2007	-	Oct	lastSun	2:00s	1:00	-
 Rule	AS	1972	only	-	Feb	27	2:00s	0	-
 Rule	AS	1973	1985	-	Mar	Sun>=1	2:00s	0	-
-Rule	AS	1986	1989	-	Mar	Sun>=15	2:00s	0	-
-Rule	AS	1990	only	-	Mar	Sun>=18	2:00s	0	-
-Rule	AS	1991	only	-	Mar	Sun>=1	2:00s	0	-
-Rule	AS	1992	only	-	Mar	Sun>=18	2:00s	0	-
-Rule	AS	1993	only	-	Mar	Sun>=1	2:00s	0	-
-Rule	AS	1994	only	-	Mar	Sun>=18	2:00s	0	-
+Rule	AS	1986	1990	-	Mar	Sun>=15	2:00s	0	-
+Rule	AS	1991	only	-	Mar	3	2:00s	0	-
+Rule	AS	1992	only	-	Mar	22	2:00s	0	-
+Rule	AS	1993	only	-	Mar	7	2:00s	0	-
+Rule	AS	1994	only	-	Mar	20	2:00s	0	-
 Rule	AS	1995	2005	-	Mar	lastSun	2:00s	0	-
-Rule	AS	2006	only	-	Apr	Sun>=1	2:00s	0	-
+Rule	AS	2006	only	-	Apr	2	2:00s	0	-
 Rule	AS	2007	only	-	Mar	lastSun	2:00s	0	-
 Rule	AS	2008	max	-	Apr	Sun>=1	2:00s	0	-
 Rule	AS	2008	max	-	Oct	Sun>=1	2:00s	1:00	-

Modified: projects/sv/contrib/tzdata/northamerica
==============================================================================
--- projects/sv/contrib/tzdata/northamerica	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/contrib/tzdata/northamerica	Mon Jan 31 22:14:47 2011	(r218144)
@@ -1,5 +1,5 @@
 # 
-# @(#)northamerica	8.34
+# %W%
 # This file is in the public domain, so clarified as of
 # 2009-05-17 by Arthur David Olson.
 
@@ -471,20 +471,50 @@ Zone America/Adak	 12:13:21 -	LMT	1867 O
 #  three votes for and one against."
 
 # Hawaii
-#
-# From Arthur David Olson:
-# And then there's Hawaii.
-# DST was observed for one day in 1933;
-# standard time was changed by half an hour in 1947;
-# it's always standard as of 1986.
-#
-# From Paul Eggert:
-# Shanks says the 1933 experiment lasted for three weeks.  Go with Shanks.
-#
-Zone Pacific/Honolulu	-10:31:26 -	LMT	1900 Jan  1 12:00
-			-10:30	-	HST	1933 Apr 30 2:00
-			-10:30	1:00	HDT	1933 May 21 2:00
-			-10:30	US	H%sT	1947 Jun  8 2:00
+
+# From Arthur David Olson (2010-12-09):
+# "Hawaiian Time" by Robert C. Schmitt and Doak C. Cox appears on pages 207-225
+# of volume 26 of The Hawaiian Journal of History (1992). As of 2010-12-09,
+# the article is available at
+# 
+# http://evols.library.manoa.hawaii.edu/bitstream/10524/239/2/JL26215.pdf
+# 
+# and indicates that standard time was adopted effective noon, January
+# 13, 1896 (page 218), that in "1933, the Legislature decreed daylight
+# saving for the period between the last Sunday of each April and the
+# last Sunday of each September, but less than a month later repealed the
+# act," (page 220), that year-round daylight saving time was in effect
+# from 1942-02-09 to 1945-09-30 (page 221, with no time of day given for
+# when clocks changed) and that clocks were changed by 30 minutes
+# effective the second Sunday of June, 1947 (page 219, with no time of
+# day given for when clocks changed). A footnote for the 1933 changes
+# cites Session Laws of Hawaii 1933, "Act. 90 (approved 26 Apr. 1933)
+# and Act 163 (approved 21 May 1933)."
+
+# From Arthur David Olson (2011-01-19):
+# The following is from "Laws of the Territory of Hawaii Passed by the
+# Seventeenth Legislature: Regular Session 1933," available (as of
+# 2011-01-19) at American University's Pence Law Library. Page 85: "Act
+# 90...At 2 o'clock ante meridian of the last Sunday in April of each
+# year, the standard time of this Territory shall be advanced one
+# hour...This Act shall take effect upon its approval. Approved this 26th
+# day of April, A. D. 1933. LAWRENCE M JUDD, Governor of the Territory of
+# Hawaii." Page 172:  "Act 163...Act 90 of the Session Laws of 1933 is
+# hereby repealed...This Act shall take effect upon its approval, upon
+# which date the standard time of this Territory shall be restored to
+# that existing immediately prior to the taking effect of said Act 90.
+# Approved this 21st day of May, A. D. 1933. LAWRENCE M. JUDD, Governor
+# of the Territory of Hawaii."
+#
+# Note that 1933-05-21 was a Sunday.
+# We're left to guess the time of day when Act 163 was approved; guess noon.
+
+Zone Pacific/Honolulu	-10:31:26 -	LMT	1896 Jan 13 12:00 #Schmitt&Cox
+			-10:30	-	HST	1933 Apr 30 2:00 #Laws 1933
+			-10:30	1:00	HDT	1933 May 21 12:00 #Laws 1933+12
+			-10:30	-	HST	1942 Feb 09 2:00 #Schmitt&Cox+2
+			-10:30	1:00	HDT	1945 Sep 30 2:00 #Schmitt&Fox+2
+			-10:30	US	H%sT	1947 Jun  8 2:00 #Schmitt&Fox+2
 			-10:00	-	HST
 
 # Now we turn to US areas that have diverged from the consensus since 1970.

Modified: projects/sv/etc/ftpusers
==============================================================================
--- projects/sv/etc/ftpusers	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/etc/ftpusers	Mon Jan 31 22:14:47 2011	(r218144)
@@ -20,6 +20,7 @@ _dhcp
 uucp
 pop
 www
+hast
 nobody
 mailnull
 smmsp

Modified: projects/sv/etc/group
==============================================================================
--- projects/sv/etc/group	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/etc/group	Mon Jan 31 22:14:47 2011	(r218144)
@@ -27,5 +27,6 @@ dialer:*:68:
 network:*:69:
 audit:*:77:
 www:*:80:
+hast:*:845:
 nogroup:*:65533:
 nobody:*:65534:

Modified: projects/sv/etc/mail/aliases
==============================================================================
--- projects/sv/etc/mail/aliases	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/etc/mail/aliases	Mon Jan 31 22:14:47 2011	(r218144)
@@ -30,6 +30,7 @@ bin:	root
 bind:	root
 daemon:	root
 games:	root
+hast:	root
 kmem:	root
 mailnull: postmaster
 man:	root

Modified: projects/sv/etc/master.passwd
==============================================================================
--- projects/sv/etc/master.passwd	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/etc/master.passwd	Mon Jan 31 22:14:47 2011	(r218144)
@@ -20,4 +20,5 @@ _dhcp:*:65:65::0:0:dhcp programs:/var/em
 uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico
 pop:*:68:6::0:0:Post Office Owner:/nonexistent:/usr/sbin/nologin
 www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/usr/sbin/nologin
+hast:*:845:845::0:0:HAST unprivileged user:/var/empty:/usr/sbin/nologin
 nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin

Modified: projects/sv/etc/periodic/daily/800.scrub-zfs
==============================================================================
--- projects/sv/etc/periodic/daily/800.scrub-zfs	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/etc/periodic/daily/800.scrub-zfs	Mon Jan 31 22:14:47 2011	(r218144)
@@ -5,6 +5,10 @@
 
 # If there is a global system configuration file, suck it in.
 #
+
+newline="
+" # A single newline
+
 if [ -r /etc/defaults/periodic.conf ]
 then
     . /etc/defaults/periodic.conf
@@ -24,17 +28,19 @@ case "$daily_scrub_zfs_enable" in
 
 	for pool in ${daily_scrub_zfs_pools}; do
 		# sanity check
-		_status=$(zpool list ${pool} | sed -n -e '$p')
+		_status=$(zpool list "${pool}" 2> /dev/null)
 		if [ $? -ne 0 ]; then
 			echo "   WARNING: pool '${pool}' specified in"
 			echo "            '/etc/periodic.conf:daily_scrub_zfs_pools'"
 			echo "            does not exist"
 			continue
 		fi
-		if echo ${_status} | grep -q FAULTED; then
+		_status=${_status##*$newline}
+		case ${_status} in
+		*FAULTED*)
 			echo "Skipping faulted pool: ${pool}"
-			continue
-		fi
+			continue ;;
+		esac
 
 		# successful only if there is at least one pool to scrub
 		rc=0

Modified: projects/sv/etc/rc.d/rpcbind
==============================================================================
--- projects/sv/etc/rc.d/rpcbind	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/etc/rc.d/rpcbind	Mon Jan 31 22:14:47 2011	(r218144)
@@ -13,5 +13,7 @@ name="rpcbind"
 rcvar=`set_rcvar`
 command="/usr/sbin/${name}"
 
+stop_postcmd='/bin/rm -f /var/run/rpcbind.*'
+
 load_rc_config $name
 run_rc_command "$1"

Modified: projects/sv/gnu/lib/libgcc/Makefile
==============================================================================
--- projects/sv/gnu/lib/libgcc/Makefile	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/gnu/lib/libgcc/Makefile	Mon Jan 31 22:14:47 2011	(r218144)
@@ -121,8 +121,9 @@ LIB2FUNCS_EXTRA = floatunsidf.c floatuns
 
 .if ${TARGET_CPUARCH} == mips
 LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
-# XXX do we need n32 here?
-.if ${TARGET_ARCH:Mmips64*} != ""
+# ABIs other than o32 need this
+.if ${TARGET_ARCH:Mmips64*} != "" || \
+    ${TARGET_ARCH:Mmipsn32*} != ""
 LIB2FUNCS_EXTRA+= floatdidf.c fixunsdfsi.c
 LIB2FUNCS_EXTRA+= floatdisf.c floatundidf.c
 LIB2FUNCS_EXTRA+= fixsfdi.c floatundisf.c

Modified: projects/sv/gnu/lib/libgomp/Makefile
==============================================================================
--- projects/sv/gnu/lib/libgomp/Makefile	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/gnu/lib/libgomp/Makefile	Mon Jan 31 22:14:47 2011	(r218144)
@@ -25,7 +25,7 @@ VERSION_MAP=	${SRCDIR}/libgomp.map
 # Target-specific OpenMP configuration
 .if ${MACHINE_CPUARCH} == arm || ${MACHINE_CPUARCH} == i386 || \
     ${MACHINE_ARCH} == powerpc || \
-    ${MACHINE_ARCH} == mipsel || ${MACHINE_ARCH} == mipseb
+    (${MACHINE_CPUARCH} == mips &&  ${MACHINE_ARCH:Mmips64*} == "")
 OMP_LOCK_ALIGN	=	4
 OMP_LOCK_KIND=		4
 OMP_LOCK_SIZE=		4

Modified: projects/sv/gnu/usr.bin/binutils/Makefile.inc0
==============================================================================
--- projects/sv/gnu/usr.bin/binutils/Makefile.inc0	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/gnu/usr.bin/binutils/Makefile.inc0	Mon Jan 31 22:14:47 2011	(r218144)
@@ -28,7 +28,7 @@ SRCDIR=	${.CURDIR}/${RELSRC}
 
 .if ${TARGET_CPUARCH} == "arm" || ${TARGET_CPUARCH} == "i386" || \
 	${TARGET_ARCH} == "powerpc" || \
-	${TARGET_ARCH} == "mipsel" || ${TARGET_ARCH} == "mipseb"
+	(${TARGET_CPUARCH} == "mips" && ${TARGET_ARCH:Mmips64*} == "")
 CFLAGS+= -DBFD_DEFAULT_TARGET_SIZE=32
 .else
 CFLAGS+= -DBFD_DEFAULT_TARGET_SIZE=64

Modified: projects/sv/lib/libc/Makefile
==============================================================================
--- projects/sv/lib/libc/Makefile	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/lib/libc/Makefile	Mon Jan 31 22:14:47 2011	(r218144)
@@ -68,6 +68,7 @@ NOASM=
     ${LIBC_ARCH} != "ia64" && \
     ${LIBC_ARCH} != "powerpc64" && \
     ${LIBC_ARCH} != "sparc64" && \
+    ${MACHINE_ARCH:Mmipsn32*} == "" && \
     ${MACHINE_ARCH:Mmips64*} == ""
 .include "${.CURDIR}/quad/Makefile.inc"
 .endif

Modified: projects/sv/lib/libc/sys/Makefile.inc
==============================================================================
--- projects/sv/lib/libc/sys/Makefile.inc	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/lib/libc/sys/Makefile.inc	Mon Jan 31 22:14:47 2011	(r218144)
@@ -53,16 +53,23 @@ SYM_MAPS+=	${.CURDIR}/sys/Symbol.map
 # Generated files
 CLEANFILES+=	${SASM} ${SPSEUDO}
 
+.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \
+    ${MACHINE_CPUARCH} == "powerpc"
+NOTE_GNU_STACK='\t.section .note.GNU-stack,"",%%progbits\n'
+.else
+NOTE_GNU_STACK=''
+.endif
+
 ${SASM}:
 	printf '#include "compat.h"\n' > ${.TARGET}
 	printf '#include "SYS.h"\nRSYSCALL(${.PREFIX})\n' >> ${.TARGET}
-	printf '\t.section .note.GNU-stack,"",%%progbits\n' >>${.TARGET}
+	printf  ${NOTE_GNU_STACK} >>${.TARGET}
 
 ${SPSEUDO}:
 	printf '#include "compat.h"\n' > ${.TARGET}
 	printf '#include "SYS.h"\nPSEUDO(${.PREFIX:S/_//})\n' \
 	    >> ${.TARGET}
-	printf '\t.section .note.GNU-stack,"",%%progbits\n' >>${.TARGET}
+	printf ${NOTE_GNU_STACK} >>${.TARGET}
 
 MAN+=	abort2.2 accept.2 access.2 acct.2 adjtime.2 \
 	aio_cancel.2 aio_error.2 aio_read.2 aio_return.2 \

Modified: projects/sv/lib/libc/sys/ptrace.2
==============================================================================
--- projects/sv/lib/libc/sys/ptrace.2	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/lib/libc/sys/ptrace.2	Mon Jan 31 22:14:47 2011	(r218144)
@@ -2,7 +2,7 @@
 .\"	$NetBSD: ptrace.2,v 1.2 1995/02/27 12:35:37 cgd Exp $
 .\"
 .\" This file is in the public domain.
-.Dd July 10, 2010
+.Dd January 23, 2011
 .Dt PTRACE 2
 .Os
 .Sh NAME
@@ -295,6 +295,8 @@ struct ptrace_lwpinfo {
 	sigset_t pl_sigmask;
 	sigset_t pl_siglist;
 	siginfo_t pl_siginfo;
+	char	pl_tdname[MAXCOMLEN + 1];
+	int	pl_child_pid;
 };
 .Ed
 .Pp
@@ -345,6 +347,14 @@ Indicates that
 member of
 .Vt "struct ptrace_lwpinfo"
 contains valid information.
+.It PL_FLAG_FORKED
+Indicates that the process is returning from a call to
+.Fn fork 2
+that created a new child process.
+The process identifier of the new process is available in the
+.Va pl_child_pid
+member of
+.Vt "struct ptrace_lwpinfo" .
 .El
 .It pl_sigmask
 The current signal mask of the LWP
@@ -356,11 +366,20 @@ on an LWP siglist until the thread is se
 The siginfo that accompanies the signal pending.
 Only valid for
 .Dv PL_EVENT_SIGNAL
-kind of stop, when
-.Va pl_flags
-has
+stop when
 .Dv PL_FLAG_SI
-set.
+is set in
+.Va pl_flags .
+.It pl_tdname
+The name of the thread.
+.It pl_child_pid
+The process identifier of the new child process.
+Only valid for a
+.Dv PL_EVENT_SIGNAL
+stop when
+.Dv PL_FLAG_FORKED
+is set in
+.Va pl_flags .
 .El
 .It PT_GETNUMLWPS
 This request returns the number of kernel threads associated with the
@@ -391,6 +410,21 @@ This request will trace the specified pr
 .It PT_SYSCALL
 This request will trace the specified process
 on each system call entry and exit.
+.It PT_FOLLOW_FORK
+This request controls tracing for new child processes of a traced process.
+If
+.Fa data
+is non-zero,
+then new child processes will enable tracing and stop before executing their
+first instruction.
+If
+.Fa data
+is zero, then new child processes will execute without tracing enabled.
+By default, tracing is not enabled for new child processes.
+Child processes do not inherit this property.
+The traced process will set the
+.Dv PL_FLAG_FORKED
+flag upon exit from a system call that creates a new process.
 .It PT_VM_TIMESTAMP
 This request returns the generation number or timestamp of the memory map of
 the traced process as the return value from
@@ -567,6 +601,7 @@ function appeared in
 .At v7 .
 .Sh BUGS
 The
+.Dv PL_FLAG_FORKED ,
 .Dv PL_FLAG_SCE ,
 .Dv PL_FLAG_SCX
 and

Modified: projects/sv/lib/libelf/elf_data.c
==============================================================================
--- projects/sv/lib/libelf/elf_data.c	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/lib/libelf/elf_data.c	Mon Jan 31 22:14:47 2011	(r218144)
@@ -115,8 +115,10 @@ elf_getdata(Elf_Scn *s, Elf_Data *d)
 	d->d_type    = elftype;
 	d->d_version = e->e_version;
 
-	if (sh_type == SHT_NOBITS)
+	if (sh_type == SHT_NOBITS || sh_size == 0) {
+	        STAILQ_INSERT_TAIL(&s->s_data, d, d_next);
 		return (d);
+        }
 
 	if ((d->d_buf = malloc(msz*count)) == NULL) {
 		(void) _libelf_release_data(d);

Modified: projects/sv/libexec/rtld-elf/amd64/rtld_machdep.h
==============================================================================
--- projects/sv/libexec/rtld-elf/amd64/rtld_machdep.h	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/libexec/rtld-elf/amd64/rtld_machdep.h	Mon Jan 31 22:14:47 2011	(r218144)
@@ -73,4 +73,7 @@ typedef struct {
 
 extern void *__tls_get_addr(tls_index *ti);
 
+#define	RTLD_DEFAULT_STACK_PF_EXEC	PF_X
+#define	RTLD_DEFAULT_STACK_EXEC		PROT_EXEC
+
 #endif

Modified: projects/sv/libexec/rtld-elf/arm/rtld_machdep.h
==============================================================================
--- projects/sv/libexec/rtld-elf/arm/rtld_machdep.h	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/libexec/rtld-elf/arm/rtld_machdep.h	Mon Jan 31 22:14:47 2011	(r218144)
@@ -69,4 +69,7 @@ void _rtld_bind_start(void);
 
 extern void *__tls_get_addr(tls_index *ti);
 
+#define	RTLD_DEFAULT_STACK_PF_EXEC	PF_X
+#define	RTLD_DEFAULT_STACK_EXEC		PROT_EXEC
+
 #endif

Modified: projects/sv/libexec/rtld-elf/i386/rtld_machdep.h
==============================================================================
--- projects/sv/libexec/rtld-elf/i386/rtld_machdep.h	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/libexec/rtld-elf/i386/rtld_machdep.h	Mon Jan 31 22:14:47 2011	(r218144)
@@ -74,4 +74,7 @@ typedef struct {
 extern void *___tls_get_addr(tls_index *ti) __attribute__((__regparm__(1)));
 extern void *__tls_get_addr(tls_index *ti);
 
+#define	RTLD_DEFAULT_STACK_PF_EXEC	PF_X
+#define	RTLD_DEFAULT_STACK_EXEC		PROT_EXEC
+
 #endif

Modified: projects/sv/libexec/rtld-elf/ia64/rtld_machdep.h
==============================================================================
--- projects/sv/libexec/rtld-elf/ia64/rtld_machdep.h	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/libexec/rtld-elf/ia64/rtld_machdep.h	Mon Jan 31 22:14:47 2011	(r218144)
@@ -65,4 +65,7 @@ void call_initfini_pointer(const struct 
 
 extern void *__tls_get_addr(unsigned long module, unsigned long offset);
 
+#define	RTLD_DEFAULT_STACK_PF_EXEC	0
+#define	RTLD_DEFAULT_STACK_EXEC		0
+
 #endif

Modified: projects/sv/libexec/rtld-elf/map_object.c
==============================================================================
--- projects/sv/libexec/rtld-elf/map_object.c	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/libexec/rtld-elf/map_object.c	Mon Jan 31 22:14:47 2011	(r218144)
@@ -101,7 +101,7 @@ map_object(int fd, const char *path, con
     phdyn = phinterp = phtls = NULL;
     phdr_vaddr = 0;
     segs = alloca(sizeof(segs[0]) * hdr->e_phnum);
-    stack_flags = PF_X | PF_R | PF_W;
+    stack_flags = RTLD_DEFAULT_STACK_PF_EXEC | PF_R | PF_W;
     while (phdr < phlimit) {
 	switch (phdr->p_type) {
 

Modified: projects/sv/libexec/rtld-elf/mips/rtld_machdep.h
==============================================================================
--- projects/sv/libexec/rtld-elf/mips/rtld_machdep.h	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/libexec/rtld-elf/mips/rtld_machdep.h	Mon Jan 31 22:14:47 2011	(r218144)
@@ -69,4 +69,7 @@ void _rtld_bind_start(void);
 
 extern void *__tls_get_addr(tls_index *ti);
 
+#define	RTLD_DEFAULT_STACK_PF_EXEC	PF_X
+#define	RTLD_DEFAULT_STACK_EXEC		PROT_EXEC
+
 #endif

Modified: projects/sv/libexec/rtld-elf/powerpc/rtld_machdep.h
==============================================================================
--- projects/sv/libexec/rtld-elf/powerpc/rtld_machdep.h	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/libexec/rtld-elf/powerpc/rtld_machdep.h	Mon Jan 31 22:14:47 2011	(r218144)
@@ -84,4 +84,7 @@ typedef struct {
 
 extern void *__tls_get_addr(tls_index* ti);
 
+#define	RTLD_DEFAULT_STACK_PF_EXEC	PF_X
+#define	RTLD_DEFAULT_STACK_EXEC		PROT_EXEC
+
 #endif

Modified: projects/sv/libexec/rtld-elf/powerpc64/rtld_machdep.h
==============================================================================
--- projects/sv/libexec/rtld-elf/powerpc64/rtld_machdep.h	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/libexec/rtld-elf/powerpc64/rtld_machdep.h	Mon Jan 31 22:14:47 2011	(r218144)
@@ -76,4 +76,7 @@ typedef struct {
 
 extern void *__tls_get_addr(tls_index* ti);
 
+#define	RTLD_DEFAULT_STACK_PF_EXEC	PF_X
+#define	RTLD_DEFAULT_STACK_EXEC		PROT_EXEC
+
 #endif

Modified: projects/sv/libexec/rtld-elf/rtld.c
==============================================================================
--- projects/sv/libexec/rtld-elf/rtld.c	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/libexec/rtld-elf/rtld.c	Mon Jan 31 22:14:47 2011	(r218144)
@@ -93,7 +93,6 @@ static void *fill_search_info(const char
 static char *find_library(const char *, const Obj_Entry *);
 static const char *gethints(void);
 static void init_dag(Obj_Entry *);
-static void init_dag1(Obj_Entry *, Obj_Entry *, DoneList *);
 static void init_rtld(caddr_t, Elf_Auxinfo **);
 static void initlist_add_neededs(Needed_Entry *, Objlist *);
 static void initlist_add_objects(Obj_Entry *, Obj_Entry **, Objlist *);
@@ -191,7 +190,7 @@ extern Elf_Dyn _DYNAMIC;
 
 int osreldate, pagesize;
 
-static int stack_prot = PROT_READ | PROT_WRITE | PROT_EXEC;
+static int stack_prot = PROT_READ | PROT_WRITE | RTLD_DEFAULT_STACK_EXEC;
 static int max_stack_flags;
 
 /*
@@ -1331,28 +1330,33 @@ gethints(void)
 static void
 init_dag(Obj_Entry *root)
 {
+    const Needed_Entry *needed;
+    const Objlist_Entry *elm;
     DoneList donelist;
 
     if (root->dag_inited)
 	return;
     donelist_init(&donelist);
-    init_dag1(root, root, &donelist);
-    root->dag_inited = true;
-}
-
-static void
-init_dag1(Obj_Entry *root, Obj_Entry *obj, DoneList *dlp)
-{
-    const Needed_Entry *needed;
 
-    if (donelist_check(dlp, obj))
-	return;
+    /* Root object belongs to own DAG. */
+    objlist_push_tail(&root->dldags, root);
+    objlist_push_tail(&root->dagmembers, root);
+    donelist_check(&donelist, root);
 
-    objlist_push_tail(&obj->dldags, root);
-    objlist_push_tail(&root->dagmembers, obj);
-    for (needed = obj->needed;  needed != NULL;  needed = needed->next)
-	if (needed->obj != NULL)
-	    init_dag1(root, needed->obj, dlp);
+    /*
+     * Add dependencies of root object to DAG in breadth order
+     * by exploiting the fact that each new object get added
+     * to the tail of the dagmembers list.
+     */
+    STAILQ_FOREACH(elm, &root->dagmembers, link) {
+	for (needed = elm->obj->needed; needed != NULL; needed = needed->next) {
+	    if (needed->obj == NULL || donelist_check(&donelist, needed->obj))
+		continue;
+	    objlist_push_tail(&needed->obj->dldags, root);
+	    objlist_push_tail(&root->dagmembers, needed->obj);
+	}
+    }
+    root->dag_inited = true;
 }
 
 /*
@@ -1385,7 +1389,7 @@ init_rtld(caddr_t mapbase, Elf_Auxinfo *
 	digest_dynamic1(&objtmp, 1, &dyn_rpath, &dyn_soname);
 	assert(objtmp.needed == NULL);
 #if !defined(__mips__)
-	/* MIPS and SH{3,5} have a bogus DT_TEXTREL. */
+	/* MIPS has a bogus DT_TEXTREL. */
 	assert(!objtmp.textrel);
 #endif
 
@@ -2320,32 +2324,28 @@ do_dlsym(void *handle, const char *name,
 
 	donelist_init(&donelist);
 	if (obj->mainprog) {
-	    /* Search main program and all libraries loaded by it. */
-	    res = symlook_list(&req, &list_main, &donelist);
+            /* Handle obtained by dlopen(NULL, ...) implies global scope. */
+	    res = symlook_global(&req, &donelist);
 	    if (res == 0) {
 		def = req.sym_out;
 		defobj = req.defobj_out;
-	    } else {
-		/*
-		 * We do not distinguish between 'main' object and
-		 * global scope.  If symbol is not defined by objects
-		 * loaded at startup, continue search among
-		 * dynamically loaded objects with RTLD_GLOBAL scope.
-		 */
-		res = symlook_list(&req, &list_global, &donelist);
+	    }
+	    /*
+	     * Search the dynamic linker itself, and possibly resolve the
+	     * symbol from there.  This is how the application links to
+	     * dynamic linker services such as dlopen.
+	     */
+	    if (def == NULL || ELF_ST_BIND(def->st_info) == STB_WEAK) {
+		res = symlook_obj(&req, &obj_rtld);
 		if (res == 0) {
 		    def = req.sym_out;
 		    defobj = req.defobj_out;
 		}
 	    }
-	} else {
-	    Needed_Entry fake;
-
+	}
+	else {
 	    /* Search the whole DAG rooted at the given object. */
-	    fake.next = NULL;
-	    fake.obj = (Obj_Entry *)obj;
-	    fake.name = 0;
-	    res = symlook_needed(&req, &fake, &donelist);
+	    res = symlook_list(&req, &obj->dagmembers, &donelist);
 	    if (res == 0) {
 		def = req.sym_out;
 		defobj = req.defobj_out;
@@ -2800,7 +2800,12 @@ get_program_var_addr(const char *name, R
     donelist_init(&donelist);
     if (symlook_global(&req, &donelist) != 0)
 	return (NULL);
-    return ((const void **)(req.defobj_out->relocbase + req.sym_out->st_value));
+    if (ELF_ST_TYPE(req.sym_out->st_info) == STT_FUNC)
+	return ((const void **)make_function_pointer(req.sym_out,
+	  req.defobj_out));
+    else
+	return ((const void **)(req.defobj_out->relocbase +
+	  req.sym_out->st_value));
 }
 
 /*
@@ -2955,53 +2960,33 @@ symlook_list(SymLook *req, const Objlist
 }
 
 /*
- * Search the symbol table of a shared object and all objects needed
- * by it for a symbol of the given name.  Search order is
- * breadth-first.  Returns a pointer to the symbol, or NULL if no
- * definition was found.
+ * Search the chain of DAGS cointed to by the given Needed_Entry
+ * for a symbol of the given name.  Each DAG is scanned completely
+ * before advancing to the next one.  Returns a pointer to the symbol,
+ * or NULL if no definition was found.
  */
 static int
 symlook_needed(SymLook *req, const Needed_Entry *needed, DoneList *dlp)
 {
-    const Elf_Sym *def, *def_w;
+    const Elf_Sym *def;
     const Needed_Entry *n;
-    const Obj_Entry *defobj, *defobj1;
+    const Obj_Entry *defobj;
     SymLook req1;
     int res;
 
-    def = def_w = NULL;
+    def = NULL;
     defobj = NULL;
     symlook_init_from_req(&req1, req);
     for (n = needed; n != NULL; n = n->next) {
-	if (n->obj == NULL || donelist_check(dlp, n->obj) ||
-	    (res = symlook_obj(&req1, n->obj)) != 0)
+	if (n->obj == NULL ||
+	    (res = symlook_list(&req1, &n->obj->dagmembers, dlp)) != 0)
 	    continue;
-	def = req1.sym_out;
-	defobj = req1.defobj_out;
-	if (ELF_ST_BIND(def->st_info) != STB_WEAK) {
-	    req->defobj_out = defobj;
-	    req->sym_out = def;
-	    return (0);
-	}
-    }
-    /*
-     * There we come when either symbol definition is not found in
-     * directly needed objects, or found symbol is weak.
-     */
-    for (n = needed; n != NULL; n = n->next) {
-	if (n->obj == NULL)
-	    continue;
-	res = symlook_needed(&req1, n->obj->needed, dlp);
-	if (res != 0)
-	    continue;
-	def_w = req1.sym_out;
-	defobj1 = req1.defobj_out;
-	if (def == NULL || ELF_ST_BIND(def_w->st_info) != STB_WEAK) {
-	    def = def_w;
-	    defobj = defobj1;
+	if (def == NULL || ELF_ST_BIND(req1.sym_out->st_info) != STB_WEAK) {
+	    def = req1.sym_out;
+	    defobj = req1.defobj_out;
+	    if (ELF_ST_BIND(def->st_info) != STB_WEAK)
+		break;
 	}
-	if (ELF_ST_BIND(def_w->st_info) != STB_WEAK)
-	    break;
     }
     if (def != NULL) {
 	req->sym_out = def;
@@ -3719,10 +3704,17 @@ locate_dependency(const Obj_Entry *obj, 
     }
 
     for (needed = obj->needed;  needed != NULL;  needed = needed->next) {
-	if (needed->obj == NULL)
-	    continue;
-	if (object_match_name(needed->obj, name))
-	    return needed->obj;
+	if (strcmp(obj->strtab + needed->name, name) == 0 ||
+	  (needed->obj != NULL && object_match_name(needed->obj, name))) {
+	    /*
+	     * If there is DT_NEEDED for the name we are looking for,
+	     * we are all set.  Note that object might not be found if
+	     * dependency was not loaded yet, so the function can
+	     * return NULL here.  This is expected and handled
+	     * properly by the caller.
+	     */
+	    return (needed->obj);
+	}
     }
     _rtld_error("%s: Unexpected inconsistency: dependency %s not found",
 	obj->path, name);
@@ -3848,6 +3840,8 @@ rtld_verify_object_versions(Obj_Entry *o
     vn = obj->verneed;
     while (vn != NULL) {
 	depobj = locate_dependency(obj, obj->strtab + vn->vn_file);
+	if (depobj == NULL)
+	    return (-1);
 	vna = (const Elf_Vernaux *) ((char *)vn + vn->vn_aux);
 	for (;;) {
 	    if (check_object_provided_version(obj, depobj, vna))

Modified: projects/sv/libexec/rtld-elf/sparc64/rtld_machdep.h
==============================================================================
--- projects/sv/libexec/rtld-elf/sparc64/rtld_machdep.h	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/libexec/rtld-elf/sparc64/rtld_machdep.h	Mon Jan 31 22:14:47 2011	(r218144)
@@ -65,4 +65,7 @@ typedef struct {
 
 extern void *__tls_get_addr(tls_index *ti);
 
+#define	RTLD_DEFAULT_STACK_PF_EXEC	0
+#define	RTLD_DEFAULT_STACK_EXEC		0
+
 #endif

Modified: projects/sv/sbin/fdisk/fdisk.c
==============================================================================
--- projects/sv/sbin/fdisk/fdisk.c	Mon Jan 31 22:10:01 2011	(r218143)
+++ projects/sv/sbin/fdisk/fdisk.c	Mon Jan 31 22:14:47 2011	(r218144)
@@ -49,7 +49,10 @@ __FBSDID("$FreeBSD$");
 
 int iotest;
 
-#define NOSECTORS ((u_int32_t)-1)
+#define NO_DISK_SECTORS ((u_int32_t)-1)
+#define NO_TRACK_CYLINDERS 1023
+#define NO_TRACK_HEADS 255
+#define NO_TRACK_SECTORS 63
 #define LBUF 100
 static char lbuf[LBUF];
 
@@ -62,7 +65,7 @@ static char lbuf[LBUF];
  *	Created.
  */
 
-#define Decimal(str, ans, tmp, nbits) if (decimal(str, &tmp, ans, nbits)) ans = tmp
+#define Decimal(str, ans, tmp, maxval) if (decimal(str, &tmp, ans, maxval)) ans = tmp
 
 #define RoundCyl(x) ((((x) + cylsecs - 1) / cylsecs) * cylsecs)
 
@@ -247,7 +250,7 @@ static int get_params(void);
 static int read_s0(void);
 static int write_s0(void);
 static int ok(const char *str);
-static int decimal(const char *str, int *num, int deflt, int nbits);
+static int decimal(const char *str, int *num, int deflt, uint32_t maxval);
 static int read_config(char *config_file);
 static void reset_boot(void);
 static int sanitize_partition(struct dos_partition *);
@@ -572,9 +575,9 @@ change_part(int i)
 	}
 
 	do {
-		Decimal("sysid (165=FreeBSD)", partp->dp_typ, tmp, sizeof(partp->dp_typ) * 8);
-		Decimal("start", partp->dp_start, tmp, sizeof(partp->dp_start) * 8);
-		Decimal("size", partp->dp_size, tmp, sizeof(partp->dp_size) * 8);
+		Decimal("sysid (165=FreeBSD)", partp->dp_typ, tmp, 255);
+		Decimal("start", partp->dp_start, tmp, NO_DISK_SECTORS);
+		Decimal("size", partp->dp_size, tmp, NO_DISK_SECTORS);
 		if (!sanitize_partition(partp)) {
 			warnx("ERROR: failed to adjust; setting sysid to 0");
 			partp->dp_typ = 0;
@@ -586,9 +589,9 @@ change_part(int i)
 			tcyl = DPCYL(partp->dp_scyl,partp->dp_ssect);
 			thd = partp->dp_shd;
 			tsec = DPSECT(partp->dp_ssect);
-			Decimal("beginning cylinder", tcyl, tmp, 10);
-			Decimal("beginning head", thd, tmp, sizeof(partp->dp_shd) * 8);
-			Decimal("beginning sector", tsec, tmp, 6);
+			Decimal("beginning cylinder", tcyl, tmp, NO_TRACK_CYLINDERS);
+			Decimal("beginning head", thd, tmp, NO_TRACK_HEADS);
+			Decimal("beginning sector", tsec, tmp, NO_TRACK_SECTORS);
 			partp->dp_scyl = DOSCYL(tcyl);
 			partp->dp_ssect = DOSSECT(tsec,tcyl);
 			partp->dp_shd = thd;
@@ -596,9 +599,9 @@ change_part(int i)
 			tcyl = DPCYL(partp->dp_ecyl,partp->dp_esect);
 			thd = partp->dp_ehd;
 			tsec = DPSECT(partp->dp_esect);
-			Decimal("ending cylinder", tcyl, tmp, 10);
-			Decimal("ending head", thd, tmp, sizeof(partp->dp_ehd) * 8);
-			Decimal("ending sector", tsec, tmp, 6);
+			Decimal("ending cylinder", tcyl, tmp, NO_TRACK_CYLINDERS);
+			Decimal("ending head", thd, tmp, NO_TRACK_HEADS);
+			Decimal("ending sector", tsec, tmp, NO_TRACK_SECTORS);
 			partp->dp_ecyl = DOSCYL(tcyl);
 			partp->dp_esect = DOSSECT(tsec,tcyl);
 			partp->dp_ehd = thd;
@@ -915,16 +918,12 @@ ok(const char *str)
 }
 
 static int
-decimal(const char *str, int *num, int deflt, int nbits)
+decimal(const char *str, int *num, int deflt, uint32_t maxval)
 {
-	long long acc = 0, limit;
+	long long acc = 0;
 	int c;
 	char *cp;
 
-	if (nbits == 0) {
-		nbits = sizeof(*num) * 8;
-	}
-	limit = (long long)1 << nbits;
 	while (1) {
 		printf("Supply a decimal value for \"%s\" [%d] ", str, deflt);
 		fflush(stdout);
@@ -941,7 +940,7 @@ decimal(const char *str, int *num, int d
 			return 0;
 		while ((c = *cp++)) {
 			if (c <= '9' && c >= '0') {
-				if (acc < limit)
+				if (maxval > 0 && acc <= maxval)
 					acc = acc * 10 + c - '0';
 			} else
 				break;
@@ -949,10 +948,11 @@ decimal(const char *str, int *num, int d
 		if (c == ' ' || c == '\t')
 			while ((c = *cp) && (c == ' ' || c == '\t')) cp++;
 		if (!c) {
-			if (acc >= limit) {
-				acc = limit - 1;
-				printf("%s is too big, it will be truncated to %lld\n",
-				    lbuf, acc);
+			if (maxval > 0 && acc > maxval) {
+				acc = maxval;
+				printf("%s exceeds maximum value allowed for "
+				  "this field. The value has been reduced "
+				  "to %lld\n", lbuf, acc);
 			}
 			*num = acc;
 			return 1;
@@ -1108,7 +1108,7 @@ str2sectors(const char *str)
 	if (str == end || *end == '\0') {
 		warnx("ERROR line %d: unexpected size: \'%s\'",
 		    current_line_number, str);
-		return NOSECTORS;
+		return NO_DISK_SECTORS;
 	}
 
 	if (*end == 'K') 
@@ -1120,7 +1120,7 @@ str2sectors(const char *str)
 	else {
 		warnx("ERROR line %d: unexpected modifier: %c "
 		    "(not K/M/G)", current_line_number, *end);
-		return NOSECTORS;
+		return NO_DISK_SECTORS;
 	}
 
 	return val;
@@ -1170,7 +1170,7 @@ process_partition(CMD *command)
 			}
 		} else {
 			partp->dp_start = str2sectors(command->args[2].arg_str);
-			if (partp->dp_start == NOSECTORS)
+			if (partp->dp_start == NO_DISK_SECTORS)
 				break;
 		}
 	} else
@@ -1182,7 +1182,7 @@ process_partition(CMD *command)
 			    dos_cylsecs) - partp->dp_start;
 		else {
 			partp->dp_size = str2sectors(command->args[3].arg_str);

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