PERFORCE change 171108 for review
Alexander Motin
mav at FreeBSD.org
Fri Nov 27 20:41:50 UTC 2009
http://p4web.freebsd.org/chv.cgi?CH=171108
Change 171108 by mav at mav_mavbook on 2009/11/27 20:41:27
IFC
Affected files ...
.. //depot/projects/scottl-camlock/src/include/signal.h#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/compat-43/Makefile.inc#2 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/compat-43/Symbol.map#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/compat-43/sigcompat.c#2 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/compat-43/sigpause.2#2 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/gen/exec.c#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/gen/fts.3#4 integrate
.. //depot/projects/scottl-camlock/src/lib/libc/gen/fts.c#4 integrate
.. //depot/projects/scottl-camlock/src/lib/libthr/Makefile#3 integrate
.. //depot/projects/scottl-camlock/src/lib/libutil/pw_util.c#2 integrate
.. //depot/projects/scottl-camlock/src/libexec/rtld-elf/rtld.c#8 integrate
.. //depot/projects/scottl-camlock/src/libexec/rtld-elf/rtld.h#6 integrate
.. //depot/projects/scottl-camlock/src/sbin/atacontrol/atacontrol.c#5 integrate
.. //depot/projects/scottl-camlock/src/share/man/man4/mfi.4#6 integrate
.. //depot/projects/scottl-camlock/src/share/man/man4/sctp.4#3 integrate
.. //depot/projects/scottl-camlock/src/share/misc/bsd-family-tree#6 integrate
.. //depot/projects/scottl-camlock/src/sys/amd64/amd64/trap.c#24 integrate
.. //depot/projects/scottl-camlock/src/sys/arm/arm/trap.c#14 integrate
.. //depot/projects/scottl-camlock/src/sys/boot/forth/loader.conf.5#7 integrate
.. //depot/projects/scottl-camlock/src/sys/boot/i386/libi386/Makefile#10 integrate
.. //depot/projects/scottl-camlock/src/sys/boot/i386/libi386/spinconsole.c#1 branch
.. //depot/projects/scottl-camlock/src/sys/boot/i386/libi386/vidconsole.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/boot/i386/loader/conf.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/boot/pc98/loader/conf.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/conf/files#57 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.c#41 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/cxgb/ulp/tom/cxgb_vm.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/sound/pci/hda/hdac.c#21 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/i386/trap.c#21 integrate
.. //depot/projects/scottl-camlock/src/sys/i386/xen/exception.s#2 integrate
.. //depot/projects/scottl-camlock/src/sys/ia64/ia64/trap.c#17 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/mips/trap.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/modules/ata/atausb/Makefile#3 delete
.. //depot/projects/scottl-camlock/src/sys/netinet/sctp_constants.h#11 integrate
.. //depot/projects/scottl-camlock/src/sys/powerpc/aim/trap.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/powerpc/booke/trap.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/sparc64/sparc64/trap.c#16 integrate
.. //depot/projects/scottl-camlock/src/sys/sun4v/sun4v/trap.c#8 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/ata.h#16 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/elf_common.h#11 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/signal.h#7 integrate
.. //depot/projects/scottl-camlock/src/sys/sys/signalvar.h#15 integrate
.. //depot/projects/scottl-camlock/src/sys/vm/vm_fault.c#29 integrate
.. //depot/projects/scottl-camlock/src/sys/vm/vm_map.h#12 integrate
.. //depot/projects/scottl-camlock/src/usr.bin/unifdef/unifdef.c#4 integrate
.. //depot/projects/scottl-camlock/src/usr.bin/unifdef/unifdefall.sh#3 integrate
Differences ...
==== //depot/projects/scottl-camlock/src/include/signal.h#3 (text+ko) ====
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)signal.h 8.3 (Berkeley) 3/30/94
- * $FreeBSD: src/include/signal.h,v 1.30 2009/04/17 14:19:18 das Exp $
+ * $FreeBSD: src/include/signal.h,v 1.31 2009/11/26 13:49:37 kib Exp $
*/
#ifndef _SIGNAL_H_
@@ -99,7 +99,12 @@
#if __XSI_VISIBLE
int killpg(__pid_t, int);
int sigaltstack(const stack_t * __restrict, stack_t * __restrict);
-int sigpause(int);
+int sighold(int sig);
+int sigignore(int sig);
+int sigpause(int sigmask);
+int sigrelse(int sig);
+void (*sigset(int sig, void (*disp)(int)))(int);
+int xsi_sigpause(int sig);
#endif
#if __XSI_VISIBLE >= 600
==== //depot/projects/scottl-camlock/src/lib/libc/compat-43/Makefile.inc#2 (text+ko) ====
@@ -1,5 +1,5 @@
# @(#)Makefile.inc 8.1 (Berkeley) 6/2/93
-# $FreeBSD: src/lib/libc/compat-43/Makefile.inc,v 1.13 2006/03/13 01:14:55 deischen Exp $
+# $FreeBSD: src/lib/libc/compat-43/Makefile.inc,v 1.14 2009/11/26 13:49:37 kib Exp $
# compat-43 sources
.PATH: ${.CURDIR}/${MACHINE_ARCH}/compat-43 ${.CURDIR}/compat-43
@@ -13,6 +13,11 @@
MAN+= gethostid.3 setruid.3
MLINKS+=gethostid.3 sethostid.3
+MLINKS+=sigpause.2 sighold.2
+MLINKS+=sigpause.2 sigignore.2
+MLINKS+=sigpause.2 sigrelse.2
+MLINKS+=sigpause.2 sigset.2
+MLINKS+=sigpause.2 xsi_sigpause.2
MLINKS+=setruid.3 setrgid.3
MLINKS+=sigsetmask.2 sigblock.2
==== //depot/projects/scottl-camlock/src/lib/libc/compat-43/Symbol.map#3 (text) ====
@@ -1,5 +1,5 @@
/*
- * $FreeBSD: src/lib/libc/compat-43/Symbol.map,v 1.2 2007/04/29 14:05:16 deischen Exp $
+ * $FreeBSD: src/lib/libc/compat-43/Symbol.map,v 1.3 2009/11/26 13:49:37 kib Exp $
*/
FBSD_1.0 {
@@ -17,6 +17,14 @@
sigvec;
};
+FBSD_1.2 {
+ sighold;
+ sigignore;
+ sigrelse;
+ sigset;
+ xsi_sigpause;
+};
+
FBSDprivate_1.0 {
__creat;
_creat;
==== //depot/projects/scottl-camlock/src/lib/libc/compat-43/sigcompat.c#2 (text+ko) ====
@@ -31,11 +31,12 @@
static char sccsid[] = "@(#)sigcompat.c 8.1 (Berkeley) 6/2/93";
#endif /* LIBC_SCCS and not lint */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/compat-43/sigcompat.c,v 1.11 2007/01/09 00:27:49 imp Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/compat-43/sigcompat.c,v 1.12 2009/11/26 13:49:37 kib Exp $");
#include "namespace.h"
#include <sys/param.h>
#include <signal.h>
+#include <string.h>
#include "un-namespace.h"
#include "libc_private.h"
@@ -97,8 +98,7 @@
}
int
-sigpause(mask)
- int mask;
+sigpause(int mask)
{
sigset_t set;
@@ -106,3 +106,84 @@
set.__bits[0] = mask;
return (_sigsuspend(&set));
}
+
+int
+xsi_sigpause(int sig)
+{
+ sigset_t set;
+
+ sigemptyset(&set);
+ sigaddset(&set, sig);
+ return (_sigsuspend(&set));
+}
+
+int
+sighold(int sig)
+{
+ sigset_t set;
+
+ sigemptyset(&set);
+ sigaddset(&set, sig);
+ return (_sigprocmask(SIG_BLOCK, &set, NULL));
+}
+
+int
+sigignore(int sig)
+{
+ struct sigaction sa;
+
+ bzero(&sa, sizeof(sa));
+ sa.sa_handler = SIG_IGN;
+ return (_sigaction(sig, &sa, NULL));
+}
+
+int
+sigrelse(int sig)
+{
+ sigset_t set;
+
+ sigemptyset(&set);
+ sigaddset(&set, sig);
+ return (_sigprocmask(SIG_UNBLOCK, &set, NULL));
+}
+
+void
+(*sigset(int sig, void (*disp)(int)))(int)
+{
+ sigset_t set, pset;
+ struct sigaction sa, psa;
+ int error;
+
+ sigemptyset(&set);
+ sigaddset(&set, sig);
+ error = _sigprocmask(SIG_BLOCK, NULL, &pset);
+ if (error == -1)
+ return (SIG_ERR);
+ if ((__sighandler_t *)disp == SIG_HOLD) {
+ error = _sigprocmask(SIG_BLOCK, &set, &pset);
+ if (error == -1)
+ return (SIG_ERR);
+ if (sigismember(&pset, sig))
+ return (SIG_HOLD);
+ else {
+ error = _sigaction(sig, NULL, &psa);
+ if (error == -1)
+ return (SIG_ERR);
+ return (psa.sa_handler);
+ }
+ } else {
+ error = _sigprocmask(SIG_UNBLOCK, &set, &pset);
+ if (error == -1)
+ return (SIG_ERR);
+ }
+
+ bzero(&sa, sizeof(sa));
+ sa.sa_handler = disp;
+ error = _sigaction(sig, &sa, &psa);
+ if (error == -1)
+ return (SIG_ERR);
+ if (sigismember(&pset, sig))
+ return (SIG_HOLD);
+ else
+ return (psa.sa_handler);
+}
==== //depot/projects/scottl-camlock/src/lib/libc/compat-43/sigpause.2#2 (text+ko) ====
@@ -26,23 +26,120 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)sigpause.2 8.1 (Berkeley) 6/2/93
-.\" $FreeBSD: src/lib/libc/compat-43/sigpause.2,v 1.14 2007/01/09 00:27:49 imp Exp $
+.\" $FreeBSD: src/lib/libc/compat-43/sigpause.2,v 1.15 2009/11/26 13:49:37 kib Exp $
+.\"
+.\" Part of the content of the man page was derived from
+.\" The Open Group Base Specifications Issue 7
+.\" IEEE Std 1003.1-2008
.\"
.Dd June 2, 1993
.Dt SIGPAUSE 2
.Os
.Sh NAME
-.Nm sigpause
-.Nd atomically release blocked signals and wait for interrupt
+.Nm sighold ,
+.Nm sigignore ,
+.Nm sigpause ,
+.Nm sigrelse ,
+.Nm sigset
+.Nd legacy interface for signal management
.Sh LIBRARY
.Lb libc
.Sh SYNOPSIS
.In signal.h
.Ft int
+.Fn sighold "int sig"
+.Ft int
+.Fn sigignore "int sig"
+.Ft int
+.Fn xsi_sigpause "int sigmask"
+.Ft int
+.Fn sigrelse "int sig"
+.Ft void (*)(int)
+.Fn sigset "int" "void (*disp)(int)"
+.Ft int
.Fn sigpause "int sigmask"
.Sh DESCRIPTION
.Sy This interface is made obsolete by
-.Xr sigsuspend 2 .
+.Xr sigsuspend 2
+.Sy and
+.Xr sigaction 2
+.Pp
+The
+.Fn sigset
+function modifies signal dispositions.
+The
+.Fa sig
+argument specifies the signal, which may be any signal except
+.Dv SIGKILL
+and
+.Dv SIGSTOP .
+The
+.Fa disp
+argument specifies the signal's disposition,
+which may be
+.Dv SIG_DFL ,
+.Dv SIG_IGN ,
+or the address of a signal handler.
+If
+.Fn sigset
+is used, and
+.Fa disp
+is the address of a signal handler, the
+system adds
+.Fa sig
+to the signal mask of the calling process before executing the signal
+handler; when the signal handler returns, the system restores the
+signal mask of the calling process to its state prior to the delivery
+of the signal.
+In addition, if
+.Fn sigset
+is used, and
+.Fa disp
+is equal to
+.Dv SIG_HOLD ,
+.Fa sig
+is added to the signal
+mask of the calling process and
+.Fa sig 's
+disposition remains unchanged.
+If
+.Fn sigset
+is used, and
+.Fa disp
+is not equal to
+.Dv SIG_HOLD ,
+.Fa sig
+is removed from the signal mask of the calling process.
+.Pp
+The
+.Fn sighold
+function adds
+.Fa sig
+to the signal mask of the calling process.
+.Pp
+The
+.Fn sigrelse
+function removes
+.Fa sig
+from the signal mask of the calling process.
+.Pp
+The
+.Fn sigignore
+function sets the disposition of
+.Fa sig
+to
+.Dv SIG_IGN .
+.Pp
+The
+.Fn xsi_sigpause
+function removes
+.Fa sig
+from the signal mask of the calling process and suspend the calling process
+until a signal is received.
+The
+.Fn xsi_sigpause
+function restores the signal mask of the process to its original state before
+returning.
.Pp
The
.Fn sigpause
@@ -57,13 +154,47 @@
argument
is usually 0 to indicate that no
signals are to be blocked.
+.Sh RETURN VALUES
The
.Fn sigpause
-function
-always terminates by being interrupted, returning -1 with
+and
+.Fn xsi_sigpause
+functions
+always terminate by being interrupted, returning -1 with
.Va errno
set to
-.Er EINTR
+.Er EINTR .
+.Pp
+Upon successful completion,
+.Fn sigset
+returns
+.Dv SIG_HOLD
+if the signal had been blocked and the signal's previous disposition if
+it had not been blocked.
+Otherwise,
+.Dv SIG_ERR is returned and
+.Va errno
+set to indicate the error.
+.Pp
+For all other functions, upon successful completion, 0 is returned.
+Otherwise, -1 is returned and
+.Va errno
+is set to indicate the error:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The
+.Fa sig
+argument
+is not a valid signal number.
+.It Bq Er EINVAL
+For
+.Fn sigset
+and
+.Fn sigignore
+functions, an attempt was made to catch or ignore
+.Dv SIGKILL
+or
+.Dv SIGSTOP .
.Sh SEE ALSO
.Xr kill 2 ,
.Xr sigaction 2 ,
@@ -85,9 +216,26 @@
.Pq Tn XSI
option of
.St -p1003.1-2001 .
+.Fx
+implements it under the name
+.Fn xsi_sigpause .
+The
+.Fn sighold ,
+.Fn sigignore ,
+.Fn sigrelse
+and
+.Fn sigset
+functions are implemented for compatibility with
+.Sy System V
+and
+.Sy XSI
+interfaces.
.Sh HISTORY
The
.Fn sigpause
function appeared in
.Bx 4.2
and has been deprecated.
+All other functions appeared in
+.Fx 9.0
+and were deprecated before being implemented.
==== //depot/projects/scottl-camlock/src/lib/libc/gen/exec.c#3 (text+ko) ====
@@ -31,7 +31,7 @@
static char sccsid[] = "@(#)exec.c 8.1 (Berkeley) 6/4/93";
#endif /* LIBC_SCCS and not lint */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/gen/exec.c,v 1.25 2008/06/23 05:22:06 ed Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/gen/exec.c,v 1.26 2009/11/27 13:05:14 ed Exp $");
#include "namespace.h"
#include <sys/param.h>
@@ -209,7 +209,7 @@
bcopy(name, buf + lp + 1, ln);
buf[lp + ln + 1] = '\0';
-retry: (void)_execve(bp, argv, environ);
+retry: (void)_execve(bp, argv, envp);
switch (errno) {
case E2BIG:
goto done;
@@ -228,7 +228,7 @@
memp[0] = "sh";
memp[1] = bp;
bcopy(argv + 1, memp + 2, cnt * sizeof(char *));
- (void)_execve(_PATH_BSHELL, memp, environ);
+ (void)_execve(_PATH_BSHELL, memp, envp);
goto done;
case ENOMEM:
goto done;
==== //depot/projects/scottl-camlock/src/lib/libc/gen/fts.3#4 (text+ko) ====
@@ -26,9 +26,9 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)fts.3 8.5 (Berkeley) 4/16/94
-.\" $FreeBSD: src/lib/libc/gen/fts.3,v 1.25 2009/10/05 21:11:04 delphij Exp $
+.\" $FreeBSD: src/lib/libc/gen/fts.3,v 1.26 2009/11/26 19:09:10 jh Exp $
.\"
-.Dd October 5, 2009
+.Dd November 25, 2009
.Dt FTS 3
.Os
.Sh NAME
@@ -198,10 +198,9 @@
The contents of the
.Vt FTSENT
structure will be unchanged from when
-it was returned in pre-order, i.e., with the
+the directory was visited in pre-order, except for the
.Fa fts_info
-field set to
-.Dv FTS_D .
+field.
.It Dv FTS_ERR
This is an error return, and the
.Fa fts_errno
==== //depot/projects/scottl-camlock/src/lib/libc/gen/fts.c#4 (text+ko) ====
@@ -36,7 +36,7 @@
#endif
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/gen/fts.c,v 1.31 2009/10/05 21:11:04 delphij Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/gen/fts.c,v 1.32 2009/11/26 19:11:44 jh Exp $");
#include "namespace.h"
#include <sys/param.h>
@@ -842,11 +842,8 @@
* If not changing directories, reset the path back to original
* state.
*/
- if (ISSET(FTS_NOCHDIR)) {
- if (len == sp->fts_pathlen || nitems == 0)
- --cp;
- *cp = '\0';
- }
+ if (ISSET(FTS_NOCHDIR))
+ sp->fts_path[cur->fts_pathlen] = '\0';
/*
* If descended after called from fts_children or after called from
==== //depot/projects/scottl-camlock/src/lib/libthr/Makefile#3 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/lib/libthr/Makefile,v 1.40 2009/03/31 02:50:18 davidxu Exp $
+# $FreeBSD: src/lib/libthr/Makefile,v 1.41 2009/11/26 14:01:14 kib Exp $
#
# All library objects contain FreeBSD revision strings by default; they may be
# excluded as a space-saving measure. To produce a library that does
@@ -25,7 +25,7 @@
CFLAGS+=-I${.CURDIR}/../../libexec/rtld-elf/${MACHINE_ARCH}
CFLAGS+=-I${.CURDIR}/../libthread_db
CFLAGS+=-Winline
-LDFLAGS+=-Wl,-znodelete
+LDFLAGS+=-Wl,-znodelete -Wl,-znodlopen
VERSION_DEF=${.CURDIR}/../libc/Versions.def
SYMBOL_MAPS=${.CURDIR}/pthread.map
==== //depot/projects/scottl-camlock/src/lib/libutil/pw_util.c#2 (text+ko) ====
@@ -39,7 +39,7 @@
static const char sccsid[] = "@(#)pw_util.c 8.3 (Berkeley) 4/2/94";
#endif
static const char rcsid[] =
- "$FreeBSD: src/lib/libutil/pw_util.c,v 1.38 2007/01/09 01:02:05 imp Exp $";
+ "$FreeBSD: src/lib/libutil/pw_util.c,v 1.39 2009/11/26 13:41:15 kib Exp $";
#endif /* not lint */
/*
@@ -289,7 +289,7 @@
pw_edit(int notsetuid)
{
struct sigaction sa, sa_int, sa_quit;
- sigset_t oldsigset, sigset;
+ sigset_t oldsigset, nsigset;
struct stat st1, st2;
const char *editor;
int pstat;
@@ -303,9 +303,9 @@
sa.sa_flags = 0;
sigaction(SIGINT, &sa, &sa_int);
sigaction(SIGQUIT, &sa, &sa_quit);
- sigemptyset(&sigset);
- sigaddset(&sigset, SIGCHLD);
- sigprocmask(SIG_BLOCK, &sigset, &oldsigset);
+ sigemptyset(&nsigset);
+ sigaddset(&nsigset, SIGCHLD);
+ sigprocmask(SIG_BLOCK, &nsigset, &oldsigset);
switch ((editpid = fork())) {
case -1:
return (-1);
==== //depot/projects/scottl-camlock/src/libexec/rtld-elf/rtld.c#8 (text+ko) ====
@@ -23,7 +23,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/libexec/rtld-elf/rtld.c,v 1.141 2009/11/14 15:08:44 rwatson Exp $
+ * $FreeBSD: src/libexec/rtld-elf/rtld.c,v 1.143 2009/11/26 13:57:20 kib Exp $
*/
/*
@@ -87,7 +87,7 @@
static void digest_dynamic(Obj_Entry *, int);
static Obj_Entry *digest_phdr(const Elf_Phdr *, int, caddr_t, const char *);
static Obj_Entry *dlcheck(void *);
-static Obj_Entry *do_load_object(int, const char *, char *, struct stat *);
+static Obj_Entry *do_load_object(int, const char *, char *, struct stat *, int);
static int do_search_info(const Obj_Entry *obj, int, struct dl_serinfo *);
static bool donelist_check(DoneList *, const Obj_Entry *);
static void errmsg_restore(char *);
@@ -103,7 +103,7 @@
static bool is_exported(const Elf_Sym *);
static void linkmap_add(Obj_Entry *);
static void linkmap_delete(Obj_Entry *);
-static int load_needed_objects(Obj_Entry *);
+static int load_needed_objects(Obj_Entry *, int);
static int load_preload_objects(void);
static Obj_Entry *load_object(const char *, const Obj_Entry *, int);
static Obj_Entry *obj_from_addr(const void *);
@@ -485,7 +485,7 @@
preload_tail = obj_tail;
dbg("loading needed objects");
- if (load_needed_objects(obj_main) == -1)
+ if (load_needed_objects(obj_main, 0) == -1)
die();
/* Make a list of all objects loaded at startup. */
@@ -898,7 +898,7 @@
#endif
case DT_FLAGS:
- if ((dynp->d_un.d_val & DF_1_ORIGIN) && trust)
+ if ((dynp->d_un.d_val & DF_ORIGIN) && trust)
obj->z_origin = true;
if (dynp->d_un.d_val & DF_SYMBOLIC)
obj->symbolic = true;
@@ -932,6 +932,8 @@
#endif
case DT_FLAGS_1:
+ if (dynp->d_un.d_val & DF_1_NOOPEN)
+ obj->z_noopen = true;
if ((dynp->d_un.d_val & DF_1_ORIGIN) && trust)
obj->z_origin = true;
if (dynp->d_un.d_val & DF_1_GLOBAL)
@@ -1425,7 +1427,7 @@
* returns -1 on failure.
*/
static int
-load_needed_objects(Obj_Entry *first)
+load_needed_objects(Obj_Entry *first, int flags)
{
Obj_Entry *obj, *obj1;
@@ -1434,7 +1436,7 @@
for (needed = obj->needed; needed != NULL; needed = needed->next) {
obj1 = needed->obj = load_object(obj->strtab + needed->name, obj,
- false);
+ flags & ~RTLD_LO_NOLOAD);
if (obj1 == NULL && !ld_tracing)
return -1;
if (obj1 != NULL && obj1->z_nodelete && !obj1->ref_nodel) {
@@ -1465,7 +1467,7 @@
savech = p[len];
p[len] = '\0';
- if (load_object(p, NULL, false) == NULL)
+ if (load_object(p, NULL, 0) == NULL)
return -1; /* XXX - cleanup */
p[len] = savech;
p += len;
@@ -1482,7 +1484,7 @@
* on failure.
*/
static Obj_Entry *
-load_object(const char *name, const Obj_Entry *refobj, int noload)
+load_object(const char *name, const Obj_Entry *refobj, int flags)
{
Obj_Entry *obj;
int fd = -1;
@@ -1528,11 +1530,11 @@
close(fd);
return obj;
}
- if (noload)
+ if (flags & RTLD_LO_NOLOAD)
return (NULL);
/* First use of this object, so we must map it in */
- obj = do_load_object(fd, name, path, &sb);
+ obj = do_load_object(fd, name, path, &sb, flags);
if (obj == NULL)
free(path);
close(fd);
@@ -1541,7 +1543,8 @@
}
static Obj_Entry *
-do_load_object(int fd, const char *name, char *path, struct stat *sbp)
+do_load_object(int fd, const char *name, char *path, struct stat *sbp,
+ int flags)
{
Obj_Entry *obj;
struct statfs fs;
@@ -1568,6 +1571,13 @@
object_add_name(obj, name);
obj->path = path;
digest_dynamic(obj, 0);
+ if (obj->z_noopen && (flags & RTLD_LO_DLOPEN)) {
+ dbg("refusing to load non-loadable \"%s\"", obj->path);
+ _rtld_error("Cannot dlopen non-loadable %s\n", obj->path);
+ munmap(obj->mapbase, obj->mapsize);
+ obj_free(obj);
+ return (NULL);
+ }
*obj_tail = obj;
obj_tail = &obj->next;
@@ -1986,14 +1996,16 @@
Obj_Entry **old_obj_tail;
Obj_Entry *obj;
Objlist initlist;
- int result, lockstate, nodelete, noload;
+ int result, lockstate, nodelete, lo_flags;
LD_UTRACE(UTRACE_DLOPEN_START, NULL, NULL, 0, mode, name);
ld_tracing = (mode & RTLD_TRACE) == 0 ? NULL : "1";
if (ld_tracing != NULL)
environ = (char **)*get_program_var_addr("environ");
nodelete = mode & RTLD_NODELETE;
- noload = mode & RTLD_NOLOAD;
+ lo_flags = RTLD_LO_DLOPEN;
+ if (mode & RTLD_NOLOAD)
+ lo_flags |= RTLD_LO_NOLOAD;
objlist_init(&initlist);
@@ -2006,7 +2018,7 @@
obj = obj_main;
obj->refcount++;
} else {
- obj = load_object(name, obj_main, noload);
+ obj = load_object(name, obj_main, lo_flags);
}
if (obj) {
@@ -2016,7 +2028,7 @@
mode &= RTLD_MODEMASK;
if (*old_obj_tail != NULL) { /* We loaded something new. */
assert(*old_obj_tail == obj);
- result = load_needed_objects(obj);
+ result = load_needed_objects(obj, RTLD_LO_DLOPEN);
init_dag(obj);
if (result != -1)
result = rtld_verify_versions(&obj->dagmembers);
==== //depot/projects/scottl-camlock/src/libexec/rtld-elf/rtld.h#6 (text+ko) ====
@@ -22,7 +22,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/libexec/rtld-elf/rtld.h,v 1.43 2009/06/20 14:16:41 kan Exp $
+ * $FreeBSD: src/libexec/rtld-elf/rtld.h,v 1.44 2009/11/26 13:57:20 kib Exp $
*/
#ifndef RTLD_H /* { */
@@ -218,6 +218,7 @@
bool phdr_alloc : 1; /* Phdr is allocated and needs to be freed. */
bool z_origin : 1; /* Process rpath and soname tokens */
bool z_nodelete : 1; /* Do not unload the object and dependencies */
+ bool z_noopen : 1; /* Do not load on dlopen */
bool ref_nodel : 1; /* Refcount increased to prevent dlclose */
bool init_scanned: 1; /* Object is already on init list. */
bool on_fini_list: 1; /* Object is already on fini list. */
@@ -240,6 +241,10 @@
#define SYMLOOK_DLSYM 0x02 /* Return newes versioned symbol. Used by
dlsym. */
+/* Flags for load_object(). */
+#define RTLD_LO_NOLOAD 0x01 /* dlopen() specified RTLD_NOLOAD */
+#define RTLD_LO_DLOPEN 0x02 /* load_object() called from dlopen(). */
+
/*
* Symbol cache entry used during relocation to avoid multiple lookups
* of the same symbol.
==== //depot/projects/scottl-camlock/src/sbin/atacontrol/atacontrol.c#5 (text+ko) ====
@@ -23,7 +23,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sbin/atacontrol/atacontrol.c,v 1.53 2009/11/22 10:53:26 mav Exp $
+ * $FreeBSD: src/sbin/atacontrol/atacontrol.c,v 1.54 2009/11/26 12:41:43 mav Exp $
*/
#include <sys/types.h>
==== //depot/projects/scottl-camlock/src/share/man/man4/mfi.4#6 (text) ====
@@ -22,9 +22,9 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/share/man/man4/mfi.4,v 1.10 2009/11/24 08:14:22 brueffer Exp $
+.\" $FreeBSD: src/share/man/man4/mfi.4,v 1.11 2009/11/26 13:25:07 brueffer Exp $
.\"
-.Dd November 24, 2009
+.Dd November 26, 2009
.Dt MFI 4
.Os
.Sh NAME
@@ -90,6 +90,8 @@
Dell PERC5
.It
Dell PERC6
+.It
+IBM ServeRAID-MR10i
.El
.Sh FILES
.Bl -tag -width ".Pa /dev/mfid?" -compact
==== //depot/projects/scottl-camlock/src/share/man/man4/sctp.4#3 (text+ko) ====
@@ -28,7 +28,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/share/man/man4/sctp.4,v 1.3 2007/09/25 16:03:10 brueffer Exp $
+.\" $FreeBSD: src/share/man/man4/sctp.4,v 1.4 2009/11/27 13:08:25 roam Exp $
.\"
.Dd December 15, 2006
.Dt SCTP 4
@@ -179,7 +179,7 @@
and tested with
.Xr getsockopt 2
or
-.Xr sctp_opt_info 2 :
+.Xr sctp_opt_info 3 :
.Bl -tag -width ".Dv SCTP_SET_PEER_PRIMARY_ADDR"
.It Dv SCTP_NODELAY
Under most circumstances,
==== //depot/projects/scottl-camlock/src/share/misc/bsd-family-tree#6 (text+ko) ====
@@ -232,7 +232,12 @@
| | | | | DragonFly 2.4.0
| V | | OpenBSD 4.6 |
| | | | |
-FreeBSD 8 -current | NetBSD -current OpenBSD -current |
+ *--FreeBSD | | | |
+ | 8.0 | | | |
+ | | | | | |
+ | V | | | |
+ | | | | |
+FreeBSD 9 -current | NetBSD -current OpenBSD -current |
| | | | |
v v v v v
@@ -505,6 +510,7 @@
FreeBSD 7.2 2009-05-04 [FBD]
DragonFly 2.4.0 2009-09-16 [DFB]
OpenBSD 4.6 2009-10-18 [OBD]
+FreeBSD 8.0 2009-11-26 [FBD]
Bibliography
------------------------
@@ -565,4 +571,4 @@
Copyright (c) 1997-2007 Wolfram Schneider <wosch at FreeBSD.ORG>
URL: http://cvsweb.freebsd.org/src/share/misc/bsd-family-tree
-$FreeBSD: src/share/misc/bsd-family-tree,v 1.132 2009/10/18 17:10:39 maxim Exp $
+$FreeBSD: src/share/misc/bsd-family-tree,v 1.134 2009/11/27 07:55:39 maxim Exp $
==== //depot/projects/scottl-camlock/src/sys/amd64/amd64/trap.c#24 (text+ko) ====
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.337 2009/11/10 11:43:07 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.338 2009/11/27 20:24:11 alc Exp $");
/*
* AMD64 Trap and System call handling
@@ -750,9 +750,7 @@
PROC_UNLOCK(p);
/* Fault in the user page: */
- rv = vm_fault(map, va, ftype,
- (ftype & VM_PROT_WRITE) ? VM_FAULT_DIRTY
- : VM_FAULT_NORMAL);
+ rv = vm_fault(map, va, ftype, VM_FAULT_NORMAL);
PROC_LOCK(p);
--p->p_lock;
==== //depot/projects/scottl-camlock/src/sys/arm/arm/trap.c#14 (text+ko) ====
@@ -82,7 +82,7 @@
#include "opt_ktrace.h"
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/trap.c,v 1.40 2009/11/10 11:43:07 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/trap.c,v 1.41 2009/11/27 20:24:11 alc Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -425,8 +425,7 @@
p->p_lock++;
PROC_UNLOCK(p);
}
- error = vm_fault(map, va, ftype, (ftype & VM_PROT_WRITE) ?
- VM_FAULT_DIRTY : VM_FAULT_NORMAL);
+ error = vm_fault(map, va, ftype, VM_FAULT_NORMAL);
pcb->pcb_onfault = onfault;
if (map != kernel_map) {
==== //depot/projects/scottl-camlock/src/sys/boot/forth/loader.conf.5#7 (text+ko) ====
@@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/sys/boot/forth/loader.conf.5,v 1.28 2008/01/16 07:00:55 keramida Exp $
+.\" $FreeBSD: src/sys/boot/forth/loader.conf.5,v 1.29 2009/11/27 03:55:42 sobomax Exp $
.Dd January 16, 2008
.Dt LOADER.CONF 5
.Os
@@ -180,10 +180,15 @@
.Dq comconsole
selects serial console,
.Dq vidconsole
-selects the video console, and
+selects the video console,
.Dq nullconsole
selects a mute console
-(useful for systems with neither a video console nor a serial port).
+(useful for systems with neither a video console nor a serial port), and
+.Dq spinconsole
+selects the video console which prevents any input and hides all output
+replacing it with
+.Dq spinning
+character (useful for embedded products and such).
.It Va kernel
.Pq Dq Pa /boot/kernel/kernel
.It Va loader_conf_files
==== //depot/projects/scottl-camlock/src/sys/boot/i386/libi386/Makefile#10 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/boot/i386/libi386/Makefile,v 1.46 2009/06/05 18:44:36 jkim Exp $
+# $FreeBSD: src/sys/boot/i386/libi386/Makefile,v 1.47 2009/11/27 03:55:42 sobomax Exp $
#
LIB= i386
INTERNALLIB=
@@ -8,7 +8,7 @@
comconsole.c devicename.c elf32_freebsd.c \
elf64_freebsd.c \
i386_copy.c i386_module.c nullconsole.c pxe.c pxetramp.s \
- smbios.c time.c vidconsole.c amd64_tramp.S
+ smbios.c time.c vidconsole.c amd64_tramp.S spinconsole.c
# Enable PXE TFTP or NFS support, not both.
.if defined(LOADER_TFTP_SUPPORT)
==== //depot/projects/scottl-camlock/src/sys/boot/i386/libi386/vidconsole.c#3 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/vidconsole.c,v 1.20 2005/04/09 14:07:13 stefanf Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/i386/libi386/vidconsole.c,v 1.21 2009/11/27 03:55:42 sobomax Exp $");
#include <stand.h>
#include <bootstrap.h>
@@ -57,8 +57,8 @@
void end_term(void);
void bail_out(int c);
void vidc_term_emu(int c);
-void get_pos(void);
-void curs_move(int x, int y);
+void get_pos(int *x, int *y);
+void curs_move(int *_x, int *_y, int x, int y);
void write_char(int c, int fg, int bg);
void scroll_up(int rows, int fg, int bg);
void CD(void);
@@ -110,8 +110,8 @@
#ifdef TERM_EMU
/* Init terminal emulator */
end_term();
- get_pos();
- curs_move(curx, cury);
+ get_pos(&curx, &cury);
+ curs_move(&curx, &cury, curx, cury);
fg_c = DEFAULT_FGCOLOR;
bg_c = DEFAULT_BGCOLOR;
#endif
@@ -120,7 +120,7 @@
return (0); /* XXX reinit? */
}
-static void
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list