Skip to content

Commit

Permalink
On ARM, many jump table reads are one-byte memory reads. Assuming one…
Browse files Browse the repository at this point in the history
…-byte read yields a value in [0,255] would cause too many bogus edges. Disable this heuristics on ARM
  • Loading branch information
mxz297 committed Nov 11, 2016
1 parent 810d689 commit 9b12e48
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion parseAPI/src/IndirectAnalyzer.C
Expand Up @@ -48,7 +48,7 @@ bool IndirectControlFlowAnalyzer::NewJumpTableAnalysis(std::vector<std::pair< Ad
// After the slicing is done, we do one last check to
// see if we can resolve the indirect jump by assuming
// one byte read is in bound [0,255]
if (jumpTableOutEdges.empty() && jtp.jumpTableFormat) {
if (jumpTableOutEdges.empty() && jtp.jumpTableFormat && block->obj()->cs()->getArch() != Arch_aarch64) {
GraphPtr g = jtp.BuildAnalysisGraph(s.visitedEdges);

BoundFactsCalculator bfc(func, g, func->entry() == block, rf, thunks, block->last(), true, jtp.expandCache);
Expand Down

0 comments on commit 9b12e48

Please sign in to comment.