On Nov 30, 2007, at 7:51 AM, Pete Wyckoff wrote:
[EMAIL PROTECTED] wrote on Thu, 29 Nov 2007 16:51 -0800:
It looks like you added the #include <malloc.h> to pvfs2-types.h to
get the
offsetof macro. That gets defined in stddef.h, and in fact, we
define it
later in the header if its not defined at that point. What's the
workaround
on Cray that requires the offsetof from malloc.h?
I tried taking it out just now to remind myself. Most (but not all)
of the compiled files end up with an error similar to this:
CC src/client/sysint/client-state-machine.o
In file included from /opt/xt-libc/2.0.24a/amd64/include/malloc.h:46,
from ../pvfs2/src/common/llist/llist.h:14,
from ../pvfs2/src/common/misc/server-config.h:11,
from ../pvfs2/src/common/misc/pint-cached-config.h:15,
from ../pvfs2/src/client/sysint/pint-sysint-utils.h:
25,
from ../pvfs2/src/client/sysint/client-state-
machine.c:14:
/opt/gcc/4.1.2/cnos/lib/gcc-lib/x86_64-suse-linux/4.1.2//include/
stddef.h:414:1: warning: "offsetof" redefined
In file included from ../pvfs2/include/pvfs2-sysint.h:23,
from ../pvfs2/src/client/sysint/client-state-
machine.c:13:
../pvfs2/include/pvfs2-types.h:37:1: warning: this is the location
of the previous definition
That stddef.h file is in the normal gcc install. It has the
offsetof() definition at the end of the file. llist.h picks it
up due to needing malloc.h.
Our pvfs2-types.h definition of offsetof comes first, then later the
system stddef.h tries to provide one and spits an error. I just
tried to system include to the top.
If I change the line I added to #include <stddef.h>, things work
just fine. Maybe this is the more correct fix?
Not sure what your complaint about including malloc.h is, but we
probably should change that to stddef.h anyway. Feel free to check
this in yourself, or tell me what should be going on with these
headers.
No complaint, its just that malloc and offsetof are defined in
stddef.h on most linuxes today. I guess your point is that we don't
handle the case where malloc.h is still used. As I understand it the
problem you're seeing is that we #include <stddef.h> in some source
files ahead of pvfs2-types.h.
I would get rid of the specific malloc.h in pvfs2-types.h, and then
maybe remove the stddef.h includes in our sources as well, so that
only the pvfs2-types.h includes it.
We could also move the #ifndef offsetof to the places where its used
(quicklist.h) as well, to avoid the error you're seeing on Cray.
-sam
-- Pete
_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers