diff options
author | Roland McGrath <roland@gnu.org> | 1995-11-07 21:46:52 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1995-11-07 21:46:52 +0000 |
commit | 86d2c878acad4d2f16d0af6fe6a030b90815362d (patch) | |
tree | 69e150aefd1002c3411b34da02bf852525c01ff7 /elf/Makefile | |
parent | 51093422b2ea7d61c17e4ac55af61ba9558d18d4 (diff) | |
download | glibc-86d2c878acad4d2f16d0af6fe6a030b90815362d.tar.gz glibc-86d2c878acad4d2f16d0af6fe6a030b90815362d.tar.xz glibc-86d2c878acad4d2f16d0af6fe6a030b90815362d.zip |
Tue Nov 7 12:29:46 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* 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.
Diffstat (limited to 'elf/Makefile')
-rw-r--r-- | elf/Makefile | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/elf/Makefile b/elf/Makefile index 21d2fc5fd5..314289b893 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -31,24 +31,42 @@ libdl-inhibit-o = $(filter-out .so,$(object-suffixes)) # Build only shared. rtld-routines := rtld $(addprefix dl-,load lookup object reloc \ runtime sysdep error init fini) distribute = $(rtld-routines:=.c) dynamic-link.h do-rel.h \ - soinit.c sofini.c ldd.sh.in + soinit.c sofini.c ldd.sh.in linux-compat.c include ../Makeconfig ifeq (yes,$(build-shared)) extra-objs = $(rtld-routines:=.so) soinit.so sofini.so +generated = librtld.so install-others = $(libdir)/$(rtld-installed-name) install-bin = ldd + +ifneq (,$(filter linux%,$(config-os))) +extra-objs += linux-compat.so +install-lib += ld-linux.so.1 +endif endif include ../Rules -$(objpfx)ld.so: $(rtld-routines:%=$(objpfx)%.so) \ - $(patsubst %,$(common-objpfx)lib%_pic.a,\ - elf c $(LDLIBS-c.so:-l%=%)) - $(LINK.o) -nostdlib -nostartfiles -shared -o $@ \ + +# Link together the dynamic linker into a single relocatable object. +# We use this to produce both the ABI-compliant and Linux-compatible +# dynamic linker shared objects below. +$(objpfx)librtld.so: $(rtld-routines:%=$(objpfx)%.so) \ + $(patsubst %,$(common-objpfx)lib%_pic.a,\ + elf c $(LDLIBS-c.so:-l%=%)) + $(LINK.o) -nostdlib -nostartfiles -r -o $@ \ '-Wl,-(' $^ -lgcc '-Wl,-)' +$(objpfx)ld.so $(objpfx)ld-linux.so.1: $(objpfx)librtld.so + $(LINK.o) -nostdlib -nostartfiles -shared -o $@ $^ + +# The Linux-compatible dynamic linker shared object is just the same +# with one object file of compatibility initialization code added. +$(objpfx)ld-linux.so.1: $(objpfx)linux-compat.so + + $(objpfx)libdl.so: $(objpfx)libdl_pic.a $(common-objpfx)libc.so $(objpfx)ld.so $(patsubst %/,cd %;,$(objpfx)) \ $(LINK.o) -shared -o $(@:$(objpfx)%=%) \ |