OSDN Git Service

Make shared libs properly list the correct ld.so in the interp
authorEric Andersen <andersen@codepoet.org>
Mon, 18 Feb 2002 08:45:53 +0000 (08:45 -0000)
committerEric Andersen <andersen@codepoet.org>
Mon, 18 Feb 2002 08:45:53 +0000 (08:45 -0000)
field by being sneaky.

ldso/libdl/Makefile
libc/Makefile
libc/misc/internals/Makefile
libcrypt/Makefile
libm/Makefile
libresolv/Makefile
libutil/Makefile

index deb9a7f..0e8d0a0 100644 (file)
@@ -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;
index 0d5d758..a393b6d 100644 (file)
@@ -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)
index 8e4d160..29ffdec 100644 (file)
@@ -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
 
index 73bebd9..cc623fa 100644 (file)
@@ -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;
index 3cd82d6..e9cdf47 100644 (file)
@@ -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; \
index 1da125a..57c915f 100644 (file)
@@ -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;
index 7ed8239..919772e 100644 (file)
@@ -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/;