egcs-980221, sunos4 bootstrap failure + patch

Kaveh R. Ghazi ghazi@caip.rutgers.edu
Tue Feb 24 11:46:00 GMT 1998


	I had some trouble bootstrapping egcs-980221 on
sparc-sun-sunos4.1.3 because that platform contains a non-conforming
prototype of `free' in stdlib.h, and many new files are now including
stdlib.h whereas previously they did not. 

 > cc -c  -DIN_GCC    -g  -DHAVE_CONFIG_H     -I. -I. -I./config ./genattr.c
 > "./genattr.c", line 38: redeclaration of free
 > make[2]: *** [genattr.o] Error 1

	The following patch adds NEED_DECLARATION_FREE macros to protect
from this whereever I found it necessary for the bootstrap to succeed. 

		--Kaveh




Tue Feb 24 13:34:46 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * genattr.c: Wrap prototype of `free' in NEED_DECLARATION_FREE.
        * genattrtab.c: Likewise.
        * genconfig.c: Likewise.
        * genemit.c: Likewise.
        * genextract.c: Likewise.
        * genflags.c: Likewise.
        * genopinit.c: Likewise.
        * genoutput.c: Likewise.
        * genpeep.c: Likewise.
        * genrecog.c: Likewise.
        * tlink.c: Likewise.  Also wrap `getenv' in NEED_DECLARATION_GETENV.
 
 

diff -r -u /tmp/gcc-testing/egcs-980221/gcc/genattr.c egcs-980221/gcc/genattr.c
--- /tmp/gcc-testing/egcs-980221/gcc/genattr.c	Sat Feb  7 17:54:21 1998
+++ egcs-980221/gcc/genattr.c	Tue Feb 24 00:12:37 1998
@@ -35,7 +35,9 @@
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free free
 
+#ifdef NEED_DECLARATION_FREE
 extern void free PROTO((void *));
+#endif
 extern rtx read_rtx PROTO((FILE *));
 
 char *xmalloc PROTO((unsigned));
diff -r -u /tmp/gcc-testing/egcs-980221/gcc/genattrtab.c egcs-980221/gcc/genattrtab.c
--- /tmp/gcc-testing/egcs-980221/gcc/genattrtab.c	Fri Feb 13 00:30:42 1998
+++ egcs-980221/gcc/genattrtab.c	Tue Feb 24 00:35:11 1998
@@ -140,7 +140,9 @@
 /* Define this so we can link with print-rtl.o to get debug_rtx function.  */
 char **insn_name_ptr = 0;
 
+#ifdef NEED_DECLARATION_FREE
 extern void free ();
+#endif
 extern rtx read_rtx ();
 
 static void fatal ();
diff -r -u /tmp/gcc-testing/egcs-980221/gcc/genconfig.c egcs-980221/gcc/genconfig.c
--- /tmp/gcc-testing/egcs-980221/gcc/genconfig.c	Sat Feb  7 17:54:23 1998
+++ egcs-980221/gcc/genconfig.c	Tue Feb 24 00:16:31 1998
@@ -35,7 +35,9 @@
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free free
 
+#ifdef NEED_DECLARATION_FREE
 extern void free ();
+#endif
 extern rtx read_rtx ();
 
 /* flags to determine output of machine description dependent #define's.  */
diff -r -u /tmp/gcc-testing/egcs-980221/gcc/genemit.c egcs-980221/gcc/genemit.c
--- /tmp/gcc-testing/egcs-980221/gcc/genemit.c	Sat Feb  7 17:54:24 1998
+++ egcs-980221/gcc/genemit.c	Tue Feb 24 00:33:52 1998
@@ -34,7 +34,9 @@
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free free
 
+#ifdef NEED_DECLARATION_FREE
 extern void free ();
+#endif
 extern rtx read_rtx ();
 
 char *xmalloc ();
diff -r -u /tmp/gcc-testing/egcs-980221/gcc/genextract.c egcs-980221/gcc/genextract.c
--- /tmp/gcc-testing/egcs-980221/gcc/genextract.c	Fri Feb 13 06:17:14 1998
+++ egcs-980221/gcc/genextract.c	Tue Feb 24 00:31:17 1998
@@ -35,7 +35,9 @@
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free free
 
+#ifdef NEED_DECLARATION_FREE
 extern void free ();
+#endif
 extern rtx read_rtx ();
 
 /* Names for patterns.  Need to allow linking with print-rtl.  */
diff -r -u /tmp/gcc-testing/egcs-980221/gcc/genflags.c egcs-980221/gcc/genflags.c
--- /tmp/gcc-testing/egcs-980221/gcc/genflags.c	Sat Feb  7 17:54:26 1998
+++ egcs-980221/gcc/genflags.c	Tue Feb 24 00:15:22 1998
@@ -37,7 +37,9 @@
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free free
 
+#ifdef NEED_DECLARATION_FREE
 extern void free ();
+#endif
 extern rtx read_rtx ();
 
 char *xmalloc ();
diff -r -u /tmp/gcc-testing/egcs-980221/gcc/genopinit.c egcs-980221/gcc/genopinit.c
--- /tmp/gcc-testing/egcs-980221/gcc/genopinit.c	Fri Feb 13 00:40:24 1998
+++ egcs-980221/gcc/genopinit.c	Tue Feb 24 00:28:09 1998
@@ -36,7 +36,9 @@
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free free
 
+#ifdef NEED_DECLARATION_FREE
 extern void free ();
+#endif
 extern rtx read_rtx ();
 
 char *xmalloc ();
diff -r -u /tmp/gcc-testing/egcs-980221/gcc/genoutput.c egcs-980221/gcc/genoutput.c
--- /tmp/gcc-testing/egcs-980221/gcc/genoutput.c	Sat Feb  7 17:54:28 1998
+++ egcs-980221/gcc/genoutput.c	Tue Feb 24 00:32:27 1998
@@ -111,7 +111,9 @@
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free free
 
+#ifdef NEED_DECLARATION_FREE
 extern void free ();
+#endif
 extern rtx read_rtx ();
 
 char *xmalloc ();
diff -r -u /tmp/gcc-testing/egcs-980221/gcc/genpeep.c egcs-980221/gcc/genpeep.c
--- /tmp/gcc-testing/egcs-980221/gcc/genpeep.c	Sat Feb  7 17:54:29 1998
+++ egcs-980221/gcc/genpeep.c	Tue Feb 24 00:25:39 1998
@@ -34,7 +34,9 @@
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free free
 
+#ifdef NEED_DECLARATION_FREE
 extern void free ();
+#endif
 extern rtx read_rtx ();
 
 /* While tree-walking an instruction pattern, we keep a chain
diff -r -u /tmp/gcc-testing/egcs-980221/gcc/genrecog.c egcs-980221/gcc/genrecog.c
--- /tmp/gcc-testing/egcs-980221/gcc/genrecog.c	Thu Feb 19 22:13:58 1998
+++ egcs-980221/gcc/genrecog.c	Tue Feb 24 00:29:23 1998
@@ -61,7 +61,9 @@
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free free
 
+#ifdef NEED_DECLARATION_FREE
 extern void free ();
+#endif
 extern rtx read_rtx ();
 
 /* Data structure for a listhead of decision trees.  The alternatives
diff -r -u /tmp/gcc-testing/egcs-980221/gcc/tlink.c egcs-980221/gcc/tlink.c
--- /tmp/gcc-testing/egcs-980221/gcc/tlink.c	Fri Feb 13 00:40:33 1998
+++ egcs-980221/gcc/tlink.c	Tue Feb 24 00:40:53 1998
@@ -49,8 +49,12 @@
 #define obstack_chunk_free free
 
 extern char * xmalloc PARAMS((unsigned));
+#ifdef NEED_DECLARATION_FREE
 extern void free ();
+#endif
+#ifdef NEED_DECLARATION_GETENV
 extern char * getenv ();
+#endif
 
 /* Defined in collect2.c.  */
 extern int vflag, debug;
--
Kaveh R. Ghazi			Project Manager / Custom Development
ghazi@caip.rutgers.edu		ICon CMT Corp.



More information about the Gcc mailing list