This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] use -fno-pie on darwin in boehm-gc.exp
On Thu, Dec 08, 2011 at 05:05:12PM +0000, Iain Sandoe wrote:
>
> 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?
Where do you see ld complaining of non-PIC code?
Running target unix
Using /sw/share/dejagnu/baseboards/unix.exp as board description file for target.
Using /sw/share/dejagnu/config/unix.exp as generic interface file for target.
Using /sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20111207/boehm-gc/testsuite/config/default.exp as tool-and-target-specific interface file.
Running /sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20111207/boehm-gc/testsuite/boehm-gc.c/c.exp ...
set_ld_library_path_env_vars: ld_library_path=.:/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc:/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.2.0/./boehm-gc/.libs:.libs
Executing on host: ../libtool --silent --tag=CC --mode=link /sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/xgcc -B/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/ /sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20111207/boehm-gc/testsuite/boehm-gc.c/gctest.c /sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.2.0/./boehm-gc/libgcjgc.la -O2 -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 -Wc,-shared-libgcc -lpthread -lm -o ./gctest (timeout = 300)
PASS: boehm-gc.c/gctest.c -O2 (test for excess errors)
Setting LD_LIBRARY_PATH to .:/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc:/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.2.0/./boehm-gc/.libs:.libs:.:/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc:/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.2.0/./boehm-gc/.libs:.libs
FAIL: boehm-gc.c/gctest.c -O2 execution test
which shows no warnings...
../libtool --silent --tag=CC --mode=link /sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/xgcc -B/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/ /sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20111207/boehm-gc/testsuite/boehm-gc.c/gctest.c /sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.2.0/./boehm-gc/libgcjgc.la -O2 -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 -Wc,-shared-libgcc -lpthread -lm -v -o ./gctest
Reading specs from /sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/specs
COLLECT_GCC=/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/xgcc
COLLECT_LTO_WRAPPER=/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/lto-wrapper
Target: x86_64-apple-darwin11.2.0
Configured with: ../gcc-4.7-20111207/configure --prefix=/sw --prefix=/sw/lib/gcc4.7 --mandir=/sw/share/man --infodir=/sw/lib/gcc4.7/info --with-build-config=bootstrap-lto --enable-stage1-languages=c,lto --enable-languages=c,c++,fortran,lto,objc,obj-c++,java --with-gmp=/sw --with-libiconv-prefix=/sw --with-ppl=/sw --with-cloog=/sw --with-mpc=/sw --with-system-zlib --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib --program-suffix=-fsf-4.7 --enable-checking=yes --enable-cloog-backend=isl
Thread model: posix
gcc version 4.7.0 20111207 (experimental) (GCC)
COLLECT_GCC_OPTIONS='-mmacosx-version-min=10.7.2' '-B' '/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/' '-O2' '-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' '-shared-libgcc' '-v' '-o' './.libs/gctest' '-mtune=core2'
/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//ccJtQ5Pa.s
GNU C (GCC) version 4.7.0 20111207 (experimental) (x86_64-apple-darwin11.2.0)
compiled by GNU C version 4.7.0 20111207 (experimental), GMP version 5.0.2, MPFR version 3.1.0, MPC version 0.9
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
ignoring nonexistent directory "/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/../lib/gcc/x86_64-apple-darwin11.2.0/4.7.0/include"
ignoring nonexistent directory "/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/../lib/gcc/x86_64-apple-darwin11.2.0/4.7.0/include-fixed"
ignoring nonexistent directory "/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/../lib/gcc/x86_64-apple-darwin11.2.0/4.7.0/../../../../x86_64-apple-darwin11.2.0/include"
ignoring nonexistent directory "/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/../lib/gcc/../../lib/gcc/x86_64-apple-darwin11.2.0/4.7.0/include"
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/../lib/gcc/../../include"
ignoring nonexistent directory "/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/../lib/gcc/../../lib/gcc/x86_64-apple-darwin11.2.0/4.7.0/include-fixed"
ignoring nonexistent directory "/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/../lib/gcc/../../lib/gcc/x86_64-apple-darwin11.2.0/4.7.0/../../../../x86_64-apple-darwin11.2.0/include"
#include "..." search starts here:
#include <...> search starts here:
/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/x86_64-apple-darwin11.2.0/./boehm-gc/include
/sw/src/fink.build/gcc47-4.7.0-1/gcc-4.7-20111207/boehm-gc/testsuite/../include
/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/include
/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/include-fixed
/usr/include
/System/Library/Frameworks
/Library/Frameworks
End of search list.
GNU C (GCC) version 4.7.0 20111207 (experimental) (x86_64-apple-darwin11.2.0)
compiled by GNU C version 4.7.0 20111207 (experimental), GMP version 5.0.2, MPFR version 3.1.0, MPC version 0.9
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: d717e692788ee15b8ed2ea38e31fce4d
COLLECT_GCC_OPTIONS='-mmacosx-version-min=10.7.2' '-B' '/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/' '-O2' '-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' '-shared-libgcc' '-v' '-o' './.libs/gctest' '-mtune=core2'
/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/as -arch x86_64 -force_cpusubtype_ALL -o /var/tmp//cc2YMxyw.o /var/tmp//ccJtQ5Pa.s
COMPILER_PATH=/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/
LIBRARY_PATH=/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/:/usr/lib/
COLLECT_GCC_OPTIONS='-mmacosx-version-min=10.7.2' '-B' '/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/' '-O2' '-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' '-shared-libgcc' '-v' '-o' './.libs/gctest' '-mtune=core2'
/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc/collect2 -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//cc2YMxyw.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
collect2 version 4.7.0 20111207 (experimental)
/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//cc2YMxyw.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
@(#)PROGRAM:ld PROJECT:ld64-127.2
Library search paths:
/sw/src/fink.build/gcc47-4.7.0-1/darwin_objdir/gcc
/usr/lib
/usr/local/lib
Framework search paths:
/Library/Frameworks/
/System/Library/Frameworks/
Unless you suspect that the fact that PIC code is being bundled into a convenience archive which
is then linked into libgcjgc is causing the problems?
Jack
>
> 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 <howarth@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>