Bug 3850 - changes between rev1480 and rev1481 make the UI menus disfunctionnal
Status: RESOLVED FIXED
Alias: None
Product: ioquake3
Classification: Unclassified
Component: Platform
Version: GIT MASTER
Hardware: PC All
: P3 normal
Assignee: Zachary J. Slater
QA Contact: ioquake3 bugzilla mailing list
URL:
Depends on:
Blocks:
 
Reported: 2008-11-11 07:53 EST by Vincent Cojot
Modified: 2008-11-12 09:06:51 EST
0 users

See Also:



Description Vincent Cojot 2008-11-11 07:53:27 EST
Hello,

Between rev 1480 and 1481 some UI changes were introduced.
Until 1480, all worked fine. Starting with 1481, upon launching the game, the initial menu is fine but the mouse cannot be used (it's stuck in the upper-left corner) altough the menus select/deselect fine while moving the mouse.
Upon entering the first menu item, the display is completely messed up (things/opponet faces appear crowded in the upper-left corner).

I have reproduced this on the following platforms:
- Dell system, RHEL4/i686 with NVidia graphics.
- SUN Ultra 45, Solaris 10 SPARC with remote graphics (Linux).

On both platforms, I use the following cmd-line to start ioquake3:
EXEC_FLAGS="+set fs_basepath ${IOQ3_DIR} +set vm_game 1 +set vm_cgame 1 +set vm_ui 1 +set sv_pure 1 +set ttycon 0 +set com_ansiColor 0 +set r_fullscreen 0"

I haven't had time to investigate further but since this appears to be a big show-stopper, I thought I'd report it here ASAP.

Thanks,

Vincent
Comment 1 Ludwig Nussel 2008-11-11 08:50:56 EST
Try r1487 which contains additional fixes by Timbo. If that doesn't help use -fno-strict-aliasing in CFLAGS.
Comment 2 Vincent Cojot 2008-11-11 09:56:30 EST
Rev 1487 has the same problem. However, as you mentionned, the fno-strict-aliasing fixes the issue (tested on Linux with rev1487, will test on Solaris later tonight). Is there a better fix than a compiler flag?
Thanks,

Vincent
Comment 3 Vincent Cojot 2008-11-11 09:57:09 EST
Here's what I used:
$ svn diff SVN/icculus/ioquake3-linux 
Index: SVN/icculus/ioquake3-linux/trunk/Makefile
===================================================================
--- SVN/icculus/ioquake3-linux/trunk/Makefile   (revision 1487)
+++ SVN/icculus/ioquake3-linux/trunk/Makefile   (working copy)
@@ -238,7 +238,7 @@
   endif
 
   BASE_CFLAGS = -Wall -Wimplicit -Wstrict-prototypes \
-    -pipe -DUSE_ICON $(shell sdl-config --cflags)
+    -pipe -DUSE_ICON $(shell sdl-config --cflags) -fno-strict-aliasing
 
   ifeq ($(USE_OPENAL),1)
     BASE_CFLAGS += -DUSE_OPENAL
Comment 4 Vincent Cojot 2008-11-11 15:17:46 EST
fno-strict-aliasing fixes the issue on Solaris/SPARC as well (although the fix is in a different location inside the Makefile).
Comment 5 Tim Angus 2008-11-11 16:48:35 EST
You could try fixing some of the following /potential/ bad type-punns. I'm not sure why you're getting problems on Linux; it works for me. Presumably you're using GCC?

tma@abraxas:~/projects/ioq3/trunk/code$ find -iname "*.[ch]" -exec grep -inH "( *[a-zA-Z_]* *\* *) *&" {} \;
./qcommon/vm_ppc.c:1767:	*(int *)&image[ programStack + 44] = args[9];
./qcommon/vm_ppc.c:1768:	*(int *)&image[ programStack + 40] = args[8];
./qcommon/vm_ppc.c:1769:	*(int *)&image[ programStack + 36] = args[7];
./qcommon/vm_ppc.c:1770:	*(int *)&image[ programStack + 32] = args[6];
./qcommon/vm_ppc.c:1771:	*(int *)&image[ programStack + 28] = args[5];
./qcommon/vm_ppc.c:1772:	*(int *)&image[ programStack + 24] = args[4];
./qcommon/vm_ppc.c:1773:	*(int *)&image[ programStack + 20] = args[3];
./qcommon/vm_ppc.c:1774:	*(int *)&image[ programStack + 16] = args[2];
./qcommon/vm_ppc.c:1775:	*(int *)&image[ programStack + 12] = args[1];
./qcommon/vm_ppc.c:1776:	*(int *)&image[ programStack + 8 ] = args[0];
./qcommon/vm_ppc.c:1777:	*(int *)&image[ programStack + 4 ] = 0;	// return stack
./qcommon/vm_ppc.c:1778:	*(int *)&image[ programStack ] = -1;	// will terminate the loop on return
./qcommon/vm_ppc.c:1793:		(int)image, vm->dataMask, *(int *)&AsmCall /* skip function pointer header */, 
./qcommon/vm.c:771:			r = VM_CallCompiled( vm, (int*)&callnum );
./qcommon/vm.c:774:			r = VM_CallInterpreted( vm, (int*)&callnum );
./qcommon/vm_x86_64.c:1093:	*(int *)&image[ programStack + 44] = args[9];
./qcommon/vm_x86_64.c:1094:	*(int *)&image[ programStack + 40] = args[8];
./qcommon/vm_x86_64.c:1095:	*(int *)&image[ programStack + 36] = args[7];
./qcommon/vm_x86_64.c:1096:	*(int *)&image[ programStack + 32] = args[6];
./qcommon/vm_x86_64.c:1097:	*(int *)&image[ programStack + 28] = args[5];
./qcommon/vm_x86_64.c:1098:	*(int *)&image[ programStack + 24] = args[4];
./qcommon/vm_x86_64.c:1099:	*(int *)&image[ programStack + 20] = args[3];
./qcommon/vm_x86_64.c:1100:	*(int *)&image[ programStack + 16] = args[2];
./qcommon/vm_x86_64.c:1101:	*(int *)&image[ programStack + 12] = args[1];
./qcommon/vm_x86_64.c:1102:	*(int *)&image[ programStack + 8 ] = args[0];
./qcommon/vm_x86_64.c:1103:	*(int *)&image[ programStack + 4 ] = 0x77777777;	// return stack
./qcommon/vm_x86_64.c:1104:	*(int *)&image[ programStack ] = -1;	// will terminate the loop on return
./qcommon/vm_x86_64.c:1126:		Com_Error( ERR_DROP, "opStack corrupted in compiled code (offset %ld)\n", (long int) ((void *) &stack[1] - opStack));
./qcommon/cm_load.c:626:		((int *)&header)[i] = LittleLong ( ((int *)&header)[i]);
./qcommon/common.c:1159:		return ((char *)&emptystring) + sizeof(memblock_t);
./qcommon/common.c:1163:			return ((char *)&numberstring[in[0]-'0']) + sizeof(memblock_t);
./qcommon/common.c:3016:acos(*(float*) &i) == -1.#IND0
./qcommon/q_shared.h:390:#define	IS_NAN(x) (((*(int *)&x)&nanmask)==nanmask)
./qcommon/vm_x86.c:1155:	*(int *)&image[ programStack + 44] = args[9];
./qcommon/vm_x86.c:1156:	*(int *)&image[ programStack + 40] = args[8];
./qcommon/vm_x86.c:1157:	*(int *)&image[ programStack + 36] = args[7];
./qcommon/vm_x86.c:1158:	*(int *)&image[ programStack + 32] = args[6];
./qcommon/vm_x86.c:1159:	*(int *)&image[ programStack + 28] = args[5];
./qcommon/vm_x86.c:1160:	*(int *)&image[ programStack + 24] = args[4];
./qcommon/vm_x86.c:1161:	*(int *)&image[ programStack + 20] = args[3];
./qcommon/vm_x86.c:1162:	*(int *)&image[ programStack + 16] = args[2];
./qcommon/vm_x86.c:1163:	*(int *)&image[ programStack + 12] = args[1];
./qcommon/vm_x86.c:1164:	*(int *)&image[ programStack + 8 ] = args[0];
./qcommon/vm_x86.c:1165:	*(int *)&image[ programStack + 4 ] = 0;	// return stack
./qcommon/vm_x86.c:1166:	*(int *)&image[ programStack ] = -1;	// will terminate the loop on return
./qcommon/vm_powerpc.c:339:	( (void *)&(((structName *)NULL)->field) - NULL )
./qcommon/vm_powerpc.c:2126:	argPointer = (int *)&image[ programStack + 8 ];
./qcommon/vm_powerpc.c:2143:		entry = (void *)&(vm_dataAndCode->opd);
./qcommon/vm_interpreted.c:158:		programStack =  *(int *)&vm->dataBase[programStack+4];
./qcommon/vm_interpreted.c:159:		programCounter = *(int *)&vm->dataBase[programStack];
./qcommon/vm_interpreted.c:366:	*(int *)&image[ programStack + 44] = args[9];
./qcommon/vm_interpreted.c:367:	*(int *)&image[ programStack + 40] = args[8];
./qcommon/vm_interpreted.c:368:	*(int *)&image[ programStack + 36] = args[7];
./qcommon/vm_interpreted.c:369:	*(int *)&image[ programStack + 32] = args[6];
./qcommon/vm_interpreted.c:370:	*(int *)&image[ programStack + 28] = args[5];
./qcommon/vm_interpreted.c:371:	*(int *)&image[ programStack + 24] = args[4];
./qcommon/vm_interpreted.c:372:	*(int *)&image[ programStack + 20] = args[3];
./qcommon/vm_interpreted.c:373:	*(int *)&image[ programStack + 16] = args[2];
./qcommon/vm_interpreted.c:374:	*(int *)&image[ programStack + 12] = args[1];
./qcommon/vm_interpreted.c:375:	*(int *)&image[ programStack + 8 ] = args[0];
./qcommon/vm_interpreted.c:376:	*(int *)&image[ programStack + 4 ] = 0;	// return stack
./qcommon/vm_interpreted.c:377:	*(int *)&image[ programStack ] = -1;	// will terminate the loop on return
./qcommon/vm_interpreted.c:451:			r0 = *opStack = *(int *)&image[ r0&dataMask ];
./qcommon/vm_interpreted.c:461:			*(int *)&image[ r1&(dataMask & ~3) ] = r0;
./qcommon/vm_interpreted.c:465:			*(short *)&image[ r1&(dataMask & ~1) ] = r0;
./qcommon/vm_interpreted.c:475:			*(int *)&image[ codeImage[programCounter] + programStack ] = r0;
./qcommon/vm_interpreted.c:492:				src = (int *)&image[ srci ];
./qcommon/vm_interpreted.c:493:				dest = (int *)&image[ desti ];
./qcommon/vm_interpreted.c:503:			*(int *)&image[ programStack ] = programCounter;
./qcommon/vm_interpreted.c:523:				stomped = *(int *)&image[ programStack + 4 ];
./qcommon/vm_interpreted.c:525:				*(int *)&image[ programStack + 4 ] = -1 - programCounter;
./qcommon/vm_interpreted.c:527://VM_LogSyscalls( (int *)&image[ programStack + 4 ] );
./qcommon/vm_interpreted.c:529:					intptr_t* argptr = (intptr_t *)&image[ programStack + 4 ];
./qcommon/vm_interpreted.c:536:						argarr[i] = *(int*)&image[ programStack + 4 + 4*i ];
./qcommon/vm_interpreted.c:546:				*(int *)&image[ programStack + 4 ] = stomped;
./qcommon/vm_interpreted.c:552:				programCounter = *(int *)&image[ programStack ];
./qcommon/vm_interpreted.c:585:			*(int *)&image[programStack+4] = programStack + v1;
./qcommon/vm_interpreted.c:605:			programCounter = *(int *)&image[ programStack ];
./qcommon/net_ip.c:223:		((struct sockaddr_in *)s)->sin_addr.s_addr = *(int *)&a->ip;
./qcommon/net_ip.c:244:		*(int *)&a->ip = ((struct sockaddr_in *)s)->sin_addr.s_addr;
./qcommon/net_ip.c:530:				net_from->port = *(short *)&net_message->data[8];
./qcommon/net_ip.c:643:		*(int *)&socksBuf[4] = ((struct sockaddr_in *)&addr)->sin_addr.s_addr;
./qcommon/net_ip.c:644:		*(short *)&socksBuf[8] = ((struct sockaddr_in *)&addr)->sin_port;
./qcommon/net_ip.c:721:				compareip = (byte *) &((struct sockaddr_in *) &localIP[index].addr)->sin_addr.s_addr;
./qcommon/net_ip.c:722:				comparemask = (byte *) &((struct sockaddr_in *) &localIP[index].netmask)->sin_addr.s_addr;
./qcommon/net_ip.c:731:				compareip = (byte *) &((struct sockaddr_in6 *) &localIP[index].addr)->sin6_addr;
./qcommon/net_ip.c:732:				comparemask = (byte *) &((struct sockaddr_in6 *) &localIP[index].netmask)->sin6_addr;
./qcommon/net_ip.c:815:	if( setsockopt( newsocket, SOL_SOCKET, SO_BROADCAST, (char *) &i, sizeof(i) ) == SOCKET_ERROR ) {
./qcommon/net_ip.c:842:	if( bind( newsocket, (void *)&address, sizeof(address) ) == SOCKET_ERROR ) {
./qcommon/net_ip.c:894:		if(setsockopt(newsocket, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &i, sizeof(i)) == SOCKET_ERROR)
./qcommon/net_ip.c:922:	if( bind( newsocket, (void *)&address, sizeof(address) ) == SOCKET_ERROR ) {
./qcommon/net_ip.c:999:			       (char *) &curgroup.ipv6mr_interface, sizeof(curgroup.ipv6mr_interface)) < 0)
./qcommon/net_ip.c:1012:        if (setsockopt(multicast6_socket, IPPROTO_IPV6, IPV6_JOIN_GROUP, (char *) &curgroup, sizeof(curgroup)))
./qcommon/net_ip.c:1032:			setsockopt(multicast6_socket, IPPROTO_IPV6, IPV6_LEAVE_GROUP, (char *) &curgroup, sizeof(curgroup));
./qcommon/net_ip.c:1178:	*(int *)&buf[4] = INADDR_ANY;
./qcommon/net_ip.c:1179:	*(short *)&buf[8] = htons( (short)port );		// port
./qcommon/net_ip.c:1207:	((struct sockaddr_in *)&socksRelayAddr)->sin_addr.s_addr = *(int *)&buf[4];
./qcommon/net_ip.c:1208:	((struct sockaddr_in *)&socksRelayAddr)->sin_port = *(short *)&buf[8];
./qcommon/q_math.c:222:	( (byte *)&i )[0] = r * 255;
./qcommon/q_math.c:223:	( (byte *)&i )[1] = g * 255;
./qcommon/q_math.c:224:	( (byte *)&i )[2] = b * 255;
./qcommon/q_math.c:232:	( (byte *)&i )[0] = r * 255;
./qcommon/q_math.c:233:	( (byte *)&i )[1] = g * 255;
./qcommon/q_math.c:234:	( (byte *)&i )[2] = b * 255;
./qcommon/q_math.c:235:	( (byte *)&i )[3] = a * 255;
./jpeg-6b/jmemdos.c:472:#define FIELD_AT(spec,offset,type)  (*((type *) &(spec.bytes[offset])))
./server/sv_main.c:534:	if (!Q_strncmp("connect", (char *) &msg->data[4], 7)) {
./server/sv_rankings.c:428:			(void*)&s_ranked_players[index], 
./server/sv_rankings.c:490:			(void*)&s_ranked_players[index], 
./server/sv_rankings.c:643:			(void*)&s_ranked_players[index], 
./server/sv_rankings.c:662:				(void*)&s_ranked_players[index],
./server/sv_rankings.c:930:								(void*)&(s_ranked_players[i]),
./sdl/sdl_glimp.c:629:			qglGetIntegerv( GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, (GLint *)&maxAnisotropy );
./renderer/tr_surface.c:204:		*(int *)&tess.vertexColors[numv] = *(int *)p->verts[ i ].modulate;
./renderer/tr_surface.c:648:		newNormalsStorePermute = vec_lvsl(0,(float *)&newXyzScaleVec);
./renderer/tr_shade_calc.c:1195:			*(int *)&colors[i*4] = ambientLightInt;
./renderer/tr_animation.c:163:		//v = (md4Vertex_t *)( ( byte * )&v->weights[v->numWeights] + 12 );
./renderer/tr_animation.c:554:		v = (mdrVertex_t *)&v->weights[v->numWeights];
./renderer/tr_shade.c:438:	modulatePerm = vec_lvsl(0,(float *)&modulate);
./renderer/tr_shade.c:525:			modulateVec = vec_ld(0,(float *)&modulate);
./renderer/tr_shade.c:754:		* ( int * )&tess.svars.colors[i] = fog->colorInt;
./renderer/tr_shade.c:845:					* ( int * )&tess.svars.colors[i] = fog->colorInt;
./renderer/tr_bsp.c:353:		R_ColorShiftLightingBytes( verts[i].color, (byte *)&cv->points[i][7] );
./renderer/tr_light.c:362:	((byte *)&ent->ambientLightInt)[0] = myftol( ent->ambientLight[0] );
./renderer/tr_light.c:363:	((byte *)&ent->ambientLightInt)[1] = myftol( ent->ambientLight[1] );
./renderer/tr_light.c:364:	((byte *)&ent->ambientLightInt)[2] = myftol( ent->ambientLight[2] );
./renderer/tr_light.c:365:	((byte *)&ent->ambientLightInt)[3] = 0xff;
./renderer/tr_model.c:534:			cframe = (mdrCompFrame_t *) &cframe->bones[j];
./renderer/tr_model.c:535:			frame = (mdrFrame_t *) &frame->bones[j];
./renderer/tr_model.c:888:				//v = (md4Vertex_t *)( ( byte * )&v->weights[v->numWeights] + 12 );
./renderer/tr_model.c:889:				v = (md4Vertex_t *)( ( byte * )&v->weights[v->numWeights]);
./renderer/tr_image.c:360:					1 * ((byte *)&in[ ((i*2-1)&inHeightMask)*inWidth + ((j*2-1)&inWidthMask) ])[k] +
./renderer/tr_image.c:361:					2 * ((byte *)&in[ ((i*2-1)&inHeightMask)*inWidth + ((j*2)&inWidthMask) ])[k] +
./renderer/tr_image.c:362:					2 * ((byte *)&in[ ((i*2-1)&inHeightMask)*inWidth + ((j*2+1)&inWidthMask) ])[k] +
./renderer/tr_image.c:363:					1 * ((byte *)&in[ ((i*2-1)&inHeightMask)*inWidth + ((j*2+2)&inWidthMask) ])[k] +
./renderer/tr_image.c:365:					2 * ((byte *)&in[ ((i*2)&inHeightMask)*inWidth + ((j*2-1)&inWidthMask) ])[k] +
./renderer/tr_image.c:366:					4 * ((byte *)&in[ ((i*2)&inHeightMask)*inWidth + ((j*2)&inWidthMask) ])[k] +
./renderer/tr_image.c:367:					4 * ((byte *)&in[ ((i*2)&inHeightMask)*inWidth + ((j*2+1)&inWidthMask) ])[k] +
./renderer/tr_image.c:368:					2 * ((byte *)&in[ ((i*2)&inHeightMask)*inWidth + ((j*2+2)&inWidthMask) ])[k] +
./renderer/tr_image.c:370:					2 * ((byte *)&in[ ((i*2+1)&inHeightMask)*inWidth + ((j*2-1)&inWidthMask) ])[k] +
./renderer/tr_image.c:371:					4 * ((byte *)&in[ ((i*2+1)&inHeightMask)*inWidth + ((j*2)&inWidthMask) ])[k] +
./renderer/tr_image.c:372:					4 * ((byte *)&in[ ((i*2+1)&inHeightMask)*inWidth + ((j*2+1)&inWidthMask) ])[k] +
./renderer/tr_image.c:373:					2 * ((byte *)&in[ ((i*2+1)&inHeightMask)*inWidth + ((j*2+2)&inWidthMask) ])[k] +
./renderer/tr_image.c:375:					1 * ((byte *)&in[ ((i*2+2)&inHeightMask)*inWidth + ((j*2-1)&inWidthMask) ])[k] +
./renderer/tr_image.c:376:					2 * ((byte *)&in[ ((i*2+2)&inHeightMask)*inWidth + ((j*2)&inWidthMask) ])[k] +
./renderer/tr_image.c:377:					2 * ((byte *)&in[ ((i*2+2)&inHeightMask)*inWidth + ((j*2+1)&inWidthMask) ])[k] +
./renderer/tr_image.c:378:					1 * ((byte *)&in[ ((i*2+2)&inHeightMask)*inWidth + ((j*2+2)&inWidthMask) ])[k];
./tools/asm/q3asm.c:1400:			((int *)&header)[i] = LittleLong( ((int *)&header)[i] );
./tools/lcc/src/bytecode.c:47:			unsigned *p = (unsigned *)&v.d;
./botlib/be_ai_weap.c:182:		WriteStructure(fp, &projectileinfo_struct, (char *) &wc->projectileinfo[i]);
./botlib/be_ai_weap.c:187:		WriteStructure(fp, &weaponinfo_struct, (char *) &wc->weaponinfo[i]);
./botlib/be_ai_weap.c:245:			if (!ReadStructure(source, &weaponinfo_struct, (char *) &weaponinfo))
./botlib/be_ai_weap.c:271:			if (!ReadStructure(source, &projectileinfo_struct, (char *) &wc->projectileinfo[wc->numprojectiles]))
./q3_ui/ui_spskill.c:304:	Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.art_frame );
./q3_ui/ui_spskill.c:305:	Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.art_banner );
./q3_ui/ui_spskill.c:306:	Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_baby );
./q3_ui/ui_spskill.c:307:	Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_easy );
./q3_ui/ui_spskill.c:308:	Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_medium );
./q3_ui/ui_spskill.c:309:	Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_hard );
./q3_ui/ui_spskill.c:310:	Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_nightmare );
./q3_ui/ui_spskill.c:311:	Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.art_skillPic );
./q3_ui/ui_spskill.c:312:	Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_back );
./q3_ui/ui_spskill.c:313:	Menu_AddItem( &skillMenuInfo.menu, ( void * )&skillMenuInfo.item_fight );
./q3_ui/ui_team.c:174:	Menu_AddItem( &s_teammain.menu, (void*) &s_teammain.frame );
./q3_ui/ui_team.c:175:	Menu_AddItem( &s_teammain.menu, (void*) &s_teammain.joinred );
./q3_ui/ui_team.c:176:	Menu_AddItem( &s_teammain.menu, (void*) &s_teammain.joinblue );
./q3_ui/ui_team.c:177:	Menu_AddItem( &s_teammain.menu, (void*) &s_teammain.joingame );
./q3_ui/ui_team.c:178:	Menu_AddItem( &s_teammain.menu, (void*) &s_teammain.spectate );
./q3_ui/ui_sppostgame.c:473:	Menu_AddItem( &postgameMenuInfo.menu, ( void * )&postgameMenuInfo.item_menu );
./q3_ui/ui_sppostgame.c:474:	Menu_AddItem( &postgameMenuInfo.menu, ( void * )&postgameMenuInfo.item_again );
./q3_ui/ui_sppostgame.c:475:	Menu_AddItem( &postgameMenuInfo.menu, ( void * )&postgameMenuInfo.item_next );
./q3_ui/ui_signup.c:252:	Menu_AddItem( &s_signup.menu, (void*) &s_signup.frame );
./q3_ui/ui_signup.c:253:	Menu_AddItem( &s_signup.menu, (void*) &s_signup.name );
./q3_ui/ui_signup.c:254:	Menu_AddItem( &s_signup.menu, (void*) &s_signup.name_box );
./q3_ui/ui_signup.c:255:	Menu_AddItem( &s_signup.menu, (void*) &s_signup.password );
./q3_ui/ui_signup.c:256:	Menu_AddItem( &s_signup.menu, (void*) &s_signup.password_box );
./q3_ui/ui_signup.c:257:	Menu_AddItem( &s_signup.menu, (void*) &s_signup.again );
./q3_ui/ui_signup.c:258:	Menu_AddItem( &s_signup.menu, (void*) &s_signup.again_box );
./q3_ui/ui_signup.c:259:	Menu_AddItem( &s_signup.menu, (void*) &s_signup.email );
./q3_ui/ui_signup.c:260:	Menu_AddItem( &s_signup.menu, (void*) &s_signup.email_box );
./q3_ui/ui_signup.c:261:	Menu_AddItem( &s_signup.menu, (void*) &s_signup.signup );
./q3_ui/ui_signup.c:262:	Menu_AddItem( &s_signup.menu, (void*) &s_signup.cancel );
./q3_ui/ui_rankings.c:390:	Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.frame );
./q3_ui/ui_rankings.c:391:	Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.login );
./q3_ui/ui_rankings.c:392:	Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.logout );
./q3_ui/ui_rankings.c:393:	Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.create );
./q3_ui/ui_rankings.c:394:	Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.spectate );
./q3_ui/ui_rankings.c:395:	Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.setup );
./q3_ui/ui_rankings.c:396:	Menu_AddItem( &s_rankings.menu, (void*) &s_rankings.leave );
./q3_ui/ui_options.c:210:	Menu_AddItem( &s_options.menu, ( void * ) &s_options.banner );
./q3_ui/ui_options.c:211:	Menu_AddItem( &s_options.menu, ( void * ) &s_options.framel );
./q3_ui/ui_options.c:212:	Menu_AddItem( &s_options.menu, ( void * ) &s_options.framer );
./q3_ui/ui_options.c:213:	Menu_AddItem( &s_options.menu, ( void * ) &s_options.graphics );
./q3_ui/ui_options.c:214:	Menu_AddItem( &s_options.menu, ( void * ) &s_options.display );
./q3_ui/ui_options.c:215:	Menu_AddItem( &s_options.menu, ( void * ) &s_options.sound );
./q3_ui/ui_options.c:216:	Menu_AddItem( &s_options.menu, ( void * ) &s_options.network );
./q3_ui/ui_options.c:217:	Menu_AddItem( &s_options.menu, ( void * ) &s_options.back );
./q3_ui/ui_video.c:1120:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.banner );
./q3_ui/ui_video.c:1121:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.framel );
./q3_ui/ui_video.c:1122:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.framer );
./q3_ui/ui_video.c:1124:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.graphics );
./q3_ui/ui_video.c:1125:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.display );
./q3_ui/ui_video.c:1126:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.sound );
./q3_ui/ui_video.c:1127:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.network );
./q3_ui/ui_video.c:1129:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.list );
./q3_ui/ui_video.c:1130:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.driver );
./q3_ui/ui_video.c:1131:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.allow_extensions );
./q3_ui/ui_video.c:1132:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.mode );
./q3_ui/ui_video.c:1133:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.colordepth );
./q3_ui/ui_video.c:1134:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.fs );
./q3_ui/ui_video.c:1135:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.lighting );
./q3_ui/ui_video.c:1136:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.geometry );
./q3_ui/ui_video.c:1137:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.tq );
./q3_ui/ui_video.c:1138:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.texturebits );
./q3_ui/ui_video.c:1139:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.filter );
./q3_ui/ui_video.c:1140:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.driverinfo );
./q3_ui/ui_video.c:1142:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.back );
./q3_ui/ui_video.c:1143:	Menu_AddItem( &s_graphicsoptions.menu, ( void * ) &s_graphicsoptions.apply );
./q3_ui/ui_rankstatus.c:147:	Menu_AddItem( &s_rankstatus.menu, (void*) &s_rankstatus.frame );
./q3_ui/ui_rankstatus.c:148:	Menu_AddItem( &s_rankstatus.menu, (void*) &s_rankstatus.message );
./q3_ui/ui_rankstatus.c:149:	Menu_AddItem( &s_rankstatus.menu, (void*) &s_rankstatus.ok );
./q3_ui/ui_network.c:230:	Menu_AddItem( &networkOptionsInfo.menu, ( void * ) &networkOptionsInfo.banner );
./q3_ui/ui_network.c:231:	Menu_AddItem( &networkOptionsInfo.menu, ( void * ) &networkOptionsInfo.framel );
./q3_ui/ui_network.c:232:	Menu_AddItem( &networkOptionsInfo.menu, ( void * ) &networkOptionsInfo.framer );
./q3_ui/ui_network.c:233:	Menu_AddItem( &networkOptionsInfo.menu, ( void * ) &networkOptionsInfo.graphics );
./q3_ui/ui_network.c:234:	Menu_AddItem( &networkOptionsInfo.menu, ( void * ) &networkOptionsInfo.display );
./q3_ui/ui_network.c:235:	Menu_AddItem( &networkOptionsInfo.menu, ( void * ) &networkOptionsInfo.sound );
./q3_ui/ui_network.c:236:	Menu_AddItem( &networkOptionsInfo.menu, ( void * ) &networkOptionsInfo.network );
./q3_ui/ui_network.c:237:	Menu_AddItem( &networkOptionsInfo.menu, ( void * ) &networkOptionsInfo.rate );
./q3_ui/ui_network.c:238:	Menu_AddItem( &networkOptionsInfo.menu, ( void * ) &networkOptionsInfo.back );
./q3_ui/ui_controls2.c:282:	(menucommon_s *)&s_controls.alwaysrun,     
./q3_ui/ui_controls2.c:283:	(menucommon_s *)&s_controls.run,            
./q3_ui/ui_controls2.c:284:	(menucommon_s *)&s_controls.walkforward,
./q3_ui/ui_controls2.c:285:	(menucommon_s *)&s_controls.backpedal,
./q3_ui/ui_controls2.c:286:	(menucommon_s *)&s_controls.stepleft,      
./q3_ui/ui_controls2.c:287:	(menucommon_s *)&s_controls.stepright,     
./q3_ui/ui_controls2.c:288:	(menucommon_s *)&s_controls.moveup,        
./q3_ui/ui_controls2.c:289:	(menucommon_s *)&s_controls.movedown,      
./q3_ui/ui_controls2.c:290:	(menucommon_s *)&s_controls.turnleft,      
./q3_ui/ui_controls2.c:291:	(menucommon_s *)&s_controls.turnright,     
./q3_ui/ui_controls2.c:292:	(menucommon_s *)&s_controls.sidestep,
./q3_ui/ui_controls2.c:297:	(menucommon_s *)&s_controls.attack,           
./q3_ui/ui_controls2.c:298:	(menucommon_s *)&s_controls.nextweapon,
./q3_ui/ui_controls2.c:299:	(menucommon_s *)&s_controls.prevweapon,
./q3_ui/ui_controls2.c:300:	(menucommon_s *)&s_controls.autoswitch,    
./q3_ui/ui_controls2.c:301:	(menucommon_s *)&s_controls.chainsaw,         
./q3_ui/ui_controls2.c:302:	(menucommon_s *)&s_controls.machinegun,
./q3_ui/ui_controls2.c:303:	(menucommon_s *)&s_controls.shotgun,          
./q3_ui/ui_controls2.c:304:	(menucommon_s *)&s_controls.grenadelauncher,
./q3_ui/ui_controls2.c:305:	(menucommon_s *)&s_controls.rocketlauncher,   
./q3_ui/ui_controls2.c:306:	(menucommon_s *)&s_controls.lightning,   
./q3_ui/ui_controls2.c:307:	(menucommon_s *)&s_controls.railgun,          
./q3_ui/ui_controls2.c:308:	(menucommon_s *)&s_controls.plasma,           
./q3_ui/ui_controls2.c:309:	(menucommon_s *)&s_controls.bfg,              
./q3_ui/ui_controls2.c:314:	(menucommon_s *)&s_controls.sensitivity,
./q3_ui/ui_controls2.c:315:	(menucommon_s *)&s_controls.smoothmouse,
./q3_ui/ui_controls2.c:316:	(menucommon_s *)&s_controls.invertmouse,
./q3_ui/ui_controls2.c:317:	(menucommon_s *)&s_controls.lookup,
./q3_ui/ui_controls2.c:318:	(menucommon_s *)&s_controls.lookdown,
./q3_ui/ui_controls2.c:319:	(menucommon_s *)&s_controls.mouselook,
./q3_ui/ui_controls2.c:320:	(menucommon_s *)&s_controls.freelook,
./q3_ui/ui_controls2.c:321:	(menucommon_s *)&s_controls.centerview,
./q3_ui/ui_controls2.c:322:	(menucommon_s *)&s_controls.zoomview,
./q3_ui/ui_controls2.c:323:	(menucommon_s *)&s_controls.joyenable,
./q3_ui/ui_controls2.c:324:	(menucommon_s *)&s_controls.joythreshold,
./q3_ui/ui_controls2.c:329:	(menucommon_s *)&s_controls.showscores, 
./q3_ui/ui_controls2.c:330:	(menucommon_s *)&s_controls.useitem,
./q3_ui/ui_controls2.c:331:	(menucommon_s *)&s_controls.gesture,
./q3_ui/ui_controls2.c:332:	(menucommon_s *)&s_controls.chat,
./q3_ui/ui_controls2.c:333:	(menucommon_s *)&s_controls.chat2,
./q3_ui/ui_controls2.c:334:	(menucommon_s *)&s_controls.chat3,
./q3_ui/ui_controls2.c:335:	(menucommon_s *)&s_controls.chat4,
./q3_ui/ui_startserver.c:1469:	Menu_AddItem( &s_serveroptions.menu, (void*) &s_serveroptions.punkbuster );
./q3_ui/ui_sound.c:274:	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.banner );
./q3_ui/ui_sound.c:275:	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.framel );
./q3_ui/ui_sound.c:276:	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.framer );
./q3_ui/ui_sound.c:277:	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.graphics );
./q3_ui/ui_sound.c:278:	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.display );
./q3_ui/ui_sound.c:279:	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.sound );
./q3_ui/ui_sound.c:280:	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.network );
./q3_ui/ui_sound.c:281:	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.sfxvolume );
./q3_ui/ui_sound.c:282:	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.musicvolume );
./q3_ui/ui_sound.c:283:	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.quality );
./q3_ui/ui_sound.c:284://	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.a3d );
./q3_ui/ui_sound.c:285:	Menu_AddItem( &soundOptionsInfo.menu, ( void * ) &soundOptionsInfo.back );
./q3_ui/ui_display.c:227:	Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.banner );
./q3_ui/ui_display.c:228:	Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.framel );
./q3_ui/ui_display.c:229:	Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.framer );
./q3_ui/ui_display.c:230:	Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.graphics );
./q3_ui/ui_display.c:231:	Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.display );
./q3_ui/ui_display.c:232:	Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.sound );
./q3_ui/ui_display.c:233:	Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.network );
./q3_ui/ui_display.c:234:	Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.brightness );
./q3_ui/ui_display.c:235:	Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.screensize );
./q3_ui/ui_display.c:236:	Menu_AddItem( &displayOptionsInfo.menu, ( void * ) &displayOptionsInfo.back );
./q3_ui/ui_serverinfo.c:264:	Menu_AddItem( &s_serverinfo.menu, (void*) &s_serverinfo.banner );
./q3_ui/ui_serverinfo.c:265:	Menu_AddItem( &s_serverinfo.menu, (void*) &s_serverinfo.framel );
./q3_ui/ui_serverinfo.c:266:	Menu_AddItem( &s_serverinfo.menu, (void*) &s_serverinfo.framer );
./q3_ui/ui_serverinfo.c:267:	Menu_AddItem( &s_serverinfo.menu, (void*) &s_serverinfo.add );
./q3_ui/ui_serverinfo.c:268:	Menu_AddItem( &s_serverinfo.menu, (void*) &s_serverinfo.back );
./q3_ui/ui_connect.c:213:		Menu_AddItem( &s_ingame_menu, ( void * ) &s_customize_player_action );
./q3_ui/ui_login.c:178:	Menu_AddItem( &s_login.menu, (void*) &s_login.frame );
./q3_ui/ui_login.c:179:	Menu_AddItem( &s_login.menu, (void*) &s_login.name );
./q3_ui/ui_login.c:180:	Menu_AddItem( &s_login.menu, (void*) &s_login.name_box );
./q3_ui/ui_login.c:181:	Menu_AddItem( &s_login.menu, (void*) &s_login.password );
./q3_ui/ui_login.c:182:	Menu_AddItem( &s_login.menu, (void*) &s_login.password_box );
./q3_ui/ui_login.c:183:	Menu_AddItem( &s_login.menu, (void*) &s_login.login );
./q3_ui/ui_login.c:184:	Menu_AddItem( &s_login.menu, (void*) &s_login.cancel );
./q3_ui/ui_servers2.c:1555:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.banner );
./q3_ui/ui_servers2.c:1557:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.master );
./q3_ui/ui_servers2.c:1558:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.gametype );
./q3_ui/ui_servers2.c:1559:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.sortkey );
./q3_ui/ui_servers2.c:1560:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.showfull);
./q3_ui/ui_servers2.c:1561:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.showempty );
./q3_ui/ui_servers2.c:1563:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.mappic );
./q3_ui/ui_servers2.c:1564:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.list );
./q3_ui/ui_servers2.c:1565:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.status );
./q3_ui/ui_servers2.c:1566:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.statusbar );
./q3_ui/ui_servers2.c:1567:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.arrows );
./q3_ui/ui_servers2.c:1568:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.up );
./q3_ui/ui_servers2.c:1569:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.down );
./q3_ui/ui_servers2.c:1571:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.remove );
./q3_ui/ui_servers2.c:1572:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.back );
./q3_ui/ui_servers2.c:1573:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.specify );
./q3_ui/ui_servers2.c:1574:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.refresh );
./q3_ui/ui_servers2.c:1575:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.create );
./q3_ui/ui_servers2.c:1576:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.go );
./q3_ui/ui_servers2.c:1578:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.punkbuster );
./q3_ui/ui_servers2.c:1579:	Menu_AddItem( &g_arenaservers.menu, (void*) &g_arenaservers.pblogo );
./client/cl_cin.c:450:				blit8_32( (byte *)&vq8[(*data)*128], status[index], spl );
./client/cl_cin.c:469:							blit4_32( (byte *)&vq4[(*data)*32], status[index], spl );
./client/cl_cin.c:473:							blit2_32( (byte *)&vq2[(*data)*8], status[index], spl );
./client/cl_cin.c:475:							blit2_32( (byte *)&vq2[(*data)*8], status[index]+8, spl );
./client/cl_cin.c:477:							blit2_32( (byte *)&vq2[(*data)*8], status[index]+spl*2, spl );
./client/cl_cin.c:479:							blit2_32( (byte *)&vq2[(*data)*8], status[index]+spl*2+8, spl );
./client/cl_main.c:381:				                         (char *) &clc.voipOutgoingData[wpos+1],
./client/cl_main.c:2109:		NET_OutOfBandData( NS_CLIENT, clc.serverAddress, (byte *) &data[0], i+10 );
./client/snd_mix.c:262:		((short *)&volume_vec)[0] = leftvol;
./client/snd_mix.c:263:		((short *)&volume_vec)[1] = leftvol;
./client/snd_mix.c:264:		((short *)&volume_vec)[4] = leftvol;
./client/snd_mix.c:265:		((short *)&volume_vec)[5] = leftvol;
./client/snd_mix.c:266:		((short *)&volume_vec)[2] = rightvol;
./client/snd_mix.c:267:		((short *)&volume_vec)[3] = rightvol;
./client/snd_mix.c:268:		((short *)&volume_vec)[6] = rightvol;
./client/snd_mix.c:269:		((short *)&volume_vec)[7] = rightvol;
Comment 6 Vincent Cojot 2008-11-11 17:32:42 EST
Huge listing. :)
On Linux, I'm using this compiler:
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10)
On Solaris/SPARC, I'm using this compiler:
gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)

Both are from the 3.4 family.. I'm not too worried about the vm_*.c stuff since I think I'm forcing the 'interpreted'VM, right? (I'm using +set vm_ui 1).

I'll try to narrow it down..
Comment 7 Ludwig Nussel 2008-11-12 08:41:31 EST
I've reverted the previous Makefile patch. -fno-strict-aliasing is on again by default. I didn't notice as my packages build with that option explicitly.
Comment 8 Przemysław Iskra 2008-11-12 09:06:51 EST
-fno-strict-aliasing could be enabled for cgame/game/ui only. unions sometimes confuse q3lcc, while it cares nothing about strict aliasing, so different code (or macros) would have to be used for gcc and q3lcc versions.