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
(4) |
3
(9) |
4
(11) |
5
(16) |
6
(6) |
7
(1) |
8
(11) |
|
9
(11) |
10
(6) |
11
(10) |
12
(23) |
13
(23) |
14
(6) |
15
(10) |
|
16
(5) |
17
(13) |
18
(9) |
19
(4) |
20
(6) |
21
(16) |
22
(3) |
|
23
(5) |
24
(7) |
25
(6) |
26
(4) |
27
(8) |
28
|
29
(3) |
|
30
(2) |
31
(17) |
|
|
|
|
|
|
From: <sv...@va...> - 2015-08-17 21:19:26
|
Author: sewardj
Date: Mon Aug 17 22:19:19 2015
New Revision: 15563
Log:
Fix a format string error observed whilst building on OSX 10.10.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
==============================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c (original)
+++ trunk/coregrind/m_debuginfo/debuginfo.c Mon Aug 17 22:19:19 2015
@@ -622,8 +622,8 @@
for (i = 0; i < n; i++) {
const DebugInfoMapping* map = VG_(indexXA)(maps, i);
TRACE_SYMTAB(" [%ld] avma 0x%-16lx size %-8lu "
- "foff %-8ld %s %s %s\n",
- i, map->avma, map->size, map->foff,
+ "foff %-8lld %s %s %s\n",
+ i, map->avma, map->size, (Long)map->foff,
map->rx ? "rx" : "--",
map->rw ? "rw" : "--",
map->ro ? "ro" : "--");
|
|
From: <sv...@va...> - 2015-08-17 19:13:19
|
Author: iraisr
Date: Mon Aug 17 20:13:12 2015
New Revision: 15562
Log:
Runtime linker ld.so.1 can be now run under Valgrind on Solaris.
Fixes BZ#351386.
Modified:
trunk/NEWS
trunk/coregrind/m_initimg/initimg-solaris.c
trunk/coregrind/m_ume/elf.c
trunk/coregrind/pub_core_ume.h
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Mon Aug 17 20:13:12 2015
@@ -306,6 +306,7 @@
350813 Use handwritten memcheck assembly helpers on x86/Solaris in addition to {arm,x86}-linux
350854 hard-to-understand code in VG_(load_ELF)()
351140 arm64 syscalls setuid (146) and setresgid (149) not implemented
+351386 Cannot run ld.so.1 under Valgrind
n-i-bz Provide implementations of certain compiler builtins to support
compilers who may not provide those
n-i-bz Old STABS code is still being compiled, but never used. Remove it.
Modified: trunk/coregrind/m_initimg/initimg-solaris.c
==============================================================================
--- trunk/coregrind/m_initimg/initimg-solaris.c (original)
+++ trunk/coregrind/m_initimg/initimg-solaris.c Mon Aug 17 20:13:12 2015
@@ -367,7 +367,7 @@
AT_SUN_PLATFORM
AT_SUN_EXECNAME
- AT_PHDR
+ AT_PHDR (not for elfs with no PT_PHDR, such as ld.so.1)
AT_BASE
AT_FLAGS
AT_PAGESZ
@@ -538,7 +538,7 @@
auxv++;
/* AT_PHDR */
- if (info->phdr) {
+ if ((info->real_phdr_present) && (info->phdr != 0)) {
auxv->a_type = VKI_AT_PHDR;
auxv->a_un.a_val = info->phdr;
auxv++;
Modified: trunk/coregrind/m_ume/elf.c
==============================================================================
--- trunk/coregrind/m_ume/elf.c (original)
+++ trunk/coregrind/m_ume/elf.c Mon Aug 17 20:13:12 2015
@@ -350,6 +350,11 @@
if (ebase < hacky_load_address)
ebase = hacky_load_address;
# endif
+
+# if defined(VGO_solaris)
+ /* Record for later use in AT_BASE. */
+ info->interp_offset = ebase;
+# endif
}
info->phnum = e->e.e_phnum;
@@ -363,6 +368,9 @@
switch(ph->p_type) {
case PT_PHDR:
info->phdr = ph->p_vaddr + ebase;
+# if defined(VGO_solaris)
+ info->real_phdr_present = True;
+# endif
break;
case PT_LOAD:
Modified: trunk/coregrind/pub_core_ume.h
==============================================================================
--- trunk/coregrind/pub_core_ume.h (original)
+++ trunk/coregrind/pub_core_ume.h Mon Aug 17 20:13:12 2015
@@ -65,7 +65,8 @@
#endif
#if defined(VGO_solaris)
- Addr init_thrptr; // OUT: architecture-specific user per-thread location
+ Addr init_thrptr; // OUT: architecture-specific user per-thread location
+ Bool real_phdr_present; // OUT: PT_PHDR found, include phdr in auxv
#endif
Addr entry; // OUT: entrypoint in main executable
|
|
From: Mark W. <mj...@re...> - 2015-08-17 17:56:28
|
On Mon, 2015-08-17 at 19:46 +0200, Florian Krohm wrote: > My bad. Thanks for the fix. I've come to rely on > make post-regtest-checks to find ommission of files in Makefile.am > In this case there was no complaining about bug338606 being missing. > > Hmm I wonder whether the script could be beefed up a bit. Perhaps along > those lines: > Let L be the list of files in a directory. > Let I be the list of files matching the patterns in svn:ignore. > > Then L-I is the list of files that should be shipped (included in the > tarball). Where "should be shipped" means (in this case) to be in the > list of files for EXTRA_DIST or dist_noinst_SCRIPTS. I must admit I didn't do anything fancy like that. I just did a make dist and then used that dist to build/test. Then I saw that test fail because of the missing file. Cheers, Mark |
|
From: Florian K. <fl...@ei...> - 2015-08-17 17:46:59
|
My bad. Thanks for the fix. I've come to rely on make post-regtest-checks to find ommission of files in Makefile.am In this case there was no complaining about bug338606 being missing. Hmm I wonder whether the script could be beefed up a bit. Perhaps along those lines: Let L be the list of files in a directory. Let I be the list of files matching the patterns in svn:ignore. Then L-I is the list of files that should be shipped (included in the tarball). Where "should be shipped" means (in this case) to be in the list of files for EXTRA_DIST or dist_noinst_SCRIPTS. I'm copying Bart who wrote the script some time ago for any insight as to whether this might be workable. Florian On 17.08.2015 17:18, sv...@va... wrote: > Author: mjw > Date: Mon Aug 17 16:18:02 2015 > New Revision: 15561 > > Log: > Add bug338606 testfile to none/tests/scripts/Makefile.am EXTRA_DIST. > > Modified: > trunk/none/tests/scripts/Makefile.am > > Modified: trunk/none/tests/scripts/Makefile.am > ============================================================================== > --- trunk/none/tests/scripts/Makefile.am (original) > +++ trunk/none/tests/scripts/Makefile.am Mon Aug 17 16:18:02 2015 > @@ -9,7 +9,7 @@ > EXTRA_DIST = \ > say-hello.helper \ > bug231357.vgtest bug231357.stderr.exp bug231357.stdout.exp \ > - bug338606.vgtest bug338606.stderr.exp \ > + bug338606 bug338606.vgtest bug338606.stderr.exp \ > shell shell.vgtest shell.stderr.exp shell.stderr.exp-dash \ > shell.stdout.exp shell.stderr.exp-dash2 shell.stderr.exp-illumos \ > shell.stderr.exp-solaris shell.stderr.exp-solaris-spawn \ > > > ------------------------------------------------------------------------------ > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > |
|
From: Ivo R. <ivo...@gm...> - 2015-08-17 17:05:56
|
2015-08-17 16:36 GMT+02:00 Julian Seward <js...@ac...>: > On 17/08/15 10:12, Ivo Raisr wrote: > > Please could you review proposed patch for bug: > > 351386 Cannot run ld.so.1 under Valgrind > > (https://bugs.kde.org/show_bug.cgi?id=351386) > > and my findings posted there? > > Looks fine to me. My only thought is, is info->real_phdr_present > always guaranteed to be initialised (to something)? It may be that > the whole struct is zeroed out right at the start. Is that so? > Yes, it is. On all OSes it is initialized with VG_(memset)() in load_client() located in corresponding m_initimg/initimg-<os>.c right before VG_(do_exec)() is called. Thank you for review! I. |
|
From: <sv...@va...> - 2015-08-17 15:18:09
|
Author: mjw
Date: Mon Aug 17 16:18:02 2015
New Revision: 15561
Log:
Add bug338606 testfile to none/tests/scripts/Makefile.am EXTRA_DIST.
Modified:
trunk/none/tests/scripts/Makefile.am
Modified: trunk/none/tests/scripts/Makefile.am
==============================================================================
--- trunk/none/tests/scripts/Makefile.am (original)
+++ trunk/none/tests/scripts/Makefile.am Mon Aug 17 16:18:02 2015
@@ -9,7 +9,7 @@
EXTRA_DIST = \
say-hello.helper \
bug231357.vgtest bug231357.stderr.exp bug231357.stdout.exp \
- bug338606.vgtest bug338606.stderr.exp \
+ bug338606 bug338606.vgtest bug338606.stderr.exp \
shell shell.vgtest shell.stderr.exp shell.stderr.exp-dash \
shell.stdout.exp shell.stderr.exp-dash2 shell.stderr.exp-illumos \
shell.stderr.exp-solaris shell.stderr.exp-solaris-spawn \
|
|
From: Julian S. <js...@ac...> - 2015-08-17 14:37:03
|
On 17/08/15 10:12, Ivo Raisr wrote: > Please could you review proposed patch for bug: > 351386 Cannot run ld.so.1 under Valgrind > (https://bugs.kde.org/show_bug.cgi?id=351386) > and my findings posted there? Looks fine to me. My only thought is, is info->real_phdr_present always guaranteed to be initialised (to something)? It may be that the whole struct is zeroed out right at the start. Is that so? J |
|
From: <sv...@va...> - 2015-08-17 14:03:24
|
Author: sewardj
Date: Mon Aug 17 15:03:16 2015
New Revision: 15560
Log:
Update.
Modified:
trunk/NEWS
trunk/docs/internals/3_10_BUGSTATUS.txt
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Mon Aug 17 15:03:16 2015
@@ -138,6 +138,7 @@
333051 mmap of huge pages fails due to incorrect alignment
== 339163
334802 valgrind does not always explain why a given option is bad
+335618 mov.w rN, pc/sp (ARM32)
335785 amd64->IR 0xC4 0xE2 0x75 0x2F (vmaskmovpd)
== 307399
== 343175
@@ -160,6 +161,7 @@
tronical and pushfpopf tests)
339745 Valgrind crash when check Marmalade app (partial fix)
339755 Fix known deliberate memory leak in setenv() on Mac OS X 10.9
+339778 Linux/TileGx platform support for Valgrind
339780 Fix known uninitialised read in pthread_rwlock_init() on Mac OS X 10.9
339789 Fix none/tests/execve test on Mac OS X 10.9
339808 Fix none/tests/rlimit64_nofile test on Mac OS X 10.9
@@ -175,6 +177,7 @@
341698 Valgrind's AESKEYGENASSIST gives wrong result in words 0 and 2
when dest register = source register
341789 aarch64: shmat fails with valgrind on ARMv8
+341997 MIPS64: Cavium OCTEON insns - immediate operand handled incorrectly
342038 Unhandled syscalls on aarch64 (mbind/get/set_mempolicy)
342063 wrong format specifier for test mcblocklistsearch in gdbserver_tests
342221 socket connect false positive uninit memory for unknown af family
@@ -186,6 +189,7 @@
342603 Add I2C_SMBUS ioctl support
342635 OS X 10.10 (Yosemite) - missing system calls and fcntl code
342683 Mark memory past the initial brk limit as unaddressable
+342783 arm: unhandled instruction 0xEEFE1ACA = "vcvt.s32.f32 s3, s3, #12"
342795 Internal glibc __GI_mempcpy call should be intercepted
342841 s390x: Support instructions fiebr(a) and fidbr(a)
343012 Unhandled syscall 319 (memfd_create)
@@ -238,6 +242,7 @@
345016 helgrind/tests/locked_vs_unlocked2 is failing sometimes
345079 Fix build problems in VEX/useful/test_main.c
345126 Incorrect handling of VIDIOC_G_AUDIO and G_AUDOUT
+345177 arm64: prfm (reg) not implemented
345215 Performance improvements for the register allocator
345338 TIOCGSERIAL and TIOCSSERIAL ioctl support on Linux
345394 Fix memcheck/tests/strchr on OS X
@@ -247,6 +252,7 @@
345887 Fix an assertion in the address space manager
345928 amd64: callstack only contains current function for small stacks
345987 MIPS64: Implement cavium LHX instruction
+346031 MIPS: Implement support for the CvmCount register (rhwr %0, 31)
346267 Compiler warnings for PPC64 code on call to LibVEX_GuestPPC64_get_XER()
and LibVEX_GuestPPC64_get_CR()
346270 Regression tests none/tests/jm_vec/isa_2_07 and
@@ -274,6 +280,8 @@
348102 Patch updating v4l2 API support
348247 jno jumps wrongly when overflow is not set
348269 Improve mmap MAP_HUGETLB support.
+348345 Assertion fails for negative lineno
+348377 Unsupported ARM instruction: yield
348565 Fix detection of command line option availability for clang
348574 vex amd64->IR pcmpistri SSE4.2 unsupported (pcmpistri $0x18)
348728 Fix broken check for VIDIOC_G_ENC_INDEX
@@ -287,8 +295,9 @@
reply 0x........] (task_set_special_port)
349626 Implemented additional Xen hypercalls
349769 Fix clang/osx: ld: warning: -read_only_relocs cannot be used with x86_64
-349874 Fix typos in source code
349828 memcpy intercepts memmove causing src/dst overlap error (ppc64 ld.so)
+349874 Fix typos in source code
+349879 memcheck: add handwritten assembly for helperc_LOADV*
349941 di_notify_mmap might create wrong start/size DebugInfoMapping
350062 vex x86->IR: unhandled instruction bytes: 0x66 0xF 0x3A 0xB (ROUNDSD) on OS X
350202 Add limited param to 'monitor block_list'
Modified: trunk/docs/internals/3_10_BUGSTATUS.txt
==============================================================================
--- trunk/docs/internals/3_10_BUGSTATUS.txt (original)
+++ trunk/docs/internals/3_10_BUGSTATUS.txt Mon Aug 17 15:03:16 2015
@@ -19,37 +19,21 @@
=== VEX/arm ============================================================
-335618 mov.w rN, pc/sp (ARM32)
- HAS PATCH
-
-342680 arm: unhanded instruction 0xF590F000: pldw [r0]
-
342780 arm + gcc 4.9 produce false positive: Use of uninitialised value of
size 4 and segfault on stack extention
Has patch
-342783 arm: unhandled instruction 0xEEFE1ACA = "vcvt.s32.f32 s3, s3, #12"
-
344802 disInstr(arm): unhandled instruction: 0xEC510F1E
maybe easy fix?
but doesn't run natively either
345984 disInstr(arm): unhandled instruction: 0xEE193F1E
-345985 disInstr(arm): unhandled instruction: 0xF2200150
-
-346665 valgrind: the 'impossible' happened: LibVEX called failure_exit().
- armv6 probable failure
-
-348377 Unsupported ARM instruction: yield
-
348536 ARM32: Unhandled instructions 0xEE190F1D & 0xEC510F1E
== 331178
=== VEX/arm64 ==========================================================
-345177 arm64: prfm (reg) not implemented
-
=== VEX/x86 ============================================================
339416 unhandled instruction bytes 0xC5 0xF1 0xEF 0xC9
@@ -81,21 +65,16 @@
340777 Illegal instruction on mips (ar71xx)
-341997 MIPS64: Cavium OCTEON instructions - immediate operand handled
- incorrectly
-
344524 store conditional of guest applications always fail (Octeon3(MIPS)
discussed, complex, partial fix available
-346031 MIPS: Implement support for the CvmCount register (rhwr %0, 31)
- has patch
-
=== VEX/ppc ============================================================
342610 disInstr(ppc): declined to decode an AltiVec insn.
348334 valgrind does not simulate dcbfl - then my program terminates
I think this is actually fixed, and needs closing.
+ QUERIED
=== VEX/s390x ==========================================================
@@ -103,9 +82,6 @@
=== VEX general ========================================================
-339778 Linux/TileGx platform support to Valgrind
- Should action
-
=== Syscalls/ioctls ====================================================
339424 Full support of KVM ioctl
@@ -155,7 +131,7 @@
no action so far
339744 warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0xf2
- no action so far
+ Has comments from MJW
340854 valgrind-di-server: allow specification of multiple paths
has patch, unclear if Right Thing To Do
@@ -167,43 +143,40 @@
345975 Artificial functions in backtrace
more Dwarf complexity
-348345 Assertion fails for negative lineno
-
=== Tools/Memcheck =====================================================
339499 memcheck does not always detect access beyond mmaped page
- probably wontfix
+ Probable WONTFIX
339762 missing replacement alias for glibc __strchr_sse42, __strcpy_sse2,
__strcpy_ssse3
- obscure?
+ Probable INVALID
340392 Incorrect "Conditional jump..." message
Optimised code a la Clang
- PROBABLE CANTFIX
-
-342683 memory past the brk limit is not initially inaccessible/unaddressable
+ Probable CANTFIX
345307 Please suppress warning about "still reachable" memory
when using libstdc++ from gcc 5
345751 OS X: Incorrect result for operator Iop_Add32 and Iop_Add64
due to mce.useLLVMworkarounds = True
+ Probably harmless
345753 OS X: sanityCheckFail: exiting due to bad IR for Iop_AddF64
IR type error; should look at it
+ NEEDS INVESTIGATION
345811 annotate also FP for memcheck dirty helpers
has patch, should commit
-
-349879 [PATCH] memcheck: add handwritten assembly for helperc_LOADV*
+ NEEDS INVESTIGATION
350405 Support for Intel DPDK custom allocator rte_malloc
Seems dubious
350928 mc_malloc_wrappers.c:244 (in_block_list):
Assertion 'found_mc == mc' failed
- Has patch, needs looking at
+ NEEDS INVESTIGATION, Has patch
=== Tools/DRD ==========================================================
=== Tools/Helgrind =====================================================
|
|
From: <sv...@va...> - 2015-08-17 13:55:48
|
Author: sewardj
Date: Mon Aug 17 14:55:41 2015
New Revision: 3177
Log:
Implement YIELD (encodings T1 and A1). Fixes #348377.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
==============================================================================
--- trunk/priv/guest_arm_toIR.c (original)
+++ trunk/priv/guest_arm_toIR.c Mon Aug 17 14:55:41 2015
@@ -16782,12 +16782,6 @@
}
}
- /* ------------------- NOP ------------------ */
- if (0x0320F000 == (insn & 0x0FFFFFFF)) {
- DIP("nop%s\n", nCC(INSN_COND));
- goto decode_success;
- }
-
/* -------------- (A1) LDRT reg+/-#imm12 -------------- */
/* Load Register Unprivileged:
ldrt<c> Rt, [Rn] {, #+/-imm12}
@@ -17281,6 +17275,30 @@
}
/* ----------------------------------------------------------- */
+ /* -- Hints -- */
+ /* ----------------------------------------------------------- */
+
+ switch (insn & 0x0FFFFFFF) {
+ /* ------------------- NOP ------------------ */
+ case 0x0320F000:
+ DIP("nop%s\n", nCC(INSN_COND));
+ goto decode_success;
+ /* ------------------- YIELD ------------------ */
+ case 0x0320F001:
+ /* Continue after conditionally yielding. */
+ DIP("yield%s\n", nCC(INSN_COND));
+ stmt( IRStmt_Exit( unop(Iop_32to1,
+ condT == IRTemp_INVALID
+ ? mkU32(1) : mkexpr(condT)),
+ Ijk_Yield,
+ IRConst_U32(guest_R15_curr_instr_notENC + 4),
+ OFFB_R15T ));
+ goto decode_success;
+ default:
+ break;
+ }
+
+ /* ----------------------------------------------------------- */
/* -- VFP (CP 10, CP 11) instructions (in ARM mode) -- */
/* ----------------------------------------------------------- */
@@ -19170,16 +19188,18 @@
/* ------ NOP ------ */
DIP("nop\n");
goto decode_success;
- case 0xBF20:
- /* ------ WFE ------ */
- /* WFE gets used as a spin-loop hint. Do the usual thing,
+ case 0xBF10: // YIELD
+ case 0xBF20: // WFE
+ /* ------ WFE, YIELD ------ */
+ /* Both appear to get used as a spin-loop hints. Do the usual thing,
which is to continue after yielding. */
stmt( IRStmt_Exit( unop(Iop_32to1, mkexpr(condT)),
Ijk_Yield,
IRConst_U32((guest_R15_curr_instr_notENC + 2)
| 1 /*CPSR.T*/),
OFFB_R15T ));
- DIP("wfe\n");
+ Bool isWFE = INSN0(15,0) == 0xBF20;
+ DIP(isWFE ? "wfe\n" : "yield\n");
goto decode_success;
case 0xBF40:
/* ------ SEV ------ */
|
|
From: <sv...@va...> - 2015-08-17 08:23:38
|
Author: sewardj
Date: Mon Aug 17 09:23:31 2015
New Revision: 15559
Log:
Add test cases for VCVT.{S,U}32.F32, S[n], S[n], #imm.
Pertains to #342783.
Modified:
trunk/none/tests/arm/vcvt_fixed_float_VFP.c
trunk/none/tests/arm/vcvt_fixed_float_VFP.stdout.exp
Modified: trunk/none/tests/arm/vcvt_fixed_float_VFP.c
==============================================================================
--- trunk/none/tests/arm/vcvt_fixed_float_VFP.c (original)
+++ trunk/none/tests/arm/vcvt_fixed_float_VFP.c Mon Aug 17 09:23:31 2015
@@ -3,6 +3,7 @@
#include <string.h>
typedef unsigned long long int ULong;
+typedef unsigned int UInt;
__attribute__((noinline)) float s32_to_f32_imm1(int x)
{
@@ -212,6 +213,86 @@
+__attribute__((noinline)) UInt f32_to_s32_imm1 ( float f )
+{
+ float block[5];
+ memset(block, 0x55, sizeof(block));
+ block[1] = f;
+ __asm__ __volatile__(
+ "mov r8, %0" "\n\t"
+ "vldr s14, [r8, #4]" "\n\t"
+ "vcvt.s32.f32 s14,s14,#1" "\n\t"
+ "vstr s14, [r8,#12]" "\n\t"
+ : : /*IN*/"r"(&block[0]) : /*TRASH*/"s14","r8","memory"
+ );
+ return *(UInt*)(&block[3]);
+}
+
+__attribute__((noinline)) UInt f32_to_s32_imm32 ( float f )
+{
+ float block[5];
+ memset(block, 0x55, sizeof(block));
+ block[1] = f;
+ __asm__ __volatile__(
+ "mov r8, %0" "\n\t"
+ "vldr s14, [r8, #4]" "\n\t"
+ "vcvt.s32.f32 s14,s14,#32" "\n\t"
+ "vstr s14, [r8,#12]" "\n\t"
+ : : /*IN*/"r"(&block[0]) : /*TRASH*/"s14","r8","memory"
+ );
+ return *(UInt*)(&block[3]);
+}
+
+void try_f32_to_s32 ( float f )
+{
+ UInt res = f32_to_s32_imm32(f);
+ printf("f32_to_s32_imm32: %18.14e -> 0x%08x\n", (double)f, res);
+ res = f32_to_s32_imm1(f);
+ printf("f32_to_s32_imm1: %18.14e -> 0x%08x\n", (double)f, res);
+}
+
+
+
+__attribute__((noinline)) UInt f32_to_u32_imm1 ( float f )
+{
+ float block[5];
+ memset(block, 0x55, sizeof(block));
+ block[1] = f;
+ __asm__ __volatile__(
+ "mov r8, %0" "\n\t"
+ "vldr s14, [r8, #4]" "\n\t"
+ "vcvt.u32.f32 s14,s14,#1" "\n\t"
+ "vstr s14, [r8,#12]" "\n\t"
+ : : /*IN*/"r"(&block[0]) : /*TRASH*/"s14","r8","memory"
+ );
+ return *(UInt*)(&block[3]);
+}
+
+__attribute__((noinline)) UInt f32_to_u32_imm32 ( float f )
+{
+ float block[5];
+ memset(block, 0x55, sizeof(block));
+ block[1] = f;
+ __asm__ __volatile__(
+ "mov r8, %0" "\n\t"
+ "vldr s14, [r8, #4]" "\n\t"
+ "vcvt.u32.f32 s14,s14,#32" "\n\t"
+ "vstr s14, [r8,#12]" "\n\t"
+ : : /*IN*/"r"(&block[0]) : /*TRASH*/"s14","r8","memory"
+ );
+ return *(UInt*)(&block[3]);
+}
+
+void try_f32_to_u32 ( float f )
+{
+ UInt res = f32_to_u32_imm32(f);
+ printf("f32_to_u32_imm32: %18.14e -> 0x%08x\n", (double)f, res);
+ res = f32_to_u32_imm1(f);
+ printf("f32_to_u32_imm1: %18.14e -> 0x%08x\n", (double)f, res);
+}
+
+
+
int main ( void )
{
int i;
@@ -289,5 +370,23 @@
try_f64_to_u32(d);
}
+ printf("\n");
+ try_f32_to_s32(0.0);
+ try_f32_to_s32(1.0);
+ try_f32_to_s32(-1.0);
+ try_f32_to_s32(0.0 / 0.0);
+ for (d = -100000.01; d < 100000.0; d += 10000.0) {
+ try_f32_to_s32((float)d);
+ }
+
+ printf("\n");
+ try_f32_to_u32(0.0);
+ try_f32_to_u32(1.0);
+ try_f32_to_u32(-1.0);
+ try_f32_to_u32(0.0 / 0.0);
+ for (d = -100000.01; d < 100000.0; d += 10000.0) {
+ try_f32_to_u32((float)d);
+ }
+
return 0;
}
Modified: trunk/none/tests/arm/vcvt_fixed_float_VFP.stdout.exp
==============================================================================
--- trunk/none/tests/arm/vcvt_fixed_float_VFP.stdout.exp (original)
+++ trunk/none/tests/arm/vcvt_fixed_float_VFP.stdout.exp Mon Aug 17 09:23:31 2015
@@ -967,3 +967,105 @@
f64_to_u32_imm1: 8.99999900000000e+04 -> 0x000000000002bf1f
f64_to_u32_imm32: 9.99999900000000e+04 -> 0x00000000ffffffff
f64_to_u32_imm1: 9.99999900000000e+04 -> 0x0000000000030d3f
+
+f32_to_s32_imm32: 0.00000000000000e+00 -> 0x00000000
+f32_to_s32_imm1: 0.00000000000000e+00 -> 0x00000000
+f32_to_s32_imm32: 1.00000000000000e+00 -> 0x7fffffff
+f32_to_s32_imm1: 1.00000000000000e+00 -> 0x00000002
+f32_to_s32_imm32: -1.00000000000000e+00 -> 0x80000000
+f32_to_s32_imm1: -1.00000000000000e+00 -> 0xfffffffe
+f32_to_s32_imm32: nan -> 0x00000000
+f32_to_s32_imm1: nan -> 0x00000000
+f32_to_s32_imm32: -1.00000007812500e+05 -> 0x80000000
+f32_to_s32_imm1: -1.00000007812500e+05 -> 0xfffcf2c0
+f32_to_s32_imm32: -9.00000078125000e+04 -> 0x80000000
+f32_to_s32_imm1: -9.00000078125000e+04 -> 0xfffd40e0
+f32_to_s32_imm32: -8.00000078125000e+04 -> 0x80000000
+f32_to_s32_imm1: -8.00000078125000e+04 -> 0xfffd8f00
+f32_to_s32_imm32: -7.00000078125000e+04 -> 0x80000000
+f32_to_s32_imm1: -7.00000078125000e+04 -> 0xfffddd20
+f32_to_s32_imm32: -6.00000117187500e+04 -> 0x80000000
+f32_to_s32_imm1: -6.00000117187500e+04 -> 0xfffe2b40
+f32_to_s32_imm32: -5.00000117187500e+04 -> 0x80000000
+f32_to_s32_imm1: -5.00000117187500e+04 -> 0xfffe7960
+f32_to_s32_imm32: -4.00000117187500e+04 -> 0x80000000
+f32_to_s32_imm1: -4.00000117187500e+04 -> 0xfffec780
+f32_to_s32_imm32: -3.00000097656250e+04 -> 0x80000000
+f32_to_s32_imm1: -3.00000097656250e+04 -> 0xffff15a0
+f32_to_s32_imm32: -2.00000097656250e+04 -> 0x80000000
+f32_to_s32_imm1: -2.00000097656250e+04 -> 0xffff63c0
+f32_to_s32_imm32: -1.00000097656250e+04 -> 0x80000000
+f32_to_s32_imm1: -1.00000097656250e+04 -> 0xffffb1e0
+f32_to_s32_imm32: -9.99999977648258e-03 -> 0xfd70a3d8
+f32_to_s32_imm1: -9.99999977648258e-03 -> 0x00000000
+f32_to_s32_imm32: 9.99999023437500e+03 -> 0x7fffffff
+f32_to_s32_imm1: 9.99999023437500e+03 -> 0x00004e1f
+f32_to_s32_imm32: 1.99999902343750e+04 -> 0x7fffffff
+f32_to_s32_imm1: 1.99999902343750e+04 -> 0x00009c3f
+f32_to_s32_imm32: 2.99999902343750e+04 -> 0x7fffffff
+f32_to_s32_imm1: 2.99999902343750e+04 -> 0x0000ea5f
+f32_to_s32_imm32: 3.99999882812500e+04 -> 0x7fffffff
+f32_to_s32_imm1: 3.99999882812500e+04 -> 0x0001387f
+f32_to_s32_imm32: 4.99999882812500e+04 -> 0x7fffffff
+f32_to_s32_imm1: 4.99999882812500e+04 -> 0x0001869f
+f32_to_s32_imm32: 5.99999882812500e+04 -> 0x7fffffff
+f32_to_s32_imm1: 5.99999882812500e+04 -> 0x0001d4bf
+f32_to_s32_imm32: 6.99999921875000e+04 -> 0x7fffffff
+f32_to_s32_imm1: 6.99999921875000e+04 -> 0x000222df
+f32_to_s32_imm32: 7.99999921875000e+04 -> 0x7fffffff
+f32_to_s32_imm1: 7.99999921875000e+04 -> 0x000270ff
+f32_to_s32_imm32: 8.99999921875000e+04 -> 0x7fffffff
+f32_to_s32_imm1: 8.99999921875000e+04 -> 0x0002bf1f
+f32_to_s32_imm32: 9.99999921875000e+04 -> 0x7fffffff
+f32_to_s32_imm1: 9.99999921875000e+04 -> 0x00030d3f
+
+f32_to_u32_imm32: 0.00000000000000e+00 -> 0x00000000
+f32_to_u32_imm1: 0.00000000000000e+00 -> 0x00000000
+f32_to_u32_imm32: 1.00000000000000e+00 -> 0xffffffff
+f32_to_u32_imm1: 1.00000000000000e+00 -> 0x00000002
+f32_to_u32_imm32: -1.00000000000000e+00 -> 0x00000000
+f32_to_u32_imm1: -1.00000000000000e+00 -> 0x00000000
+f32_to_u32_imm32: nan -> 0x00000000
+f32_to_u32_imm1: nan -> 0x00000000
+f32_to_u32_imm32: -1.00000007812500e+05 -> 0x00000000
+f32_to_u32_imm1: -1.00000007812500e+05 -> 0x00000000
+f32_to_u32_imm32: -9.00000078125000e+04 -> 0x00000000
+f32_to_u32_imm1: -9.00000078125000e+04 -> 0x00000000
+f32_to_u32_imm32: -8.00000078125000e+04 -> 0x00000000
+f32_to_u32_imm1: -8.00000078125000e+04 -> 0x00000000
+f32_to_u32_imm32: -7.00000078125000e+04 -> 0x00000000
+f32_to_u32_imm1: -7.00000078125000e+04 -> 0x00000000
+f32_to_u32_imm32: -6.00000117187500e+04 -> 0x00000000
+f32_to_u32_imm1: -6.00000117187500e+04 -> 0x00000000
+f32_to_u32_imm32: -5.00000117187500e+04 -> 0x00000000
+f32_to_u32_imm1: -5.00000117187500e+04 -> 0x00000000
+f32_to_u32_imm32: -4.00000117187500e+04 -> 0x00000000
+f32_to_u32_imm1: -4.00000117187500e+04 -> 0x00000000
+f32_to_u32_imm32: -3.00000097656250e+04 -> 0x00000000
+f32_to_u32_imm1: -3.00000097656250e+04 -> 0x00000000
+f32_to_u32_imm32: -2.00000097656250e+04 -> 0x00000000
+f32_to_u32_imm1: -2.00000097656250e+04 -> 0x00000000
+f32_to_u32_imm32: -1.00000097656250e+04 -> 0x00000000
+f32_to_u32_imm1: -1.00000097656250e+04 -> 0x00000000
+f32_to_u32_imm32: -9.99999977648258e-03 -> 0x00000000
+f32_to_u32_imm1: -9.99999977648258e-03 -> 0x00000000
+f32_to_u32_imm32: 9.99999023437500e+03 -> 0xffffffff
+f32_to_u32_imm1: 9.99999023437500e+03 -> 0x00004e1f
+f32_to_u32_imm32: 1.99999902343750e+04 -> 0xffffffff
+f32_to_u32_imm1: 1.99999902343750e+04 -> 0x00009c3f
+f32_to_u32_imm32: 2.99999902343750e+04 -> 0xffffffff
+f32_to_u32_imm1: 2.99999902343750e+04 -> 0x0000ea5f
+f32_to_u32_imm32: 3.99999882812500e+04 -> 0xffffffff
+f32_to_u32_imm1: 3.99999882812500e+04 -> 0x0001387f
+f32_to_u32_imm32: 4.99999882812500e+04 -> 0xffffffff
+f32_to_u32_imm1: 4.99999882812500e+04 -> 0x0001869f
+f32_to_u32_imm32: 5.99999882812500e+04 -> 0xffffffff
+f32_to_u32_imm1: 5.99999882812500e+04 -> 0x0001d4bf
+f32_to_u32_imm32: 6.99999921875000e+04 -> 0xffffffff
+f32_to_u32_imm1: 6.99999921875000e+04 -> 0x000222df
+f32_to_u32_imm32: 7.99999921875000e+04 -> 0xffffffff
+f32_to_u32_imm1: 7.99999921875000e+04 -> 0x000270ff
+f32_to_u32_imm32: 8.99999921875000e+04 -> 0xffffffff
+f32_to_u32_imm1: 8.99999921875000e+04 -> 0x0002bf1f
+f32_to_u32_imm32: 9.99999921875000e+04 -> 0xffffffff
+f32_to_u32_imm1: 9.99999921875000e+04 -> 0x00030d3f
|
|
From: <sv...@va...> - 2015-08-17 08:21:02
|
Author: sewardj
Date: Mon Aug 17 09:20:55 2015
New Revision: 3176
Log:
Implement VCVT.{S,U}32.F32, S[n], S[n], #imm. Fixes 342783.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
==============================================================================
--- trunk/priv/guest_arm_toIR.c (original)
+++ trunk/priv/guest_arm_toIR.c Mon Aug 17 09:20:55 2015
@@ -14338,6 +14338,11 @@
UInt size = bSX == 0 ? 16 : 32;
Int frac_bits = size - ((imm4 << 1) | bI);
UInt d = dp_op ? ((bD << 4) | Vd) : ((Vd << 1) | bD);
+
+ IRExpr* rm = mkU32(Irrm_NEAREST);
+ IRTemp scale = newTemp(Ity_F64);
+ assign(scale, unop(Iop_I32UtoF64, mkU32( 1 << (frac_bits-1) )));
+
if (frac_bits >= 1 && frac_bits <= 32 && !to_fixed && !dp_op
&& size == 32) {
/* VCVT.F32.{S,U}32 S[d], S[d], #frac_bits */
@@ -14349,9 +14354,6 @@
assign(src32, unop(Iop_ReinterpF32asI32, getFReg(d)));
IRExpr* as_F64 = unop( unsyned ? Iop_I32UtoF64 : Iop_I32StoF64,
mkexpr(src32 ) );
- IRTemp scale = newTemp(Ity_F64);
- assign(scale, unop(Iop_I32UtoF64, mkU32( 1 << (frac_bits-1) )));
- IRExpr* rm = mkU32(Irrm_NEAREST);
IRExpr* resF64 = triop(Iop_DivF64,
rm, as_F64,
triop(Iop_AddF64, rm, mkexpr(scale),
@@ -14371,9 +14373,6 @@
assign(src32, unop(Iop_64to32, getDRegI64(d)));
IRExpr* as_F64 = unop( unsyned ? Iop_I32UtoF64 : Iop_I32StoF64,
mkexpr(src32 ) );
- IRTemp scale = newTemp(Ity_F64);
- assign(scale, unop(Iop_I32UtoF64, mkU32( 1 << (frac_bits-1) )));
- IRExpr* rm = mkU32(Irrm_NEAREST);
IRExpr* resF64 = triop(Iop_DivF64,
rm, as_F64,
triop(Iop_AddF64, rm, mkexpr(scale),
@@ -14388,10 +14387,7 @@
/* VCVT.{S,U}32.F64 D[d], D[d], #frac_bits */
IRTemp srcF64 = newTemp(Ity_F64);
assign(srcF64, getDReg(d));
- IRTemp scale = newTemp(Ity_F64);
- assign(scale, unop(Iop_I32UtoF64, mkU32( 1 << (frac_bits-1) )));
IRTemp scaledF64 = newTemp(Ity_F64);
- IRExpr* rm = mkU32(Irrm_NEAREST);
assign(scaledF64, triop(Iop_MulF64,
rm, mkexpr(srcF64),
triop(Iop_AddF64, rm, mkexpr(scale),
@@ -14403,6 +14399,29 @@
mkexpr(rmode), mkexpr(scaledF64)));
putDRegI64(d, unop(unsyned ? Iop_32Uto64 : Iop_32Sto64,
mkexpr(asI32)), condT);
+
+ DIP("vcvt.%c32.f64, d%u, d%u, #%d\n",
+ unsyned ? 'u' : 's', d, d, frac_bits);
+ goto decode_success_vfp;
+ }
+ if (frac_bits >= 1 && frac_bits <= 32 && to_fixed && !dp_op
+ && size == 32) {
+ /* VCVT.{S,U}32.F32 S[d], S[d], #frac_bits */
+ IRTemp srcF32 = newTemp(Ity_F32);
+ assign(srcF32, getFReg(d));
+ IRTemp scaledF64 = newTemp(Ity_F64);
+ assign(scaledF64, triop(Iop_MulF64,
+ rm, unop(Iop_F32toF64, mkexpr(srcF32)),
+ triop(Iop_AddF64, rm, mkexpr(scale),
+ mkexpr(scale))));
+ IRTemp rmode = newTemp(Ity_I32);
+ assign(rmode, mkU32(Irrm_ZERO)); // as per the spec
+ IRTemp asI32 = newTemp(Ity_I32);
+ assign(asI32, binop(unsyned ? Iop_F64toI32U : Iop_F64toI32S,
+ mkexpr(rmode), mkexpr(scaledF64)));
+ putFReg(d, unop(Iop_ReinterpI32asF32, mkexpr(asI32)), condT);
+ DIP("vcvt.%c32.f32, d%u, d%u, #%d\n",
+ unsyned ? 'u' : 's', d, d, frac_bits);
goto decode_success_vfp;
}
/* fall through */
|
|
From: Ivo R. <ivo...@gm...> - 2015-08-17 08:12:09
|
Please could you review proposed patch for bug: 351386 Cannot run ld.so.1 under Valgrind (https://bugs.kde.org/show_bug.cgi?id=351386) and my findings posted there? Although the changes are Solaris specific, they touch area shared with Linux so I'd rather double check. Thanks, I. |
|
From: <sv...@va...> - 2015-08-17 07:29:17
|
Author: sewardj
Date: Mon Aug 17 08:29:07 2015
New Revision: 3175
Log:
Loosen guarding conditions on "mov.w Reg, Reg" so as to allow
reading or writing of SP. Fixes #335618.
Modified:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c
==============================================================================
--- trunk/priv/guest_arm_toIR.c (original)
+++ trunk/priv/guest_arm_toIR.c Mon Aug 17 08:29:07 2015
@@ -19848,11 +19848,14 @@
/* ------------ (T?) MVN{S}.W Rd, Rn, {shift} ------------ */
if ((INSN0(15,0) & 0xFFCF) == 0xEA4F
&& INSN1(15,15) == 0) {
- UInt rD = INSN1(11,8);
- UInt rN = INSN1(3,0);
- if (!isBadRegT(rD) && !isBadRegT(rN)) {
- UInt bS = INSN0(4,4);
- UInt isMVN = INSN0(5,5);
+ UInt rD = INSN1(11,8);
+ UInt rN = INSN1(3,0);
+ UInt bS = INSN0(4,4);
+ UInt isMVN = INSN0(5,5);
+ Bool regsOK = (bS || isMVN)
+ ? (!isBadRegT(rD) && !isBadRegT(rN))
+ : (rD != 15 && rN != 15 && (rD != 13 || rN != 13));
+ if (regsOK) {
UInt imm5 = (INSN1(14,12) << 2) | INSN1(7,6);
UInt how = INSN1(5,4);
|