On Wed, Dec 10, 2008 at 11:24:28PM +0000, IainS wrote:
> Thanks Geoff,
> that's v. useful doc.
>
> On 10 Dec 2008, at 22:36, Geoff Keating wrote:
>
>>
>> On Dec 10, 2008, at 7:32 AM, Jack Howarth wrote:
>>
>>> On Wed, Dec 10, 2008 at 02:55:11PM +0000, IainS wrote:
>
> <snip>
>
>> To use the 'unversioned set' implies that you're compiling for a  
>> version of Mac OS that Apple has not yet created and most likely will 
>> never exist.  This is not useful.
>>
>> One way to get extra runtime support is put routines in libgcc.a which 
>> can be statically linked into executables if they aren't present in the 
>> system.
>
>
> if one did -lgcc_s.10.x -lgcc_s.1   would that break it?
> ... should it not pick up only the unresolved symbols from s.1
>
> ( you would also have to be  prepared to install libgcc_s.1 in a  
> suitable place).
>
>>
>> The routines in libgcc_eh.a are routines which should normally never be 
>> statically linked into executables, because they won't work if you do 
>> that; they must be in the system.  If you need a routine that's in 
>> libgcc_eh.a, and it's not in the system, you're out of luck; you can't 
>> use it.  You'd need to rewrite it so it can handle being linked into 
>> multiple executables, or you'd need to create a new shared library, put 
>> the routine in it, and ship that shared library with every executable 
>> you create.
>
> OK, we've got quite a bit of work to do then, all the runtime libs  
> (gfortran, stdc++v3, gomp, ffi, java)  link on libgcc_s.1.dylib
>
> and, if we want to be able to use gomp, then I we need to find a way to 
> provide emutls.
>
> This, obviously, should not be by linking with gcc_eh (since people  
> would want the current system-provided exception mechanism to continue to 
> work, I imagine).
>
> thanks, for the explanations - it's been an educational day!
>
> Iain

Iain,
   I think the problem is that we are forcing --shared-libgcc on those
testcases that are coming up as UNSUPPORTED. If I recall correctly the
--shared-libgcc was added to resolve problems where the libgomp testsuite
harness wasn't linking with the g++...

http://gcc.gnu.org/ml/gcc/2007-03/msg00479.html
http://gcc.gnu.org/ml/gcc/2007-03/msg00485.html
http://gcc.gnu.org/ml/gcc/2007-03/msg00495.html
http://gcc.gnu.org/ml/gcc/2007-03/msg00532.html

The correct fix for gcc 4.5 would be to backout the use of -shared-libgcc
from the libgomp testsuite on darwin and fix the test harness to use
g++ when appropriate.
                  Jack
ps I would also note that you shouldn't need...

--enable-version-specific-runtime-libs -- enable-__cxa_atexit --enable-threads 
-- disable-nls

I only use...

configure flags: --prefix=/sw --prefix=/sw/lib/gcc4.4 --mandir=/sw/share/man 
--infodir=/sw/share/info --enable-languages=c,c++,fortran,objc,java 
--with-gmp=/sw --with-libiconv-prefix=/sw --with-ppl=/sw --with-cloog=/sw 
--with-system-zlib --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib 
--with-arch=nocona --with-tune=generic --build=i686-apple-darwin9 
--host=i686-apple-darwin9 --target=i686-apple-darwin9

and this links in the emutls symbols fine via -static-libgcc. Look at PR35677. 
The libgomp.fortran/crayptr2.f90
on darwin shows...

nm crayptr2.exe | grep emut
00001cd0 t ___emutls_get_address
00001c90 t ___emutls_register_common
00002014 d ___emutls_v.ip.1499
00001f10 t _emutls_destroy
00001ed0 t _emutls_init
00002090 b _emutls_key
00002040 d _emutls_mutex
00002094 b _emutls_size

but is linked with -static-libgcc.

Reply via email to