diff options
author | Ryan Long <ryan.long@oarcorp.com> | 2021-05-17 11:37:42 -0400 |
---|---|---|
committer | Joel Sherrill <joel@rtems.org> | 2021-06-29 15:59:24 -0500 |
commit | 7d3b8acf605f64430baa2c0568cf6f99596bc284 (patch) | |
tree | 7be3ed5ac4e5cb4dbcb81241a42de9341a9cd31c /linkers | |
parent | ReportsBase.cc: Remove possible division by zero (diff) | |
download | rtems-tools-7d3b8acf605f64430baa2c0568cf6f99596bc284.tar.bz2 |
rtems-exeinfo.cpp: Fix division by zero errors
CID 1503008: Division or modulo by zero
CID 1503015: Division or modulo by zero
Closes #4416
Diffstat (limited to 'linkers')
-rw-r--r-- | linkers/rtems-exeinfo.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/linkers/rtems-exeinfo.cpp b/linkers/rtems-exeinfo.cpp index 1e6d4b4..6e92206 100644 --- a/linkers/rtems-exeinfo.cpp +++ b/linkers/rtems-exeinfo.cpp @@ -755,6 +755,8 @@ namespace rld size_t total = 0; size_t total_size = 0; size_t inlined_size = 0; + double percentage; + double percentage_size; dwarf::functions funcs_inlined; dwarf::functions funcs_not_inlined; func_counts counts; @@ -798,14 +800,24 @@ namespace rld } } + if ( total == 0 ) { + percentage = 0; + } else { + percentage = (double) ( funcs_inlined.size() * 100 ) / total; + } + + if ( total_size == 0 ) { + percentage_size = 0; + } else { + percentage_size = (double) ( inlined_size * 100 ) / total_size; + } + std::cout << "inlined funcs : " << funcs_inlined.size () << std::endl << " total funcs : " << total << std::endl - << " % inline funcs : " << (funcs_inlined.size () * 100) / total << '%' - << std::endl + << " % inline funcs : " << percentage << '%' << std::endl << " total size : " << total_size << std::endl << " inline size : " << inlined_size << std::endl - << " % inline size : " << (inlined_size * 100) / total_size << '%' - << std::endl; + << " % inline size : " << percentage_size << '%' << std::endl; auto count_compare = [](func_count const & a, func_count const & b) { return a.size != b.size? a.size < b.size : a.count > b.count; |