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 f320158e2e..9291ddb49f 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 @@ -407,24 +407,6 @@ public abstract class AbstractLibrarySupportLoader extends AbstractProgramLoader return FileSystemService.getInstance().getByteProvider(libFsrl, true, monitor); } - /** - * Checks whether or not the given library should be loaded. - *

- * It may be appropriate to not load a specific library after examining its bytes. - * - * @param libraryName The name of the library - * @param libraryFsrl The library {@link FSRL} - * @param provider The library bytes - * @param desiredLoadSpec The desired {@link LoadSpec} - * @param log The log - * @return True if the given library should be loaded; otherwise, false - * @throws IOException If an IO-related error occurred - */ - protected boolean shouldLoadLibrary(String libraryName, FSRL libraryFsrl, - ByteProvider provider, LoadSpec desiredLoadSpec, MessageLog log) throws IOException { - return true; - } - /** * Performs optional follow-on actions after an the given library has been loaded * @@ -513,7 +495,6 @@ public abstract class AbstractLibrarySupportLoader extends AbstractProgramLoader // options turned off (if shouldSearchAllPaths() is overridden to return true). // In this case, we still want to process those libraries, but we // do not want to save them, so they can be released. - boolean found = false; boolean loaded = false; if (!customSearchPaths.isEmpty()) { log.appendMsg("Searching %d custom path%s for library %s...".formatted( @@ -523,7 +504,6 @@ public abstract class AbstractLibrarySupportLoader extends AbstractProgramLoader provider, customSearchPaths, libraryDestFolderPath, unprocessed, depth, desiredLoadSpec, options, log, consumer, monitor); if (loadedLibrary != null) { - found = true; loaded = true; loadedPrograms.add(loadedLibrary); } @@ -536,7 +516,6 @@ public abstract class AbstractLibrarySupportLoader extends AbstractProgramLoader provider, localSearchPaths, libraryDestFolderPath, unprocessed, depth, desiredLoadSpec, options, log, consumer, monitor); if (loadedLibrary != null) { - found = true; if (loadLocalLibraries) { loaded = true; loadedPrograms.add(loadedLibrary); @@ -554,7 +533,6 @@ public abstract class AbstractLibrarySupportLoader extends AbstractProgramLoader provider, systemSearchPaths, libraryDestFolderPath, unprocessed, depth, desiredLoadSpec, options, log, consumer, monitor); if (loadedLibrary != null) { - found = true; if (loadSystemLibraries) { loaded = true; loadedPrograms.add(loadedLibrary); @@ -564,9 +542,6 @@ public abstract class AbstractLibrarySupportLoader extends AbstractProgramLoader } } } - if (!found) { - log.appendMsg("Library not found."); - } else { if (loaded) { log.appendMsg("Saving library to: " + @@ -641,6 +616,11 @@ public abstract class AbstractLibrarySupportLoader extends AbstractProgramLoader try { List candidateLibraryFsrls = findLibrary(getCheckedPath(libraryName), fsSearchPaths, log, monitor); + if (candidateLibraryFsrls.isEmpty()) { + log.appendMsg("Library not found."); + return null; + } + for (FSRL candidateLibraryFsrl : candidateLibraryFsrls) { monitor.checkCancelled(); List newLibraryList = new ArrayList<>(); @@ -831,9 +811,6 @@ public abstract class AbstractLibrarySupportLoader extends AbstractProgramLoader try (ByteProvider provider = createLibraryByteProvider(libraryFsrl, desiredLoadSpec, log, monitor)) { - if (!shouldLoadLibrary(libraryName, libraryFsrl, provider, desiredLoadSpec, log)) { - return null; - } LoadSpec libLoadSpec = matchSupportedLoadSpec(desiredLoadSpec, provider); if (libLoadSpec == null) { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/AbstractOrdinalSupportLoader.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/AbstractOrdinalSupportLoader.java index 6821e27782..e7534b32c2 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/AbstractOrdinalSupportLoader.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/AbstractOrdinalSupportLoader.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.util.Iterator; import java.util.List; +import generic.jar.ResourceFile; import ghidra.app.util.Option; import ghidra.app.util.OptionUtils; import ghidra.app.util.bin.ByteProvider; @@ -31,7 +32,6 @@ import ghidra.framework.options.Options; import ghidra.program.model.listing.Function; import ghidra.program.model.listing.Program; import ghidra.program.model.symbol.*; -import ghidra.util.Msg; import ghidra.util.exception.*; import ghidra.util.task.TaskMonitor; @@ -75,47 +75,33 @@ public abstract class AbstractOrdinalSupportLoader extends AbstractLibrarySuppor return shouldPerformOrdinalLookup(options); } - @Override - protected boolean shouldLoadLibrary(String libName, FSRL libFsrl, ByteProvider provider, - LoadSpec loadSpec, MessageLog log) throws IOException { - - if (!super.shouldLoadLibrary(libName, libFsrl, provider, loadSpec, log)) { - return false; - } - - int size = loadSpec.getLanguageCompilerSpec().getLanguageDescription().getSize(); - File localLibFile = getLocalFile(libFsrl); - - if (localLibFile == null || - !LibraryLookupTable.hasFileAndPathAndTimeStampMatch(localLibFile, size) && - LibraryLookupTable.libraryLookupTableFileExists(libName, size)) { - log.appendMsg("WARNING! Using existing exports file for " + libName + - " which may not be an exact match"); - } - - return true; - } - @Override protected void processLibrary(Program lib, String libName, FSRL libFsrl, ByteProvider provider, LoadSpec loadSpec, List