diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/exceptionhandlers/gcc/structures/ehFrame/FdeTable.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/exceptionhandlers/gcc/structures/ehFrame/FdeTable.java index 3c47f313fe..38e41dc5c0 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/exceptionhandlers/gcc/structures/ehFrame/FdeTable.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/exceptionhandlers/gcc/structures/ehFrame/FdeTable.java @@ -147,6 +147,7 @@ public class FdeTable { // this is an indirect reference to code from the table, // so tag reference as an indirect code flow + // TODO: This should be a CODE flow, leaving as INDIRECTION until refactor prog.getReferenceManager().addMemoryReference(locComponentAddr, locAddr, RefType.INDIRECTION, SourceType.ANALYSIS, 0); diff --git a/Ghidra/Features/Base/src/main/java/ghidra/util/UndefinedFunction.java b/Ghidra/Features/Base/src/main/java/ghidra/util/UndefinedFunction.java index 6b0e593896..0457390a59 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/util/UndefinedFunction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/util/UndefinedFunction.java @@ -172,6 +172,9 @@ public class UndefinedFunction implements Function { FlowType flowType = blockReference.getFlowType(); if (flowType.isCall()) continue; // Don't follow call edges for within-function analysis + if (flowType.isIndirect() || flowType.isData()) { + continue; + } count += 1; // Count the existence of source that is NOT a call Address sourceAddr = blockReference.getSourceAddress(); if (visitedAddresses.contains(sourceAddr))