Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] dummy component warnings
From: Paul H. Hargrove (PHHargrove_at_[hidden])
Date: 2011-01-25 17:36:58


I can confirm that the problem appears specific to Apple's compiler.

Since the failure was reported to be configure-time, that took less time
to check up on that I'd expected.
What I find is that gcc-4.0.0 on Linux/x86 *does* fail the
"#_gsym_test_func" test, but for the RIGHT reason, and then goes on to
pass the next test case with the proper form of global symbol. The
relevent portion of config.log appears below.

-Paul

configure:27399: checking prefix for global symbol labels
configure: trying _
configure:27439: gcc -std=gnu99 -O3 -DNDEBUG -finline-functions
-fno-strict-aliasing -c conftest.s >conftest.out 2>&1
configure:27442: $? = 0
configure:27447: gcc -std=gnu99 -O3 -DNDEBUG -finline-functions
-fno-strict-aliasing -I. conftest_c.c -c > conftest.cmpl 2>&1
configure:27450: $? = 0
configure:27455: gcc -std=gnu99 -O3 -DNDEBUG -finline-functions
-fno-strict-aliasing conftest_c.o conftest.o -o conftest > conftest.link
2>&1
configure:27458: $? = 1
conftest_c.o: In function `main':
conftest_c.o(.text+0xd): undefined reference to `gsym_test_func'
collect2: ld returned 1 exit status
configure: failed C program was:
#ifdef __cplusplus
extern "C" {
#endif
void gsym_test_func(void);
#ifdef __cplusplus
}
#endif
int
main()
{
     gsym_test_func();
     return 0;
}
configure: failed ASM program was:

.text
# _gsym_test_func
.globl _gsym_test_func
_gsym_test_func:
# _gsym_test_func

configure: trying
configure:27439: gcc -std=gnu99 -O3 -DNDEBUG -finline-functions
-fno-strict-aliasing -c conftest.s >conftest.out 2>&1
configure:27442: $? = 0
configure:27447: gcc -std=gnu99 -O3 -DNDEBUG -finline-functions
-fno-strict-aliasing -I. conftest_c.c -c > conftest.cmpl 2>&1
configure:27450: $? = 0
configure:27455: gcc -std=gnu99 -O3 -DNDEBUG -finline-functions
-fno-strict-aliasing conftest_c.o conftest.o -o conftest > conftest.link
2>&1
configure:27458: $? = 0
configure:27496: result:

On 1/25/2011 2:19 PM, Paul H. Hargrove wrote:
> I have gcc-4.0.0 on Linux built from unmodified FSF sources.
> I will try to reproduce.
>
> -Paul
>
> On 1/25/2011 1:47 PM, Nathan Hjelm wrote:
>> Looks like a bug in Apple's gcc 4.0. I tried the source with gcc
>> 3.4.6 and gcc 4.1.2 on Linux and did not see that error.
>>
>> I will take a look and see if there is a simple fix to get around
>> this apparent compiler bug.
>>
>> -Nathan
>>
>> On Tue, 25 Jan 2011, Jeff Squyres wrote:
>>
>>> Short version
>>> =============
>>>
>>> MTT turned up a problem with -std=gnu99 on OS X Leopard, which ships
>>> with the gcc 4.0 compiler (OS X Snow Leopard ships with gcc 4.2, and
>>> doesn't have a problem). Does anyone have gcc 4.0 on Linux? I'm
>>> wondering if the same problem would occur.
>>>
>>> More details:
>>> =============
>>>
>>>> From our friends at Absoft:
>>>
>>> -----
>>> The -std=gnu99 is causing the problem when used with gcc-4.0 ( the
>>> default on Leopard with Apple's XCode 3.1 development tools ):
>>>
>>> BigMac:ompi cag$ gcc --version -std=gnu99 -c conftest.s
>>> conftest.s:2:3: error: invalid preprocessing directive #_gsym_test_func
>>> conftest.s:5:3: error: invalid preprocessing directive #_gsym_test_func
>>> BigMac:ompi cag$ gcc-4.0 -std=gnu99 -c conftest.s
>>> conftest.s:2:3: error: invalid preprocessing directive #_gsym_test_func
>>> conftest.s:5:3: error: invalid preprocessing directive #_gsym_test_func
>>> BigMac:ompi cag$ gcc-4.2 -std=gnu99 -c conftest.s
>>> BigMac:ompi cag$
>>>
>>> On Snow Leopard with Apple's XCode 3.2 development tools, the
>>> default compiler is 4.2.
>>> -----
>>>
>>> The compile line he's talking about in particular is from a
>>> configure test in opal/config/opal_config_asm.m4, where we're
>>> looking for assembly global symbols. The source that we're trying
>>> to compile is:
>>>
>>> -----
>>> .text
>>> # _gsym_test_func
>>> .globl _gsym_test_func
>>> _gsym_test_func:
>>> # _gsym_test_func
>>> -----
>>>
>>> (configure tries a few prefixes)
>>>
>>> But the "#" token with the -std=gnu99 option is causing failures
>>> where it shouldn't (i.e., it causes configure to abort because all
>>> the assembly tests looking for the global symbols error out due to
>>> the # token.
>>>
>>> So I think we either need to find a workaround for this assembly
>>> test or whack the idea of the C99 stuff. :-(
>>>
>>>
>>>
>>> On Jan 24, 2011, at 10:29 AM, Nathan Hjelm wrote:
>>>
>>>> No, they didn't get added (adding them now). I didn't get a chance
>>>> to add them over the weekend.
>>>>
>>>> -Nathan
>>>>
>>>> On Mon, 24 Jan 2011, Jeff Squyres wrote:
>>>>
>>>>> I'm getting these:
>>>>>
>>>>> CC dummy_component.lo
>>>>> dummy_component.c:25: warning: ISO C90 forbids specifying
>>>>> subobject to initialize
>>>>> dummy_component.c:28: warning: ISO C90 forbids specifying
>>>>> subobject to initialize
>>>>> dummy_component.c:29: warning: ISO C90 forbids specifying
>>>>> subobject to initialize
>>>>> dummy_component.c:30: warning: ISO C90 forbids specifying
>>>>> subobject to initialize
>>>>> dummy_component.c:31: warning: ISO C90 forbids specifying
>>>>> subobject to initialize
>>>>> dummy_component.c:33: warning: ISO C90 forbids specifying
>>>>> subobject to initialize
>>>>> dummy_component.c:34: warning: ISO C90 forbids specifying
>>>>> subobject to initialize
>>>>> dummy_component.c:35: warning: ISO C90 forbids specifying
>>>>> subobject to initialize
>>>>> dummy_component.c:37: warning: ISO C90 forbids specifying
>>>>> subobject to initialize
>>>>> dummy_component.c:39: warning: ISO C90 forbids specifying
>>>>> subobject to initialize
>>>>> dummy_component.c: In function 'component_open':
>>>>> dummy_component.c:45: warning: unused variable 'c'
>>>>> dummy.c:67: warning: ISO C90 forbids specifying subobject to
>>>>> initialize
>>>>> dummy.c:68: warning: ISO C90 forbids specifying subobject to
>>>>> initialize
>>>>> dummy.c:69: warning: ISO C90 forbids specifying subobject to
>>>>> initialize
>>>>> dummy.c:70: warning: ISO C90 forbids specifying subobject to
>>>>> initialize
>>>>> CCLD mca_debugger_dummy.la
>>>>>
>>>>> Did the autoconf tests not get added?
>>>>>
>>>>> --
>>>>> Jeff Squyres
>>>>> jsquyres_at_[hidden]
>>>>> For corporate legal information go to:
>>>>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> devel mailing list
>>>>> devel_at_[hidden]
>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>> _______________________________________________
>>>> devel mailing list
>>>> devel_at_[hidden]
>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>
>>>
>>> --
>>> Jeff Squyres
>>> jsquyres_at_[hidden]
>>> For corporate legal information go to:
>>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>>
>>>
>>> _______________________________________________
>>> devel mailing list
>>> devel_at_[hidden]
>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>
>>
>> _______________________________________________
>> devel mailing list
>> devel_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>
> --
> Paul H. HargrovePHHargrove_at_[hidden]
> Future Technologies Group
> HPC Research Department Tel: +1-510-495-2352
> Lawrence Berkeley National Laboratory Fax: +1-510-486-6900
>
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/devel

-- 
Paul H. Hargrove                          PHHargrove_at_[hidden]
Future Technologies Group
HPC Research Department                   Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900