From 79875e0014327b8d6b52a70dbcbe3ed53dbabc95 Mon Sep 17 00:00:00 2001
From: dev747368 <48332326+dev747368@users.noreply.github.com>
Date: Fri, 16 Dec 2022 16:59:47 +0000
Subject: [PATCH] GP-2931 remove UnsignedDataUtils
---
.../program/util/SymbolicPropogator.java | 10 +-
.../ghidra/util/UnsignedDataUtilsTest.java | 275 -----------------
.../DB/src/main/java/db/FixedField10.java | 23 +-
.../java/generic/util/UnsignedDataUtils.java | 281 ------------------
.../pcodeCPort/slghsymbol/VarnodeSymbol.java | 8 +-
5 files changed, 18 insertions(+), 579 deletions(-)
delete mode 100644 Ghidra/Features/Base/src/test.slow/java/ghidra/util/UnsignedDataUtilsTest.java
delete mode 100644 Ghidra/Framework/Generic/src/main/java/generic/util/UnsignedDataUtils.java
diff --git a/Ghidra/Features/Base/src/main/java/ghidra/program/util/SymbolicPropogator.java b/Ghidra/Features/Base/src/main/java/ghidra/program/util/SymbolicPropogator.java
index 6c892ef9fb..bee638d260 100644
--- a/Ghidra/Features/Base/src/main/java/ghidra/program/util/SymbolicPropogator.java
+++ b/Ghidra/Features/Base/src/main/java/ghidra/program/util/SymbolicPropogator.java
@@ -15,12 +15,12 @@
*/
package ghidra.program.util;
-import java.math.BigInteger;
import java.util.*;
+import java.math.BigInteger;
+
import org.apache.commons.collections4.map.LRUMap;
-import generic.util.UnsignedDataUtils;
import ghidra.app.cmd.disassemble.DisassembleCommand;
import ghidra.app.cmd.function.CallDepthChangeInfo;
import ghidra.pcode.opbehavior.*;
@@ -1319,7 +1319,7 @@ public class SymbolicPropogator {
val2 = vContext.getValue(in[1], false, evaluator);
lval1 = vContext.getConstant(val1, evaluator);
lval2 = vContext.getConstant(val2, evaluator);
- lresult = UnsignedDataUtils.unsignedLessThan(lval1, lval2) ? 1 : 0;
+ lresult = Long.compareUnsigned(lval1, lval2) < 0 ? 1 : 0;
result = vContext.createConstantVarnode(lresult, val1.getSize());
vContext.putValue(out, result, mustClearAll);
break;
@@ -1340,7 +1340,7 @@ public class SymbolicPropogator {
val2 = vContext.getValue(in[1], false, evaluator);
lval1 = vContext.getConstant(val1, evaluator);
lval2 = vContext.getConstant(val2, evaluator);
- lresult = UnsignedDataUtils.unsignedLessThanOrEqual(lval1, lval2) ? 1 : 0;
+ lresult = Long.compareUnsigned(lval1, lval2) <= 0 ? 1 : 0;
result = vContext.createConstantVarnode(lresult, val1.getSize());
vContext.putValue(out, result, mustClearAll);
break;
@@ -1693,7 +1693,7 @@ public class SymbolicPropogator {
}
private InjectPayload findPcodeInjection(Program prog, PcodeInjectLibrary snippetLibrary, long callOtherIndex) {
- InjectPayload payload = (InjectPayload) injectPayloadCache.get(callOtherIndex);
+ InjectPayload payload = injectPayloadCache.get(callOtherIndex);
// has a payload value for the pcode callother index
if (payload != null) {
diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/util/UnsignedDataUtilsTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/util/UnsignedDataUtilsTest.java
deleted file mode 100644
index 3eeb9b3789..0000000000
--- a/Ghidra/Features/Base/src/test.slow/java/ghidra/util/UnsignedDataUtilsTest.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/* ###
- * IP: GHIDRA
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package ghidra.util;
-
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
-
-import generic.util.UnsignedDataUtils;
-import ghidra.test.AbstractGhidraHeadedIntegrationTest;
-
-public class UnsignedDataUtilsTest extends AbstractGhidraHeadedIntegrationTest {
-
- @Test
- public void testByteGreaterThan() {
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((byte) 0, (byte) 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((byte) 1, (byte) 2));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan((byte) 0xff, (byte) 0xee));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((byte) 1, (byte) 0xbb));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan((byte) 0xbb, (byte) 1));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((byte) 0, (byte) 2));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan((byte) 2, (byte) 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((byte) 0, (byte) 0xaa));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan((byte) 0xaa, (byte) 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((byte) 25, (byte) 25));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((byte) 0xee, (byte) 0xee));
- }
-
- @Test
- public void testByteGreaterThanOrEqual() {
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((byte) 0, (byte) 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual((byte) 1, (byte) 2));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((byte) 0xff, (byte) 0xee));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual((byte) 1, (byte) 0xbb));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((byte) 0xbb, (byte) 1));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual((byte) 0, (byte) 2));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((byte) 2, (byte) 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual((byte) 0, (byte) 0xaa));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((byte) 0xaa, (byte) 0));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((byte) 25, (byte) 25));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((byte) 0xee, (byte) 0xee));
- }
-
- @Test
- public void testByteLessThan() {
- assertTrue(!UnsignedDataUtils.unsignedLessThan((byte) 0, (byte) 0));
- assertTrue(UnsignedDataUtils.unsignedLessThan((byte) 1, (byte) 2));
- assertTrue(!UnsignedDataUtils.unsignedLessThan((byte) 0xff, (byte) 0xee));
- assertTrue(UnsignedDataUtils.unsignedLessThan((byte) 1, (byte) 0xbb));
- assertTrue(!UnsignedDataUtils.unsignedLessThan((byte) 0xbb, (byte) 1));
- assertTrue(UnsignedDataUtils.unsignedLessThan((byte) 0, (byte) 2));
- assertTrue(!UnsignedDataUtils.unsignedLessThan((byte) 2, (byte) 0));
- assertTrue(UnsignedDataUtils.unsignedLessThan((byte) 0, (byte) 0xaa));
- assertTrue(!UnsignedDataUtils.unsignedLessThan((byte) 0xaa, (byte) 0));
- assertTrue(!UnsignedDataUtils.unsignedLessThan((byte) 25, (byte) 25));
- assertTrue(!UnsignedDataUtils.unsignedLessThan((byte) 0xee, (byte) 0xee));
- }
-
- @Test
- public void testByteLessThanOrEqual() {
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((byte) 0, (byte) 0));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((byte) 1, (byte) 2));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual((byte) 0xff, (byte) 0xee));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((byte) 1, (byte) 0xbb));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual((byte) 0xbb, (byte) 1));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((byte) 0, (byte) 2));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual((byte) 2, (byte) 0));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((byte) 0, (byte) 0xaa));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual((byte) 0xaa, (byte) 0));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((byte) 25, (byte) 25));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((byte) 0xee, (byte) 0xee));
- }
-
- @Test
- public void testShortGreaterThan() {
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((short) 0, (short) 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((short) 1, (short) 2));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan((short) 0xffff, (short) 0xeeee));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((short) 1, (short) 0xbbbb));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan((short) 0xbbbb, (short) 1));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((short) 0, (short) 2));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan((short) 2, (short) 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((short) 0, (short) 0xaaaa));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan((short) 0xaaaa, (short) 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((short) 25, (short) 25));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan((short) 0xeeee, (short) 0xeeee));
- }
-
- @Test
- public void testShortGreaterThanOrEqual() {
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((short) 0, (short) 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual((short) 1, (short) 2));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((short) 0xffff, (short) 0xeeee));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual((short) 1, (short) 0xbbbb));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((short) 0xbbbb, (short) 1));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual((short) 0, (short) 2));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((short) 2, (short) 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual((short) 0, (short) 0xaaaa));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((short) 0xaaaa, (short) 0));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((short) 25, (short) 25));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual((short) 0xeeee, (short) 0xeeee));
- }
-
- @Test
- public void testShortLessThan() {
- assertTrue(!UnsignedDataUtils.unsignedLessThan((short) 0, (short) 0));
- assertTrue(UnsignedDataUtils.unsignedLessThan((short) 1, (short) 2));
- assertTrue(!UnsignedDataUtils.unsignedLessThan((short) 0xffff, (short) 0xeeee));
- assertTrue(UnsignedDataUtils.unsignedLessThan((short) 1, (short) 0xbbbb));
- assertTrue(!UnsignedDataUtils.unsignedLessThan((short) 0xbbbb, (short) 1));
- assertTrue(UnsignedDataUtils.unsignedLessThan((short) 0, (short) 2));
- assertTrue(!UnsignedDataUtils.unsignedLessThan((short) 2, (short) 0));
- assertTrue(UnsignedDataUtils.unsignedLessThan((short) 0, (short) 0xaaaa));
- assertTrue(!UnsignedDataUtils.unsignedLessThan((short) 0xaaaa, (short) 0));
- assertTrue(!UnsignedDataUtils.unsignedLessThan((short) 25, (short) 25));
- assertTrue(!UnsignedDataUtils.unsignedLessThan((short) 0xeeee, (short) 0xeeee));
- }
-
- @Test
- public void testShortLessThanOrEqual() {
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((short) 0, (short) 0));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((short) 1, (short) 2));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual((short) 0xffff, (short) 0xeeee));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((short) 1, (short) 0xbbbb));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual((short) 0xbbbb, (short) 1));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((short) 0, (short) 2));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual((short) 2, (short) 0));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((short) 0, (short) 0xaaaa));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual((short) 0xaaaa, (short) 0));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((short) 25, (short) 25));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual((short) 0xeeee, (short) 0xeeee));
- }
-
- /*********************************/
-
- @Test
- public void testIntGreaterThan() {
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(0, 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(1, 2));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan(0xffffffff, 0xeeeeeeee));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(1, 0xbbbbbbbb));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan(0xbbbbbbbb, 1));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(0, 2));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan(2, 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(0, 0xaaaaaaaa));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan(0xaaaaaaaa, 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(25, 25));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(0xeeeeeeee, 0xeeeeeeee));
- }
-
- @Test
- public void testIntGreaterThanOrEqual() {
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual(0, 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual(1, 2));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual(0xffffffff, 0xeeeeeeee));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual(1, 0xbbbbbbbb));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual(0xbbbbbbbb, 1));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual(0, 2));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual(2, 0));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual(0, 0xaaaaaaaa));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual(0xaaaaaaaa, 0));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual(25, 25));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual(0xeeeeeeee, 0xeeeeeeee));
- }
-
- @Test
- public void testIntLessThan() {
- assertTrue(!UnsignedDataUtils.unsignedLessThan(0, 0));
- assertTrue(UnsignedDataUtils.unsignedLessThan(1, 2));
- assertTrue(!UnsignedDataUtils.unsignedLessThan(0xffffffff, 0xeeeeeeee));
- assertTrue(UnsignedDataUtils.unsignedLessThan(1, 0xbbbbbbbb));
- assertTrue(!UnsignedDataUtils.unsignedLessThan(0xbbbbbbbb, 1));
- assertTrue(UnsignedDataUtils.unsignedLessThan(0, 2));
- assertTrue(!UnsignedDataUtils.unsignedLessThan(2, 0));
- assertTrue(UnsignedDataUtils.unsignedLessThan(0, 0xaaaaaaaa));
- assertTrue(!UnsignedDataUtils.unsignedLessThan(0xaaaaaaaa, 0));
- assertTrue(!UnsignedDataUtils.unsignedLessThan(25, 25));
- assertTrue(!UnsignedDataUtils.unsignedLessThan(0xeeeeeeee, 0xeeeeeeee));
- }
-
- @Test
- public void testIntLessThanOrEqual() {
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(0, 0));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(1, 2));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual(0xffffffff, 0xeeeeeeee));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(1, 0xbbbbbbbb));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual(0xbbbbbbbb, 1));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(0, 2));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual(2, 0));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(0, 0xaaaaaaaa));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual(0xaaaaaaaa, 0));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(25, 25));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(0xeeeeeeee, 0xeeeeeeee));
- }
-
- /*********************************/
-
- @Test
- public void testLongGreaterThan() {
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(0L, 0L));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(1L, 2L));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan(0xffffffffffffffffL, 0xeeeeeeeeeeeeeeeeL));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(1L, 0xbbbbbbbbbbbbbbbbL));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan(0xbbbbbbbbbbbbbbbbL, 1L));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(0L, 2L));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan(2L, 0L));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(0L, 0xaaaaaaaaaaaaaaaaL));
- assertTrue(UnsignedDataUtils.unsignedGreaterThan(0xaaaaaaaaaaaaaaaaL, 0L));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThan(25L, 25L));
- assertTrue(
- !UnsignedDataUtils.unsignedGreaterThan(0xeeeeeeeeeeeeeeeeL, 0xeeeeeeeeeeeeeeeeL));
- }
-
- @Test
- public void testLongGreaterThanOrEqual() {
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual(0L, 0L));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual(1L, 2L));
- assertTrue(
- UnsignedDataUtils.unsignedGreaterThanOrEqual(0xffffffffffffffffL, 0xeeeeeeeeeeeeeeeeL));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual(1L, 0xbbbbbbbbbbbbbbbbL));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual(0xbbbbbbbbbbbbbbbbL, 1L));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual(0L, 2L));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual(2L, 0L));
- assertTrue(!UnsignedDataUtils.unsignedGreaterThanOrEqual(0L, 0xaaaaaaaaaaaaaaaaL));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual(0xaaaaaaaaaaaaaaaaL, 0L));
- assertTrue(UnsignedDataUtils.unsignedGreaterThanOrEqual(25L, 25L));
- assertTrue(
- UnsignedDataUtils.unsignedGreaterThanOrEqual(0xeeeeeeeeeeeeeeeeL, 0xeeeeeeeeeeeeeeeeL));
- }
-
- @Test
- public void testLongLessThan() {
- assertTrue(!UnsignedDataUtils.unsignedLessThan(0L, 0L));
- assertTrue(UnsignedDataUtils.unsignedLessThan(1L, 2L));
- assertTrue(!UnsignedDataUtils.unsignedLessThan(0xffffffffffffffffL, 0xeeeeeeeeeeeeeeeeL));
- assertTrue(UnsignedDataUtils.unsignedLessThan(1L, 0xbbbbbbbbbbbbbbbbL));
- assertTrue(!UnsignedDataUtils.unsignedLessThan(0xbbbbbbbbbbbbbbbbL, 1L));
- assertTrue(UnsignedDataUtils.unsignedLessThan(0L, 2L));
- assertTrue(!UnsignedDataUtils.unsignedLessThan(2L, 0L));
- assertTrue(UnsignedDataUtils.unsignedLessThan(0L, 0xaaaaaaaaaaaaaaaaL));
- assertTrue(!UnsignedDataUtils.unsignedLessThan(0xaaaaaaaaaaaaaaaaL, 0L));
- assertTrue(!UnsignedDataUtils.unsignedLessThan(25L, 25L));
- assertTrue(!UnsignedDataUtils.unsignedLessThan(0xeeeeeeeeeeeeeeeeL, 0xeeeeeeeeeeeeeeeeL));
- }
-
- @Test
- public void testLongLessThanOrEqual() {
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(0L, 0L));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(1L, 2L));
- assertTrue(
- !UnsignedDataUtils.unsignedLessThanOrEqual(0xffffffffffffffffL, 0xeeeeeeeeeeeeeeeeL));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(1L, 0xbbbbbbbbbbbbbbbbL));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual(0xbbbbbbbbbbbbbbbbL, 1L));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(0L, 2L));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual(2L, 0L));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(0L, 0xaaaaaaaaaaaaaaaaL));
- assertTrue(!UnsignedDataUtils.unsignedLessThanOrEqual(0xaaaaaaaaaaaaaaaaL, 0L));
- assertTrue(UnsignedDataUtils.unsignedLessThanOrEqual(25L, 25L));
- assertTrue(
- UnsignedDataUtils.unsignedLessThanOrEqual(0xeeeeeeeeeeeeeeeeL, 0xeeeeeeeeeeeeeeeeL));
- }
-}
diff --git a/Ghidra/Framework/DB/src/main/java/db/FixedField10.java b/Ghidra/Framework/DB/src/main/java/db/FixedField10.java
index bdabe719e9..df11afccc3 100644
--- a/Ghidra/Framework/DB/src/main/java/db/FixedField10.java
+++ b/Ghidra/Framework/DB/src/main/java/db/FixedField10.java
@@ -18,7 +18,6 @@ package db;
import java.io.IOException;
import db.buffers.DataBuffer;
-import generic.util.UnsignedDataUtils;
import ghidra.util.BigEndianDataConverter;
/**
@@ -102,26 +101,22 @@ public class FixedField10 extends FixedField {
throw new UnsupportedOperationException("may only compare similar Field types");
}
FixedField10 f = (FixedField10) o;
- if (hi8 != f.hi8) {
- return UnsignedDataUtils.unsignedLessThan(hi8, f.hi8) ? -1 : 1;
+ int result = Long.compareUnsigned(hi8, f.hi8);
+ if (result == 0) {
+ result = Short.compareUnsigned(lo2, f.lo2);
}
- if (lo2 != f.lo2) {
- return UnsignedDataUtils.unsignedLessThan(lo2, f.lo2) ? -1 : 1;
- }
- return 0;
+ return result;
}
@Override
int compareTo(DataBuffer buffer, int offset) {
long otherHi8 = buffer.getLong(offset);
- if (hi8 != otherHi8) {
- return UnsignedDataUtils.unsignedLessThan(hi8, otherHi8) ? -1 : 1;
+ int result = Long.compareUnsigned(hi8, otherHi8);
+ if (result == 0) {
+ short otherLo2 = buffer.getShort(offset + 8);
+ result = Short.compareUnsigned(lo2, otherLo2);
}
- short otherLo2 = buffer.getShort(offset + 8);
- if (lo2 != otherLo2) {
- return UnsignedDataUtils.unsignedLessThan(lo2, otherLo2) ? -1 : 1;
- }
- return 0;
+ return result;
}
@Override
diff --git a/Ghidra/Framework/Generic/src/main/java/generic/util/UnsignedDataUtils.java b/Ghidra/Framework/Generic/src/main/java/generic/util/UnsignedDataUtils.java
deleted file mode 100644
index 2cb7795bbb..0000000000
--- a/Ghidra/Framework/Generic/src/main/java/generic/util/UnsignedDataUtils.java
+++ /dev/null
@@ -1,281 +0,0 @@
-/* ###
- * IP: GHIDRA
- * REVIEWED: YES
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package generic.util;
-
-import ghidra.util.Conv;
-
-/**
- * A class for performing unsigned comparisons
- * of java primitives.
- *
- *
- */
-public class UnsignedDataUtils {
-
- private UnsignedDataUtils() {
- }
-
- /**
- * Simple test for the Comp class.
- * @param args not used
- */
- public static void main(String [] args) {
- System.out.println((byte)5<(byte)250);
- System.out.println(unsignedLessThan((byte)5,(byte)250));
- System.out.println(0x5<0x87654321);
- System.out.println(unsignedLessThan(0x5,0x87654321));
- }
-
- private final static int LESS_THAN = 0;
- private final static int LESS_THAN_OR_EQUAL = 1;
- private final static int GREATER_THAN = 2;
- private final static int GREATER_THAN_OR_EQUAL = 3;
-
- private static boolean comp(int type, byte i, byte j) {
- return comp(type,
- Conv.byteToLong(i),
- Conv.byteToLong(j));
- }
- private static boolean comp(int type, short i, short j) {
- return comp(type,
- Conv.shortToLong(i),
- Conv.shortToLong(j));
- }
- private static boolean comp(int type, int i, int j) {
- return comp(type,
- Conv.intToLong(i),
- Conv.intToLong(j));
- }
- private static boolean comp(int type, long i, long j) {
- boolean isHiBitSetI = i < 0;
- boolean isHiBitSetJ = j < 0;
-
- if (isHiBitSetI == isHiBitSetJ) {//same sign...
- switch (type) {
- case LESS_THAN:
- return (i < j);
- case LESS_THAN_OR_EQUAL:
- return (i <= j);
- case GREATER_THAN:
- return (i > j);
- case GREATER_THAN_OR_EQUAL:
- return (i >= j);
- }
- }
- else if (isHiBitSetI) {
- switch (type) {
- case LESS_THAN:
- case LESS_THAN_OR_EQUAL:
- return false;
- case GREATER_THAN:
- case GREATER_THAN_OR_EQUAL:
- return true;
- }
- }
- else {
- switch (type) {
- case LESS_THAN:
- case LESS_THAN_OR_EQUAL:
- return true;
- case GREATER_THAN:
- case GREATER_THAN_OR_EQUAL:
- return false;
- }
- }
- throw new RuntimeException("BAD COMP TYPE!");
- }
-
- /**
- * Returns true if i is LESS THAN j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is less than j
- */
- public static boolean unsignedLessThan(byte i, byte j) {
- return comp(LESS_THAN, i, j);
- }
- /**
- * Returns true if i is LESS THAN or EQUAL TO j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is less than or equal to j
- */
- public static boolean unsignedLessThanOrEqual(byte i, byte j) {
- return comp(LESS_THAN_OR_EQUAL, i, j);
- }
- /**
- * Returns true if i is GREATER THAN j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is greater than j
- */
- public static boolean unsignedGreaterThan(byte i, byte j) {
- return comp(GREATER_THAN, i, j);
- }
- /**
- * Returns true if i is GREATER THAN or EQUAL TO j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is greater than or equal to j
- */
- public static boolean unsignedGreaterThanOrEqual(byte i, byte j) {
- return comp(GREATER_THAN_OR_EQUAL, i, j);
- }
-
- /**
- * Returns true if i is LESS THAN j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is less than j
- */
- public static boolean unsignedLessThan(short i, short j) {
- return comp(LESS_THAN, i, j);
- }
- /**
- * Returns true if i is LESS THAN or EQUAL TO j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is less than or equal to j
- */
- public static boolean unsignedLessThanOrEqual(short i, short j) {
- return comp(LESS_THAN_OR_EQUAL, i, j);
- }
- /**
- * Returns true if i is GREATER THAN j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is greater than j
- */
- public static boolean unsignedGreaterThan(short i, short j) {
- return comp(GREATER_THAN, i, j);
- }
- /**
- * Returns true if i is GREATER THAN or EQUAL TO j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is greater than or equal to j
- */
- public static boolean unsignedGreaterThanOrEqual(short i, short j) {
- return comp(GREATER_THAN_OR_EQUAL, i, j);
- }
-
- /**
- * Returns true if i is LESS THAN j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is less than j
- */
- public static boolean unsignedLessThan(int i, int j) {
- return comp(LESS_THAN, i, j);
- }
- /**
- * Returns true if i is LESS THAN or EQUAL TO j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is less than or equal to j
- */
- public static boolean unsignedLessThanOrEqual(int i, int j) {
- return comp(LESS_THAN_OR_EQUAL, i, j);
- }
- /**
- * Returns true if i is GREATER THAN j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is greater than j
- */
- public static boolean unsignedGreaterThan(int i, int j) {
- return comp(GREATER_THAN, i, j);
- }
- /**
- * Returns true if i is GREATER THAN or EQUAL TO j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is greater than or equal to j
- */
- public static boolean unsignedGreaterThanOrEqual(int i, int j) {
- return comp(GREATER_THAN_OR_EQUAL, i, j);
- }
-
- /**
- * Returns true if i is LESS THAN j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is less than j
- */
- public static boolean unsignedLessThan(long i, long j) {
- return comp(LESS_THAN, i, j);
- }
- /**
- * Returns true if i is LESS THAN or EQUAL TO j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return true if i is less than or equal to j
- */
- public static boolean unsignedLessThanOrEqual(long i, long j) {
- return comp(LESS_THAN_OR_EQUAL, i, j);
- }
- /**
- * Returns true if i is GREATER THAN j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return return true if i is greater than j
- */
- public static boolean unsignedGreaterThan(long i, long j) {
- return comp(GREATER_THAN, i, j);
- }
- /**
- * Returns true if i is GREATER THAN or EQUAL TO j.
- *
- * @param i an argument
- * @param j another argument
- *
- * @return return true if i is greater than or equal to j
- */
- public static boolean unsignedGreaterThanOrEqual(long i, long j) {
- return comp(GREATER_THAN_OR_EQUAL, i, j);
- }
-}
diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcodeCPort/slghsymbol/VarnodeSymbol.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcodeCPort/slghsymbol/VarnodeSymbol.java
index 3e6676d51a..39fc7df72c 100644
--- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcodeCPort/slghsymbol/VarnodeSymbol.java
+++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/pcodeCPort/slghsymbol/VarnodeSymbol.java
@@ -15,12 +15,12 @@
*/
package ghidra.pcodeCPort.slghsymbol;
-import java.io.PrintStream;
import java.util.ArrayList;
+import java.io.PrintStream;
+
import org.jdom.Element;
-import generic.util.UnsignedDataUtils;
// A global varnode
import ghidra.pcodeCPort.context.SleighError;
import ghidra.pcodeCPort.pcoderaw.VarnodeData;
@@ -71,9 +71,9 @@ public class VarnodeSymbol extends PatternlessSymbol {
int addrSize = base.getAddrSize();
long maxByteOffset = ((long) base.getWordSize() << (8 * addrSize)) - 1;
long endOffset = offset + size - 1;
- boolean sizeError = size != 0 && UnsignedDataUtils.unsignedGreaterThan(offset, endOffset);
+ boolean sizeError = size != 0 && Long.compareUnsigned(offset, endOffset) > 0;
if (!sizeError && addrSize < 8) {
- sizeError = UnsignedDataUtils.unsignedGreaterThan(endOffset, maxByteOffset);
+ sizeError = Long.compareUnsigned(endOffset, maxByteOffset) > 0;
}
if (sizeError) {
throw new SleighError(nm + ":" + size + " @ " + base.getName() + ":" +