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
(32) |
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-20 16:17:18
|
Author: sewardj
Date: Thu Aug 20 17:17:11 2015
New Revision: 3179
Log:
Implement reading from PMUSERENR_EL0, making it return zero.
Fixes (for some definition of "fix") #345984.
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 Thu Aug 20 17:17:11 2015
@@ -17218,7 +17218,7 @@
/* ----------------------------------------------------------- */
/* -------------- read CP15 TPIDRURO register ------------- */
- /* mrc p15, 0, r0, c13, c0, 3 up to
+ /* mrc p15, 0, r0, c13, c0, 3 up to
mrc p15, 0, r14, c13, c0, 3
*/
/* I don't know whether this is really v7-only. But anyway, we
@@ -17236,6 +17236,25 @@
/* fall through */
}
+ /* -------------- read CP15 PMUSRENR register ------------- */
+ /* mrc p15, 0, r0, c9, c14, 0 up to
+ mrc p15, 0, r14, c9, c14, 0
+ */
+ /* A program reading this register is really asking "which
+ performance monitoring registes are available in user space?
+ The simple answer here is to return zero, meaning "none". See
+ #345984. */
+ if (0x0E190F1E == (insn & 0x0FFF0FFF)) {
+ UInt rD = INSN(15,12);
+ if (rD <= 14) {
+ /* skip r15, that's too stupid to handle */
+ putIRegA(rD, mkU32(0), condT, Ijk_Boring);
+ DIP("mrc%s p15,0, r%u, c9, c14, 0\n", nCC(INSN_COND), rD);
+ goto decode_success;
+ }
+ /* fall through */
+ }
+
/* Handle various kinds of barriers. This is rather indiscriminate
in the sense that they are all turned into an IR Fence, which
means we don't know which they are, so the back end has to
@@ -21615,6 +21634,22 @@
/* fall through */
}
+ /* -------------- read CP15 PMUSRENR register ------------- */
+ /* mrc p15, 0, r0, c9, c14, 0 up to
+ mrc p15, 0, r14, c9, c14, 0
+ See comment on the ARM equivalent of this (above) for details.
+ */
+ if ((INSN0(15,0) == 0xEE19) && (INSN1(11,0) == 0x0F1E)) {
+ /* FIXME: should this be unconditional? */
+ UInt rD = INSN1(15,12);
+ if (!isBadRegT(rD)) {
+ putIRegT(rD, mkU32(0), IRTemp_INVALID);
+ DIP("mrc p15,0, r%u, c9, c14, 0\n", rD);
+ goto decode_success;
+ }
+ /* fall through */
+ }
+
/* ------------------- CLREX ------------------ */
if (INSN0(15,0) == 0xF3BF && INSN1(15,0) == 0x8F2F) {
/* AFAICS, this simply cancels a (all?) reservations made by a
|
|
From: <sv...@va...> - 2015-08-20 05:50:57
|
Author: iraisr
Date: Thu Aug 20 06:50:49 2015
New Revision: 15571
Log:
Follow-up fix for r15565.
Expected output of some helgrind tests slightly differed on Solaris.
n-i-bz
Modified:
trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp-solaris
trunk/helgrind/tests/tc20_verifywrap.stderr.exp-solaris
Modified: trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp-solaris
==============================================================================
--- trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp-solaris (original)
+++ trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp-solaris Thu Aug 20 06:50:49 2015
@@ -24,6 +24,7 @@
with error code 1 (EPERM: Operation not permitted)
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc12_rwl_trivial.c:29)
Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-solaris
==============================================================================
--- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-solaris (original)
+++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-solaris Thu Aug 20 06:50:49 2015
@@ -171,6 +171,7 @@
with error code 1 (EPERM: Operation not permitted)
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:189)
(1) no error on next line
@@ -197,6 +198,7 @@
with error code 1 (EPERM: Operation not permitted)
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:206)
(4) no error on next line
@@ -225,6 +227,7 @@
with error code 1 (EPERM: Operation not permitted)
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:227)
|
|
From: <sv...@va...> - 2015-08-19 13:26:35
|
Author: mjw
Date: Wed Aug 19 14:26:28 2015
New Revision: 15570
Log:
Also install sigsegv handler in safe-pthread tests wrapper.
In case we do recognize the xend, but detect it is invalid
(used outside a transaction) we generate a segsegv instead
of a sigill. Handle that in the same way in the test case.
Modified:
trunk/drd/tests/tc12_rwl_trivial.stderr.exp
trunk/helgrind/tests/safe-pthread.h
Modified: trunk/drd/tests/tc12_rwl_trivial.stderr.exp
==============================================================================
--- trunk/drd/tests/tc12_rwl_trivial.stderr.exp (original)
+++ trunk/drd/tests/tc12_rwl_trivial.stderr.exp Wed Aug 19 14:26:28 2015
@@ -1,7 +1,7 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
- by 0x........: safe_pthread_rwlock_unlock (safe-pthread.h:41)
+ by 0x........: safe_pthread_rwlock_unlock (safe-pthread.h:58)
by 0x........: main (tc12_rwl_trivial.c:29)
rwlock 0x........ was first observed at:
at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
Modified: trunk/helgrind/tests/safe-pthread.h
==============================================================================
--- trunk/helgrind/tests/safe-pthread.h (original)
+++ trunk/helgrind/tests/safe-pthread.h Wed Aug 19 14:26:28 2015
@@ -19,6 +19,16 @@
}
/*
+ * Same as above, but in case we do recognize the xend,
+ * but detect it is invalid (used outside a transaction)
+ * and generate a segv. Unfortunately then si_addr is,
+ * just zero, so we cannot add an assert/sanity check.
+ */
+static void segv_handler( int signum, siginfo_t *siginfo, void *sigcontext ) {
+ longjmp( env, EPERM );
+}
+
+/*
* Wrapper for pthread_rwlock_unlock which may execute xend
* unconditionally when used on a lock that is not locked.
*
@@ -26,16 +36,23 @@
* glibc normally does - error reporting is optional.
*/
static int safe_pthread_rwlock_unlock( pthread_rwlock_t *rwlock ) {
- struct sigaction sa;
- struct sigaction oldsa;
+ struct sigaction sa_ill, sa_segv;
+ struct sigaction oldsa_ill, oldsa_segv;
int r;
- sa.sa_handler = NULL;
- sa.sa_sigaction = sigill_handler;
- sigemptyset( &sa.sa_mask );
- sa.sa_flags = SA_SIGINFO;
+ sa_ill.sa_handler = NULL;
+ sa_ill.sa_sigaction = sigill_handler;
+ sigemptyset( &sa_ill.sa_mask );
+ sa_ill.sa_flags = SA_SIGINFO;
- sigaction( SIGILL, &sa, &oldsa );
+ sigaction( SIGILL, &sa_ill, &oldsa_ill );
+
+ sa_segv.sa_handler = NULL;
+ sa_segv.sa_sigaction = segv_handler;
+ sigemptyset( &sa_segv.sa_mask );
+ sa_segv.sa_flags = SA_SIGINFO;
+
+ sigaction( SIGSEGV, &sa_segv, &oldsa_segv );
if ( ( r = setjmp( env ) ) == 0 ) {
r = pthread_rwlock_unlock( rwlock );
@@ -43,7 +60,8 @@
r = 0;
}
- sigaction( SIGILL, &oldsa, NULL );
+ sigaction( SIGILL, &oldsa_ill, NULL );
+ sigaction( SIGSEGV, &oldsa_segv, NULL );
return r;
}
|
|
From: <sv...@va...> - 2015-08-19 12:18:40
|
Author: rhyskidd
Date: Wed Aug 19 13:18:31 2015
New Revision: 15569
Log:
Follow-up fix for r15565: sa_restorer should not be used. n-i-bz.
It is obsolete and not specified by POSIX. See man sigaction on Linux.
No regressions reported.
The following error may be seen on platforms that don't implement this extension:
depbase=`echo tc12_rwl_trivial.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include -I../../coregrind -I../../include -I../../VEX/pub -I../../VEX/pub -DVGA_amd64=1 -DVGO_darwin=1 -DVGP_amd64_darwin=1 -DVGPV_amd64_darwin_vanilla=1 -DVGA_SEC_x86=1 -DVGP_SEC_amd64_darwin=1 -Winline -Wall -Wshadow -Wno-long-long -g -fno-stack-protector -Wno-format-extra-args -Wno-literal-range -Wno-tautological-constant-out-of-range-compare -Wno-self-assign -Wno-string-plus-int -Wno-uninitialized -Wno-unused-value -arch x86_64 -MT tc12_rwl_trivial.o -MD -MP -MF $depbase.Tpo -c -o tc12_rwl_trivial.o tc12_rwl_trivial.c &&\
mv -f $depbase.Tpo $depbase.Po
In file included from tc12_rwl_trivial.c:8:
./safe-pthread.h:37:7: error: no member named 'sa_restorer' in 'struct sigaction'
sa.sa_restorer = NULL;
~~ ^
1 error generated.
Modified:
trunk/drd/tests/tc12_rwl_trivial.stderr.exp
trunk/helgrind/tests/safe-pthread.h
Modified: trunk/drd/tests/tc12_rwl_trivial.stderr.exp
==============================================================================
--- trunk/drd/tests/tc12_rwl_trivial.stderr.exp (original)
+++ trunk/drd/tests/tc12_rwl_trivial.stderr.exp Wed Aug 19 13:18:31 2015
@@ -1,7 +1,7 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
- by 0x........: safe_pthread_rwlock_unlock (safe-pthread.h:42)
+ by 0x........: safe_pthread_rwlock_unlock (safe-pthread.h:41)
by 0x........: main (tc12_rwl_trivial.c:29)
rwlock 0x........ was first observed at:
at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
Modified: trunk/helgrind/tests/safe-pthread.h
==============================================================================
--- trunk/helgrind/tests/safe-pthread.h (original)
+++ trunk/helgrind/tests/safe-pthread.h Wed Aug 19 13:18:31 2015
@@ -34,7 +34,6 @@
sa.sa_sigaction = sigill_handler;
sigemptyset( &sa.sa_mask );
sa.sa_flags = SA_SIGINFO;
- sa.sa_restorer = NULL;
sigaction( SIGILL, &sa, &oldsa );
|
|
From: <sv...@va...> - 2015-08-19 10:09:15
|
Author: florian
Date: Wed Aug 19 11:09:08 2015
New Revision: 15568
Log:
Fix comparison in function VG_(iseqsigset).
Patch by dc...@ho...
Fixes BZ #351474.
Modified:
trunk/NEWS
trunk/coregrind/m_libcsignal.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Wed Aug 19 11:09:08 2015
@@ -307,6 +307,7 @@
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
+351474 Fix VG_(iseqsigset) as obvious
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_libcsignal.c
==============================================================================
--- trunk/coregrind/m_libcsignal.c (original)
+++ trunk/coregrind/m_libcsignal.c Wed Aug 19 11:09:08 2015
@@ -131,7 +131,7 @@
else {
/* Partial word comparison. */
ULong mask = (1UL << (_VKI_MAXSIG % _VKI_NSIG_BPW)) - 1;
- if ((set1->sig[i] & mask) != (set1->sig[i] & mask)) return False;
+ if ((set1->sig[i] & mask) != (set2->sig[i] & mask)) return False;
break;
}
}
|
|
From: <sv...@va...> - 2015-08-19 08:27:13
|
Author: tom
Date: Wed Aug 19 09:27:06 2015
New Revision: 15567
Log:
Install the SIGILL handler everywhere so we get consistent
stacks and don't have to worry about __GLIBC_PREREQ not being
defined on all platforms.
Modified:
trunk/drd/tests/tc12_rwl_trivial.stderr.exp
trunk/helgrind/tests/safe-pthread.h
Modified: trunk/drd/tests/tc12_rwl_trivial.stderr.exp
==============================================================================
--- trunk/drd/tests/tc12_rwl_trivial.stderr.exp (original)
+++ trunk/drd/tests/tc12_rwl_trivial.stderr.exp Wed Aug 19 09:27:06 2015
@@ -1,7 +1,7 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
- by 0x........: safe_pthread_rwlock_unlock (safe-pthread.h:43)
+ by 0x........: safe_pthread_rwlock_unlock (safe-pthread.h:42)
by 0x........: main (tc12_rwl_trivial.c:29)
rwlock 0x........ was first observed at:
at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
Modified: trunk/helgrind/tests/safe-pthread.h
==============================================================================
--- trunk/helgrind/tests/safe-pthread.h (original)
+++ trunk/helgrind/tests/safe-pthread.h Wed Aug 19 09:27:06 2015
@@ -26,7 +26,6 @@
* glibc normally does - error reporting is optional.
*/
static int safe_pthread_rwlock_unlock( pthread_rwlock_t *rwlock ) {
-#if __GLIBC_PREREQ(2,20) && ( defined(__i386__) || defined(__x86_64__) )
struct sigaction sa;
struct sigaction oldsa;
int r;
@@ -48,9 +47,6 @@
sigaction( SIGILL, &oldsa, NULL );
return r;
-#else
- return pthread_rwlock_unlock( rwlock );
-#endif
}
#define pthread_rwlock_unlock safe_pthread_rwlock_unlock
|
|
From: <sv...@va...> - 2015-08-18 19:55:24
|
Author: sewardj
Date: Tue Aug 18 20:55:16 2015
New Revision: 3178
Log:
Implement YIELD. Followup to #348377.
Modified:
trunk/priv/guest_arm64_toIR.c
trunk/priv/host_arm64_defs.c
trunk/priv/host_arm64_isel.c
Modified: trunk/priv/guest_arm64_toIR.c
==============================================================================
--- trunk/priv/guest_arm64_toIR.c (original)
+++ trunk/priv/guest_arm64_toIR.c Tue Aug 18 20:55:16 2015
@@ -6859,6 +6859,19 @@
return True;
}
+ /* ------------------- YIELD ------------------- */
+ /* 31 23 15 7
+ 1101 0101 0000 0011 0010 0000 0011 1111
+ */
+ if (INSN(31,0) == 0xD503203F) {
+ /* Request yield followed by continuation at the next insn. */
+ putPC(mkU64(guest_PC_curr_instr + 4));
+ dres->whatNext = Dis_StopHere;
+ dres->jk_StopHere = Ijk_Yield;
+ DIP("yield\n");
+ return True;
+ }
+
//fail:
vex_printf("ARM64 front end: branch_etc\n");
return False;
Modified: trunk/priv/host_arm64_defs.c
==============================================================================
--- trunk/priv/host_arm64_defs.c (original)
+++ trunk/priv/host_arm64_defs.c Tue Aug 18 20:55:16 2015
@@ -3617,7 +3617,7 @@
case Ijk_ClientReq: trcval = VEX_TRC_JMP_CLIENTREQ; break;
case Ijk_Sys_syscall: trcval = VEX_TRC_JMP_SYS_SYSCALL; break;
//case Ijk_Sys_int128: trcval = VEX_TRC_JMP_SYS_INT128; break;
- //case Ijk_Yield: trcval = VEX_TRC_JMP_YIELD; break;
+ case Ijk_Yield: trcval = VEX_TRC_JMP_YIELD; break;
//case Ijk_EmWarn: trcval = VEX_TRC_JMP_EMWARN; break;
//case Ijk_MapFail: trcval = VEX_TRC_JMP_MAPFAIL; break;
case Ijk_NoDecode: trcval = VEX_TRC_JMP_NODECODE; break;
Modified: trunk/priv/host_arm64_isel.c
==============================================================================
--- trunk/priv/host_arm64_isel.c (original)
+++ trunk/priv/host_arm64_isel.c Tue Aug 18 20:55:16 2015
@@ -3975,6 +3975,7 @@
case Ijk_InvalICache:
case Ijk_FlushDCache:
case Ijk_SigTRAP:
+ case Ijk_Yield:
{
HReg r = iselIntExpr_R(env, next);
ARM64AMode* amPC = mk_baseblock_64bit_access_amode(offsIP);
|
|
From: Tom H. <to...@co...> - 2015-08-18 17:29:00
|
On 18/08/15 18:08, Mark Wielaard wrote: > On Tue, 2015-08-18 at 15:37 +0100, Tom Hughes wrote: >> On 18/08/15 15:34, Julian Seward wrote: >>> On 18/08/15 16:21, Rhys Kidd wrote: >>>> Seeing build failure with 'make check' on OS X as follows. Will get a >>> >>>> ./safe-pthread.h:29:19: error: token is not a valid binary operator in a >>>> preprocessor subexpression >>>> #if __GLIBC_PREREQ(2,20) && ( defined(__i386__) || defined(__x86_64__) ) >>>> ~~~~~~~~~~~~~~^ >>> >>> Yes, I imagine __GLIBC_PREREQ doesn't exist on OS X. What about this? >>> >>> #if defined(__GLIBC_PREREQ) \ >>> && __GLIBC_PREREQ(2,20) && ( defined(__i386__) || defined(__x86_64__) ) >>> >>> Will that fix it? >> >> Should do. Sorry, stole that from the main tc20 code without paying >> attention to all the humps it jumped through to define it on other >> platforms. > > Do we really need the #if? > Can't we just always install the sigill handler? That would work as well. I was just being conservative... Tom -- Tom Hughes (to...@co...) http://compton.nu/ |
|
From: Mark W. <mj...@re...> - 2015-08-18 17:08:32
|
On Tue, 2015-08-18 at 15:37 +0100, Tom Hughes wrote:
> On 18/08/15 15:34, Julian Seward wrote:
> > On 18/08/15 16:21, Rhys Kidd wrote:
> >> Seeing build failure with 'make check' on OS X as follows. Will get a
> >
> >> ./safe-pthread.h:29:19: error: token is not a valid binary operator in a
> >> preprocessor subexpression
> >> #if __GLIBC_PREREQ(2,20) && ( defined(__i386__) || defined(__x86_64__) )
> >> ~~~~~~~~~~~~~~^
> >
> > Yes, I imagine __GLIBC_PREREQ doesn't exist on OS X. What about this?
> >
> > #if defined(__GLIBC_PREREQ) \
> > && __GLIBC_PREREQ(2,20) && ( defined(__i386__) || defined(__x86_64__) )
> >
> > Will that fix it?
>
> Should do. Sorry, stole that from the main tc20 code without paying
> attention to all the humps it jumped through to define it on other
> platforms.
Do we really need the #if?
Can't we just always install the sigill handler?
Currently the test will fail on glibc < 2.20 since the backtrace looks
slightly different:
--- tc12_rwl_trivial.stderr.exp 2015-08-18 15:25:07.011729981 +0200
+++ tc12_rwl_trivial.stderr.out 2015-08-18 15:37:12.187446390 +0200
@@ -1,7 +1,7 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
- by 0x........: safe_pthread_rwlock_unlock (safe-pthread.h:43)
+ by 0x........: safe_pthread_rwlock_unlock (safe-pthread.h:52)
by 0x........: main (tc12_rwl_trivial.c:29)
rwlock 0x........ was first observed at:
at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
If we just always installed the handler then the line would always be
the same.
Cheers,
M ark
|
|
From: Tom H. <to...@co...> - 2015-08-18 14:37:33
|
On 18/08/15 15:34, Julian Seward wrote: > On 18/08/15 16:21, Rhys Kidd wrote: >> Seeing build failure with 'make check' on OS X as follows. Will get a > >> ./safe-pthread.h:29:19: error: token is not a valid binary operator in a >> preprocessor subexpression >> #if __GLIBC_PREREQ(2,20) && ( defined(__i386__) || defined(__x86_64__) ) >> ~~~~~~~~~~~~~~^ > > Yes, I imagine __GLIBC_PREREQ doesn't exist on OS X. What about this? > > #if defined(__GLIBC_PREREQ) \ > && __GLIBC_PREREQ(2,20) && ( defined(__i386__) || defined(__x86_64__) ) > > Will that fix it? Should do. Sorry, stole that from the main tc20 code without paying attention to all the humps it jumped through to define it on other platforms. Tom -- Tom Hughes (to...@co...) http://compton.nu/ |
|
From: <sv...@va...> - 2015-08-18 14:34:56
|
Author: mjw
Date: Tue Aug 18 15:34:49 2015
New Revision: 15566
Log:
Handle (unwanted) line number info in filter_defcfaexpr.
This is just a testsuite cleanup. In the case defcfaexpr was compiled
with line number information (which might happen in some distro builds)
just throw it away because the expected output just wants to see the
function names.
Modified:
trunk/memcheck/tests/amd64-linux/filter_defcfaexpr
Modified: trunk/memcheck/tests/amd64-linux/filter_defcfaexpr
==============================================================================
--- trunk/memcheck/tests/amd64-linux/filter_defcfaexpr (original)
+++ trunk/memcheck/tests/amd64-linux/filter_defcfaexpr Tue Aug 18 15:34:49 2015
@@ -1,6 +1,9 @@
#! /bin/sh
-# change
+# In case the test binary contains debug line info first change
+# bad0.c:?? to a (bogus) binary path /foobar/tests/amd64-linux/defcfaexpr/
+#
+# then change
#
# ==6019== at 0x400512: bbb (in
# /home/sewardj/VgTRUNK/trunk/memcheck/tests/amd64/defcfaexpr)
@@ -23,6 +26,7 @@
# stack given the unusual CFAs describing it.
+sed "s/bad0.c:[0-9]\+/\/foobar\/tests\/amd64-linux\/defcfaexpr/" | \
./filter_stderr "$@" | \
sed "s/\/.*\/tests\/amd64-linux\/defcfaexpr/bogus.S:0/" | \
sed "s/(in /(/"
|
|
From: Julian S. <js...@ac...> - 2015-08-18 14:34:14
|
On 18/08/15 16:21, Rhys Kidd wrote:
> Seeing build failure with 'make check' on OS X as follows. Will get a
> ./safe-pthread.h:29:19: error: token is not a valid binary operator in a
> preprocessor subexpression
> #if __GLIBC_PREREQ(2,20) && ( defined(__i386__) || defined(__x86_64__) )
> ~~~~~~~~~~~~~~^
Yes, I imagine __GLIBC_PREREQ doesn't exist on OS X. What about this?
#if defined(__GLIBC_PREREQ) \
&& __GLIBC_PREREQ(2,20) && ( defined(__i386__) || defined(__x86_64__) )
Will that fix it?
J
|
|
From: Rhys K. <rhy...@gm...> - 2015-08-18 14:21:09
|
Seeing build failure with 'make check' on OS X as follows. Will get a
chance to look at fix within next day or so, unless others beat me to it.
depbase=`echo tc12_rwl_trivial.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include
-I../../coregrind -I../../include -I../../VEX/pub -I../../VEX/pub
-DVGA_amd64=1 -DVGO_darwin=1 -DVGP_amd64_darwin=1
-DVGPV_amd64_darwin_vanilla=1 -DVGA_SEC_x86=1 -DVGP_SEC_amd64_darwin=1
-Winline -Wall -Wshadow -Wno-long-long -g -fno-stack-protector
-Wno-format-extra-args -Wno-literal-range
-Wno-tautological-constant-out-of-range-compare -Wno-self-assign
-Wno-string-plus-int -Wno-uninitialized -Wno-unused-value -arch x86_64
-MT tc12_rwl_trivial.o -MD -MP -MF $depbase.Tpo -c -o tc12_rwl_trivial.o
tc12_rwl_trivial.c &&\
mv -f $depbase.Tpo $depbase.Po
In file included from tc12_rwl_trivial.c:8:
./safe-pthread.h:29:19: error: token is not a valid binary operator in a
preprocessor subexpression
#if __GLIBC_PREREQ(2,20) && ( defined(__i386__) || defined(__x86_64__) )
~~~~~~~~~~~~~~^
1 error generated.
On 18 August 2015 at 20:29, <sv...@va...> wrote:
> Author: tom
> Date: Tue Aug 18 11:29:20 2015
> New Revision: 15565
>
> Log:
> Attempt to work around issues with xend being executed unconditionally
> when a pthread_rwlock is used in an invalid way.
>
> Recent glibcs use transactional memory instructions to do lock ellision
> but will sometimes, when locks are used in an invalid way, may calls to
> xend on systems which don't support it, on the grounds that the program
> is invalid anyway.
>
> So we try and catch and ignore the resulting SIGILL in our tests that
> deliberately work with invalid locks.
>
> Added:
> trunk/helgrind/tests/safe-pthread.h (with props)
> Modified:
> trunk/drd/tests/tc12_rwl_trivial.stderr.exp
> trunk/drd/tests/tc12_rwl_trivial.vgtest
> trunk/helgrind/tests/tc12_rwl_trivial.c
> trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp
> trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp-solaris
> trunk/helgrind/tests/tc12_rwl_trivial.vgtest
> trunk/helgrind/tests/tc20_verifywrap.c
> trunk/helgrind/tests/tc20_verifywrap.stderr.exp
> trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.18
> trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32
> trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32-b
> trunk/helgrind/tests/tc20_verifywrap.stderr.exp-s390x
> trunk/helgrind/tests/tc20_verifywrap.stderr.exp-solaris
> trunk/helgrind/tests/tc20_verifywrap.vgtest
>
> Modified: trunk/drd/tests/tc12_rwl_trivial.stderr.exp
>
> ==============================================================================
> --- trunk/drd/tests/tc12_rwl_trivial.stderr.exp (original)
> +++ trunk/drd/tests/tc12_rwl_trivial.stderr.exp Tue Aug 18 11:29:20 2015
> @@ -1,6 +1,7 @@
>
> Reader-writer lock not locked by calling thread: rwlock 0x.........
> at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
> + by 0x........: safe_pthread_rwlock_unlock (safe-pthread.h:43)
> by 0x........: main (tc12_rwl_trivial.c:29)
> rwlock 0x........ was first observed at:
> at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
>
> Modified: trunk/drd/tests/tc12_rwl_trivial.vgtest
>
> ==============================================================================
> --- trunk/drd/tests/tc12_rwl_trivial.vgtest (original)
> +++ trunk/drd/tests/tc12_rwl_trivial.vgtest Tue Aug 18 11:29:20 2015
> @@ -1,2 +1,3 @@
> prereq: ./supported_libpthread
> +vgopts: --sigill-diagnostics=no
> prog: ../../helgrind/tests/tc12_rwl_trivial
>
> Added: trunk/helgrind/tests/safe-pthread.h
>
> ==============================================================================
> --- trunk/helgrind/tests/safe-pthread.h (added)
> +++ trunk/helgrind/tests/safe-pthread.h Tue Aug 18 11:29:20 2015
> @@ -0,0 +1,56 @@
> +#include <pthread.h>
> +#include <signal.h>
> +#include <setjmp.h>
> +#include <errno.h>
> +#include <assert.h>
> +
> +static jmp_buf env;
> +
> +/*
> + * Starting with glibc 2.20 some pthread calls may execute
> + * an xend instruction unconditionally when a lock is used in
> + * a way that is invalid so defined a sigill handler that can
> + * convert these invalid instructions to a normal error.
> + */
> +static void sigill_handler( int signum, siginfo_t *siginfo, void
> *sigcontext ) {
> + unsigned char *pc = siginfo->si_addr;
> + assert( pc[0] == 0x0f && pc[1] == 0x01 && pc[2] == 0xd5 );
> + longjmp( env, EPERM );
> +}
> +
> +/*
> + * Wrapper for pthread_rwlock_unlock which may execute xend
> + * unconditionally when used on a lock that is not locked.
> + *
> + * Note that we return 0 instead of EPERM because that is what
> + * glibc normally does - error reporting is optional.
> + */
> +static int safe_pthread_rwlock_unlock( pthread_rwlock_t *rwlock ) {
> +#if __GLIBC_PREREQ(2,20) && ( defined(__i386__) || defined(__x86_64__) )
> + struct sigaction sa;
> + struct sigaction oldsa;
> + int r;
> +
> + sa.sa_handler = NULL;
> + sa.sa_sigaction = sigill_handler;
> + sigemptyset( &sa.sa_mask );
> + sa.sa_flags = SA_SIGINFO;
> + sa.sa_restorer = NULL;
> +
> + sigaction( SIGILL, &sa, &oldsa );
> +
> + if ( ( r = setjmp( env ) ) == 0 ) {
> + r = pthread_rwlock_unlock( rwlock );
> + } else {
> + r = 0;
> + }
> +
> + sigaction( SIGILL, &oldsa, NULL );
> +
> + return r;
> +#else
> + return pthread_rwlock_unlock( rwlock );
> +#endif
> +}
> +
> +#define pthread_rwlock_unlock safe_pthread_rwlock_unlock
>
> Modified: trunk/helgrind/tests/tc12_rwl_trivial.c
>
> ==============================================================================
> --- trunk/helgrind/tests/tc12_rwl_trivial.c (original)
> +++ trunk/helgrind/tests/tc12_rwl_trivial.c Tue Aug 18 11:29:20 2015
> @@ -5,7 +5,7 @@
> #define _GNU_SOURCE 1
>
> #include <stdio.h>
> -#include <pthread.h>
> +#include "safe-pthread.h"
> #include <assert.h>
>
> /* Do trivial stuff with a reader-writer lock. */
>
> Modified: trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp
>
> ==============================================================================
> --- trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp (original)
> +++ trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp Tue Aug 18 11:29:20
> 2015
> @@ -8,6 +8,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc12_rwl_trivial.c:29)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
>
> Modified: trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp-solaris
>
> ==============================================================================
> --- trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp-solaris (original)
> +++ trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp-solaris Tue Aug 18
> 11:29:20 2015
> @@ -8,6 +8,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc12_rwl_trivial.c:29)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
>
> Modified: trunk/helgrind/tests/tc12_rwl_trivial.vgtest
>
> ==============================================================================
> --- trunk/helgrind/tests/tc12_rwl_trivial.vgtest (original)
> +++ trunk/helgrind/tests/tc12_rwl_trivial.vgtest Tue Aug 18 11:29:20 2015
> @@ -1 +1,2 @@
> +vgopts: --sigill-diagnostics=no
> prog: tc12_rwl_trivial
>
> Modified: trunk/helgrind/tests/tc20_verifywrap.c
>
> ==============================================================================
> --- trunk/helgrind/tests/tc20_verifywrap.c (original)
> +++ trunk/helgrind/tests/tc20_verifywrap.c Tue Aug 18 11:29:20 2015
> @@ -15,7 +15,7 @@
> #include <string.h>
> #include <assert.h>
> #include <unistd.h>
> -#include <pthread.h>
> +#include "safe-pthread.h"
> #include <semaphore.h>
>
> #if !defined(__APPLE__)
>
> Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp
>
> ==============================================================================
> --- trunk/helgrind/tests/tc20_verifywrap.stderr.exp (original)
> +++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp Tue Aug 18 11:29:20
> 2015
> @@ -163,6 +163,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:189)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
> @@ -180,6 +181,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:206)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
> @@ -199,6 +201,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:227)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
>
> Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.18
>
> ==============================================================================
> --- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.18 (original)
> +++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.18 Tue Aug 18
> 11:29:20 2015
> @@ -155,6 +155,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:189)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
> @@ -169,6 +170,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:206)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
>
> Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32
>
> ==============================================================================
> --- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32 (original)
> +++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32 Tue Aug 18
> 11:29:20 2015
> @@ -165,6 +165,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:189)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
> @@ -179,6 +180,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:206)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
> @@ -195,6 +197,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:227)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
>
> Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32-b
>
> ==============================================================================
> --- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32-b (original)
> +++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32-b Tue Aug 18
> 11:29:20 2015
> @@ -165,6 +165,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:189)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
> @@ -179,6 +180,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:206)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
> @@ -195,6 +197,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:227)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
>
> Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-s390x
>
> ==============================================================================
> --- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-s390x (original)
> +++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-s390x Tue Aug 18
> 11:29:20 2015
> @@ -165,6 +165,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:189)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
> @@ -179,6 +180,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:206)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
> @@ -195,6 +197,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:227)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
>
> Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-solaris
>
> ==============================================================================
> --- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-solaris (original)
> +++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-solaris Tue Aug 18
> 11:29:20 2015
> @@ -155,6 +155,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:189)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
> @@ -180,6 +181,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:206)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
> @@ -207,6 +209,7 @@
> Thread #x unlocked a not-locked lock at 0x........
> at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
> by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
> + ...
> by 0x........: main (tc20_verifywrap.c:227)
> Lock at 0x........ was first observed
> at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
>
> Modified: trunk/helgrind/tests/tc20_verifywrap.vgtest
>
> ==============================================================================
> --- trunk/helgrind/tests/tc20_verifywrap.vgtest (original)
> +++ trunk/helgrind/tests/tc20_verifywrap.vgtest Tue Aug 18 11:29:20 2015
> @@ -1,3 +1,3 @@
> prereq: test -e tc20_verifywrap
> prog: tc20_verifywrap
> -vgopts: --read-var-info=yes
> +vgopts: --read-var-info=yes --sigill-diagnostics=no
>
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Valgrind-developers mailing list
> Val...@li...
> https://lists.sourceforge.net/lists/listinfo/valgrind-developers
>
|
|
From: <sv...@va...> - 2015-08-18 10:29:28
|
Author: tom
Date: Tue Aug 18 11:29:20 2015
New Revision: 15565
Log:
Attempt to work around issues with xend being executed unconditionally
when a pthread_rwlock is used in an invalid way.
Recent glibcs use transactional memory instructions to do lock ellision
but will sometimes, when locks are used in an invalid way, may calls to
xend on systems which don't support it, on the grounds that the program
is invalid anyway.
So we try and catch and ignore the resulting SIGILL in our tests that
deliberately work with invalid locks.
Added:
trunk/helgrind/tests/safe-pthread.h (with props)
Modified:
trunk/drd/tests/tc12_rwl_trivial.stderr.exp
trunk/drd/tests/tc12_rwl_trivial.vgtest
trunk/helgrind/tests/tc12_rwl_trivial.c
trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp
trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp-solaris
trunk/helgrind/tests/tc12_rwl_trivial.vgtest
trunk/helgrind/tests/tc20_verifywrap.c
trunk/helgrind/tests/tc20_verifywrap.stderr.exp
trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.18
trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32
trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32-b
trunk/helgrind/tests/tc20_verifywrap.stderr.exp-s390x
trunk/helgrind/tests/tc20_verifywrap.stderr.exp-solaris
trunk/helgrind/tests/tc20_verifywrap.vgtest
Modified: trunk/drd/tests/tc12_rwl_trivial.stderr.exp
==============================================================================
--- trunk/drd/tests/tc12_rwl_trivial.stderr.exp (original)
+++ trunk/drd/tests/tc12_rwl_trivial.stderr.exp Tue Aug 18 11:29:20 2015
@@ -1,6 +1,7 @@
Reader-writer lock not locked by calling thread: rwlock 0x.........
at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
+ by 0x........: safe_pthread_rwlock_unlock (safe-pthread.h:43)
by 0x........: main (tc12_rwl_trivial.c:29)
rwlock 0x........ was first observed at:
at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
Modified: trunk/drd/tests/tc12_rwl_trivial.vgtest
==============================================================================
--- trunk/drd/tests/tc12_rwl_trivial.vgtest (original)
+++ trunk/drd/tests/tc12_rwl_trivial.vgtest Tue Aug 18 11:29:20 2015
@@ -1,2 +1,3 @@
prereq: ./supported_libpthread
+vgopts: --sigill-diagnostics=no
prog: ../../helgrind/tests/tc12_rwl_trivial
Added: trunk/helgrind/tests/safe-pthread.h
==============================================================================
--- trunk/helgrind/tests/safe-pthread.h (added)
+++ trunk/helgrind/tests/safe-pthread.h Tue Aug 18 11:29:20 2015
@@ -0,0 +1,56 @@
+#include <pthread.h>
+#include <signal.h>
+#include <setjmp.h>
+#include <errno.h>
+#include <assert.h>
+
+static jmp_buf env;
+
+/*
+ * Starting with glibc 2.20 some pthread calls may execute
+ * an xend instruction unconditionally when a lock is used in
+ * a way that is invalid so defined a sigill handler that can
+ * convert these invalid instructions to a normal error.
+ */
+static void sigill_handler( int signum, siginfo_t *siginfo, void *sigcontext ) {
+ unsigned char *pc = siginfo->si_addr;
+ assert( pc[0] == 0x0f && pc[1] == 0x01 && pc[2] == 0xd5 );
+ longjmp( env, EPERM );
+}
+
+/*
+ * Wrapper for pthread_rwlock_unlock which may execute xend
+ * unconditionally when used on a lock that is not locked.
+ *
+ * Note that we return 0 instead of EPERM because that is what
+ * glibc normally does - error reporting is optional.
+ */
+static int safe_pthread_rwlock_unlock( pthread_rwlock_t *rwlock ) {
+#if __GLIBC_PREREQ(2,20) && ( defined(__i386__) || defined(__x86_64__) )
+ struct sigaction sa;
+ struct sigaction oldsa;
+ int r;
+
+ sa.sa_handler = NULL;
+ sa.sa_sigaction = sigill_handler;
+ sigemptyset( &sa.sa_mask );
+ sa.sa_flags = SA_SIGINFO;
+ sa.sa_restorer = NULL;
+
+ sigaction( SIGILL, &sa, &oldsa );
+
+ if ( ( r = setjmp( env ) ) == 0 ) {
+ r = pthread_rwlock_unlock( rwlock );
+ } else {
+ r = 0;
+ }
+
+ sigaction( SIGILL, &oldsa, NULL );
+
+ return r;
+#else
+ return pthread_rwlock_unlock( rwlock );
+#endif
+}
+
+#define pthread_rwlock_unlock safe_pthread_rwlock_unlock
Modified: trunk/helgrind/tests/tc12_rwl_trivial.c
==============================================================================
--- trunk/helgrind/tests/tc12_rwl_trivial.c (original)
+++ trunk/helgrind/tests/tc12_rwl_trivial.c Tue Aug 18 11:29:20 2015
@@ -5,7 +5,7 @@
#define _GNU_SOURCE 1
#include <stdio.h>
-#include <pthread.h>
+#include "safe-pthread.h"
#include <assert.h>
/* Do trivial stuff with a reader-writer lock. */
Modified: trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp
==============================================================================
--- trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp (original)
+++ trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp Tue Aug 18 11:29:20 2015
@@ -8,6 +8,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc12_rwl_trivial.c:29)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
Modified: trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp-solaris
==============================================================================
--- trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp-solaris (original)
+++ trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp-solaris Tue Aug 18 11:29:20 2015
@@ -8,6 +8,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc12_rwl_trivial.c:29)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
Modified: trunk/helgrind/tests/tc12_rwl_trivial.vgtest
==============================================================================
--- trunk/helgrind/tests/tc12_rwl_trivial.vgtest (original)
+++ trunk/helgrind/tests/tc12_rwl_trivial.vgtest Tue Aug 18 11:29:20 2015
@@ -1 +1,2 @@
+vgopts: --sigill-diagnostics=no
prog: tc12_rwl_trivial
Modified: trunk/helgrind/tests/tc20_verifywrap.c
==============================================================================
--- trunk/helgrind/tests/tc20_verifywrap.c (original)
+++ trunk/helgrind/tests/tc20_verifywrap.c Tue Aug 18 11:29:20 2015
@@ -15,7 +15,7 @@
#include <string.h>
#include <assert.h>
#include <unistd.h>
-#include <pthread.h>
+#include "safe-pthread.h"
#include <semaphore.h>
#if !defined(__APPLE__)
Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp
==============================================================================
--- trunk/helgrind/tests/tc20_verifywrap.stderr.exp (original)
+++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp Tue Aug 18 11:29:20 2015
@@ -163,6 +163,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:189)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
@@ -180,6 +181,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:206)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
@@ -199,6 +201,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:227)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.18
==============================================================================
--- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.18 (original)
+++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc-2.18 Tue Aug 18 11:29:20 2015
@@ -155,6 +155,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:189)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
@@ -169,6 +170,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:206)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32
==============================================================================
--- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32 (original)
+++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32 Tue Aug 18 11:29:20 2015
@@ -165,6 +165,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:189)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
@@ -179,6 +180,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:206)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
@@ -195,6 +197,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:227)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32-b
==============================================================================
--- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32-b (original)
+++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-mips32-b Tue Aug 18 11:29:20 2015
@@ -165,6 +165,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:189)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
@@ -179,6 +180,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:206)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
@@ -195,6 +197,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:227)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-s390x
==============================================================================
--- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-s390x (original)
+++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-s390x Tue Aug 18 11:29:20 2015
@@ -165,6 +165,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:189)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
@@ -179,6 +180,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:206)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
@@ -195,6 +197,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:227)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-solaris
==============================================================================
--- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-solaris (original)
+++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-solaris Tue Aug 18 11:29:20 2015
@@ -155,6 +155,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:189)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
@@ -180,6 +181,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:206)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
@@ -207,6 +209,7 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
+ ...
by 0x........: main (tc20_verifywrap.c:227)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
Modified: trunk/helgrind/tests/tc20_verifywrap.vgtest
==============================================================================
--- trunk/helgrind/tests/tc20_verifywrap.vgtest (original)
+++ trunk/helgrind/tests/tc20_verifywrap.vgtest Tue Aug 18 11:29:20 2015
@@ -1,3 +1,3 @@
prereq: test -e tc20_verifywrap
prog: tc20_verifywrap
-vgopts: --read-var-info=yes
+vgopts: --read-var-info=yes --sigill-diagnostics=no
|
|
From: <sv...@va...> - 2015-08-18 07:54:30
|
Author: sewardj
Date: Tue Aug 18 08:54:22 2015
New Revision: 15564
Log:
Fix a second format string error observed whilst building on OSX 10.10.
Modified:
trunk/coregrind/m_debuginfo/readpdb.c
Modified: trunk/coregrind/m_debuginfo/readpdb.c
==============================================================================
--- trunk/coregrind/m_debuginfo/readpdb.c (original)
+++ trunk/coregrind/m_debuginfo/readpdb.c Tue Aug 18 08:54:22 2015
@@ -2384,15 +2384,15 @@
const DebugInfoMapping* map = VG_(indexXA)(di->fsm.maps, i);
if (map->rx)
VG_(dmsg)("LOAD_PDB_DEBUGINFO: "
- "rx_map: avma %#lx size %7lu foff %ld\n",
- map->avma, map->size, map->foff);
+ "rx_map: avma %#lx size %7lu foff %lld\n",
+ map->avma, map->size, (Long)map->foff);
}
for (i = 0; i < VG_(sizeXA)(di->fsm.maps); i++) {
const DebugInfoMapping* map = VG_(indexXA)(di->fsm.maps, i);
if (map->rw)
VG_(dmsg)("LOAD_PDB_DEBUGINFO: "
- "rw_map: avma %#lx size %7lu foff %ld\n",
- map->avma, map->size, map->foff);
+ "rw_map: avma %#lx size %7lu foff %lld\n",
+ map->avma, map->size, (Long)map->foff);
}
VG_(dmsg)("LOAD_PDB_DEBUGINFO: "
|
|
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
|