diff options
| author | Eric Andersen <andersen@codepoet.org> | 2002-02-18 08:45:53 +0000 | 
|---|---|---|
| committer | Eric Andersen <andersen@codepoet.org> | 2002-02-18 08:45:53 +0000 | 
| commit | c35cde1edbe9d3375ed880fe8bb7d0fffba2f000 (patch) | |
| tree | 8eb890508a7c6f00aeaa035dbb23a687e0a4cae4 | |
| parent | 5305b3df0ac3b6970947180fa9b2fcad0b6e6364 (diff) | |
Make shared libs properly list the correct ld.so in the interp
field by being sneaky.
| -rw-r--r-- | ldso/libdl/Makefile | 3 | ||||
| -rw-r--r-- | libc/Makefile | 3 | ||||
| -rw-r--r-- | libc/misc/internals/Makefile | 15 | ||||
| -rw-r--r-- | libcrypt/Makefile | 3 | ||||
| -rw-r--r-- | libm/Makefile | 5 | ||||
| -rw-r--r-- | libresolv/Makefile | 3 | ||||
| -rw-r--r-- | libutil/Makefile | 3 | 
7 files changed, 25 insertions, 10 deletions
diff --git a/ldso/libdl/Makefile b/ldso/libdl/Makefile index deb9a7f12..0e8d0a039 100644 --- a/ldso/libdl/Makefile +++ b/ldso/libdl/Makefile @@ -52,7 +52,8 @@ $(OBJ): Makefile  shared:  	$(LD) $(LDFLAGS) -soname=$(LIBDL_SHARED).$(MAJOR_VERSION) \  		-o $(LIBDL_SHARED_FULLNAME) --whole-archive $(LIBDL) \ -		--no-whole-archive -L$(TOPDIR)/lib -lc; +		--no-whole-archive $(TOPDIR)/libc/misc/internals/interp.o \ +		-L$(TOPDIR)/lib -lc;  	install -d $(TOPDIR)lib  	rm -f $(TOPDIR)lib/$(LIBDL_SHARED_FULLNAME) $(TOPDIR)lib/$(LIBDL_SHARED).$(MAJOR_VERSION)  	install -m 644 $(LIBDL_SHARED_FULLNAME) $(TOPDIR)lib; diff --git a/libc/Makefile b/libc/Makefile index 0d5d758eb..a393b6d9f 100644 --- a/libc/Makefile +++ b/libc/Makefile @@ -47,7 +47,8 @@ shared: $(TOPDIR)lib/$(LIBNAME)  	@(cd tmp && CC=$(CC) LD=$(LD) NM=$(NM) AR=$(AR) \  		/bin/sh ../../extra/scripts/get-needed-libgcc-objects.sh)  	$(LD) $(LDFLAGS) -soname=$(SHARED_MAJORNAME) -o $(SHARED_FULLNAME) \ -		--whole-archive ./tmp/libgcc-need.a $(LIBNAME) --no-whole-archive $(LDSO) +		--whole-archive ./tmp/libgcc-need.a $(LIBNAME) --no-whole-archive \ +		$(TOPDIR)/libc/misc/internals/interp.o  	@/bin/true #rm -rf tmp  	install -d $(TOPDIR)lib  	rm -f $(TOPDIR)lib/$(SHARED_FULLNAME) diff --git a/libc/misc/internals/Makefile b/libc/misc/internals/Makefile index 8e4d160a9..29ffdec7b 100644 --- a/libc/misc/internals/Makefile +++ b/libc/misc/internals/Makefile @@ -35,17 +35,26 @@ endif  COBJS=$(patsubst %.c,%.o, $(CSRC))  OBJS=$(COBJS) -all: $(OBJS) $(LIBC) +all: $(OBJS) interp.o $(LIBC) -$(LIBC): ar-target +$(LIBC): interp.c ar-target  ar-target: $(OBJS)  	$(AR) $(ARFLAGS) $(LIBC) $(OBJS) +interp.c: Makefile +	echo "/* Force shared libraries to know about the correct library loader */" > interp.c +	echo "const char __dl_ldso__[] __attribute__ ((section " \ +		"(\".interp\"))) =\""$(DYNAMIC_LINKER)"\";" >> interp.c +  $(COBJS): %.o : %.c  	$(CC) $(CFLAGS) -c $< -o $@  	$(STRIPTOOL) -x -R .note -R .comment $*.o +interp.o: %.o : %.c +	$(CC) $(CFLAGS) -c $< -o $@ +	$(STRIPTOOL) -x -R .note -R .comment $*.o +  clean: -	rm -f *.[oa] *~ core +	rm -f *.[oa] interp.c *~ core diff --git a/libcrypt/Makefile b/libcrypt/Makefile index 73bebd9db..cc623fa5e 100644 --- a/libcrypt/Makefile +++ b/libcrypt/Makefile @@ -50,7 +50,8 @@ $(OBJ): Makefile  shared: all  	$(LD) $(LDFLAGS) -soname=$(LIBCRYPT_SHARED).$(MAJOR_VERSION) \  		-o $(LIBCRYPT_SHARED_FULLNAME) --whole-archive $(LIBCRYPT) \ -		--no-whole-archive -L$(TOPDIR)/lib -lc; +		--no-whole-archive $(TOPDIR)/libc/misc/internals/interp.o \ +		-L$(TOPDIR)/lib -lc;  	install -d $(TOPDIR)lib  	rm -f $(TOPDIR)lib/$(LIBCRYPT_SHARED_FULLNAME) $(TOPDIR)lib/$(LIBCRYPT_SHARED).$(MAJOR_VERSION)  	install -m 644 $(LIBCRYPT_SHARED_FULLNAME) $(TOPDIR)lib; diff --git a/libm/Makefile b/libm/Makefile index 3cd82d686..e9cdf47df 100644 --- a/libm/Makefile +++ b/libm/Makefile @@ -94,8 +94,9 @@ shared: all  	@if [ -f $(LIBM) ] ; then \  	    set -x -e; \  	    $(LD) $(LDFLAGS) -soname=$(LIBM_SHARED).$(MAJOR_VERSION) \ -		    -o $(LIBM_SHARED_FULLNAME) --whole-archive $(LIBM) \ -		    --no-whole-archive -L$(TOPDIR)/lib -lc; \ +		-o $(LIBM_SHARED_FULLNAME) --whole-archive $(LIBM) \ +		--no-whole-archive $(TOPDIR)/libc/misc/internals/interp.o \ +		-L$(TOPDIR)/lib -lc; \  	    install -d $(TOPDIR)lib; \  	    rm -f $(TOPDIR)lib/$(LIBM_SHARED_FULLNAME) $(TOPDIR)lib/$(LIBM_SHARED).$(MAJOR_VERSION); \  	    install -m 644 $(LIBM_SHARED_FULLNAME) $(TOPDIR)lib; \ diff --git a/libresolv/Makefile b/libresolv/Makefile index 1da125a62..57c915f4e 100644 --- a/libresolv/Makefile +++ b/libresolv/Makefile @@ -51,7 +51,8 @@ $(OBJ): Makefile  shared: all  	$(LD) $(LDFLAGS) -soname=$(LIBRESOLV_SHARED).$(MAJOR_VERSION) \  		-o $(LIBRESOLV_SHARED_FULLNAME) --whole-archive $(LIBRESOLV) \ -		--no-whole-archive -L$(TOPDIR)/lib -lc; +		--no-whole-archive $(TOPDIR)/libc/misc/internals/interp.o \ +		-L$(TOPDIR)/lib -lc;  	install -d $(TOPDIR)lib  	rm -f $(TOPDIR)lib/$(LIBRESOLV_SHARED_FULLNAME) $(TOPDIR)lib/$(LIBRESOLV_SHARED).$(MAJOR_VERSION)  	install -m 644 $(LIBRESOLV_SHARED_FULLNAME) $(TOPDIR)lib; diff --git a/libutil/Makefile b/libutil/Makefile index 7ed8239e2..919772ec1 100644 --- a/libutil/Makefile +++ b/libutil/Makefile @@ -52,7 +52,8 @@ $(OBJS): %.o : %.c  shared: all  	$(LD) $(LDFLAGS) -soname=$(LIBUTIL_SHARED).$(MAJOR_VERSION) \  		-o $(LIBUTIL_SHARED_FULLNAME) --whole-archive $(LIBUTIL) \ -		--no-whole-archive -L$(TOPDIR)/lib -lc; +		--no-whole-archive $(TOPDIR)/libc/misc/internals/interp.o \ +		-L$(TOPDIR)/lib -lc;  	install -d $(TOPDIR)lib  	rm -f $(TOPDIR)lib/$(LIBUTIL_SHARED_FULLNAME) $(TOPDIR)lib/$(LIBUTIL_SHARED).$(MAJOR_VERSION)  	install -m 644 $(LIBUTIL_SHARED_FULLNAME) $(TOPDIR)lib/;  | 
