aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog101
-rw-r--r--FAQ.in2
-rw-r--r--Make-dist5
-rw-r--r--Makerules31
-rwxr-xr-xdebug/catchsegv.sh51
-rw-r--r--extra-lib.mk7
-rw-r--r--inet/protocols/rwhod.h3
-rw-r--r--libio/stdio.h3
-rw-r--r--manual/memory.texi20
-rw-r--r--manual/signal.texi3
-rw-r--r--manual/top-menu.texi7
-rw-r--r--posix/fnmatch.c183
-rw-r--r--posix/glob.h2
-rw-r--r--posix/regex.c2
-rw-r--r--shlib-versions3
-rw-r--r--stdio/Versions3
-rw-r--r--stdio/fputs.c3
-rw-r--r--stdio/stdio.h7
-rw-r--r--sysdeps/arm/dl-machine.h2
-rw-r--r--sysdeps/generic/glob.c190
-rw-r--r--sysdeps/generic/paths.h1
-rw-r--r--sysdeps/generic/segfault.c8
-rw-r--r--sysdeps/generic/sigcontextinfo.h2
-rw-r--r--sysdeps/generic/sigsuspend.c7
-rw-r--r--sysdeps/mach/hurd/dl-sysdep.c53
-rw-r--r--sysdeps/mach/hurd/i386/sigcontextinfo.h22
-rw-r--r--sysdeps/mach/hurd/sigsuspend.c6
-rw-r--r--sysdeps/posix/sigsuspend.c5
-rw-r--r--sysdeps/unix/sysv/linux/i386/sigcontextinfo.h2
-rw-r--r--sysdeps/unix/sysv/linux/paths.h1
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/sigpending.c37
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/sigstack.c3
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/sigwaitinfo.c2
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/sparc/sparc32/syscall.S2
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/syscalls.list4
-rw-r--r--timezone/leapseconds3
36 files changed, 554 insertions, 232 deletions
diff --git a/ChangeLog b/ChangeLog
index fe9d421510..c6b8fbd9b4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,104 @@
+1998-07-20 17:09 Ulrich Drepper <drepper@cygnus.com>
+
+ * shlib-versions: Remove definition for libSegFault.
+
+ * memory.texi: Comment out the relocating allocator description.
+ * manual/signal.texi: Remove reference to relocating allocator.
+ * manual/top-menu.texi: Regenerated.
+
+ * posix/fnmatch.c: Implement [: :] and change to recognize
+ ^ as negation only when not _POSIXLY_CORRECT.
+
+ * sysdeps/generic/glob.c: Add several optimizations.
+
+ * posix/glob.h: Undefine __PMT to prevent warnings.
+ Reported by Roland McGrath.
+
+ * posix/regex.c: Define namespace macros only for _LIBC.
+
+ * sysdeps/arm/dl-machine.h: Fix typo.
+
+ * sysdeps/unix/sysv/sysv4/solaris2/sigpending.c: New file.
+ * sysdeps/unix/sysv/sysv4/solaris2/sigstack.c: New file.
+ * sysdeps/unix/sysv/sysv4/solaris2/sigwaitinfo.c: New file.
+ * sysdeps/unix/sysv/sysv4/solaris2/syscalls.list: Add sigaltstack,
+ sigpending, sigqueue, and sigtimedwait.
+ * sysdeps/unix/sysv/sysv4/solaris2/sparc/sparc32/syscall.S: New file.
+
+ * timezone/leapseconds: Update from tzdata1998f.
+
+1998-07-18 Mark Kettenis <kettenis@phys.uva.nl>
+
+ * stdio/stdio.h [__USE_GNU]: Add prototype for fputs_unlocked.
+ * stdio/Versions [GLIBC_2.1]: Add fputs_unlocked.
+ * libio/stdio.h: Fix typo.
+
+1998-07-19 Roland McGrath <roland@baalperazim.frob.com>
+
+ * sysdeps/mach/hurd/dl-sysdep.c (_dl_sysdep_start): #if 0 out the
+ magic memobj port arg parsing stuff. Fix it someday when we are ready
+ to really use it.
+ (_dl_sysdep_output): New function, modified from _dl_sysdep_error.
+ (_dl_sysdep_error, _dl_sysdep_message, _dl_sysdep_fatal): Removed.
+
+1998-07-19 Roland McGrath <roland@baalperazim.frob.com>
+
+ * stdio/fputs.c: Add fputs_unlocked as weak alias for fputs.
+
+1998-07-19 Roland McGrath <roland@baalperazim.frob.com>
+
+ * sysdeps/posix/sigsuspend.c: Define __sigsuspend with sigsuspend as
+ a weak alias.
+ * sysdeps/mach/hurd/sigsuspend.c: Likewise.
+ * sysdeps/generic/sigsuspend.c: Likewise.
+
+1998-07-19 Roland McGrath <roland@baalperazim.frob.com>
+
+ * sysdeps/mach/hurd/i386/sigcontextinfo.h: New file.
+
+1998-07-19 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * Makerules (map-file): Don't use $(wildcard) to find the
+ generated version script, instead look in $(version-maps).
+ ($(common-objpfx)libc.so): Only depend on libc.map if versioning
+ is used.
+ * extra-lib.mk ($(objpfx)$(lib).so): Only depend on version script
+ if versioning is used. Don't use $(wildcard) to find the
+ generated version script, instead look in $(verson-maps).
+
+1998-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * sysdeps/generic/segfault.c: Rename GET_EIP to GET_PC. Remove
+ unused function handle.
+ * sysdeps/generic/sigcontextinfo.h: Rename GET_EIP to GET_PC.
+ * sysdeps/unix/sysv/linux/i386/sigcontextinfo.h: Likewise.
+ * debug/catchsegv.sh: Fix argument processing, quoting and various
+ typos. Put the crash info always in the current directory. Find
+ program in $PATH if it contains no directory component.
+ * Makerules (install-lib.so-versioned,
+ install-lib.so-unversioned): New variables.
+ (install-lib-nosubdir): Depend on unversioned libs in
+ slibdir, not libdir.
+
+1998-07-19 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * Make-dist (+tsrcs): Remove references to %-map variables and
+ *.map files. Add Versions in subdirs.
+ * Makerules (distinfo-vars): Don't write out %-map variables.
+
+1998-07-20 13:55 Ulrich Drepper <drepper@cygnus.com>
+
+ * inet/protocols/rwhod.h: Remove definition of _PATH_RWHODIR.
+ Include <paths.h> instead.
+ * sysdeps/generic/paths.h: Define _PATH_RWHODIR.
+ * sysdeps/unix/sysv/linux/paths.h: Likewise.
+ Reported by Dale Scheetz <dwarf@polaris.net>.
+
+1998-07-17 21:44 Ulrich Drepper <drepper@cygnus.com>
+
+ * catgets/open_catalog.c: Strictly check whether catalog file is
+ larger enough for the data. Reported by Andries.Brouwer@cwi.nl.
+
1998-07-17 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/unix/sysv/linux/m68k/sigcontextinfo.h: New file.
diff --git a/FAQ.in b/FAQ.in
index 3f6aa3aa79..eeeb2f546c 100644
--- a/FAQ.in
+++ b/FAQ.in
@@ -826,7 +826,7 @@ new type.
{UD,AJ} On Linux, the use of kernel headers is reduced to the minimum. This
gives Linus the ability to change the headers more freely. Also, user
-programs are not insulated from changes in the size of kernel data
+programs are now insulated from changes in the size of kernel data
structures.
For example, the sigset_t type is 32 or 64 bits wide in the kernel. In
diff --git a/Make-dist b/Make-dist
index 9f9531daae..ed1dec4d47 100644
--- a/Make-dist
+++ b/Make-dist
@@ -122,8 +122,7 @@ sources := $(filter-out $(addsuffix .c,$(basename $(.S.s))),$(sources)) $(.S.s)
$(+subdir-nodist) $(dont_distribute)
foo:=$(shell echo '+out=$(+out)' >&2; echo foofoo >&2)
+tsrcs := $(filter-out $(+out), $(sources) $(all-headers) $(distribute)) \
- $(foreach l,$(extra-libs),$($l-map)) \
- $(wildcard $(addsuffix .map,$(extra-libs))) $(+sysdeps)
+ $(+sysdeps)
foo:=$(shell echo 'made +tsrcs=$(+tsrcs)'>&2)
foo:=$(shell echo generated='$(generated)' >&2)
#generated := $(sort $(generated) $(generated:.S=.c) $(generated:.s=.c))
@@ -149,7 +148,7 @@ ifdef subdir
foo:=$(shell echo subdir foo >&2)
-+tsrcs := Makefile $(+tsrcs) \
++tsrcs := Makefile $(wildcard Versions) $(+tsrcs) \
$(addsuffix .c,$(others) $(tests) $(tests-static) $(test-srcs)) \
$(wildcard $(addsuffix .input,$(tests) (tests-static) $(test-srcs)) \
$(addsuffix .args,$(tests) $(tests-static) $(test-srcs)))
diff --git a/Makerules b/Makerules
index 9bf62c6cf6..ec6b12ccfd 100644
--- a/Makerules
+++ b/Makerules
@@ -350,8 +350,9 @@ ifeq (yes,$(build-shared))
# Reference map file only when versioning is selected and a map file name
# is given.
ifeq ($(versioning),yes)
-map-file = $(firstword $(wildcard $($(@F:.so=-map)) \
- $(common-objpfx)$(@F:.so=.map)))
+map-file = $(firstword $($(@F:.so=-map)) \
+ $(addprefix $(common-objpfx), \
+ $(filter $(@F:.so=.map),$(version-maps))))
load-map-file = $(map-file:%=-Wl,--version-script=%)
endif
@@ -370,8 +371,7 @@ $(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS) \
$(LDFLAGS.so) $(LDFLAGS-$(@F:lib%.so=%).so) \
-L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \
-Wl,--whole-archive \
- $(filter-out $(map-file) $(common-objpfx)$(@F:.so=.map) \
- $(+preinit) $(+postinit),$^) \
+ $(filter-out $(map-file) $(+preinit) $(+postinit),$^) \
$(no-whole-archive) $(LDLIBS-$(@F:lib%.so=%).so)
endef
@@ -411,9 +411,11 @@ $(common-objpfx)libc_pic.os: $(common-objpfx)libc_pic.a
$(common-objpfx)libc.so: $(elfobjdir)/soinit.os \
$(common-objpfx)libc_pic.os \
$(elfobjdir)/sofini.os \
- $(elfobjdir)/interp.os $(elfobjdir)/ld.so \
- $(common-objpfx)libc.map
+ $(elfobjdir)/interp.os $(elfobjdir)/ld.so
$(build-shlib)
+ifeq ($(versioning),yes)
+$(common-objpfx)libc.so: $(common-objpfx)libc.map
+endif
common-generated += libc.so libc_pic.os
ifdef libc.so-version
$(common-objpfx)libc.so$(libc.so-version): $(common-objpfx)libc.so
@@ -615,17 +617,22 @@ endef
install-lib.so := $(filter %.so,$(install-lib:%_pic.a=%.so))
install-lib := $(filter-out %.so %_pic.a,$(install-lib))
-ifeq (yes,$(build-shared))
-
-install-lib-nosubdir: $(install-lib.so:%=$(inst_libdir)/%)
+ifeq (yes,$(build-shared))
# Find which .so's have versions.
versioned := $(strip $(foreach so,$(install-lib.so),\
$(patsubst %,$(so),$($(so)-version))))
+install-lib.so-versioned := $(filter $(versioned), $(install-lib.so))
+install-lib.so-unversioned := $(filter-out $(versioned), $(install-lib.so))
+
+install-lib-nosubdir: $(install-lib.so-versioned:%=$(inst_libdir)/%) \
+ $(install-lib.so-unversioned:%=$(inst_slibdir)/%)
+
# Install all the unversioned shared libraries.
-$(addprefix $(inst_slibdir)/, $(filter-out $(versioned),$(install-lib.so))): \
- $(inst_slibdir)/%.so: $(objpfx)%.so $(+force); $(do-install-program)
+$(install-lib.so-unversioned:%=$(inst_slibdir)/%): $(inst_slibdir)/%.so: \
+ $(objpfx)%.so $(+force)
+ $(do-install-program)
ifneq ($(findstring -s,$(LN_S)),)
define make-link
@@ -954,7 +961,7 @@ echo > $@.new 'subdir := $(subdir)'
$(foreach var,subdir-dirs sources elided-routines sysdep_routines \
headers sysdep_headers distribute dont_distribute generated \
others tests test-srcs extra-libs $(extra-libs:%=%-routines) \
- tests-static $(extra-libs:%=%-map) versioned \
+ tests-static versioned \
$(addprefix install-,lib lib.so data bin sbin others),
echo >> $@.new '$(subdir)-$(var) := $($(var))'
echo >> $@.new '$(var) = $$($(subdir)-$(var))')
diff --git a/debug/catchsegv.sh b/debug/catchsegv.sh
index 26407a7ae6..48c447b039 100755
--- a/debug/catchsegv.sh
+++ b/debug/catchsegv.sh
@@ -19,9 +19,14 @@
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
+if test $# -eq 0; then
+ echo "$0: missing programm name" >&2
+ echo "Try \`$0 --help' for more information." >&2
+ exit 1
+fi
+
prog="$1"
shift
-args="$*"
if test $# -eq 0; then
case "$prog" in
@@ -45,31 +50,43 @@ Written by Ulrich Drepper.'
esac
fi
-LD_PRELOAD="${LD_PRELOAD:+${LD_PRELOAD}:}@SLIB@/libSegFault.so@SOVER@"
-export LD_PRELOAD
-SEGFAULT_USE_ALTSTACK=1
-export SEGFAULT_USE_ALTSTACK
-SEGFAULT_OUTPUT_NAME="${TMPDIR:-/tmp}/`basename $prog`.segv.$$"
-export SEGFAULT_OUTPUT_NAME
+segv_output=`basename "$prog"`.segv.$$
-$prog $args
+LD_PRELOAD=${LD_PRELOAD:+${LD_PRELOAD}:}@SLIB@/libSegFault.so \
+SEGFAULT_USE_ALTSTACK=1 \
+SEGFAULT_OUTPUT_NAME=$segv_output \
+"$prog" ${1+"$@"}
exval=$?
-unset LD_PRELOAD
-# Check for an segmentation error.
-if test $exval -eq 139; then
+# Check for a segmentation error.
+if test $exval -eq 139 && test -f "$segv_output"; then
# We caught a segmentation error. The output is in the file with the
# name we have in SEGFAULT_OUTPUT_NAME. In the output the names of
# functions in shared objects are available, but names in the static
# part of the program are not. We use addr2line to get this information.
+ case $prog in
+ */*) ;;
+ *)
+ old_IFS=$IFS
+ IFS=:
+ for p in $PATH; do
+ test -n "$p" || p=.
+ if test -f "$p/$prog"; then
+ prog=$p/$prog
+ break
+ fi
+ done
+ IFS=$old_IFS
+ ;;
+ esac
(read line; echo "$line"
read line; echo "$line"
while read line; do
case "$line" in
- [*) addr="`echo $line | sed 's/^\[\(.*\)\]$/\1/'`"
- complete="`addr2line -f -e $prog $addr 2>/dev/null`"
- if test $? -eq 0; then
- echo "`echo $complete|sed 's/\(.*\) \(.*\)/\2(\1)/;'`$line"
+ [*) addr=`echo $line | sed 's/^\[\(.*\)\]$/\1/'`
+ complete=`addr2line -f -e "$prog" $addr 2>/dev/null`
+ if test $? -eq 0; then
+ echo "`echo "$complete"|sed 'N;s/\(.*\)\n\(.*\)/\2(\1)/;'`$line"
else
echo "$line"
fi
@@ -77,8 +94,8 @@ if test $exval -eq 139; then
*) echo "$line"
;;
esac
- done) < $SEGFAULT_OUTPUT_NAME
- rm $SEGFAULT_OUTPUT_NAME
+ done) < "$segv_output"
+ rm -f "$segv_output"
fi
exit $exval
diff --git a/extra-lib.mk b/extra-lib.mk
index 0b79d4a459..87d4fa3863 100644
--- a/extra-lib.mk
+++ b/extra-lib.mk
@@ -49,7 +49,12 @@ endef
object-suffixes-left = $(object-suffixes-$(lib))
include $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-$(lib)))
+ifeq ($(versioning),yes)
# Add the version script to the dependencies of the shared library.
-$(objpfx)$(lib).so: $(firstword $(wildcard $($(lib)-map) $(lib).map $(..)$(lib).map))
+$(objpfx)$(lib).so: $(firstword $($(lib)-map) \
+ $(addprefix $(common-objpfx), \
+ $(filter $(lib).map, \
+ $(version-maps))))
+endif
endif
diff --git a/inet/protocols/rwhod.h b/inet/protocols/rwhod.h
index e5d9f991a8..ad790fc9a9 100644
--- a/inet/protocols/rwhod.h
+++ b/inet/protocols/rwhod.h
@@ -65,6 +65,7 @@ struct whod {
#define WHODVERSION 1
#define WHODTYPE_STATUS 1 /* host status */
-#define _PATH_RWHODIR "/var/rwho"
+/* We used to define _PATH_RWHOD here but it's now in <paths.h>. */
+#include <paths.h>
#endif /* protocols/rwhod.h */
diff --git a/libio/stdio.h b/libio/stdio.h
index 87ca35b068..a3ae40b536 100644
--- a/libio/stdio.h
+++ b/libio/stdio.h
@@ -518,10 +518,11 @@ extern int fputs __P ((__const char *__restrict __s,
FILE *__restrict __stream));
#ifdef __USE_GNU
-/* This function does the same as `fgets' but does not lock the stream. */
+/* This function does the same as `fputs' but does not lock the stream. */
extern int fputs_unlocked __P ((__const char *__restrict __s,
FILE *__restrict __stream));
#endif
+
/* Write a string, followed by a newline, to stdout. */
extern int puts __P ((__const char *__s));
diff --git a/manual/memory.texi b/manual/memory.texi
index b87bc3f160..a3cf3724b3 100644
--- a/manual/memory.texi
+++ b/manual/memory.texi
@@ -38,8 +38,6 @@ will be freed automatically. @xref{Variable Size Automatic}.
* Variable Size Automatic:: Allocation of variable-sized blocks
of automatic storage that are freed when the
calling function returns.
-* Relocating Allocator:: Waste less memory, if you can tolerate
- automatic relocation of the blocks you get.
@end menu
@node Memory Concepts
@@ -2030,7 +2028,8 @@ within one function, exiting a scope in which a variable-sized array was
declared frees all blocks allocated with @code{alloca} during the
execution of that scope.
-
+@ignore
+@c This was never actually implemented. -zw
@node Relocating Allocator
@section Relocating Allocator
@@ -2040,10 +2039,10 @@ space it uses is more than the amount the program asks for. The
@dfn{relocating memory allocator} achieves very low overhead by moving
blocks in memory as necessary, on its own initiative.
-@menu
-* Relocator Concepts:: How to understand relocating allocation.
-* Using Relocator:: Functions for relocating allocation.
-@end menu
+@c @menu
+@c * Relocator Concepts:: How to understand relocating allocation.
+@c * Using Relocator:: Functions for relocating allocation.
+@c @end menu
@node Relocator Concepts
@subsection Concepts of Relocating Allocation
@@ -2085,7 +2084,7 @@ extensions.
@comment malloc.h
@comment GNU
-@deftypefun {void *} r_alloc (void **@var{handleptr}, size_t @var{size})
+@c @deftypefun {void *} r_alloc (void **@var{handleptr}, size_t @var{size})
This function allocates a relocatable block of size @var{size}. It
stores the block's address in @code{*@var{handleptr}} and returns
a non-null pointer to indicate success.
@@ -2096,7 +2095,7 @@ in @code{*@var{handleptr}}, and returns a null pointer.
@comment malloc.h
@comment GNU
-@deftypefun void r_alloc_free (void **@var{handleptr})
+@c @deftypefun void r_alloc_free (void **@var{handleptr})
This function is the way to free a relocatable block. It frees the
block that @code{*@var{handleptr}} points to, and stores a null pointer
in @code{*@var{handleptr}} to show it doesn't point to an allocated
@@ -2105,7 +2104,7 @@ block any more.
@comment malloc.h
@comment GNU
-@deftypefun {void *} r_re_alloc (void **@var{handleptr}, size_t @var{size})
+@c @deftypefun {void *} r_re_alloc (void **@var{handleptr}, size_t @var{size})
The function @code{r_re_alloc} adjusts the size of the block that
@code{*@var{handleptr}} points to, making it @var{size} bytes long. It
stores the address of the resized block in @code{*@var{handleptr}} and
@@ -2114,6 +2113,7 @@ returns a non-null pointer to indicate success.
If enough memory is not available, this function returns a null pointer
and does not modify @code{*@var{handleptr}}.
@end deftypefun