Several testsuite failures have arisen on solaris2.10 when using -fpic (not -fPIC). The problem has gotten worse over time and I don't believe the testcases are changing, so GCC has gotten worse for some reason. The logfiles look like this:
ld: fatal: too many symbols require `small' PIC references: have 2144, maximum 2048 -- recompile some modules -K PIC. collect2: ld returned 1 exit status compiler exited with status 1 There are several failures on 4.1 and all later branches of this form. Here are the 4.1 failures on sparc32 that receive this message: FAIL: tmpdir-gcc.dg-struct-layout-1/t002 c_compat_x_tst.o-c_compat_y_tst.o link FAIL: tmpdir-g++.dg-struct-layout-1/t002 cp_compat_x_tst.o-cp_compat_y_tst.o link FAIL: gfortran.dg/cray_pointers_2.f90 -O0 (test for excess errors) on sparc64, in addition to the above errors I also get these: FAIL: tmpdir-gcc.dg-struct-layout-1/t001 c_compat_x_tst.o-c_compat_y_tst.o link FAIL: tmpdir-gcc.dg-struct-layout-1/t003 c_compat_x_tst.o-c_compat_y_tst.o link FAIL: tmpdir-gcc.dg-struct-layout-1/t024 c_compat_x_tst.o-c_compat_y_tst.o link FAIL: tmpdir-gcc.dg-struct-layout-1/t025 c_compat_x_tst.o-c_compat_y_tst.o link FAIL: tmpdir-gcc.dg-struct-layout-1/t026 c_compat_x_tst.o-c_compat_y_tst.o link FAIL: tmpdir-gcc.dg-struct-layout-1/t027 c_compat_x_tst.o-c_compat_y_tst.o link FAIL: tmpdir-gcc.dg-struct-layout-1/t028 c_compat_x_tst.o-c_compat_y_tst.o link FAIL: tmpdir-g++.dg-struct-layout-1/t001 cp_compat_x_tst.o-cp_compat_y_tst.o link FAIL: tmpdir-g++.dg-struct-layout-1/t003 cp_compat_x_tst.o-cp_compat_y_tst.o link FAIL: tmpdir-g++.dg-struct-layout-1/t024 cp_compat_x_tst.o-cp_compat_y_tst.o link FAIL: tmpdir-g++.dg-struct-layout-1/t025 cp_compat_x_tst.o-cp_compat_y_tst.o link FAIL: tmpdir-g++.dg-struct-layout-1/t026 cp_compat_x_tst.o-cp_compat_y_tst.o link FAIL: tmpdir-g++.dg-struct-layout-1/t027 cp_compat_x_tst.o-cp_compat_y_tst.o link FAIL: gfortran.dg/cray_pointers_2.f90 -O1 (test for excess errors) FAIL: gfortran.dg/cray_pointers_2.f90 -Os (test for excess errors) Since it happens across multiple languages, I'm guessing it's something in the middle or backend. -- Summary: [4.1 regression] ld: fatal: too many symbols require `small' PIC references Product: gcc Version: 4.1.2 Status: UNCONFIRMED Keywords: link-failure Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ghazi at gcc dot gnu dot org GCC target triplet: sparc-sun-solaris2.10 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30774