* sysdeps/mach/hurd/dl-sysdep.c (_dl_sysdep_start_cleanup): New
function.
(_dl_sysdep_start): Move cleanup code there.
* Makeconfig (default-rpath): New variable.
(link-libc): Use it.
* elf/Makefile (ld.so): Pass -rpath=$(default-rpath).
* elf/rtld.c (_dl_rpath): New variable.
(_dl_start): Set it from rtld_map's DT_RPATH.
Call _dl_setup_hash on rtld_map.
(dl_main): Cache address of _exit in variable before relocating,
and use that in later calls. Call _dl_sysdep_start_cleanup before
relocating. Keep track of dependency order while loading; remove
rtld_map from chain, and reinsert in proper order if there is a
dependency on it.
* sysdeps/generic/Makefile (make_siglist): Pass
-DSIGNUM_H=... with config's signum.h location.
* sysdeps/generic/make_siglist.c: Include SIGNUM_H to define
signal numbers.
(HAVE_STRSIGNAL, HAVE_PSIGNAL): Define these before including signame.c
(main): Deansideclize output.
* elf/dl-load.c (_dl_map_object): Use _dl_rpath variable in place
of DEFAULT_RPATH macro.
* elf/Makefile: Undo last change.
* sysdeps/mach/hurd/dl-sysdep.c (free): Don't abort, just nop.
error if weak.
* elf/Makefile (default-rpath): New variable.
(CPPFLAGS): Append -DDEFAULT_RPATH=....
* elf/dl-load.c (_dl_map_object): Use DEFAULT_RPATH instead of
hard-coded "/lib:/usr/lib".
* sysdeps/mach/hurd/dl-sysdep.c: Include _itoa.h from stdio-common
instead of stdio.
(_dl_sysdep_start): If passed user entry is zero and
EXEC_STACK_ARGS flag set, reset user entry to &_start.
* elf/rtld.c (dl_main): Only call _dl_setup_hash if there is a
DT_HASH element.
* libc-symbols.h [HAVE_ELF] (symbol_set_declare): Gratuitously
repeat weak decl using weak_symbol macro, in case using broken GCC
(<2.8).
Wed Nov 15 18:49:55 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* sysdeps/i386/isnanl.c: New file.
* sysdeps/i386/isinfl.c: New file.
* elf/linux-compat.c: New file.
* elf/Makefile (distribute): Add linux-compat.c.
(generated): Add librtld.so.
[$(config-os)=linux*] (extra-objs): Add linux-compat.so.
[$(config-os)=linux*] (extra-objs): Add ld-linux.so.1.
(librtld.so): New target.
(ld.so, ld-linux.so.1): Make from librtld.so.
* elf/rtld.c (dl_main): Instead of weak call to _dl_compat_init,
call our own DT_INIT if we have one (and then clear it).
(__dgettext): New weak function.
* intl/localealias.c (read_alias_file): Avoid sprintf; use memcpy
by hand instead.
* sysdeps/generic/_strerror.c (_strerror_internal): Use _itoa
instead of snprintf.
* sysdeps/mach/_strerror.c (_strerror_internal): Don't write
BUF[BUFLEN].
* elf/rtld.c (rtld_map): New static variable.
(_dl_start): Use a differently named local BOOTSTRAP_MAP for the
bootstrapping. Then copy data into `rtld_map'.
(dl_main): Finish filling in rtld_map and link it into the chain,
instead of allocating a new structure.
(dl_main): Call _dl_compat_init if it is defined (use weak ref).
* elf/dlsym.c: Fix last change: move REF out of `doit'.
control.
using it.
and cwdir ports.
functions.
these.
$(libdir)(rtld-installed-name).
leading zeroes.
in the rhs.
pattern rule.
never know.
(fork): Use symbol_set_* macros for _hurd_fork_locks.
* sysdeps/unix/sysv/sysv4/linux/i386/sysdep.S (__syscall_error):
instead of unix/sysv.
-dynamic-linker.
(__printf_fp): Last arg ARGS is now `const void **const';
locale/C-ctype.c.
* sysdeps/mach/hurd/sigsuspend.c: Likewise.
* sysdeps/mach/hurd/mips/sigreturn.c: Likewise.
alias gethostname.
setitmr
setpgrp
(_S_msg_get_exec_flags, _S_msg_set_exec_flags,
(abort_thread, abort_rpcs): Take same new arg and pass it through.
* sysdeps/unix/configure.in: Check for fchdir syscall.
Improve sed script to allow / on rhs without / on lhs.
Thu Oct 19 03:47:32 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
* sysdeps/unix/sysv/linux/termbits.h: Don't define speed constants.
* elf/rtld.c: Include _itoa.h from stdio-common instead of stdio.
* sysdeps/unix/sysv/linux/select.S: New file.
* Makeconfig (config-LDFLAGS): Define to
-Wl-dynamic-linker=$(libdir)$(rtld-installed-name).
(rtld-installed-name): New variable.
* elf/Makefile (install-lib): Variable removed.
(install-others): Define this instead, to
$(libdir)(rtld-installed-name).
($(libdir)(rtld-installed-name)): New target; install from ld.so.
* elf/ldd.sh.in: New file.
* elf/Makefile (distribute): Add ldd.sh.in.
(install-bin): Add ldd.
($(objpfx)ldd: ldd.sh.in): New rule.
* sysdeps/mach/hurd/dl-sysdep.c: Use __hurd_fail throughout.
* hurd/hurd.h (__hurd_fail): Replace macro with inline function.
Translate some Mach errors to Hurd errors.
* elf/rtld.c (dl_main): Under --list, print msg if executable is
statically linked.
* elf/dl-load.c (_dl_map_object_from_fd): Rewrote program header
table processing.
Sat Oct 7 01:25:48 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/stub/machine-gmon.h: Add #error.
Fri Oct 6 01:49:48 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* elf/dynamic-link.h (elf_get_dynamic_info): If DYN is null, don't
examine it.
kernel with args on stack, point _dl_hurd_data at zero data
instead of garbage. When ld.so run as program, grok args
-LIB=MEMOBJ and pre-load shared object files found in memory
objects loaded by the boot loader.
* elf/link.h (struct link_map): New member `l_entry'.
(_dl_map_object, _dl_map_object_from_fd): Remove last arg ENTRY_POINT.
* elf/dl-load.c (_dl_map_object, _dl_map_object_from_fd): Remove
last arg ENTRY_POINT. Store the entry point location in the
`l_entry' member of the new map.
* elf/rtld.c (dl_main): Don't pass USER_ENTRY arg to
_dl_map_object. When run as program, set *USER_ENTRY to L->l_entry.
* elf/dl-init.c (_dl_init_next): Don't pass ENTRY_POINT arg to
_dl_map_object.
* config.make.in (AS): New variable; set to `$(CC) -c'.
* posix/unistd.h [__USE_BSD]: Declare profil.
* elf/dl-load.c (_dl_map_object_from_fd): New function, broken out
of _dl_map_object.
(_dl_map_object): Call it.
* elf/link.h (_dl_map_object_from_fd): Declare it.
* sysdeps/stub/sys/sem_buf.h (union semun): New type.
* sysdeps/mach/hurd/i386/init-first.c (init1) [PIC]: Call
__libc_global_ctors.
* sysdeps/i386/init-first.c: Rewritten.
* sysdeps/unix/sysv/linux/i386/init-first.S: File removed.
* sysdeps/unix/sysv/linux/i386/init-first.c: New file.
* sysdeps/unix/sysv/linux/i386/fpu_control.h: Fix name in decl of
___fpu_control.
* Makerules (build-shlib): New canned sequence, broken out of
lib%.so rule. Link in $^ instead of just $<.
(lib%.so: lib%_pic.a): Use it.
(libc.so): New target; use $(build-shlib) for cmds, but also depend
on soinit.so first and sofini.so last.
* elf/soinit.c: New file.
* elf/sofini.c: New file.
* elf/Makefile (distribute): Add soinit.c and sofini.c.
(extra-objs): Add soinit.so and sofini.so.
* sysvipc/sys/shm.h (shmat): Fix return type to char *.
* sysdeps/stub/sys/ipc_buf.h (key_t): Type removed.
* misc/syslog.c (vsyslog): Rewritten using open_memstream to
dynamically allocate buffers.
* Makerules (install-lib-nosubdir): Make this, rather than
install-no-libc.a, depend on the installed shared libraries.
* elf/elf.h (AT_GID): Fix typo: Read -> Real.
* misc/efgvt_r.c: New file. Reentrant version of [efg]cvt functions.
* misc/efgcvt.c: Rewrite to use reentrant functions.
* misc/hsearch_r.c: New file. Reentrant version of functions from
hsearch family.
* misc/hsearch.c, misc/tsearch.c: New files.
* misc/Makefile (routines): Add efgcvt_r, hsearch_r, hsearch, tsearch.
* posix/unistd.h (ttyname_r): Add prototype for new function.
* stdlib/drand48_r.c, stdlib/erand48_r.c, stdlib/jrand48_r.c,
stdlib/lrand48_r.c, stdlib/mrand48_r.c, stdlib/nrand48_r.c,
stdlib/seed48_r.c, stdlib/srand48_r.c, stdlib/lcong48_r.c,
stdlib/drand48-iter.c: New files implementing reentrant versions
of functions from drand48 family.
* stdlib/seed48.c, stdlib/drand48.c, stdlib/erand48.c,
stdlib/jrand48.c, stdlib/lrand48.c, stdlib/mrand48.c,
stdlib/nrand48.c, stdlib/srand48.c, stdlib/lcong48.c:
Rewrite to use reentrant versions.
* stdlib/a64l.c, stdlib/l64a.c: New files. Implement a64l()
and l64a() functions from SysV library.
* stdlib/Makefile (routines): Add drand48_r, erand48_r, lrand48_r,
nrand48_r, mrand48_r, jrand48_r, srand48_r, seed48_r, lcong48_r,
drand48-iter, a64l, l64a.
* stdlib/stdlib.h: Declare them.
* stdlib/random_r.c: New file. Reentrant version of functions
from random family.
* stdlib/stdlib.h: Declare them.
* stdlib/random.c: Rewrite to use reentrant functions.
* string/strerror_r.c: New file. Reentrant version.
* string/strerror.c: Change for new _strerror_internal form.
* string/Makefile (routines): Add strerror_r.
* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Set default
value of user_entry to `_start'.
Close AT_ENTRY case with `break'.
* sysdeps/generic/strstr.c: New and much faster implementation
by Stephen R. van den Berg.
* sysdeps/generic/_strerror.c: _strerror_internal now takes
three argument and has and explicit buffer length.
* sysdeps/mach/_strerror.c: Change for new interface with three
arguments.
* stdio/perror.c, stdio/vfprintf.c: Callers changed.
* sysdeps/mach/hurd/ttyname_r.c: New file. Reentrant version.
* sysdeps/posix/ttyname_r.c: New file. Reentrant version.
* sysdeps/stub/ttyname_r: New file. Define as dummy function.
* sysdeps/posix/utimes.c: Include <utime.h> for prototype.
(utimes): First parameter to utime must be file, not path.
* sysdeps/posix/sysconf.c (__sysconf): Test for CLK_TCK in case
_SC_CLK_TCK and return it when available.
Test for STREAM_MAX in case _SC_STREAM_MAX and return it when
available.
Add case for _SC_2_LOCALEDEF which is now available.
* posix/sys/types.h [__USE_SVID] (key_t): New type.
* sysvipc/Makefile, sysvipc/ftok.c, sysvipc/sys/ipc.h,
sysvipc/sys/msg.h, sysvipc/sys/sem.h, sysvipc/sys/shm.h,
sysdeps/stub/sys/msq_buf.h, sysdeps/stub/sys/sem_buf.h,
sysdeps/stub/sys/shm_buf.h, sysdeps/stub/sys/ipc_buf.h,
sysdeps/stub/semctl.c, sysdeps/stub/semget.c, sysdeps/stub/semop.c,
sysdeps/stub/shmat.c, sysdeps/stub/shmctl.c, sysdeps/stub/shmdt.c,
sysdeps/stub/shmget.c, sysdeps/stub/msgctl.c, sysdeps/stub/msgget.c,
sysdeps/stub/msgrcv.c, sysdeps/stub/msgsnd.c: New files.
Add implementation of System V IPC.
* hurd/hurdsig.c: Include <hurd/crash.h> in place of <hurd/core.h>.
(write_corefile): Call __crash_dump_task instead of __core_dump_task.
Use envariable CRASHSERVER instead of CORESERVER.
* hurd/Makefile (user-interfaces): Replace hurd/core with hurd/crash.
* elf/dl-lookup.c (_dl_lookup_symbol): Test WEAK_VALUE.s rather
than WEAK_VALUE.a to see if a weak value has been set. A valid
weak value may set WEAK_VALUE.a to 0.
* sysdeps/mach/hurd/i386/init-first.c (init): Take just one arg,
DATA for the entry SP; DATA[-1] is always the return address
location. In both cthreads and non-cthreads cases, use asm to
force parameters into %eax and %ecx before return, and mutate
DATA[-1] to return to specific asm code to set up the user from
%eax and %ecx.
[PIC] (_init): Caller changed.
(__libc_init_first) [! PIC] (doinit): Use asm to effect call to init
with SP unwound to argument data ptr.
Thu Jul 6 14:28:56 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/mach/hurd/dl-sysdep.c (fmh): Fixed this kludge to work
when 0x08000000 and up are not mapped.
* Makerules (stamp$o-$(subdir) rule): Remove the timestamp file
before touching it.
(lib%.so): Use -Wl to get -soname to ld.
* elf/dlsym.c: Pass final arg to _dl_lookup_symbol.
* elf/Makefile (libdl.so): Pass $(LDFLAGS.so).
from zero fill.
* elf/dl-lookup.c (_dl_lookup_symbol): Take new flag arg NOSELF;
if nonzero, don't let *REF satisfy the reference itself.
* elf/link.h (_dl_lookup_symbol): Add new arg NOSELF in decl.
* sysdeps/i386/dl-runtime.c (_dl_runtime_resolve): Pass new arg to
_dl_lookup_symbol.
* elf/do-rel.h (elf_dynamic_do_rel): Pass new second arg of
R->r_offset to RESOLVE callback.
* elf/dl-reloc.c (_dl_relocate_object: resolve): Don't let *REF
satisfy the reference itself if its value equals the reloc's
offset.
* elf/rtld.c (dl_main): Write a newline in fatal msg.
* Makerules (lib%.so: lib%_pic.a): Pass $(LDFLAGS.so).
* elf/rtld.c [! NDEBUG] (__assert_perror_fail): New function.
* hurd/hurdstartup.c (_hurd_startup): Fancier kludge to guess phdr
and user entry point addresses.
* elf/dl-load.c (open_path): Don't do strlen on DIRPATH if it's null.
(_dl_map_object): DT_RPATH value is relative to DT_STRTAB value.
* Makerules (install-lib.so): Don't include libc.so.
[$(build-shared)=yes] (install): Depend on the installed libc.so file.
[$(build-shared)=yes] (install-no-libc.a): Make this, rather than
install, depend on the installed $(install-lib.so) files.
[$(build-shared)=yes] (install-lib.so): Append libc.so after that rule.
* sysdeps/mach/hurd/dl-sysdep.c (_dl_sysdep_start): Add kludge to
allocate high addresses to avoid random mappings appearing there.
(mmap): Comment out mask; always pass zero.
Tue Jun 6 13:34:53 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/i386/dl-machine.h (ELF_MACHINE_USER_ADDRESS_MASK): New macro.
* sysdeps/mach/hurd/dl-sysdep.c (mmap): Use it as mask in vm_map call.
* elf/dl-error.c (_dl_catch_error): Clear *ERRSTRING and *OBJNAME
when successful.
* sysdeps/mach/hurd/dl-sysdep.c (threadvars): New static variable.
(__hurd_threadvar_max, __hurd_threadvar_stack_offset): Define these
variables, using the `threadvars' buffer.
* elf/dl-reloc.c: Don't dereference L->l_prev when it's null.
* sysdeps/i386/dl-runtime.c: Likewise.
* elf/rtld.c (dl_main): Add missing NULL terminating argument in
_dl_sysdep_fatal call.
(__assert_fail): Likewise.
* locale/Makefile (localedef-modules): Renamed ctype to
locale-ctype so as not to conflict with the object file for
ctype/ctype.c in the build directory.
* sysdeps/i386/dl-machine.h (elf_machine_rel): If MAP->l_type is
lt_interpreter, first undo relocation done during bootstrapping.
* elf/elf.h (ELFMAG): Use \177 instead of \x7f. It seems GCC
insists on seeing the following E as part of hex 7FE, and
complaining that is wider than a byte.
* mach/Makefile (server-interfaces): Removed notify and
device_reply. For shlibs with eager binding, libmachuser.so must
not refer to any functions not defined in libc.
* Makeconfig (+gccwarn): Add -Winline.
* hurd/hurdsig.c (_hurd_internal_post_signal): If SS->context is
set, avoid abort_rpcs, and use reply and intr ports saved in
SS->context.
* sysdeps/mach/hurd/i386/trampoline.c: Don't set SS->intr_port
from SS->context. Don't clear SS->context.
* sysdeps/mach/hurd/i386/sigreturn.c: Don't set SS->intr_port when
setting SS->context. If msg_sig_post returns, re-lock and clear
SS->context.
Fri May 5 10:37:09 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* mach/Makefile (errsystems.c): Comment out generation rule.
* sysdeps/mach/_strerror.c: Consider a system unknown if its
bad_sub member is null.
* mach/mig-alloc.c: Add weak alias to non-__ name.
* sysdeps/mach/hurd/dup2.c: Fixed broken test in last change.
* elf/dl-error.c (_dl_catch_error): Actually call the OPERATE
function. Duh.
* hurd/Makefile (distribute): Added hurdstartup.h.
* hurd/hurd.h: Remove _hurd_startup decl.
* hurd/hurd/ioctl.h (_HURD_HANDLE_IOCTLS): Use __attribute__
((__unused__)) instead of gratuitous self reference.
* sysdeps/mach/hurd/dup2.c: Call _hurd_alloc_fd to expand the
table if FD2 doesn't fit.
* sysdeps/mach/hurd/getdtsz.c: Return the RLIM_NOFILE soft limit,
not the current table size.
* sysdeps/i386/init-first.c: New file.
* sysdeps/stub/init-first.c: New file.
* sysdeps/i386/dl-machine.h: New file.
* sysdeps/stub/dl-machine.h: New file.
* sysdeps/i386/dl-runtime.c: New file.
* sysdeps/stub/dl-runtime.c: New file.
* sysdeps/i386/elf/start.S: New file.
* sysdeps/generic/dl-sysdep.c: New file.
* sysdeps/mach/hurd/dl-sysdep.c: New file.