diff --git a/Ghidra/Features/Base/src/test/java/ghidra/app/util/cparser/PreProcessorTest.java b/Ghidra/Features/Base/src/test/java/ghidra/app/util/cparser/PreProcessorTest.java index 230058bc59..8fab182152 100644 --- a/Ghidra/Features/Base/src/test/java/ghidra/app/util/cparser/PreProcessorTest.java +++ b/Ghidra/Features/Base/src/test/java/ghidra/app/util/cparser/PreProcessorTest.java @@ -181,6 +181,62 @@ public class PreProcessorTest extends AbstractGenericTest { value = 6; defname = "DefVal_6ul"; checkDefine(dtMgr, path, value, defname); + + value = 7; + defname = "DefVal_7lu"; + checkDefine(dtMgr, path, value, defname); + + value = 8; + defname = "DefVal_8llu"; + checkDefine(dtMgr, path, value, defname); + + value = 9; + defname = "DefVal_9ull"; + checkDefine(dtMgr, path, value, defname); + + value = 10; + defname = "DefVal_10ll"; + checkDefine(dtMgr, path, value, defname); + + value = 1; + defname = "DefVal_P_1L"; + checkDefine(dtMgr, path, value, defname); + + value = 2; + defname = "DefVal_P_2l"; + checkDefine(dtMgr, path, value, defname); + + value = 3; + defname = "DefVal_P_3U"; + checkDefine(dtMgr, path, value, defname); + + value = 4; + defname = "DefVal_P_4u"; + checkDefine(dtMgr, path, value, defname); + + value = 5; + defname = "DefVal_P_5UL"; + checkDefine(dtMgr, path, value, defname); + + value = 6; + defname = "DefVal_P_6ul"; + checkDefine(dtMgr, path, value, defname); + + value = 7; + defname = "DefVal_P_7lu"; + checkDefine(dtMgr, path, value, defname); + + value = 8; + defname = "DefVal_P_8llu"; + checkDefine(dtMgr, path, value, defname); + + value = 9; + defname = "DefVal_P_9ull"; + checkDefine(dtMgr, path, value, defname); + + value = 10; + defname = "DefVal_P_10ll"; + checkDefine(dtMgr, path, value, defname); value = 0; defname = "TOO_MANY_FISH"; diff --git a/Ghidra/Features/Base/src/test/resources/ghidra/app/util/cparser/PreProcessorTest.h b/Ghidra/Features/Base/src/test/resources/ghidra/app/util/cparser/PreProcessorTest.h index 4b9c42294c..1269589eb2 100644 --- a/Ghidra/Features/Base/src/test/resources/ghidra/app/util/cparser/PreProcessorTest.h +++ b/Ghidra/Features/Base/src/test/resources/ghidra/app/util/cparser/PreProcessorTest.h @@ -219,12 +219,27 @@ int TEST_FAILED; #define DefVal10 ((0x7fff) * 900L / 1000) -#define DefVal_1L (1L) -#define DefVal_2l (2l) -#define DefVal_3U (3U ) -#define DefVal_4u ( 4u) -#define DefVal_5UL ( 5UL ) -#define DefVal_6ul (6ul) +#define DefVal_1L 1L +#define DefVal_2l 2l +#define DefVal_3U 3U +#define DefVal_4u 4u +#define DefVal_5UL 5UL +#define DefVal_6ul 6ul +#define DefVal_7lu 7lu +#define DefVal_8llu 8llu +#define DefVal_9ull 9ull +#define DefVal_10ll 10ll + +#define DefVal_P_1L (1L) +#define DefVal_P_2l (2l) +#define DefVal_P_3U (3U ) +#define DefVal_P_4u ( 4u) +#define DefVal_P_5UL ( 5UL ) +#define DefVal_P_6ul (6ul) +#define DefVal_P_7lu ( 7lu ) +#define DefVal_P_8llu ( 8llu ) +#define DefVal_P_9ull ( 9ull ) +#define DefVal_P_10ll ( 10ll ) #define BIGNUM 64 * 16 + 16 diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/util/AddressEvaluator.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/util/AddressEvaluator.java index 12d98bcac8..acbcf856d7 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/util/AddressEvaluator.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/util/AddressEvaluator.java @@ -269,7 +269,10 @@ public class AddressEvaluator { radix = 16; } strValue = strValue.toLowerCase(); - if (strValue.endsWith("ul")) { + if (strValue.endsWith("ull") || strValue.endsWith("llu")) { + strValue = strValue.substring(start, strValue.length() - 3); + } + else if (strValue.endsWith("ul") || strValue.endsWith("lu") || strValue.endsWith("ll")) { strValue = strValue.substring(start, strValue.length() - 2); } else if (strValue.endsWith("l") || strValue.endsWith("u")) {