Hi Ralph,

Nope that doesn't fix the problem I'm hitting.   I tried to build the opmi trunk
on a system with a much older gcc compiler (4.4.7) and it compiled :)!  But
I'd like to be able to compile opmi with a newer gcc like the one on my opensuse
13.1 box.

The preprocessor is pulling in the system malloc.h and that's where things blow 
up:

  CC       base/mpool_base_frame.lo
In file included from ../../../opal/include/opal_config.h:2750:0,
                 from base/mpool_base_frame.c:21:
../../../opal/include/opal_config_bottom.h:381:38: error: expected declaration 
specifiers or '...' before '(' token
#    define malloc(size) opal_malloc((size), __FILE__, __LINE__)
                                      ^
In file included from base/mpool_base_frame.c:28:0:
/usr/include/malloc.h:38:1: error: expected declaration specifiers or '...' 
before string constant
extern void *malloc (size_t __size) __THROW __attribute_malloc__ __wur;
^
/usr/include/malloc.h:38:1: error: expected declaration specifiers or '...' 
before numeric constant
In file included from ../../../opal/include/opal_config.h:2750:0,
                 from base/mpool_base_frame.c:21:
../../../opal/include/opal_config_bottom.h:385:48: error: expected declaration 
specifiers or '...' before '(' token
#    define calloc(nmembers, size) opal_calloc((nmembers), (size), __FILE__, 
__LINE__)
                                                ^
../../../opal/include/opal_config_bottom.h:385:60: error: expected declaration 
specifiers or '...' before '(' token
#    define calloc(nmembers, size) opal_calloc((nmembers), (size), __FILE__, 
__LINE__)
                                                            ^
In file included from base/mpool_base_frame.c:28:0:
/usr/include/malloc.h:41:1: error: expected declaration specifiers or '...' 
before string constant
extern void *calloc (size_t __nmemb, size_t __size)
^
/usr/include/malloc.h:41:1: error: expected declaration specifiers or '...' 
before numeric constant
In file included from ../../../opal/include/opal_config.h:2750:0,
                 from base/mpool_base_frame.c:21:
../../../opal/include/opal_config_bottom.h:389:45: error: expected declaration 
specifiers or '...' before '(' token
#    define realloc(ptr, size) opal_realloc((ptr), (size), __FILE__, __LINE__)
                                             ^
../../../opal/include/opal_config_bottom.h:389:52: error: expected declaration 
specifiers or '...' before '(' token
#    define realloc(ptr, size) opal_realloc((ptr), (size), __FILE__, __LINE__)
                                                    ^
In file included from base/mpool_base_frame.c:28:0:
/usr/include/malloc.h:49:1: error: expected declaration specifiers or '...' 
before string constant
extern void *realloc (void *__ptr, size_t __size)
^
/usr/include/malloc.h:49:1: error: expected declaration specifiers or '...' 
before numeric constant
In file included from ../../../opal/include/opal_config.h:2750:0,
                 from base/mpool_base_frame.c:21:
../../../opal/include/opal_config_bottom.h:393:33: error: expected declaration 
specifiers or '...' before '(' token
#    define free(ptr) opal_free((ptr), __FILE__, __LINE__)
                                 ^
In file included from base/mpool_base_frame.c:28:0:
/usr/include/malloc.h:53:1: error: expected declaration specifiers or '...' 
before string constant
extern void free (void *__ptr) __THROW;
^
/usr/include/malloc.h:53:1: error: expected declaration specifiers or '...' 
before numeric constant



From: devel [mailto:devel-boun...@open-mpi.org] On Behalf Of Ralph Castain
Sent: Monday, August 04, 2014 10:09 AM
To: Open MPI Developers
Subject: Re: [OMPI devel] opal_config_bottom.h question again

I believe the issue is actually in opal/util/malloc.h, Howard. I noticed this 
while looking around this weekend - someone included opal_config.h in the 
malloc.h file even though it explicitly says "DON'T DO THIS"  in that header 
file.

#ifndef OPAL_MALLOC_H
#define OPAL_MALLOC_H

#include "opal_config.h"
#include <stdlib.h>

/*
 * THIS FILE CANNOT INCLUDE ANY OTHER OPAL HEADER FILES!!!
 *
 * It is included via <opal_config_bottom.h>.  Hence, it should not
 * include ANY other files, nor should it include "opal_config.h".
 *
 */

Don't know why someone did that, but you might see if it fixes your problem


On Aug 4, 2014, at 9:00 AM, Pritchard Jr., Howard 
<howa...@lanl.gov<mailto:howa...@lanl.gov>> wrote:


Hi Folks,

As I said last week, I'm noticing now that on my opensuse 13.1 system and gcc 
4.8.1, when I do a fresh
checkout of trunk ompi and try to build, without any configure options,

mca_base_mpool_frame.c

does not compile.

The reason is there is a conflict in opal_config_bottom.h and the contents of 
malloc.h,
which for my system is pulled in by the preprocessor.

If I undefine HAVE_MALLOC_H in this file, the code compiles fine.  
Alternatively,
one can also move the malloc.h include prior to the opal_config.h include and 
things
work.  Alternatively, one can add the OPAL_DISABLE_ENABLE_MEM_DEBUG define
as in mpool_base_lookup.c , and the compile problem similarly goes away.

I'd like to check in a fix for this.  I'd prefer to just move the std include 
files ahead
of the opal_config.h include.  I'd like to do this today unless someone objects.

I'm somewhat surprised I'm the only one seeing this though.

Howard


-------------------------------------------------
Howard Pritchard
HPC-5
Los Alamos National Laboratory


_______________________________________________
devel mailing list
de...@open-mpi.org<mailto:de...@open-mpi.org>
Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
Link to this post: 
http://www.open-mpi.org/community/lists/devel/2014/08/15495.php

Reply via email to