From 9afc8a596405de12ff3c66e13460b300d95eb74c Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 30 Mar 1998 13:01:46 +0000 Subject: [PATCH] Update. 1998-03-30 12:53 Ulrich Drepper * sysdeps/i386/i486/bits/string.h (__strcat_c) [__i686__]: Correct scanning for \0. (__strncat_g): Add i686 specific code. 1998-03-30 Andreas Jaeger * manual/install.texi (Reporting Bugs): Ask to include section names in reports. 1998-03-28 Andreas Schwab * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): Emit guard against direct inclusion. 1998-03-28 Andreas Schwab Rework support for libc_nonshared.a: * Makeconfig (object-suffixes-for-libc): New variable. * Rules: Remove handling of static-only and shared-only routines. * Makerules: Handle them here instead. Use object-suffixes-for-libc instead of object-suffixes when dealing with libc objects. (object-suffixes-for-rules): Remove variable. (elide-routines.oS): Elide all routines except static-only routines. ($(objpfx)stamp.oS): Special rule for when static-only-routines is empty. (installed-libcs): Remove special case for .oS. (rmobjs): Likewise. 1998-03-28 Andreas Schwab * Makefile (do-collate-test, do-xfrm-test, do-tst-fmon, do-tst-rpmatch): New targets. (test): Use them. (install-locales): Ignore comment lines. 1998-03-28 Andreas Schwab * elf/Makefile ($(objpfx)ld.so): Depend on version script. ($(objpfx)trusted-dirs.h): Depend also on $(..)Makeconfig. ($(objpfx)rtldtbl.h): Likewise. (CPPFLAGS-dl-load.c): Fix reference to object directory. 1998-03-30 09:36 Ulrich Drepper * manual/string.texi (Finding Tokens in a String): Extend strsep description and correct example. 1998-03-28 Andreas Schwab * manual/socket.texi: Remove misguided explicit line breaks and fix the formatting problem instead by reformulating the paragraphs. * manual/filesys.texi: Likewise. * manual/conf.texi: Likewise. Don't typeset table with index fonts, that looks worse than a minimally overfull line. 1998-03-28 Andreas Schwab * nscd/Makefile (nscd-modules): Move definition outside of conditional. * pwd/Makefile: Use have-thread-library to test for thread library. 1998-03-30 Andreas Jaeger * nss/getXXent_r.c (INTERNAL): Remove unused variable current_nip. * iconvdata/uhc.c (gconv): Remove unused variable idx. 1998-03-30 Ulrich Drepper * sysdeps/unix/sysv/linux/Dist: Add lddlibc4.c. --- ChangeLog | 78 +++++++++++++++++++++++++++ Makeconfig | 24 ++++++--- Makerules | 90 +++++++++++++++++++------------- Rules | 33 ------------ elf/Makefile | 9 ++-- iconvdata/uhc.c | 1 - localedata/Makefile | 21 +++++--- manual/conf.texi | 9 +--- manual/filesys.texi | 5 +- manual/install.texi | 4 +- manual/socket.texi | 14 ++--- manual/string.texi | 11 ++++ nscd/Makefile | 5 +- nss/getXXent_r.c | 1 - pwd/Makefile | 2 +- sysdeps/i386/i486/bits/string.h | 29 ++++++++-- sysdeps/unix/sysv/linux/Dist | 1 + sysdeps/unix/sysv/linux/Makefile | 19 ++++--- 18 files changed, 232 insertions(+), 124 deletions(-) diff --git a/ChangeLog b/ChangeLog index 14b5008480..29a2c500f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,81 @@ +1998-03-30 12:53 Ulrich Drepper + + * sysdeps/i386/i486/bits/string.h (__strcat_c) [__i686__]: Correct + scanning for \0. + (__strncat_g): Add i686 specific code. + +1998-03-30 Andreas Jaeger + + * manual/install.texi (Reporting Bugs): Ask to include section + names in reports. + +1998-03-28 Andreas Schwab + + * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): Emit + guard against direct inclusion. + +1998-03-28 Andreas Schwab + + Rework support for libc_nonshared.a: + * Makeconfig (object-suffixes-for-libc): New variable. + * Rules: Remove handling of static-only and shared-only routines. + * Makerules: Handle them here instead. Use + object-suffixes-for-libc instead of object-suffixes when dealing + with libc objects. + (object-suffixes-for-rules): Remove variable. + (elide-routines.oS): Elide all routines except static-only + routines. + ($(objpfx)stamp.oS): Special rule for when static-only-routines is + empty. + (installed-libcs): Remove special case for .oS. + (rmobjs): Likewise. + +1998-03-28 Andreas Schwab + + * Makefile (do-collate-test, do-xfrm-test, do-tst-fmon, + do-tst-rpmatch): New targets. + (test): Use them. + (install-locales): Ignore comment lines. + +1998-03-28 Andreas Schwab + + * elf/Makefile ($(objpfx)ld.so): Depend on version script. + ($(objpfx)trusted-dirs.h): Depend also on $(..)Makeconfig. + ($(objpfx)rtldtbl.h): Likewise. + (CPPFLAGS-dl-load.c): Fix reference to object directory. + +1998-03-30 09:36 Ulrich Drepper + + * manual/string.texi (Finding Tokens in a String): Extend strsep + description and correct example. + +1998-03-28 Andreas Schwab + + * manual/socket.texi: Remove misguided explicit line breaks and + fix the formatting problem instead by reformulating the + paragraphs. + * manual/filesys.texi: Likewise. + * manual/conf.texi: Likewise. Don't typeset table with index + fonts, that looks worse than a minimally overfull line. + +1998-03-28 Andreas Schwab + + * nscd/Makefile (nscd-modules): Move definition outside of + conditional. + + * pwd/Makefile: Use have-thread-library to test for thread + library. + +1998-03-30 Andreas Jaeger + + * nss/getXXent_r.c (INTERNAL): Remove unused variable current_nip. + + * iconvdata/uhc.c (gconv): Remove unused variable idx. + +1998-03-30 Ulrich Drepper + + * sysdeps/unix/sysv/linux/Dist: Add lddlibc4.c. + 1998-03-29 Ulrich Drepper * nss/getXXent_r.c: Correctly handle failing setXXent function. diff --git a/Makeconfig b/Makeconfig index e20056ecd4..66a0463420 100644 --- a/Makeconfig +++ b/Makeconfig @@ -571,7 +571,7 @@ endif # Various things use $(object-suffixes) to know what all to make. # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) # to pass different flags for each flavor. -libtypes = $(foreach o,$(object-suffixes-for-rules),$(libtype$o)) +libtypes = $(foreach o,$(object-suffixes),$(libtype$o)) all-object-suffixes := .o .os .op .og .ob .oS object-suffixes := ifeq (yes,$(build-static)) @@ -589,13 +589,6 @@ CFLAGS-.os = $(filter %frame-pointer,$(+cflags)) $(pic-ccflag) libtype.os := lib%_pic.a # This can be changed by a sysdep makefile pic-ccflag = -fPIC -# Special library that contains the static-only routines for libc. -libtype.oS = lib%_nonshared.a -# Must build the routines as PIC, though, because they can end up in (users') -# shared objects. We don't want to use CFLAGS-os because users may, for -# example, make that processor-specific. -CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag) -CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC endif ifeq (yes,$(build-profile)) # Under --enable-profile, we will build a static library of profiled objects. @@ -625,6 +618,21 @@ CFLAGS-.ob = -g -fbounded-pointers libtype.ob = lib%_b.a endif +object-suffixes-for-libc := $(object-suffixes) + +ifeq (yes,$(build-shared)) +# Build special library that contains the static-only routines for libc. +object-suffixes-for-libc += .oS + +# Must build the routines as PIC, though, because they can end up in (users') +# shared objects. We don't want to use CFLAGS-os because users may, for +# example, make that processor-specific. +CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag) +CPPFLAGS-.oS = $(CPPFLAGS-.o) +libtype.oS = lib%_nonshared.a +endif + + +gnu-stabs = $(shell echo>&2 '*** BARF ON ME') ifndef BUILD_CC diff --git a/Makerules b/Makerules index 62cceac1c6..3a34da4150 100644 --- a/Makerules +++ b/Makerules @@ -172,12 +172,6 @@ endef $(common-objpfx)dummy.d: echo '# .s files cannot contain includes, so they need no deps.' > $@ -object-suffixes-for-rules := $(object-suffixes) - -ifeq (yes,$(build-shared)) -object-suffixes-for-rules += .oS -endif - # It matters that this set of rules, for compiling from sources in # the current directory (the $srcdir/$subdir) come before the # generated sysdep rules in included from sysd-rules below. When @@ -186,21 +180,21 @@ endif define o-iterator-doit $(objpfx)%$o: %.S $(before-compile); $$(compile-command.S) endef -object-suffixes-left := $(object-suffixes-for-rules) +object-suffixes-left := $(object-suffixes-for-libc) include $(o-iterator) $(objpfx)%.d: %.S $(before-compile); $(+make-deps) define o-iterator-doit $(objpfx)%$o: %.s $(before-compile); $$(compile-command.s) endef -object-suffixes-left := $(object-suffixes-for-rules) +object-suffixes-left := $(object-suffixes-for-libc) include $(o-iterator) $(objpfx)%.d: %.s $(common-objpfx)dummy.d; $(make-dummy-dep) define o-iterator-doit $(objpfx)%$o: %.c $(before-compile); $$(compile-command.c) endef -object-suffixes-left := $(object-suffixes-for-rules) +object-suffixes-left := $(object-suffixes-for-libc) include $(o-iterator) $(objpfx)%.d: %.c $(before-compile); $(+make-deps) @@ -212,21 +206,21 @@ ifdef objpfx define o-iterator-doit $(objpfx)%$o: $(objpfx)%.S $(before-compile); $$(compile-command.S) endef -object-suffixes-left := $(object-suffixes-for-rules) +object-suffixes-left := $(object-suffixes-for-libc) include $(o-iterator) $(objpfx)%.d: $(objpfx)%.S $(before-compile); $(+make-deps) define o-iterator-doit $(objpfx)%$o: $(objpfx)%.s $(before-compile); $$(compile-command.s) endef -object-suffixes-left := $(object-suffixes-for-rules) +object-suffixes-left := $(object-suffixes-for-libc) include $(o-iterator) $(objpfx)%.d: $(objpfx)%.s $(common-objpfx)dummy.d; $(make-dummy-dep) define o-iterator-doit $(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c) endef -object-suffixes-left := $(object-suffixes-for-rules) +object-suffixes-left := $(object-suffixes-for-libc) include $(o-iterator) $(objpfx)%.d: $(objpfx)%.c $(before-compile); $(+make-deps) endif @@ -379,6 +373,34 @@ $(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS) \ $(no-whole-archive) $(LDLIBS-$(@F:lib%.so=%).so) endef +ifndef libc.so-version +# Undefine this because it can't work when we libc.so is unversioned. +static-only-routines = +endif + +elide-routines.oS = $(filter-out $(static-only-routines),\ + $(routines) $(aux) $(sysdep_routines)) + +ifdef static-only-routines +# These routines are to be omitted from the shared library object, +# so we replace the PIC objects for them with the empty object file. +$(static-only-routines:%=$(objpfx)%.os): %.os: $(common-objpfx)empty.os + rm -f $@ + ln $< $@ +endif + +ifdef shared-only-routines +# If we have versioned code we don't need the old versions in any of the +# static libraries. +define o-iterator-doit +$(shared-only-routines:%=$(objpfx)%$o): %$o: $(common-objpfx)empty$o; + rm -f $$@ + ln $$< $$@ +endef +object-suffixes-left := $(filter-out .os,$(object-suffixes)) +include $(o-iterator) +endif + # Don't try to use -lc when making libc.so itself. # Also omits crti.o and crtn.o, which we do not want # since we define our own `.init' section specially. @@ -475,7 +497,7 @@ MAKEFLAGS := $(MAKEFLAGS)r # Make sure that object files are not removed # when they are intermediates between sources and library members. -.PRECIOUS: $(addprefix $(objpfx)%,$(object-suffixes)) +.PRECIOUS: $(addprefix $(objpfx)%,$(all-object-suffixes)) # Make sure that the parent library archive is never removed. .PRECIOUS: $(foreach l,$(libtypes),$(patsubst %,$(common-objpfx)$l,c)) @@ -508,7 +530,7 @@ o-objects = $(patsubst %.o,%$o,$(filter-out $(patsubst %,$(objpfx)%.o,\ $(elide-routines$o)),\ $(objects))) -libobjs: $(foreach o,$(object-suffixes),\ +libobjs: $(foreach o,$(object-suffixes-for-libc),\ $(common-objpfx)$(patsubst %,$(libtype$o),c)(\ $(notdir $(o-objects)))) lib-noranlib: libobjs @@ -517,8 +539,8 @@ others: $(addprefix $(objpfx),$(install-lib)) ifndef objects # Create the stamp$o files to keep the parent makefile happy. -subdir_lib: $(foreach o,$(object-suffixes),$(objpfx)stamp$o) -$(foreach o,$(object-suffixes),$(objpfx)stamp$o): +subdir_lib: $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o) +$(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o): $(make-target-directory) rm -f $@; > $@ else @@ -532,7 +554,7 @@ $(common-objpfx)$(patsubst %,$(libtype$o),c)(\ $(addsuffix .%,$(filter-out $(elide-routines$o),$(notdir $(objects:.o=))))): \ $(objpfx)stamp.% ; endef -object-suffixes-left := $(object-suffixes) +object-suffixes-left := $(object-suffixes-for-libc) include $(o-iterator) # The pattern rule tells Make to remake $(objpfx)stamp.% as @@ -544,7 +566,11 @@ include $(o-iterator) define o-iterator-doit $(objpfx)stamp$o: $(objpfx)stamp%: $(o-objects); $$(do-ar) endef +ifdef static-only-routines +object-suffixes-left := $(object-suffixes-for-libc) +else object-suffixes-left := $(object-suffixes) +endif include $(o-iterator) define do-ar topdir=`cd $(..).; pwd`; \ @@ -558,6 +584,13 @@ O%-lib = $(..)$(patsubst %,$(libtype$*),c) endif +ifndef static-only-routines +subdir_lib: $(objpfx)stamp.oS +$(objpfx)stamp.oS: + $(make-target-directory) + rm -f $@; > $@ +endif + # Rules to update the $(ar-symtab-name) member with ranlib, # one for each object flavor. define o-iterator-doit @@ -573,22 +606,13 @@ subdirs-stamps := $(foreach d,$(subdirs),$(common-objpfx)$d/stamp%) subdirs-stamp-o = $(subst %,$o,$(subdirs-stamps)) $(subdirs-stamps): subdir_lib; endif -object-suffixes-left = $(object-suffixes) +object-suffixes-left = $(object-suffixes-for-libc) include $(o-iterator) -ifeq (yes,$(build-shared)) -$(common-objpfx)$(patsubst %,$(libtype.oS),c)($(ar-symtab-name)): \ - $(common-objpfx)$(patsubst %,$(libtype.oS),c)(\ - $(patsubst %,%.oS,$(static-only-routines))) \ - $(wildcard $(foreach d,$(subdirs),$(common-objpfx)$d/stamp.oS)) - $(SHELL) $(..)./autolock.sh \ - $(common-objpfx)$(patsubst %,$(libtype.oS),c).lck \ - $(RANLIB) $(common-objpfx)$(patsubst %,$(libtype.oS),c) -endif # This makes all the object files. .PHONY: objects objs -objects objs: $(foreach o,$(object-suffixes),$(o-objects)) \ +objects objs: $(foreach o,$(object-suffixes-for-libc),$(o-objects)) \ $(addprefix $(objpfx),$(extra-objs)) # Canned sequence for building an extra library archive. @@ -632,14 +656,9 @@ endef # should install libc.a; this way "make install" in a subdir is guaranteed # to install everything it changes. ifdef objects -installed-libcs := $(foreach o,$(object-suffixes),\ +installed-libcs := $(foreach o,$(filter-out .so,$(object-suffixes-for-libc)),\ $(inst_libdir)/$(patsubst %,$(libtype$o),\ $(libprefix)$(libc-name))) -installed-libcs := $(filter-out %_pic.a,$(installed-libcs)) -ifdef libc.so-version -installed-libcs += $(inst_libdir)/$(patsubst %,$(libtype.oS),\ - $(libprefix)$(libc-name)) -endif install: $(installed-libcs) $(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(make-target-directory) @@ -925,9 +944,8 @@ common-mostlyclean: -rm -f core $(common-objpfx)stub-$(subdir) $(rmobjs) define rmobjs -$(foreach o,$(object-suffixes), +$(foreach o,$(object-suffixes-for-libc), -rm -f $(objpfx)stamp$o $(o-objects)) --rm -f $(objpfx)stamp.oS $(patsubst %,$(objpfx)%.oS,$(static-only-routines)) endef # Also remove the dependencies and generated source files. diff --git a/Rules b/Rules index d9efdc2b75..8ff4955cbf 100644 --- a/Rules +++ b/Rules @@ -188,36 +188,3 @@ $(common-objpfx)dummy$o: $(common-objpfx)dummy.c $(before-compile); endef object-suffixes-left := $(object-suffixes) include $(o-iterator) - -ifndef libc.so-version -# Undefine this because it can't work when we libc.so is unversioned. -static-only-routines = -endif - -ifdef static-only-routines -# These routines are to be omitted from the shared library object, -# so we replace the PIC objects for them with the empty object file. -$(static-only-routines:%=$(objpfx)%.os): %.os: $(common-objpfx)empty.os - rm -f $@ - ln $< $@ - touch $@ - -subdir_lib: $(objpfx)stamp.oS -$(objpfx)stamp.oS: $(objpfx)stamp%: $(static-only-routines:%=$(objpfx)%.oS) - $(do-ar) -$(common-objpfx)$(patsubst %,$(libtype.oS),c)(\ -$(addsuffix .%,$(static-only-routines))): $(objpfx)stamp.%; -endif - -ifdef shared-only-routines -# If we have versioned code we don't need the old versions in any of the -# static libraries. -define o-iterator-doit -$(shared-only-routines:%=$(objpfx)%$o): %$o: $(common-objpfx)empty$o; - rm -f $$@ - ln $$< $$@ - touch $$@ -endef -object-suffixes-left := $(filter-out .os,$(object-suffixes)) -include $(o-iterator) -endif diff --git a/elf/Makefile b/elf/Makefile index e5c409513b..106e8631c2 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -110,7 +110,8 @@ $(rtld-ldscript): $(rtld-ldscript-in) $(rtld-parms) -e 's#@@rtld-base@@#$(rtld-base)#' $< >$@ endif -$(objpfx)ld.so: $(objpfx)librtld.os $(addprefix $(objpfx),$(rtld-ldscript)) $(load-map-file) +$(objpfx)ld.so: $(objpfx)librtld.os $(addprefix $(objpfx),$(rtld-ldscript)) \ + $(ld-map) $(rtld-link) -Wl,-soname=$(rtld-installed-name) define rtld-link @@ -136,18 +137,18 @@ endif # libraries when using LD_LIBRARY_PATH in a setuid program. The user can # add directories to the list by defining $(user-defined-trusted-dirs) # before starting make. -$(objpfx)trusted-dirs.h: Makefile +$(objpfx)trusted-dirs.h: Makefile $(..)Makeconfig $(make-target-directory) (for dir in `echo "$(default-rpath) $(user-defined-trusted-dirs)" | \ sed 's/:/ /g'`; do \ echo " \"$$dir\","; \ done;) > $@T mv -f $@T $@ -$(objpfx)rtldtbl.h: Makefile genrtldtbl.awk +$(objpfx)rtldtbl.h: Makefile $(..)Makeconfig genrtldtbl.awk $(make-target-directory) echo "$(default-rpath)" | awk -f genrtldtbl.awk > $@T mv -f $@T $@ -CPPFLAGS-dl-load.c = -I$(objdir)/$(subdir) +CPPFLAGS-dl-load.c = -I$(objpfx). CFLAGS-dl-load.c += -Wno-uninitialized # Specify the dependencies of libdl.so; its commands come from the generic diff --git a/iconvdata/uhc.c b/iconvdata/uhc.c index 1845100224..c64ff1b0af 100644 --- a/iconvdata/uhc.c +++ b/iconvdata/uhc.c @@ -2730,7 +2730,6 @@ gconv (struct gconv_step *step, struct gconv_step_data *data, /* Two-byte character. First test whether the next character is also available. */ int inchar2; - int idx; if (cnt + 1 >= inchars) { diff --git a/localedata/Makefile b/localedata/Makefile index fbe40ee8d8..6e9bc20f1b 100644 --- a/localedata/Makefile +++ b/localedata/Makefile @@ -60,12 +60,16 @@ $(inst_i18ndir)/locales/%: locales/%; $(do-install) ifeq (no,$(cross-compiling)) -tests: $(objpfx)collate-test $(objpfx)xfrm-test $(objpfx)tst-fmon \ - $(objpfx)tst-rpmatch - $(SHELL) -e sort-test.sh $(common-objpfx) $(test-input) - $(SHELL) -e tst-fmon.sh $(common-objpfx) tst-fmon.data - $(SHELL) -e tst-locale.sh $(common-objpfx) - $(SHELL) -e tst-rpmatch.sh $(common-objpfx) +.PHONY: do-collate-test do-xfrm-test do-tst-fmon do-tst-rpmatch +tests: do-collate-test do-xfrm-test do-tst-fmon do-tst-rpmatch +do-collate-test: sort-test.sh $(objpfx)collate-test $(test-input) + $(SHELL) -e $< $(common-objpfx) $(test-input) +do-xfrm-test: tst-fmon.sh $(objpfx)xfrm-test tst-fmon.data + $(SHELL) -e $< $(common-objpfx) tst-fmon.data +do-tst-fmon: tst-locale.sh $(objpfx)tst-fmon $(ld-test-srcs) + $(SHELL) -e $< $(common-objpfx) +do-tst-rpmatch: tst-rpmatch.sh $(objpfx)tst-rpmatch + $(SHELL) -e $< $(common-objpfx) endif # Sometimes the whole collection of locale files should be installed. @@ -75,6 +79,7 @@ else LOCALEDEF=$(common-objpfx)locale/localedef endif install-locales: - (while read locale charset; do \ + while read locale charset; do \ + case $$locale in \#*) continue;; esac; \ $(LOCALEDEF) -c -i $$locale -f $$charset $$locale; \ - done) < SUPPORTED + done < SUPPORTED diff --git a/manual/conf.texi b/manual/conf.texi index 34554bc35f..86e29a8e04 100644 --- a/manual/conf.texi +++ b/manual/conf.texi @@ -315,10 +315,6 @@ Here are the symbolic constants for use as the @var{parameter} argument to @code{sysconf}. The values are all integer constants (more specifically, enumeration type values). -@c This table runs a bit wide. -@iftex -@indexfonts -@end iftex @table @code @comment unistd.h @comment POSIX.1 @@ -608,7 +604,7 @@ Inquire about the parameter corresponding to @code{_POSIX_TTY_NAME_MAX}. @comment POSIX.1 @item _SC_THREAD_DESTRUCTOR_ITERATIONS Inquire about the parameter corresponding to -@code{_POSIX_THREAD_DESTRUCTOR_@*ITERATIONS}. +@code{_POSIX_THREAD_DESTRUCTOR_ITERATIONS}. @comment unistd.h @comment POSIX.1 @@ -964,9 +960,6 @@ Inquire about the parameter corresponding to @code{NL_SETMAX}. @item _SC_NL_TEXTMAX Inquire about the parameter corresponding to @code{NL_TEXTMAX}. @end table -@iftex -@textfonts -@end iftex @node Examples of Sysconf @subsection Examples of @code{sysconf} diff --git a/manual/filesys.texi b/manual/filesys.texi index 47f43adfb9..c3ab7c562a 100644 --- a/manual/filesys.texi +++ b/manual/filesys.texi @@ -86,9 +86,8 @@ Permission to read or search a component of the file name was denied. @end table @end deftypefun -Here is an example showing how you could implement the behavior of GNU's@* -@w{@code{getcwd (NULL, 0)}} using only the standard behavior of -@code{getcwd}: +You could implement the behavior of GNU's @w{@code{getcwd (NULL, 0)}} +using only the standard behavior of @code{getcwd}: @smallexample char * diff --git a/manual/install.texi b/manual/install.texi index 0efffde2b5..35e257e7bc 100644 --- a/manual/install.texi +++ b/manual/install.texi @@ -406,4 +406,6 @@ doesn't tell you, that's a bug in the manual. Report that too! If the function's behavior disagrees with the manual, then either the library or the manual has a bug, so report the disagreement. If you find any errors or omissions in this manual, please report them to the Internet -address @email{bug-glibc-manual@@gnu.org}. +address @email{bug-glibc-manual@@gnu.org}. If you refer to specific +sections when reporting on the manual, please include the section names +for easier identification. diff --git a/manual/socket.texi b/manual/socket.texi index dcd288b12c..cc8496995d 100644 --- a/manual/socket.texi +++ b/manual/socket.texi @@ -791,8 +791,8 @@ packaged inside a structure of type @code{struct in_addr}. It would be better if the usage were made consistent, but it is not hard to extract the integer from the structure or put the integer into a structure. -The following basic definitions for Internet addresses appear in the -header file@*@file{netinet/in.h}: +The following basic definitions for Internet addresses are declared in +the header file @file{netinet/in.h}: @pindex netinet/in.h @comment netinet/in.h @@ -868,10 +868,10 @@ own variables to this value. @pindex arpa/inet.h @noindent These additional functions for manipulating Internet addresses are -declared in@*@file{arpa/inet.h}. They represent Internet addresses in -network byte order; they represent network numbers and -local-address-within-network numbers in host byte order. -@xref{Byte Order}, for an explanation of network and host byte order. +declared in the header file @file{arpa/inet.h}. They represent Internet +addresses in network byte order; they represent network numbers and +local-address-within-network numbers in host byte order. @xref{Byte +Order}, for an explanation of network and host byte order. @comment arpa/inet.h @comment BSD @@ -2718,7 +2718,7 @@ this section. @pindex sys/socket.h @noindent Here is a table of socket-level option names; all are defined in the -header file@*@file{sys/socket.h}. +header file @file{sys/socket.h}. @table @code @comment sys/socket.h diff --git a/manual/string.texi b/manual/string.texi index f33303b356..dd3c68d294 100644 --- a/manual/string.texi +++ b/manual/string.texi @@ -1182,6 +1182,12 @@ moving pointer has to be done by the user. Successive calls to @var{delimiter}, returning the address of the next token and updating @var{string_ptr} to point to the beginning of the next token. +If the input string contains more than one character from +@var{delimiter} in a row @code{strsep} returns an empty string for each +pair of characters from @var{delimiter}. This means that a program +normally should test for @code{strsep} returning an empty string before +processing it. + This function was introduced in 4.3BSD and therefore is widely available. @end deftypefun @@ -1206,8 +1212,13 @@ token = strsep (&running, delimiters); /* token => "words" */ token = strsep (&running, delimiters); /* token => "separated" */ token = strsep (&running, delimiters); /* token => "by" */ token = strsep (&running, delimiters); /* token => "spaces" */ +token = strsep (&running, delimiters); /* token => "" */ +token = strsep (&running, delimiters); /* token => "" */ +token = strsep (&running, delimiters); /* token => "" */ token = strsep (&running, delimiters); /* token => "and" */ +token = strsep (&running, delimiters); /* token => "" */ token = strsep (&running, delimiters); /* token => "punctuation" */ +token = strsep (&running, delimiters); /* token => "" */ token = strsep (&running, delimiters); /* token => NULL */ @end smallexample diff --git a/nscd/Makefile b/nscd/Makefile index aace588def..f00b2f0b3e 100644 --- a/nscd/Makefile +++ b/nscd/Makefile @@ -25,13 +25,14 @@ routines := nscd_getpw_r nscd_getgr_r include ../Makeconfig +nscd-modules := nscd connections pwdcache getpwnam_r getpwuid_r grpcache \ + getgrnam_r getgrgid_r dbg_log nscd_conf nscd_stat + ifeq ($(have-thread-library),yes) others := nscd install-sbin := nscd -nscd-modules := nscd connections pwdcache getpwnam_r getpwuid_r grpcache \ - getgrnam_r getgrgid_r dbg_log nscd_conf nscd_stat extra-objs := $(nscd-modules:=.o) endif diff --git a/nss/getXXent_r.c b/nss/getXXent_r.c index 1d27cfc66a..5c8384f2fe 100644 --- a/nss/getXXent_r.c +++ b/nss/getXXent_r.c @@ -244,7 +244,6 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen, while (! no_more) { int is_last_nip = nip == last_nip; - service_user *current_nip = nip; status = (*fct) (resbuf, buffer, buflen, __errno_location () H_ERRNO_VAR); diff --git a/pwd/Makefile b/pwd/Makefile index 6bb5b66005..ca0e363422 100644 --- a/pwd/Makefile +++ b/pwd/Makefile @@ -29,7 +29,7 @@ routines := fgetpwent getpw putpwent \ include ../Rules # We can later add the names of other thread packages here. -ifneq (,$(findstring linuxthreads,$(add-ons))) +ifeq ($(have-thread-library),yes) CFLAGS-getpwuid_r.c = -DUSE_NSCD=1 CFLAGS-getpwnam_r.c = -DUSE_NSCD=1 diff --git a/sysdeps/i386/i486/bits/string.h b/sysdeps/i386/i486/bits/string.h index 60148b7da5..2cbac1029c 100644 --- a/sysdeps/i386/i486/bits/string.h +++ b/sysdeps/i386/i486/bits/string.h @@ -742,10 +742,11 @@ __strcat_c (char *__dest, __const char __src[], size_t __srclen) register unsigned long int __d0; register char *__tmp; __asm__ __volatile__ - ("repne; cmpsb" - : "=S" (__tmp), "=&c" (__d0) + ("repne; scasb" + : "=D" (__tmp), "=&c" (__d0) : "0" (__dest), "1" (0xffffffff), "a" (0) : "cc"); + --__tmp; #else register char *__tmp = __dest - 1; __asm__ __volatile__ @@ -798,8 +799,27 @@ __strcat_g (char *__dest, __const char *__src) __STRING_INLINE char * __strncat_g (char *__dest, __const char __src[], size_t __n) { - register char *__tmp = __dest - 1; + register char *__tmp = __dest; register char __dummy; +#ifdef __i686__ + __asm__ __volatile__ + ("repne; scasb\n" + "decl %1\n\t" + "1:\n\t" + "decl %3\n\t" + "js 2f\n\t" + "movb (%2),%b0\n\t" + "movsb\n\t" + "testb %b0,%b0\n\t" + "jne 1b\n\t" + "decl %1\n" + "2:\n\t" + "movb $0,(%1)" + : "=&a" (__dummy), "=&D" (__tmp), "=&S" (__src), "=&r" (__n) + : "0" (0), "1" (__tmp), "2" (__src), "3" (__n) + : "memory", "cc"); +#else + --__tmp; __asm__ __volatile__ ("1:\n\t" "cmpb $0,1(%1)\n\t" @@ -816,10 +836,11 @@ __strncat_g (char *__dest, __const char __src[], size_t __n) "jne 2b\n\t" "decl %1\n" "3:\n\t" - "movb $0,(%1)\n\t" + "movb $0,(%1)" : "=&q" (__dummy), "=&r" (__tmp), "=&r" (__src), "=&r" (__n) : "1" (__tmp), "2" (__src), "3" (__n) : "memory", "cc"); +#endif return __dest; } diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist index 709f9abae5..181ac53d5e 100644 --- a/sysdeps/unix/sysv/linux/Dist +++ b/sysdeps/unix/sysv/linux/Dist @@ -5,6 +5,7 @@ init-first.h kernel_sigaction.h kernel_stat.h kernel_termios.h +lddlibc4.c llseek.c s_pread64.c s_pwrite64.c diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 7a73ded547..2bc194384a 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -23,13 +23,18 @@ install-others += $(inst_includedir)/bits/syscall.h # Generate the list of SYS_* macros for the system calls (__NR_* macros). $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/sys/syscall.h rm -f $(@:.h=.d) - echo > $(@:.d=.h).new \ - '/* Generated at libc build time from kernel syscall list. */' - SUNPRO_DEPENDENCIES='$(@:.h=.d) $(patsubst $(objpfx)%,$$(objpfx)%,\ - $(@:.d=.h) $(@:.h=.d))' \ - $(CC) -E -x c $< -D_LIBC -dM | \ - sed -n >> $(@:.d=.h).new \ - 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' + { \ + echo '/* Generated at libc build time from kernel syscall list. */';\ + echo ''; \ + echo '#ifndef _SYSCALL_H'; \ + echo '# error "Never use directly; include instead."'; \ + echo '#endif'; \ + echo ''; \ + SUNPRO_DEPENDENCIES='$(@:.h=.d) $(patsubst $(objpfx)%,$$(objpfx)%,\ + $(@:.d=.h) $(@:.h=.d))' \ + $(CC) -E -x c $< -D_LIBC -dM | \ + sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p'; \ + } > $(@:.d=.h).new mv -f $(@:.d=.h).new $(@:.d=.h) $(inst_includedir)/bits/syscall.h: $(objpfx)syscall-list.h