Date: Mon, 31 Jan 2011 22:14:48 +0000 (UTC) From: Attilio Rao <attilio@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org 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... Message-ID: <201101312214.p0VMEmuE047000@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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 @@ # <pre> -# @(#)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 @@ # <pre> -# @(#)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 +# <a href="http://evols.library.manoa.hawaii.edu/bitstream/10524/239/2/JL26215.pdf"> +# http://evols.library.manoa.hawaii.edu/bitstream/10524/239/2/JL26215.pdf +# </a> +# 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 ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201101312214.p0VMEmuE047000>