This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

building gcc 4.0.0 on Solaris


I'm attempting to build gcc 4.0.0 on Solaris. I have been unable to build gcc or at least some of its components since the release of gcc 3.4.

Here are a few details on my system:
 - Solaris 8 7/01
 - Sun's as/ld
   as: Sun WorkShop 6 99/08/18
   ld: Software Generation Utilities - Solaris Link Editors: 5.8-1.286
 - GNU binutils 2.15

I've tried two approaches.

1) Using Sun's as/ld. I build gcc this way: cd /tmp gtar xjf ~/gcc-4.0.0.tar.bz2 mkdir gcc cd gcc setenv CONFIG_SHELL /bin/ksh /tmp/gcc-4.0.0/configure \ --prefix=/usr/local/gcc-4.0.0 gmake bootstrap

The build fails with the following message:
ld: fatal: relocation error: R_SPARC_DISP32:
file .libs/libstdc++.lax/libsupc++convenience.a/vterminate.o:
symbol <unknown>: offset 0xfccd33ad is non-aligned

I've searched Google for this error and came across similar error messages without finding a solution:

Any clues?

2) Using GNU binutils. I build gcc this way:
   	cd /tmp
   	gtar xjf ~/gcc-4.0.0.tar.bz2
   	mkdir gcc
   	cd gcc
   	setenv CONFIG_SHELL /bin/ksh
   	/tmp/gcc-4.0.0/configure \
   		--prefix=/usr/local/gcc-4.0.0 \
   		--with-as=/usr/local/binutils/bin/as \
   	gmake bootstrap

The build fails while compiling the Java libraries with gcj. No error message appears because the oputput of gcj is discarded by the build system. Running the last command line manually, I get the following error message:
/tmp/GCC/gcc/gcj [...] -o java/lang/StrictMath.o
/tmp/ccMGENqa.s: Assembler messages:
/tmp/ccMGENqa.s:10374: Error: Illegal operands:
There are only 32 single precision f registers; [0-31]

I've found out this is a known issue with the current GNU binutils package. See for example:
As far as I can understand, it's not possible to build gcc 4.0.0 and gcc 3.4.* using GNU binutils with current release 2.15 of GNU binutils. One has to use the CVS sources or at least one file.

Would it be possible to document this requirement in the platform pages?

Speaking of the sparc-sun-solaris2* platform, I read:
	GCC 3.4 changed the default debugging format from STABS
	to DWARF-2 for 32-bit code on Solaris 7 and later. If you
	are using the Sun assembler, this change apparently runs
	afoul of Sun bug 4910101, for which (as of 2004-05-23)
	there is no fix. A symptom of the problem is that you
	cannot compile C++ programs like groff 1.19.1 without
	getting messages similar to the following:
	ld: warning: relocation error: R_SPARC_UA32: ...
	  external symbolic relocation against non-allocatable
	  .debug_info cannot be processed at runtime:
	  relocation ignored.
	To work around this problem, compile with -gstabs+
	instead of plain -g

I had a look at Sun Online Support and found:
	Bug ID: 4910101
	Synopsis: fbe needs a way to reference section labels
	Category: compiler
	Subcategory: assembler-x86
	The bug was first found with the -misalign flag, but the
	real bug is because the code is being passed through the
	Integrated in releases: k2_dev
	Summary: fbe needs a way to reference section labels

Therefore :
1) This seems to be x86-specific, so I would suggest moving this paragraph from sparc-sun-solaris2* to i?86-*-solaris2*
2) It looks like there is a fix, however I don't know what k2_dev is, maybe this is an internal development version and the fix has not been relesed yet.

Dimitri Papadopoulos

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