summaryrefslogtreecommitdiff
path: root/disassembler
diff options
context:
space:
mode:
author Mythri Alle <mythria@google.com> 2022-11-11 11:07:11 +0000
committer Treehugger Robot <treehugger-gerrit@google.com> 2022-11-14 10:18:14 +0000
commitd9abf5e08c79af03170eebbe32b5a9afb5f9551f (patch)
treeef387babf068f62d1a3c25264b5bff9cd8beb4aa /disassembler
parent0a907cdaf19a6f7d7d33e6b4c5dcb59da0512621 (diff)
Fix ArtDisassemblerTest.LoadLiteralVisit to read initialized values
ArtDisassemblerTest.LoadLiteralVisit tests the disassembly output of ldr by reading from pc + 0. It was using 64-bit gpr and fpr registers but we only know the contents of 32-bits (the encoding of the instruction). The other 32-bits could be uninitialized or maybe even unaccessible. So use 32-bit registers so we can expect a known value always. Bug: 258391316 Test: art_disassembler_tests in asan config Change-Id: Iaaf2bbe3912772593af64a54e49519ae40e18f14
Diffstat (limited to 'disassembler')
-rw-r--r--disassembler/disassembler_arm64_test.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/disassembler/disassembler_arm64_test.cc b/disassembler/disassembler_arm64_test.cc
index c1917cc52b..81c067ab56 100644
--- a/disassembler/disassembler_arm64_test.cc
+++ b/disassembler/disassembler_arm64_test.cc
@@ -138,10 +138,12 @@ TEST_F(ArtDisassemblerTest, LoadLiteralVisit) {
COMPARE(ldr(x0, MemOperand(x18, 0)), "ldr x0, \\[x18\\]$");
// Check we do append some extra info in the right text format for valid literal load instruction.
- COMPARE(ldr(x0, vixl::aarch64::Assembler::ImmLLiteral(0)),
- "ldr x0, pc\\+0 \\(addr -?0x[0-9a-f]+\\) \\(0x[0-9a-fA-F]+ / -?[0-9]+\\)");
- COMPARE(ldr(d0, vixl::aarch64::Assembler::ImmLLiteral(0)),
- "ldr d0, pc\\+0 \\(addr -?0x[0-9a-f]+\\) \\([0-9]+.[0-9]+e(\\+|-)[0-9]+\\)");
+ COMPARE(ldr(w0, vixl::aarch64::Assembler::ImmLLiteral(0)),
+ "ldr w0, pc\\+0 \\(addr -?0x[0-9a-f]+\\) \\(0x18000000 / 402653184\\)");
+ // We don't compare with exact value even though it's a known literal (the encoding of the
+ // instruction itself) since the precision of printed floating point values could change.
+ COMPARE(ldr(s0, vixl::aarch64::Assembler::ImmLLiteral(0)),
+ "ldr s0, pc\\+0 \\(addr -?0x[0-9a-f]+\\) \\([0-9]+.[0-9]+e(\\+|-)[0-9]+\\)");
}
TEST_F(ArtDisassemblerTest, LoadStoreUnsignedOffsetVisit) {