| Summary: | No case for 1Uto32 - arm64 | ||
|---|---|---|---|
| Product: | [Developer tools] valgrind | Reporter: | Marek Zmysłowski <marekzmyslowski> |
| Component: | vex | Assignee: | Julian Seward <jseward> |
| Status: | REPORTED --- | ||
| Severity: | crash | ||
| Priority: | NOR | ||
| Version First Reported In: | 3.15 SVN | ||
| Target Milestone: | --- | ||
| Platform: | Ubuntu | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
Marek Zmysłowski
2019-07-09 10:41:44 UTC
Find the 1Uto64 case in host_arm64_isel.c and make 1Uto32 do the same thing. That should fix it. Then send us the patch :-) I should add: fixing this is trivial (it's a 1-liner). But I don't want to land the fix without at least someone having tested it. And I don't have a way to test it. So I created following fix:
-------------------------------------------------------------------------------
diff --git a/VEX/priv/host_arm64_isel.c b/VEX/priv/host_arm64_isel.c
index b2ab7422b..724633737 100644
--- a/VEX/priv/host_arm64_isel.c
+++ b/VEX/priv/host_arm64_isel.c
@@ -1946,7 +1946,9 @@ static HReg iselIntExpr_R_wrk ( ISelEnv* env, IRExpr* e )
addInstr(env, ARM64Instr_VXfromQ(dst, tmp, 0/*laneNo*/));
return dst;
}
- case Iop_1Uto64: {
+ case Iop_1Uto64:
+ case Iop_1Uto32:
+ {
/* 1Uto64(tmp). */
HReg dst = newVRegI(env);
if (e->Iex.Unop.arg->tag == Iex_RdTmp) {
-------------------------------------------------------------------------------
Currently I have a following issue:
==2953== Taintgrind, the taint analysis tool
==2953== Copyright (C) 2010-2018, and GNU GPL'd, by Wei Ming Khoo.
==2953== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==2953== Command: /bin/ls
==2953==
t111 = 64HLto128(CmpwNEZ64(t109),t109)
vex: the `impossible' happened:
iselStmt
vex storage: T total 32492776 bytes allocated
vex storage: P total 0 bytes allocated
valgrind: the 'impossible' happened:
LibVEX called failure_exit().
host stacktrace:
==2953== at 0x5802E0DC: show_sched_status_wrk (m_libcassert.c:388)
==2953== by 0x5802E20B: report_and_quit (m_libcassert.c:459)
==2953== by 0x5802E443: vgPlain_core_panic_at (m_libcassert.c:535)
==2953== by 0x5802E467: vgPlain_core_panic (m_libcassert.c:545)
==2953== by 0x580B415F: failure_exit (m_translate.c:751)
==2953== by 0x58130E8F: vpanic (main_util.c:255)
==2953== by 0x5819A263: iselSB_ARM64 (host_arm64_isel.c:4015)
==2953== by 0x5812D75F: LibVEX_Translate (main_main.c:1049)
==2953== by 0x580B6D77: vgPlain_translate (m_translate.c:1813)
==2953== by 0x58084EE7: handle_chain_me (scheduler.c:1167)
==2953== by 0x58087FDB: vgPlain_scheduler (scheduler.c:1516)
==2953== by 0x580E8937: run_a_thread_NORETURN (syswrap-linux.c:103)
==2953== by 0xFFFFFFFFFFFFFFFF: ???
sched status:
running_tid=1
Thread 1: status = VgTs_Runnable (lwpid 2953)
==2953== at 0x4007764: ??? (in /lib/aarch64-linux-gnu/ld-2.27.so)
client stack range: [0x1FFEFFF000 0x1FFF000FFF] client SP: 0x1FFEFFFBA0
valgrind stack range: [0x100486E000 0x100496DFFF] top usage: 6400 of 1048576
|