about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1995-06-12 18:26:02 +0000
committerRoland McGrath <roland@gnu.org>1995-06-12 18:26:02 +0000
commit1a2df358c8b1bc40035e30fe12cc4187655dd326 (patch)
tree869f1b729d6f742584e6319e39c40ab7894d78b5
parentf2b0f935d7c8de544408181350c13d8a4db690ca (diff)
downloadglibc-1a2df358c8b1bc40035e30fe12cc4187655dd326.tar.gz
glibc-1a2df358c8b1bc40035e30fe12cc4187655dd326.tar.xz
glibc-1a2df358c8b1bc40035e30fe12cc4187655dd326.zip
Mon Jun 12 13:15:45 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
	* Makerules (lib%.so: lib%_pic.a): Moved this rule to after
 	installation rules.

	* sysdeps/mach/sysdep.h [HAVE_ELF] (ENTRY): Redefine this macro so
 	it uses the `.type' directive, which is necessary for shared
 	libraries to work properly.
-rw-r--r--ChangeLog9
-rw-r--r--Makerules39
-rw-r--r--sysdeps/mach/sysdep.h11
3 files changed, 41 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 03d75b1590..a8e3eb4d4e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Mon Jun 12 13:15:45 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+	* Makerules (lib%.so: lib%_pic.a): Moved this rule to after
+ 	installation rules.
+
+	* sysdeps/mach/sysdep.h [HAVE_ELF] (ENTRY): Redefine this macro so
+ 	it uses the `.type' directive, which is necessary for shared
+ 	libraries to work properly.
+
 Thu Jun  8 02:50:26 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
 	* elf/dl-load.c (_dl_map_object): Add MAP_INHERIT flag in mmap
diff --git a/Makerules b/Makerules
index 87e71a832d..2191251f35 100644
--- a/Makerules
+++ b/Makerules
@@ -350,24 +350,6 @@ lib: lib-noranlib $(foreach l,$(libtypes),$(patsubst %,$(common-objpfx)$l,c))
 # Pattern rule for libraries: depend on the __.SYMDEF member updated by ranlib.
 lib%.a: lib%.a(__.SYMDEF) ;
 
-ifeq (yes,$(build-shared))
-# Pattern rule to build a shared object from an archive of PIC objects.
-# $(LDLIBS-%.so) may contain -l switches to generate run-time dependencies
-# on other shared objects.
-lib%.so: lib%_pic.a
-	$(LINK.o) -shared -o $@ \
-		  $(LDFLAGS.so) $(LDFLAGS-$(notdir $*).so) \
-		  -L$(firstword $(objdir) .)  -L$(common-objpfx:%/=%) \
-		  $(LDLIBS-$(notdir $*).so) -Wl,--whole-archive $< \
-
-# Don't try to use -lc when making libc.so itself.
-# Also omits crti.o and crtn.o, which we do not want
-# since we define our own `.init' section specially.
-LDFLAGS-c.so = -nostdlib -nostartfiles
-# Give libc.so an entry point and make it directly runnable itself.
-LDFLAGS-c.so += -Wl,-dynamic-linker -Wl,/lib/ld.so -e __libc_print_version
-endif
-
 libobjs: $(foreach o,$(object-suffixes),\
 		   $(common-objpfx)$(patsubst %,$(libtype$o),c)(\
 		   $(notdir $(objects:.o=$o))))
@@ -564,6 +546,27 @@ install-no-libc.a-nosubdir: install-headers-nosubdir install-data-nosubdir\
 			    install-others-nosubdir install-sbin-nosubdir
 install: install-no-libc.a-nosubdir
 
+ifeq (yes,$(build-shared))
+# Pattern rule to build a shared object from an archive of PIC objects.
+# This must come after the installation rules so Make doesn't try to
+# build shared libraries in place from the installed *_pic.a files.
+# $(LDLIBS-%.so) may contain -l switches to generate run-time dependencies
+# on other shared objects.
+lib%.so: lib%_pic.a
+	$(LINK.o) -shared -o $@ \
+		  $(LDFLAGS.so) $(LDFLAGS-$(notdir $*).so) \
+		  -L$(firstword $(objdir) .)  -L$(common-objpfx:%/=%) \
+		  $(LDLIBS-$(notdir $*).so) -Wl,--whole-archive $< \
+
+# Don't try to use -lc when making libc.so itself.
+# Also omits crti.o and crtn.o, which we do not want
+# since we define our own `.init' section specially.
+LDFLAGS-c.so = -nostdlib -nostartfiles
+# Give libc.so an entry point and make it directly runnable itself.
+LDFLAGS-c.so += -Wl,-dynamic-linker -Wl,/lib/ld.so -e __libc_print_version
+endif
+
+
 # Command to compile $< in $(objdir) using the native libraries.
 define native-compile
 cwd=`pwd`; cd $(@D); $(BUILD_CC) $(BUILD_CFLAGS) \
diff --git a/sysdeps/mach/sysdep.h b/sysdeps/mach/sysdep.h
index 9a8dbd5163..d5d370efd0 100644
--- a/sysdeps/mach/sysdep.h
+++ b/sysdeps/mach/sysdep.h
@@ -28,6 +28,17 @@ Cambridge, MA 02139, USA.  */
 #define EXT(x) C_SYMBOL_NAME(x)
 #define LEXT(x) C_SYMBOL_NAME(x##:)
 
+#ifdef HAVE_ELF
+/* For ELF we need to add the `.type' directive to make shared libraries
+   work right.  */
+#undef ENTRY
+#define ENTRY(name) \
+  ASM_GLOBAL_DIRECTIVE name; \
+  .align ALIGN; \
+  .type name,@function; \
+  name:
+#endif
+
 #endif
 
 /* This is invoked by things run when there is random lossage, before they