aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog129
-rw-r--r--MakeTAGS2
-rw-r--r--Makeconfig24
-rw-r--r--Makefile23
-rw-r--r--Makerules45
-rw-r--r--Rules4
-rwxr-xr-xconfigure121
-rw-r--r--configure.in97
-rw-r--r--csu/gmon-start.c10
-rw-r--r--db/Makefile2
-rw-r--r--elf/dl-close.c3
-rw-r--r--elf/dl-open.c4
-rw-r--r--extra-lib.mk4
-rw-r--r--intl/l10nflist.c2
-rw-r--r--manual/Makefile2
-rw-r--r--manual/nss.texi2
-rw-r--r--stdio/fseek.c2
-rw-r--r--sysdeps/alpha/dl-machine.h13
-rw-r--r--sysdeps/alpha/elf/start.S19
-rw-r--r--sysdeps/m68k/fpu/k_cos.c12
-rw-r--r--sysdeps/m68k/fpu/k_sin.c16
-rw-r--r--sysdeps/m68k/fpu/k_tan.c16
-rw-r--r--sysdeps/mach/hurd/send.c8
-rw-r--r--sysdeps/mach/hurd/sendto.c13
-rw-r--r--sysdeps/posix/profil.c9
-rw-r--r--sysdeps/stub/ustat.c2
-rw-r--r--sysdeps/unix/Makefile8
-rw-r--r--sysdeps/unix/alpha/sysdep.S3
-rw-r--r--sysdeps/unix/make-syscalls.sh15
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Dist3
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Makefile2
-rw-r--r--sysdeps/unix/sysv/linux/alpha/init-first.h39
-rw-r--r--sysdeps/unix/sysv/linux/alpha/ioperm.c47
-rw-r--r--sysdeps/unix/sysv/linux/alpha/sys/io.h59
-rw-r--r--sysdeps/unix/sysv/linux/i386/Dist2
-rw-r--r--sysdeps/unix/sysv/linux/i386/init-first.h38
-rw-r--r--sysdeps/unix/sysv/linux/i386/mmap.S8
-rw-r--r--sysdeps/unix/sysv/linux/init-first.c30
-rw-r--r--version.c2
-rw-r--r--wcsmbs/wchar.h9
40 files changed, 601 insertions, 248 deletions
diff --git a/ChangeLog b/ChangeLog
index 12724a5fb5..086524d670 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,132 @@
+Thu Sep 5 03:20:42 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ Change configuration and Makefiles to allow add-ons to have a
+ sysdeps/ directory hierachy.
+ * configure.in: Test for sysdeps/ directory in add-ons. Before
+ all test and searches in these hierachies, too.
+ * Makeconfig (full-config-subdirs): Define based on $(config-sysdirs).
+ Extend with $(..) if not absolute path.
+ Use $(full-config-subdirs) where $(config-sysdirs) was used.
+ * Makefile ($(objpfx)sysd-dirs): Use config-sysdirs.
+ * MakeTAGS: Use $(full-config-subdirs).
+ * Makerules: Change comment to libc.so link script.
+ (sysdirs): Define based on $(full-config-subdirs).
+ (sysd-Makefile): Define using config-sysdirs.
+ (sysd-rules): Likewise.
+ * sysdeps/unix/Makefile (sysd-syscalls): Define based on +sysdep-dirs.
+ * sysdeps/unix/make-syscalls.sh: Remove basedir argument.
+
+Wed Sep 4 01:32:21 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * sysdeps/m68k/fpu/k_cos.c: Rewritten for better accuracy.
+ * sysdeps/m68k/fpu/k_sin.c: Likewise.
+ * sysdeps/m68k/fpu/k_tan.c: Likewise.
+
+Thu Sep 5 01:06:09 1996 Richard Henderson <rth@tamu.edu>
+
+ * malloc/free.c (free): Protect by using __libc_malloc_lock.
+ * malloc/malloc-find.c (malloc_find_object_address): Likewise.
+ * malloc/malloc-size.c (malloc_usable_size): Likewise.
+ * malloc/malloc-walk.c (malloc_walk): Likewise.
+ * malloc/memalign.c (memalign): Likewise.
+ * malloc/realloc.c (realloc): Likewise.
+ * malloc/malloc.c: Define __libc_malloc_lock.
+ (_malloc_internal): Don't use `malloc'. Instead look for
+ `__malloc_hook' or call `_malloc_internal'.
+ (malloc): Protect by using `__libc_malloc_lock'.
+ * malloc/malloc.h: Declare `__libc_malloc_lock'.
+
+Mon Sep 2 22:42:59 1996 Richard Henderson <rth@tamu.edu>
+
+ * sysdeps/alpha/elf/start.S: Use weak_alias for __start
+ instead of the hard definition.
+
+ * sysdeps/alpha/dl-machine.h (RTLD_START): Add type info for
+ _start and _dl_start_user.
+
+ * sysdeps/unix/sysv/linux/alpha/init-first.h (SYSDEP_CALL_INIT):
+ Make _dl_starting_up weak. Add type info for NAME.
+
+Mon Sep 2 22:15:14 1996 Richard Henderson <rth@tamu.edu>
+
+ * Makefile (all): Add extra_solibs pass.
+ (+subdir_targets): Same.
+ * Rules (extra_solibs): New phony empty target for subdirs without
+ extra libs.
+ * extra-lib.mk: Build lib*.so* in extra_solibs not lib-noranlib.
+ * manual/Makefile: Add dummy extra_solibs target.
+
+Sun Sep 1 15:41:22 1996 Richard Henderson <rth@tamu.edu>
+
+ * Makeconfig (+link): Add $(link-extra-libs).
+ (link-extra-libs): New variable which expands to the full paths of
+ the other libraries needed by a program, as controled by LDLIBS-$(@F).
+ * db/Makefile: Use LDLIBS-makedb to link libdb not a dependency, as
+ the later attempts to install the library before linking it.
+
+ * sysdeps/unix/alpha/sysdep.S: Align errno.
+
+ * sysdeps/unix/sysv/linux/alpha/ioperm.c (struct platform): Add
+ hae_shift entry.
+ (io): Move bus_memory_base and sparse_bus_memory_base into struct.
+ (_hae_shift): New function.
+ * sysdeps/unix/sysv/linux/alpha/sys/io.h: New file. Prototypes
+ for the bus query functions.
+
+Sat Aug 31 18:14:54 1996 Richard Henderson <rth@tamu.edu>
+
+ * elf/dl-close.c (_dl_close): In static executables, map->l_prev
+ can be NULL when unloading a library.
+
+ * elf/dl-open.c (_dl_open): Pass __environ instead of __libc_envp
+ to the library .init function.
+
+ * sysdeps/alpha/dl-machine.h (elf_machine_rela): Since we omitted
+ part of the COPY reloc processing earlier, omit the rest now --
+ we'll get into less trouble later when some fool does use a COPY.
+
+ * sysdeps/unix/sysv/linux/init-first.c (init): Accept argc et al as
+ parameters. Move all argc and __libc_multiple_libcs calculation out
+ to init-first.h. Use __environ not __libc_envp.
+ * sysdeps/unix/sysv/linux/alpha/init-first.h: Rewrite.
+ * sysdeps/unix/sysv/linux/i386/init-first.h: Rewrite.
+
+Thu Aug 29 20:26:40 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * sysdeps/posix/profil.c (profil): Don't clobber saved timer and
+ signal settings when profiling was already turned on.
+
+ * csu/gmon-start.c (__gmon_start__) [HAVE_INITFINI]: Protect from
+ being called twice.
+
+Wed Sep 4 01:31:50 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/unix/sysv/linux/i386/mmap.S: Test for
+ 0 < return value < -4096 and not < 0 to decide about failure.
+ Reported by Andreas Jaeger.
+
+Tue Sep 3 19:04:05 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * stdio-common/vfscanf.c (__vfscanf): Don't count EOF char
+ in %c format.
+
+Sat Aug 31 18:10:51 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * wcsmbs/wchar.h: Define prototypes for wcstoq and wcstouq only
+ #ifdef __USE_GNU.
+
+Sat Aug 31 12:34:29 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * version.c: Add missing newline character in banner.
+
+ * sysdeps/unix/sysv/linux/alpha/Dist: Correct typo.
+ * sysdeps/unix/sysv/linux/i386/Dist: Likewise.
+
+Sat Aug 31 03:07:39 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * intl/l10nflist.c (_nl_normalize_codeset): We convert to lower
+ case, so don't prepend uppercase `ISO' for only numeric arg.
+
Tue Sep 3 11:16:07 1996 Thomas Bushnell/ n/BSG <thomas@gnu.ai.mit.edu>
* shadow/lckpwdf.c (__ulckpwdf): Don't take address of LOCK in
diff --git a/MakeTAGS b/MakeTAGS
index 0e7eecdb4f..dcbea9386f 100644
--- a/MakeTAGS
+++ b/MakeTAGS
@@ -39,7 +39,7 @@ tags_sources = $(all-sources) $(all-headers) $(all-dist)
endif # ctype
endif # No tags_sources
-sysdep-dirs := $(addprefix $(sysdep_dir)/,$(sysdirs))
+sysdep-dirs := $(full-config-subdirs)
ifndef sysdep_dirs
# Find all sysdep directories.
diff --git a/Makeconfig b/Makeconfig
index d3d7890903..e62608da45 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -78,10 +78,14 @@ endif
sysdep_dir := $(..)sysdeps
export sysdep_dir := $(sysdep_dir)
-
# Get the values defined by options to `configure'.
include $(common-objpfx)config.make
+# Complete path to sysdep dirs.
+full-config-sysdirs := $(filter /%, $(config-sysdirs)) \
+ $(addprefix $(..), $(filter-out /%, $(config-sysdirs)))
+export full-config-sysdirs := $(full-config-sysdirs)
+
# Run config.status to update config.make and config.h. We don't show the
# dependence of config.h to Make, because it is only touched when it
# changes and so config.status would be run every time; the dependence of
@@ -93,12 +97,12 @@ $(common-objpfx)config.make: $(common-objpfx)config.status $(..)config.h.in
# Find all the sysdeps configure fragments, to make sure we re-run
# configure when any of them changes.
$(common-objpfx)config.status: $(..)configure \
- $(foreach dir,$(config-sysdirs),\
+ $(foreach dir,$(full-config-sysdirs),\
$(wildcard \
- $(sysdep_dir)/$(dir)/Implies) \
+ $(dir)/Implies) \
$(patsubst %.in,%,\
$(firstword $(wildcard \
- $(addprefix $(sysdep_dir)/$(dir)/,configure configure.in)))))
+ $(addprefix $(dir)/,configure configure.in)))))
@cd $(@D); if test -f $(@F); then exec $(SHELL) $(@F) --recheck; else \
echo The GNU C library has not been configured. >&2; \
echo Run \`configure\' to configure it before building. >&2; \
@@ -299,8 +303,8 @@ ifndef +link
+link = $(CC) -nostdlib -nostartfiles -o $@ \
$(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) \
$(addprefix $(csu-objpfx),start.o) $(+preinit) \
- $(filter-out $(common-objpfx)libc%,$^) $(link-libc) \
- $(+postinit)
+ $(filter-out $(common-objpfx)libc%,$^) \
+ $(link-extra-libs) $(link-libc) $(+postinit)
endif
ifndef config-LDFLAGS
ifeq (yes,$(build-shared))
@@ -330,6 +334,13 @@ else
link-libc = $(common-objpfx)libc.a $(gnulib) $(common-objpfx)libc.a
endif
endif
+ifndef link-extra-libs
+ifeq (yes,$(build-shared))
+link-extra-libs = $(foreach lib,$(LDLIBS-$(@F)),$(common-objpfx)$(lib).so$($(notdir $(lib)).so-version))
+else
+link-extra-libs = $(foreach lib,$(LDLIBS-$(@F)),$(common-objpfx)$(lib).a)
+endif
+endif
ifndef gnulib
gnulib := -lgcc
endif
@@ -339,6 +350,7 @@ ifeq ($(elf),yes)
endif
csu-objpfx = $(common-objpfx)csu/
elf-objpfx = $(common-objpfx)elf/
+db-objpfx = $(common-objpfx)db/
ifeq (yes,$(build-shared))
# The name under which the run-time dynamic linker is installed.
diff --git a/Makefile b/Makefile
index d269a9f494..b502895f09 100644
--- a/Makefile
+++ b/Makefile
@@ -26,7 +26,7 @@ endif
# This is the default target; it makes everything except the tests.
.PHONY: all
-all: lib others
+all: lib extra_solibs others
define autoconf-it
@-rm -f $@.new
@@ -73,14 +73,13 @@ subdirs := $(filter mach,$(subdirs)) $(filter hurd,$(subdirs)) \
# These are the targets that are made by making them in each subdirectory.
-+subdir_targets := subdir_lib objects objs others subdir_mostlyclean \
- subdir_clean subdir_distclean subdir_realclean \
- tests subdir_lint.out \
++subdir_targets := subdir_lib extra_solibs objects objs others \
+ subdir_mostlyclean subdir_clean subdir_distclean \
+ subdir_realclean tests subdir_lint.out \
subdir_distinfo \
subdir_echo-headers subdir_echo-distinfo \
- subdir_install $(addprefix install-, \
- no-libc.a bin lib \
- data headers others)
+ subdir_install \
+ $(addprefix install-, no-libc.a bin lib data headers others)
headers := errno.h sys/errno.h errnos.h limits.h values.h \
features.h gnu-versions.h libc-lock.h
@@ -117,9 +116,13 @@ endif
$(objpfx)sysd-dirs: $(+sysdir_pfx)config.make
(echo define sysdep-subdirs; \
- for dir in $(sysdirs); do \
- if [ -r $(sysdep_dir)/$$dir/Subdirs ]; then \
- sed 's/#.*$$//' $(sysdep_dir)/$$dir/Subdirs; \
+ for sysdir in $(config-sysdirs); do \
+ case $$sysdir in \
+ /*) dir=$$sysdir ;; \
+ *) dir=$(..)$$sysdir ;; \
+ esac; \
+ if [ -r $$dir/Subdirs ]; then \
+ sed 's/#.*$$//' $$dir/Subdirs; \
else true; \
fi; \
done; \
diff --git a/Makerules b/Makerules
index 2b75154453..441e24c34c 100644
--- a/Makerules
+++ b/Makerules
@@ -56,13 +56,13 @@ include $(..)Makeconfig
endif
# `configure' writes a definition of `config-sysdirs' in `config.make'.
-sysdirs = $(config-sysdirs)
+sysdirs = $(strip $(full-config-sysdirs))
+sysdir_pfx = $(common-objpfx)
export sysdirs := $(sysdirs)
-+sysdep_dirs := $(addprefix $(sysdep_dir)/,$(sysdirs))
++sysdep_dirs := $(full-config-sysdirs)
ifdef objdir
+sysdep_dirs := $(objdir) $(+sysdep_dirs)
endif
@@ -86,8 +86,7 @@ endif
# appropriate and not worry about where foo.h comes from, which may be
# system dependent and not known by that Makefile.
vpath %.h $(subst $(empty) ,:,$(strip $(common-objpfx) $(objpfx) \
- $(addprefix $(sysdep_dir)/,$(sysdirs)) \
- $(..)))
+ $(+sysdep_dirs) $(..)))
# Some sysdep makefiles use this to distinguish being included here from
# being included individually by a subdir makefile (hurd/Makefile needs this).
@@ -95,18 +94,21 @@ in-Makerules := yes
ifndef avoid-generated
-include $(+sysdir_pfx)sysd-Makefile
-ifneq ($(sysd-Makefile-sysdirs),$(sysdirs))
+ifneq ($(sysd-Makefile-sysdirs),$(config-sysdirs))
sysd-Makefile-force = FORCE
FORCE:
endif
$(+sysdir_pfx)sysd-Makefile: $(+sysdir_pfx)config.make $(..)Makerules \
$(sysd-Makefile-force)
-@rm -f $@T
- (echo 'sysd-Makefile-sysdirs := $(sysdirs)'; \
- for dir in $(sysdirs); do \
- file=sysdeps/$$dir/Makefile; \
- if [ -f $(..)$$file ]; then \
- echo include "\$$(..)$$file"; \
+ (echo 'sysd-Makefile-sysdirs := $(config-sysdirs)'; \
+ for dir in $(config-sysdirs); do \
+ file=$$dir/Makefile; \
+ if [ -f $$file ]; then \
+ case $$dir in \
+ /*) echo include "$$file" ;; \
+ *) echo include "\$$(..)$$file" ;; \
+ esac; \
else true; fi; \
done; \
echo 'sysd-Makefile-done=t') > $@T
@@ -213,8 +215,8 @@ endif
# contents of sysd-rules.
ifdef sysd-Makefile-done
-include $(+sysdir_pfx)sysd-rules
-ifneq ($(sysd-rules-sysdirs),$(sysdirs))
-# The value of $(sysdirs) the sysd-rules was computed for
+ifneq ($(sysd-rules-sysdirs),$(config-sysdirs))
+# The value of $(+sysdep_dirs) the sysd-rules was computed for
# differs from the one we are using now. So force a rebuild of sysd-rules.
sysd-rules-force = FORCE
FORCE:
@@ -222,12 +224,15 @@ endif
endif
$(+sysdir_pfx)sysd-rules: $(+sysdir_pfx)config.make $(..)Makerules \
$(wildcard $(foreach dir,$(sysdirs),\
- $(sysdep_dir)/$(dir)/Makefile))\
+ $(dir)/Makefile))\
$(sysd-rules-force)
-@rm -f $@T
- (echo 'sysd-rules-sysdirs := $(sysdirs)'; \
- for sysdir in $(sysdirs); do \
- dir="\$$(sysdep_dir)/$$sysdir"; \
+ (echo 'sysd-rules-sysdirs := $(config-sysdirs)'; \
+ for sysdir in $(config-sysdirs); do \
+ case $$sysdir in \
+ /*) dir=$$sysdir ;; \
+ *) dir="\$$(..)$$sysdir" ;; \
+ esac; \
for o in $(object-suffixes); do \
$(open-check-inhibit-asm) \
echo "\$$(objpfx)%$$o: $$dir/%.S \$$(before-compile); \
@@ -596,10 +601,10 @@ $(slibdir)/libc-$(version).so: $(common-objpfx)libc.so; $(do-install-program)
install: $(slibdir)/libc.so$(libc.so-version)
ifndef subdir
-# What we install as libc.so for programs to link against is in fact an
-# archive. It contains the various $(static-only-routines) objects, and
-# the special object libc-syms.so that contains just the dynamic symbol
-# table of the shared libc object.
+# What we install as libc.so for programs to link against is in fact a
+# link script. It contains references for the various libraries we need.
+# The libc.so object is not complete since some functions are only defined
+# in libc.a and the dynamic linker is an etra object.
install: $(libdir)/libc.so
$(libdir)/libc.so: $(common-objpfx)libc.so$(libc.so-version) \
$(elfobjdir)/$(rtld-installed-name) \
diff --git a/Rules b/Rules
index 8d4f51fa79..507ec45528 100644
--- a/Rules
+++ b/Rules
@@ -107,13 +107,14 @@ $(objpfx)%.out: /dev/null $(objpfx)% # Make it 2nd arg for canned sequence.
endif # tests
.PHONY: distclean realclean subdir_distclean subdir_realclean \
- subdir_clean subdir_mostlyclean
+ subdir_clean subdir_mostlyclean extra_solibs
subdir_mostlyclean: mostlyclean
subdir_clean: clean
subdir_distclean: distclean
subdir_realclean: realclean
realclean: distclean
distclean: clean
+extra_solibs:
.PHONY: subdir_echo-headers
subdir_echo-headers: echo-headers
@@ -135,7 +136,6 @@ subdir_dist: dist
# Convenient target to update all the generated source files.
.PHONY: generated
-generated: $(addprefix $(objpfx),$(generated))
generated: $(addprefix $(common-objpfx),$(common-generated))
ifndef libc.so-version
diff --git a/configure b/configure
index 522d64fbf4..68aa0d7053 100755
--- a/configure
+++ b/configure
@@ -689,6 +689,12 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.