FWIW, this appears to possibly be a bug in gcc 4.0:
Sorry to follow up to myself again, I missed some #defines elsewhere.
This is NOT a gcc 4.0 bug. Gcc 3.3.3 was playing fast and loose with
assumptions about what you could do incrementing void **'s and gcc-4.0
tightens that up. The code in obstack.h was rewritten in gcc 3.4 and
no longer makes those assumptions.
I suspect that upgrading the target compiler to gcc 3.4 will solve these
problems, but if we're going to do that, we'd be stupid to not just
upgrade to gcc 4.0 and get the pain over with once and for all. I can
put together a patch to fix gcc 3.3.3, but right now, not having a
working leaf build environment isn't ruining my day, so I may just wait
for someone else to suffer.
FWIW, the code in question in obstack.h uses constructs of the type:
*((void **)__o->next_free)++ = ((void *)datum);
which was rewritten in gcc 3.4 to be:
{ struct obstack *__o1 = (OBSTACK);
*(const void **) __o1->next_free = (aptr);
__o1->next_free += sizeof (const void *);
(void) 0; }
These bad pointer arithmetic operations are unfortunately littered
throughout obstack.h in various forms, hence my lack of desire to fix.
I hope these notes help someone.
Paul
-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
------------------------------------------------------------------------
leaf-user mailing list: [email protected]
https://lists.sourceforge.net/lists/listinfo/leaf-user
Support Request -- http://leaf-project.org/