On 8 Dec 2011, at 16:58, Jack Howarth wrote:
On Thu, Dec 08, 2011 at 03:54:35PM +0000, Iain Sandoe wrote:
On 8 Dec 2011, at 15:38, Jack Howarth wrote:
Currently the boehm-gc testsuite fails...
FAIL: boehm-gc.c/gctest.c -O2 execution test
FAIL: boehm-gc.c/leak_test.c -O2 execution test
FAIL: boehm-gc.c/thread_leak_test.c -O2 execution test
FAIL: boehm-gc.lib/staticrootstest.c -O2 execution test
you have not answered these questions:
a) "what is anything being built in these tests which is not PIC"?
b) and why is it being built that way?
ISTM the fix below should not be required
- and the problem lies in something being built with -mdynamic-no-
pic or
similar
Nothing in boehm-gc is built non-PIC (see the attached log for boehm-
gc).
Likewise nothing in the testsuite is built non-PIC. For example,
gctest.c
at -O2 is built, according to -v, as...
/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/cc1 -quiet -v -I /
sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-
darwin11.2.0/./boehm-gc/include -I /sw/src/fink.build/gcc47-4.7.0-1/
gcc-4.7-20111207/boehm-gc/testsuite/../include -iprefix /sw/src/
fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/../lib/gcc/x86_64-apple-
darwin11.2.0/4.7.0/ -isystem /sw/src/fink.build/gcc47-4.7.0-1/
darwin_objdir/gcc/include -isystem /sw/src/fink.build/gcc47-4.7.0-1/
darwin_objdir/gcc/include-fixed -D__DYNAMIC__ /sw/src/fink.build/
gcc47-4.7.0-1/gcc-4.7-20111207/boehm-gc/testsuite/boehm-gc.c/
gctest.c -fPIC -quiet -dumpbase gctest.c -mmacosx-version-min=10.7.2
-mtune=core2 -auxbase gctest -O2 -version -o /var/tmp//ccgHCNRC.s
The test is also just linked to the the libgcjgcj built in boehm-gc...
/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/collect-ld -
dynamic -arch x86_64 -macosx_version_min 10.7.2 -
weak_reference_mismatches non-weak -o ./.libs/gctest -lcrt1.10.6.o -
L/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc /var/tmp//
ccb3OaQl.o /sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-
apple-darwin11.2.0/./boehm-gc/.libs/libgcjgc.dylib -
no_compact_unwind -lSystem -lgcc_ext.10.5 -lgcc -lSystem -v
so the build in boehm-gc appears to be self-contained.
OK- so it appears ...
... so why is ld complaining that there's non-PIC code present?
if it's a tool bug, then we should XFAIL the tests ...
cheers
Iain
- that is what we should fix.
cheers
Iain
on x86_64-apple-darwin11 due to the -pie linker default. The
attached
patch
uses -fno-pie on darwin to insure that -no_pie is passed to the
linker
when
targeting darwin11 or later. This approach is used because istarget
doesn't
support complex regex to allow -Wl,-no_pie to be passed for darwin11
and later
only (since only recent Xcode releases understand the -no_pie linker
option).
Also, -fno_pie has the advantage of supporting -mmacosx-version-min
usage.
Regression tested on x86_64-apple-darwin11...
http://gcc.gnu.org/ml/gcc-testresults/2011-12/msg00856.html
Okay for gcc trunk?
Jack
boehm-gc/
2011-12-08 Jack Howarth <howa...@bromo.med.uc.edu>
* testsuite/lib/boehm-gc.exp: Use -fno-pie on darwin.
Index: boehm-gc/testsuite/lib/boehm-gc.exp
===================================================================
--- boehm-gc/testsuite/lib/boehm-gc.exp (revision 182117)
+++ boehm-gc/testsuite/lib/boehm-gc.exp (working copy)
@@ -214,6 +214,11 @@ proc boehm-gc_target_compile { source de
lappend options "additional_flags=-I${gc_include} -I${srcdir}/../
include"
lappend options "additional_flags=${threadcflags}"
+ # Disable -pie linker default for darwin11 and later using -
fno-
pie.
+ if { [istarget *-*-darwin*] } {
+ lappend options "additional_flags=-fno-pie"
+ }
+
lappend options "libs=-Wc,-shared-libgcc"
if { [file extension $dest] == ".la" } {
<boehm-gc.log.bz2>