about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1995-04-12 01:03:38 +0000
committerRoland McGrath <roland@gnu.org>1995-04-12 01:03:38 +0000
commit53afa8d96790cce8fd0d0ce71307bc7ae31c15fb (patch)
treeca8c58bb02b0d0fccc45e63708a775836c1cbe7e
parent217d85b9c89bc7d6e2c2db7fa93238a6b6f12d73 (diff)
downloadglibc-53afa8d96790cce8fd0d0ce71307bc7ae31c15fb.tar.gz
glibc-53afa8d96790cce8fd0d0ce71307bc7ae31c15fb.tar.xz
glibc-53afa8d96790cce8fd0d0ce71307bc7ae31c15fb.zip
Tue Apr 11 20:38:55 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> cvs/libc-950411
	* sysdeps/i386/add_n.S [PIC]: Use self-call to avoid generating reloc.
	* sysdeps/i386/sub_n.S [PIC]: Likewise.

	* libc-symbols.h (_elf_set_element) [PIC]: Don't make the element
 	word `const'.

	* Makeconfig (CPPFLAGS, CFLAGS): Fix swapped references to
 	$(foo-$(suffix $@)).

	* manual/Makefile (chapters-incl): Filter out summary.texi.
-rw-r--r--ChangeLog13
-rw-r--r--Makeconfig4
-rw-r--r--libc-symbols.h8
-rw-r--r--manual/Makefile4
-rw-r--r--sysdeps/i386/add_n.S7
-rw-r--r--sysdeps/i386/sub_n.S7
6 files changed, 39 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index f859c74789..668e4bfa84 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
+Tue Apr 11 20:38:55 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
+
+	* sysdeps/i386/add_n.S [PIC]: Use self-call to avoid generating reloc.
+	* sysdeps/i386/sub_n.S [PIC]: Likewise.
+
 Mon Apr 10 14:53:15 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>
 
+	* libc-symbols.h (_elf_set_element) [PIC]: Don't make the element
+ 	word `const'.
+
+	* Makeconfig (CPPFLAGS, CFLAGS): Fix swapped references to
+ 	$(foo-$(suffix $@)).
+
+	* manual/Makefile (chapters-incl): Filter out summary.texi.
+
 	* stdlib/strtod.c (STRTOF): Use extra macro to make STRTOF's #defn
  	a weak symbol instead of literal "STRTOF".
 
diff --git a/Makeconfig b/Makeconfig
index 1080646bc2..823b7f44f1 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -340,8 +340,8 @@ endif	# gcc
 
 # These are the variables that the implicit compilation rules use.
 CPPFLAGS = $(+includes) $(defines) -include $(..)libc-symbols.h \
-	   $(sysdep-CPPFLAGS) $(CFLAGS-$(suffix $@))
-override CFLAGS	= $(+cflags) $(sysdep-CFLAGS) $(CPPFLAGS-$(suffix $@))
+	   $(sysdep-CPPFLAGS) $(CPPFLAGS-$(suffix $@))
+override CFLAGS	= $(+cflags) $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@))
 
 
 # This is the macro that the implicit linking rules use.
diff --git a/libc-symbols.h b/libc-symbols.h
index 83773bfdc9..be88e7601b 100644
--- a/libc-symbols.h
+++ b/libc-symbols.h
@@ -153,9 +153,17 @@ Cambridge, MA 02139, USA.  */
 
 /* These are all done the same way in ELF.
    There is a new section created for each set.  */
+#ifdef PIC
+/* When building a shared library, make the set section writable,
+   because it will need to be relocated at run time anyway.  */
+#define _elf_set_element(set, symbol) \
+  static const void *__elf_set_##set##_element_##symbol##__ \
+    __attribute__ ((section (#set))) = &(symbol)
+#else
 #define _elf_set_element(set, symbol) \
   static const void *const __elf_set_##set##_element_##symbol##__ \
     __attribute__ ((section (#set))) = &(symbol)
+#endif
 
 /* Define SET as a symbol set.  This may be required (it is in a.out) to
    be able to use the set's contents.  */
diff --git a/manual/Makefile b/manual/Makefile
index 57e6ae2306..ca930fd481 100644
--- a/manual/Makefile
+++ b/manual/Makefile
@@ -1,6 +1,6 @@
 # Makefile for the GNU C Library manual.
 
-# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -35,11 +35,11 @@ endif
 include chapters
 chapters: libc.texinfo
 	$(find-includes)
-chapters := $(filter-out summary.texi,$(chapters))
 ifdef chapters
 include chapters-incl
 chapters-incl: $(chapters)
 	$(find-includes)
+chapters-incl := $(filter-out summary.texi,$(chapters-incl))
 endif
 
 define find-includes
diff --git a/sysdeps/i386/add_n.S b/sysdeps/i386/add_n.S
index f528976866..02f696ae5e 100644
--- a/sysdeps/i386/add_n.S
+++ b/sysdeps/i386/add_n.S
@@ -53,7 +53,14 @@ C_SYMBOL_NAME(__mpn_add_n:)
 	subl	%eax,%esi		/* ... by a constant when we ... */
 	subl	%eax,%edx		/* ... enter the loop */
 	shrl	$2,%eax			/* restore previous value */
+#ifdef PIC
+	call	here
+here:	leal	(Loop - 3 - here)(%eax,%eax,8),%eax
+	addl	(%esp),%eax
+	addl	$4,%esp
+#else
 	leal	(Loop - 3)(%eax,%eax,8),%eax	/* calc start addr in loop */
+#endif
 	jmp	*%eax			/* jump into loop */
 	ALIGN (3)
 Loop:	movl	(%esi),%eax
diff --git a/sysdeps/i386/sub_n.S b/sysdeps/i386/sub_n.S
index a1630d4562..63086bd7fd 100644
--- a/sysdeps/i386/sub_n.S
+++ b/sysdeps/i386/sub_n.S
@@ -53,7 +53,14 @@ C_SYMBOL_NAME(__mpn_sub_n:)
 	subl	%eax,%esi		/* ... by a constant when we ... */
 	subl	%eax,%edx		/* ... enter the loop */
 	shrl	$2,%eax			/* restore previous value */
+#ifdef PIC
+	call	here
+here:	leal	(Loop - 3 - here)(%eax,%eax,8),%eax
+	addl	(%esp),%eax
+	addl	$4,%esp
+#else
 	leal	(Loop - 3)(%eax,%eax,8),%eax	/* calc start addr in loop */
+#endif
 	jmp	*%eax			/* jump into loop */
 	ALIGN (3)
 Loop:	movl	(%esi),%eax