Author: sewardj Date: 2007-11-06 22:47:45 +0000 (Tue, 06 Nov 2007) New Revision: 7105
Log: Build at -O2, and insert lots of ugly casts to stop gcc complaining about violations of strict aliasing rules. Whether these casts are really a reasonable "solution" is another matter. Modified: branches/THRCHECK/thrcheck/Makefile.am branches/THRCHECK/thrcheck/tc_main.c branches/THRCHECK/thrcheck/tc_wordset.c Modified: branches/THRCHECK/thrcheck/Makefile.am =================================================================== --- branches/THRCHECK/thrcheck/Makefile.am 2007-11-06 22:00:35 UTC (rev 7104) +++ branches/THRCHECK/thrcheck/Makefile.am 2007-11-06 22:47:45 UTC (rev 7105) @@ -23,8 +23,7 @@ VGPRELOAD_THRCHECK_SOURCES_COMMON = tc_intercepts.c vgpreload_thrcheck_x86_linux_so_SOURCES = $(VGPRELOAD_THRCHECK_SOURCES_COMMON) -vgpreload_thrcheck_x86_linux_so_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX) \ - -fno-omit-frame-pointer +vgpreload_thrcheck_x86_linux_so_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX) -O -g -fno-omit-frame-pointer vgpreload_thrcheck_x86_linux_so_CFLAGS = $(AM_CFLAGS_X86_LINUX) $(AM_CFLAGS_PIC) vgpreload_thrcheck_x86_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_X86_LINUX) vgpreload_thrcheck_x86_linux_so_LDFLAGS = \ @@ -32,7 +31,7 @@ $(LIBREPLACEMALLOC_LDFLAGS_X86_LINUX) vgpreload_thrcheck_amd64_linux_so_SOURCES = $(VGPRELOAD_THRCHECK_SOURCES_COMMON) -vgpreload_thrcheck_amd64_linux_so_CPPFLAGS = $(AM_CPPFLAGS_AMD64_LINUX) +vgpreload_thrcheck_amd64_linux_so_CPPFLAGS = $(AM_CPPFLAGS_AMD64_LINUX) -O -g vgpreload_thrcheck_amd64_linux_so_CFLAGS = $(AM_CFLAGS_AMD64_LINUX) $(AM_CFLAGS_PIC) vgpreload_thrcheck_amd64_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_AMD64_LINUX) vgpreload_thrcheck_amd64_linux_so_LDFLAGS = \ @@ -40,7 +39,7 @@ $(LIBREPLACEMALLOC_LDFLAGS_AMD64_LINUX) vgpreload_thrcheck_ppc32_linux_so_SOURCES = $(VGPRELOAD_THRCHECK_SOURCES_COMMON) -vgpreload_thrcheck_ppc32_linux_so_CPPFLAGS = $(AM_CPPFLAGS_PPC32_LINUX) +vgpreload_thrcheck_ppc32_linux_so_CPPFLAGS = $(AM_CPPFLAGS_PPC32_LINUX) -O -g vgpreload_thrcheck_ppc32_linux_so_CFLAGS = $(AM_CFLAGS_PPC32_LINUX) $(AM_CFLAGS_PIC) vgpreload_thrcheck_ppc32_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_PPC32_LINUX) vgpreload_thrcheck_ppc32_linux_so_LDFLAGS = \ @@ -48,7 +47,7 @@ $(LIBREPLACEMALLOC_LDFLAGS_PPC32_LINUX) vgpreload_thrcheck_ppc64_linux_so_SOURCES = $(VGPRELOAD_THRCHECK_SOURCES_COMMON) -vgpreload_thrcheck_ppc64_linux_so_CPPFLAGS = $(AM_CPPFLAGS_PPC64_LINUX) +vgpreload_thrcheck_ppc64_linux_so_CPPFLAGS = $(AM_CPPFLAGS_PPC64_LINUX) -O -g vgpreload_thrcheck_ppc64_linux_so_CFLAGS = $(AM_CFLAGS_PPC64_LINUX) $(AM_CFLAGS_PIC) vgpreload_thrcheck_ppc64_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_PPC64_LINUX) vgpreload_thrcheck_ppc64_linux_so_LDFLAGS = \ @@ -56,7 +55,7 @@ $(LIBREPLACEMALLOC_LDFLAGS_PPC64_LINUX) vgpreload_thrcheck_ppc32_aix5_so_SOURCES = $(VGPRELOAD_THRCHECK_SOURCES_COMMON) -vgpreload_thrcheck_ppc32_aix5_so_CPPFLAGS = $(AM_CPPFLAGS_PPC32_AIX5) +vgpreload_thrcheck_ppc32_aix5_so_CPPFLAGS = $(AM_CPPFLAGS_PPC32_AIX5) -O -g vgpreload_thrcheck_ppc32_aix5_so_CFLAGS = $(AM_CFLAGS_PPC32_AIX5) $(AM_CFLAGS_PIC) vgpreload_thrcheck_ppc32_aix5_so_DEPENDENCIES = $(LIBREPLACEMALLOC_PPC32_AIX5) vgpreload_thrcheck_ppc32_aix5_so_LDFLAGS = \ @@ -64,7 +63,7 @@ $(LIBREPLACEMALLOC_LDFLAGS_PPC32_AIX5) vgpreload_thrcheck_ppc64_aix5_so_SOURCES = $(VGPRELOAD_THRCHECK_SOURCES_COMMON) -vgpreload_thrcheck_ppc64_aix5_so_CPPFLAGS = $(AM_CPPFLAGS_PPC64_AIX5) +vgpreload_thrcheck_ppc64_aix5_so_CPPFLAGS = $(AM_CPPFLAGS_PPC64_AIX5) -O -g vgpreload_thrcheck_ppc64_aix5_so_CFLAGS = $(AM_CFLAGS_PPC64_AIX5) $(AM_CFLAGS_PIC) vgpreload_thrcheck_ppc64_aix5_so_DEPENDENCIES = $(LIBREPLACEMALLOC_PPC64_AIX5) vgpreload_thrcheck_ppc64_aix5_so_LDFLAGS = \ @@ -75,42 +74,42 @@ thrcheck_x86_linux_SOURCES = $(THRCHECK_SOURCES_COMMON) thrcheck_x86_linux_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX) -thrcheck_x86_linux_CFLAGS = $(AM_CFLAGS_X86_LINUX) -fomit-frame-pointer +thrcheck_x86_linux_CFLAGS = $(AM_CFLAGS_X86_LINUX) -O2 thrcheck_x86_linux_DEPENDENCIES = $(COREGRIND_LIBS_X86_LINUX) thrcheck_x86_linux_LDADD = $(TOOL_LDADD_X86_LINUX) thrcheck_x86_linux_LDFLAGS = $(TOOL_LDFLAGS_X86_LINUX) thrcheck_amd64_linux_SOURCES = $(THRCHECK_SOURCES_COMMON) thrcheck_amd64_linux_CPPFLAGS = $(AM_CPPFLAGS_AMD64_LINUX) -thrcheck_amd64_linux_CFLAGS = $(AM_CFLAGS_AMD64_LINUX) +thrcheck_amd64_linux_CFLAGS = $(AM_CFLAGS_AMD64_LINUX) -O2 thrcheck_amd64_linux_DEPENDENCIES = $(COREGRIND_LIBS_AMD64_LINUX) thrcheck_amd64_linux_LDADD = $(TOOL_LDADD_AMD64_LINUX) thrcheck_amd64_linux_LDFLAGS = $(TOOL_LDFLAGS_AMD64_LINUX) thrcheck_ppc32_linux_SOURCES = $(THRCHECK_SOURCES_COMMON) thrcheck_ppc32_linux_CPPFLAGS = $(AM_CPPFLAGS_PPC32_LINUX) -thrcheck_ppc32_linux_CFLAGS = $(AM_CFLAGS_PPC32_LINUX) +thrcheck_ppc32_linux_CFLAGS = $(AM_CFLAGS_PPC32_LINUX) -O2 thrcheck_ppc32_linux_DEPENDENCIES = $(COREGRIND_LIBS_PPC32_LINUX) thrcheck_ppc32_linux_LDADD = $(TOOL_LDADD_PPC32_LINUX) thrcheck_ppc32_linux_LDFLAGS = $(TOOL_LDFLAGS_PPC32_LINUX) thrcheck_ppc64_linux_SOURCES = $(THRCHECK_SOURCES_COMMON) thrcheck_ppc64_linux_CPPFLAGS = $(AM_CPPFLAGS_PPC64_LINUX) -thrcheck_ppc64_linux_CFLAGS = $(AM_CFLAGS_PPC64_LINUX) +thrcheck_ppc64_linux_CFLAGS = $(AM_CFLAGS_PPC64_LINUX) -O2 thrcheck_ppc64_linux_DEPENDENCIES = $(COREGRIND_LIBS_PPC64_LINUX) thrcheck_ppc64_linux_LDADD = $(TOOL_LDADD_PPC64_LINUX) thrcheck_ppc64_linux_LDFLAGS = $(TOOL_LDFLAGS_PPC64_LINUX) thrcheck_ppc32_aix5_SOURCES = $(THRCHECK_SOURCES_COMMON) thrcheck_ppc32_aix5_CPPFLAGS = $(AM_CPPFLAGS_PPC32_AIX5) -thrcheck_ppc32_aix5_CFLAGS = $(AM_CFLAGS_PPC32_AIX5) +thrcheck_ppc32_aix5_CFLAGS = $(AM_CFLAGS_PPC32_AIX5) -O2 thrcheck_ppc32_aix5_DEPENDENCIES = $(COREGRIND_LIBS_PPC32_AIX5) thrcheck_ppc32_aix5_LDADD = $(TOOL_LDADD_PPC32_AIX5) thrcheck_ppc32_aix5_LDFLAGS = $(TOOL_LDFLAGS_PPC32_AIX5) thrcheck_ppc64_aix5_SOURCES = $(THRCHECK_SOURCES_COMMON) thrcheck_ppc64_aix5_CPPFLAGS = $(AM_CPPFLAGS_PPC64_AIX5) -thrcheck_ppc64_aix5_CFLAGS = $(AM_CFLAGS_PPC64_AIX5) +thrcheck_ppc64_aix5_CFLAGS = $(AM_CFLAGS_PPC64_AIX5) -O2 thrcheck_ppc64_aix5_DEPENDENCIES = $(COREGRIND_LIBS_PPC64_AIX5) thrcheck_ppc64_aix5_LDADD = $(TOOL_LDADD_PPC64_AIX5) thrcheck_ppc64_aix5_LDFLAGS = $(TOOL_LDFLAGS_PPC64_AIX5) Modified: branches/THRCHECK/thrcheck/tc_main.c =================================================================== --- branches/THRCHECK/thrcheck/tc_main.c 2007-11-06 22:00:35 UTC (rev 7104) +++ branches/THRCHECK/thrcheck/tc_main.c 2007-11-06 22:47:45 UTC (rev 7105) @@ -59,6 +59,13 @@ /*--- ---*/ /*----------------------------------------------------------------*/ +/* Note there are a whole bunch of ugly double casts of the form + (Word*)(void*)&p. These placate gcc at -O2. The obvious form + (Word*)&p causes gcc to complain that 'dereferencing a type-punned + pointer ill break strict-aliasing rules'. It stops complaining + when the intermediate void* type is inserted. Is this a reasonable + "fix"? I don't know. */ + // FIXME what is supposed to happen to locks in memory which // is relocated as a result of client realloc? @@ -623,7 +630,7 @@ Thread* thr; Word count; TC_(initIterBag)( bag ); - while (TC_(nextIterBag)( bag, (Word*)&thr, &count )) { + while (TC_(nextIterBag)( bag, (Word*)(void*)&thr, &count )) { if (count < 1) return False; if (!is_sane_Thread(thr)) return False; } @@ -818,7 +825,7 @@ } /* for each thread that holds this lock do ... */ TC_(initIterBag)( lk->heldBy ); - while (TC_(nextIterBag)( lk->heldBy, (Word*)&thr, NULL )) { + while (TC_(nextIterBag)( lk->heldBy, (Word*)(void*)&thr, NULL )) { tl_assert(is_sane_Thread(thr)); tl_assert(TC_(elemWS)( univ_lsets, thr->locksetA, (Word)lk )); @@ -1100,7 +1107,7 @@ Word count; VG_(printf)(" { "); TC_(initIterBag)( lk->heldBy ); - while (TC_(nextIterBag)( lk->heldBy, (Word*)&thr, &count )) + while (TC_(nextIterBag)( lk->heldBy, (Word*)(void*)&thr, &count )) VG_(printf)("%lu:%p ", count, thr); TC_(doneIterBag)( lk->heldBy ); VG_(printf)("}"); @@ -1134,7 +1141,8 @@ space(d); VG_(printf)("map_locks (%d entries) {\n", (Int)TC_(sizeFM)( map_locks )); TC_(initIterFM)( map_locks ); - while (TC_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )) { + while (TC_(nextIterFM)( map_locks, (Word*)(void*)&gla, + (Word*)(void*)&lk )) { space(d+3); VG_(printf)("guest %p -> Lock %p\n", gla, lk); } @@ -1181,7 +1189,8 @@ space(d); VG_(printf)("map_segments (%d entries) {\n", (Int)TC_(sizeFM)( map_segments )); TC_(initIterFM)( map_segments ); - while (TC_(nextIterFM)( map_segments, (Word*)&segid, (Word*)&seg )) { + while (TC_(nextIterFM)( map_segments, (Word*)(void*)&segid, + (Word*)(void*)&seg )) { space(d+3); VG_(printf)("segid 0x%x -> Segment %p\n", (UInt)segid, seg); } @@ -1300,7 +1309,8 @@ SecMap* sm; space(d); VG_(printf)("map_shmem_ShR_and_ShM_only {\n"); TC_(initIterFM)( map_shmem ); - while (TC_(nextIterFM)( map_shmem, (Word*)&ga, (Word*)&sm )) { + while (TC_(nextIterFM)( map_shmem, (Word*)(void*)&ga, + (Word*)(void*)&sm )) { pp_SecMap_shared( d+3, sm, ga ); } TC_(doneIterFM) ( map_shmem ); @@ -1511,7 +1521,8 @@ Bool found; Lock* oldlock = NULL; tl_assert(is_sane_ThreadId(tid)); - found = TC_(lookupFM)( map_locks, NULL, (Word*)&oldlock, (Word)ga ); + found = TC_(lookupFM)( map_locks, + NULL, (Word*)(void*)&oldlock, (Word)ga ); if (!found) { Lock* lock = mk_LockN(lkk, ga); lock->appeared_at = VG_(record_ExeContext)( tid, 0 ); @@ -1535,7 +1546,7 @@ { Bool found; Lock* lk = NULL; - found = TC_(lookupFM)( map_locks, NULL, (Word*)&lk, (Word)ga ); + found = TC_(lookupFM)( map_locks, NULL, (Word*)(void*)&lk, (Word)ga ); tl_assert(found ? lk != NULL : lk == NULL); if (found) { // check the relevant secondary map has .mbHasLocks? @@ -1548,7 +1559,8 @@ { Addr ga2 = 0; Lock* lk = NULL; - TC_(delFromFM)( map_locks, (Word*)&ga2, (Word*)&lk, (Word)ga ); + TC_(delFromFM)( map_locks, + (Word*)(void*)&ga2, (Word*)(void*)&lk, (Word)ga ); /* delFromFM produces the val which is being deleted, if it is found. So assert it is non-null; that in effect asserts that we are deleting a (ga, Lock) pair which actually exists. */ @@ -1571,7 +1583,8 @@ Bool found; Segment* seg = NULL; tl_assert( is_sane_SegmentID(segid) ); - found = TC_(lookupFM)( map_segments, NULL, (Word*)&seg, (Word)segid ); + found = TC_(lookupFM)( map_segments, + NULL, (Word*)(void*)&seg, (Word)segid ); tl_assert(found); tl_assert(seg != NULL); return seg; @@ -1582,7 +1595,8 @@ Bool found; Segment* seg = NULL; tl_assert( is_sane_SegmentID(segid) ); - found = TC_(lookupFM)( map_segments, NULL, (Word*)&seg, (Word)segid ); + found = TC_(lookupFM)( map_segments, + NULL, (Word*)(void*)&seg, (Word)segid ); if (!found) tl_assert(seg == NULL); return seg; } @@ -2332,7 +2346,7 @@ SecMap* sm = NULL; Addr gaKey = shmem__round_to_SecMap_base(ga); if (TC_(lookupFM)( map_shmem, - NULL/*keyP*/, (Word*)&sm, (Word)gaKey )) { + NULL/*keyP*/, (Word*)(void*)&sm, (Word)gaKey )) { /* Found; address of SecMap is in sm */ tl_assert(sm); } else { @@ -2353,7 +2367,8 @@ { SecMap* sm; Addr aKey = shmem__round_to_SecMap_base(a); - if (TC_(lookupFM)( map_shmem, NULL/*keyP*/, (Word*)&sm, (Word)aKey )) { + if (TC_(lookupFM)( map_shmem, + NULL/*keyP*/, (Word*)(void*)&sm, (Word)aKey )) { /* Found */ return sm->mbHasLocks; } else { @@ -2366,7 +2381,8 @@ SecMap* sm; Addr aKey = shmem__round_to_SecMap_base(a); tl_assert(b == False || b == True); - if (TC_(lookupFM)( map_shmem, NULL/*keyP*/, (Word*)&sm, (Word)aKey )) { + if (TC_(lookupFM)( map_shmem, + NULL/*keyP*/, (Word*)(void*)&sm, (Word)aKey )) { /* Found; address of SecMap is in sm */ } else { /* create a new one */ @@ -2382,7 +2398,8 @@ SecMap* sm; Addr aKey = shmem__round_to_SecMap_base(a); tl_assert(b == False || b == True); - if (TC_(lookupFM)( map_shmem, NULL/*keyP*/, (Word*)&sm, (Word)aKey )) { + if (TC_(lookupFM)( map_shmem, + NULL/*keyP*/, (Word*)(void*)&sm, (Word)aKey )) { /* Found; address of SecMap is in sm */ } else { /* create a new one */ @@ -2541,7 +2558,8 @@ // for each entry (gla, lk) in map_locks // gla == lk->guest_addr TC_(initIterFM)( map_locks ); - while (TC_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )) { + while (TC_(nextIterFM)( map_locks, + (Word*)(void*)&gla, (Word*)(void*)&lk )) { if (lk->guestaddr != gla) BAD("2"); } TC_(doneIterFM)( map_locks ); @@ -2563,7 +2581,8 @@ Thread* thr; Word count; TC_(initIterBag)( lk->heldBy ); - while (TC_(nextIterBag)( lk->heldBy, (Word*)&thr, &count )) { + while (TC_(nextIterBag)( lk->heldBy, + (Word*)(void*)&thr, &count )) { // is_sane_LockN above ensures these tl_assert(count >= 1); tl_assert(is_sane_Thread(thr)); @@ -2653,7 +2672,8 @@ Addr* valid_tags; TC_(initIterFM)( map_shmem ); // for sm in SecMaps { - while (TC_(nextIterFM)( map_shmem, (Word*)&smga, (Word*)&sm )) { + while (TC_(nextIterFM)( map_shmem, + (Word*)(void*)&smga, (Word*)(void*)&sm )) { SecMapIter itr; UInt* w32p; Bool mbHasShared = False; @@ -2923,7 +2943,8 @@ { ExeContext* ec_hint = NULL; if (ga_to_lastlock != NULL - && TC_(lookupFM)(ga_to_lastlock, NULL, (Word*)&ec_hint, ga)) { + && TC_(lookupFM)(ga_to_lastlock, + NULL, (Word*)(void*)&ec_hint, ga)) { tl_assert(ec_hint != NULL); return ec_hint; } else { @@ -4920,7 +4941,8 @@ /* FIXME: don't iterate over the complete lock set */ TC_(initIterFM)( map_locks ); - while (TC_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )) { + while (TC_(nextIterFM)( map_locks, + (Word*)(void*)&gla, (Word*)(void*)&lk )) { tl_assert(is_sane_LockN(lk)); if (gla < firstA || gla > lastA) continue; @@ -4968,7 +4990,8 @@ UInt* w32p; TC_(initIterFM)( map_shmem ); - while (TC_(nextIterFM)( map_shmem, (Word*)&ga, (Word*)&sm )) { + while (TC_(nextIterFM)( map_shmem, + (Word*)(void*)&ga, (Word*)(void*)&sm )) { tl_assert(sm); stats_SMs++; /* Skip this SecMap if the summary bit indicates it is safe to @@ -5631,7 +5654,8 @@ stats_SMs = stats_SMs_scanned = stats_reExcls = 0; TC_(initIterFM)( map_shmem ); - while (TC_(nextIterFM)( map_shmem, (Word*)&ga, (Word*)&sm )) { + while (TC_(nextIterFM)( map_shmem, + (Word*)(void*)&ga, (Word*)(void*)&sm )) { SecMapIter itr; UInt* w32p; tl_assert(sm); @@ -6126,7 +6150,8 @@ edge back to it. */ signalling_seg = NULL; found = TC_(lookupFM)( map_cond_to_Segment, - NULL, (Word*)&signalling_seg, (Word)cond ); + NULL, (Word*)(void*)&signalling_seg, + (Word)cond ); if (found) { tl_assert(is_sane_Segment(signalling_seg)); tl_assert(new_seg->prev); @@ -6321,7 +6346,7 @@ tl_assert(seg); map_sem_to_Segment_stack_INIT(); if (TC_(lookupFM)( map_sem_to_Segment_stack, - NULL, (Word*)&xa, (Word)sem )) { + NULL, (Word*)(void*)&xa, (Word)sem )) { tl_assert(xa); VG_(addToXA)( xa, &seg ); } else { @@ -6336,7 +6361,7 @@ Segment* seg; map_sem_to_Segment_stack_INIT(); if (TC_(lookupFM)( map_sem_to_Segment_stack, - NULL, (Word*)&xa, (Word)sem )) { + NULL, (Word*)(void*)&xa, (Word)sem )) { /* xa is the stack for this semaphore. */ Word sz = VG_(sizeXA)( xa ); tl_assert(sz >= 0); @@ -6544,7 +6569,8 @@ TC_(initIterFM)( laog ); me = NULL; links = NULL; - while (TC_(nextIterFM)( laog, (Word*)&me, (Word*)&links )) { + while (TC_(nextIterFM)( laog, (Word*)(void*)&me, + (Word*)(void*)&links )) { tl_assert(me); tl_assert(links); VG_(printf)(" node %p:\n", me); @@ -6581,7 +6607,7 @@ /* Update the out edges for src */ keyW = 0; links = NULL; - if (TC_(lookupFM)( laog, &keyW, (Word*)&links, (Word)src )) { + if (TC_(lookupFM)( laog, &keyW, (Word*)(void*)&links, (Word)src )) { WordSetID outs_new; tl_assert(links); tl_assert(keyW == (Word)src); @@ -6597,7 +6623,7 @@ /* Update the in edges for dst */ keyW = 0; links = NULL; - if (TC_(lookupFM)( laog, &keyW, (Word*)&links, (Word)dst )) { + if (TC_(lookupFM)( laog, &keyW, (Word*)(void*)&links, (Word)dst )) { WordSetID inns_new; tl_assert(links); tl_assert(keyW == (Word)dst); @@ -6648,7 +6674,7 @@ /* Update the out edges for src */ keyW = 0; links = NULL; - if (TC_(lookupFM)( laog, &keyW, (Word*)&links, (Word)src )) { + if (TC_(lookupFM)( laog, &keyW, (Word*)(void*)&links, (Word)src )) { tl_assert(links); tl_assert(keyW == (Word)src); links->outs = TC_(delFromWS)( univ_laog, links->outs, (Word)dst ); @@ -6656,7 +6682,7 @@ /* Update the in edges for dst */ keyW = 0; links = NULL; - if (TC_(lookupFM)( laog, &keyW, (Word*)&links, (Word)dst )) { + if (TC_(lookupFM)( laog, &keyW, (Word*)(void*)&links, (Word)dst )) { tl_assert(links); tl_assert(keyW == (Word)dst); links->inns = TC_(delFromWS)( univ_laog, links->inns, (Word)src ); @@ -6669,7 +6695,7 @@ LAOGLinks* links; keyW = 0; links = NULL; - if (TC_(lookupFM)( laog, &keyW, (Word*)&links, (Word)lk )) { + if (TC_(lookupFM)( laog, &keyW, (Word*)(void*)&links, (Word)lk )) { tl_assert(links); tl_assert(keyW == (Word)lk); return links->outs; @@ -6684,7 +6710,7 @@ LAOGLinks* links; keyW = 0; links = NULL; - if (TC_(lookupFM)( laog, &keyW, (Word*)&links, (Word)lk )) { + if (TC_(lookupFM)( laog, &keyW, (Word*)(void*)&links, (Word)lk )) { tl_assert(links); tl_assert(keyW == (Word)lk); return links->inns; @@ -6705,7 +6731,8 @@ me = NULL; links = NULL; if (0) VG_(printf)("laog sanity check\n"); - while (TC_(nextIterFM)( laog, (Word*)&me, (Word*)&links )) { + while (TC_(nextIterFM)( laog, (Word*)(void*)&me, + (Word*)(void*)&links )) { tl_assert(me); tl_assert(links); TC_(getPayloadWS)( &ws_words, &ws_size, univ_laog, links->inns ); @@ -6838,7 +6865,8 @@ key.src_ec = NULL; key.dst_ec = NULL; found = NULL; - if (TC_(lookupFM)( laog_exposition, (Word*)&found, NULL, (Word)&key )) { + if (TC_(lookupFM)( laog_exposition, + (Word*)(void*)&found, NULL, (Word)&key )) { tl_assert(found != &key); tl_assert(found->src_ga == key.src_ga); tl_assert(found->dst_ga == key.dst_ga); @@ -7463,7 +7491,7 @@ (void*)args[1]); map_pthread_t_to_Thread_INIT(); found = TC_(lookupFM)( map_pthread_t_to_Thread, - NULL, (Word*)&thr_q, (Word)args[1] ); + NULL, (Word*)(void*)&thr_q, (Word)args[1] ); /* Can this fail? It would mean that our pthread_join wrapper observed a successful join on args[1] yet that thread never existed (or at least, it never lodged an @@ -7614,7 +7642,8 @@ string_table = TC_(newFM)( tc_zalloc, tc_free, string_table_cmp ); tl_assert(string_table); } - if (TC_(lookupFM)( string_table, NULL, (Word*)©, (Word)str )) { + if (TC_(lookupFM)( string_table, + NULL, (Word*)(void*)©, (Word)str )) { tl_assert(copy); if (0) VG_(printf)("string_table_strdup: %p -> %p\n", str, copy ); return copy; @@ -7648,7 +7677,7 @@ yaWFM = TC_(newFM)( tc_zalloc, tc_free, lock_unique_cmp ); tl_assert(yaWFM); } - if (!TC_(lookupFM)( yaWFM, NULL, (Word*)&lkp, (Word)lkn)) { + if (!TC_(lookupFM)( yaWFM, NULL, (Word*)(void*)&lkp, (Word)lkn)) { lkp = tc_zalloc( sizeof(Lock) ); *lkp = *lkn; lkp->admin = NULL; Modified: branches/THRCHECK/thrcheck/tc_wordset.c =================================================================== --- branches/THRCHECK/thrcheck/tc_wordset.c 2007-11-06 22:00:35 UTC (rev 7104) +++ branches/THRCHECK/thrcheck/tc_wordset.c 2007-11-06 22:47:45 UTC (rev 7105) @@ -281,7 +281,8 @@ causes failures on a 64-bit platform. */ tl_assert(wv_new->owner == wsu); have = TC_(lookupFM)( wsu->vec2ix, - (Word*)&wv_old, (Word*)&ix_old, (Word)wv_new ); + (Word*)(void*)&wv_old, (Word*)&ix_old, + (Word)wv_new ); if (have) { tl_assert(wv_old != wv_new); tl_assert(wv_old); ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Valgrind-developers mailing list Valgrind-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/valgrind-developers