Hi, find a patch attached that fixes all remaining strict-aliasing problems when compiling Mesa with gcc 4 (at least for me).
CU all Matthias -- Matthias Hopf <[EMAIL PROTECTED]>, SuSE labs, Zimmer 3.2.06, Tel. 74053-715
Index: src/glut/glx/glut_dstr.c =================================================================== RCS file: /cvs/mesa/Mesa/src/glut/glx/glut_dstr.c,v retrieving revision 1.5 diff -u -p -r1.5 glut_dstr.c --- src/glut/glx/glut_dstr.c 12 Feb 2003 23:56:23 -0000 1.5 +++ src/glut/glx/glut_dstr.c 8 Jul 2005 17:04:00 -0000 @@ -34,6 +34,12 @@ static int glxcap[NUM_GLXCAPS] = GLX_LEVEL, }; +#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) +typedef void *fbc_t; +#else +typedef GLXFBConfigSGIX fbc_t; +#endif + #ifdef TEST #if !defined(_WIN32) @@ -41,7 +47,7 @@ char *__glutProgramName = "dstr"; Display *__glutDisplay; int __glutScreen; XVisualInfo *(*__glutDetermineVisualFromString) (char *string, Bool * treatAsSingle, - Criterion * requiredCriteria, int nRequired, int requiredMask, void **fbc) = NULL; + Criterion * requiredCriteria, int nRequired, int requiredMask, fbc_t *fbc) = NULL; char *__glutDisplayString = NULL; #endif static int verbose = 0; @@ -626,7 +632,7 @@ loadVisuals(int *nitems_return) static XVisualInfo * findMatch(FrameBufferMode * fbmodes, int nfbmodes, - Criterion * criteria, int ncriteria, void **fbc) + Criterion * criteria, int ncriteria, fbc_t *fbc) { FrameBufferMode *found; int *bestScore, *thisScore; @@ -1420,7 +1426,7 @@ static int nfbmodes = 0; static XVisualInfo * getVisualInfoFromString(char *string, Bool * treatAsSingle, - Criterion * requiredCriteria, int nRequired, int requiredMask, void **fbc) + Criterion * requiredCriteria, int nRequired, int requiredMask, fbc_t *fbc) { Criterion *criteria; XVisualInfo *visinfo; @@ -1530,11 +1536,7 @@ main(int argc, char **argv) char *str, buffer[1024]; int tty = isatty(fileno(stdin)); int overlay = 0, showconfig = 0; -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - GLXFBConfigSGIX fbc; -#else - void *fbc; -#endif + fbc_t *fbc; #if !defined(_WIN32) dpy = XOpenDisplay(NULL); @@ -1563,10 +1565,10 @@ main(int argc, char **argv) } else { if (overlay) { vinfo = getVisualInfoFromString(str, &treatAsSingle, - requiredOverlayCriteria, numRequiredOverlayCriteria, requiredOverlayCriteriaMask, (void**) &fbc); + requiredOverlayCriteria, numRequiredOverlayCriteria, requiredOverlayCriteriaMask, &fbc); } else { vinfo = getVisualInfoFromString(str, &treatAsSingle, - requiredWindowCriteria, numRequiredWindowCriteria, requiredWindowCriteriaMask, (void**) &fbc); + requiredWindowCriteria, numRequiredWindowCriteria, requiredWindowCriteriaMask, &fbc); } if (vinfo) { printf("\n"); Index: src/glut/glx/glut_overlay.c =================================================================== RCS file: /cvs/mesa/Mesa/src/glut/glx/glut_overlay.c,v retrieving revision 1.4 diff -u -p -r1.4 glut_overlay.c --- src/glut/glx/glut_overlay.c 12 Feb 2003 23:56:23 -0000 1.4 +++ src/glut/glx/glut_overlay.c 8 Jul 2005 17:04:00 -0000 @@ -28,6 +28,12 @@ #include "glutint.h" #include "layerutil.h" +#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) +typedef void *fbc_t; +#else +typedef GLXFBConfigSGIX fbc_t; +#endif + static Criterion requiredOverlayCriteria[] = { {LEVEL, EQ, 1}, /* This entry gets poked in @@ -315,7 +321,7 @@ __glutFreeOverlay(GLUToverlay * overlay) } static XVisualInfo * -determineOverlayVisual(int *treatAsSingle, Bool * visAlloced, void **fbc) +determineOverlayVisual(int *treatAsSingle, Bool * visAlloced, fbc_t *fbc) { if (__glutDisplayString) { XVisualInfo *vi; @@ -362,11 +368,7 @@ glutEstablishOverlay(void) GLUToverlay *overlay; GLUTwindow *window; XSetWindowAttributes wa; -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - GLXFBConfigSGIX fbc; -#else - void *fbc; -#endif + fbc_t *fbc; /* Register a routine to free an overlay with glut_win.c; this keeps glut_win.c from pulling in all of @@ -389,7 +391,7 @@ glutEstablishOverlay(void) __glutFatalError("out of memory."); overlay->vis = determineOverlayVisual(&overlay->treatAsSingle, - &overlay->visAlloced, (void **) &fbc); + &overlay->visAlloced, &fbc); if (!overlay->vis) { __glutFatalError("lacks overlay support."); } @@ -567,7 +569,7 @@ glutLayerGet(GLenum param) { XVisualInfo *vi; Bool dummy, visAlloced; - void *fbc; + fbc_t fbc; vi = determineOverlayVisual(&dummy, &visAlloced, &fbc); if (vi) { Index: src/glut/glx/glut_win.c =================================================================== RCS file: /cvs/mesa/Mesa/src/glut/glx/glut_win.c,v retrieving revision 1.6 diff -u -p -r1.6 glut_win.c --- src/glut/glx/glut_win.c 12 Feb 2003 23:56:23 -0000 1.6 +++ src/glut/glx/glut_win.c 8 Jul 2005 17:04:00 -0000 @@ -28,9 +28,15 @@ GLUTstale *__glutStaleWindowList = NULL; #endif GLUTwindow *__glutMenuWindow = NULL; +#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) +typedef void *fbc_t; +#else +typedef GLXFBConfigSGIX fbc_t; +#endif + void (*__glutFreeOverlayFunc) (GLUToverlay *); XVisualInfo *(*__glutDetermineVisualFromString) (char *string, Bool * treatAsSingle, - Criterion * requiredCriteria, int nRequired, int requiredMask, void** fbc) = NULL; + Criterion * requiredCriteria, int nRequired, int requiredMask, fbc_t *fbc) = NULL; static Criterion requiredWindowCriteria[] = { @@ -434,7 +440,7 @@ __glutDefaultReshape(int width, int heig } XVisualInfo * -__glutDetermineWindowVisual(Bool * treatAsSingle, Bool * visAlloced, void **fbc) +__glutDetermineWindowVisual(Bool * treatAsSingle, Bool * visAlloced, fbc_t *fbc) { if (__glutDisplayString) { @@ -471,11 +477,7 @@ __glutCreateWindow(GLUTwindow * parent, unsigned long attribMask; int winnum; int i; -#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_fbconfig) - GLXFBConfigSGIX fbc; -#else - void *fbc; -#endif + fbc_t fbc; #if defined(_WIN32) WNDCLASS wc; @@ -501,7 +503,7 @@ __glutCreateWindow(GLUTwindow * parent, #if !defined(_WIN32) window->vis = __glutDetermineWindowVisual(&window->treatAsSingle, - &window->visAlloced, (void**) &fbc); + &window->visAlloced, &fbc); if (!window->vis) { __glutFatalError( "visual with necessary capabilities not found.");