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
|
2
(2) |
3
|
4
|
5
|
|
6
|
7
(1) |
8
(2) |
9
(1) |
10
(2) |
11
(2) |
12
(1) |
|
13
|
14
(2) |
15
|
16
(2) |
17
(2) |
18
(3) |
19
(1) |
|
20
(1) |
21
|
22
|
23
|
24
|
25
|
26
|
|
27
|
28
|
|
|
|
|
|
|
From: Peter B. <be...@li...> - 2022-02-18 23:27:05
|
On 2/14/22 5:13 PM, will schmidt wrote:
> Taking a step back, I have a question here.
> A call to
> builtin_cpu_supports('scv') should be made before an application
> actually uses the scv feature.
> Should Valgrind be attempting to
> intercept that bad call in case an app is coded in violation of those
> rules?
Valgrind cannot intercept calls to __builtin_cpu_supports('scv') because
it isn't really a call. The compiler will expand that builtin to a load
from the HWCAP2 slot in the Thread Control Block (TCB) and a compare to
see if bit PPC_FEATURE2_SCV is set. By the time Valgrind sees the
application, that builtin is long gone.
Peter
|
|
From: Carl L. <ca...@so...> - 2022-02-18 19:13:09
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=7f11271403219d21c46e3b831cc1709336e792f1 commit 7f11271403219d21c46e3b831cc1709336e792f1 Author: Carl Love <ca...@us...> Date: Fri Feb 11 14:07:20 2022 -0600 Powerpc: Fix checking for scv support, add check to scv instruction parsing. The check for the scv instruction in coregrind/m_machine.c issues an scv instruction and uses sigill to determine if the instruction is supported. Issuing scv on systems that don't support scv, i.e. scv support is not in HWCAPS2, generates a message in dmesg "Facility 'SCV' unavailable (12), exception". This patch removes the sigill based scv instruction test from coregrind/m_machine.c. The scv support is now determined by reading the HWCAPS2 in setup_client_stack(). VG_(machine_ppc64_set_scv_support) is called to set the flag ppc_scv_supported in struct VexArchInfo. The allow_scv flag is added in disInstr_PPC_WRK. The allow_scv flag is used to ensure the host has support for scv before generating the iops for the scv instruction. Diff: --- NEWS | 1 + VEX/priv/guest_ppc_toIR.c | 20 +++++++++++++----- VEX/pub/libvex.h | 2 ++ coregrind/m_initimg/initimg-linux.c | 17 +++++++-------- coregrind/m_machine.c | 42 +++++++++++++++++++++++-------------- coregrind/pub_core_machine.h | 2 ++ 6 files changed, 54 insertions(+), 30 deletions(-) diff --git a/NEWS b/NEWS index e4f2b71411..8ed4898aab 100644 --- a/NEWS +++ b/NEWS @@ -70,6 +70,7 @@ are not entered into bugzilla tend to get forgotten about or ignored. 449838 sigsegv liburing the 'impossible' happened for io_uring_setup 450025 Powerc: ACC file not implemented as a logical overlay of the VSR registers. +450536 Powerpc: valgrind throws 'facility scv unavailable exception' To see details of a given bug, visit https://bugs.kde.org/show_bug.cgi?id=XXXXXX diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c index afe66c0be5..e340562bf0 100644 --- a/VEX/priv/guest_ppc_toIR.c +++ b/VEX/priv/guest_ppc_toIR.c @@ -10755,7 +10755,8 @@ static Bool dis_trap ( UInt prefix, UInt theInstr, */ static Bool dis_syslink ( UInt prefix, UInt theInstr, - const VexAbiInfo* abiinfo, DisResult* dres ) + const VexAbiInfo* abiinfo, DisResult* dres, + Bool allow_scv, Bool sigill_diag ) { IRType ty = mode64 ? Ity_I64 : Ity_I32; @@ -10776,9 +10777,14 @@ static Bool dis_syslink ( UInt prefix, UInt theInstr, DIP("sc\n"); put_syscall_flag( mkU32(SC_FLAG) ); } else if (theInstr == 0x44000001) { - // scv - DIP("scv\n"); - put_syscall_flag( mkU32(SCV_FLAG) ); + if (allow_scv) { // scv + DIP("scv\n"); + put_syscall_flag( mkU32(SCV_FLAG) ); + } else { + if (sigill_diag) + vex_printf("The scv instruction is not supported in this environment per the HWCAPS2 capability flags.\n"); + return False; + } } else { /* Unknown instruction */ return False; @@ -35703,6 +35709,7 @@ DisResult disInstr_PPC_WRK ( Bool allow_isa_2_07 = False; Bool allow_isa_3_0 = False; Bool allow_isa_3_1 = False; + Bool allow_scv = False; Bool is_prefix; /* In ISA 3.1 the ACC is implemented on top of the vsr0 thru vsr31. @@ -35731,6 +35738,7 @@ DisResult disInstr_PPC_WRK ( allow_isa_2_07 = (0 != (hwcaps & VEX_HWCAPS_PPC64_ISA2_07)); allow_isa_3_0 = (0 != (hwcaps & VEX_HWCAPS_PPC64_ISA3_0)); allow_isa_3_1 = (0 != (hwcaps & VEX_HWCAPS_PPC64_ISA3_1)); + allow_scv = archinfo->ppc_scv_supported; } else { allow_F = (0 != (hwcaps & VEX_HWCAPS_PPC32_F)); allow_V = (0 != (hwcaps & VEX_HWCAPS_PPC32_V)); @@ -35741,6 +35749,7 @@ DisResult disInstr_PPC_WRK ( allow_isa_2_07 = (0 != (hwcaps & VEX_HWCAPS_PPC32_ISA2_07)); allow_isa_3_0 = (0 != (hwcaps & VEX_HWCAPS_PPC32_ISA3_0)); /* ISA 3.1 is not supported in 32-bit mode */ + /* The scv instruction is not supported in 32-bit mode */ } /* Enable writting the OV32 and CA32 bits added with ISA3.0 */ @@ -36140,7 +36149,8 @@ DisResult disInstr_PPC_WRK ( /* System Linkage Instructions */ case 0x11: // sc, scv - if (dis_syslink( prefix, theInstr, abiinfo, &dres)) + if (dis_syslink( prefix, theInstr, abiinfo, &dres, allow_scv, + sigill_diag)) goto decode_success; goto decode_failure; diff --git a/VEX/pub/libvex.h b/VEX/pub/libvex.h index 143ec85e94..ec50d52ca9 100644 --- a/VEX/pub/libvex.h +++ b/VEX/pub/libvex.h @@ -362,6 +362,8 @@ typedef /* PPC32/PPC64 only: sizes zeroed by the dcbz/dcbzl instructions (bug#135264) */ UInt ppc_dcbz_szB; + /* PPC32/PPC64 only: True scv is supported */ + Bool ppc_scv_supported; UInt ppc_dcbzl_szB; /* 0 means unsupported (SIGILL) */ /* ARM64: I- and D- minimum line sizes in log2(bytes), as obtained from ctr_el0.DminLine and .IminLine. For example, a diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c index 95508ad1ed..48df8c1225 100644 --- a/coregrind/m_initimg/initimg-linux.c +++ b/coregrind/m_initimg/initimg-linux.c @@ -727,7 +727,7 @@ Addr setup_client_stack( void* init_sp, Bool auxv_2_07, hw_caps_2_07; Bool auxv_3_0, hw_caps_3_0; Bool auxv_3_1, hw_caps_3_1; - Bool auxv_scv_supported, hw_caps_scv_supported; + Bool auxv_scv_supported; /* The HWCAP2 field may contain an arch_2_07 entry that indicates * if the processor is compliant with the 2.07 ISA. (i.e. Power 8 @@ -799,17 +799,16 @@ Addr setup_client_stack( void* init_sp, ADD PUBLIC LINK WHEN AVAILABLE */ - /* Check for SCV support */ + /* Check for SCV support, Can not test scv instruction to see + if the system supports scv. Issuing an scv intruction on a + system that does not have scv in the HWCAPS results in a + message in dmsg "Facility 'SCV' unavailable (12), exception". + Will have to just use the scv setting from HWCAPS2 to determine + if the host supports scv. */ auxv_scv_supported = (auxv->u.a_val & 0x00100000ULL) == 0x00100000ULL; - hw_caps_scv_supported = - (vex_archinfo->hwcaps & VEX_HWCAPS_PPC64_SCV) - == VEX_HWCAPS_PPC64_SCV; - /* Verify the scv_supported setting in HWCAP2 matches the setting - in VEX HWCAPS. - */ - vg_assert(auxv_scv_supported == hw_caps_scv_supported); + VG_(machine_ppc64_set_scv_support)(auxv_scv_supported); /* ISA 3.1 */ auxv_3_1 = (auxv->u.a_val & 0x00040000ULL) == 0x00040000ULL; diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c index 7aa15133f5..052b5d186b 100644 --- a/coregrind/m_machine.c +++ b/coregrind/m_machine.c @@ -1251,6 +1251,8 @@ Bool VG_(machine_get_hwcaps)( void ) // ISA 3.1 not supported on 32-bit systems + // scv instruction not supported on 32-bit systems. + /* determine dcbz/dcbzl sizes while we still have the signal * handlers registered */ find_ppc_dcbz_sz(&vai); @@ -1289,6 +1291,7 @@ Bool VG_(machine_get_hwcaps)( void ) if (have_isa_2_07) vai.hwcaps |= VEX_HWCAPS_PPC32_ISA2_07; if (have_isa_3_0) vai.hwcaps |= VEX_HWCAPS_PPC32_ISA3_0; /* ISA 3.1 not supported on 32-bit systems. */ + /* SCV not supported on PPC32 */ VG_(machine_get_cache_info)(&vai); @@ -1306,7 +1309,6 @@ Bool VG_(machine_get_hwcaps)( void ) volatile Bool have_F, have_V, have_FX, have_GX, have_VX, have_DFP; volatile Bool have_isa_2_07, have_isa_3_0, have_isa_3_1; - volatile Bool have_scv_support; Int r; /* This is a kludge. Really we ought to back-convert saved_act @@ -1409,6 +1411,19 @@ Bool VG_(machine_get_hwcaps)( void ) __asm__ __volatile__(".long 0x7f140434":::"r20"); /* cnttzw r20,r24 */ } + /* Check if Host supports scv instruction. + Note, can not use the usual method of issuing the scv instruction and + checking if it is supported or not. Issuing scv on a system that does + not have scv support in the HWCAPS generates a message in dmesg, + "Facility 'SCV' unavailable (12), exception". It is considered bad + form to issue and scv on systems that do not support it. + + The function VG_(machine_ppc64_set_scv_support), is called in + initimg-linux.c to set the flag ppc_scv_supported based on HWCAPS2 + value. The flag ppc_scv_supported is defined struct VexArchInfo, + in file libvex.h The setting of ppc_scv_supported in VexArchInfo + is checked in disInstr_PPC_WRK() to set the allow_scv flag. */ + /* Check for ISA 3.1 support. */ have_isa_3_1 = True; if (VG_MINIMAL_SETJMP(env_unsup_insn)) { @@ -1417,18 +1432,6 @@ Bool VG_(machine_get_hwcaps)( void ) __asm__ __volatile__(".long 0x7f1401b6":::"r20"); /* brh r20,r24 */ } - /* Check if Host supports scv instruction */ - have_scv_support = True; - if (VG_MINIMAL_SETJMP(env_unsup_insn)) { - have_scv_support = False; - } else { - /* Set r0 to 13 for the system time call. Don't want to make a random - system call. */ - __asm__ __volatile__(".long 0x7c000278"); /* clear r0 with xor r0,r0,r0 */ - __asm__ __volatile__(".long 0x6000000d"); /* set r0 to 13 with ori r0,r0,13 */ - __asm__ __volatile__(".long 0x44000001"); /* scv 0 */ - } - /* determine dcbz/dcbzl sizes while we still have the signal * handlers registered */ find_ppc_dcbz_sz(&vai); @@ -1464,12 +1467,12 @@ Bool VG_(machine_get_hwcaps)( void ) if (have_isa_2_07) vai.hwcaps |= VEX_HWCAPS_PPC64_ISA2_07; if (have_isa_3_0) vai.hwcaps |= VEX_HWCAPS_PPC64_ISA3_0; if (have_isa_3_1) vai.hwcaps |= VEX_HWCAPS_PPC64_ISA3_1; - if (have_scv_support) vai.hwcaps |= VEX_HWCAPS_PPC64_SCV; VG_(machine_get_cache_info)(&vai); - /* But we're not done yet: VG_(machine_ppc64_set_clszB) must be - called before we're ready to go. */ + /* But we're not done yet: VG_(machine_ppc64_set_clszB) and + VG_(machine_ppc64_set_scv_support) must be called before we're + ready to go. */ return True; } @@ -2262,6 +2265,13 @@ void VG_(machine_ppc64_set_clszB)( Int szB ) vg_assert(szB == 16 || szB == 32 || szB == 64 || szB == 128); vai.ppc_icache_line_szB = szB; } + +void VG_(machine_ppc64_set_scv_support)( Int is_supported ) +{ + vg_assert(hwcaps_done); + vai.ppc_scv_supported = is_supported; +} + #endif diff --git a/coregrind/pub_core_machine.h b/coregrind/pub_core_machine.h index 38c9ce99c4..a9b7dd8b17 100644 --- a/coregrind/pub_core_machine.h +++ b/coregrind/pub_core_machine.h @@ -221,6 +221,7 @@ void VG_(get_UnwindStartRegs) ( /*OUT*/UnwindStartRegs* regs, ------------- ppc64: initially: call VG_(machine_get_hwcaps) call VG_(machine_ppc64_set_clszB) + call VG_(machine_ppc64_set_scv_support) then safe to use VG_(machine_get_VexArchInfo) and VG_(machine_ppc64_has_VMX) @@ -255,6 +256,7 @@ extern void VG_(machine_ppc32_set_clszB)( Int ); #if defined(VGA_ppc64be) || defined(VGA_ppc64le) extern void VG_(machine_ppc64_set_clszB)( Int ); +extern void VG_(machine_ppc64_set_scv_support)( Int ); #endif #if defined(VGA_arm) |
|
From: Andreas A. <ar...@so...> - 2022-02-18 18:57:05
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=03a8b24ae362f13c7f97746f72f40240aeb5aade commit 03a8b24ae362f13c7f97746f72f40240aeb5aade Author: Andreas Arnez <ar...@li...> Date: Wed Jan 5 19:49:19 2022 +0100 Bug 444552 - s390x: Fix sys_ipc semtimedop syscall On s390x Linux platforms the sys_ipc semtimedop call has four instead of five parameters, where the timeout is passed in the third instead of the fifth. Reflect this difference in the handling of VKI_SEMTIMEDOP. Diff: --- NEWS | 1 + coregrind/m_syswrap/syswrap-linux.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/NEWS b/NEWS index 3151e560ed..e4f2b71411 100644 --- a/NEWS +++ b/NEWS @@ -46,6 +46,7 @@ are not entered into bugzilla tend to get forgotten about or ignored. == 434283 444481 gdb_server test failures on s390x 444495 dhat/tests/copy fails on s390x +444552 memcheck/tests/sem fails on s390x with glibc 2.34 444571 PPC, fix the lxsibzx and lxsihzx so they only load their respective sized data. 444836 PPC, pstq instruction for R=1 is not storing to the correct address. diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index 792589766b..b9d531de38 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -4774,10 +4774,20 @@ PRE(sys_ipc) break; } case VKI_SEMTIMEDOP: +#ifdef VGP_s390x_linux + /* On s390x Linux platforms the sys_ipc semtimedop call has four instead + of five parameters, where the timeout is passed in the third instead of + the fifth. */ + PRE_REG_READ5(int, "ipc", + vki_uint, call, int, first, int, second, long, third, + void *, ptr); + ML_(generic_PRE_sys_semtimedop)( tid, ARG2, ARG5, ARG3, ARG4 ); +#else PRE_REG_READ6(int, "ipc", vki_uint, call, int, first, int, second, int, third, void *, ptr, long, fifth); ML_(generic_PRE_sys_semtimedop)( tid, ARG2, ARG5, ARG3, ARG6 ); +#endif *flags |= SfMayBlock; break; case VKI_MSGSND: |