diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/MemoryBlockUtils.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/MemoryBlockUtils.java
index 54115d3abf..de68519eb7 100644
--- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/MemoryBlockUtils.java
+++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/MemoryBlockUtils.java
@@ -225,14 +225,13 @@ public class MemoryBlockUtils {
block = program.getMemory().createInitializedBlock(name, start, fileBytes, offset,
length, isOverlay);
}
- catch (MemoryConflictException e) {
- block = program.getMemory().createInitializedBlock(name, start, fileBytes, offset,
- length, true);
+ catch (MemoryConflictException | DuplicateNameException e) {
+ block = createBlockNoDuplicateName(program, name, start, fileBytes, offset, length);
log.appendMsg("Conflict attempting to create memory block: " + name +
" at address " + start.toString() + " Created block in new overlay instead");
}
}
- catch (LockException | DuplicateNameException | MemoryConflictException e) {
+ catch (LockException | MemoryConflictException e) {
throw new RuntimeException(e);
}
@@ -241,6 +240,22 @@ public class MemoryBlockUtils {
return block;
}
+ private static MemoryBlock createBlockNoDuplicateName(Program program, String blockName,
+ Address start, FileBytes fileBytes, long offset, long length)
+ throws LockException, MemoryConflictException, AddressOverflowException {
+ int count = 1;
+ String name = blockName;
+ while (true) {
+ try {
+ return program.getMemory().createInitializedBlock(name, start, fileBytes, offset,
+ length, true);
+ }
+ catch (DuplicateNameException e) {
+ name = blockName + "_" + count++;
+ }
+ }
+ }
+
/**
* Creates a new initialized block in memory using the bytes from the given input stream.
* If there is a conflict when creating this block (some other block occupies at least some
diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/AbstractLibrarySupportLoader.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/AbstractLibrarySupportLoader.java
index 69cc915f9a..4dbf12095e 100644
--- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/AbstractLibrarySupportLoader.java
+++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/AbstractLibrarySupportLoader.java
@@ -139,7 +139,7 @@ public abstract class AbstractLibrarySupportLoader extends AbstractProgramLoader
}
@Override
- public String validateOptions(ByteProvider provider, LoadSpec loadSpec, List