From 40a02a6981ed62e26ef98985ea9d97aa06a96009 Mon Sep 17 00:00:00 2001 From: ghidorahrex Date: Tue, 8 Oct 2019 15:43:30 -0400 Subject: [PATCH] GT-3202: Fix for DECOMPILE_MODE flag being interpreted incorrectly --- Ghidra/Processors/Sparc/data/languages/SparcV9.sinc | 4 ++-- .../ghidra/test/processors/SparcV9_32_O0_EmulatorTest.java | 6 ++++++ .../ghidra/test/processors/SparcV9_32_O3_EmulatorTest.java | 6 ++++++ .../ghidra/test/processors/SparcV9_64_O0_EmulatorTest.java | 6 ++++++ .../ghidra/test/processors/SparcV9_64_O3_EmulatorTest.java | 6 ++++++ 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Ghidra/Processors/Sparc/data/languages/SparcV9.sinc b/Ghidra/Processors/Sparc/data/languages/SparcV9.sinc index 2e2cb1f412..3bddef8b88 100644 --- a/Ghidra/Processors/Sparc/data/languages/SparcV9.sinc +++ b/Ghidra/Processors/Sparc/data/languages/SparcV9.sinc @@ -252,7 +252,7 @@ attach variables [ rs1_3 ] [ Y _ CCR _ TICK PC _ # CWP++ macro save() { -if (!DECOMPILE_MODE) goto ; +if (DECOMPILE_MODE) goto ; # Save inputs *[register]:$(SIZE) (&w010 + (CWP:4*$(REGWINSZ)+0)*$(SIZE)) = i0; *[register]:$(SIZE) (&w010 + (CWP:4*$(REGWINSZ)+1)*$(SIZE)) = i1; @@ -312,7 +312,7 @@ macro restore() { sp = fp; o7 = i7; # address of CALLer address -if (!DECOMPILE_MODE) goto ; +if (DECOMPILE_MODE) goto ; # restore original inputs i0 = *[register]:$(SIZE) ((&w010) + ((CWP:4*$(REGWINSZ)+0)*$(SIZE))); i1 = *[register]:$(SIZE) ((&w010) + ((CWP:4*$(REGWINSZ)+1)*$(SIZE))); diff --git a/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_32_O0_EmulatorTest.java b/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_32_O0_EmulatorTest.java index b63beeb408..f8f5e88d75 100644 --- a/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_32_O0_EmulatorTest.java +++ b/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_32_O0_EmulatorTest.java @@ -15,6 +15,8 @@ */ package ghidra.test.processors; +import ghidra.program.model.listing.Program; +import ghidra.test.processors.support.EmulatorTestRunner; import ghidra.test.processors.support.ProcessorEmulatorTestAdapter; import junit.framework.Test; @@ -34,6 +36,10 @@ public class SparcV9_32_O0_EmulatorTest extends ProcessorEmulatorTestAdapter { return "sparcV9_32_GCC_O0"; } + protected void initializeState(EmulatorTestRunner testRunner, Program program) throws Exception { + testRunner.setRegister("DECOMPILE_MODE", 0x0); // turn decompile mode off + } + public static Test suite() { return ProcessorEmulatorTestAdapter.buildEmulatorTestSuite(SparcV9_32_O0_EmulatorTest.class); } diff --git a/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_32_O3_EmulatorTest.java b/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_32_O3_EmulatorTest.java index 7e225ba66a..e959c430e3 100644 --- a/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_32_O3_EmulatorTest.java +++ b/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_32_O3_EmulatorTest.java @@ -15,6 +15,8 @@ */ package ghidra.test.processors; +import ghidra.program.model.listing.Program; +import ghidra.test.processors.support.EmulatorTestRunner; import ghidra.test.processors.support.ProcessorEmulatorTestAdapter; import junit.framework.Test; @@ -34,6 +36,10 @@ public class SparcV9_32_O3_EmulatorTest extends ProcessorEmulatorTestAdapter { return "sparcV9_32_GCC_O3"; } + protected void initializeState(EmulatorTestRunner testRunner, Program program) throws Exception { + testRunner.setRegister("DECOMPILE_MODE", 0x0); // turn decompile mode off + } + public static Test suite() { return ProcessorEmulatorTestAdapter.buildEmulatorTestSuite(SparcV9_32_O3_EmulatorTest.class); } diff --git a/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_64_O0_EmulatorTest.java b/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_64_O0_EmulatorTest.java index ba005c1d31..31bb61b0e5 100644 --- a/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_64_O0_EmulatorTest.java +++ b/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_64_O0_EmulatorTest.java @@ -15,6 +15,8 @@ */ package ghidra.test.processors; +import ghidra.program.model.listing.Program; +import ghidra.test.processors.support.EmulatorTestRunner; import ghidra.test.processors.support.ProcessorEmulatorTestAdapter; import junit.framework.Test; @@ -34,6 +36,10 @@ public class SparcV9_64_O0_EmulatorTest extends ProcessorEmulatorTestAdapter { return "sparcV9_64_GCC_O0"; } + protected void initializeState(EmulatorTestRunner testRunner, Program program) throws Exception { + testRunner.setRegister("DECOMPILE_MODE", 0x0); // turn decompile mode off + } + public static Test suite() { return ProcessorEmulatorTestAdapter.buildEmulatorTestSuite(SparcV9_64_O0_EmulatorTest.class); } diff --git a/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_64_O3_EmulatorTest.java b/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_64_O3_EmulatorTest.java index 82c9417fca..a68eff42b4 100644 --- a/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_64_O3_EmulatorTest.java +++ b/Ghidra/Processors/Sparc/src/test.processors/java/ghidra/test/processors/SparcV9_64_O3_EmulatorTest.java @@ -15,6 +15,8 @@ */ package ghidra.test.processors; +import ghidra.program.model.listing.Program; +import ghidra.test.processors.support.EmulatorTestRunner; import ghidra.test.processors.support.ProcessorEmulatorTestAdapter; import junit.framework.Test; @@ -34,6 +36,10 @@ public class SparcV9_64_O3_EmulatorTest extends ProcessorEmulatorTestAdapter { return "sparcV9_64_GCC_O3"; } + protected void initializeState(EmulatorTestRunner testRunner, Program program) throws Exception { + testRunner.setRegister("DECOMPILE_MODE", 0x0); // turn decompile mode off + } + public static Test suite() { return ProcessorEmulatorTestAdapter.buildEmulatorTestSuite(SparcV9_64_O3_EmulatorTest.class); }