This is the mail archive of the gcc-patches@gcc.gnu.org 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]

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>


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