You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
1
(6) |
2
(7) |
|
3
(12) |
4
(9) |
5
(12) |
6
(9) |
7
(18) |
8
(10) |
9
(17) |
|
10
(15) |
11
(22) |
12
(16) |
13
(18) |
14
(9) |
15
(14) |
16
(18) |
|
17
(24) |
18
(11) |
19
(15) |
20
(29) |
21
(19) |
22
(20) |
23
(9) |
|
24
(25) |
25
(25) |
26
(38) |
27
(22) |
28
(16) |
29
(17) |
|
|
From: Julian S. <js...@ac...> - 2008-02-15 23:01:01
|
Having just chased around a signedness problem in Helgrind (resulting in r7409) I tried to rebuild with -Wsign-compare in AM_CFLAGS_BASE in Makefile.flags.am. This makes gcc complain whenever a signed and unsigned value are compared. I fixed a bunch of resulting complaints in hg_wordfm.c, and found it made me more aware of which values should be signed and which should be unsigned. This I think is a good thing -- it removes one more source of potential obscure bugs, at compile time. I'm inclined to add it permanently, but the problem is it causes about 460 lines of warnings, as shown below. I'm sure most of these are trivial and could easily be fixed. Does anybody have any experience with the desirability/usefulness of -Wsign-compare? J Making all in include Making all in vki Making all in coregrind m_execontext.c: In function ‘init_ExeContext_storage’: m_execontext.c:131: warning: comparison between signed and unsigned m_execontext.c: In function ‘vgPlain_eq_ExeContext’: m_execontext.c:183: warning: comparison between signed and unsigned m_execontext.c:183: warning: comparison between signed and unsigned m_execontext.c:184: warning: comparison between signed and unsigned m_execontext.c:184: warning: comparison between signed and unsigned m_execontext.c:185: warning: comparison between signed and unsigned m_execontext.c:185: warning: comparison between signed and unsigned m_execontext.c:194: warning: comparison between signed and unsigned m_execontext.c:194: warning: comparison between signed and unsigned m_execontext.c:195: warning: comparison between signed and unsigned m_execontext.c:195: warning: comparison between signed and unsigned m_execontext.c:196: warning: comparison between signed and unsigned m_execontext.c:196: warning: comparison between signed and unsigned m_execontext.c: In function ‘record_ExeContext_wrk’: m_execontext.c:313: warning: comparison between signed and unsigned m_execontext.c:331: warning: comparison between signed and unsigned m_execontext.c:375: warning: comparison between signed and unsigned m_hashtable.c: In function ‘resize’: m_hashtable.c:124: warning: comparison between signed and unsigned m_hashtable.c: In function ‘vgPlain_HT_Next’: m_hashtable.c:247: warning: comparison between signed and unsigned m_libcbase.c: In function ‘vgPlain_strncpy_safely’: m_libcbase.c:283: warning: comparison between signed and unsigned m_libcbase.c: In function ‘vgPlain_strncpy’: m_libcbase.c:293: warning: comparison between signed and unsigned m_libcbase.c:297: warning: comparison between signed and unsigned m_libcbase.c: In function ‘vgPlain_strncmp’: m_libcbase.c:340: warning: comparison between signed and unsigned m_libcbase.c: In function ‘vgPlain_strncmp_ws’: m_libcbase.c:356: warning: comparison between signed and unsigned m_libcfile.c: In function ‘vgPlain_lseek’: m_libcfile.c:137: warning: signed and unsigned type in conditional expression m_libcfile.c: In function ‘vgPlain_fcntl’: m_libcfile.c:205: warning: signed and unsigned type in conditional expression m_libcfile.c: In function ‘vgPlain_get_startup_wd’: m_libcfile.c:281: warning: comparison between signed and unsigned m_libcfile.c: In function ‘vgPlain_readlink’: m_libcfile.c:292: warning: signed and unsigned type in conditional expression m_libcfile.c: In function ‘vgPlain_getdents’: m_libcfile.c:300: warning: signed and unsigned type in conditional expression m_libcfile.c: In function ‘vgPlain_check_executable’: m_libcfile.c:376: warning: comparison between signed and unsigned m_libcfile.c:382: warning: comparison between signed and unsigned m_libcfile.c: In function ‘my_socket’: m_libcfile.c:633: warning: signed and unsigned type in conditional expression m_libcfile.c: In function ‘my_connect’: m_libcfile.c:664: warning: signed and unsigned type in conditional expression m_libcfile.c: In function ‘vgPlain_write_socket’: m_libcfile.c:695: warning: signed and unsigned type in conditional expression m_libcfile.c: In function ‘vgPlain_getsockname’: m_libcfile.c:720: warning: signed and unsigned type in conditional expression m_libcfile.c: In function ‘vgPlain_getpeername’: m_libcfile.c:745: warning: signed and unsigned type in conditional expression m_libcfile.c: In function ‘vgPlain_getsockopt’: m_libcfile.c:774: warning: signed and unsigned type in conditional expression m_libcproc.c: In function ‘vgPlain_waitpid’: m_libcproc.c:230: warning: signed and unsigned type in conditional expression m_libcproc.c: In function ‘vgPlain_getrlimit’: m_libcproc.c:349: warning: signed and unsigned type in conditional expression m_libcproc.c: In function ‘vgPlain_setrlimit’: m_libcproc.c:359: warning: signed and unsigned type in conditional expression m_libcsignal.c: In function ‘vgPlain_sigtimedwait_zero’: m_libcsignal.c:209: warning: signed and unsigned type in conditional expression m_machine.c: In function ‘vgPlain_get_shadow_regs_area’: m_machine.c:91: warning: comparison between signed and unsigned m_machine.c: In function ‘vgPlain_set_shadow_regs_area’: m_machine.c:106: warning: comparison between signed and unsigned m_main.c: In function ‘show_BB_profile’: m_main.c:1003: warning: comparison between signed and unsigned m_main.c:1026: warning: comparison between signed and unsigned m_stacktrace.c: In function ‘vgPlain_get_StackTrace2’: m_stacktrace.c:205: warning: comparison between signed and unsigned m_stacktrace.c: In function ‘vgPlain_apply_StackTrace’: m_stacktrace.c:520: warning: comparison between signed and unsigned m_syscall.c: In function ‘vgPlain_mk_SysRes_x86_linux’: m_syscall.c:61: warning: comparison between signed and unsigned m_syscall.c:61: warning: comparison between signed and unsigned m_syscall.c: In function ‘vgPlain_mk_SysRes_amd64_linux’: m_syscall.c:75: warning: comparison between signed and unsigned m_syscall.c:75: warning: comparison between signed and unsigned m_translate.c: In function ‘vgPlain_translate’: m_translate.c:1292: warning: comparison between signed and unsigned m_transtab.c: In function ‘vgPlain_add_to_transtab’: m_transtab.c:915: warning: comparison between signed and unsigned m_transtab.c: In function ‘sanity_check_redir_tt_tc’: m_transtab.c:1340: warning: comparison between signed and unsigned m_transtab.c: In function ‘vgPlain_add_to_unredir_transtab’: m_transtab.c:1371: warning: comparison between signed and unsigned m_transtab.c:1378: warning: comparison between signed and unsigned m_transtab.c:1380: warning: comparison between signed and unsigned m_transtab.c:1389: warning: comparison between signed and unsigned m_transtab.c:1400: warning: comparison between signed and unsigned m_transtab.c: In function ‘vgPlain_get_BB_profile’: m_transtab.c:1583: warning: comparison between signed and unsigned m_transtab.c:1613: warning: comparison between signed and unsigned m_transtab.c:1616: warning: comparison between signed and unsigned m_ume.c: In function ‘readelf’: m_ume.c:170: warning: comparison between signed and unsigned m_ume.c: In function ‘match_ELF’: m_ume.c:280: warning: comparison between signed and unsigned m_aspacemgr/aspacemgr-common.c: In function ‘vgModuleLocal_am_read’: m_aspacemgr/aspacemgr-common.c:240: warning: signed and unsigned type in conditional expression m_aspacemgr/aspacemgr-common.c: In function ‘vgModuleLocal_am_readlink’: m_aspacemgr/aspacemgr-common.c:252: warning: signed and unsigned type in conditional expression m_aspacemgr/aspacemgr-common.c: In function ‘vgPlain_am_alloc_VgStack’: m_aspacemgr/aspacemgr-common.c:345: warning: comparison between signed and unsigned m_aspacemgr/aspacemgr-common.c: In function ‘vgPlain_am_get_VgStack_unused_szB’: m_aspacemgr/aspacemgr-common.c:375: warning: comparison between signed and unsigned m_debuginfo/storage.c: In function ‘canonicaliseCFI’: m_debuginfo/storage.c:832: warning: comparison between signed and unsigned m_debuginfo/storage.c:859: warning: comparison between signed and unsigned m_debuginfo/debuginfo.c: In function ‘vgPlain_lookup_symbol_SLOW’: m_debuginfo/debuginfo.c:805: warning: comparison between signed and unsigned m_debuginfo/debuginfo.c: In function ‘vgPlain_use_CF_info’: m_debuginfo/debuginfo.c:1103: warning: comparison between signed and unsigned m_debuginfo/debuginfo.c: In function ‘vgPlain_seginfo_syms_getidx’: m_debuginfo/debuginfo.c:1348: warning: comparison between signed and unsigned m_coredump/coredump-elf.c: In function ‘make_elf_coredump’: m_coredump/coredump-elf.c:427: warning: comparison between signed and unsigned m_syswrap/syswrap-linux.c: In function ‘vgSysWrap_linux_sys_io_getevents_after’: m_syswrap/syswrap-linux.c:1284: warning: comparison between signed and unsigned m_syswrap/syswrap-linux.c: In function ‘vgSysWrap_linux_sys_io_submit_before’: m_syswrap/syswrap-linux.c:1317: warning: comparison between signed and unsigned m_syswrap/syswrap-linux.c: In function ‘vgSysWrap_linux_sys_openat_before’: m_syswrap/syswrap-linux.c:2472: warning: comparison between signed and unsigned m_debuginfo/readdwarf.c: In function ‘index_WordArray’: m_debuginfo/readdwarf.c:120: warning: comparison between signed and unsigned m_debuginfo/readdwarf.c: In function ‘read_dwarf2_lineblock’: m_debuginfo/readdwarf.c:499: warning: comparison between signed and unsigned m_debuginfo/readdwarf.c: In function ‘vgModuleLocal_read_debuginfo_dwarf2’: m_debuginfo/readdwarf.c:1170: warning: comparison between signed and unsigned m_syswrap/syswrap-generic.c: In function ‘vgModuleLocal_record_fd_open_with_given_name’: m_syswrap/syswrap-generic.c:525: warning: comparison between signed and unsigned m_syswrap/syswrap-generic.c: In function ‘do_hacky_preopened’: m_syswrap/syswrap-generic.c:687: warning: comparison between signed and unsigned m_syswrap/syswrap-generic.c: In function ‘vgPlain_init_preopened_fds’: m_syswrap/syswrap-generic.c:714: warning: comparison between signed and unsigned m_syswrap/syswrap-generic.c: In function ‘vgSysWrap_generic_sys_setrlimit_before’: m_syswrap/syswrap-generic.c:5426: warning: comparison between signed and unsigned m_syswrap/syswrap-generic.c:5427: warning: comparison between signed and unsigned Making all in . Making all in tests Making all in perf Making all in auxprogs Making all in memcheck Making all in . mc_leakcheck.c: In function ‘find_active_shadows’: mc_leakcheck.c:621: warning: comparison between signed and unsigned mc_leakcheck.c:630: warning: comparison between signed and unsigned mc_main.c: In function ‘mc_pre_reg_read’: mc_main.c:2598: warning: comparison between signed and unsigned mc_main.c: In function ‘mc_pp_AddrInfo’: mc_main.c:2816: warning: comparison between signed and unsigned mc_main.c: In function ‘mc_error_matches_suppression’: mc_main.c:3530: warning: comparison between signed and unsigned mc_main.c:3541: warning: comparison between signed and unsigned mc_main.c: In function ‘init_shadow_memory’: mc_main.c:4250: warning: comparison between signed and unsigned mc_main.c: In function ‘mc_expensive_sanity_check’: mc_main.c:4334: warning: comparison between signed and unsigned mc_translate.c: In function ‘findShadowTmp’: mc_translate.c:188: warning: comparison between signed and unsigned mc_translate.c: In function ‘newShadowTmp’: mc_translate.c:205: warning: comparison between signed and unsigned mc_translate.c: In function ‘isOriginalAtom’: mc_translate.c:231: warning: comparison between signed and unsigned mc_translate.c: In function ‘isShadowAtom’: mc_translate.c:242: warning: comparison between signed and unsigned priv/ir/irdefs.c: In function ‘ppIRTypeEnv’: priv/ir/irdefs.c:818: warning: comparison between signed and unsigned priv/ir/irdefs.c: In function ‘typeOfIRTemp’: priv/ir/irdefs.c:1882: warning: comparison between signed and unsigned priv/ir/irdefs.c: In function ‘useBeforeDef_Temp’: priv/ir/irdefs.c:2129: warning: comparison between signed and unsigned priv/ir/irdefs.c: In function ‘sanityCheckIRSB’: priv/ir/irdefs.c:2598: warning: comparison between signed and unsigned priv/ir/irdefs.c:2610: warning: comparison between signed and unsigned priv/main/vex_main.c: In function ‘LibVEX_Translate’: priv/main/vex_main.c:470: warning: comparison between signed and unsigned priv/host-amd64/hdefs.c: In function ‘fitsIn32Bits’: priv/host-amd64/hdefs.c:2003: warning: comparison between signed and unsigned priv/host-ppc/hdefs.c: In function ‘getAllocableRegs_PPC’: priv/host-ppc/hdefs.c:281: warning: comparison between signed and unsigned priv/host-ppc/hdefs.c: In function ‘emit_PPCInstr’: priv/host-ppc/hdefs.c:2561: warning: signed and unsigned type in conditional expression priv/host-ppc/hdefs.c:2634: warning: signed and unsigned type in conditional expression priv/host-x86/isel.c: In function ‘lookupIRTemp’: priv/host-x86/isel.c:189: warning: comparison between signed and unsigned priv/host-x86/isel.c: In function ‘lookupIRTemp64’: priv/host-x86/isel.c:196: warning: comparison between signed and unsigned priv/host-amd64/isel.c: In function ‘lookupIRTemp’: priv/host-amd64/isel.c:157: warning: comparison between signed and unsigned priv/host-amd64/isel.c: In function ‘lookupIRTemp128’: priv/host-amd64/isel.c:165: warning: comparison between signed and unsigned priv/host-amd64/isel.c: In function ‘fitsIn32Bits’: priv/host-amd64/isel.c:278: warning: comparison between signed and unsigned priv/host-arm/isel.c: In function ‘lookupIRTemp’: priv/host-arm/isel.c:97: warning: comparison between signed and unsigned priv/host-ppc/isel.c: In function ‘lookupIRTemp’: priv/host-ppc/isel.c:290: warning: comparison between signed and unsigned priv/host-ppc/isel.c: In function ‘lookupIRTempPair’: priv/host-ppc/isel.c:299: warning: comparison between signed and unsigned priv/host-generic/reg_alloc2.c: In function ‘doRegisterAllocation’: priv/host-generic/reg_alloc2.c:994: warning: comparison between signed and unsigned priv/host-generic/reg_alloc2.c:1040: warning: comparison between signed and unsigned priv/host-generic/reg_alloc2.c:1041: warning: comparison between signed and unsigned priv/host-generic/reg_alloc2.c:1065: warning: comparison between signed and unsigned Making all in tests Making all in . Making all in amd64 Making all in docs Making all in cachegrind Making all in . Making all in tests Making all in . Making all in amd64 Making all in docs Making all in callgrind Making all in . main.c: In function ‘vgCallgrind_instrument’: main.c:676: warning: comparison between signed and unsigned main.c:676: warning: comparison between signed and unsigned main.c:688: warning: comparison between signed and unsigned bb.c: In function ‘vgCallgrind_init_bb_hash’: bb.c:46: warning: comparison between signed and unsigned bb.c: In function ‘resize_bb_table’: bb.c:80: warning: comparison between signed and unsigned bb.c: In function ‘obj_of_address’: bb.c:215: warning: comparison between signed and unsigned bb.c:215: warning: comparison between signed and unsigned bbcc.c: In function ‘vgCallgrind_init_bbcc_hash’: bbcc.c:53: warning: comparison between signed and unsigned bbcc.c: In function ‘vgCallgrind_zero_bbcc’: bbcc.c:98: warning: comparison between signed and unsigned bbcc.c:100: warning: comparison between signed and unsigned bbcc.c: In function ‘vgCallgrind_forall_bbccs’: bbcc.c:116: warning: comparison between signed and unsigned bbcc.c: In function ‘resize_bbcc_hash’: bbcc.c:207: warning: comparison between signed and unsigned bbcc.c: In function ‘new_bbcc’: bbcc.c:282: warning: comparison between signed and unsigned bbcc.c:284: warning: comparison between signed and unsigned bbcc.c: In function ‘mangled_cxt’: bbcc.c:348: warning: comparison between signed and unsigned bbcc.c: In function ‘vgCallgrind_setup_bbcc’: bbcc.c:582: warning: comparison between signed and unsigned bbcc.c:815: warning: comparison between signed and unsigned debug.c: In function ‘print_mangled_cxt’: debug.c:68: warning: comparison between signed and unsigned debug.c: In function ‘vgCallgrind_print_bbcc_cost’: debug.c:343: warning: comparison between signed and unsigned debug.c:350: warning: comparison between signed and unsigned debug.c:358: warning: comparison between signed and unsigned debug.c:359: warning: comparison between signed and unsigned fn.c: In function ‘new_fn_node’: fn.c:314: warning: comparison between signed and unsigned fn.c: In function ‘vgCallgrind_get_fn_entry’: fn.c:560: warning: comparison between signed and unsigned fn.c:560: warning: comparison between signed and unsigned fn.c: In function ‘vgCallgrind_init_fn_array’: fn.c:571: warning: comparison between signed and unsigned fn.c:575: warning: comparison between signed and unsigned fn.c: In function ‘vgCallgrind_set_current_fn_array’: fn.c:598: warning: comparison between signed and unsigned fn.c: In function ‘resize_fn_array’: fn.c:618: warning: comparison between signed and unsigned callstack.c: In function ‘vgCallgrind_init_call_stack’: callstack.c:59: warning: comparison between signed and unsigned callstack.c: In function ‘ensure_stack_size’: callstack.c:93: warning: comparison between signed and unsigned callstack.c:97: warning: comparison between signed and unsigned callstack.c:102: warning: comparison between signed and unsigned callstack.c: In function ‘vgCallgrind_push_call_stack’: callstack.c:248: warning: comparison between signed and unsigned callstack.c:248: warning: comparison between signed and unsigned context.c: In function ‘vgCallgrind_init_cxt_table’: context.c:79: warning: comparison between signed and unsigned context.c: In function ‘new_cxt’: context.c:204: warning: comparison between signed and unsigned context.c:206: warning: comparison between signed and unsigned context.c: In function ‘vgCallgrind_push_cxt’: context.c:282: warning: signed and unsigned type in conditional expression context.c:288: warning: comparison between signed and unsigned context.c:288: warning: comparison between signed and unsigned context.c:299: warning: comparison between signed and unsigned context.c:303: warning: comparison between signed and unsigned context.c:329: warning: signed and unsigned type in conditional expression dump.c: In function ‘print_mangled_fn’: dump.c:292: warning: comparison between signed and unsigned dump.c:320: warning: comparison between signed and unsigned dump.c: In function ‘print_fn_pos’: dump.c:344: warning: comparison between signed and unsigned dump.c:398: warning: comparison between signed and unsigned dump.c: In function ‘fprint_bbcc’: dump.c:799: warning: comparison between signed and unsigned dump.c:831: warning: comparison between signed and unsigned dump.c:854: warning: comparison between signed and unsigned dump.c:855: warning: comparison between signed and unsigned dump.c:898: warning: comparison between signed and unsigned dump.c:898: warning: comparison between signed and unsigned dump.c:922: warning: comparison between signed and unsigned dump.c: In function ‘my_cmp’: dump.c:960: warning: comparison between signed and unsigned dump.c:960: warning: comparison between signed and unsigned dump.c: In function ‘print_bbccs_of_thread’: dump.c:1520: warning: comparison between signed and unsigned dump.c:1553: warning: comparison between signed and unsigned jumps.c: In function ‘vgCallgrind_init_jcc_hash’: jumps.c:52: warning: comparison between signed and unsigned jumps.c: In function ‘resize_jcc_table’: jumps.c:99: warning: comparison between signed and unsigned Making all in tests Making all in . Making all in docs Making all in massif Making all in . ms_main.c: In function ‘ms_process_cmd_line_option’: ms_main.c:380: warning: comparison between signed and unsigned ms_main.c: In function ‘dup_XTree’: ms_main.c:644: warning: comparison between signed and unsigned ms_main.c:669: warning: comparison between signed and unsigned ms_main.c: In function ‘free_SXTree’: ms_main.c:705: warning: comparison between signed and unsigned ms_main.c: In function ‘sanity_check_SXTree’: ms_main.c:754: warning: comparison between signed and unsigned ms_main.c: In function ‘get_IPs’: ms_main.c:820: warning: comparison between signed and unsigned ms_main.c:846: warning: comparison between signed and unsigned ms_main.c: In function ‘get_XCon’: ms_main.c:877: warning: comparison between signed and unsigned ms_main.c: In function ‘update_XCon’: ms_main.c:944: warning: comparison between signed and unsigned ms_main.c:948: warning: comparison between signed and unsigned ms_main.c: In function ‘sanity_check_snapshots_array’: ms_main.c:1031: warning: comparison between signed and unsigned ms_main.c:1034: warning: comparison between signed and unsigned ms_main.c: In function ‘cull_snapshots’: ms_main.c:1119: warning: comparison between signed and unsigned ms_main.c:1130: warning: comparison between signed and unsigned ms_main.c:1131: warning: comparison between signed and unsigned ms_main.c:1134: warning: comparison between signed and unsigned ms_main.c:1145: warning: comparison between signed and unsigned ms_main.c:1165: warning: comparison between signed and unsigned ms_main.c:1194: warning: comparison between signed and unsigned ms_main.c:1214: warning: comparison between signed and unsigned ms_main.c: In function ‘maybe_take_snapshot’: ms_main.c:1320: warning: comparison between signed and unsigned ms_main.c:1366: warning: comparison between signed and unsigned ms_main.c: In function ‘update_heap_stats’: ms_main.c:1444: warning: comparison between signed and unsigned ms_main.c:1446: warning: comparison between signed and unsigned ms_main.c: In function ‘update_stack_stats’: ms_main.c:1694: warning: comparison between signed and unsigned ms_main.c: In function ‘pp_snapshot_SXPt’: ms_main.c:1965: warning: comparison between signed and unsigned ms_main.c: In function ‘write_snapshots_to_file’: ms_main.c:2078: warning: comparison between signed and unsigned ms_main.c: In function ‘ms_post_clo_init’: ms_main.c:2175: warning: comparison between signed and unsigned Making all in tests Making all in docs Making all in perf Making all in lackey Making all in . Making all in tests Making all in docs Making all in none Making all in . Making all in tests Making all in . Making all in amd64 Making all in docs Making all in helgrind Making all in . hg_main.c: In function ‘stepSecMapIter’: hg_main.c:478: warning: comparison between signed and unsigned hg_main.c: In function ‘locks__sanity_check’: hg_main.c:2565: warning: comparison between signed and unsigned hg_main.c: In function ‘segments__sanity_check’: hg_main.c:2641: warning: comparison between signed and unsigned hg_main.c: In function ‘shmem__sanity_check’: hg_main.c:2691: warning: comparison between signed and unsigned hg_main.c:2765: warning: comparison between signed and unsigned hg_main.c: In function ‘sequentialise_CacheLine’: hg_main.c:3837: warning: comparison between signed and unsigned hg_main.c: In function ‘evhH__pre_thread_releases_lock’: hg_main.c:5345: warning: comparison between signed and unsigned hg_main.c: In function ‘get_sorted_thread_set’: hg_main.c:8101: warning: comparison between signed and unsigned Making all in tests Making all in docs Making all in exp-omega Making all in . o_main.c: In function ‘o_reportCircularBlocks’: o_main.c:3282: warning: comparison between signed and unsigned o_main.c: In function ‘o_process_cmd_line_option’: o_main.c:3458: warning: comparison between signed and unsigned o_main.c:3461: warning: comparison between signed and unsigned o_main.c:3464: warning: comparison between signed and unsigned Making all in tests Making all in docs Making all in exp-drd Making all in . drd_barrier.c: In function ‘barrier_get_or_allocate’: drd_barrier.c:140: warning: comparison between signed and unsigned drd_barrier.c:148: warning: comparison between signed and unsigned drd_barrier.c: In function ‘barrier_get’: drd_barrier.c:171: warning: comparison between signed and unsigned drd_barrier.c: In function ‘barrier_thread_delete’: drd_barrier.c:257: warning: comparison between signed and unsigned drd_cond.c: In function ‘cond_get_or_allocate’: drd_cond.c:63: warning: comparison between signed and unsigned drd_cond.c:71: warning: comparison between signed and unsigned drd_cond.c: In function ‘cond_get’: drd_cond.c:121: warning: comparison between signed and unsigned drd_mutex.c: In function ‘mutex_get_or_allocate’: drd_mutex.c:100: warning: comparison between signed and unsigned drd_mutex.c:109: warning: comparison between signed and unsigned drd_mutex.c: In function ‘mutex_get’: drd_mutex.c:208: warning: comparison between signed and unsigned drd_mutex.c: In function ‘mutex_thread_delete’: drd_mutex.c:396: warning: comparison between signed and unsigned drd_semaphore.c: In function ‘semaphore_get_or_allocate’: drd_semaphore.c:84: warning: comparison between signed and unsigned drd_semaphore.c:92: warning: comparison between signed and unsigned drd_semaphore.c: In function ‘semaphore_get’: drd_semaphore.c:127: warning: comparison between signed and unsigned drd_thread.c: In function ‘thread_compute_minimum_vc’: drd_thread.c:539: warning: comparison between signed and unsigned drd_thread.c: In function ‘thread_compute_maximum_vc’: drd_thread.c:563: warning: comparison between signed and unsigned drd_thread.c: In function ‘thread_discard_ordered_segments’: drd_thread.c:613: warning: comparison between signed and unsigned Making all in tests Making all in . Making all in docs Making all in docs Making all in xml Making all in lib Making all in images Making all in internals |
|
From: Julian S. <js...@ac...> - 2008-02-15 22:29:49
|
I believe this bug is finally fixed by r7409.
J
On Monday 21 January 2008 13:27, Julian Seward wrote:
> On Monday 21 January 2008 11:08, Konstantin Serebryany wrote:
> > Hi Julian,
> >
> > I found out that this fix has an issue (which appears only in 32-bit
> > mode).
> >
> > + while (HG_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )
> > + && gla <= lastA) {
> >
> > This should look like
> > + while (HG_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )
> > + && (Word)gla <= (Word)lastA) {
>
> Good observation. Unfortunately I don't think this really fixes it.
>
> Consider on a 32-bit platform, we want to iterate over locks in the
> range
>
> Addr firstA = 0x70000000
> Addr lastA = 0x90000000 - 1
>
> (UWord)firstA = 1879048192
> (UWord)lastA = 2415919104
>
> (Word)firstA = 1879048192
> (Word)lastA = -1879048192
>
> Since the trees will be ordered by Word, this means we are asking to
> iterate over the range 1879048192 .. -1879048192, which is empty, and
> so the iteration loop will terminate immediately.
>
> I think the only fix is to change all the unboxed comparison stuff
> in WordFM to use unsigned Words. Maybe it would be better to change
> WordFM to used unsigned Words throughout.
>
> This also shows there is a specification problem in HG_(initIterAt).
> Using only HG_(initIter) and HG_(nextIter), we could iterate over
> all elements of the tree, in some order - it did not matter what.
> But HG_(initIterAt)(x) guarantees not to present any value < x;
> unfortunately we did not say how "<" is defined in the unboxed case.
>
> J
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> Valgrind-developers mailing list
> Val...@li...
> https://lists.sourceforge.net/lists/listinfo/valgrind-developers
|
|
From: <sv...@va...> - 2008-02-15 22:02:29
|
Author: sewardj
Date: 2008-02-15 22:02:30 +0000 (Fri, 15 Feb 2008)
New Revision: 7409
Log:
Try to sort out signedness problems in hg_wordfm.[ch], and do a bunch
of other tidying too.
* All these word-based abstractions (WordFM, WordSet, WordBag) now
operate on unsigned words (UWord), whereas they previously operated
on signed words (Word). This became a problem, when using unboxed
comparisons, with the introduction of HG_(initIterAtFM), which
allows iteration over parts of mappings. Iterating over a mapping in
increasing order of signed Word keys is not what callers expect when
iterating through maps whose keys representing addresses (Addr) since
Addr is unsigned, and causes logical problems and assertion
failures.
* Change various size-of-things types from signed to unsigned, and
make them consistently word sized. For example the return type
of HG_(sizeFM) used to be an Int, which never made any sense
(the size can't be negative, and, on a 64-bit platform, the
map could have more than 2G elements, in which case an Int can't
represent the result). So make the return value a UWord instead.
This should generally help avoid obscure overflow problems on 64-bit
platforms.
Modified:
trunk/helgrind/hg_main.c
trunk/helgrind/hg_wordfm.c
trunk/helgrind/hg_wordfm.h
trunk/helgrind/hg_wordset.c
trunk/helgrind/hg_wordset.h
Modified: trunk/helgrind/hg_main.c
===================================================================
--- trunk/helgrind/hg_main.c 2008-02-14 16:55:01 UTC (rev 7408)
+++ trunk/helgrind/hg_main.c 2008-02-15 22:02:30 UTC (rev 7409)
@@ -2516,7 +2516,7 @@
Char* how = "no error";
Thread* thr;
WordSetID wsA, wsW;
- Word* ls_words;
+ UWord* ls_words;
Word ls_size, i;
Lock* lk;
Segment* seg;
@@ -2676,7 +2676,7 @@
Word smga;
SecMap* sm;
Word i, j, ws_size, n_valid_tags;
- Word* ws_words;
+ UWord* ws_words;
Addr* valid_tags;
HG_(initIterFM)( map_shmem );
// for sm in SecMaps {
@@ -6614,7 +6614,7 @@
}
LAOGLinkExposition;
-static Word cmp_LAOGLinkExposition ( Word llx1W, Word llx2W ) {
+static Word cmp_LAOGLinkExposition ( UWord llx1W, UWord llx2W ) {
/* Compare LAOGLinkExposition*s by (src_ga,dst_ga) field pair. */
LAOGLinkExposition* llx1 = (LAOGLinkExposition*)llx1W;
LAOGLinkExposition* llx2 = (LAOGLinkExposition*)llx2W;
@@ -6631,7 +6631,7 @@
static void laog__show ( Char* who ) {
Word i, ws_size;
- Word* ws_words;
+ UWord* ws_words;
Lock* me;
LAOGLinks* links;
VG_(printf)("laog (requested by %s) {\n", who);
@@ -6791,7 +6791,7 @@
__attribute__((noinline))
static void laog__sanity_check ( Char* who ) {
Word i, ws_size;
- Word* ws_words;
+ UWord* ws_words;
Lock* me;
LAOGLinks* links;
if ( !laog )
@@ -6845,7 +6845,7 @@
Lock* here;
WordSetID succs;
Word succs_size;
- Word* succs_words;
+ UWord* succs_words;
//laog__sanity_check();
/* If the destination set is empty, we can never get there from
@@ -6897,7 +6897,7 @@
Lock* lk
)
{
- Word* ls_words;
+ UWord* ls_words;
Word ls_size, i;
Lock* other;
@@ -6982,7 +6982,7 @@
{
WordSetID preds, succs;
Word preds_size, succs_size, i, j;
- Word *preds_words, *succs_words;
+ UWord *preds_words, *succs_words;
preds = laog__preds( lk );
succs = laog__succs( lk );
@@ -7012,8 +7012,8 @@
WordSetID /* in univ_laog */ locksToDelete
)
{
- Word i, ws_size;
- Word* ws_words;
+ Word i, ws_size;
+ UWord* ws_words;
if (!laog)
laog = HG_(newFM)( hg_zalloc, hg_free, NULL/*unboxedcmp*/ );
@@ -7716,7 +7716,7 @@
/* maps (by value) strings to a copy of them in ARENA_TOOL */
static UWord stats__string_table_queries = 0;
static WordFM* string_table = NULL;
-static Word string_table_cmp ( Word s1, Word s2 ) {
+static Word string_table_cmp ( UWord s1, UWord s2 ) {
return (Word)VG_(strcmp)( (HChar*)s1, (HChar*)s2 );
}
static HChar* string_table_strdup ( HChar* str ) {
@@ -7744,7 +7744,7 @@
/* maps from Lock .unique fields to LockP*s */
static UWord stats__ga_LockN_to_P_queries = 0;
static WordFM* yaWFM = NULL;
-static Word lock_unique_cmp ( Word lk1W, Word lk2W )
+static Word lock_unique_cmp ( UWord lk1W, UWord lk2W )
{
Lock* lk1 = (Lock*)lk1W;
Lock* lk2 = (Lock*)lk2W;
@@ -8084,8 +8084,8 @@
static XArray* /* of Thread* */ get_sorted_thread_set ( WordSetID tset )
{
XArray* xa;
- Word* ts_words;
- Word ts_size, i;
+ UWord* ts_words;
+ UWord ts_size, i;
xa = VG_(newXA)( hg_zalloc, hg_free, sizeof(Thread*) );
tl_assert(xa);
HG_(getPayloadWS)( &ts_words, &ts_size, univ_tsets, tset );
Modified: trunk/helgrind/hg_wordfm.c
===================================================================
--- trunk/helgrind/hg_wordfm.c 2008-02-14 16:55:01 UTC (rev 7408)
+++ trunk/helgrind/hg_wordfm.c 2008-02-15 22:02:30 UTC (rev 7409)
@@ -82,8 +82,8 @@
/* One element of the AVL tree */
typedef
struct _AvlNode {
- Word key;
- Word val;
+ UWord key;
+ UWord val;
struct _AvlNode* child[2]; /* [0] is left subtree, [1] is right */
Char balance; /* do not make this unsigned */
}
@@ -91,7 +91,7 @@
typedef
struct {
- Word w;
+ UWord w;
Bool b;
}
MaybeWord;
@@ -102,14 +102,14 @@
AvlNode* root;
void* (*alloc_nofail)( SizeT );
void (*dealloc)(void*);
- Word (*kCmp)(Word,Word);
+ Word (*kCmp)(UWord,UWord);
AvlNode* nodeStack[WFM_STKMAX]; // Iterator node stack
Int numStack[WFM_STKMAX]; // Iterator num stack
Int stackTop; // Iterator stack pointer, one past end
};
/* forward */
-static Bool avl_removeroot_wrk(AvlNode** t, Word(*kCmp)(Word,Word));
+static Bool avl_removeroot_wrk(AvlNode** t, Word(*kCmp)(UWord,UWord));
/* Swing to the left. Warning: no balance maintainance. */
static void avl_swl ( AvlNode** root )
@@ -154,16 +154,16 @@
}
/* Find size of a non-NULL tree. */
-static Word size_avl_nonNull ( AvlNode* nd )
+static UWord size_avl_nonNull ( AvlNode* nd )
{
return 1 + (nd->child[0] ? size_avl_nonNull(nd->child[0]) : 0)
+ (nd->child[1] ? size_avl_nonNull(nd->child[1]) : 0);
}
-/* Signedly compare w1 and w2. If w1 < w2, produce a negative number;
- if w1 > w2 produce a positive number, and if w1 == w2 produce
- zero. */
-static inline Word cmp_signed_Words ( Word w1, Word w2 ) {
+/* Unsignedly compare w1 and w2. If w1 < w2, produce a negative
+ number; if w1 > w2 produce a positive number, and if w1 == w2
+ produce zero. */
+static inline Word cmp_unsigned_Words ( UWord w1, UWord w2 ) {
if (w1 < w2) return -1;
if (w1 > w2) return 1;
return 0;
@@ -179,7 +179,7 @@
Bool avl_insert_wrk ( AvlNode** rootp,
/*OUT*/MaybeWord* oldV,
AvlNode* a,
- Word (*kCmp)(Word,Word) )
+ Word (*kCmp)(UWord,UWord) )
{
Word cmpres;
@@ -196,8 +196,8 @@
}
cmpres = kCmp ? /*boxed*/ kCmp( (*rootp)->key, a->key )
- : /*unboxed*/ cmp_signed_Words( (Word)(*rootp)->key,
- (Word)a->key );
+ : /*unboxed*/ cmp_unsigned_Words( (UWord)(*rootp)->key,
+ (UWord)a->key );
if (cmpres > 0) {
/* insert into the left subtree */
@@ -280,13 +280,13 @@
static
Bool avl_remove_wrk ( AvlNode** rootp,
AvlNode* a,
- Word(*kCmp)(Word,Word) )
+ Word(*kCmp)(UWord,UWord) )
{
Bool ch;
Word cmpres;
cmpres = kCmp ? /*boxed*/ kCmp( (*rootp)->key, a->key )
- : /*unboxed*/ cmp_signed_Words( (Word)(*rootp)->key,
- (Word)a->key );
+ : /*unboxed*/ cmp_unsigned_Words( (UWord)(*rootp)->key,
+ (UWord)a->key );
if (cmpres > 0){
/* remove from the left subtree */
@@ -372,7 +372,7 @@
*/
static
Bool avl_removeroot_wrk ( AvlNode** rootp,
- Word(*kCmp)(Word,Word) )
+ Word(*kCmp)(UWord,UWord) )
{
Bool ch;
AvlNode* a;
@@ -407,7 +407,7 @@
}
static
-AvlNode* avl_find_node ( AvlNode* t, Word k, Word(*kCmp)(Word,Word) )
+AvlNode* avl_find_node ( AvlNode* t, Word k, Word(*kCmp)(UWord,UWord) )
{
if (kCmp) {
/* Boxed comparisons */
@@ -425,7 +425,7 @@
UWord cmpresU; /* unsigned */
while (True) {
if (t == NULL) return NULL; /* unlikely ==> predictable */
- cmpresS = cmp_signed_Words( (Word)t->key, (Word)k );
+ cmpresS = cmp_unsigned_Words( (UWord)t->key, (UWord)k );
if (cmpresS == 0) return t; /* unlikely ==> predictable */
cmpresU = (UWord)cmpresS;
cmpresU >>=/*unsigned*/ (8 * sizeof(cmpresU) - 1);
@@ -476,8 +476,8 @@
static
AvlNode* avl_dopy ( AvlNode* nd,
- Word(*dopyK)(Word),
- Word(*dopyV)(Word),
+ UWord(*dopyK)(UWord),
+ UWord(*dopyV)(UWord),
void*(alloc_nofail)(SizeT) )
{
AvlNode* nyu;
@@ -529,7 +529,7 @@
static void initFM ( WordFM* fm,
void* (*alloc_nofail)( SizeT ),
void (*dealloc)(void*),
- Word (*kCmp)(Word,Word) )
+ Word (*kCmp)(UWord,UWord) )
{
fm->root = 0;
fm->kCmp = kCmp;
@@ -540,10 +540,14 @@
/* --- Public interface functions --- */
-/* Allocate and Initialise a WordFM. */
+/* Allocate and initialise a WordFM. If kCmp is non-NULL, elements in
+ the set are ordered according to the ordering specified by kCmp,
+ which becomes obvious if you use VG_(initIterFM),
+ VG_(initIterAtFM), VG_(nextIterFM), VG_(doneIterFM) to iterate over
+ sections of the map, or the whole thing. */
WordFM* HG_(newFM) ( void* (*alloc_nofail)( SizeT ),
void (*dealloc)(void*),
- Word (*kCmp)(Word,Word) )
+ Word (*kCmp)(UWord,UWord) )
{
WordFM* fm = alloc_nofail(sizeof(WordFM));
tl_assert(fm);
@@ -552,8 +556,8 @@
}
static void avl_free ( AvlNode* nd,
- void(*kFin)(Word),
- void(*vFin)(Word),
+ void(*kFin)(UWord),
+ void(*vFin)(UWord),
void(*dealloc)(void*) )
{
if (!nd)
@@ -572,7 +576,7 @@
/* Free up the FM. If kFin is non-NULL, it is applied to keys
before the FM is deleted; ditto with vFin for vals. */
-void HG_(deleteFM) ( WordFM* fm, void(*kFin)(Word), void(*vFin)(Word) )
+void HG_(deleteFM) ( WordFM* fm, void(*kFin)(UWord), void(*vFin)(UWord) )
{
void(*dealloc)(void*) = fm->dealloc;
avl_free( fm->root, kFin, vFin, dealloc );
@@ -581,7 +585,7 @@
}
/* Add (k,v) to fm. */
-void HG_(addToFM) ( WordFM* fm, Word k, Word v )
+void HG_(addToFM) ( WordFM* fm, UWord k, UWord v )
{
MaybeWord oldV;
AvlNode* node;
@@ -599,7 +603,7 @@
// Delete key from fm, returning associated key and val if found
Bool HG_(delFromFM) ( WordFM* fm,
- /*OUT*/Word* oldK, /*OUT*/Word* oldV, Word key )
+ /*OUT*/UWord* oldK, /*OUT*/UWord* oldV, UWord key )
{
AvlNode* node = avl_find_node( fm->root, key, fm->kCmp );
if (node) {
@@ -617,7 +621,7 @@
// Look up in fm, assigning found key & val at spec'd addresses
Bool HG_(lookupFM) ( WordFM* fm,
- /*OUT*/Word* keyP, /*OUT*/Word* valP, Word key )
+ /*OUT*/UWord* keyP, /*OUT*/UWord* valP, UWord key )
{
AvlNode* node = avl_find_node( fm->root, key, fm->kCmp );
if (node) {
@@ -631,7 +635,7 @@
}
}
-Word HG_(sizeFM) ( WordFM* fm )
+UWord HG_(sizeFM) ( WordFM* fm )
{
// Hmm, this is a bad way to do this
return fm->root ? size_avl_nonNull( fm->root ) : 0;
@@ -646,10 +650,11 @@
stackPush(fm, fm->root, 1);
}
-// set up FM for iteration
-// so that the first key subsequently produced by HG_(nextIterFM) is
-// the smallest key in the map >= start_at.
-void HG_(initIterAtFM) ( WordFM* fm, Word start_at )
+// set up FM for iteration so that the first key subsequently produced
+// by HG_(nextIterFM) is the smallest key in the map >= start_at.
+// Naturally ">=" is defined by the comparison function supplied to
+// HG_(newFM), as documented above.
+void HG_(initIterAtFM) ( WordFM* fm, UWord start_at )
{
Int i;
AvlNode *n, *t;
@@ -671,7 +676,7 @@
cmpresS
= fm->kCmp ? /*boxed*/ fm->kCmp( t->key, start_at )
- : /*unboxed*/ cmp_signed_Words( t->key, start_at );
+ : /*unboxed*/ cmp_unsigned_Words( t->key, start_at );
if (cmpresS == 0) {
// We found the exact key -- we are done.
@@ -699,7 +704,7 @@
// get next key/val pair. Will tl_assert if fm has been modified
// or looked up in since initIter{,At}FM was called.
-Bool HG_(nextIterFM) ( WordFM* fm, /*OUT*/Word* pKey, /*OUT*/Word* pVal )
+Bool HG_(nextIterFM) ( WordFM* fm, /*OUT*/UWord* pKey, /*OUT*/UWord* pVal )
{
Int i = 0;
AvlNode* n = NULL;
@@ -740,7 +745,7 @@
{
}
-WordFM* HG_(dopyFM) ( WordFM* fm, Word(*dopyK)(Word), Word(*dopyV)(Word) )
+WordFM* HG_(dopyFM) ( WordFM* fm, UWord(*dopyK)(UWord), UWord(*dopyV)(UWord) )
{
WordFM* nyu;
@@ -796,9 +801,9 @@
dealloc(bag);
}
-void HG_(addToBag)( WordBag* bag, Word w )
+void HG_(addToBag)( WordBag* bag, UWord w )
{
- Word key, count;
+ UWord key, count;
if (HG_(lookupFM)(bag->fm, &key, &count, w)) {
tl_assert(key == w);
tl_assert(count >= 1);
@@ -808,9 +813,9 @@
}
}
-Word HG_(elemBag) ( WordBag* bag, Word w )
+UWord HG_(elemBag) ( WordBag* bag, UWord w )
{
- Word key, count;
+ UWord key, count;
if (HG_(lookupFM)( bag->fm, &key, &count, w)) {
tl_assert(key == w);
tl_assert(count >= 1);
@@ -820,15 +825,15 @@
}
}
-Word HG_(sizeUniqueBag) ( WordBag* bag )
+UWord HG_(sizeUniqueBag) ( WordBag* bag )
{
return HG_(sizeFM)( bag->fm );
}
-static Word sizeTotalBag_wrk ( AvlNode* nd )
+static UWord sizeTotalBag_wrk ( AvlNode* nd )
{
/* unchecked pre: nd is non-NULL */
- Word w = nd->val;
+ UWord w = nd->val;
tl_assert(w >= 1);
if (nd->child[0])
w += sizeTotalBag_wrk(nd->child[0]);
@@ -836,7 +841,7 @@
w += sizeTotalBag_wrk(nd->child[1]);
return w;
}
-Word HG_(sizeTotalBag)( WordBag* bag )
+UWord HG_(sizeTotalBag)( WordBag* bag )
{
if (bag->fm->root)
return sizeTotalBag_wrk(bag->fm->root);
@@ -844,9 +849,9 @@
return 0;
}
-Bool HG_(delFromBag)( WordBag* bag, Word w )
+Bool HG_(delFromBag)( WordBag* bag, UWord w )
{
- Word key, count;
+ UWord key, count;
if (HG_(lookupFM)(bag->fm, &key, &count, w)) {
tl_assert(key == w);
tl_assert(count >= 1);
@@ -879,7 +884,7 @@
return nd->val == 1;
}
-Word HG_(anyElementOfBag)( WordBag* bag )
+UWord HG_(anyElementOfBag)( WordBag* bag )
{
/* Return an arbitrarily chosen element in the bag. We might as
well return the one at the root of the underlying AVL tree. */
@@ -894,7 +899,7 @@
HG_(initIterFM)(bag->fm);
}
-Bool HG_(nextIterBag)( WordBag* bag, /*OUT*/Word* pVal, /*OUT*/Word* pCount )
+Bool HG_(nextIterBag)( WordBag* bag, /*OUT*/UWord* pVal, /*OUT*/UWord* pCount )
{
return HG_(nextIterFM)( bag->fm, pVal, pCount );
}
@@ -924,14 +929,14 @@
// Just lookup for each element in range and count.
int search_all_elements_in_range_1(WordFM *map, long beg, long end)
{
- int n_found = 0;
- int i;
- for(i = beg; i < end; i++) {
- Word key, val;
- if(HG_(lookupFM)(map, &key, &val, (Word)i)){
+ long n_found = 0;
+ long i;
+ for (i = beg; i < end; i++) {
+ UWord key, val;
+ if (HG_(lookupFM)(map, &key, &val, (Word)i)) {
n_found++;
assert(key == -val);
- assert(key == (Word)i);
+ assert(key == (UWord)i);
}
}
return n_found;
@@ -943,9 +948,9 @@
int search_all_elements_in_range_2(WordFM *map, long beg, long end)
{
int n_found = 0;
- Word key, val;
+ UWord key, val;
HG_(initIterAtFM)(map, beg);
- while(HG_(nextIterFM)(map, &key, &val) && (int)key < end) {
+ while (HG_(nextIterFM)(map, &key, &val) && (long)key < end) {
assert(key == -val);
n_found++;
}
@@ -955,11 +960,11 @@
int main(void)
{
- int i, n = 10;
- Word key, val;
- int beg, end;
+ long i, n = 10;
+ UWord key, val;
+ long beg, end;
- printf("Create the map, n=%d\n", n);
+ printf("Create the map, n=%ld\n", n);
WordFM *map = HG_(newFM)(malloc, free, NULL/*unboxed Word cmp*/);
printf("Add keys: ");
@@ -968,12 +973,12 @@
printf("%ld ", val);
HG_(addToFM)(map, val, -val);
}
- assert(HG_(sizeFM)(map) == n);
+ assert(HG_(sizeFM)(map) == (UWord)n);
printf("\n");
printf("Iterate elements, size=%d\n", (int)HG_(sizeFM)(map));
HG_(initIterFM)(map);
- while(HG_(nextIterFM(map, &key, &val))){
+ while (HG_(nextIterFM(map, &key, &val))) {
// int j;
// printf("Stack k=%d\n", (int)key);
// for(j = map->stackTop-1; j >= 0; j--) {
@@ -988,7 +993,7 @@
for(beg = 0; beg <= n*2; beg++) {
HG_(initIterAtFM)(map, (Word)beg);
int prev = -1;
- printf("StartWith: %d: ", beg);
+ printf("StartWith: %ld: ", beg);
int n_iter = 0;
while(HG_(nextIterFM(map, &key, &val))) {
Modified: trunk/helgrind/hg_wordfm.h
===================================================================
--- trunk/helgrind/hg_wordfm.h 2008-02-14 16:55:01 UTC (rev 7408)
+++ trunk/helgrind/hg_wordfm.h 2008-02-15 22:02:30 UTC (rev 7409)
@@ -59,43 +59,48 @@
typedef struct _WordFM WordFM; /* opaque */
-/* Allocate and initialise a WordFM */
+/* Allocate and initialise a WordFM. If kCmp is non-NULL, elements in
+ the set are ordered according to the ordering specified by kCmp,
+ which becomes obvious if you use VG_(initIterFM),
+ VG_(initIterAtFM), VG_(nextIterFM), VG_(doneIterFM) to iterate over
+ sections of the map, or the whole thing. */
WordFM* HG_(newFM) ( void* (*alloc_nofail)( SizeT ),
void (*dealloc)(void*),
- Word (*kCmp)(Word,Word) );
+ Word (*kCmp)(UWord,UWord) );
/* Free up the FM. If kFin is non-NULL, it is applied to keys
before the FM is deleted; ditto with vFin for vals. */
-void HG_(deleteFM) ( WordFM*, void(*kFin)(Word), void(*vFin)(Word) );
+void HG_(deleteFM) ( WordFM*, void(*kFin)(UWord), void(*vFin)(UWord) );
/* Add (k,v) to fm. If a binding for k already exists, it is updated
to map to this new v. In that case we should really return the
previous v so that caller can finalise it. Oh well. */
-void HG_(addToFM) ( WordFM* fm, Word k, Word v );
+void HG_(addToFM) ( WordFM* fm, UWord k, UWord v );
// Delete key from fm, returning associated key and val if found
Bool HG_(delFromFM) ( WordFM* fm,
- /*OUT*/Word* oldK, /*OUT*/Word* oldV, Word key );
+ /*OUT*/UWord* oldK, /*OUT*/UWord* oldV, UWord key );
// Look up in fm, assigning found key & val at spec'd addresses
Bool HG_(lookupFM) ( WordFM* fm,
- /*OUT*/Word* keyP, /*OUT*/Word* valP, Word key );
+ /*OUT*/UWord* keyP, /*OUT*/UWord* valP, UWord key );
// How many elements are there in fm?
-Word HG_(sizeFM) ( WordFM* fm );
+UWord HG_(sizeFM) ( WordFM* fm );
// set up FM for iteration
void HG_(initIterFM) ( WordFM* fm );
-// set up FM for iteration
-// so that the first key subsequently produced by HG_(nextIterFM) is
-// the smallest key in the map >= start_at.
-void HG_(initIterAtFM) ( WordFM* fm, Word start_at );
+// set up FM for iteration so that the first key subsequently produced
+// by HG_(nextIterFM) is the smallest key in the map >= start_at.
+// Naturally ">=" is defined by the comparison function supplied to
+// HG_(newFM), as documented above.
+void HG_(initIterAtFM) ( WordFM* fm, UWord start_at );
// get next key/val pair. Will assert if fm has been modified
// or looked up in since initIterFM/initIterWithStartFM was called.
Bool HG_(nextIterFM) ( WordFM* fm,
- /*OUT*/Word* pKey, /*OUT*/Word* pVal );
+ /*OUT*/UWord* pKey, /*OUT*/UWord* pVal );
// clear the I'm iterating flag
void HG_(doneIterFM) ( WordFM* fm );
@@ -107,7 +112,7 @@
// could not allocate memory, in which case the copy is abandoned
// and NULL is returned. Ditto with dopyV for values.
WordFM* HG_(dopyFM) ( WordFM* fm,
- Word(*dopyK)(Word), Word(*dopyV)(Word) );
+ UWord(*dopyK)(UWord), UWord(*dopyV)(UWord) );
//------------------------------------------------------------------//
//--- end WordFM ---//
@@ -129,13 +134,13 @@
void HG_(deleteBag) ( WordBag* );
/* Add a word. */
-void HG_(addToBag)( WordBag*, Word );
+void HG_(addToBag)( WordBag*, UWord );
/* Find out how many times the given word exists in the bag. */
-Word HG_(elemBag) ( WordBag*, Word );
+UWord HG_(elemBag) ( WordBag*, UWord );
/* Delete a word from the bag. */
-Bool HG_(delFromBag)( WordBag*, Word );
+Bool HG_(delFromBag)( WordBag*, UWord );
/* Is the bag empty? */
Bool HG_(isEmptyBag)( WordBag* );
@@ -144,15 +149,15 @@
Bool HG_(isSingletonTotalBag)( WordBag* );
/* Return an arbitrary element from the bag. */
-Word HG_(anyElementOfBag)( WordBag* );
+UWord HG_(anyElementOfBag)( WordBag* );
/* How many different / total elements are in the bag? */
-Word HG_(sizeUniqueBag)( WordBag* ); /* fast */
-Word HG_(sizeTotalBag)( WordBag* ); /* warning: slow */
+UWord HG_(sizeUniqueBag)( WordBag* ); /* fast */
+UWord HG_(sizeTotalBag)( WordBag* ); /* warning: slow */
/* Iterating over the elements of a bag. */
void HG_(initIterBag)( WordBag* );
-Bool HG_(nextIterBag)( WordBag*, /*OUT*/Word* pVal, /*OUT*/Word* pCount );
+Bool HG_(nextIterBag)( WordBag*, /*OUT*/UWord* pVal, /*OUT*/UWord* pCount );
void HG_(doneIterBag)( WordBag* );
//------------------------------------------------------------------//
Modified: trunk/helgrind/hg_wordset.c
===================================================================
--- trunk/helgrind/hg_wordset.c 2008-02-14 16:55:01 UTC (rev 7408)
+++ trunk/helgrind/hg_wordset.c 2008-02-15 22:02:30 UTC (rev 7409)
@@ -62,8 +62,8 @@
typedef
struct {
WCacheEnt ent[N_WCACHE_STAT_MAX];
- Word dynMax; /* 1 .. N_WCACHE_STAT_MAX inclusive */
- Word inUse; /* 0 .. dynMax inclusive */
+ UWord dynMax; /* 1 .. N_WCACHE_STAT_MAX inclusive */
+ UWord inUse; /* 0 .. dynMax inclusive */
}
WCache;
@@ -77,7 +77,7 @@
#define WCache_LOOKUP_AND_RETURN(_retty,_zzcache,_zzarg1,_zzarg2) \
do { \
- Word _i; \
+ UWord _i; \
UWord _arg1 = (UWord)(_zzarg1); \
UWord _arg2 = (UWord)(_zzarg2); \
WCache* _cache = &(_zzcache); \
@@ -130,8 +130,8 @@
typedef
struct {
WordSetU* owner; /* for sanity checking */
- Word* words;
- Int size; /* Really this should be SizeT */
+ UWord* words;
+ UWord size; /* Really this should be SizeT */
}
WordVec;
@@ -144,8 +144,8 @@
void (*dealloc)(void*);
WordFM* vec2ix; /* WordVec-to-WordSet mapping tree */
WordVec** ix2vec; /* WordSet-to-WordVec mapping array */
- UInt ix2vec_size;
- UInt ix2vec_used;
+ UWord ix2vec_size;
+ UWord ix2vec_used;
WordSet empty; /* cached, for speed */
/* Caches for some operations */
WCache cache_addTo;
@@ -172,7 +172,7 @@
/* Create a new WordVec of the given size. */
-static WordVec* new_WV_of_size ( WordSetU* wsu, Int sz )
+static WordVec* new_WV_of_size ( WordSetU* wsu, UWord sz )
{
WordVec* wv;
tl_assert(sz >= 0);
@@ -181,7 +181,7 @@
wv->words = NULL;
wv->size = sz;
if (sz > 0) {
- wv->words = wsu->alloc( (SizeT)sz * sizeof(Word) );
+ wv->words = wsu->alloc( (SizeT)sz * sizeof(UWord) );
}
return wv;
}
@@ -194,16 +194,16 @@
}
dealloc(wv);
}
-static void delete_WV_for_FM ( Word wv ) {
+static void delete_WV_for_FM ( UWord wv ) {
delete_WV( (WordVec*)wv );
}
-static Word cmp_WordVecs_for_FM ( Word wv1W, Word wv2W )
+static Word cmp_WordVecs_for_FM ( UWord wv1W, UWord wv2W )
{
- Int i;
+ UWord i;
WordVec* wv1 = (WordVec*)wv1W;
WordVec* wv2 = (WordVec*)wv2W;
- Int common = wv1->size < wv2->size ? wv1->size : wv2->size;
+ UWord common = wv1->size < wv2->size ? wv1->size : wv2->size;
for (i = 0; i < common; i++) {
if (wv1->words[i] == wv2->words[i])
continue;
@@ -275,7 +275,7 @@
{
Bool have;
WordVec* wv_old;
- Word/*Set*/ ix_old = -1;
+ UWord/*Set*/ ix_old = -1;
/* Really WordSet, but need something that can safely be casted to
a Word* in the lookupFM. Making it WordSet (which is 32 bits)
causes failures on a 64-bit platform. */
@@ -358,7 +358,7 @@
}
}
-Bool HG_(isSingletonWS) ( WordSetU* wsu, WordSet ws, Word w )
+Bool HG_(isSingletonWS) ( WordSetU* wsu, WordSet ws, UWord w )
{
WordVec* wv;
tl_assert(wsu);
@@ -367,7 +367,7 @@
return (Bool)(wv->size == 1 && wv->words[0] == w);
}
-Int HG_(cardinalityWS) ( WordSetU* wsu, WordSet ws )
+UWord HG_(cardinalityWS) ( WordSetU* wsu, WordSet ws )
{
WordVec* wv;
tl_assert(wsu);
@@ -376,7 +376,7 @@
return wv->size;
}
-Word HG_(anyElementOfWS) ( WordSetU* wsu, WordSet ws )
+UWord HG_(anyElementOfWS) ( WordSetU* wsu, WordSet ws )
{
WordVec* wv;
tl_assert(wsu);
@@ -386,13 +386,13 @@
return wv->words[0];
}
-Int HG_(cardinalityWSU) ( WordSetU* wsu )
+UWord HG_(cardinalityWSU) ( WordSetU* wsu )
{
tl_assert(wsu);
- return (Int)wsu->ix2vec_used;
+ return wsu->ix2vec_used;
}
-void HG_(getPayloadWS) ( /*OUT*/Word** words, /*OUT*/Word* nWords,
+void HG_(getPayloadWS) ( /*OUT*/UWord** words, /*OUT*/UWord* nWords,
WordSetU* wsu, WordSet ws )
{
WordVec* wv;
@@ -414,7 +414,7 @@
Bool HG_(saneWS_SLOW) ( WordSetU* wsu, WordSet ws )
{
WordVec* wv;
- Int i;
+ UWord i;
if (wsu == NULL) return False;
if (ws < 0 || ws >= wsu->ix2vec_used)
return False;
@@ -431,9 +431,9 @@
return True;
}
-Bool HG_(elemWS) ( WordSetU* wsu, WordSet ws, Word w )
+Bool HG_(elemWS) ( WordSetU* wsu, WordSet ws, UWord w )
{
- Int i;
+ UWord i;
WordVec* wv = do_ix2vec( wsu, ws );
wsu->n_elem++;
for (i = 0; i < wv->size; i++) {
@@ -443,7 +443,7 @@
return False;
}
-WordSet HG_(doubletonWS) ( WordSetU* wsu, Word w1, Word w2 )
+WordSet HG_(doubletonWS) ( WordSetU* wsu, UWord w1, UWord w2 )
{
WordVec* wv;
wsu->n_doubleton++;
@@ -465,7 +465,7 @@
return add_or_dealloc_WordVec( wsu, wv );
}
-WordSet HG_(singletonWS) ( WordSetU* wsu, Word w )
+WordSet HG_(singletonWS) ( WordSetU* wsu, UWord w )
{
return HG_(doubletonWS)( wsu, w, w );
}
@@ -478,7 +478,7 @@
void HG_(ppWS) ( WordSetU* wsu, WordSet ws )
{
- Int i;
+ UWord i;
WordVec* wv;
tl_assert(wsu);
wv = do_ix2vec( wsu, ws );
@@ -511,9 +511,9 @@
VG_(printf)(" isSubsetOf %10u\n", wsu->n_isSubsetOf);
}
-WordSet HG_(addToWS) ( WordSetU* wsu, WordSet ws, Word w )
+WordSet HG_(addToWS) ( WordSetU* wsu, WordSet ws, UWord w )
{
- Int k, j;
+ UWord k, j;
WordVec* wv_new;
WordVec* wv;
WordSet result = (WordSet)(-1); /* bogus */
@@ -552,9 +552,9 @@
return result;
}
-WordSet HG_(delFromWS) ( WordSetU* wsu, WordSet ws, Word w )
+WordSet HG_(delFromWS) ( WordSetU* wsu, WordSet ws, UWord w )
{
- Int i, j, k;
+ UWord i, j, k;
WordVec* wv_new;
WordSet result = (WordSet)(-1); /* bogus */
WordVec* wv = do_ix2vec( wsu, ws );
@@ -605,7 +605,7 @@
WordSet HG_(unionWS) ( WordSetU* wsu, WordSet ws1, WordSet ws2 )
{
- Int i1, i2, k, sz;
+ UWord i1, i2, k, sz;
WordVec* wv_new;
WordVec* wv1 = do_ix2vec( wsu, ws1 );
WordVec* wv2 = do_ix2vec( wsu, ws2 );
@@ -675,7 +675,7 @@
WordSet HG_(intersectWS) ( WordSetU* wsu, WordSet ws1, WordSet ws2 )
{
- Int i1, i2, k, sz;
+ UWord i1, i2, k, sz;
WordSet ws_new = (WordSet)(-1); /* bogus */
WordVec* wv_new;
WordVec* wv1;
@@ -756,7 +756,7 @@
WordSet HG_(minusWS) ( WordSetU* wsu, WordSet ws1, WordSet ws2 )
{
- Int i1, i2, k, sz;
+ UWord i1, i2, k, sz;
WordSet ws_new = (WordSet)(-1); /* bogus */
WordVec* wv_new;
WordVec* wv1;
@@ -833,7 +833,7 @@
static __attribute__((unused))
void show_WS ( WordSetU* wsu, WordSet ws )
{
- Int i;
+ UWord i;
WordVec* wv = do_ix2vec( wsu, ws );
VG_(printf)("#%u{", ws);
for (i = 0; i < wv->size; i++) {
Modified: trunk/helgrind/hg_wordset.h
===================================================================
--- trunk/helgrind/hg_wordset.h 2008-02-14 16:55:01 UTC (rev 7408)
+++ trunk/helgrind/hg_wordset.h 2008-02-15 22:02:30 UTC (rev 7409)
@@ -55,7 +55,7 @@
void HG_(deleteWordSetU) ( WordSetU* );
/* Get the number of elements in this WordSetU. */
-Int HG_(cardinalityWSU) ( WordSetU* );
+UWord HG_(cardinalityWSU) ( WordSetU* );
/* Show performance stats for this WordSetU. */
void HG_(ppWSUstats) ( WordSetU* wsu, HChar* name );
@@ -66,25 +66,25 @@
represents the empty set. */
WordSet HG_(emptyWS) ( WordSetU* );
-WordSet HG_(addToWS) ( WordSetU*, WordSet, Word );
-WordSet HG_(delFromWS) ( WordSetU*, WordSet, Word );
+WordSet HG_(addToWS) ( WordSetU*, WordSet, UWord );
+WordSet HG_(delFromWS) ( WordSetU*, WordSet, UWord );
WordSet HG_(unionWS) ( WordSetU*, WordSet, WordSet );
WordSet HG_(intersectWS) ( WordSetU*, WordSet, WordSet );
WordSet HG_(minusWS) ( WordSetU*, WordSet, WordSet );
Bool HG_(isEmptyWS) ( WordSetU*, WordSet );
-Bool HG_(isSingletonWS) ( WordSetU*, WordSet, Word );
-Word HG_(anyElementOfWS) ( WordSetU*, WordSet );
-Int HG_(cardinalityWS) ( WordSetU*, WordSet );
-Bool HG_(elemWS) ( WordSetU*, WordSet, Word );
-WordSet HG_(doubletonWS) ( WordSetU*, Word, Word );
-WordSet HG_(singletonWS) ( WordSetU*, Word );
+Bool HG_(isSingletonWS) ( WordSetU*, WordSet, UWord );
+UWord HG_(anyElementOfWS) ( WordSetU*, WordSet );
+UWord HG_(cardinalityWS) ( WordSetU*, WordSet );
+Bool HG_(elemWS) ( WordSetU*, WordSet, UWord );
+WordSet HG_(doubletonWS) ( WordSetU*, UWord, UWord );
+WordSet HG_(singletonWS) ( WordSetU*, UWord );
WordSet HG_(isSubsetOf) ( WordSetU*, WordSet, WordSet );
Bool HG_(plausibleWS) ( WordSetU*, WordSet );
Bool HG_(saneWS_SLOW) ( WordSetU*, WordSet );
void HG_(ppWS) ( WordSetU*, WordSet );
-void HG_(getPayloadWS) ( /*OUT*/Word** words, /*OUT*/Word* nWords,
+void HG_(getPayloadWS) ( /*OUT*/UWord** words, /*OUT*/UWord* nWords,
WordSetU*, WordSet );
|
|
From: Tom H. <to...@co...> - 2008-02-15 19:54:30
|
In message <200...@ac...>
Julian Seward <js...@ac...> wrote:
> On Friday 15 February 2008 10:47, Nicholas Nethercote wrote:
> > Is it worth retiring this machine from the nightly tests? It does an extra
> > malloc() call for every program for some unknown reason, I think this is
> > why so many tests fail.
> > [...]
> > > Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-02-15
> > [...]
> > > == 338 tests, 83 stderr failures, 1 stdout failure, 29 post failures ==
>
> A related question is: what is the oldest system that we should
> attempt to support? I'd tried to ensure V continues to build and
> be usable on a vanilla Red Hat 7.3 (+ gcc 2.96) system, and that's
> mostly viable with the profilers and Memcheck, but for the
> threading tools it's pretty pointless as neither DRD nor Helgrind
> work reasonably with LinuxThreads.
That machine is actually using gcc 3.2.2 now, and not the original
gcc 2.96 that RH7.3 shipped with.
> I'm inclined to say: continue ensuring the 3.3.X branch works with
> Red Hat 7.3, but change the baseline requirements for the trunk
> (hence for >= 3.4.0) to something more modern: drop LinuxThreads
> support, and require gcc >= 3.0.
>
> So what's the oldest commonly-used distro that supported NPTL?
RH9 is pretty much the first distro to support it isn't it?
It didn't really go mainstream until the 2.6 kernel, which was
with FC2 in Fedora IIRC.
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|
|
From: Julian S. <js...@ac...> - 2008-02-15 18:52:14
|
On Friday 15 February 2008 10:47, Nicholas Nethercote wrote: > Is it worth retiring this machine from the nightly tests? It does an extra > malloc() call for every program for some unknown reason, I think this is > why so many tests fail. > [...] > > Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-02-15 > [...] > > == 338 tests, 83 stderr failures, 1 stdout failure, 29 post failures == A related question is: what is the oldest system that we should attempt to support? I'd tried to ensure V continues to build and be usable on a vanilla Red Hat 7.3 (+ gcc 2.96) system, and that's mostly viable with the profilers and Memcheck, but for the threading tools it's pretty pointless as neither DRD nor Helgrind work reasonably with LinuxThreads. I'm inclined to say: continue ensuring the 3.3.X branch works with Red Hat 7.3, but change the baseline requirements for the trunk (hence for >= 3.4.0) to something more modern: drop LinuxThreads support, and require gcc >= 3.0. So what's the oldest commonly-used distro that supported NPTL? J |
|
From: <sv...@va...> - 2008-02-15 17:18:30
|
Author: sewardj
Date: 2008-02-15 17:18:18 +0000 (Fri, 15 Feb 2008)
New Revision: 1812
Log:
Show x86 sreg offsets.
Modified:
trunk/auxprogs/genoffsets.c
Modified: trunk/auxprogs/genoffsets.c
===================================================================
--- trunk/auxprogs/genoffsets.c 2008-02-11 11:35:40 UTC (rev 1811)
+++ trunk/auxprogs/genoffsets.c 2008-02-15 17:18:18 UTC (rev 1812)
@@ -83,6 +83,25 @@
printf("#define OFFSET_x86_EIP %3d\n",
offsetof(VexGuestX86State,guest_EIP));
+
+ printf("#define OFFSET_x86_CS %3d\n",
+ offsetof(VexGuestX86State,guest_CS));
+
+ printf("#define OFFSET_x86_DS %3d\n",
+ offsetof(VexGuestX86State,guest_DS));
+
+ printf("#define OFFSET_x86_ES %3d\n",
+ offsetof(VexGuestX86State,guest_ES));
+
+ printf("#define OFFSET_x86_FS %3d\n",
+ offsetof(VexGuestX86State,guest_FS));
+
+ printf("#define OFFSET_x86_GS %3d\n",
+ offsetof(VexGuestX86State,guest_GS));
+
+ printf("#define OFFSET_x86_SS %3d\n",
+ offsetof(VexGuestX86State,guest_SS));
+
printf("\n");
// amd64
|
|
From: Nicholas N. <nj...@cs...> - 2008-02-15 09:47:39
|
Is it worth retiring this machine from the nightly tests? It does an extra malloc() call for every program for some unknown reason, I think this is why so many tests fail. Nick On Fri, 15 Feb 2008, Tom Hughes wrote: > > Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-02-15 03:15:05 GMT > Results unchanged from 24 hours ago > > Checking out valgrind source tree ... done > Configuring valgrind ... done > Building valgrind ... done > Running regression tests ... failed > > Regression test results follow > > == 338 tests, 83 stderr failures, 1 stdout failure, 29 post failures == > memcheck/tests/addressable (stderr) > memcheck/tests/badjump (stderr) > memcheck/tests/describe-block (stderr) > memcheck/tests/erringfds (stderr) > memcheck/tests/leak-0 (stderr) > memcheck/tests/leak-cycle (stderr) > memcheck/tests/leak-pool-0 (stderr) > memcheck/tests/leak-pool-1 (stderr) > memcheck/tests/leak-pool-2 (stderr) > memcheck/tests/leak-pool-3 (stderr) > memcheck/tests/leak-pool-4 (stderr) > memcheck/tests/leak-pool-5 (stderr) > memcheck/tests/leak-regroot (stderr) > memcheck/tests/leak-tree (stderr) > memcheck/tests/long_namespace_xml (stderr) > memcheck/tests/lsframe1 (stderr) > memcheck/tests/lsframe2 (stderr) > memcheck/tests/malloc_free_fill (stderr) > memcheck/tests/match-overrun (stderr) > memcheck/tests/noisy_child (stderr) > memcheck/tests/partial_load_dflt (stderr) > memcheck/tests/partial_load_ok (stderr) > memcheck/tests/partiallydefinedeq (stderr) > memcheck/tests/pointer-trace (stderr) > memcheck/tests/sigkill (stderr) > memcheck/tests/stack_changes (stderr) > memcheck/tests/x86/bug152022 (stderr) > memcheck/tests/x86/scalar (stderr) > memcheck/tests/x86/scalar_supp (stderr) > memcheck/tests/x86/xor-undef-x86 (stderr) > memcheck/tests/xml1 (stderr) > massif/tests/alloc-fns-A (post) > massif/tests/alloc-fns-B (post) > massif/tests/basic (post) > massif/tests/basic2 (post) > massif/tests/big-alloc (post) > massif/tests/culling1 (stderr) > massif/tests/culling2 (stderr) > massif/tests/custom_alloc (post) > massif/tests/deep-A (post) > massif/tests/deep-B (stderr) > massif/tests/deep-B (post) > massif/tests/deep-C (stderr) > massif/tests/deep-C (post) > massif/tests/deep-D (post) > massif/tests/ignoring (post) > massif/tests/insig (post) > massif/tests/long-names (post) > massif/tests/long-time (post) > massif/tests/new-cpp (post) > massif/tests/null (post) > massif/tests/one (post) > massif/tests/overloaded-new (post) > massif/tests/peak (post) > massif/tests/peak2 (stderr) > massif/tests/peak2 (post) > massif/tests/realloc (stderr) > massif/tests/realloc (post) > massif/tests/thresholds_0_0 (post) > massif/tests/thresholds_0_10 (post) > massif/tests/thresholds_10_0 (post) > massif/tests/thresholds_10_10 (post) > massif/tests/thresholds_5_0 (post) > massif/tests/thresholds_5_10 (post) > massif/tests/zero1 (post) > massif/tests/zero2 (post) > none/tests/blockfault (stderr) > none/tests/mremap (stderr) > none/tests/mremap2 (stdout) > helgrind/tests/hg01_all_ok (stderr) > helgrind/tests/hg02_deadlock (stderr) > helgrind/tests/hg03_inherit (stderr) > helgrind/tests/hg04_race (stderr) > helgrind/tests/hg05_race2 (stderr) > helgrind/tests/hg06_readshared (stderr) > helgrind/tests/tc01_simple_race (stderr) > helgrind/tests/tc02_simple_tls (stderr) > helgrind/tests/tc03_re_excl (stderr) > helgrind/tests/tc04_free_lock (stderr) > helgrind/tests/tc05_simple_race (stderr) > helgrind/tests/tc06_two_races (stderr) > helgrind/tests/tc07_hbl1 (stderr) > helgrind/tests/tc08_hbl2 (stderr) > helgrind/tests/tc09_bad_unlock (stderr) > helgrind/tests/tc10_rec_lock (stderr) > helgrind/tests/tc11_XCHG (stderr) > helgrind/tests/tc12_rwl_trivial (stderr) > helgrind/tests/tc13_laog1 (stderr) > helgrind/tests/tc14_laog_dinphils (stderr) > helgrind/tests/tc16_byterace (stderr) > helgrind/tests/tc17_sembar (stderr) > helgrind/tests/tc18_semabuse (stderr) > helgrind/tests/tc19_shadowmem (stderr) > helgrind/tests/tc20_verifywrap (stderr) > helgrind/tests/tc21_pthonce (stderr) > helgrind/tests/tc22_exit_w_lock (stderr) > helgrind/tests/tc23_bogus_condwait (stderr) > helgrind/tests/tc24_nonzero_sem (stderr) > exp-drd/tests/fp_race (stderr) > exp-drd/tests/fp_race2 (stderr) > exp-drd/tests/matinv (stderr) > exp-drd/tests/pth_barrier (stderr) > exp-drd/tests/pth_broadcast (stderr) > exp-drd/tests/pth_cond_race (stderr) > exp-drd/tests/pth_cond_race2 (stderr) > exp-drd/tests/pth_create_chain (stderr) > exp-drd/tests/pth_detached (stderr) > exp-drd/tests/pth_detached2 (stderr) > exp-drd/tests/sem_as_mutex (stderr) > exp-drd/tests/sem_as_mutex2 (stderr) > exp-drd/tests/sigalrm (stderr) > exp-drd/tests/tc17_sembar (stderr) > exp-drd/tests/tc18_semabuse (stderr) > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > |
|
From: Nicholas N. <nj...@cs...> - 2008-02-15 09:46:56
|
> none/tests/cmdline1 (stdout) > none/tests/cmdline2 (stdout) What's wrong with these two on this machine? Nick |
|
From: Tom H. <th...@cy...> - 2008-02-15 05:04:19
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-02-15 03:15:05 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 338 tests, 83 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc04_free_lock (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc10_rec_lock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc13_laog1 (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) exp-drd/tests/fp_race (stderr) exp-drd/tests/fp_race2 (stderr) exp-drd/tests/matinv (stderr) exp-drd/tests/pth_barrier (stderr) exp-drd/tests/pth_broadcast (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/pth_cond_race2 (stderr) exp-drd/tests/pth_create_chain (stderr) exp-drd/tests/pth_detached (stderr) exp-drd/tests/pth_detached2 (stderr) exp-drd/tests/sem_as_mutex (stderr) exp-drd/tests/sem_as_mutex2 (stderr) exp-drd/tests/sigalrm (stderr) exp-drd/tests/tc17_sembar (stderr) exp-drd/tests/tc18_semabuse (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-15 04:04:06
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-02-15 03:05:06 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 372 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-15 03:46:32
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-02-15 03:20:04 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 378 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/sem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-15 03:42:20
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-02-15 03:25:14 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 376 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-15 03:27:23
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-02-15 03:10:06 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 372 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc18_semabuse (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-15 03:14:45
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-02-15 03:00:05 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 378 tests, 29 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |