Subject: pkgsrc gcc3 vs. sparc64?
To: None <port-sparc64@netbsd.org, tech-toolchain@netbsd.org,>
From: Rafal Boni <rafal@attbi.com>
List: tech-pkg
Date: 06/30/2003 18:30:47
Folks:
 	In hopes that I'd get past the line of ICEs building C++ stuff 
	with gcc 2.95.3 on sparc64, I installed the gcc3.3 package, but
	it appears to have other problems... 

	The problem is that libgcc_s (/usr/pkg/gcc-3.3/lib/libgcc_s.so.1)
	appears to be not-fully-PIC ... it still contains relocs that 
	AFAIK shouldn't exist in a PIC/dynamic object.  

	Even the simple program below dies when built with gcc3's c++:

#include <iostream>
using namespace std;

main()
{
    cout << "Hello, whirled!\n";
}

	The error it gets is:
/usr/pkg/gcc-3.3/lib/libgcc_s.so.1: Undefined symbol "" (symnum = 11)

	An objdump -R on the library reveals the following relocs which
	I believe should have either never been created (due to PIC-ness)
	or resolved much earlier in the process... I've trimmed the list
	of offensive-looking relocs, since there were quite a few of them:

	Examination of LD_DEBUG=1 traces from ld.so agrees with the above
	assesment -- the runtime linker dies trying to resolve a type 34
	reloc with no name.

/usr/pkg/gcc-3.3/lib/libgcc_s.so:     file format elf64-sparc

DYNAMIC RELOCATION RECORDS
OFFSET           TYPE              VALUE
[...]
00000000000055b4 R_SPARC_HH22      .rodata
00000000000055c8 R_SPARC_HH22      .rodata
00000000000055cc R_SPARC_LM22      .rodata
00000000000055d0 R_SPARC_HM10      .rodata
00000000000055e8 R_SPARC_LO10      .rodata
00000000000056d4 R_SPARC_HH22      .rodata+0x0000000000000100
00000000000056d8 R_SPARC_LM22      .rodata+0x0000000000000100
00000000000056dc R_SPARC_HM10      .rodata+0x0000000000000100
[..]

	Are other people using the gcc3 package succesfully on sparc64?
	Is this some sort of bootstrap issue?  Is my machine just being
	mean and producing bogus libraries to spite me? ;-)

	This is with gcc3-3.3nb1, on NetBSD/sparc64-1.6T with userland
	and kernel from the beginning of June (kernel from June 1st,
	userland from June 2nd) but IIRC both built from the same set
	of sources.  The gcc3 package did *not* install the binutils
	from pkgsrc, so I'm using the system binutils, which is version
	2.13.2.1.

Thanks!
--rafal

----
Rafal Boni                                                     rafal@attbi.com
  We are all worms.  But I do believe I am a glowworm.  -- Winston Churchill