This is the mail archive of the java-patches@sourceware.cygnus.com mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

configure changes



Here are two patches combined as one.  They both add something to
libgcj.spec.  I've committed these changes.

The first adds "-u __rethrow" to the link line.  This appears to solve
libgcc.a mismatch problems.

The second is a fix for Alpha Linux, which doesn't have data_start in
any of the start files (unlike all other Linux systems).  The
collector requires data_start in the program's data section in order
to work correctly.  The fix is to create a .a which is always linked
in by gcj.  A configure test has been added to see if this is
required.  There's a corresponding change to the collector.


1999-12-19  Anthony Green  <green@cygnus.com>

	* libgcjdata.c: New file.
	* libgcj.spec.in: Use @LIBDATASTARTSPEC@ in startfile.
	* configure: Rebuilt.
	* configure.in (LIBDATASTARTSPEC): Force data with a known name
	into the program.
	* Makefile.in: Rebuilt.
	* Makefile.am: Build libgcjdata.a.

	* libgcj.spec.in: Use @FORCELIBGCCSPEC@ in startfile.
	* configure: Rebuilt.
	* configure.in (FORCELIBGCCSPEC): Force important parts of libgcc
	into every program.

Index: libgcj.spec.in
===================================================================
RCS file: /cvs/java/libgcj/libjava/libgcj.spec.in,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- libgcj.spec.in	1999/11/19 19:13:42	1.7
+++ libgcj.spec.in	1999/12/20 02:18:11	1.8
@@ -8,3 +8,11 @@
 
 *jc1:  @DIVIDESPEC@ @EXCEPTIONSPEC@
 
+#
+# libgcc should really be a shared library.  This is a design flaw
+# that causes no end of mysterious problems.  If we are using the
+# GNU linker, force parts of libgcc into the program file rather
+# than picking bits up from various shared libraries.
+#
+%rename startfile startfileorig
+*startfile: %(startfileorig) @LIBDATASTARTSPEC@ @FORCELIBGCCSPEC@
Index: configure.in
===================================================================
RCS file: /cvs/java/libgcj/libjava/configure.in,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- configure.in	1999/12/15 22:38:56	1.42
+++ configure.in	1999/12/20 02:18:11	1.43
@@ -78,6 +78,22 @@
    AC_DEFINE(SJLJ_EXCEPTIONS)
 fi
 
+FORCELIBGCCSPEC=
+dnl Work around libgcc design flaw.
+if test "$ac_cv_prog_gnu_ld" = yes; then
+   FORCELIBGCCSPEC="-u __rethrow -lgcc"
+fi   
+
+AC_MSG_CHECKING([for data_start])
+LIBDATASTARTSPEC=
+NEEDS_DATA_START=
+AC_TRY_LINK([extern int data_start;], [return ((int) &data_start);],
+  [AC_MSG_RESULT(found it)],
+  [LIBDATASTARTSPEC="-lgcjdata"
+   NEEDS_DATA_START=yes	
+   AC_MSG_RESULT(missing)])
+AC_SUBST(LIBDATASTARTSPEC)
+
 dnl See if the user wants to disable java.net.  This is the mildly
 dnl ugly way that we admit that target-side configuration sucks.
 AC_ARG_ENABLE(java-net,
@@ -538,11 +554,13 @@
 AC_SUBST(ZINCS)
 AC_SUBST(DIVIDESPEC)
 AC_SUBST(EXCEPTIONSPEC)
+AC_SUBST(FORCELIBGCCSPEC)
 
 AM_CONDITIONAL(CANADIAN, test "$CANADIAN" = yes)
 AM_CONDITIONAL(NULL_TARGET, test "$NULL_TARGET" = yes)
 AM_CONDITIONAL(NATIVE, test "$NATIVE" = yes || test "$NULL_TARGET" = yes)
 AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host")
+AM_CONDITIONAL(NEEDS_DATA_START, test "$NEEDS_DATA_START" = yes && test "$NATIVE" = yes)
 AC_SUBST(EH_COMMON_INCLUDE)
 
 # Determine gcj version number.
Index: Makefile.am
===================================================================
RCS file: /cvs/java/libgcj/libjava/Makefile.am,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- Makefile.am	1999/11/19 19:13:42	1.38
+++ Makefile.am	1999/12/20 02:18:11	1.39
@@ -27,6 +27,11 @@
 toolexeclib_DATA = libgcj.spec
 data_DATA = libgcj.zip
 
+if NEEDS_DATA_START
+toolexeclib_LIBRARIES = libgcjdata.a
+libgcjdata_a_SOURCES = libgcjdata.c
+endif
+
 ## For now, only on native systems.  FIXME.
 if NATIVE
 bin_PROGRAMS = jv-convert gij
Index: Makefile.in
===================================================================
RCS file: /cvs/java/libgcj/libjava/Makefile.in,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- Makefile.in	1999/11/19 19:13:42	1.41
+++ Makefile.in	1999/12/20 02:18:11	1.42
@@ -75,12 +75,14 @@
 DLLTOOL = @DLLTOOL@
 EXCEPTIONSPEC = @EXCEPTIONSPEC@
 EXEEXT = @EXEEXT@
+FORCELIBGCCSPEC = @FORCELIBGCCSPEC@
 GCDEPS = @GCDEPS@
 GCINCS = @GCINCS@
 GCLIBS = @GCLIBS@
 GCOBJS = @GCOBJS@
 GCSPEC = @GCSPEC@
 LD = @LD@
+LIBDATASTARTSPEC = @LIBDATASTARTSPEC@
 LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
 LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
 LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@
@@ -88,7 +90,6 @@
 LN_S = @LN_S@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
-OBJDUMP = @OBJDUMP@
 PACKAGE = @PACKAGE@
 PERL = @PERL@
 RANLIB = @RANLIB@
@@ -98,6 +99,7 @@
 THREADLIBS = @THREADLIBS@
 THREADOBJS = @THREADOBJS@
 THREADSPEC = @THREADSPEC@
+USE_SYMBOL_UNDERSCORE = @USE_SYMBOL_UNDERSCORE@
 VERSION = @VERSION@
 ZDEPS = @ZDEPS@
 ZINCS = @ZINCS@
@@ -122,6 +124,11 @@
 toolexeclib_DATA = libgcj.spec
 data_DATA = libgcj.zip
 
+@NEEDS_DATA_START_TRUE@toolexeclib_LIBRARIES = \
+@NEEDS_DATA_START_TRUE@libgcjdata.a
+@NEEDS_DATA_START_TRUE@libgcjdata_a_SOURCES = \
+@NEEDS_DATA_START_TRUE@libgcjdata.c
+
 @NATIVE_TRUE@bin_PROGRAMS = \
 @NATIVE_TRUE@jv-convert gij
 @CANADIAN_TRUE@@NULL_TARGET_TRUE@GCJ = \
@@ -679,13 +686,17 @@
 mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
 CONFIG_HEADER = ./include/config.h
 CONFIG_CLEAN_FILES =  libgcj.spec
-LTLIBRARIES =  $(toolexeclib_LTLIBRARIES)
+LIBRARIES =  $(toolexeclib_LIBRARIES)
 
 
 DEFS = @DEFS@ -I. -I$(srcdir) -I./include
 CPPFLAGS = @CPPFLAGS@
 LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
+libgcjdata_a_LIBADD = 
+@NEEDS_DATA_START_TRUE@libgcjdata_a_OBJECTS =  libgcjdata.o
+LTLIBRARIES =  $(toolexeclib_LTLIBRARIES)
+
 libgcj_la_OBJECTS =  prims.lo jni.lo exception.lo resolve.lo \
 defineclass.lo interpret.lo
 @NATIVE_TRUE@bin_PROGRAMS =  jv-convert$(EXEEXT) gij$(EXEEXT)
@@ -715,7 +726,7 @@
 
 DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
 
-TAR = tar
+TAR = gtar
 GZIP_ENV = --best
 DIST_SUBDIRS =  testsuite gcj include gcj include
 DEP_FILES =  .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \
@@ -910,10 +921,11 @@
 .deps/java/util/zip/ZipConstants.P .deps/java/util/zip/ZipEntry.P \
 .deps/java/util/zip/ZipException.P .deps/java/util/zip/ZipFile.P \
 .deps/java/util/zip/ZipInputStream.P \
-.deps/java/util/zip/ZipOutputStream.P .deps/jni.P .deps/no-threads.P \
-.deps/nogc.P .deps/posix-threads.P .deps/prims.P .deps/resolve.P
-SOURCES = $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) $(jv_convert_SOURCES) $(EXTRA_jv_convert_SOURCES) $(gij_SOURCES) $(EXTRA_gij_SOURCES) $(gen_from_JIS_SOURCES) $(EXTRA_gen_from_JIS_SOURCES)
-OBJECTS = $(libgcj_la_OBJECTS) $(jv_convert_OBJECTS) $(gij_OBJECTS) $(gen_from_JIS_OBJECTS)
+.deps/java/util/zip/ZipOutputStream.P .deps/jni.P .deps/libgcjdata.P \
+.deps/no-threads.P .deps/nogc.P .deps/posix-threads.P .deps/prims.P \
+.deps/resolve.P
+SOURCES = $(libgcjdata_a_SOURCES) $(libgcj_la_SOURCES) $(EXTRA_libgcj_la_SOURCES) $(jv_convert_SOURCES) $(EXTRA_jv_convert_SOURCES) $(gij_SOURCES) $(EXTRA_gij_SOURCES) $(gen_from_JIS_SOURCES) $(EXTRA_gen_from_JIS_SOURCES)
+OBJECTS = $(libgcjdata_a_OBJECTS) $(libgcj_la_OBJECTS) $(jv_convert_OBJECTS) $(gij_OBJECTS) $(gen_from_JIS_OBJECTS)
 
 all: all-redirect
 .SUFFIXES:
@@ -935,29 +947,36 @@
 libgcj.spec: $(top_builddir)/config.status libgcj.spec.in
 	cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
 
-mostlyclean-toolexeclibLTLIBRARIES:
+mostlyclean-toolexeclibLIBRARIES:
 
-clean-toolexeclibLTLIBRARIES:
-	-test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
+clean-toolexeclibLIBRARIES:
+	-test -z "$(toolexeclib_LIBRARIES)" || rm -f $(toolexeclib_LIBRARIES)
 
-distclean-toolexeclibLTLIBRARIES:
+distclean-toolexeclibLIBRARIES:
 
-maintainer-clean-toolexeclibLTLIBRARIES:
+maintainer-clean-toolexeclibLIBRARIES:
 
-install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
+install-toolexeclibLIBRARIES: $(toolexeclib_LIBRARIES)
 	@$(NORMAL_INSTALL)
 	$(mkinstalldirs) $(DESTDIR)$(toolexeclibdir)
-	@list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
+	@list='$(toolexeclib_LIBRARIES)'; for p in $$list; do \
 	  if test -f $$p; then \
-	    echo "$(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(toolexeclibdir)/$$p"; \
-	    $(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(toolexeclibdir)/$$p; \
+	    echo " $(INSTALL_DATA) $$p $(DESTDIR)$(toolexeclibdir)/$$p"; \
+	    $(INSTALL_DATA) $$p $(DESTDIR)$(toolexeclibdir)/$$p; \
+	  else :; fi; \
+	done
+	@$(POST_INSTALL)
+	@list='$(toolexeclib_LIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    echo " $(RANLIB) $(DESTDIR)$(toolexeclibdir)/$$p"; \
+	    $(RANLIB) $(DESTDIR)$(toolexeclibdir)/$$p; \
 	  else :; fi; \
 	done
 
-uninstall-toolexeclibLTLIBRARIES:
+uninstall-toolexeclibLIBRARIES:
 	@$(NORMAL_UNINSTALL)
-	list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
-	  $(LIBTOOL)  --mode=uninstall rm -f $(DESTDIR)$(toolexeclibdir)/$$p; \
+	list='$(toolexeclib_LIBRARIES)'; for p in $$list; do \
+	  rm -f $(DESTDIR)$(toolexeclibdir)/$$p; \
 	done
 
 .s.o:
@@ -992,6 +1011,36 @@
 
 maintainer-clean-libtool:
 
+libgcjdata.a: $(libgcjdata_a_OBJECTS) $(libgcjdata_a_DEPENDENCIES)
+	-rm -f libgcjdata.a
+	$(AR) cru libgcjdata.a $(libgcjdata_a_OBJECTS) $(libgcjdata_a_LIBADD)
+	$(RANLIB) libgcjdata.a
+
+mostlyclean-toolexeclibLTLIBRARIES:
+
+clean-toolexeclibLTLIBRARIES:
+	-test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES)
+
+distclean-toolexeclibLTLIBRARIES:
+
+maintainer-clean-toolexeclibLTLIBRARIES:
+
+install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	$(mkinstalldirs) $(DESTDIR)$(toolexeclibdir)
+	@list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    echo "$(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(toolexeclibdir)/$$p"; \
+	    $(LIBTOOL)  --mode=install $(INSTALL) $$p $(DESTDIR)$(toolexeclibdir)/$$p; \
+	  else :; fi; \
+	done
+
+uninstall-toolexeclibLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	list='$(toolexeclib_LTLIBRARIES)'; for p in $$list; do \
+	  $(LIBTOOL)  --mode=uninstall rm -f $(DESTDIR)$(toolexeclibdir)/$$p; \
+	done
+
 libgcj.la: $(libgcj_la_OBJECTS) $(libgcj_la_DEPENDENCIES)
 	$(CXXLINK) -rpath $(toolexeclibdir) $(libgcj_la_LDFLAGS) $(libgcj_la_OBJECTS) $(libgcj_la_LIBADD) $(LIBS)
 
@@ -1218,7 +1267,7 @@
 	@for file in $(DISTFILES); do \
 	  d=$(srcdir); \
 	  if test -d $$d/$$file; then \
-	    cp -pr $$/$$file $(distdir)/$$file; \
+	    cp -pr $$d/$$file $(distdir)/$$file; \
 	  else \
 	    test -f $(distdir)/$$file \
 	    || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
@@ -1296,7 +1345,8 @@
 installcheck: installcheck-recursive
 install-info-am: 
 install-info: install-info-recursive
-install-exec-am: install-toolexeclibLTLIBRARIES install-binPROGRAMS \
+install-exec-am: install-toolexeclibLIBRARIES \
+		install-toolexeclibLTLIBRARIES install-binPROGRAMS \
 		install-toolexeclibDATA
 install-exec: install-exec-recursive
 
@@ -1306,16 +1356,18 @@
 install-am: all-am
 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
 install: install-recursive
-uninstall-am: uninstall-toolexeclibLTLIBRARIES uninstall-binPROGRAMS \
+uninstall-am: uninstall-toolexeclibLIBRARIES \
+		uninstall-toolexeclibLTLIBRARIES uninstall-binPROGRAMS \
 		uninstall-dataDATA uninstall-toolexeclibDATA
 uninstall: uninstall-recursive
-all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA)
+all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(PROGRAMS) $(DATA)
 all-redirect: all-recursive
 install-strip:
 	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
 installdirs: installdirs-recursive
 installdirs-am:
-	$(mkinstalldirs)  $(DESTDIR)$(toolexeclibdir) $(DESTDIR)$(bindir) \
+	$(mkinstalldirs)  $(DESTDIR)$(toolexeclibdir) \
+		$(DESTDIR)$(toolexeclibdir) $(DESTDIR)$(bindir) \
 		$(DESTDIR)$(datadir) $(DESTDIR)$(toolexeclibdir)
 
 
@@ -1330,30 +1382,33 @@
 	-rm -f config.cache config.log stamp-h stamp-h[0-9]*
 
 maintainer-clean-generic:
-mostlyclean-am:  mostlyclean-toolexeclibLTLIBRARIES mostlyclean-compile \
-		mostlyclean-libtool mostlyclean-binPROGRAMS \
-		mostlyclean-noinstPROGRAMS mostlyclean-tags \
-		mostlyclean-depend mostlyclean-generic
+mostlyclean-am:  mostlyclean-toolexeclibLIBRARIES mostlyclean-compile \
+		mostlyclean-libtool mostlyclean-toolexeclibLTLIBRARIES \
+		mostlyclean-binPROGRAMS mostlyclean-noinstPROGRAMS \
+		mostlyclean-tags mostlyclean-depend mostlyclean-generic
 
 mostlyclean: mostlyclean-recursive
 
-clean-am:  clean-toolexeclibLTLIBRARIES clean-compile clean-libtool \
-		clean-binPROGRAMS clean-noinstPROGRAMS clean-tags \
-		clean-depend clean-generic mostlyclean-am clean-local
+clean-am:  clean-toolexeclibLIBRARIES clean-compile clean-libtool \
+		clean-toolexeclibLTLIBRARIES clean-binPROGRAMS \
+		clean-noinstPROGRAMS clean-tags clean-depend \
+		clean-generic mostlyclean-am clean-local
 
 clean: clean-recursive
 
-distclean-am:  distclean-toolexeclibLTLIBRARIES distclean-compile \
-		distclean-libtool distclean-binPROGRAMS \
-		distclean-noinstPROGRAMS distclean-tags \
-		distclean-depend distclean-generic clean-am
+distclean-am:  distclean-toolexeclibLIBRARIES distclean-compile \
+		distclean-libtool distclean-toolexeclibLTLIBRARIES \
+		distclean-binPROGRAMS distclean-noinstPROGRAMS \
+		distclean-tags distclean-depend distclean-generic \
+		clean-am
 	-rm -f libtool
 
 distclean: distclean-recursive
 	-rm -f config.status
 
-maintainer-clean-am:  maintainer-clean-toolexeclibLTLIBRARIES \
+maintainer-clean-am:  maintainer-clean-toolexeclibLIBRARIES \
 		maintainer-clean-compile maintainer-clean-libtool \
+		maintainer-clean-toolexeclibLTLIBRARIES \
 		maintainer-clean-binPROGRAMS \
 		maintainer-clean-noinstPROGRAMS maintainer-clean-tags \
 		maintainer-clean-depend maintainer-clean-generic \
@@ -1364,18 +1419,20 @@
 maintainer-clean: maintainer-clean-recursive
 	-rm -f config.status
 
-.PHONY: mostlyclean-toolexeclibLTLIBRARIES \
-distclean-toolexeclibLTLIBRARIES clean-toolexeclibLTLIBRARIES \
-maintainer-clean-toolexeclibLTLIBRARIES \
-uninstall-toolexeclibLTLIBRARIES install-toolexeclibLTLIBRARIES \
+.PHONY: mostlyclean-toolexeclibLIBRARIES distclean-toolexeclibLIBRARIES \
+clean-toolexeclibLIBRARIES maintainer-clean-toolexeclibLIBRARIES \
+uninstall-toolexeclibLIBRARIES install-toolexeclibLIBRARIES \
 mostlyclean-compile distclean-compile clean-compile \
 maintainer-clean-compile mostlyclean-libtool distclean-libtool \
-clean-libtool maintainer-clean-libtool mostlyclean-binPROGRAMS \
-distclean-binPROGRAMS clean-binPROGRAMS maintainer-clean-binPROGRAMS \
-uninstall-binPROGRAMS install-binPROGRAMS mostlyclean-noinstPROGRAMS \
-distclean-noinstPROGRAMS clean-noinstPROGRAMS \
-maintainer-clean-noinstPROGRAMS uninstall-dataDATA install-dataDATA \
-uninstall-toolexeclibDATA install-toolexeclibDATA \
+clean-libtool maintainer-clean-libtool \
+mostlyclean-toolexeclibLTLIBRARIES distclean-toolexeclibLTLIBRARIES \
+clean-toolexeclibLTLIBRARIES maintainer-clean-toolexeclibLTLIBRARIES \
+uninstall-toolexeclibLTLIBRARIES install-toolexeclibLTLIBRARIES \
+mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \
+maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \
+mostlyclean-noinstPROGRAMS distclean-noinstPROGRAMS \
+clean-noinstPROGRAMS maintainer-clean-noinstPROGRAMS uninstall-dataDATA \
+install-dataDATA uninstall-toolexeclibDATA install-toolexeclibDATA \
 install-data-recursive uninstall-data-recursive install-exec-recursive \
 uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \
 all-recursive check-recursive installcheck-recursive info-recursive \
Index: libgcjdata.c
===================================================================
RCS file: libgcjdata.c
diff -N libgcjdata.c
--- /dev/null	Tue May  5 13:32:27 1998
+++ /sourceware/cvs-tmp/cvsKUlR1S	Sun Dec 19 18:20:26 1999
@@ -0,0 +1,12 @@
+/* Copyright (C) 1998, 1999  Cygnus Solutions
+
+   This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
+details.  */
+
+/* Some systems need data_start defined so the GC be built as a shared
+   library.  */
+
+int data_start = 0;

-- 
Anthony Green                                               Cygnus Solutions
                                                       Sunnyvale, California

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]