mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-06-01 07:25:10 +08:00
GP-345 Minor change to fix Decompiler not decompiling some undefined
functions referenced by FDETable
This commit is contained in:
+1
@@ -147,6 +147,7 @@ public class FdeTable {
|
|||||||
|
|
||||||
// this is an indirect reference to code from the table,
|
// this is an indirect reference to code from the table,
|
||||||
// so tag reference as an indirect code flow
|
// 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,
|
prog.getReferenceManager().addMemoryReference(locComponentAddr, locAddr,
|
||||||
RefType.INDIRECTION,
|
RefType.INDIRECTION,
|
||||||
SourceType.ANALYSIS, 0);
|
SourceType.ANALYSIS, 0);
|
||||||
|
|||||||
@@ -172,6 +172,9 @@ public class UndefinedFunction implements Function {
|
|||||||
FlowType flowType = blockReference.getFlowType();
|
FlowType flowType = blockReference.getFlowType();
|
||||||
if (flowType.isCall())
|
if (flowType.isCall())
|
||||||
continue; // Don't follow call edges for within-function analysis
|
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
|
count += 1; // Count the existence of source that is NOT a call
|
||||||
Address sourceAddr = blockReference.getSourceAddress();
|
Address sourceAddr = blockReference.getSourceAddress();
|
||||||
if (visitedAddresses.contains(sourceAddr))
|
if (visitedAddresses.contains(sourceAddr))
|
||||||
|
|||||||
Reference in New Issue
Block a user