[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnumach] 01/02: Imported Upstream version 1.6
From: |
Samuel Thibault |
Subject: |
[gnumach] 01/02: Imported Upstream version 1.6 |
Date: |
Tue, 03 Nov 2015 21:51:26 +0000 |
This is an automated email from the git hooks/post-receive script.
sthibault pushed a commit to branch master
in repository gnumach.
commit 603ea1b3f9d4e1be7eb63de84152db514eb0c97c
Author: Samuel Thibault <address@hidden>
Date: Tue Nov 3 21:30:57 2015 +0000
Imported Upstream version 1.6
---
ChangeLog | 93 ++++++++++
Makefile.in | 62 ++++---
Makefrag.am | 11 +-
Makerules.mig.am | 21 ++-
NEWS | 28 ++++
build-aux/compile | 2 +-
build-aux/config.guess | 47 ++++--
build-aux/config.sub | 36 ++--
build-aux/depcomp | 2 +-
build-aux/install-sh | 373 +++++++++++++++++++----------------------
build-aux/mdate-sh | 8 +-
build-aux/missing | 2 +-
build-aux/test-driver | 15 +-
configure | 20 +--
ddb/db_command.c | 2 +
ddb/db_output.c | 2 +-
device/cirbuf.c | 2 +
doc/mach.info | 240 +++++++++++++-------------
doc/mach.info-1 | 8 +-
doc/mach.info-2 | 4 +-
doc/stamp-vti | 8 +-
doc/version.texi | 8 +-
i386/i386/debug.h | 2 +
i386/i386/debug_i386.c | 28 +++-
include/mach/time_value.h.orig | 99 -----------
kern/bootstrap.c | 10 +-
kern/mach_clock.c | 12 +-
kern/sched_prim.h | 4 +-
kern/slab.c | 41 ++++-
kern/slab.h | 4 +
kern/syscall_sw.h | 6 +-
version.m4 | 2 +-
32 files changed, 675 insertions(+), 527 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 89c75f0..576763d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,96 @@
+2015-10-31 Thomas Schwinge <address@hidden>
+
+ GNU Mach 1.6
+ * version.m4 (AC_PACKAGE_VERSION): Set to 1.6.
+ * NEWS: Finalize for 1.6.
+
+2015-10-31 Thomas Schwinge <address@hidden>
+
+ Rework *.msgids handling when neither client nor server stubs are
required
+ Originally added in commit 255c47e669819f153c722c98a230f6fe4e6ece08,
but "make
+ distcheck" didn't like that:
+
+ [...]
+ ERROR: files left in build directory after distclean:
+ ./ipc/notify.msgids
+ Makefile:7489: recipe for target 'distcleancheck' failed
+ make[1]: *** [distcleancheck] Error 1
+ make[1]: Leaving directory
'[...]/gnumach/release.build/gnumach-1.5/_build/sub'
+ Makefile:7416: recipe for target 'distcheck' failed
+ make: *** [distcheck] Error 1
+
+ Instead of special-casing that, generalize the Makefile rules.
+
+ * Makefrag.am (nodist_lib_dep_tr_for_defs_a_SOURCES): Add
+ ipc/notify.none.defs.c.
+ (nodist_libkernel_a_SOURCES): Add ipc/notify.none.msgids.
+ (gnumach.msgids): Remove ipc/notify.msgids prerequisite.
+ * Makerules.mig.am (%.msgids): Remove rule, and instead...
+ (%.none.defs.c, %.none.msgids): ... add these rules.
+
+2015-10-05 Justus Winter <address@hidden>
+
+ Update NEWS file
+
+2015-10-05 Samuel Thibault <address@hidden>
+
+ Fix time going back in Xen case
+ when backward time correction happens to get bigger than the tick
duration.
+
+ * kern/mach_clock.c (clock_interrupt): When `tickdelta' is bigger than
`usec',
+ truncate it to `usec-1'.
+
+2015-10-05 Joshua Branson <address@hidden>
+
+ Add generated mach documentation files to gitignore
+ * .gitignore: Add doc/mach.aux doc/mach.cp doc/mach.cps doc/mach.fn
+ doc/mach.fns doc/mach.ky doc/mach.log doc/mach.pdf doc/mach.pg
doc/mach.toc
+ doc/mach.tp doc/mach.vr.
+
+2015-09-29 Justus Winter <address@hidden>
+
+ kern/slab: print total used and reclaimable memory
+ * kern/slab.c (_slab_info): Print total used and reclaimable memory.
+
+ kern/slab: include flags in the slab information
+ * kern/slab.c (_slab_info): Include flags in the slab information.
+
+ ddb: fix line formatting
+ * ddb/db_output.c (db_putchar): Fix off-by-one, allowing one more
+ character to be printed before the newline is inserted.
+
+ ddb: add new command `show slabinfo'
+ * ddb/db_command.c (db_show_cmds): Add `slabinfo'.
+ * kern/slab.c (slab_info): Generalize so that it can be used with
+ different printf-like functions, and turn it into a static function.
+ (slab_info): New wrapper retaining the old behaviour.
+ (db_show_slab_info): New wrapper that uses `db_printf' instead.
+ * kern/slab.h (db_show_slab_info): New declaration.
+
+2015-09-27 Justus Winter <address@hidden>
+
+ i386: trace syscalls of a single task
+ * i386/i386/debug_i386.c (syscall_trace_task): New variable.
+ (syscall_trace_print): If set, trace only syscalls from this task.
+
+ i386: improve syscall tracing
+ * kern/syscall_sw.h (mach_trap_t): Turn unused field into
`mach_trap_name'.
+ (MACH_TRAP, MACH_TRAP_STACK): Record name.
+ * i386/i386/debug_i386.c (syscall_trace_print): Use the name and
+ format the arguments to look like c.
+
+ Fix build with -DDEBUG
+ * device/cirbuf.c: Add missing include.
+ * i386/i386/debug.h (dump_ss): Hide declaration from assembler.
+ * i386/i386/debug_i386.c: Fix include.
+ * kern/sched_prim.h: Add missing include, fix declaration.
+
+ kern/bootstrap: drop into the debugger
+ * kern/bootstrap.c (boot_script_prompt_task_resume): Drop into the
+ debugger instead of merely waiting for return using `safe_gets', which
+ disables interrupts, making it impossible to break into the debugger
+ using the magic keys.
+
2015-09-19 Flávio Cruz <address@hidden>
Add macros to convert between time_value_t and timespec
diff --git a/Makefile.in b/Makefile.in
index 0f9511d..552ee63 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1209,6 +1209,7 @@ nodist_lib_dep_tr_for_defs_a_OBJECTS =
vm/lib_dep_tr_for_defs_a-memory_object_us
kern/lib_dep_tr_for_defs_a-gnumach.server.defs.$(OBJEXT) \
kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.$(OBJEXT) \
kern/lib_dep_tr_for_defs_a-mach_host.server.defs.$(OBJEXT) \
+ ipc/lib_dep_tr_for_defs_a-notify.none.defs.$(OBJEXT) \
$(am__objects_1)
lib_dep_tr_for_defs_a_OBJECTS = \
$(nodist_lib_dep_tr_for_defs_a_OBJECTS)
@@ -2482,11 +2483,7 @@ noinst_LIBRARIES = libkernel.a lib_dep_tr_for_defs.a
$(am__append_5) \
$(am__append_99)
TESTS = tests/test-mbchk
info_TEXINFOS = doc/mach.texi
-# kern/mach.server.defs
-# kern/mach4.server.defs
-# kern/gnumach.server.defs
-# kern/mach_debug.server.defs
-# kern/mach_host.server.defs
+# ipc/notify.none.defs
# rpctrace can make use of that.
MOSTLYCLEANFILES = $(nodist_libkernel_a_SOURCES) \
@@ -2641,7 +2638,8 @@ nodist_libkernel_a_SOURCES = version.c
vm/memory_object_user.user.h \
kern/gnumach.server.msgids kern/mach_debug.server.h \
kern/mach_debug.server.c kern/mach_debug.server.msgids \
kern/mach_host.server.h kern/mach_host.server.c \
- kern/mach_host.server.msgids $(am__append_122)
+ kern/mach_host.server.msgids ipc/notify.none.msgids \
+ $(am__append_122)
gnumach_o_LDADD = libkernel.a $(am__append_6) $(am__append_100)
gnumach_SOURCES =
gnumach_LINKFLAGS = $(am__append_123) $(am__append_126)
@@ -2662,6 +2660,14 @@ gnumach_LINKFLAGS = $(am__append_123) $(am__append_126)
# device/device.server.defs
# device/device_pager.server.defs
# ipc/mach_port.server.defs
+# kern/mach.server.defs
+# kern/mach4.server.defs
+# kern/gnumach.server.defs
+# kern/mach_debug.server.defs
+# kern/mach_host.server.defs
+
+# Stand-alone rule to generate the list of message ids when neither
+# the client nor the server stubs are required.
nodist_lib_dep_tr_for_defs_a_SOURCES = \
vm/memory_object_user.user.defs.c \
vm/memory_object_default.user.defs.c \
@@ -2671,7 +2677,8 @@ nodist_lib_dep_tr_for_defs_a_SOURCES = \
device/device_pager.server.defs.c ipc/mach_port.server.defs.c \
kern/mach.server.defs.c kern/mach4.server.defs.c \
kern/gnumach.server.defs.c kern/mach_debug.server.defs.c \
- kern/mach_host.server.defs.c $(am__append_121)
+ kern/mach_host.server.defs.c ipc/notify.none.defs.c \
+ $(am__append_121)
# Preprocess only.
lib_dep_tr_for_defs_a_CPPFLAGS = $(AM_CPPFLAGS) \
-E
@@ -3054,6 +3061,8 @@
kern/lib_dep_tr_for_defs_a-mach_debug.server.defs.$(OBJEXT): \
kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
kern/lib_dep_tr_for_defs_a-mach_host.server.defs.$(OBJEXT): \
kern/$(am__dirstamp) kern/$(DEPDIR)/$(am__dirstamp)
+ipc/lib_dep_tr_for_defs_a-notify.none.defs.$(OBJEXT): \
+ ipc/$(am__dirstamp) ipc/$(DEPDIR)/$(am__dirstamp)
i386/i386/$(am__dirstamp):
@$(MKDIR_P) i386/i386
@: > i386/i386/$(am__dirstamp)
@@ -4259,6 +4268,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
@AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
@AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
@AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
@AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
@AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@
@@ -4719,6 +4729,20 @@ kern/lib_dep_tr_for_defs_a-mach_host.server.defs.obj:
kern/mach_host.server.defs
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE)
$(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
$(CFLAGS) -c -o kern/lib_dep_tr_for_defs_a-mach_host.server.defs.obj `if test
-f 'kern/mach_host.server.defs.c'; then $(CYGPATH_W)
'kern/mach_host.server.defs.c'; else $(CYGPATH_W)
'$(srcdir)/kern/mach_host.server.defs.c'; fi`
+ipc/lib_dep_tr_for_defs_a-notify.none.defs.o: ipc/notify.none.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT
ipc/lib_dep_tr_for_defs_a-notify.none.defs.o -MD -MP -MF
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-notify.none.defs.Tpo -c -o
ipc/lib_dep_tr_for_defs_a-notify.none.defs.o `test -f 'ipc/notify.none.defs.c'
|| echo '$(srcdir)/'`ipc/notify.none.defs.c
address@hidden@ $(AM_V_at)$(am__mv)
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-notify.none.defs.Tpo
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-notify.none.defs.Po
address@hidden@@am__fastdepCC_FALSE@
$(AM_V_CC)source='ipc/notify.none.defs.c'
object='ipc/lib_dep_tr_for_defs_a-notify.none.defs.o' libtool=no
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE)
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o
ipc/lib_dep_tr_for_defs_a-notify.none.defs.o `test -f 'ipc/notify.none.defs.c'
|| echo '$(srcdir)/'`ipc/notify.none.defs.c
+
+ipc/lib_dep_tr_for_defs_a-notify.none.defs.obj: ipc/notify.none.defs.c
address@hidden@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT
ipc/lib_dep_tr_for_defs_a-notify.none.defs.obj -MD -MP -MF
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-notify.none.defs.Tpo -c -o
ipc/lib_dep_tr_for_defs_a-notify.none.defs.obj `if test -f
'ipc/notify.none.defs.c'; then $(CYGPATH_W) 'ipc/notify.none.defs.c'; else
$(CYGPATH_W) '$(srcdir)/ipc/notify.none.defs.c'; fi`
address@hidden@ $(AM_V_at)$(am__mv)
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-notify.none.defs.Tpo
ipc/$(DEPDIR)/lib_dep_tr_for_defs_a-notify.none.defs.Po
address@hidden@@am__fastdepCC_FALSE@
$(AM_V_CC)source='ipc/notify.none.defs.c'
object='ipc/lib_dep_tr_for_defs_a-notify.none.defs.obj' libtool=no
@AMDEPBACKSLASH@
address@hidden@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE)
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o
ipc/lib_dep_tr_for_defs_a-notify.none.defs.obj `if test -f
'ipc/notify.none.defs.c'; then $(CYGPATH_W) 'ipc/notify.none.defs.c'; else
$(CYGPATH_W) '$(srcdir)/ipc/notify.none.defs.c'; fi`
+
i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.o:
i386/i386/mach_i386.server.defs.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES)
$(lib_dep_tr_for_defs_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT
i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.o -MD -MP -MF
i386/i386/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_i386.server.defs.Tpo -c -o
i386/i386/lib_dep_tr_for_defs_a-mach_i386.server.defs.o `test -f
'i386/i386/mach_i386.server.defs.c' || echo
'$(srcdir)/'`i386/i386/mach_i386.server.defs.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv)
i386/i386/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_i386.server.defs.Tpo
i386/i386/$(DEPDIR)/lib_dep_tr_for_defs_a-mach_i386.server.defs.Po
@@ -7831,29 +7855,28 @@ uninstall-am: uninstall-dvi-am
uninstall-exec_bootPROGRAMS \
%.server.defs.c: %.srv
$(AM_V_at) rm -f $@
$(AM_V_GEN) cp -p $< $@
-%.user.defs.c: %.cli
- $(AM_V_at) rm -f $@
- $(AM_V_GEN) cp -p $< $@
%.server.h %.server.c %.server.msgids:
lib_dep_tr_for_defs_a-%.server.defs.$(OBJEXT)
$(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMSFLAGS) \
-sheader $*.server.h -server $*.server.c \
-list $*.server.msgids \
< $<
+%.user.defs.c: %.cli
+ $(AM_V_at) rm -f $@
+ $(AM_V_GEN) cp -p $< $@
%.user.h %.user.c %.user.msgids: lib_dep_tr_for_defs_a-%.user.defs.$(OBJEXT)
$(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMUFLAGS) \
-user $*.user.c -header $*.user.h \
-list $*.user.msgids \
< $<
-
-vpath %.defs $(top_srcdir)
-
# Stand-alone rule to generate the list of message ids when neither
# the client nor the server stubs are required.
-%.msgids: %.defs
- $(MIGCOM_V) $(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -E $< \
- | $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMSFLAGS) \
- -sheader /dev/null -server /dev/null \
- -list "$*.msgids"
+%.none.defs.c: %.defs
+ $(AM_V_at) rm -f $@
+ $(AM_V_GEN) cp -p $< $@
+%.none.msgids: lib_dep_tr_for_defs_a-%.none.defs.$(OBJEXT)
+ $(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS) \
+ -list $*.none.msgids \
+ < $<
# This is how it should be done, but this is not integrated into GNU Automake
# and is missing automatic inter-file dependency management because of that.
@@ -7916,8 +7939,7 @@ echo-%:
install-data-hook:
rm -f '$(DESTDIR)$(include_machdir)'/machine
ln -s '$(systype)' '$(DESTDIR)$(include_machdir)'/machine
-gnumach.msgids: $(filter %.msgids,$(nodist_libkernel_a_SOURCES)) \
- ipc/notify.msgids
+gnumach.msgids: $(filter %.msgids,$(nodist_libkernel_a_SOURCES))
$(AM_V_at) cat $^ > address@hidden
$(AM_V_GEN) mv address@hidden $@
dist-hook: dist-hook-linux
diff --git a/Makefrag.am b/Makefrag.am
index b9d96c5..823ece5 100644
--- a/Makefrag.am
+++ b/Makefrag.am
@@ -545,11 +545,18 @@ nodist_libkernel_a_SOURCES += \
# kern/mach_debug.server.defs
# kern/mach_host.server.defs
+# Stand-alone rule to generate the list of message ids when neither
+# the client nor the server stubs are required.
+nodist_lib_dep_tr_for_defs_a_SOURCES += \
+ ipc/notify.none.defs.c
+nodist_libkernel_a_SOURCES += \
+ ipc/notify.none.msgids
+# ipc/notify.none.defs
+
# rpctrace can make use of that.
MOSTLYCLEANFILES += \
gnumach.msgids
-gnumach.msgids: $(filter %.msgids,$(nodist_libkernel_a_SOURCES)) \
- ipc/notify.msgids
+gnumach.msgids: $(filter %.msgids,$(nodist_libkernel_a_SOURCES))
$(AM_V_at) cat $^ > address@hidden
$(AM_V_GEN) mv address@hidden $@
# `exec_' prefix, so that we don't try to build that file during when running
diff --git a/Makerules.mig.am b/Makerules.mig.am
index 085b247..8ae6555 100644
--- a/Makerules.mig.am
+++ b/Makerules.mig.am
@@ -74,29 +74,28 @@ lib_dep_tr_for_defs_a_CPPFLAGS = $(AM_CPPFLAGS) \
%.server.defs.c: %.srv
$(AM_V_at) rm -f $@
$(AM_V_GEN) cp -p $< $@
-%.user.defs.c: %.cli
- $(AM_V_at) rm -f $@
- $(AM_V_GEN) cp -p $< $@
%.server.h %.server.c %.server.msgids:
lib_dep_tr_for_defs_a-%.server.defs.$(OBJEXT)
$(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMSFLAGS) \
-sheader $*.server.h -server $*.server.c \
-list $*.server.msgids \
< $<
+%.user.defs.c: %.cli
+ $(AM_V_at) rm -f $@
+ $(AM_V_GEN) cp -p $< $@
%.user.h %.user.c %.user.msgids: lib_dep_tr_for_defs_a-%.user.defs.$(OBJEXT)
$(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMUFLAGS) \
-user $*.user.c -header $*.user.h \
-list $*.user.msgids \
< $<
-
-vpath %.defs $(top_srcdir)
-
# Stand-alone rule to generate the list of message ids when neither
# the client nor the server stubs are required.
-%.msgids: %.defs
- $(MIGCOM_V) $(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -E $< \
- | $(MIGCOM) $(MIGCOMFLAGS) $(MIGCOMSFLAGS) \
- -sheader /dev/null -server /dev/null \
- -list "$*.msgids"
+%.none.defs.c: %.defs
+ $(AM_V_at) rm -f $@
+ $(AM_V_GEN) cp -p $< $@
+%.none.msgids: lib_dep_tr_for_defs_a-%.none.defs.$(OBJEXT)
+ $(MIGCOM_V) $(MIGCOM) $(MIGCOMFLAGS) \
+ -list $*.none.msgids \
+ < $<
# This is how it should be done, but this is not integrated into GNU Automake
# and is missing automatic inter-file dependency management because of that.
diff --git a/NEWS b/NEWS
index 5d220fa..e8bb33f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,31 @@
+Version 1.6 (2015-10-31)
+
+The code has been updated to work with newer versions of the compiler,
+and numerous bugs have been fixed throughout the code.
+
+The lock debugging infrastructure has been revived and improved, and
+many locking issues have been fixed.
+
+The IPC tables and the hash table mapping objects to IPC entries have
+been replaced by radix trees. This addresses a scalability issue, as
+IPC tables required huge amounts of continuous virtual kernel memory.
+
+The kernel now allows non-privileged users to wire a small amount of
+memory.
+
+A bug hindering the eviction of inactive pages by the pageout daemon
+has been identified and fixed.
+
+The kernel now keeps timestamps relative to the system boot time.
+Among other things this fixes bogus uptime readings if the system time
+is altered.
+
+A reference leak in the exception handling mechanism has been
+identified and fixed.
+
+ANSI escape sequences are now handled when using `printf'. This fixes
+the formatting of messages printed by various Linux drivers.
+
Version 1.5 (2015-04-10)
Numerous cleanups and stylistic fixes of the code base. Several
diff --git a/build-aux/compile b/build-aux/compile
index 531136b..a85b723 100755
--- a/build-aux/compile
+++ b/build-aux/compile
@@ -3,7 +3,7 @@
scriptversion=2012-10-14.11; # UTC
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <address@hidden>.
#
# This program is free software; you can redistribute it and/or modify
diff --git a/build-aux/config.guess b/build-aux/config.guess
index 1f5c50c..1659250 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2014 Free Software Foundation, Inc.
+# Copyright 1992-2015 Free Software Foundation, Inc.
-timestamp='2014-03-23'
+timestamp='2015-08-20'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -24,12 +24,12 @@ timestamp='2014-03-23'
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
#
-# Originally written by Per Bothner.
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
#
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
#
-# Please send patches with a ChangeLog entry to address@hidden
+# Please send patches to <address@hidden>.
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -168,20 +168,27 @@ case
"${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
- /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+ /sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || \
+ echo unknown)`
case "${UNAME_MACHINE_ARCH}" in
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
+ earmv*)
+ arch=`echo ${UNAME_MACHINE_ARCH} | sed -e
's,^e\(armv[0-9]\).*$,\1,'`
+ endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne
's,^.*\(eb\)$,\1,p'`
+ machine=${arch}${endian}-unknown
+ ;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently, or will in the future.
case "${UNAME_MACHINE_ARCH}" in
- arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
@@ -197,6 +204,13 @@ case
"${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
os=netbsd
;;
esac
+ # Determine ABI tags.
+ case "${UNAME_MACHINE_ARCH}" in
+ earm*)
+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+ abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+ ;;
+ esac
# The OS release
# Debian GNU/NetBSD machines have a different userland, and
# thus, need a distinct triplet. However, they do not need
@@ -207,13 +221,13 @@ case
"${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
release='-gnu'
;;
*)
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d.
-f1,2`
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "${machine}-${os}${release}"
+ echo "${machine}-${os}${release}${abi}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
@@ -235,6 +249,9 @@ case
"${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:MirBSD:*:*)
echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
exit ;;
+ *:Sortix:*:*)
+ echo ${UNAME_MACHINE}-unknown-sortix
+ exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
*4.0)
@@ -579,8 +596,9 @@ EOF
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
+ if [ -x /usr/bin/lslpp ] ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
@@ -932,6 +950,9 @@ EOF
crisv32:Linux:*:*)
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
+ e2k:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
frv:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
@@ -1020,7 +1041,7 @@ EOF
echo ${UNAME_MACHINE}-dec-linux-${LIBC}
exit ;;
x86_64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
diff --git a/build-aux/config.sub b/build-aux/config.sub
index bba4efb..1acc966 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2014 Free Software Foundation, Inc.
+# Copyright 1992-2015 Free Software Foundation, Inc.
-timestamp='2014-09-11'
+timestamp='2015-08-20'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -25,7 +25,7 @@ timestamp='2014-09-11'
# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches with a ChangeLog entry to address@hidden
+# Please send patches to <address@hidden>.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -68,7 +68,7 @@ Report bugs and patches to <address@hidden>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -117,7 +117,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* |
kfreebsd*-gnu* | \
- knetbsd*-gnu* | netbsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
@@ -255,12 +255,13 @@ case $basic_machine in
| arc | arceb \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
| avr | avr32 \
+ | ba \
| be32 | be64 \
| bfin \
| c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \
- | epiphany \
- | fido | fr30 | frv \
+ | e2k | epiphany \
+ | fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i860 | i960 | ia64 \
@@ -305,7 +306,7 @@ case $basic_machine in
| riscv32 | riscv64 \
| rl78 | rx \
| score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb |
shbe | shle | sh[1234]le | sh3ele \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb |
shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet |
sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
@@ -313,6 +314,7 @@ case $basic_machine in
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+ | visium \
| we32k \
| x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
@@ -327,6 +329,9 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
+ leon|leon[3-9])
+ basic_machine=sparc-$basic_machine
+ ;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
@@ -372,12 +377,13 @@ case $basic_machine in
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
+ | ba-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| c8051-* | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
- | elxsi-* \
+ | e2k-* | elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
@@ -424,12 +430,13 @@ case $basic_machine in
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
+ | riscv32-* | riscv64-* \
| rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-*
| sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* |
sparclet-* \
| sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
| tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tile*-* \
@@ -437,6 +444,7 @@ case $basic_machine in
| ubicom32-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
+ | visium-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
@@ -513,6 +521,9 @@ case $basic_machine in
basic_machine=i386-pc
os=-aros
;;
+ asmjs)
+ basic_machine=asmjs-unknown
+ ;;
aux)
basic_machine=m68k-apple
os=-aux
@@ -774,6 +785,9 @@ case $basic_machine in
basic_machine=m68k-isi
os=-sysv
;;
+ leon-*|leon[3-9]-*)
+ basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+ ;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
@@ -1365,7 +1379,7 @@ case $os in
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* |
-solaris* \
| -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
- | -aos* | -aros* \
+ | -aos* | -aros* | -cloudabi* | -sortix* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
diff --git a/build-aux/depcomp b/build-aux/depcomp
index 4ebd5b3..fc98710 100755
--- a/build-aux/depcomp
+++ b/build-aux/depcomp
@@ -3,7 +3,7 @@
scriptversion=2013-05-30.07; # UTC
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/build-aux/install-sh b/build-aux/install-sh
index 377bb86..59990a1 100755
--- a/build-aux/install-sh
+++ b/build-aux/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2011-11-20.07; # UTC
+scriptversion=2014-09-12.12; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC
# This script is compatible with the BSD install script, but was written
# from scratch.
+tab=' '
nl='
'
-IFS=" "" $nl"
+IFS=" $tab$nl"
-# set DOITPROG to echo to test this script
+# Set DOITPROG to "echo" to test this script.
-# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
-if test -z "$doit"; then
- doit_exec=exec
-else
- doit_exec=$doit
-fi
+doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
@@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
-posix_glob='?'
-initialize_posix_glob='
- test "$posix_glob" != "?" || {
- if (set -f) 2>/dev/null; then
- posix_glob=
- else
- posix_glob=:
- fi
- }
-'
-
posix_mkdir=
# Desired mode of installed file.
@@ -97,7 +82,7 @@ dir_arg=
dst_arg=
copy_on_change=false
-no_target_directory=
+is_target_a_directory=possibly
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@@ -137,46 +122,57 @@ while test $# -ne 0; do
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
- shift;;
+ shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
- case $mode in
- *' '* | *' '* | *'
-'* | *'*'* | *'?'* | *'['*)
- echo "$0: invalid mode: $mode" >&2
- exit 1;;
- esac
- shift;;
+ case $mode in
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
-o) chowncmd="$chownprog $2"
- shift;;
+ shift;;
-s) stripcmd=$stripprog;;
- -t) dst_arg=$2
- # Protect names problematic for 'test' and other utilities.
- case $dst_arg in
- -* | [=\(\)!]) dst_arg=./$dst_arg;;
- esac
- shift;;
+ -t)
+ is_target_a_directory=always
+ dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
- -T) no_target_directory=true;;
+ -T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
- --) shift
- break;;
+ --) shift
+ break;;
- -*) echo "$0: invalid option: $1" >&2
- exit 1;;
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
*) break;;
esac
shift
done
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+ if test -n "$dst_arg"; then
+ echo "$0: target directory not allowed when installing a directory." >&2
+ exit 1
+ fi
+fi
+
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
@@ -208,6 +204,15 @@ if test $# -eq 0; then
fi
if test -z "$dir_arg"; then
+ if test $# -gt 1 || test "$is_target_a_directory" = always; then
+ if test ! -d "$dst_arg"; then
+ echo "$0: $dst_arg: Is not a directory." >&2
+ exit 1
+ fi
+ fi
+fi
+
+if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
@@ -223,16 +228,16 @@ if test -z "$dir_arg"; then
*[0-7])
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw='% 200'
+ u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
- u_plus_rw=
+ u_plus_rw=
else
- u_plus_rw=,u+rw
+ u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
@@ -269,41 +274,15 @@ do
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
- if test -n "$no_target_directory"; then
- echo "$0: $dst_arg: Is a directory" >&2
- exit 1
+ if test "$is_target_a_directory" = never; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
- # Prefer dirname, but fall back on a substitute if dirname fails.
- dstdir=`
- (dirname "$dst") 2>/dev/null ||
- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$dst" : 'X\(//\)[^/]' \| \
- X"$dst" : 'X\(//\)$' \| \
- X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$dst" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'
- `
-
+ dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
@@ -314,74 +293,81 @@ do
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
-
- # With -d, create the new directory with the user-specified mode.
- # Otherwise, rely on $mkdir_umask.
- if test -n "$dir_arg"; then
- mkdir_mode=-m$mode
- else
- mkdir_mode=
- fi
-
- posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
- if (umask $mkdir_umask &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- ls_ld_tmpdir=`ls -ld "$tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/d" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
- fi
- trap '' 0;;
- esac;;
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ # $RANDOM is not portable (e.g. dash); use it when possible to
+ # lower collision chance
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
2>/dev/null; exit $ret' 0
+
+ # As "mkdir -p" follows symlinks and we work in /tmp possibly; so
+ # create the $tmpdir first (and fail if unsuccessful) to make sure
+ # that nobody tries to guess the $tmpdir name.
+ if (umask $mkdir_umask &&
+ $mkdirprog $mkdir_mode "$tmpdir" &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null
2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ test_tmpdir="$tmpdir/a"
+ ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
esac
if
$posix_mkdir && (
- umask $mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
@@ -391,53 +377,51 @@ do
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
- /*) prefix='/';;
- [-=\(\)!]*) prefix='./';;
- *) prefix='';;
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
esac
- eval "$initialize_posix_glob"
-
oIFS=$IFS
IFS=/
- $posix_glob set -f
+ set -f
set fnord $dstdir
shift
- $posix_glob set +f
+ set +f
IFS=$oIFS
prefixes=
for d
do
- test X"$d" = X && continue
-
- prefix=$prefix$d
- if test -d "$prefix"; then
- prefixes=
- else
- if $posix_mkdir; then
- (umask=$mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
- # Don't fail if two instances are running concurrently.
- test -d "$prefix" || exit 1
- else
- case $prefix in
- *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
- *) qprefix=$prefix;;
- esac
- prefixes="$prefixes '$qprefix'"
- fi
- fi
- prefix=$prefix/
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
done
if test -n "$prefixes"; then
- # Don't fail if two instances are running concurrently.
- (umask $mkdir_umask &&
- eval "\$doit_exec \$mkdirprog $prefixes") ||
- test -d "$dstdir" || exit 1
- obsolete_mkdir_used=true
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
fi
fi
fi
@@ -472,15 +456,12 @@ do
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
- old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
- new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
- eval "$initialize_posix_glob" &&
- $posix_glob set -f &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+ set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
- $posix_glob set +f &&
-
+ set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
@@ -493,24 +474,24 @@ do
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
- # Now remove or move aside any old file at destination location.
- # We try this two ways since rm can't unlink itself on some
- # systems and the destination file might be busy for other
- # reasons. In this case, the final cleanup might fail but the new
- # file should still install successfully.
- {
- test ! -f "$dst" ||
- $doit $rmcmd -f "$dst" 2>/dev/null ||
- { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
- } ||
- { echo "$0: cannot unlink or rename $dst" >&2
- (exit 1); exit 1
- }
- } &&
-
- # Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dst"
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
diff --git a/build-aux/mdate-sh b/build-aux/mdate-sh
index b3719cf..9e2c0c9 100755
--- a/build-aux/mdate-sh
+++ b/build-aux/mdate-sh
@@ -1,9 +1,9 @@
#!/bin/sh
# Get modification time of a file or directory and pretty-print it.
-scriptversion=2010-08-21.06; # UTC
+scriptversion=2015-04-09.19; # UTC
-# Copyright (C) 1995-2013 Free Software Foundation, Inc.
+# Copyright (C) 1995-2014 Free Software Foundation, Inc.
# written by Ulrich Drepper <address@hidden>, June 1995
#
# This program is free software; you can redistribute it and/or modify
@@ -74,6 +74,10 @@ export LC_ALL
LC_TIME=C
export LC_TIME
+# Use UTC to get reproducible result
+TZ=UTC
+export TZ
+
# GNU ls changes its time format in response to the TIME_STYLE
# variable. Since we cannot assume 'unset' works, revert this
# variable to its documented default.
diff --git a/build-aux/missing b/build-aux/missing
index db98974..f62bbae 100755
--- a/build-aux/missing
+++ b/build-aux/missing
@@ -3,7 +3,7 @@
scriptversion=2013-10-28.13; # UTC
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
# Originally written by Fran,cois Pinard <address@hidden>, 1996.
# This program is free software; you can redistribute it and/or modify
diff --git a/build-aux/test-driver b/build-aux/test-driver
index d306056..8e575b0 100755
--- a/build-aux/test-driver
+++ b/build-aux/test-driver
@@ -3,7 +3,7 @@
scriptversion=2013-07-13.22; # UTC
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+# Copyright (C) 2011-2014 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -106,11 +106,14 @@ trap "st=143; $do_exit" 15
# Test script is run here.
"$@" >$log_file 2>&1
estatus=$?
+
if test $enable_hard_errors = no && test $estatus -eq 99; then
- estatus=1
+ tweaked_estatus=1
+else
+ tweaked_estatus=$estatus
fi
-case $estatus:$expect_failure in
+case $tweaked_estatus:$expect_failure in
0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
0:*) col=$grn res=PASS recheck=no gcopy=no;;
77:*) col=$blu res=SKIP recheck=no gcopy=yes;;
@@ -119,6 +122,12 @@ case $estatus:$expect_failure in
*:*) col=$red res=FAIL recheck=yes gcopy=yes;;
esac
+# Report the test outcome and exit status in the logs, so that one can
+# know whether the test passed or failed simply by looking at the '.log'
+# file, without the need of also peaking into the corresponding '.trs'
+# file (automake bug#11814).
+echo "$res $test_name (exit status: $estatus)" >>$log_file
+
# Report outcome to console.
echo "${col}${res}${std}: $test_name"
diff --git a/configure b/configure
index c52ed8d..8f70834 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GNU Mach 1.5+git20150922.
+# Generated by GNU Autoconf 2.69 for GNU Mach 1.6.
#
# Report bugs to <address@hidden>.
#
@@ -579,8 +579,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='GNU Mach'
PACKAGE_TARNAME='gnumach'
-PACKAGE_VERSION='1.5+git20150922'
-PACKAGE_STRING='GNU Mach 1.5+git20150922'
+PACKAGE_VERSION='1.6'
+PACKAGE_STRING='GNU Mach 1.6'
PACKAGE_BUGREPORT='address@hidden'
PACKAGE_URL=''
@@ -1595,7 +1595,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GNU Mach 1.5+git20150922 to adapt to many kinds of
systems.
+\`configure' configures GNU Mach 1.6 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1666,7 +1666,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GNU Mach 1.5+git20150922:";;
+ short | recursive ) echo "Configuration of GNU Mach 1.6:";;
esac
cat <<\_ACEOF
@@ -2014,7 +2014,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GNU Mach configure 1.5+git20150922
+GNU Mach configure 1.6
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2106,7 +2106,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GNU Mach $as_me 1.5+git20150922, which was
+It was created by GNU Mach $as_me 1.6, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2972,7 +2972,7 @@ fi
# Define the identity of the package.
PACKAGE='gnumach'
- VERSION='1.5+git20150922'
+ VERSION='1.6'
# Some tools Automake needs.
@@ -12128,7 +12128,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by GNU Mach $as_me 1.5+git20150922, which was
+This file was extended by GNU Mach $as_me 1.6, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -12199,7 +12199,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //;
s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-GNU Mach config.status 1.5+git20150922
+GNU Mach config.status 1.6
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/ddb/db_command.c b/ddb/db_command.c
index 5651667..721f04f 100644
--- a/ddb/db_command.c
+++ b/ddb/db_command.c
@@ -57,6 +57,7 @@
#include <machine/db_interface.h>
#include <kern/debug.h>
#include <kern/thread.h>
+#include <kern/slab.h>
#include <ipc/ipc_pset.h> /* 4proto */
#include <ipc/ipc_port.h> /* 4proto */
@@ -327,6 +328,7 @@ struct db_command db_show_cmds[] = {
{ "kmsg", ipc_kmsg_print, 0, 0 },
{ "msg", ipc_msg_print, 0, 0 },
{ "ipc_port", db_show_port_id, 0, 0 },
+ { "slabinfo", db_show_slab_info, 0, 0 },
{ (char *)0, }
};
diff --git a/ddb/db_output.c b/ddb/db_output.c
index be5319d..a34e807 100644
--- a/ddb/db_output.c
+++ b/ddb/db_output.c
@@ -146,7 +146,7 @@ db_putchar(int c) /* character to output */
cnputc(c);
db_output_position++;
if (db_max_width >= DB_MIN_MAX_WIDTH
- && db_output_position >= db_max_width-1) {
+ && db_output_position >= db_max_width) {
/* auto new line */
cnputc('\n');
db_output_position = 0;
diff --git a/device/cirbuf.c b/device/cirbuf.c
index dfb06df..391297c 100644
--- a/device/cirbuf.c
+++ b/device/cirbuf.c
@@ -42,6 +42,8 @@
/* if c_cl == c_cf - 1, buffer is full */
#if DEBUG
+#include <mach/boolean.h>
+
boolean_t cb_check_enable = FALSE;
#define CB_CHECK(cb) if (cb_check_enable) cb_check(cb)
diff --git a/doc/mach.info b/doc/mach.info
index 24666d3..a6d817b 100644
--- a/doc/mach.info
+++ b/doc/mach.info
@@ -2,8 +2,8 @@ This is mach.info, produced by makeinfo version 6.0 from
mach.texi.
This file documents the GNU Mach microkernel.
- This is edition 0.4, last updated on 12 September 2015, of 'The GNU
-Mach Reference Manual', for version 1.5+git20150922.
+ This is edition 0.4, last updated on 30 October 2015, of 'The GNU
+Mach Reference Manual', for version 1.6.
Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
Inc.
@@ -39,126 +39,126 @@ END-INFO-DIR-ENTRY
Indirect:
-mach.info-1: 1643
-mach.info-2: 302570
+mach.info-1: 1629
+mach.info-2: 302528
Tag Table:
(Indirect)
-Node: Top1643
-Node: Introduction11284
-Node: Audience12115
-Node: Features13150
-Node: Overview14977
-Node: History16170
-Node: Installing16315
-Node: Binary Distributions17540
-Node: Compilation18348
-Node: Configuration19581
-Node: Cross-Compilation35992
-Node: Bootstrap36773
-Ref: Bootstrap-Footnote-137216
-Node: Bootloader37453
-Ref: Bootloader-Footnote-138733
-Node: Modules38819
-Node: Inter Process Communication39646
-Node: Major Concepts40269
-Node: Messaging Interface44074
-Node: Mach Message Call44804
-Node: Message Format48119
-Node: Exchanging Port Rights59311
-Ref: Exchanging Port Rights-Footnote-164873
-Node: Memory65045
-Ref: Memory-Footnote-168139
-Node: Message Send68481
-Ref: Message Send-Footnote-175503
-Node: Message Receive75786
-Ref: Message Receive-Footnote-185438
-Node: Atomicity85719
-Node: Port Manipulation Interface88493
-Node: Port Creation90048
-Node: Port Destruction94837
-Node: Port Names97980
-Node: Port Rights102227
-Node: Ports and other Tasks106016
-Node: Receive Rights110109
-Node: Port Sets117040
-Node: Request Notifications119443
-Node: Inherited Ports124247
-Node: Virtual Memory Interface127931
-Node: Memory Allocation129184
-Node: Memory Deallocation131709
-Node: Data Transfer133173
-Node: Memory Attributes136699
-Node: Mapping Memory Objects146138
-Node: Memory Statistics149447
-Node: External Memory Management151021
-Node: Memory Object Server151726
-Node: Memory Object Creation154435
-Node: Memory Object Termination158441
-Node: Memory Objects and Data161380
-Node: Memory Object Locking178526
-Node: Memory Object Attributes184421
-Node: Default Memory Manager190258
-Node: Threads and Tasks195980
-Node: Thread Interface196317
-Node: Thread Creation197313
-Node: Thread Termination198430
-Node: Thread Information198901
-Node: Thread Settings205000
-Node: Thread Execution206234
-Node: Scheduling213527
-Node: Thread Priority213882
-Node: Hand-Off Scheduling216516
-Node: Scheduling Policy221641
-Node: Thread Special Ports222973
-Node: Exceptions225419
-Node: Task Interface226289
-Node: Task Creation227301
-Node: Task Termination228636
-Node: Task Information229238
-Node: Task Execution236140
-Node: Task Special Ports240553
-Node: Syscall Emulation244407
-Node: Profiling245638
-Node: Host Interface249401
-Node: Host Ports250386
-Node: Host Information252459
-Node: Host Time257842
-Node: Host Reboot260509
-Node: Processors and Processor Sets261061
-Node: Processor Set Interface262039
-Node: Processor Set Ports262806
-Node: Processor Set Access263636
-Node: Processor Set Creation265896
-Node: Processor Set Destruction266923
-Node: Tasks and Threads on Sets267844
-Node: Processor Set Priority273011
-Node: Processor Set Policy274301
-Node: Processor Set Info275915
-Node: Processor Interface279728
-Node: Hosted Processors280453
-Node: Processor Control281444
-Node: Processors and Sets282910
-Node: Processor Info284788
-Node: Device Interface287530
-Node: Device Reply Server289145
-Node: Device Open290437
-Node: Device Close292560
-Node: Device Read293139
-Node: Device Write296058
-Node: Device Map298863
-Node: Device Status299754
-Node: Device Filter302570
-Node: Kernel Debugger308317
-Node: Operation309044
-Node: Commands312021
-Node: Variables325806
-Node: Expressions327194
-Node: Copying328543
-Node: Documentation License347772
-Node: GNU Free Documentation License348361
-Node: CMU License370760
-Node: Concept Index371995
-Node: Function and Data Index375841
+Node: Top1629
+Node: Introduction11256
+Node: Audience12087
+Node: Features13122
+Node: Overview14949
+Node: History16142
+Node: Installing16287
+Node: Binary Distributions17512
+Node: Compilation18320
+Node: Configuration19553
+Node: Cross-Compilation35964
+Node: Bootstrap36745
+Ref: Bootstrap-Footnote-137188
+Node: Bootloader37425
+Ref: Bootloader-Footnote-138705
+Node: Modules38791
+Node: Inter Process Communication39618
+Node: Major Concepts40241
+Node: Messaging Interface44046
+Node: Mach Message Call44776
+Node: Message Format48091
+Node: Exchanging Port Rights59283
+Ref: Exchanging Port Rights-Footnote-164845
+Node: Memory65017
+Ref: Memory-Footnote-168111
+Node: Message Send68453
+Ref: Message Send-Footnote-175475
+Node: Message Receive75758
+Ref: Message Receive-Footnote-185410
+Node: Atomicity85691
+Node: Port Manipulation Interface88465
+Node: Port Creation90020
+Node: Port Destruction94809
+Node: Port Names97952
+Node: Port Rights102199
+Node: Ports and other Tasks105988
+Node: Receive Rights110081
+Node: Port Sets117012
+Node: Request Notifications119415
+Node: Inherited Ports124219
+Node: Virtual Memory Interface127903
+Node: Memory Allocation129156
+Node: Memory Deallocation131681
+Node: Data Transfer133145
+Node: Memory Attributes136671
+Node: Mapping Memory Objects146110
+Node: Memory Statistics149419
+Node: External Memory Management150993
+Node: Memory Object Server151698
+Node: Memory Object Creation154407
+Node: Memory Object Termination158413
+Node: Memory Objects and Data161352
+Node: Memory Object Locking178498
+Node: Memory Object Attributes184393
+Node: Default Memory Manager190230
+Node: Threads and Tasks195952
+Node: Thread Interface196289
+Node: Thread Creation197285
+Node: Thread Termination198402
+Node: Thread Information198873
+Node: Thread Settings204972
+Node: Thread Execution206206
+Node: Scheduling213499
+Node: Thread Priority213854
+Node: Hand-Off Scheduling216488
+Node: Scheduling Policy221613
+Node: Thread Special Ports222945
+Node: Exceptions225391
+Node: Task Interface226261
+Node: Task Creation227273
+Node: Task Termination228608
+Node: Task Information229210
+Node: Task Execution236112
+Node: Task Special Ports240525
+Node: Syscall Emulation244379
+Node: Profiling245610
+Node: Host Interface249373
+Node: Host Ports250358
+Node: Host Information252431
+Node: Host Time257814
+Node: Host Reboot260481
+Node: Processors and Processor Sets261033
+Node: Processor Set Interface262011
+Node: Processor Set Ports262778
+Node: Processor Set Access263608
+Node: Processor Set Creation265868
+Node: Processor Set Destruction266895
+Node: Tasks and Threads on Sets267816
+Node: Processor Set Priority272983
+Node: Processor Set Policy274273
+Node: Processor Set Info275887
+Node: Processor Interface279700
+Node: Hosted Processors280425
+Node: Processor Control281416
+Node: Processors and Sets282882
+Node: Processor Info284760
+Node: Device Interface287502
+Node: Device Reply Server289117
+Node: Device Open290409
+Node: Device Close292532
+Node: Device Read293111
+Node: Device Write296030
+Node: Device Map298835
+Node: Device Status299726
+Node: Device Filter302528
+Node: Kernel Debugger308275
+Node: Operation309002
+Node: Commands311979
+Node: Variables325764
+Node: Expressions327152
+Node: Copying328501
+Node: Documentation License347730
+Node: GNU Free Documentation License348319
+Node: CMU License370718
+Node: Concept Index371953
+Node: Function and Data Index375799
End Tag Table
diff --git a/doc/mach.info-1 b/doc/mach.info-1
index 3965a56..9c8a62f 100644
--- a/doc/mach.info-1
+++ b/doc/mach.info-1
@@ -2,8 +2,8 @@ This is mach.info, produced by makeinfo version 6.0 from
mach.texi.
This file documents the GNU Mach microkernel.
- This is edition 0.4, last updated on 12 September 2015, of 'The GNU
-Mach Reference Manual', for version 1.5+git20150922.
+ This is edition 0.4, last updated on 30 October 2015, of 'The GNU
+Mach Reference Manual', for version 1.6.
Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
Inc.
@@ -45,8 +45,8 @@ Main Menu
This file documents the GNU Mach microkernel.
- This is edition 0.4, last updated on 12 September 2015, of 'The GNU
-Mach Reference Manual', for version 1.5+git20150922.
+ This is edition 0.4, last updated on 30 October 2015, of 'The GNU
+Mach Reference Manual', for version 1.6.
Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
Inc.
diff --git a/doc/mach.info-2 b/doc/mach.info-2
index 9804275..77f3fee 100644
--- a/doc/mach.info-2
+++ b/doc/mach.info-2
@@ -2,8 +2,8 @@ This is mach.info, produced by makeinfo version 6.0 from
mach.texi.
This file documents the GNU Mach microkernel.
- This is edition 0.4, last updated on 12 September 2015, of 'The GNU
-Mach Reference Manual', for version 1.5+git20150922.
+ This is edition 0.4, last updated on 30 October 2015, of 'The GNU
+Mach Reference Manual', for version 1.6.
Copyright (C) 2001, 2002, 2006, 2007, 2008 Free Software Foundation,
Inc.
diff --git a/doc/stamp-vti b/doc/stamp-vti
index dbd2e99..bf58005 100644
--- a/doc/stamp-vti
+++ b/doc/stamp-vti
@@ -1,4 +1,4 @@
address@hidden UPDATED 12 September 2015
address@hidden UPDATED-MONTH September 2015
address@hidden EDITION 1.5+git20150922
address@hidden VERSION 1.5+git20150922
address@hidden UPDATED 30 October 2015
address@hidden UPDATED-MONTH October 2015
address@hidden EDITION 1.6
address@hidden VERSION 1.6
diff --git a/doc/version.texi b/doc/version.texi
index dbd2e99..bf58005 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,4 +1,4 @@
address@hidden UPDATED 12 September 2015
address@hidden UPDATED-MONTH September 2015
address@hidden EDITION 1.5+git20150922
address@hidden VERSION 1.5+git20150922
address@hidden UPDATED 30 October 2015
address@hidden UPDATED-MONTH October 2015
address@hidden EDITION 1.6
address@hidden VERSION 1.6
diff --git a/i386/i386/debug.h b/i386/i386/debug.h
index e94649b..84397ba 100644
--- a/i386/i386/debug.h
+++ b/i386/i386/debug.h
@@ -23,10 +23,12 @@
#ifndef _I386_DEBUG_
#define _I386_DEBUG_
+#ifndef __ASSEMBLER__
/* Dump a saved state.
Probably a good idea to have this around
even when DEBUG isn't turned on. */
void dump_ss(const struct i386_saved_state *st);
+#endif /* __ASSEMBLER__ */
#ifdef DEBUG
diff --git a/i386/i386/debug_i386.c b/i386/i386/debug_i386.c
index 7657808..233caa7 100644
--- a/i386/i386/debug_i386.c
+++ b/i386/i386/debug_i386.c
@@ -128,21 +128,37 @@ debug_trace_dump(void)
splx(s);
}
-#include "syscall_sw.h"
+#include <kern/syscall_sw.h>
int syscall_trace = 0;
+task_t syscall_trace_task;
int
syscall_trace_print(int syscallvec, ...)
{
int syscallnum = syscallvec >> 4;
int i;
+ const mach_trap_t *trap = &mach_trap_table[syscallnum];
+
+ if (syscall_trace_task && syscall_trace_task != current_task())
+ goto out;
+
+ printf("0x%08x:0x%08x:%s(",
+ current_task(), current_thread(), trap->mach_trap_name);
+ for (i = 0; i < trap->mach_trap_arg_count; i++) {
+ unsigned long value = (&syscallvec)[1+i];
+ /* Use a crude heuristic to format pointers. */
+ if (value > 1024)
+ printf("0x%08x", value);
+ else
+ printf("%d", value);
+
+ if (i + 1 < trap->mach_trap_arg_count)
+ printf(", ");
+ }
+ printf(")\n");
- printf("syscall -%d:", syscallnum);
- for (i = 0; i < mach_trap_table[syscallnum].mach_trap_arg_count; i++)
- printf(" %08x", (&syscallvec)[1+i]);
- printf("\n");
-
+ out:
return syscallvec;
}
diff --git a/include/mach/time_value.h.orig b/include/mach/time_value.h.orig
deleted file mode 100644
index 0dfe382..0000000
--- a/include/mach/time_value.h.orig
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Mach Operating System
- * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
- * All Rights Reserved.
- *
- * Permission to use, copy, modify and distribute this software and its
- * documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
- * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or address@hidden
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie Mellon
- * the rights to redistribute these changes.
- */
-
-#ifndef _MACH_TIME_VALUE_H_
-#define _MACH_TIME_VALUE_H_
-
-#include <mach/machine/vm_types.h>
-
-/*
- * Time value returned by kernel.
- */
-
-struct time_value {
- integer_t seconds;
- integer_t microseconds;
-};
-typedef struct time_value time_value_t;
-
-/*
- * Macros to manipulate time values. Assume that time values
- * are normalized (microseconds <= 999999).
- */
-#define TIME_MICROS_MAX (1000000)
-
-#define time_value_assert(val) \
- assert(0 <= (val)->microseconds && (val)->microseconds < TIME_MICROS_MAX);
-
-#define time_value_add_usec(val, micros) { \
- time_value_assert(val); \
- if (((val)->microseconds += (micros)) \
- >= TIME_MICROS_MAX) { \
- (val)->microseconds -= TIME_MICROS_MAX; \
- (val)->seconds++; \
- } \
- time_value_assert(val); \
-}
-
-#define time_value_sub_usec(val, micros) { \
- time_value_assert(val); \
- if (((val)->microseconds -= (micros)) < 0) { \
- (val)->microseconds += TIME_MICROS_MAX; \
- (val)->seconds--; \
- } \
- time_value_assert(val); \
-}
-
-#define time_value_add(result, addend) { \
- time_value_assert(addend); \
- (result)->seconds += (addend)->seconds; \
- time_value_add_usec(result, (addend)->microseconds); \
- }
-
-#define time_value_sub(result, subtrahend) { \
- time_value_assert(subtrahend); \
- (result)->seconds -= (subtrahend)->seconds; \
- time_value_sub_usec(result, (subtrahend)->microseconds); \
- }
-
-/*
- * Time value available through the mapped-time interface.
- * Read this mapped value with
- * do {
- * secs = mtime->seconds;
- * __sync_synchronize();
- * usecs = mtime->microseconds;
- * __sync_synchronize();
- * } while (secs != mtime->check_seconds);
- */
-
-typedef struct mapped_time_value {
- integer_t seconds;
- integer_t microseconds;
- integer_t check_seconds;
-} mapped_time_value_t;
-
-#endif /* _MACH_TIME_VALUE_H_ */
diff --git a/kern/bootstrap.c b/kern/bootstrap.c
index aad0fb1..249c605 100644
--- a/kern/bootstrap.c
+++ b/kern/bootstrap.c
@@ -824,10 +824,18 @@ boot_script_task_resume (struct cmd *cmd)
int
boot_script_prompt_task_resume (struct cmd *cmd)
{
+#if ! MACH_KDB
char xx[5];
+#endif
+
+ printf ("Pausing for %s...\n", cmd->path);
- printf ("Hit return to resume %s...", cmd->path);
+#if ! MACH_KDB
+ printf ("Hit <return> to resume bootstrap.");
safe_gets (xx, sizeof xx);
+#else
+ SoftDebugger("Hit `c<return>' to resume bootstrap.");
+#endif
return boot_script_task_resume (cmd);
}
diff --git a/kern/mach_clock.c b/kern/mach_clock.c
index dba2320..c6e2d9d 100644
--- a/kern/mach_clock.c
+++ b/kern/mach_clock.c
@@ -232,8 +232,16 @@ void clock_interrupt(
int delta;
if (timedelta < 0) {
- delta = usec - tickdelta;
- timedelta += tickdelta;
+ if (usec > tickdelta) {
+ delta = usec - tickdelta;
+ timedelta += tickdelta;
+ } else {
+ /* Not enough time has passed, defer overflowing
+ * correction for later, keep only one microsecond
+ * delta */
+ delta = 1;
+ timedelta += usec - 1;
+ }
}
else {
delta = usec + tickdelta;
diff --git a/kern/sched_prim.h b/kern/sched_prim.h
index bb1865c..dfb2f54 100644
--- a/kern/sched_prim.h
+++ b/kern/sched_prim.h
@@ -176,7 +176,9 @@ void do_thread_scan(void);
thread_t choose_pset_thread(processor_t myprocessor, processor_set_t pset);
#if DEBUG
-void checkrq(run_queue_t rq, char *msg);
+#include <kern/sched.h> /* for run_queue_t */
+
+void checkrq(run_queue_t rq, const char *msg);
void thread_check(thread_t th, run_queue_t rq);
#endif /* DEBUG */
diff --git a/kern/slab.c b/kern/slab.c
index 1114cfa..4f32c8e 100644
--- a/kern/slab.c
+++ b/kern/slab.c
@@ -1433,15 +1433,18 @@ void kfree(vm_offset_t data, vm_size_t size)
}
}
-void slab_info(void)
+static void _slab_info(int (printx)(const char *fmt, ...))
{
struct kmem_cache *cache;
- vm_size_t mem_usage, mem_reclaimable;
+ vm_size_t mem_usage, mem_reclaimable, mem_total, mem_total_reclaimable;
+
+ mem_total = 0;
+ mem_total_reclaimable = 0;
- printf("cache obj slab bufs objs bufs "
- " total reclaimable\n"
- "name size size /slab usage count "
- " memory memory\n");
+ printx("cache obj slab bufs objs bufs"
+ " total reclaimable\n"
+ "name flags size size /slab usage count"
+ " memory memory\n");
simple_lock(&kmem_cache_list_lock);
@@ -1451,17 +1454,39 @@ void slab_info(void)
mem_usage = (cache->nr_slabs * cache->slab_size) >> 10;
mem_reclaimable = (cache->nr_free_slabs * cache->slab_size) >> 10;
- printf("%-19s %6lu %3luk %4lu %6lu %6lu %7uk %10uk\n",
- cache->name, cache->obj_size, cache->slab_size >> 10,
+ printx("%-20s %04x %7lu %3luk %4lu %6lu %6lu %7uk %10uk\n",
+ cache->name, cache->flags, cache->obj_size,
+ cache->slab_size >> 10,
cache->bufs_per_slab, cache->nr_objs, cache->nr_bufs,
mem_usage, mem_reclaimable);
simple_unlock(&cache->lock);
+
+ mem_total += mem_usage;
+ mem_total_reclaimable += mem_reclaimable;
}
simple_unlock(&kmem_cache_list_lock);
+
+ printx("total: %uk, reclaimable: %uk\n",
+ mem_total, mem_total_reclaimable);
}
+void slab_info(void)
+{
+ _slab_info(printf);
+}
+
+#if MACH_KDB
+#include <ddb/db_output.h>
+
+ void db_show_slab_info(void)
+{
+ _slab_info(db_printf);
+}
+
+#endif /* MACH_KDB */
+
#if MACH_DEBUG
kern_return_t host_slab_info(host_t host, cache_info_array_t *infop,
unsigned int *infoCntp)
diff --git a/kern/slab.h b/kern/slab.h
index c7be169..77db7c1 100644
--- a/kern/slab.h
+++ b/kern/slab.h
@@ -253,4 +253,8 @@ void slab_collect(void);
*/
void slab_info(void);
+#if MACH_KDB
+void db_show_slab_info(void);
+#endif /* MACH_KDB */
+
#endif /* _KERN_SLAB_H */
diff --git a/kern/syscall_sw.h b/kern/syscall_sw.h
index 87fc1bb..1edf1c7 100644
--- a/kern/syscall_sw.h
+++ b/kern/syscall_sw.h
@@ -37,15 +37,15 @@ typedef struct {
int mach_trap_arg_count;
int (*mach_trap_function)();
boolean_t mach_trap_stack;
- int mach_trap_unused;
+ const char *mach_trap_name;
} mach_trap_t;
extern mach_trap_t mach_trap_table[];
extern int mach_trap_count;
#define MACH_TRAP(name, arg_count) \
- { (arg_count), (int (*)()) (name), FALSE, 0 }
+ { (arg_count), (int (*)()) (name), FALSE, #name }
#define MACH_TRAP_STACK(name, arg_count) \
- { (arg_count), (int (*)()) (name), TRUE, 0 }
+ { (arg_count), (int (*)()) (name), TRUE, #name }
#endif /* _KERN_SYSCALL_SW_H_ */
diff --git a/version.m4 b/version.m4
index e545ca6..ef5ee1e 100644
--- a/version.m4
+++ b/version.m4
@@ -1,4 +1,4 @@
m4_define([AC_PACKAGE_NAME],[GNU Mach])
-m4_define([AC_PACKAGE_VERSION],[1.5+git20150922])
+m4_define([AC_PACKAGE_VERSION],[1.6])
m4_define([AC_PACKAGE_BUGREPORT],address@hidden)
m4_define([AC_PACKAGE_TARNAME],[gnumach])
--
Alioth's /usr/local/bin/git-commit-notice on
/srv/git.debian.org/git/pkg-hurd/gnumach.git