Date: Tue, 6 Jul 2010 15:45:59 +0000 (UTC) From: Nathan Whitehorn <nwhitehorn@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r209727 - in projects/ppc64: . bin/sh etc/mtree gnu/usr.bin/gdb/libgdb include/arpa lib/libc/gmon lib/libc/net lib/libc/posix1e lib/libfetch lib/libthread_db libexec/rtld-elf sbin/bsdla... Message-ID: <201007061545.o66FjxYB012938@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: nwhitehorn Date: Tue Jul 6 15:45:59 2010 New Revision: 209727 URL: http://svn.freebsd.org/changeset/base/209727 Log: IFC @ 209726 Added: projects/ppc64/share/man/man4/siftr.4 - copied unchanged from r209726, head/share/man/man4/siftr.4 projects/ppc64/sys/cddl/contrib/opensolaris/uts/common/sys/fasttrap_impl.h - copied unchanged from r209726, head/sys/cddl/contrib/opensolaris/uts/common/sys/fasttrap_impl.h projects/ppc64/sys/cddl/contrib/opensolaris/uts/intel/dtrace/ - copied from r209726, head/sys/cddl/contrib/opensolaris/uts/intel/dtrace/ projects/ppc64/sys/cddl/contrib/opensolaris/uts/sparc/dtrace/ - copied from r209726, head/sys/cddl/contrib/opensolaris/uts/sparc/dtrace/ projects/ppc64/sys/dev/e1000/e1000_mbx.c - copied unchanged from r209726, head/sys/dev/e1000/e1000_mbx.c projects/ppc64/sys/dev/e1000/e1000_mbx.h - copied unchanged from r209726, head/sys/dev/e1000/e1000_mbx.h projects/ppc64/sys/dev/e1000/e1000_vf.c - copied unchanged from r209726, head/sys/dev/e1000/e1000_vf.c projects/ppc64/sys/dev/e1000/e1000_vf.h - copied unchanged from r209726, head/sys/dev/e1000/e1000_vf.h projects/ppc64/sys/modules/siftr/ - copied from r209726, head/sys/modules/siftr/ projects/ppc64/sys/netinet/siftr.c - copied unchanged from r209726, head/sys/netinet/siftr.c projects/ppc64/usr.sbin/pc-sysinstall/Makefile.inc - copied unchanged from r209726, head/usr.sbin/pc-sysinstall/Makefile.inc projects/ppc64/usr.sbin/pc-sysinstall/backend-query/list-config.sh - copied unchanged from r209726, head/usr.sbin/pc-sysinstall/backend-query/list-config.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/list-mirrors.sh - copied unchanged from r209726, head/usr.sbin/pc-sysinstall/backend-query/list-mirrors.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-ftp.sh - copied unchanged from r209726, head/usr.sbin/pc-sysinstall/backend/functions-ftp.sh Deleted: projects/ppc64/sys/powerpc/include/intr.h Modified: projects/ppc64/ObsoleteFiles.inc projects/ppc64/bin/sh/expand.c projects/ppc64/bin/sh/jobs.c projects/ppc64/bin/sh/jobs.h projects/ppc64/bin/sh/parser.c projects/ppc64/bin/sh/sh.1 projects/ppc64/etc/mtree/BSD.usr.dist projects/ppc64/gnu/usr.bin/gdb/libgdb/fbsd-threads.c projects/ppc64/include/arpa/inet.h projects/ppc64/lib/libc/gmon/gmon.c projects/ppc64/lib/libc/net/sctp_recvmsg.3 projects/ppc64/lib/libc/net/sctp_send.3 projects/ppc64/lib/libc/net/sctp_sys_calls.c projects/ppc64/lib/libc/posix1e/acl_from_text.c projects/ppc64/lib/libfetch/http.c projects/ppc64/lib/libthread_db/Symbol.map projects/ppc64/lib/libthread_db/libpthread_db.c projects/ppc64/lib/libthread_db/libthr_db.c projects/ppc64/lib/libthread_db/thread_db.c projects/ppc64/lib/libthread_db/thread_db.h projects/ppc64/lib/libthread_db/thread_db_int.h projects/ppc64/libexec/rtld-elf/rtld.c projects/ppc64/sbin/bsdlabel/bsdlabel.c projects/ppc64/sbin/camcontrol/camcontrol.8 projects/ppc64/sbin/devd/devd.cc projects/ppc64/sbin/devd/devd.hh projects/ppc64/sbin/fsck_ffs/suj.c projects/ppc64/sbin/geom/class/multipath/geom_multipath.c projects/ppc64/sbin/mca/mca.c projects/ppc64/sbin/reboot/boot_i386.8 projects/ppc64/share/man/man3/pthread_join.3 projects/ppc64/share/man/man4/Makefile projects/ppc64/share/man/man4/ata.4 projects/ppc64/share/man/man4/bwi.4 projects/ppc64/share/man/man9/Makefile projects/ppc64/share/man/man9/alloc_unr.9 projects/ppc64/share/man/man9/style.9 projects/ppc64/share/man/man9/vm_page_alloc.9 projects/ppc64/share/misc/committers-doc.dot projects/ppc64/sys/amd64/amd64/machdep.c projects/ppc64/sys/amd64/ia32/ia32_signal.c projects/ppc64/sys/amd64/linux32/linux32_sysent.c projects/ppc64/sys/arm/arm/machdep.c projects/ppc64/sys/cam/cam_xpt.c projects/ppc64/sys/compat/freebsd32/freebsd32_misc.c projects/ppc64/sys/compat/freebsd32/freebsd32_proto.h projects/ppc64/sys/compat/freebsd32/freebsd32_signal.h projects/ppc64/sys/compat/freebsd32/freebsd32_syscall.h projects/ppc64/sys/compat/freebsd32/freebsd32_syscalls.c projects/ppc64/sys/compat/freebsd32/freebsd32_sysent.c projects/ppc64/sys/compat/freebsd32/syscalls.master projects/ppc64/sys/compat/linux/linux_signal.c projects/ppc64/sys/compat/svr4/svr4_proto.h projects/ppc64/sys/compat/svr4/svr4_syscall.h projects/ppc64/sys/compat/svr4/svr4_syscallnames.c projects/ppc64/sys/compat/svr4/svr4_sysent.c projects/ppc64/sys/conf/files projects/ppc64/sys/dev/ata/ata-all.c projects/ppc64/sys/dev/ata/ata-all.h projects/ppc64/sys/dev/ata/ata-card.c projects/ppc64/sys/dev/ata/ata-disk.c projects/ppc64/sys/dev/ath/ath_hal/ar5416/ar5416reg.h projects/ppc64/sys/dev/bge/if_bge.c projects/ppc64/sys/dev/bwi/if_bwi.c projects/ppc64/sys/dev/e1000/e1000_82575.h projects/ppc64/sys/dev/e1000/e1000_api.c projects/ppc64/sys/dev/e1000/e1000_api.h projects/ppc64/sys/dev/e1000/e1000_hw.h projects/ppc64/sys/dev/e1000/e1000_regs.h projects/ppc64/sys/dev/e1000/if_igb.c projects/ppc64/sys/dev/e1000/if_igb.h projects/ppc64/sys/dev/ixgbe/ixgbe.c projects/ppc64/sys/dev/ixgbe/ixgbe.h projects/ppc64/sys/dev/mpt/mpt.c projects/ppc64/sys/dev/mpt/mpt.h projects/ppc64/sys/dev/mpt/mpt_cam.c projects/ppc64/sys/dev/mpt/mpt_pci.c projects/ppc64/sys/dev/mpt/mpt_raid.c projects/ppc64/sys/i386/i386/machdep.c projects/ppc64/sys/i386/ibcs2/ibcs2_proto.h projects/ppc64/sys/i386/ibcs2/ibcs2_syscall.h projects/ppc64/sys/i386/ibcs2/ibcs2_sysent.c projects/ppc64/sys/i386/linux/linux_sysent.c projects/ppc64/sys/ia64/ia64/machdep.c projects/ppc64/sys/ia64/ia64/mca.c projects/ppc64/sys/ia64/ia64/mp_machdep.c projects/ppc64/sys/ia64/include/asm.h projects/ppc64/sys/ia64/include/mca.h projects/ppc64/sys/ia64/include/profile.h projects/ppc64/sys/kern/init_sysent.c projects/ppc64/sys/kern/kern_clock.c projects/ppc64/sys/kern/kern_context.c projects/ppc64/sys/kern/kern_exec.c projects/ppc64/sys/kern/kern_exit.c projects/ppc64/sys/kern/kern_sig.c projects/ppc64/sys/kern/kern_syscalls.c projects/ppc64/sys/kern/kern_thr.c projects/ppc64/sys/kern/makesyscalls.sh projects/ppc64/sys/kern/subr_sleepqueue.c projects/ppc64/sys/kern/subr_trap.c projects/ppc64/sys/kern/subr_unit.c projects/ppc64/sys/kern/sys_generic.c projects/ppc64/sys/kern/sys_process.c projects/ppc64/sys/kern/sys_socket.c projects/ppc64/sys/kern/syscalls.c projects/ppc64/sys/kern/syscalls.master projects/ppc64/sys/kern/sysv_shm.c projects/ppc64/sys/kern/tty.c projects/ppc64/sys/kern/uipc_syscalls.c projects/ppc64/sys/kern/vfs_bio.c projects/ppc64/sys/mips/include/pte.h projects/ppc64/sys/mips/mips/pm_machdep.c projects/ppc64/sys/mips/mips/tlb.c projects/ppc64/sys/mips/rmi/board.c projects/ppc64/sys/mips/rmi/board.h projects/ppc64/sys/modules/Makefile projects/ppc64/sys/modules/em/Makefile projects/ppc64/sys/modules/igb/Makefile projects/ppc64/sys/net80211/ieee80211_crypto.h projects/ppc64/sys/net80211/ieee80211_crypto_ccmp.c projects/ppc64/sys/net80211/ieee80211_crypto_tkip.c projects/ppc64/sys/netgraph/ng_ipfw.c projects/ppc64/sys/netgraph/ng_pipe.c projects/ppc64/sys/netinet/ipfw/ip_fw2.c projects/ppc64/sys/netinet/sctp_pcb.c projects/ppc64/sys/netinet/sctputil.c projects/ppc64/sys/pc98/pc98/machdep.c projects/ppc64/sys/powerpc/aim/clock.c projects/ppc64/sys/powerpc/aim/machdep.c projects/ppc64/sys/powerpc/booke/clock.c projects/ppc64/sys/powerpc/booke/machdep.c projects/ppc64/sys/powerpc/include/asm.h projects/ppc64/sys/powerpc/include/profile.h projects/ppc64/sys/powerpc/mpc85xx/atpic.c projects/ppc64/sys/powerpc/mpc85xx/opic.c projects/ppc64/sys/powerpc/powermac/cuda.c projects/ppc64/sys/powerpc/powermac/hrowpic.c projects/ppc64/sys/powerpc/powermac/openpic_macio.c projects/ppc64/sys/powerpc/powermac/pmu.c projects/ppc64/sys/powerpc/powerpc/intr_machdep.c projects/ppc64/sys/powerpc/powerpc/openpic.c projects/ppc64/sys/powerpc/psim/openpic_iobus.c projects/ppc64/sys/sparc64/include/smp.h projects/ppc64/sys/sparc64/sparc64/machdep.c projects/ppc64/sys/sun4v/sun4v/machdep.c projects/ppc64/sys/sys/proc.h projects/ppc64/sys/sys/ptrace.h projects/ppc64/sys/sys/signalvar.h projects/ppc64/sys/sys/syscall.h projects/ppc64/sys/sys/syscall.mk projects/ppc64/sys/sys/syscallsubr.h projects/ppc64/sys/sys/sysent.h projects/ppc64/sys/sys/sysproto.h projects/ppc64/sys/sys/systm.h projects/ppc64/sys/ufs/ffs/ffs_alloc.c projects/ppc64/sys/ufs/ffs/ffs_inode.c projects/ppc64/sys/ufs/ffs/ffs_softdep.c projects/ppc64/sys/ufs/ffs/ffs_vnops.c projects/ppc64/sys/ufs/ffs/softdep.h projects/ppc64/sys/ufs/ufs/inode.h projects/ppc64/sys/ufs/ufs/ufs_inode.c projects/ppc64/sys/ufs/ufs/ufs_lookup.c projects/ppc64/sys/ufs/ufs/ufs_vnops.c projects/ppc64/sys/vm/vm_contig.c projects/ppc64/sys/vm/vm_fault.c projects/ppc64/sys/vm/vm_map.c projects/ppc64/sys/vm/vm_object.c projects/ppc64/sys/vm/vm_page.c projects/ppc64/sys/vm/vm_page.h projects/ppc64/sys/vm/vm_pageout.c projects/ppc64/sys/vm/vm_pager.h projects/ppc64/sys/x86/isa/atrtc.c projects/ppc64/sys/x86/isa/clock.c projects/ppc64/tools/regression/bin/sh/expansion/arith2.0 projects/ppc64/usr.bin/locate/bigram/locate.bigram.c projects/ppc64/usr.bin/locate/code/locate.code.c projects/ppc64/usr.bin/lock/Makefile projects/ppc64/usr.bin/lock/lock.c projects/ppc64/usr.bin/ministat/ministat.1 projects/ppc64/usr.bin/tcopy/Makefile projects/ppc64/usr.bin/tcopy/tcopy.c projects/ppc64/usr.bin/tftp/tftp.c projects/ppc64/usr.sbin/pc-sysinstall/backend-partmanager/create-part.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-partmanager/delete-part.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/Makefile projects/ppc64/usr.sbin/pc-sysinstall/backend-query/detect-laptop.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/detect-nics.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/detect-vmware.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/disk-info.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/disk-list.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/disk-part.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/enable-net.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/list-components.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/list-rsync-backups.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/list-tzones.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/query-langs.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/send-logs.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/setup-ssh-keys.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/sys-mem.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/test-live.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/test-netup.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/update-part-list.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/xkeyboard-layouts.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/xkeyboard-models.sh projects/ppc64/usr.sbin/pc-sysinstall/backend-query/xkeyboard-variants.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/Makefile projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-bsdlabel.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-cleanup.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-disk.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-extractimage.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-installcomponents.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-localize.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-mountdisk.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-mountoptical.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-networking.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-newfs.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-parse.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-runcommands.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-unmount.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-upgrade.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions-users.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/functions.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/parseconfig.sh projects/ppc64/usr.sbin/pc-sysinstall/backend/startautoinstall.sh projects/ppc64/usr.sbin/pc-sysinstall/conf/pc-sysinstall.conf projects/ppc64/usr.sbin/pc-sysinstall/doc/help-index projects/ppc64/usr.sbin/pc-sysinstall/pc-sysinstall/pc-sysinstall.sh projects/ppc64/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c Directory Properties: projects/ppc64/ (props changed) projects/ppc64/cddl/contrib/opensolaris/ (props changed) projects/ppc64/contrib/ee/ (props changed) projects/ppc64/contrib/expat/ (props changed) projects/ppc64/contrib/file/ (props changed) projects/ppc64/contrib/gdb/ (props changed) projects/ppc64/contrib/gnu-sort/ (props changed) projects/ppc64/contrib/groff/ (props changed) projects/ppc64/contrib/less/ (props changed) projects/ppc64/contrib/libpcap/ (props changed) projects/ppc64/contrib/ncurses/ (props changed) projects/ppc64/contrib/one-true-awk/ (props changed) projects/ppc64/contrib/openbsm/ (props changed) projects/ppc64/contrib/openpam/ (props changed) projects/ppc64/contrib/pf/ (props changed) projects/ppc64/contrib/tcpdump/ (props changed) projects/ppc64/contrib/tcsh/ (props changed) projects/ppc64/contrib/tzcode/stdtime/ (props changed) projects/ppc64/contrib/tzcode/zic/ (props changed) projects/ppc64/contrib/tzdata/ (props changed) projects/ppc64/contrib/wpa/ (props changed) projects/ppc64/lib/libutil/ (props changed) projects/ppc64/lib/libz/ (props changed) projects/ppc64/sbin/ (props changed) projects/ppc64/sbin/ipfw/ (props changed) projects/ppc64/share/mk/bsd.arch.inc.mk (props changed) projects/ppc64/sys/ (props changed) projects/ppc64/sys/amd64/include/xen/ (props changed) projects/ppc64/sys/arm/conf/SHEEVAPLUG (props changed) projects/ppc64/sys/cddl/contrib/opensolaris/ (props changed) projects/ppc64/sys/contrib/dev/acpica/ (props changed) projects/ppc64/sys/contrib/x86emu/ (props changed) projects/ppc64/sys/dev/xen/xenpci/ (props changed) projects/ppc64/usr.bin/csup/ (props changed) projects/ppc64/usr.bin/procstat/ (props changed) Modified: projects/ppc64/ObsoleteFiles.inc ============================================================================== --- projects/ppc64/ObsoleteFiles.inc Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/ObsoleteFiles.inc Tue Jul 6 15:45:59 2010 (r209727) @@ -14,6 +14,10 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20100701: [powerpc] removed <machine/intr.h> +.if ${TARGET_ARCH} == "powerpc" +OLD_FILES+=usr/include/machine/intr.h +.endif # 20100514: library version bump for versioned symbols for liblzma OLD_LIBS+=usr/lib/liblzma.so.0 .if ${TARGET_ARCH} == "amd64" Modified: projects/ppc64/bin/sh/expand.c ============================================================================== --- projects/ppc64/bin/sh/expand.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/bin/sh/expand.c Tue Jul 6 15:45:59 2010 (r209727) @@ -818,7 +818,7 @@ varisset(char *name, int nulok) { if (*name == '!') - return backgndpid != -1; + return backgndpidset(); else if (*name == '@' || *name == '*') { if (*shellparam.p == NULL) return 0; @@ -891,7 +891,7 @@ varvalue(char *name, int quoted, int sub num = shellparam.nparam; goto numvar; case '!': - num = backgndpid; + num = backgndpidval(); numvar: expdest = cvtnum(num, expdest); break; Modified: projects/ppc64/bin/sh/jobs.c ============================================================================== --- projects/ppc64/bin/sh/jobs.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/bin/sh/jobs.c Tue Jul 6 15:45:59 2010 (r209727) @@ -75,6 +75,7 @@ __FBSDID("$FreeBSD$"); STATIC struct job *jobtab; /* array of jobs */ STATIC int njobs; /* size of array */ MKINIT pid_t backgndpid = -1; /* pid of last background process */ +MKINIT struct job *bgjob = NULL; /* last background process */ #if JOBS STATIC struct job *jobmru; /* most recently used job list */ STATIC pid_t initialpgrp; /* pgrp of shell on invocation */ @@ -183,6 +184,7 @@ INCLUDE <stdlib.h> SHELLPROC { backgndpid = -1; + bgjob = NULL; #if JOBS jobctl = 0; #endif @@ -413,7 +415,11 @@ showjobs(int change, int mode) continue; showjob(jp, 0, mode); jp->changed = 0; - if (jp->state == JOBDONE) { + /* Hack: discard jobs for which $! has not been referenced + * in interactive mode when they terminate. + */ + if (jp->state == JOBDONE && !jp->remembered && + (iflag || jp != bgjob)) { freejob(jp); } } @@ -431,6 +437,8 @@ freejob(struct job *jp) int i; INTOFF; + if (bgjob == jp) + bgjob = NULL; for (i = jp->nprocs, ps = jp->ps ; --i >= 0 ; ps++) { if (ps->cmd != nullstr) ckfree(ps->cmd); @@ -477,12 +485,27 @@ waitcmd(int argc, char **argv) #endif else retval = WTERMSIG(status) + 128; - if (! iflag) + if (! iflag || ! job->changed) freejob(job); + else { + job->remembered = 0; + if (job == bgjob) + bgjob = NULL; + } in_waitcmd--; return retval; } } else { + for (jp = jobtab ; jp < jobtab + njobs; jp++) + if (jp->used && jp->state == JOBDONE) { + if (! iflag || ! jp->changed) + freejob(jp); + else { + jp->remembered = 0; + if (jp == bgjob) + bgjob = NULL; + } + } for (jp = jobtab ; ; jp++) { if (jp >= jobtab + njobs) { /* no running procs */ in_waitcmd--; @@ -623,6 +646,8 @@ makejob(union node *node __unused, int n jp[i].next = &jp[jp[i].next - jobtab]; #endif + if (bgjob != NULL) + bgjob = &jp[bgjob - jobtab]; /* Relocate `ps' pointers */ for (i = 0; i < njobs; i++) if (jp[i].ps == &jobtab[i].ps0) @@ -644,6 +669,7 @@ makejob(union node *node __unused, int n jp->changed = 0; jp->nprocs = 0; jp->foreground = 0; + jp->remembered = 0; #if JOBS jp->jobctl = jobctl; jp->next = NULL; @@ -821,8 +847,13 @@ forkshell(struct job *jp, union node *n, pgrp = jp->ps[0].pid; setpgid(pid, pgrp); } - if (mode == FORK_BG) + if (mode == FORK_BG) { + if (bgjob != NULL && bgjob->state == JOBDONE && + !bgjob->remembered && !iflag) + freejob(bgjob); backgndpid = pid; /* set $! */ + bgjob = jp; + } if (jp) { struct procstat *ps = &jp->ps[jp->nprocs++]; ps->pid = pid; @@ -975,10 +1006,15 @@ dowait(int block, struct job *job) if (jp->state != state) { TRACE(("Job %d: changing state from %d to %d\n", jp - jobtab + 1, jp->state, state)); jp->state = state; + if (jp != job) { + if (done && !jp->remembered && + !iflag && jp != bgjob) + freejob(jp); #if JOBS - if (done) - deljob(jp); + else if (done) + deljob(jp); #endif + } } } } @@ -1074,6 +1110,21 @@ checkzombies(void) } +int +backgndpidset(void) +{ + return backgndpid != -1; +} + + +pid_t +backgndpidval(void) +{ + if (bgjob != NULL) + bgjob->remembered = 1; + return backgndpid; +} + /* * Return a string identifying a command (to be printed by the * jobs command. Modified: projects/ppc64/bin/sh/jobs.h ============================================================================== --- projects/ppc64/bin/sh/jobs.h Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/bin/sh/jobs.h Tue Jul 6 15:45:59 2010 (r209727) @@ -68,6 +68,7 @@ struct job { char used; /* true if this entry is in used */ char changed; /* true if status has changed */ char foreground; /* true if running in the foreground */ + char remembered; /* true if $! referenced */ #if JOBS char jobctl; /* job running under job control */ struct job *next; /* job used after this one */ @@ -81,7 +82,6 @@ enum { SHOWJOBS_PGIDS /* PID of the group leader only */ }; -extern pid_t backgndpid; /* pid of last background process */ extern int job_warning; /* user was warned about stopped jobs */ extern int in_waitcmd; /* are we in waitcmd()? */ extern int in_dowait; /* are we in dowait()? */ @@ -98,6 +98,8 @@ struct job *makejob(union node *, int); pid_t forkshell(struct job *, union node *, int); int waitforjob(struct job *, int *); int stoppedjobs(void); +int backgndpidset(void); +pid_t backgndpidval(void); char *commandtext(union node *); #if ! JOBS Modified: projects/ppc64/bin/sh/parser.c ============================================================================== --- projects/ppc64/bin/sh/parser.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/bin/sh/parser.c Tue Jul 6 15:45:59 2010 (r209727) @@ -1734,7 +1734,8 @@ getprompt(void *unused __unused) { static char ps[PROMPTLEN]; char *fmt; - int i, j, trim; + const char *pwd; + int i, trim; static char internal_error[] = "<internal prompt error>"; /* @@ -1785,17 +1786,15 @@ getprompt(void *unused __unused) */ case 'W': case 'w': - ps[i] = '\0'; - getcwd(&ps[i], PROMPTLEN - i); - if (*fmt == 'W' && ps[i + 1] != '\0') { - /* Final path component only. */ - trim = 1; - for (j = i; ps[j] != '\0'; j++) - if (ps[j] == '/') - trim = j + 1; - memmove(&ps[i], &ps[trim], - j - trim + 1); - } + pwd = lookupvar("PWD"); + if (pwd == NULL) + pwd = "?"; + if (*fmt == 'W' && + *pwd == '/' && pwd[1] != '\0') + strlcpy(&ps[i], strrchr(pwd, '/') + 1, + PROMPTLEN - i); + else + strlcpy(&ps[i], pwd, PROMPTLEN - i); /* Skip to end of path. */ while (ps[i + 1] != '\0') i++; Modified: projects/ppc64/bin/sh/sh.1 ============================================================================== --- projects/ppc64/bin/sh/sh.1 Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/bin/sh/sh.1 Tue Jul 6 15:45:59 2010 (r209727) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd May 24, 2010 +.Dd June 29, 2010 .Dt SH 1 .Os .Sh NAME @@ -1106,6 +1106,10 @@ command executed from the current shell. For a pipeline, the process ID is that of the last command in the pipeline. +If this parameter is referenced, the shell will remember +the process ID and its exit status until the +.Ic wait +built-in command reports completion of the process. .It Li $0 (zero) Expands to the name of the shell or shell script. .El Modified: projects/ppc64/etc/mtree/BSD.usr.dist ============================================================================== --- projects/ppc64/etc/mtree/BSD.usr.dist Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/etc/mtree/BSD.usr.dist Tue Jul 6 15:45:59 2010 (r209727) @@ -1231,15 +1231,15 @@ pc-sysinstall backend .. - backend-partmanager + backend-partmanager .. - backend-query + backend-query .. - conf + conf license - .. + .. .. - doc + doc .. .. security Modified: projects/ppc64/gnu/usr.bin/gdb/libgdb/fbsd-threads.c ============================================================================== --- projects/ppc64/gnu/usr.bin/gdb/libgdb/fbsd-threads.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/gnu/usr.bin/gdb/libgdb/fbsd-threads.c Tue Jul 6 15:45:59 2010 (r209727) @@ -1299,6 +1299,7 @@ fbsd_thread_signal_cmd (char *exp, int f td_thrhandle_t th; td_thrinfo_t ti; td_err_e err; + const char *code; if (!fbsd_thread_active || !IS_THREAD(inferior_ptid)) return; @@ -1315,6 +1316,42 @@ fbsd_thread_signal_cmd (char *exp, int f fbsd_print_sigset(&ti.ti_sigmask); printf_filtered("signal pending:\n"); fbsd_print_sigset(&ti.ti_pending); + if (ti.ti_siginfo.si_signo != 0) { + printf_filtered("si_signo %d si_errno %d", ti.ti_siginfo.si_signo, + ti.ti_siginfo.si_errno); + if (ti.ti_siginfo.si_errno != 0) + printf_filtered(" (%s)", strerror(ti.ti_siginfo.si_errno)); + printf_filtered("\n"); + switch (ti.ti_siginfo.si_code) { + case SI_NOINFO: + code = "NOINFO"; + break; + case SI_USER: + code = "USER"; + break; + case SI_QUEUE: + code = "QUEUE"; + break; + case SI_TIMER: + code = "TIMER"; + break; + case SI_ASYNCIO: + code = "ASYNCIO"; + break; + case SI_MESGQ: + code = "MESGQ"; + break; + case SI_KERNEL: + code = "KERNEL"; + break; + default: + code = "UNKNOWN"; + break; + } + printf_filtered("si_code %s si_pid %d si_uid %d si_status %x si_addr %p\n", + code, ti.ti_siginfo.si_pid, ti.ti_siginfo.si_uid, ti.ti_siginfo.si_status, + ti.ti_siginfo.si_addr); + } } static int Modified: projects/ppc64/include/arpa/inet.h ============================================================================== --- projects/ppc64/include/arpa/inet.h Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/include/arpa/inet.h Tue Jul 6 15:45:59 2010 (r209727) @@ -58,7 +58,7 @@ #ifndef _ARPA_INET_H_ #define _ARPA_INET_H_ -/* External definitions for functions in inet(3), addr2ascii(3) */ +/* External definitions for functions in inet(3). */ #include <sys/cdefs.h> #include <sys/_types.h> Modified: projects/ppc64/lib/libc/gmon/gmon.c ============================================================================== --- projects/ppc64/lib/libc/gmon/gmon.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libc/gmon/gmon.c Tue Jul 6 15:45:59 2010 (r209727) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include <err.h> #include <fcntl.h> +#include <inttypes.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -60,8 +61,8 @@ extern char *minbrk __asm ("minbrk"); struct gmonparam _gmonparam = { GMON_PROF_OFF }; static int s_scale; -/* see profil(2) where this is describe (incorrectly) */ -#define SCALE_1_TO_1 0x10000L +/* See profil(2) where this is described (incorrectly). */ +#define SCALE_SHIFT 16 #define ERR(s) _write(2, s, sizeof(s)) @@ -112,24 +113,8 @@ monstartup(lowpc, highpc) p->tos[0].link = 0; o = p->highpc - p->lowpc; - if (p->kcountsize < o) { -#ifndef hp300 - s_scale = ((float)p->kcountsize / o ) * SCALE_1_TO_1; -#else /* avoid floating point */ - int quot = o / p->kcountsize; - - if (quot >= 0x10000) - s_scale = 1; - else if (quot >= 0x100) - s_scale = 0x10000 / quot; - else if (o >= 0x800000) - s_scale = 0x1000000 / (o / (p->kcountsize >> 8)); - else - s_scale = 0x1000000 / ((o << 8) / p->kcountsize); -#endif - } else - s_scale = SCALE_1_TO_1; - + s_scale = (p->kcountsize < o) ? + ((uintmax_t)p->kcountsize << SCALE_SHIFT) / o : (1 << SCALE_SHIFT); moncontrol(1); } Modified: projects/ppc64/lib/libc/net/sctp_recvmsg.3 ============================================================================== --- projects/ppc64/lib/libc/net/sctp_recvmsg.3 Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libc/net/sctp_recvmsg.3 Tue Jul 6 15:45:59 2010 (r209727) @@ -146,14 +146,14 @@ The argument is defined as follows. .Bd -literal struct sctp_sndrcvinfo { - u_int16_t sinfo_stream; /* Stream arriving on */ - u_int16_t sinfo_ssn; /* Stream Sequence Number */ - u_int16_t sinfo_flags; /* Flags on the incoming message */ - u_int32_t sinfo_ppid; /* The ppid field */ - u_int32_t sinfo_context; /* context field */ - u_int32_t sinfo_timetolive; /* not used by sctp_recvmsg */ - u_int32_t sinfo_tsn; /* The transport sequence number */ - u_int32_t sinfo_cumtsn; /* The cumulative acknowledgment point */ + uint16_t sinfo_stream; /* Stream arriving on */ + uint16_t sinfo_ssn; /* Stream Sequence Number */ + uint16_t sinfo_flags; /* Flags on the incoming message */ + uint32_t sinfo_ppid; /* The ppid field */ + uint32_t sinfo_context; /* context field */ + uint32_t sinfo_timetolive; /* not used by sctp_recvmsg */ + uint32_t sinfo_tsn; /* The transport sequence number */ + uint32_t sinfo_cumtsn; /* The cumulative acknowledgment point */ sctp_assoc_t sinfo_assoc_id; /* The association id of the peer */ }; .Ed Modified: projects/ppc64/lib/libc/net/sctp_send.3 ============================================================================== --- projects/ppc64/lib/libc/net/sctp_send.3 Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libc/net/sctp_send.3 Tue Jul 6 15:45:59 2010 (r209727) @@ -94,14 +94,14 @@ structure is used to control various SCT and has the following format: .Bd -literal struct sctp_sndrcvinfo { - u_int16_t sinfo_stream; /* Stream sending to */ - u_int16_t sinfo_ssn; /* valid for recv only */ - u_int16_t sinfo_flags; /* flags to control sending */ - u_int32_t sinfo_ppid; /* ppid field */ - u_int32_t sinfo_context; /* context field */ - u_int32_t sinfo_timetolive; /* timetolive for PR-SCTP */ - u_int32_t sinfo_tsn; /* valid for recv only */ - u_int32_t sinfo_cumtsn; /* valid for recv only */ + uint16_t sinfo_stream; /* Stream sending to */ + uint16_t sinfo_ssn; /* valid for recv only */ + uint16_t sinfo_flags; /* flags to control sending */ + uint32_t sinfo_ppid; /* ppid field */ + uint32_t sinfo_context; /* context field */ + uint32_t sinfo_timetolive; /* timetolive for PR-SCTP */ + uint32_t sinfo_tsn; /* valid for recv only */ + uint32_t sinfo_cumtsn; /* valid for recv only */ sctp_assoc_t sinfo_assoc_id; /* The association id */ }; .Ed Modified: projects/ppc64/lib/libc/net/sctp_sys_calls.c ============================================================================== --- projects/ppc64/lib/libc/net/sctp_sys_calls.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libc/net/sctp_sys_calls.c Tue Jul 6 15:45:59 2010 (r209727) @@ -49,9 +49,9 @@ __FBSDID("$FreeBSD$"); #ifndef IN6_IS_ADDR_V4MAPPED #define IN6_IS_ADDR_V4MAPPED(a) \ - ((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ - (*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ - (*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) + ((*(const uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \ + (*(const uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \ + (*(const uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) #endif @@ -304,7 +304,7 @@ sctp_bindx(int sd, struct sockaddr *addr goto out_error; } - + sa = (struct sockaddr *)((caddr_t)sa + sz); } sa = addrs; /* @@ -533,11 +533,11 @@ sctp_sendmsg(int s, size_t len, const struct sockaddr *to, socklen_t tolen, - u_int32_t ppid, - u_int32_t flags, - u_int16_t stream_no, - u_int32_t timetolive, - u_int32_t context) + uint32_t ppid, + uint32_t flags, + uint16_t stream_no, + uint32_t timetolive, + uint32_t context) { #ifdef SYS_sctp_generic_sendmsg struct sctp_sndrcvinfo sinfo; @@ -814,11 +814,11 @@ sctp_sendmsgx(int sd, size_t len, struct sockaddr *addrs, int addrcnt, - u_int32_t ppid, - u_int32_t flags, - u_int16_t stream_no, - u_int32_t timetolive, - u_int32_t context) + uint32_t ppid, + uint32_t flags, + uint16_t stream_no, + uint32_t timetolive, + uint32_t context) { struct sctp_sndrcvinfo sinfo; Modified: projects/ppc64/lib/libc/posix1e/acl_from_text.c ============================================================================== --- projects/ppc64/lib/libc/posix1e/acl_from_text.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libc/posix1e/acl_from_text.c Tue Jul 6 15:45:59 2010 (r209727) @@ -271,9 +271,6 @@ error_label: * XXX NOT THREAD SAFE, RELIES ON GETPWNAM, GETGRNAM * XXX USES *PW* AND *GR* WHICH ARE STATEFUL AND THEREFORE THIS ROUTINE * MAY HAVE SIDE-EFFECTS - * - * XXX currently doesn't deal correctly with a numeric uid being passed - * instead of a username. What is correct behavior here? Check chown. */ static int _posix1e_acl_name_to_id(acl_tag_t tag, char *name, uid_t *id) Modified: projects/ppc64/lib/libfetch/http.c ============================================================================== --- projects/ppc64/lib/libfetch/http.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libfetch/http.c Tue Jul 6 15:45:59 2010 (r209727) @@ -1786,12 +1786,14 @@ http_request(struct url *URL, const char case hdr_www_authenticate: if (conn->err != HTTP_NEED_AUTH) break; - http_parse_authenticate(p, &server_challenges); + if (http_parse_authenticate(p, &server_challenges)) + ++n; break; case hdr_proxy_authenticate: if (conn->err != HTTP_NEED_PROXY_AUTH) break; - http_parse_authenticate(p, &proxy_challenges); + if (http_parse_authenticate(p, &proxy_challenges) == 0); + ++n; break; case hdr_end: /* fall through */ Modified: projects/ppc64/lib/libthread_db/Symbol.map ============================================================================== --- projects/ppc64/lib/libthread_db/Symbol.map Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libthread_db/Symbol.map Tue Jul 6 15:45:59 2010 (r209727) @@ -19,7 +19,6 @@ FBSD_1.0 { td_thr_dbsuspend; td_thr_event_enable; td_thr_event_getmsg; - td_thr_get_info; td_thr_getfpregs; td_thr_getgregs; #if defined(i386) @@ -33,3 +32,7 @@ FBSD_1.0 { td_thr_tls_get_addr; td_thr_validate; }; + +FBSD_1.2 { + td_thr_get_info; +}; Modified: projects/ppc64/lib/libthread_db/libpthread_db.c ============================================================================== --- projects/ppc64/lib/libthread_db/libpthread_db.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libthread_db/libpthread_db.c Tue Jul 6 15:45:59 2010 (r209727) @@ -570,7 +570,7 @@ pt_thr_validate(const td_thrhandle_t *th } static td_err_e -pt_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info) +pt_thr_old_get_info(const td_thrhandle_t *th, td_old_thrinfo_t *info) { const td_thragent_t *ta = th->th_ta; struct ptrace_lwpinfo linfo; @@ -659,6 +659,16 @@ pt_thr_get_info(const td_thrhandle_t *th return (0); } +static td_err_e +pt_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info) +{ + td_err_e e; + + e = pt_thr_old_get_info(th, (td_old_thrinfo_t *)info); + bzero(&info->ti_siginfo, sizeof(info->ti_siginfo)); + return (e); +} + #ifdef __i386__ static td_err_e pt_thr_getxmmregs(const td_thrhandle_t *th, char *fxsave) @@ -1114,6 +1124,7 @@ struct ta_ops libpthread_db_ops = { .to_thr_dbsuspend = pt_thr_dbsuspend, .to_thr_event_enable = pt_thr_event_enable, .to_thr_event_getmsg = pt_thr_event_getmsg, + .to_thr_old_get_info = pt_thr_old_get_info, .to_thr_get_info = pt_thr_get_info, .to_thr_getfpregs = pt_thr_getfpregs, .to_thr_getgregs = pt_thr_getgregs, Modified: projects/ppc64/lib/libthread_db/libthr_db.c ============================================================================== --- projects/ppc64/lib/libthread_db/libthr_db.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libthread_db/libthr_db.c Tue Jul 6 15:45:59 2010 (r209727) @@ -453,7 +453,7 @@ pt_thr_validate(const td_thrhandle_t *th } static td_err_e -pt_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info) +pt_thr_get_info_common(const td_thrhandle_t *th, td_thrinfo_t *info, int old) { const td_thragent_t *ta = th->th_ta; struct ptrace_lwpinfo linfo; @@ -489,6 +489,13 @@ pt_thr_get_info(const td_thrhandle_t *th if (ret == PS_OK) { info->ti_sigmask = linfo.pl_sigmask; info->ti_pending = linfo.pl_siglist; + if (!old) { + if ((linfo.pl_flags & PL_FLAG_SI) != 0) + info->ti_siginfo = linfo.pl_siginfo; + else + bzero(&info->ti_siginfo, + sizeof(info->ti_siginfo)); + } } else return (ret); if (state == ta->thread_state_running) @@ -501,6 +508,20 @@ pt_thr_get_info(const td_thrhandle_t *th return (0); } +static td_err_e +pt_thr_old_get_info(const td_thrhandle_t *th, td_old_thrinfo_t *info) +{ + + return (pt_thr_get_info_common(th, (td_thrinfo_t *)info, 1)); +} + +static td_err_e +pt_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info) +{ + + return (pt_thr_get_info_common(th, info, 0)); +} + #ifdef __i386__ static td_err_e pt_thr_getxmmregs(const td_thrhandle_t *th, char *fxsave) @@ -761,6 +782,7 @@ struct ta_ops libthr_db_ops = { .to_thr_dbsuspend = pt_thr_dbsuspend, .to_thr_event_enable = pt_thr_event_enable, .to_thr_event_getmsg = pt_thr_event_getmsg, + .to_thr_old_get_info = pt_thr_old_get_info, .to_thr_get_info = pt_thr_get_info, .to_thr_getfpregs = pt_thr_getfpregs, .to_thr_getgregs = pt_thr_getgregs, Modified: projects/ppc64/lib/libthread_db/thread_db.c ============================================================================== --- projects/ppc64/lib/libthread_db/thread_db.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libthread_db/thread_db.c Tue Jul 6 15:45:59 2010 (r209727) @@ -176,6 +176,14 @@ td_thr_event_getmsg(const td_thrhandle_t } td_err_e +td_thr_old_get_info(const td_thrhandle_t *th, td_old_thrinfo_t *info) +{ + const td_thragent_t *ta = th->th_ta; + return (ta->ta_ops->to_thr_old_get_info(th, info)); +} +__sym_compat(td_thr_get_info, td_thr_old_get_info, FBSD_1.0); + +td_err_e td_thr_get_info(const td_thrhandle_t *th, td_thrinfo_t *info) { const td_thragent_t *ta = th->th_ta; Modified: projects/ppc64/lib/libthread_db/thread_db.h ============================================================================== --- projects/ppc64/lib/libthread_db/thread_db.h Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libthread_db/thread_db.h Tue Jul 6 15:45:59 2010 (r209727) @@ -191,6 +191,7 @@ typedef struct { psaddr_t ti_startfunc; psaddr_t ti_stkbase; size_t ti_stksize; + siginfo_t ti_siginfo; } td_thrinfo_t; /* Modified: projects/ppc64/lib/libthread_db/thread_db_int.h ============================================================================== --- projects/ppc64/lib/libthread_db/thread_db_int.h Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/lib/libthread_db/thread_db_int.h Tue Jul 6 15:45:59 2010 (r209727) @@ -32,6 +32,25 @@ #include <sys/types.h> #include <sys/queue.h> +typedef struct { + const td_thragent_t *ti_ta_p; + thread_t ti_tid; + psaddr_t ti_thread; + td_thr_state_e ti_state; + td_thr_type_e ti_type; + td_thr_events_t ti_events; + int ti_pri; + lwpid_t ti_lid; + char ti_db_suspended; + char ti_traceme; + sigset_t ti_sigmask; + sigset_t ti_pending; + psaddr_t ti_tls; + psaddr_t ti_startfunc; + psaddr_t ti_stkbase; + size_t ti_stksize; +} td_old_thrinfo_t; + #define TD_THRAGENT_FIELDS \ struct ta_ops *ta_ops; \ TAILQ_ENTRY(td_thragent) ta_next; \ @@ -65,6 +84,8 @@ struct ta_ops { td_err_e (*to_thr_event_enable)(const td_thrhandle_t *, int); td_err_e (*to_thr_event_getmsg)(const td_thrhandle_t *, td_event_msg_t *); + td_err_e (*to_thr_old_get_info)(const td_thrhandle_t *, + td_old_thrinfo_t *); td_err_e (*to_thr_get_info)(const td_thrhandle_t *, td_thrinfo_t *); td_err_e (*to_thr_getfpregs)(const td_thrhandle_t *, prfpregset_t *); td_err_e (*to_thr_getgregs)(const td_thrhandle_t *, prgregset_t); @@ -103,4 +124,6 @@ int thr_pwrite_int(const struct td_thrag int thr_pwrite_long(const struct td_thragent *, psaddr_t, uint64_t); int thr_pwrite_ptr(const struct td_thragent *, psaddr_t, psaddr_t); +td_err_e td_thr_old_get_info(const td_thrhandle_t *th, td_old_thrinfo_t *info); + #endif /* _THREAD_DB_INT_H_ */ Modified: projects/ppc64/libexec/rtld-elf/rtld.c ============================================================================== --- projects/ppc64/libexec/rtld-elf/rtld.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/libexec/rtld-elf/rtld.c Tue Jul 6 15:45:59 2010 (r209727) @@ -3443,13 +3443,9 @@ locate_dependency(const Obj_Entry *obj, if (object_match_name(needed->obj, name)) return needed->obj; } - - /* - * GNU LD sometimes refers to version dependencies on objects to which - * it does not actually link. Treat this as a non-fatal error, and - * ignore this dependency. - */ - return NULL; + _rtld_error("%s: Unexpected inconsistency: dependency %s not found", + obj->path, name); + die(); } static int @@ -3571,9 +3567,6 @@ 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) - break; - vna = (const Elf_Vernaux *) ((char *)vn + vn->vn_aux); for (;;) { if (check_object_provided_version(obj, depobj, vna)) Modified: projects/ppc64/sbin/bsdlabel/bsdlabel.c ============================================================================== --- projects/ppc64/sbin/bsdlabel/bsdlabel.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/sbin/bsdlabel/bsdlabel.c Tue Jul 6 15:45:59 2010 (r209727) @@ -347,7 +347,7 @@ makelabel(const char *type, struct diskl static void readboot(void) { - int fd, i; + int fd; struct stat st; uint64_t *p; @@ -358,8 +358,7 @@ readboot(void) err(1, "cannot open %s", xxboot); fstat(fd, &st); if (alphacksum && st.st_size <= BBSIZE - 512) { - i = read(fd, bootarea + 512, st.st_size); - if (i != st.st_size) + if (read(fd, bootarea + 512, st.st_size) != st.st_size) err(1, "read error %s", xxboot); /* @@ -372,8 +371,7 @@ readboot(void) p[62] = 0; return; } else if ((!alphacksum) && st.st_size <= BBSIZE) { - i = read(fd, bootarea, st.st_size); - if (i != st.st_size) + if (read(fd, bootarea, st.st_size) != st.st_size) err(1, "read error %s", xxboot); return; } @@ -479,6 +477,7 @@ get_file_parms(int f) static int readlabel(int flag) { + ssize_t nbytes; uint32_t lba; int f, i; int error; @@ -498,8 +497,11 @@ readlabel(int flag) errx(1, "disks with more than 2^32-1 sectors are not supported"); (void)lseek(f, (off_t)0, SEEK_SET); - if (read(f, bootarea, BBSIZE) != BBSIZE) + nbytes = read(f, bootarea, BBSIZE); + if (nbytes == -1) err(4, "%s read", specname); + if (nbytes != BBSIZE) + errx(4, "couldn't read %d bytes from %s", BBSIZE, specname); close (f); error = bsd_disklabel_le_dec( bootarea + (labeloffset + labelsoffset * secsize), Modified: projects/ppc64/sbin/camcontrol/camcontrol.8 ============================================================================== --- projects/ppc64/sbin/camcontrol/camcontrol.8 Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/sbin/camcontrol/camcontrol.8 Tue Jul 6 15:45:59 2010 (r209727) @@ -27,7 +27,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 2, 2010 +.Dd July 1, 2010 .Dt CAMCONTROL 8 .Os .Sh NAME @@ -846,11 +846,13 @@ will not be asked about the timeout if a command line. .El .It Ic idle -Put ATA device into IDLE state. Optional parameter specifies automatic -idle timer value in seconds. +Put ATA device into IDLE state. Optional parameter +.Pq Fl t +specifies automatic standby timer value in seconds. Value 0 disables timer. .It Ic standby -Put ATA device into STANDBY state. Optional parameter specifies automatic -standby timer value in seconds. +Put ATA device into STANDBY state. Optional parameter +.Pq Fl t +specifies automatic standby timer value in seconds. Value 0 disables timer. .It Ic sleep Put ATA device into SLEEP state. Note that the only way get device out of this state may be reset. Modified: projects/ppc64/sbin/devd/devd.cc ============================================================================== --- projects/ppc64/sbin/devd/devd.cc Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/sbin/devd/devd.cc Tue Jul 6 15:45:59 2010 (r209727) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2002-2003 M. Warner Losh. + * Copyright (c) 2002-2010 M. Warner Losh. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -22,6 +22,35 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. + * + * my_system is a variation on lib/libc/stdlib/system.c: + * + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. */ /* @@ -41,6 +70,7 @@ __FBSDID("$FreeBSD$"); #include <sys/stat.h> #include <sys/sysctl.h> #include <sys/types.h> +#include <sys/wait.h> #include <sys/un.h> #include <ctype.h> @@ -49,6 +79,7 @@ __FBSDID("$FreeBSD$"); #include <err.h> #include <fcntl.h> #include <libutil.h> +#include <paths.h> #include <regex.h> #include <signal.h> #include <stdlib.h> @@ -152,13 +183,67 @@ action::~action() // nothing } +static int +my_system(const char *command) +{ + pid_t pid, savedpid; + int pstat; + struct sigaction ign, intact, quitact; + sigset_t newsigblock, oldsigblock; + + if (!command) /* just checking... */ + return(1); + + /* + * Ignore SIGINT and SIGQUIT, block SIGCHLD. Remember to save + * existing signal dispositions. + */ + ign.sa_handler = SIG_IGN; + ::sigemptyset(&ign.sa_mask); + ign.sa_flags = 0; + ::sigaction(SIGINT, &ign, &intact); + ::sigaction(SIGQUIT, &ign, &quitact); + ::sigemptyset(&newsigblock); + ::sigaddset(&newsigblock, SIGCHLD); + ::sigprocmask(SIG_BLOCK, &newsigblock, &oldsigblock); + switch (pid = ::fork()) { + case -1: /* error */ + break; + case 0: /* child */ + /* + * Restore original signal dispositions and exec the command. + */ + ::sigaction(SIGINT, &intact, NULL); + ::sigaction(SIGQUIT, &quitact, NULL); + ::sigprocmask(SIG_SETMASK, &oldsigblock, NULL); + /* + * Close the PID file, and all other open descriptors. + * Inherit std{in,out,err} only. + */ + cfg.close_pidfile(); + ::closefrom(3); + ::execl(_PATH_BSHELL, "sh", "-c", command, (char *)NULL); + ::_exit(127); + default: /* parent */ + savedpid = pid; + do { + pid = ::wait4(savedpid, &pstat, 0, (struct rusage *)0); + } while (pid == -1 && errno == EINTR); + break; + } + ::sigaction(SIGINT, &intact, NULL); + ::sigaction(SIGQUIT, &quitact, NULL); + ::sigprocmask(SIG_SETMASK, &oldsigblock, NULL); + return (pid == -1 ? -1 : pstat); +} + bool action::do_action(config &c) { string s = c.expand_string(_cmd); if (Dflag) fprintf(stderr, "Executing '%s'\n", s.c_str()); - ::system(s.c_str()); + my_system(s.c_str()); return (true); } @@ -391,6 +476,13 @@ config::write_pidfile() } void +config::close_pidfile() +{ + + pidfile_close(pfh); +} + +void config::remove_pidfile() { Modified: projects/ppc64/sbin/devd/devd.hh ============================================================================== --- projects/ppc64/sbin/devd/devd.hh Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/sbin/devd/devd.hh Tue Jul 6 15:45:59 2010 (r209727) @@ -153,6 +153,7 @@ public: void set_pidfile(const char *); void reset(); void parse(); + void close_pidfile(); void open_pidfile(); void write_pidfile(); void remove_pidfile(); Modified: projects/ppc64/sbin/fsck_ffs/suj.c ============================================================================== --- projects/ppc64/sbin/fsck_ffs/suj.c Tue Jul 6 15:38:38 2010 (r209726) +++ projects/ppc64/sbin/fsck_ffs/suj.c Tue Jul 6 15:45:59 2010 (r209727) @@ -808,6 +808,44 @@ blk_isat(ino_t ino, ufs_lbn_t lbn, ufs2_ } /* + * Clear the directory entry at diroff that should point to child. Minimal + * checking is done and it is assumed that this path was verified with isat. + */ +static void +ino_clrat(ino_t parent, off_t diroff, ino_t child) +{ + union dinode *dip; + struct direct *dp; + ufs2_daddr_t blk; + uint8_t *block; + ufs_lbn_t lbn; + int blksize; + int frags; + int doff; + *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201007061545.o66FjxYB012938>