aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog129
-rw-r--r--Makeconfig2
-rw-r--r--Makerules76
-rw-r--r--elf/dl-version.c2
-rw-r--r--elf/rtld.c116
-rw-r--r--libio/fileops.c6
-rw-r--r--libio/genops.c4
-rw-r--r--libio/libioP.h10
-rw-r--r--libio/memstream.c9
-rw-r--r--libio/strops.c6
-rw-r--r--manual/Makefile17
-rw-r--r--manual/signal.texi24
-rw-r--r--manual/xtract-typefun.awk26
-rw-r--r--math/math.h15
-rw-r--r--misc/getpass.c4
-rw-r--r--sysdeps/generic/htonl.c34
-rw-r--r--sysdeps/generic/htons.c34
-rw-r--r--sysdeps/generic/netinet/in.h15
-rw-r--r--sysdeps/generic/ntohl.c34
-rw-r--r--sysdeps/generic/ntohs.c34
-rw-r--r--sysdeps/libm-i387/e_acoshf.S4
-rw-r--r--sysdeps/libm-i387/e_acoshl.S3
-rw-r--r--sysdeps/mach/hurd/fcntlbits.h34
-rw-r--r--sysdeps/sparc/Dist1
-rw-r--r--sysdeps/sparc/bsd-_setjmp.S47
-rw-r--r--sysdeps/sparc/bsd-setjmp.S44
-rw-r--r--sysdeps/sparc/divrem.m44
-rw-r--r--sysdeps/sparc/dl-machine.h145
-rw-r--r--sysdeps/sparc/elf/DEFS.h5
-rw-r--r--sysdeps/sparc/elf/start.S31
-rw-r--r--sysdeps/sparc/fpu_control.h7
-rw-r--r--sysdeps/sparc/rem.S4
-rw-r--r--sysdeps/sparc/sdiv.S4
-rw-r--r--sysdeps/sparc/setjmp.S44
-rw-r--r--sysdeps/sparc/udiv.S4
-rw-r--r--sysdeps/sparc/urem.S4
-rw-r--r--sysdeps/unix/sysv/linux/netinet/in.h15
-rw-r--r--sysdeps/unix/sysv/linux/sparc/Makefile8
-rw-r--r--sysdeps/unix/sysv/linux/sparc/__sigtrampoline.S109
-rw-r--r--sysdeps/unix/sysv/linux/sparc/errno.c1
-rw-r--r--sysdeps/unix/sysv/linux/sparc/profil-counter.h11
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sigaction.c21
-rw-r--r--sysdeps/unix/sysv/linux/sparc/syscall.S19
-rw-r--r--sysdeps/unix/sysv/linux/sparc/syscalls.list3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sysdep.S3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sysdep.h41
-rw-r--r--time/Makefile12
47 files changed, 797 insertions, 428 deletions
diff --git a/ChangeLog b/ChangeLog
index c6bc83d747..45bc59523b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,130 @@
+1997-02-27 05:12 Ulrich Drepper <drepper@cygnus.com>
+
+ * manual/Makefile: Add rules to run and distribute xtract-typefun.
+ * manual/xtract-typefun.awk: New file. Script to extract function,
+ variable, macro anchor to put into the `dir' file.
+ * manual/signal.texi: Document difference between SysV and BSD
+ signal(3) function and add documentation for sysv_signal.
+
+ * sysdeps/libm-i387/e_acoshl.c: Clear upper half of word containing
+ exponent before comparing.
+
+1997-02-27 01:13 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/generic/netinet/in.h (htonl, htons, ntohl, ntohs): Change
+ prototypes to use types with explicit width. `unsigned long' is
+ different on 64 bit systems.
+ * sysdeps/unix/sysv/linux/netinet/in.h: Likewise.
+ * sysdeps/generic/htonl.c: Likewise.
+ * sysdeps/generic/htons.c: Likewise.
+ * sysdeps/generic/ntohl.c: Likewise.
+ * sysdeps/generic/ntohs.c: Likewise.
+ Suggested by a sun <asun@zoology.washington.edu>.
+
+1997-02-26 08:30 Andreas Jaeger <aj@arthur.pfalz.de>
+
+ * math/math.h: Include <__math.h> if __NO_MATH_INLINES is not
+ defined and we want optimization.
+
+1997-02-27 01:13 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/generic/netinet/in.h (htonl, htons, ntohl, ntohs): Change
+ prototypes to use types with explicit width. `unsigned long' is
+ different on 64 bit systems.
+ Suggested by a sun <asun@zoology.washington.edu>.
+
+1997-02-02 19:53 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * misc/getpass.c: Don't disable canonical input.
+ Reverted patch of Mon Jan 6 01:35:29 1997.
+
+1996-12-14 22:07 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * libio/libioP.h (_IO_finish_t): Take additional parameter, to
+ match the hidden __in_chrg parameter of the destructor.
+ (_IO_FINISH): Pass zero for it.
+ * libio/genops.c (_IO_default_finish): Add second parameter, which
+ is ignored.
+ * libio/memstream.c (_IO_mem_finish): Likewise.
+ * libio/fileops.c (_IO_mem_finish): Likewise.
+ * libio/strops.c (_IO_str_finish): Likewise. All callers changed.
+
+1997-02-27 00:23 H.J. Lu <hjl@lucon.org>
+
+ * time/Makefile: Avoid using patterns in dependencies.
+
+1997-02-26 00:56 Miguel de Icaza <miguel@nuclecu.unam.mx>
+
+ * elf/rtld.c: Make _dl_start static. Otherwise the linker on the
+ SPARC will convert the call _dl_start into a call into the PLT.
+
+ * elf/rtld.c (_dl_start): On the SPARC we need to adjust the value
+ of arg to make it point to the actual values.
+
+ * sysdeps/sparc/elf/DEFS.h: New ELF specific version.
+ * sysdeps/sparc/Dist: Mention sysdeps/sparc/elf/DEFS.h.
+
+ * sysdeps/sparc/bsd-_setjmp.S, sysdeps/sparc/bsd-setjmp.S: Make
+ them PIC aware.
+
+ * sysdeps/sparc/dl-machine.h (elf_machine_load_address):
+ Implemented.
+ (elf_machine_rela): Make it compile; fix existing relocation
+ types; add unhandled relocation types.
+ (ELF_ADJUST_ARG): Get pointer to arguments at program startup.
+ (RTLD_START): Initial implementation, not yet finished.
+
+ * sysdeps/sparc/elf/start.S: Fix.
+
+ * sysdeps/sparc/fpu_control.h: Remove duplicate declaration of
+ __setfpucw.
+
+ * sysdeps/sparc/divrem.m4: Make compilable under Linux.
+ * sysdeps/sparc/rem.S, sysdeps/sparc/sdiv.S, sysdeps/sparc/udiv.S,
+ sysdeps/sparc/urem.S : Regenerated.
+
+ * sysdeps/sparc/setjmp.S: Make it PIC aware.
+
+ * sysdeps/unix/sysv/linux/sparc/__sigtrampoline.S: Define
+ __ASSEMBLY__ before using kernel header.
+
+ * sysdeps/unix/sysv/linux/sparc/Makefile: Use -mv8 flag to compile
+ rtld.c.
+
+ * sysdeps/unix/sysv/linux/sparc/brk.c: Implement.
+ * sysdeps/unix/sysv/linux/sparc/profil-counter.h: Remove code
+ to handle old signals.
+ * sysdeps/unix/sysv/linux/sparc/sigaction.c: Implements sigaction
+ for all Linux/SPARC kernels.
+ * sysdeps/unix/sysv/linux/sparc/syscall.S: Add code to store
+ errno using __errno_location.
+ * sysdeps/unix/sysv/linux/sparc/sysdep.h: Add various handler
+ macros for assembler sources.
+ * sysdeps/unix/sysv/linux/sparc/errno.c: Define errno.
+
+1997-02-25 16:02 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * elf/rtld.c (dl_main): Remove dead code that is never executed.
+ Rename local variable l to main_map where it is used to point to
+ the load_map for the executable.
+
+1997-02-25 15:03 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * elf/dl-version.c (_dl_check_all_versions): Ignore libraries that
+ could not be found.
+
+1997-02-24 23:18 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * Makerules: Generate implicit object suffix rules automagically.
+ (o-iterator): Move before first use.
+
+ * Makeconfig (all-object-suffixes): Add .bo suffix.
+
+1997-02-25 15:11 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/libm-i387/e_acoshf.S (__ieee754_acoshf): Test correct
+ word on stack for overflow.
+
1997-02-24 23:05 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>
* malloc/malloc.c (malloc_get_state): New function.
@@ -155,7 +282,7 @@
__STRICT_ANSI__.
* math/math.h: Prevent definition of struct exception when using
- C++.
+ C++. Use __exception instead.
1997-02-22 01:45 Ulrich Drepper <drepper@cygnus.com>
diff --git a/Makeconfig b/Makeconfig
index 811392b13e..2501789440 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -481,7 +481,7 @@ endif
# to pass different flags for each flavor.
libtypes = $(foreach o,$(object-suffixes),$(libtype$o))
object-suffixes := .o
-all-object-suffixes := .o .so .po .go
+all-object-suffixes := .o .so .po .go .bo
libtype.o := lib%.a
ifeq (yes,$(build-shared))
# Under --enable-shared, we will build a shared library of PIC objects.
diff --git a/Makerules b/Makerules
index c5d5663bda..b4b7610b62 100644
--- a/Makerules
+++ b/Makerules
@@ -80,6 +80,12 @@ ar-symtab-name = __.SYMDEF
else
ar-symtab-name = # The null name is used in ELF archives.
endif
+
+# This variable is used in ``include $(o-iterator)'' after defining
+# $(o-iterator-doit) to produce some desired rule using $o for the object
+# suffix, and setting $(object-suffixes-left) to $(object-suffixes); a copy
+# is produced for each object suffix in use.
+o-iterator = $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-left))
# Include any system-specific makefiles.
@@ -167,23 +173,25 @@ $(common-objpfx)dummy.d:
# generated sysdep rules in included from sysd-rules below. When
# compiling in the source tree, generated sources go into the current
# directory, and those should be chosen before any sources in sysdeps.
-$(objpfx)%.o: %.S $(before-compile); $(compile-command.S)
-$(objpfx)%.so: %.S $(before-compile); $(compile-command.S)
-$(objpfx)%.po: %.S $(before-compile); $(compile-command.S)
-$(objpfx)%.go: %.S $(before-compile); $(compile-command.S)
-$(objpfx)%.bo: %.S $(before-compile); $(compile-command.S)
+define o-iterator-doit
+$(objpfx)%$o: %.S $(before-compile); $$(compile-command.S)
+endef
+object-suffixes-left := $(object-suffixes)
+include $(o-iterator)
$(objpfx)%.d: %.S $(before-compile); $(+make-deps)
-$(objpfx)%.o: %.s $(before-compile); $(compile-command.s)
-$(objpfx)%.so: %.s $(before-compile); $(compile-command.s)
-$(objpfx)%.po: %.s $(before-compile); $(compile-command.s)
-$(objpfx)%.go: %.s $(before-compile); $(compile-command.s)
-$(objpfx)%.bo: %.s $(before-compile); $(compile-command.s)
+
+define o-iterator-doit
+$(objpfx)%$o: %.s $(before-compile); $$(compile-command.s)
+endef
+object-suffixes-left := $(object-suffixes)
+include $(o-iterator)
$(objpfx)%.d: %.s $(common-objpfx)dummy.d; $(make-dummy-dep)
-$(objpfx)%.o: %.c $(before-compile); $(compile-command.c)
-$(objpfx)%.so: %.c $(before-compile); $(compile-command.c)
-$(objpfx)%.po: %.c $(before-compile); $(compile-command.c)
-$(objpfx)%.go: %.c $(before-compile); $(compile-command.c)
-$(objpfx)%.bo: %.c $(before-compile); $(compile-command.c)
+
+define o-iterator-doit
+$(objpfx)%$o: %.c $(before-compile); $$(compile-command.c)
+endef
+object-suffixes-left := $(object-suffixes)
+include $(o-iterator)
$(objpfx)%.d: %.c $(before-compile); $(+make-deps)
# Omit the objpfx rules when building in the source tree, because
@@ -191,23 +199,25 @@ $(objpfx)%.d: %.c $(before-compile); $(+make-deps)
ifdef objpfx
# Define first rules to find the source files in $(objpfx).
# Generated source files will end up there.
-$(objpfx)%.o: $(objpfx)%.S $(before-compile); $(compile-command.S)
-$(objpfx)%.so: $(objpfx)%.S $(before-compile); $(compile-command.S)
-$(objpfx)%.po: $(objpfx)%.S $(before-compile); $(compile-command.S)
-$(objpfx)%.go: $(objpfx)%.S $(before-compile); $(compile-command.S)
-$(objpfx)%.bo: $(objpfx)%.S $(before-compile); $(compile-command.S)
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.S $(before-compile); $$(compile-command.S)
+endef
+object-suffixes-left := $(object-suffixes)
+include $(o-iterator)
$(objpfx)%.d: $(objpfx)%.S $(before-compile); $(+make-deps)
-$(objpfx)%.o: $(objpfx)%.s $(before-compile); $(compile-command.s)
-$(objpfx)%.so: $(objpfx)%.s $(before-compile); $(compile-command.s)
-$(objpfx)%.po: $(objpfx)%.s $(before-compile); $(compile-command.s)
-$(objpfx)%.go: $(objpfx)%.s $(before-compile); $(compile-command.s)
-$(objpfx)%.bo: $(objpfx)%.s $(before-compile); $(compile-command.s)
+
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.s $(before-compile); $$(compile-command.s)
+endef
+object-suffixes-left := $(object-suffixes)
+include $(o-iterator)
$(objpfx)%.d: $(objpfx)%.s $(common-objpfx)dummy.d; $(make-dummy-dep)
-$(objpfx)%.o: $(objpfx)%.c $(before-compile); $(compile-command.c)
-$(objpfx)%.so: $(objpfx)%.c $(before-compile); $(compile-command.c)
-$(objpfx)%.po: $(objpfx)%.c $(before-compile); $(compile-command.c)
-$(objpfx)%.go: $(objpfx)%.c $(before-compile); $(compile-command.c)
-$(objpfx)%.bo: $(objpfx)%.c $(before-compile); $(compile-command.c)
+
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c)
+endef
+object-suffixes-left := $(object-suffixes)
+include $(o-iterator)
$(objpfx)%.d: $(objpfx)%.c $(before-compile); $(+make-deps)
endif
@@ -391,12 +401,6 @@ headers := $(headers) $(sysdep_headers)
override objects := $(addprefix $(objpfx),$(sources:.c=.o))
-# This variable is used in ``include $(o-iterator)'' after defining
-# $(o-iterator-doit) to produce some desired rule using $o for the object
-# suffix, and setting $(object-suffixes-left) to $(object-suffixes); a copy
-# is produced for each object suffix in use.
-o-iterator = $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-left))
-
# The makefile may define $(extra-libs) with `libfoo libbar'
# to build libfoo.a et al from the modules listed in $(libfoo-routines).
ifdef extra-libs
diff --git a/elf/dl-version.c b/elf/dl-version.c
index ae1c2f34f7..2a6f1b94df 100644
--- a/elf/dl-version.c
+++ b/elf/dl-version.c
@@ -334,7 +334,7 @@ _dl_check_all_versions (struct link_map *map, int verbose)
int result = 0;
for (l = map; l != NULL; l = l->l_next)
- result |= _dl_check_map_versions (l, verbose);
+ result |= l->l_opencount != 0 && _dl_check_map_versions (l, verbose);
return result;
}
diff --git a/elf/rtld.c b/elf/rtld.c
index eb7b3bec2a..9f18e23b91 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -79,7 +79,7 @@ RTLD_START
#error "sysdeps/MACHINE/dl-machine.h fails to define RTLD_START"
#endif
-ElfW(Addr)
+static ElfW(Addr)
_dl_start (void *arg)
{
struct link_map bootstrap_map;
@@ -126,6 +126,10 @@ _dl_start (void *arg)
_dl_rtld_map.l_info[DT_STRTAB]->d_un.d_ptr +
_dl_rtld_map.l_info[DT_RPATH]->d_un.d_val);
+#ifdef ELF_ADJUST_ARG
+ ELF_ADJUST_ARG(arg);
+#endif
+
/* Call the OS-dependent function to set up life so we can do things like
file access. It will call `dl_main' (below) to do all the real work
of the dynamic linker, and then unwind our frame and run the user
@@ -147,7 +151,7 @@ dl_main (const ElfW(Phdr) *phdr,
ElfW(Addr) *user_entry)
{
const ElfW(Phdr) *ph;
- struct link_map *l;
+ struct link_map *main_map;
int lazy;
enum { normal, list, verify, trace } mode;
struct link_map **preloads;
@@ -235,7 +239,7 @@ of this helper program; chances are you did not intend to run this program.\n",
{
void doit (void)
{
- l = _dl_map_object (NULL, _dl_argv[0], lt_library, 0);
+ main_map = _dl_map_object (NULL, _dl_argv[0], lt_library, 0);
}
char *err_str = NULL;
const char *obj_name __attribute__ ((unused));
@@ -248,37 +252,23 @@ of this helper program; chances are you did not intend to run this program.\n",
}
}
else
- l = _dl_map_object (NULL, _dl_argv[0], lt_library, 0);
+ main_map = _dl_map_object (NULL, _dl_argv[0], lt_library, 0);
- phdr = l->l_phdr;
- phent = l->l_phnum;
- l->l_name = (char *) "";
- *user_entry = l->l_entry;
+ phdr = main_map->l_phdr;
+ phent = main_map->l_phnum;
+ main_map->l_name = (char *) "";
+ *user_entry = main_map->l_entry;
}
else
{
/* Create a link_map for the executable itself.
This will be what dlopen on "" returns. */
- l = _dl_new_object ((char *) "", "", lt_executable);
- if (l == NULL)
+ main_map = _dl_new_object ((char *) "", "", lt_executable);
+ if (main_map == NULL)
_dl_sysdep_fatal ("cannot allocate memory for link map", NULL);
- l->l_phdr = phdr;
- l->l_phnum = phent;
- l->l_entry = *user_entry;
- }
-
- if (l != _dl_loaded)
- {
- /* GDB assumes that the first element on the chain is the
- link_map for the executable itself, and always skips it.
- Make sure the first one is indeed that one. */
- l->l_prev->l_next = l->l_next;
- if (l->l_next)
- l->l_next->l_prev = l->l_prev;
- l->l_prev = NULL;
- l->l_next = _dl_loaded;
- _dl_loaded->l_prev = l;
- _dl_loaded = l;
+ main_map->l_phdr = phdr;
+ main_map->l_phnum = phent;
+ main_map->l_entry = *user_entry;
}
/* Scan the program header table for the dynamic section. */
@@ -288,7 +278,7 @@ of this helper program; chances are you did not intend to run this program.\n",
case PT_DYNAMIC:
/* This tells us where to find the dynamic section,
which tells us everything we need to do. */
- l->l