Mass rebuild status with gcc-4.3.0-0.4 of rawhide-20071220
Braden McDaniel
braden at endoframe.com
Fri Jan 4 06:58:46 UTC 2008
On Thu, 2008-01-03 at 16:01 +0100, Hans de Goede wrote:
> Jakub,
>
> Any chance you could explain this one to me:
> http://sunsite.mff.cuni.cz/rawhide20071220-gcc43/fails-even-with-41/machineball-1.0-4.fc8.log
>
> In file included from /usr/include/allegrogl/gl_ext.h:27,
> from /usr/include/alleggl.h:68,
> from menu.cpp:12:
> /usr/include/allegrogl/GLext/gl_ext_api.h:1827: error: '<anonymous>' has
> incomplete type
> /usr/include/allegrogl/GLext/gl_ext_api.h:1827: error: invalid use of 'GLvoid'
>
> I just tried to build the rawhide machineball sources on F-8 and there they
> work fine. The offending line in /usr/include/allegrogl/GLext/gl_ext_api.h is:
> AGL_API(void, EndTransformFeedbackNV, (GLvoid))
>
> Which basically translates to:
> void EndTransformFeedbackNV(GLvoid);
>
> And GLvoid is defined in:
> /usr/include/GL/gl.h, which gets included by /usr/include/alleggl.h before
> including /usr/include/allegrogl/gl_ext.h.
>
> GLvoid is defined as:
> typedef void GLvoid;
>
> The only reason I can see for this not working is that:
> /usr/include/alleggl.h
>
> Does not declare the prototypes in it and its included files as
> extern "C" {
>
> Could that explain this?
I don't think so.
openvrml has the same failure; and in this case the code is in an
'extern "C"' block.
I've recently had a user report this same problem with gcc 4.2.
> Strange though that this breaks between gcc-4.1.2-33, and
> gcc-4.1.2-36
I think you misunderstood. This problem occurs in gcc 4.3.0-0.4; not in
4.1.2-36.
I'd like to know more about this, too. Currently I'm not convinced it
isn't a gcc bug.
Can someone with gcc 4.3 installed try compiling a few brief C++
programs with g++?
For starters:
typedef void void_t;
int f(void_t) { return 0; }
int main() { f(); }
If that works, try this one:
extern "C" {
typedef void void_t;
int f(void_t) { return 0; }
}
int main() { f(); }
And finally:
typedef void void_t;
extern "C" {
int f(void_t) { return 0; }
}
int main() { f(); }
If any of these fails, I'd sure like to know why. If they succeed, I'd
sure like to know what's special about GLvoid.
--
Braden McDaniel e-mail: <braden at endoframe.com>
<http://endoframe.com> Jabber: <braden at jabber.org>
More information about the fedora-devel-list
mailing list