diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/address/AddressMapImpl.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/address/AddressMapImpl.java
index fa68939881..2afe61480e 100644
--- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/address/AddressMapImpl.java
+++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/address/AddressMapImpl.java
@@ -15,10 +15,10 @@
*/
package ghidra.program.model.address;
-import ghidra.util.UniversalIdGenerator;
-
import java.util.*;
+import ghidra.util.UniversalIdGenerator;
+
/**
* AddressMapImpl provides a stand-alone AddressMap.
* An AddressMapImpl instance should only be used to decode keys which it has generated.
@@ -94,6 +94,7 @@ public class AddressMapImpl {
* start of a key range.
*/
private Comparator addressInsertionKeyRangeComparator = new Comparator() {
+ @Override
public int compare(Object keyRangeObj, Object addrObj) {
KeyRange range = (KeyRange) keyRangeObj;
Address addr = (Address) addrObj;
@@ -158,7 +159,7 @@ public class AddressMapImpl {
}
void checkAddressSpace(AddressSpace addrSpace) {
- String name = addrSpace.getName().toUpperCase();
+ String name = addrSpace.getName();
AddressSpace existingSpace = spaceMap.get(name);
if (existingSpace == null) {
spaceMap.put(name, addrSpace);
@@ -245,10 +246,12 @@ public class AddressMapImpl {
private void addKeyRanges(List keyRangeList, Address start, Address end) {
int index = Arrays.binarySearch(sortedBaseStartAddrs, start);
- if (index < 0)
+ if (index < 0) {
index = -index - 2;
- if (index < 0)
+ }
+ if (index < 0) {
index++;
+ }
while (index < sortedBaseStartAddrs.length &&
end.compareTo(sortedBaseStartAddrs[index]) >= 0) {
Address addr1 = max(start, sortedBaseStartAddrs[index]);
@@ -309,7 +312,7 @@ public class AddressMapImpl {
}
for (AddressSpace space : remapSpaces.values()) {
- spaceMap.put(space.getName().toUpperCase(), space);
+ spaceMap.put(space.getName(), space);
}
for (int i = 0; i < baseAddrs.length; i++) {
diff --git a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/address/AddressMapImplTest.java b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/address/AddressMapImplTest.java
index c890ec9659..00a17bff09 100644
--- a/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/address/AddressMapImplTest.java
+++ b/Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/program/model/address/AddressMapImplTest.java
@@ -15,7 +15,7 @@
*/
package ghidra.program.model.address;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
import org.junit.*;
@@ -26,6 +26,7 @@ public class AddressMapImplTest extends AbstractGenericTest {
AddressSpace sp16;
AddressSpace sp32;
AddressSpace sp64;
+ AddressSpace ov64;
AddressSpace regSpace;
AddressSpace stackSpace;
SegmentedAddressSpace segSpace1;
@@ -42,6 +43,8 @@ public class AddressMapImplTest extends AbstractGenericTest {
sp32 = new GenericAddressSpace("THREE", 32, AddressSpace.TYPE_RAM, 2);
sp64 = new GenericAddressSpace("FOUR", 64, AddressSpace.TYPE_RAM, 2);
+ ov64 = new OverlayAddressSpace("four", sp64, 100, 0x1000, 0x1fff);
+
segSpace1 = new SegmentedAddressSpace("SegSpaceOne", 3);
segSpace2 = new SegmentedAddressSpace("SegSpaceTwo", 4);
@@ -50,7 +53,7 @@ public class AddressMapImplTest extends AbstractGenericTest {
map = new AddressMapImpl();
- addrs = new Address[29];
+ addrs = new Address[31];
addrs[0] = sp8.getAddress(0);
addrs[1] = sp8.getAddress(0x0ff);
addrs[2] = sp16.getAddress(0);
@@ -84,6 +87,9 @@ public class AddressMapImplTest extends AbstractGenericTest {
addrs[27] = stackSpace.getAddress(0);
addrs[28] = stackSpace.getAddress(0x80000000);
+ addrs[29] = ov64.getAddress(0x1100);
+ addrs[30] = ov64.getAddress(0x2000);
+
}
@Test