From 25a3da829fada8facf7c2348eeedbfd872475122 Mon Sep 17 00:00:00 2001 From: Wileam Phan Date: Thu, 27 Mar 2025 18:33:35 +0800 Subject: [PATCH] Fix rocprof-sys-instrument default linkage and visibility criteria (#95) * Fix default linkage and visibility criteria * Fix processing of linkage and visibility CLI flags * Format source Signed-off-by: Wileam Yonatan Phan Signed-off-by: David Galiffi Co-authored-by: David Galiffi [ROCm/rocprofiler-systems commit: 2805631ccd411549013846ad57d869e52259363d] --- .../rocprof-sys-instrument.cpp | 55 ++++++++++++------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/projects/rocprofiler-systems/source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp b/projects/rocprofiler-systems/source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp index 73bb22f8a7..f7b99e278f 100644 --- a/projects/rocprofiler-systems/source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp +++ b/projects/rocprofiler-systems/source/bin/rocprof-sys-instrument/rocprof-sys-instrument.cpp @@ -143,10 +143,14 @@ regexvec_t file_internal_include = {}; regexvec_t instruction_exclude = {}; CodeCoverageMode coverage_mode = CODECOV_NONE; -symtab_data_s symtab_data = {}; -std::set enabled_linkage = { SL_GLOBAL, SL_LOCAL, SL_UNIQUE }; -std::set enabled_visibility = { SV_DEFAULT, SV_HIDDEN, SV_INTERNAL, - SV_PROTECTED }; +symtab_data_s symtab_data = {}; +std::set enabled_linkage = {}; +std::set enabled_visibility = {}; +const std::set default_enabled_linkage = { SL_GLOBAL, SL_LOCAL, + SL_UNIQUE }; +const std::set default_enabled_visibility = { SV_DEFAULT, SV_HIDDEN, + SV_INTERNAL, + SV_PROTECTED }; std::unique_ptr log_ofs = {}; @@ -835,32 +839,45 @@ main(int argc, char** argv) return _ret; }; + enabled_linkage = default_enabled_linkage; parser - .add_argument({ "--linkage" }, - join("", - "Only instrument functions with specified linkage (default: ", - join(array_config{ ", ", "", "" }, enabled_linkage), ")")) + .add_argument( + { "--linkage" }, + join("", "Only instrument functions with specified linkage (default: ", + join(array_config{ ", ", "", "" }, _get_strvec(default_enabled_linkage)), + ")")) .min_count(1) - .choices(available_linkage) - .set_default(_get_strvec(enabled_linkage)) + .choices(_get_strvec(available_linkage)) + .set_default(_get_strvec(default_enabled_linkage)) .action([](parser_t& p) { - enabled_linkage.clear(); - for(const auto& itr : p.get>("linkage")) - enabled_linkage.emplace(from_string(itr)); + auto selected_linkage = p.get>("linkage"); + if(!selected_linkage.empty()) + { + enabled_linkage.clear(); + for(const auto& itr : selected_linkage) + enabled_linkage.emplace(from_string(itr)); + } }); + enabled_visibility = default_enabled_visibility; parser .add_argument( { "--visibility" }, join("", "Only instrument functions with specified visibility (default: ", - join(array_config{ ", ", "", "" }, enabled_visibility), ")")) + join(array_config{ ", ", "", "" }, + _get_strvec(default_enabled_visibility)), + ")")) .min_count(1) - .choices(available_visibility) - .set_default(_get_strvec(enabled_visibility)) + .choices(_get_strvec(available_visibility)) + .set_default(_get_strvec(default_enabled_visibility)) .action([](parser_t& p) { - enabled_visibility.clear(); - for(const auto& itr : p.get>("visibility")) - enabled_visibility.emplace(from_string(itr)); + auto selected_visibility = p.get>("visibility"); + if(!selected_visibility.empty()) + { + enabled_visibility.clear(); + for(const auto& itr : selected_visibility) + enabled_visibility.emplace(from_string(itr)); + } }); parser.add_argument({ "" }, "");