From 036006623c44b84147d08815d385c953821e6bda Mon Sep 17 00:00:00 2001 From: Jason Hiser <jdhiser@gmail.com> Date: Mon, 25 Feb 2019 16:42:15 +0000 Subject: [PATCH] adjusted self-validation to work for aarch64's lack of EH info. --- irdb-libs/ir_builders/fill_in_indtargs.cpp | 4 +++- irdb-libs/ir_builders/fix_calls.cpp | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/irdb-libs/ir_builders/fill_in_indtargs.cpp b/irdb-libs/ir_builders/fill_in_indtargs.cpp index 0eff242bb..28ea73ea5 100644 --- a/irdb-libs/ir_builders/fill_in_indtargs.cpp +++ b/irdb-libs/ir_builders/fill_in_indtargs.cpp @@ -3702,6 +3702,9 @@ int executeStep(IRDBObjects_t *const irdb_objects) fill_in_indtargs(firp, elfiop.get(), do_unpin_opt); if(split_eh_frame_opt) split_eh_frame(firp); + + if(firp->getArchitecture()->getMachineType() != admtAarch64) + assert(getenv("SELF_VALIDATE")==nullptr || ranges.size() > 1 ); } if(getenv("FII_NOUPDATE")!=nullptr) @@ -3721,7 +3724,6 @@ int executeStep(IRDBObjects_t *const irdb_objects) assert(getenv("SELF_VALIDATE")==nullptr || bounds.size() > 3 ); assert(getenv("SELF_VALIDATE")==nullptr || targets.size() > 100 ); - assert(getenv("SELF_VALIDATE")==nullptr || ranges.size() > 1 ); assert(getenv("SELF_VALIDATE")==nullptr || preds.size() > 100 ); assert(getenv("SELF_VALIDATE")==nullptr || lookupInstructionMap.size() > 100 ); diff --git a/irdb-libs/ir_builders/fix_calls.cpp b/irdb-libs/ir_builders/fix_calls.cpp index b35c6f509..d245e2b95 100644 --- a/irdb-libs/ir_builders/fix_calls.cpp +++ b/irdb-libs/ir_builders/fix_calls.cpp @@ -1054,6 +1054,10 @@ int executeStep(IRDBObjects_t *const irdb_objects) cout<<"Done!"<<endl; + if(firp->getArchitecture()->getMachineType() != admtAarch64) + assert(getenv("SELF_VALIDATE")==nullptr || (fixed_calls + other_fixes) > 5); + + } } catch (DatabaseError_t pnide) @@ -1067,7 +1071,6 @@ int executeStep(IRDBObjects_t *const irdb_objects) return -1; } - assert(getenv("SELF_VALIDATE")==nullptr || (fixed_calls + other_fixes) > 5); assert(getenv("SELF_VALIDATE")==nullptr || fix_all || not_fixed_calls > 5); return 0; -- GitLab