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