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