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
(1) |
2
(1) |
|
3
(1) |
4
|
5
|
6
|
7
|
8
|
9
|
|
10
|
11
(4) |
12
(5) |
13
(2) |
14
(6) |
15
(2) |
16
(4) |
|
17
|
18
(2) |
19
|
20
(1) |
21
(4) |
22
|
23
|
|
24
|
25
|
26
(8) |
27
|
28
|
29
(2) |
30
|
|
From: Carl L. <ca...@so...> - 2018-06-21 22:29:35
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=9c5d762904862db0d90fb0142ac1b12d5647f607 commit 9c5d762904862db0d90fb0142ac1b12d5647f607 Author: Carl Love <ca...@us...> Date: Thu Jun 21 17:27:40 2018 -0500 PPC64, add support for the xvnegsp instruction. Add test case for the instruction. https://bugs.kde.org/show_bug.cgi?id=395709 Signed-off-by: Carl Love <ca...@us...> Diff: --- NEWS | 1 + VEX/priv/guest_ppc_toIR.c | 30 +++++++++++++++++++++++++ none/tests/ppc32/test_isa_2_06_part3.c | 6 +++++ none/tests/ppc64/test_isa_2_06_part3.stdout.exp | 6 +++++ 4 files changed, 43 insertions(+) diff --git a/NEWS b/NEWS index a04907a..0f15056 100644 --- a/NEWS +++ b/NEWS @@ -113,6 +113,7 @@ where XXXXXX is the bug number as listed below. 393023 callgrind_control risks using the wrong vgdb 393062 build-id ELF phdrs read causes "debuginfo reader: ensure_valid failed" 393099 posix_memalign() invalid write if alignment == 0 +395709 PPC64 is missing support for the xvnegsp instruction n-i-bz Fix missing workq_ops operations (macOS) n-i-bz fix bug in strspn replacement diff --git a/VEX/priv/guest_ppc_toIR.c b/VEX/priv/guest_ppc_toIR.c index 7fd7780..cb1cae1 100644 --- a/VEX/priv/guest_ppc_toIR.c +++ b/VEX/priv/guest_ppc_toIR.c @@ -17870,6 +17870,35 @@ dis_vxv_misc ( UInt theInstr, UInt opc2 ) } break; } + case 0x372: // xvnegsp (VSX Vector Negate Single-Precision) + { + IRTemp B0 = newTemp(Ity_I32); + IRTemp B1 = newTemp(Ity_I32); + IRTemp B2 = newTemp(Ity_I32); + IRTemp B3 = newTemp(Ity_I32); + + DIP("xvnegsp v%d,v%d\n", XT, XB); + + /* Don't support NegF32, so just XOR the sign bit in the int value */ + assign(B0, unop( Iop_64HIto32, + unop( Iop_V128HIto64, getVSReg( XB ) ) ) ); + assign(B1, unop( Iop_64to32, + unop( Iop_V128HIto64, getVSReg( XB ) ) ) ); + assign(B2, unop( Iop_64HIto32, + unop( Iop_V128to64, getVSReg( XB ) ) ) ); + assign(B3, unop( Iop_64to32, + unop( Iop_V128to64, getVSReg( XB ) ) ) ); + + putVSReg( XT, + binop( Iop_64HLtoV128, + binop( Iop_32HLto64, + binop( Iop_Xor32, mkexpr( B0 ), mkU32( 0x80000000 ) ), + binop( Iop_Xor32, mkexpr( B1 ), mkU32( 0x80000000 ) ) ), + binop( Iop_32HLto64, + binop( Iop_Xor32, mkexpr( B2 ), mkU32( 0x80000000 ) ), + binop( Iop_Xor32, mkexpr( B3 ), mkU32( 0x80000000 ) ) ) ) ); + break; + } case 0x3F2: // xvnegdp (VSX Vector Negate Double-Precision) { IRTemp frB = newTemp(Ity_F64); @@ -28418,6 +28447,7 @@ DisResult disInstr_PPC_WRK ( case 0x134: // xvresp case 0x1B4: // xvredp case 0x194: case 0x114: // xvrsqrtedp, xvrsqrtesp + case 0x372: // xvnegsp case 0x380: case 0x3A0: // xvmaxdp, xvmindp case 0x300: case 0x320: // xvmaxsp, xvminsp case 0x3C0: case 0x340: // xvcpsgndp, xvcpsgnsp diff --git a/none/tests/ppc32/test_isa_2_06_part3.c b/none/tests/ppc32/test_isa_2_06_part3.c index 5ebc1a5..9f80da2 100644 --- a/none/tests/ppc32/test_isa_2_06_part3.c +++ b/none/tests/ppc32/test_isa_2_06_part3.c @@ -765,6 +765,11 @@ static void test_xvnegdp(void) __asm__ __volatile__ ("xvnegdp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); } +static void test_xvnegsp(void) +{ + __asm__ __volatile__ ("xvnegsp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); +} + static void test_xvabssp(void) { __asm__ __volatile__ ("xvabssp %x0, %x1" : "=wa" (vec_out): "wa" (vec_inB)); @@ -850,6 +855,7 @@ vsx_one_fp_arg_tests[] = { { &test_xsrdpi, "xsrdpi", NULL, 20, DOUBLE_TEST, VX_CONV_TO_DOUBLE, "round"}, { &test_xvabsdp, "xvabsdp", NULL, 20, DOUBLE_TEST, VX_DEFAULT, "abs"}, { &test_xvnabsdp, "xvnabsdp", NULL, 20, DOUBLE_TEST, VX_DEFAULT, "nabs"}, + { &test_xvnegsp, "xvnegsp", NULL, 20, SINGLE_TEST, VX_DEFAULT, "neg"}, { &test_xvnegdp, "xvnegdp", NULL, 20, DOUBLE_TEST, VX_DEFAULT, "neg"}, { &test_xvabssp, "xvabssp", NULL, 20, SINGLE_TEST, VX_DEFAULT, "abs"}, { &test_xvnabssp, "xvnabssp", NULL, 20, SINGLE_TEST, VX_DEFAULT, "nabs"}, diff --git a/none/tests/ppc64/test_isa_2_06_part3.stdout.exp b/none/tests/ppc64/test_isa_2_06_part3.stdout.exp index 1658a6e..e976074 100644 --- a/none/tests/ppc64/test_isa_2_06_part3.stdout.exp +++ b/none/tests/ppc64/test_isa_2_06_part3.stdout.exp @@ -310,6 +310,12 @@ Test VSX vector and scalar single argument instructions #8: xvnabsdp nabs(41382511a2000000) = c1382511a2000000; nabs(40312ef5a9300000) = c0312ef5a9300000 #9: xvnabsdp nabs(40514bf5d2300000) = c0514bf5d2300000; nabs(40976bf982440000) = c0976bf982440000 +#0: xvnegsp neg(3ec00000) = bec00000; neg(42780000) = c2780000; neg(00000000) = 80000000; neg(7f800000) = ff800000 +#1: xvnegsp neg(00000000) = 80000000; neg(00000000) = 80000000; neg(80000000) = 00000000; neg(7f800000) = ff800000 +#2: xvnegsp neg(ff800000) = 7f800000; neg(7fbfffff) = ffbfffff; neg(ffbfffff) = 7fbfffff; neg(7fc00000) = ffc00000 +#3: xvnegsp neg(ffc00000) = 7fc00000; neg(80000000) = 00000000; neg(c683287b) = 4683287b; neg(49192c2d) = c9192c2d +#4: xvnegsp neg(49c1288d) = c9c1288d; neg(418977ad) = c18977ad; neg(428a5faf) = c28a5faf; neg(44bb5fcc) = c4bb5fcc + #0: xvnegdp neg(3fd8000000000000) = bfd8000000000000; neg(404f000000000000) = c04f000000000000 #1: xvnegdp neg(0018000000b77501) = 8018000000b77501; neg(7fe800000000051b) = ffe800000000051b #2: xvnegdp neg(0123214569900000) = 8123214569900000; neg(0000000000000000) = 8000000000000000 |
|
From: Petar J. <pe...@so...> - 2018-06-21 10:02:25
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=19101881244cabaaf354340b7d2398e9154fa043 commit 19101881244cabaaf354340b7d2398e9154fa043 Author: Petar Jovanovic <mip...@gm...> Date: Thu Jun 21 11:59:20 2018 +0200 Add processing of sized delete operators into filter_libc C++14 introduces sized delete operators and Valgrind support is added by 6ef6f73. In addition, stderr filter which is used by Regtest should be able to recognize this particular form in error report (just like the other kinds of delete operators) in order to provide uniform output. Fixes memcheck/tests/mismatches failure on non C++14 builds. Patch by Aleksandar Rikalo. Diff: --- memcheck/tests/mismatches.stderr.exp | 4 ++-- tests/filter_libc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/memcheck/tests/mismatches.stderr.exp b/memcheck/tests/mismatches.stderr.exp index af5eae0..b3659c5 100644 --- a/memcheck/tests/mismatches.stderr.exp +++ b/memcheck/tests/mismatches.stderr.exp @@ -1,5 +1,5 @@ Mismatched free() / delete / delete [] - at 0x........: operator delete(void*, unsigned long) (vg_replace_malloc.c:...) + at 0x........: ...operator delete... (vg_replace_malloc.c:...) by 0x........: main (mismatches.cpp:6) Address 0x........ is 0 bytes inside a block of size 10 alloc'd at 0x........: malloc (vg_replace_malloc.c:...) @@ -13,7 +13,7 @@ Mismatched free() / delete / delete [] by 0x........: main (mismatches.cpp:7) Mismatched free() / delete / delete [] - at 0x........: operator delete(void*, unsigned long) (vg_replace_malloc.c:...) + at 0x........: ...operator delete... (vg_replace_malloc.c:...) by 0x........: main (mismatches.cpp:13) Address 0x........ is 0 bytes inside a block of size 40 alloc'd at 0x........: ...operator new[]... (vg_replace_malloc.c:...) diff --git a/tests/filter_libc b/tests/filter_libc index 9a508b0..9607db5 100755 --- a/tests/filter_libc +++ b/tests/filter_libc @@ -31,7 +31,7 @@ while (<>) s/(at.*)operator new\[\]\(unsigned(| int| long)\)/$1...operator new[].../; s/(at.*)__builtin_delete/$1...operator delete.../; - s/(at.*)operator delete\(void\*\)/$1...operator delete.../; + s/(at.*)operator delete\(void\*(, unsigned(| int| long))?\)/$1...operator delete.../; s/(at.*)__builtin_vec_delete/$1...operator delete[].../; s/(at.*)operator delete\[\]\(void\*\)/$1...operator delete[].../; |
|
From: Mark W. <ma...@so...> - 2018-06-21 06:25:50
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=6fbd9bf771494a4c547c6649cf90ae285fb709ae commit 6fbd9bf771494a4c547c6649cf90ae285fb709ae Author: Mark Wielaard <ma...@kl...> Date: Tue Jun 19 18:26:43 2018 +0200 Implement ptrace syscall wrapper for arm64-linux. With this valgrind is able to run gdb on arm64. Also fixes the memcheck/tests/linux/getregset testcase. https://bugs.kde.org/show_bug.cgi?id=368913 Diff: --- NEWS | 1 + coregrind/m_syswrap/syswrap-arm64-linux.c | 199 ++++++++++-------------------- 2 files changed, 67 insertions(+), 133 deletions(-) diff --git a/NEWS b/NEWS index 4fe7522..a04907a 100644 --- a/NEWS +++ b/NEWS @@ -60,6 +60,7 @@ where XXXXXX is the bug number as listed below. 255603 exp-sgcheck Assertion '!already_present' failed 338252 building valgrind with -flto (link time optimisation) fails 345763 MIPS N32 ABI support +368913 WARNING: unhandled arm64-linux syscall: 117 (ptrace) 372347 Replacement problem of the additional c++14/c++17 new and delete operators 376257 helgrind history full speed up using a cached stack 379373 Fix syscall param msg->desc.port.name points to uninitialised byte(s) diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c index 32b87bf..24a6493 100644 --- a/coregrind/m_syswrap/syswrap-arm64-linux.c +++ b/coregrind/m_syswrap/syswrap-arm64-linux.c @@ -265,7 +265,7 @@ DECL_TEMPLATE(arm64_linux, sys_rt_sigreturn); //ZZ DECL_TEMPLATE(arm_linux, sys_sigsuspend); //ZZ DECL_TEMPLATE(arm_linux, sys_set_tls); //ZZ DECL_TEMPLATE(arm_linux, sys_cacheflush); -//ZZ DECL_TEMPLATE(arm_linux, sys_ptrace); +DECL_TEMPLATE(arm64_linux, sys_ptrace); //ZZ PRE(sys_mmap2) //ZZ { @@ -459,137 +459,70 @@ PRE(sys_rt_sigreturn) //ZZ "PRE(sys_cacheflush)" ); //ZZ SET_STATUS_Success(0); //ZZ } -//ZZ -//ZZ // ARG3 is only used for pointers into the traced process's address -//ZZ // space and for offsets into the traced process's struct -//ZZ // user_regs_struct. It is never a pointer into this process's memory -//ZZ // space, and we should therefore not check anything it points to. -//ZZ PRE(sys_ptrace) -//ZZ { -//ZZ PRINT("sys_ptrace ( %ld, %ld, %#lx, %#lx )", ARG1,ARG2,ARG3,ARG4); -//ZZ PRE_REG_READ4(int, "ptrace", -//ZZ long, request, long, pid, long, addr, long, data); -//ZZ switch (ARG1) { -//ZZ case VKI_PTRACE_PEEKTEXT: -//ZZ case VKI_PTRACE_PEEKDATA: -//ZZ case VKI_PTRACE_PEEKUSR: -//ZZ PRE_MEM_WRITE( "ptrace(peek)", ARG4, -//ZZ sizeof (long)); -//ZZ break; -//ZZ case VKI_PTRACE_GETREGS: -//ZZ PRE_MEM_WRITE( "ptrace(getregs)", ARG4, -//ZZ sizeof (struct vki_user_regs_struct)); -//ZZ break; -//ZZ case VKI_PTRACE_GETFPREGS: -//ZZ PRE_MEM_WRITE( "ptrace(getfpregs)", ARG4, -//ZZ sizeof (struct vki_user_fp)); -//ZZ break; -//ZZ case VKI_PTRACE_GETWMMXREGS: -//ZZ PRE_MEM_WRITE( "ptrace(getwmmxregs)", ARG4, -//ZZ VKI_IWMMXT_SIZE); -//ZZ break; -//ZZ case VKI_PTRACE_GETCRUNCHREGS: -//ZZ PRE_MEM_WRITE( "ptrace(getcrunchregs)", ARG4, -//ZZ VKI_CRUNCH_SIZE); -//ZZ break; -//ZZ case VKI_PTRACE_GETVFPREGS: -//ZZ PRE_MEM_WRITE( "ptrace(getvfpregs)", ARG4, -//ZZ sizeof (struct vki_user_vfp) ); -//ZZ break; -//ZZ case VKI_PTRACE_GETHBPREGS: -//ZZ PRE_MEM_WRITE( "ptrace(gethbpregs)", ARG4, -//ZZ sizeof (unsigned long) ); -//ZZ break; -//ZZ case VKI_PTRACE_SETREGS: -//ZZ PRE_MEM_READ( "ptrace(setregs)", ARG4, -//ZZ sizeof (struct vki_user_regs_struct)); -//ZZ break; -//ZZ case VKI_PTRACE_SETFPREGS: -//ZZ PRE_MEM_READ( "ptrace(setfpregs)", ARG4, -//ZZ sizeof (struct vki_user_fp)); -//ZZ break; -//ZZ case VKI_PTRACE_SETWMMXREGS: -//ZZ PRE_MEM_READ( "ptrace(setwmmxregs)", ARG4, -//ZZ VKI_IWMMXT_SIZE); -//ZZ break; -//ZZ case VKI_PTRACE_SETCRUNCHREGS: -//ZZ PRE_MEM_READ( "ptrace(setcrunchregs)", ARG4, -//ZZ VKI_CRUNCH_SIZE); -//ZZ break; -//ZZ case VKI_PTRACE_SETVFPREGS: -//ZZ PRE_MEM_READ( "ptrace(setvfpregs)", ARG4, -//ZZ sizeof (struct vki_user_vfp)); -//ZZ break; -//ZZ case VKI_PTRACE_SETHBPREGS: -//ZZ PRE_MEM_READ( "ptrace(sethbpregs)", ARG4, sizeof(unsigned long)); -//ZZ break; -//ZZ case VKI_PTRACE_GET_THREAD_AREA: -//ZZ PRE_MEM_WRITE( "ptrace(get_thread_area)", ARG4, sizeof(unsigned long)); -//ZZ break; -//ZZ case VKI_PTRACE_GETEVENTMSG: -//ZZ PRE_MEM_WRITE( "ptrace(geteventmsg)", ARG4, sizeof(unsigned long)); -//ZZ break; -//ZZ case VKI_PTRACE_GETSIGINFO: -//ZZ PRE_MEM_WRITE( "ptrace(getsiginfo)", ARG4, sizeof(vki_siginfo_t)); -//ZZ break; -//ZZ case VKI_PTRACE_SETSIGINFO: -//ZZ PRE_MEM_READ( "ptrace(setsiginfo)", ARG4, sizeof(vki_siginfo_t)); -//ZZ break; -//ZZ case VKI_PTRACE_GETREGSET: -//ZZ ML_(linux_PRE_getregset)(tid, ARG3, ARG4); -//ZZ break; -//ZZ case VKI_PTRACE_SETREGSET: -//ZZ ML_(linux_PRE_setregset)(tid, ARG3, ARG4); -//ZZ break; -//ZZ default: -//ZZ break; -//ZZ } -//ZZ } -//ZZ -//ZZ POST(sys_ptrace) -//ZZ { -//ZZ switch (ARG1) { -//ZZ case VKI_PTRACE_PEEKTEXT: -//ZZ case VKI_PTRACE_PEEKDATA: -//ZZ case VKI_PTRACE_PEEKUSR: -//ZZ POST_MEM_WRITE( ARG4, sizeof (long)); -//ZZ break; -//ZZ case VKI_PTRACE_GETREGS: -//ZZ POST_MEM_WRITE( ARG4, sizeof (struct vki_user_regs_struct)); -//ZZ break; -//ZZ case VKI_PTRACE_GETFPREGS: -//ZZ POST_MEM_WRITE( ARG4, sizeof (struct vki_user_fp)); -//ZZ break; -//ZZ case VKI_PTRACE_GETWMMXREGS: -//ZZ POST_MEM_WRITE( ARG4, VKI_IWMMXT_SIZE); -//ZZ break; -//ZZ case VKI_PTRACE_GETCRUNCHREGS: -//ZZ POST_MEM_WRITE( ARG4, VKI_CRUNCH_SIZE); -//ZZ break; -//ZZ case VKI_PTRACE_GETVFPREGS: -//ZZ POST_MEM_WRITE( ARG4, sizeof(struct vki_user_vfp)); -//ZZ break; -//ZZ case VKI_PTRACE_GET_THREAD_AREA: -//ZZ case VKI_PTRACE_GETHBPREGS: -//ZZ case VKI_PTRACE_GETEVENTMSG: -//ZZ POST_MEM_WRITE( ARG4, sizeof(unsigned long)); -//ZZ break; -//ZZ case VKI_PTRACE_GETSIGINFO: -//ZZ /* XXX: This is a simplification. Different parts of the -//ZZ * siginfo_t are valid depending on the type of signal. -//ZZ */ -//ZZ POST_MEM_WRITE( ARG4, sizeof(vki_siginfo_t)); -//ZZ break; -//ZZ case VKI_PTRACE_GETREGSET: -//ZZ ML_(linux_POST_getregset)(tid, ARG3, ARG4); -//ZZ break; -//ZZ default: -//ZZ break; -//ZZ } -//ZZ } -//ZZ -//ZZ #undef PRE -//ZZ #undef POST + +// ARG3 is only used for pointers into the traced process's address +// space and for offsets into the traced process's struct +// user_regs_struct. It is never a pointer into this process's memory +// space, and we should therefore not check anything it points to. +PRE(sys_ptrace) +{ + PRINT("sys_ptrace ( %ld, %ld, %#lx, %#lx )", ARG1,ARG2,ARG3,ARG4); + PRE_REG_READ4(int, "ptrace", + long, request, long, pid, long, addr, long, data); + switch (ARG1) { + case VKI_PTRACE_PEEKTEXT: + case VKI_PTRACE_PEEKDATA: + case VKI_PTRACE_PEEKUSR: + PRE_MEM_WRITE( "ptrace(peek)", ARG4, + sizeof (long)); + break; + case VKI_PTRACE_GETEVENTMSG: + PRE_MEM_WRITE( "ptrace(geteventmsg)", ARG4, sizeof(unsigned long)); + break; + case VKI_PTRACE_GETSIGINFO: + PRE_MEM_WRITE( "ptrace(getsiginfo)", ARG4, sizeof(vki_siginfo_t)); + break; + case VKI_PTRACE_SETSIGINFO: + PRE_MEM_READ( "ptrace(setsiginfo)", ARG4, sizeof(vki_siginfo_t)); + break; + case VKI_PTRACE_GETREGSET: + ML_(linux_PRE_getregset)(tid, ARG3, ARG4); + break; + case VKI_PTRACE_SETREGSET: + ML_(linux_PRE_setregset)(tid, ARG3, ARG4); + break; + default: + break; + } +} + +POST(sys_ptrace) +{ + switch (ARG1) { + case VKI_PTRACE_PEEKTEXT: + case VKI_PTRACE_PEEKDATA: + case VKI_PTRACE_PEEKUSR: + POST_MEM_WRITE( ARG4, sizeof (long)); + break; + case VKI_PTRACE_GETEVENTMSG: + POST_MEM_WRITE( ARG4, sizeof(unsigned long)); + break; + case VKI_PTRACE_GETSIGINFO: + /* XXX: This is a simplification. Different parts of the + * siginfo_t are valid depending on the type of signal. + */ + POST_MEM_WRITE( ARG4, sizeof(vki_siginfo_t)); + break; + case VKI_PTRACE_GETREGSET: + ML_(linux_POST_getregset)(tid, ARG3, ARG4); + break; + default: + break; + } +} + +#undef PRE +#undef POST /* --------------------------------------------------------------------- The arm64/Linux syscall table @@ -730,7 +663,7 @@ static SyscallTableEntry syscall_main_table[] = { LINXY(__NR_clock_getres, sys_clock_getres), // 114 LINXY(__NR_clock_nanosleep, sys_clock_nanosleep), // 115 LINXY(__NR_syslog, sys_syslog), // 116 - // (__NR_ptrace, sys_ptrace), // 117 + PLAXY(__NR_ptrace, sys_ptrace), // 117 LINXY(__NR_sched_setparam, sys_sched_setparam), // 118 LINX_(__NR_sched_setscheduler,sys_sched_setscheduler),// 119 LINX_(__NR_sched_getscheduler,sys_sched_getscheduler),// 120 |
|
From: Mark W. <ma...@so...> - 2018-06-21 06:25:45
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=fbbb696c5d1e93d4ac6cb548c68bb3f443ceef42 commit fbbb696c5d1e93d4ac6cb548c68bb3f443ceef42 Author: Mark Wielaard <ma...@kl...> Date: Tue Jun 19 18:00:45 2018 +0200 Mask AT_HWCAPS on arm64 to those instructions VEX implements. This patch makes sure that the process running under valgrind only sees the AES, PMULL, SHA1, SHA2, CRC32, FP, and ASIMD features in auxv AT_HWCAPS. https://bugs.kde.org/show_bug.cgi?id=381556 Diff: --- NEWS | 1 + coregrind/m_initimg/initimg-linux.c | 13 ++++++++++--- include/vki/vki-arm64-linux.h | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 0044971..4fe7522 100644 --- a/NEWS +++ b/NEWS @@ -71,6 +71,7 @@ where XXXXXX is the bug number as listed below. 381289 epoll_pwait can have a NULL sigmask 381274 powerpc too chatty even with --sigill-diagnostics=no 381553 VEX register allocator v3 +381556 arm64: Handle feature registers access on 4.11 Linux kernel or later 381769 Use ucontext_t instead of struct ucontext 381805 arm32 needs ld.so index hardwire for new glibc security fixes 382256 gz compiler flag test doesn't work for gold diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c index 14b48dc..61cc458 100644 --- a/coregrind/m_initimg/initimg-linux.c +++ b/coregrind/m_initimg/initimg-linux.c @@ -705,9 +705,16 @@ Addr setup_client_stack( void* init_sp, } # elif defined(VGP_arm64_linux) { - /* Linux 4.11 started pupulating this for arm64, but we - currently don't support any. Bug KDE#381556. */ - auxv->u.a_val = 0; + /* Limit the AT_HWCAP to just those features we explicitly + support in VEX. */ +#define ARM64_SUPPORTED_HWCAP (VKI_HWCAP_AES \ + | VKI_HWCAP_PMULL \ + | VKI_HWCAP_SHA1 \ + | VKI_HWCAP_SHA2 \ + | VKI_HWCAP_CRC32 \ + | VKI_HWCAP_FP \ + | VKI_HWCAP_ASIMD) + auxv->u.a_val &= ARM64_SUPPORTED_HWCAP; } # endif break; diff --git a/include/vki/vki-arm64-linux.h b/include/vki/vki-arm64-linux.h index af6b435..54b0428 100644 --- a/include/vki/vki-arm64-linux.h +++ b/include/vki/vki-arm64-linux.h @@ -692,6 +692,39 @@ struct vki_shminfo64 { #define VKI_TIOCSSERIAL 0x541F //---------------------------------------------------------------------- +// From linux-4.17/include/uapi/asm-generic/ioctls.h +//---------------------------------------------------------------------- + +#define VKI_HWCAP_FP (1 << 0) +#define VKI_HWCAP_ASIMD (1 << 1) +#define VKI_HWCAP_EVTSTRM (1 << 2) +#define VKI_HWCAP_AES (1 << 3) +#define VKI_HWCAP_PMULL (1 << 4) +#define VKI_HWCAP_SHA1 (1 << 5) +#define VKI_HWCAP_SHA2 (1 << 6) +#define VKI_HWCAP_CRC32 (1 << 7) +#define VKI_HWCAP_ATOMICS (1 << 8) +#define VKI_HWCAP_FPHP (1 << 9) +#define VKI_HWCAP_ASIMDHP (1 << 10) +#define VKI_HWCAP_CPUID (1 << 11) +#define VKI_HWCAP_ASIMDRDM (1 << 12) +#define VKI_HWCAP_JSCVT (1 << 13) +#define VKI_HWCAP_FCMA (1 << 14) +#define VKI_HWCAP_LRCPC (1 << 15) +#define VKI_HWCAP_DCPOP (1 << 16) +#define VKI_HWCAP_SHA3 (1 << 17) +#define VKI_HWCAP_SM3 (1 << 18) +#define VKI_HWCAP_SM4 (1 << 19) +#define VKI_HWCAP_ASIMDDP (1 << 20) +#define VKI_HWCAP_SHA512 (1 << 21) +#define VKI_HWCAP_SVE (1 << 22) +#define VKI_HWCAP_ASIMDFHM (1 << 23) +#define VKI_HWCAP_DIT (1 << 24) +#define VKI_HWCAP_USCAT (1 << 25) +#define VKI_HWCAP_ILRCPC (1 << 26) +#define VKI_HWCAP_FLAGM (1 << 27) + +//---------------------------------------------------------------------- // And that's it! //---------------------------------------------------------------------- |