From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <3WNihXggKCosv463rxspv33v0t.r310xqpqxvpx07396rtBp6t.36v@flex--gprocida.bounces.google.com> Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by sourceware.org (Postfix) with ESMTPS id A7652385DC0A for ; Thu, 23 Apr 2020 18:03:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A7652385DC0A Received: by mail-yb1-xb49.google.com with SMTP id s62so7139925ybs.0 for ; Thu, 23 Apr 2020 11:03:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=XVxgNlF+0pYSgoywgP/Rg9jZ7dV6OByRoO4qhk9ctNg=; b=Tf6dOOPUtPXo2xSL9ojDV3H4tG7eOYFnSLO7MdNSBWxuYUyYbeTH6QTBxkmMpW31Mq e7zh/zjwWPPf+QMJ66a9QvIAy5HyR5RHX7koD52hgh2p35mZwJuwX27fklBaDVz5eVny h8U54xXQNaPw30vHVZTDBipvnKlYBDNVZU9fEcCcPpAavwmV1T/gDSELyW+i3sZbo0zC Tr7EdDlPviUaIJqsnEyT+4glFSZgjeDBfVyq60Efgh2vyY7Wtkr1JUVyJUH95lC95MBF WLlDySg78IkTxvpJyCzPO921OKmOOsGOoITG2hQJzA0Wg5BbDAPYz0ZB6YXyTzXeqgdS 5Tow== X-Gm-Message-State: AGi0PuZbS9mE9kmvPevIZ4kf6pb9kFg3l39fzWveWGxc9jU/l9IrC1wc NB9MsbLSjxIL3/VkA3ug53GufPTGev6zrB74e0uNbkTnzMTqOrGqNPCGEYL+JHEbo2e8cNMnbFb qLiRz4TfQaV18Am3NOE4WiuPpZOt1M/OTVmwOr6Rh6soYDbCLGTR47+QssHy60/GW3c3btXc= X-Google-Smtp-Source: APiQypKuOdh8QWqorpzl+6a2EEfVO6ev9zu5pGrKQx3SVNpy0S5G1FrrqDcIT2l0XLuQ5HsKt/ffm0+RKWfcvw== X-Received: by 2002:a25:f20f:: with SMTP id i15mr8876561ybe.72.1587664984012; Thu, 23 Apr 2020 11:03:04 -0700 (PDT) Date: Thu, 23 Apr 2020 19:02:44 +0100 In-Reply-To: <20200423154441.170531-10-gprocida@google.com> Message-Id: <20200423180244.68691-1-gprocida@google.com> Mime-Version: 1.0 References: <20200423154441.170531-10-gprocida@google.com> X-Mailer: git-send-email 2.26.1.301.g55bc3eb7cb9-goog Subject: [PATCH v2 09/21] Use regex::match wrapper instead of regexec. From: Giuliano Procida To: libabigail@sourceware.org Cc: dodji@seketeli.org, kernel-team@android.com, gprocida@google.com, maennich@google.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-34.1 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libabigail mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Apr 2020 18:03:06 -0000 This patch eliminates all calls to regexec except that by regex::match itself. There are no behavioural changes. * src/abg-corpus-priv.h: Mechanically substitute use of regexec with regex::match wrapper. * src/abg-suppression-priv.h: Ditto. * src/abg-suppression.cc: Ditto. Signed-off-by: Giuliano Procida --- src/abg-corpus-priv.h | 8 +-- src/abg-suppression-priv.h | 10 ++-- src/abg-suppression.cc | 119 +++++++++++-------------------------- 3 files changed, 44 insertions(+), 93 deletions(-) diff --git a/src/abg-corpus-priv.h b/src/abg-corpus-priv.h index 544fac54..2618e2d0 100644 --- a/src/abg-corpus-priv.h +++ b/src/abg-corpus-priv.h @@ -521,7 +521,7 @@ public: compiled_regex_fns_suppress().begin(); i != compiled_regex_fns_suppress().end(); ++i) - if (regexec(i->get(), frep.c_str(), 0, NULL, 0) == 0) + if (regex::match(*i, frep)) { keep = false; break; @@ -554,7 +554,7 @@ public: compiled_regex_fns_keep().begin(); i != compiled_regex_fns_keep().end(); ++i) - if (regexec(i->get(), frep.c_str(), 0, NULL, 0) == 0) + if (regex::match(*i, frep)) { keep = true; break; @@ -628,7 +628,7 @@ public: compiled_regex_vars_suppress().begin(); i != compiled_regex_vars_suppress().end(); ++i) - if (regexec(i->get(), frep.c_str(), 0, NULL, 0) == 0) + if (regex::match(*i, frep)) { keep = false; break; @@ -662,7 +662,7 @@ public: compiled_regex_vars_keep().begin(); i != compiled_regex_vars_keep().end(); ++i) - if (regexec(i->get(), frep.c_str(), 0, NULL, 0) == 0) + if (regex::match(*i, frep)) { keep = true; break; diff --git a/src/abg-suppression-priv.h b/src/abg-suppression-priv.h index 4959cdbb..8043ebd9 100644 --- a/src/abg-suppression-priv.h +++ b/src/abg-suppression-priv.h @@ -160,14 +160,14 @@ public: if (regex::regex_t_sptr regexp = get_soname_regex()) { has_regexp = true; - if (regexec(regexp.get(), soname.c_str(), 0, NULL, 0) != 0) + if (!regex::match(regexp, soname)) return false; } if (regex::regex_t_sptr regexp = get_soname_not_regex()) { has_regexp = true; - if (regexec(regexp.get(), soname.c_str(), 0, NULL, 0) == 0) + if (regex::match(regexp, soname)) return false; } @@ -195,16 +195,14 @@ public: if (regex::regex_t_sptr regexp = get_file_name_regex()) { has_regexp = true; - if (regexec(regexp.get(), binary_name.c_str(), - 0, NULL, 0) != 0) + if (!regex::match(regexp, binary_name)) return false; } if (regex::regex_t_sptr regexp = get_file_name_not_regex()) { has_regexp = true; - if (regexec(regexp.get(), binary_name.c_str(), - 0, NULL, 0) == 0) + if (regex::match(regexp, binary_name)) return false; } diff --git a/src/abg-suppression.cc b/src/abg-suppression.cc index b600c88c..afedf6c7 100644 --- a/src/abg-suppression.cc +++ b/src/abg-suppression.cc @@ -994,18 +994,14 @@ suppression_matches_type_name(const type_suppression& s, if (const regex_t_sptr& type_name_regex = s.priv_->get_type_name_regex()) { - if (regexec(type_name_regex.get(), - type_name.c_str(), - 0, NULL, 0) != 0) + if (!regex::match(type_name_regex, type_name)) return false; } if (const regex_t_sptr type_name_not_regex = s.priv_->get_type_name_not_regex()) { - if (regexec(type_name_not_regex.get(), - type_name.c_str(), - 0, NULL, 0) == 0) + if (regex::match(type_name_not_regex, type_name)) return false; } } @@ -1052,7 +1048,7 @@ suppression_matches_type_location(const type_suppression& s, loc.expand(loc_path, loc_line, loc_column); if (regex_t_sptr regexp = s.priv_->get_source_location_to_keep_regex()) - if (regexec(regexp.get(), loc_path.c_str(), 0, NULL, 0) == 0) + if (regex::match(regexp, loc_path)) return false; tools_utils::base_name(loc_path, loc_path_base); @@ -2489,9 +2485,7 @@ function_suppression::suppresses_function(const function_decl* fn, const regex_t_sptr name_regex = priv_->get_name_regex(); if (name_regex) { - if (regexec(name_regex.get(), - fname.c_str(), - 0, NULL, 0) != 0) + if (!regex::match(name_regex, fname)) return false; if (get_allow_other_aliases() @@ -2512,9 +2506,7 @@ function_suppression::suppresses_function(const function_decl* fn, for (elf_symbol_sptr a = sym->get_next_alias(); a && !a->is_main_symbol(); a = a->get_next_alias()) - if (regexec(name_regex.get(), - a->get_name().c_str(), - 0, NULL, 0) != 0) + if (!regex::match(name_regex, a->get_name())) return false; } } @@ -2524,9 +2516,7 @@ function_suppression::suppresses_function(const function_decl* fn, const regex_t_sptr name_not_regex = priv_->get_name_not_regex(); if (name_not_regex) { - if (regexec(name_not_regex.get(), - fname.c_str(), - 0, NULL, 0) == 0) + if (regex::match(name_not_regex, fname)) return false; if (get_allow_other_aliases() @@ -2547,9 +2537,7 @@ function_suppression::suppresses_function(const function_decl* fn, for (elf_symbol_sptr a = sym->get_next_alias(); a && !a->is_main_symbol(); a = a->get_next_alias()) - if (regexec(name_regex.get(), - a->get_name().c_str(), - 0, NULL, 0) == 0) + if (regex::match(name_regex, a->get_name())) return false; } } @@ -2573,9 +2561,7 @@ function_suppression::suppresses_function(const function_decl* fn, { const regex_t_sptr return_type_regex = priv_->get_return_type_regex(); if (return_type_regex - && (regexec(return_type_regex.get(), - fn_return_type_name.c_str(), - 0, NULL, 0) != 0)) + && !regex::match(return_type_regex, fn_return_type_name)) return false; } @@ -2612,18 +2598,13 @@ function_suppression::suppresses_function(const function_decl* fn, else if (sym) { const regex_t_sptr symbol_name_regex = priv_->get_symbol_name_regex(); - if (symbol_name_regex - && (regexec(symbol_name_regex.get(), - fn_sym_name.c_str(), - 0, NULL, 0) != 0)) + if (symbol_name_regex && !regex::match(symbol_name_regex, fn_sym_name)) return false; const regex_t_sptr symbol_name_not_regex = priv_->get_symbol_name_not_regex(); if (symbol_name_not_regex - && (regexec(symbol_name_not_regex.get(), - fn_sym_name.c_str(), - 0, NULL, 0) == 0)) + && regex::match(symbol_name_not_regex, fn_sym_name)) return false; if (get_allow_other_aliases()) @@ -2638,15 +2619,11 @@ function_suppression::suppresses_function(const function_decl* fn, a = a->get_next_alias()) { if (symbol_name_regex - && (regexec(symbol_name_regex.get(), - a->get_name().c_str(), - 0, NULL, 0) != 0)) + && !regex::match(symbol_name_regex, a->get_name())) return false; if (symbol_name_not_regex - && (regexec(symbol_name_not_regex.get(), - a->get_name().c_str(), - 0, NULL, 0) == 0)) + && regex::match(symbol_name_not_regex, a->get_name())) return false; } } @@ -2665,9 +2642,7 @@ function_suppression::suppresses_function(const function_decl* fn, const regex_t_sptr symbol_version_regex = priv_->get_symbol_version_regex(); if (symbol_version_regex - && (regexec(symbol_version_regex.get(), - fn_sym_version.c_str(), - 0, NULL, 0) != 0)) + && !regex::match(symbol_version_regex, fn_sym_version)) return false; } @@ -2708,9 +2683,8 @@ function_suppression::suppresses_function(const function_decl* fn, (*p)->priv_->get_type_name_regex(); if (parm_type_name_regex) { - if ((regexec(parm_type_name_regex.get(), - fn_parm_type_qualified_name.c_str(), - 0, NULL, 0) != 0)) + if (!regex::match(parm_type_name_regex, + fn_parm_type_qualified_name)) return false; } } @@ -2798,10 +2772,7 @@ function_suppression::suppresses_function_symbol(const elf_symbol* sym, else if (!get_symbol_name_regex_str().empty()) { const regex_t_sptr symbol_name_regex = priv_->get_symbol_name_regex(); - if (symbol_name_regex - && (regexec(symbol_name_regex.get(), - sym_name.c_str(), - 0, NULL, 0) != 0)) + if (symbol_name_regex && !regex::match(symbol_name_regex, sym_name)) return false; } else @@ -2818,9 +2789,7 @@ function_suppression::suppresses_function_symbol(const elf_symbol* sym, const regex_t_sptr symbol_version_regex = priv_->get_symbol_version_regex(); if (symbol_version_regex - && (regexec(symbol_version_regex.get(), - sym_version.c_str(), - 0, NULL, 0) != 0)) + && !regex::match(symbol_version_regex, sym_version)) return false; } else @@ -2912,12 +2881,12 @@ suppression_matches_function_name(const suppr::function_suppression& s, { if (regex_t_sptr regexp = s.priv_->get_name_regex()) { - if (regexec(regexp.get(), fn_name.c_str(), 0, NULL, 0) != 0) + if (!regex::match(regexp, fn_name)) return false; } else if (regex_t_sptr regexp = s.priv_->get_name_not_regex()) { - if (regexec(regexp.get(), fn_name.c_str(), 0, NULL, 0) == 0) + if (regex::match(regexp, fn_name)) return false; } else if (s.priv_->name_.empty()) @@ -2948,12 +2917,12 @@ suppression_matches_function_sym_name(const suppr::function_suppression& s, { if (regex_t_sptr regexp = s.priv_->get_symbol_name_regex()) { - if (regexec(regexp.get(), fn_linkage_name.c_str(), 0, NULL, 0) != 0) + if (!regex::match(regexp, fn_linkage_name)) return false; } else if (regex_t_sptr regexp = s.priv_->get_symbol_name_not_regex()) { - if (regexec(regexp.get(), fn_linkage_name.c_str(), 0, NULL, 0) == 0) + if (regex::match(regexp, fn_linkage_name)) return false; } else if (s.priv_->symbol_name_.empty()) @@ -2981,12 +2950,12 @@ suppression_matches_variable_name(const suppr::variable_suppression& s, { if (regex_t_sptr regexp = s.priv_->get_name_regex()) { - if (regexec(regexp.get(), var_name.c_str(), 0, NULL, 0) != 0) + if (!regex::match(regexp, var_name)) return false; } else if (regex_t_sptr regexp = s.priv_->get_name_not_regex()) { - if (regexec(regexp.get(), var_name.c_str(), 0, NULL, 0) == 0) + if (regex::match(regexp, var_name)) return false; } else if (s.priv_->name_.empty()) @@ -3015,13 +2984,13 @@ suppression_matches_variable_sym_name(const suppr::variable_suppression& s, { if (regex_t_sptr regexp = s.priv_->get_symbol_name_regex()) { - if (regexec(regexp.get(), var_linkage_name.c_str(), 0, NULL, 0) != 0) + if (!regex::match(regexp, var_linkage_name)) return false; } else if (regex_t_sptr regexp = s.priv_->get_symbol_name_not_regex()) { - if (regexec(regexp.get(), var_linkage_name.c_str(), 0, NULL, 0) == 0) + if (regex::match(regexp, var_linkage_name)) return false; } else if (s.priv_->symbol_name_.empty()) @@ -3050,7 +3019,7 @@ suppression_matches_type(const suppr::type_suppression& s, { if (regex_t_sptr regexp = s.priv_->get_type_name_regex()) { - if (regexec(regexp.get(), type_name.c_str(), 0, NULL, 0) != 0) + if (!regex::match(regexp, type_name)) return false; } else if (!s.get_type_name().empty()) @@ -3748,15 +3717,11 @@ variable_suppression::suppresses_variable(const var_decl* var, if (get_name().empty()) { const regex_t_sptr name_regex = priv_->get_name_regex(); - if (name_regex - && (regexec(name_regex.get(), var_name.c_str(), - 0, NULL, 0) != 0)) + if (name_regex && !regex::match(name_regex, var_name)) return false; const regex_t_sptr name_not_regex = priv_->get_name_not_regex(); - if (name_not_regex - && (regexec(name_not_regex.get(), var_name.c_str(), - 0, NULL, 0) == 0)) + if (name_not_regex && regex::match(name_not_regex, var_name)) return false; } } @@ -3772,16 +3737,12 @@ variable_suppression::suppresses_variable(const var_decl* var, else { const regex_t_sptr sym_name_regex = priv_->get_symbol_name_regex(); - if (sym_name_regex - && (regexec(sym_name_regex.get(), var_sym_name.c_str(), - 0, NULL, 0) != 0)) + if (sym_name_regex && !regex::match(sym_name_regex, var_sym_name)) return false; const regex_t_sptr sym_name_not_regex = priv_->get_symbol_name_not_regex(); - if (sym_name_not_regex - && (regexec(sym_name_not_regex.get(), var_sym_name.c_str(), - 0, NULL, 0) == 0)) + if (sym_name_not_regex && regex::match(sym_name_not_regex, var_sym_name)) return false; } @@ -3798,9 +3759,7 @@ variable_suppression::suppresses_variable(const var_decl* var, const regex_t_sptr symbol_version_regex = priv_->get_symbol_version_regex(); if (symbol_version_regex - && (regexec(symbol_version_regex.get(), - var_sym_version.c_str(), - 0, NULL, 0) != 0)) + && !regex::match(symbol_version_regex, var_sym_version)) return false; } @@ -3818,9 +3777,7 @@ variable_suppression::suppresses_variable(const var_decl* var, if (get_type_name().empty()) { const regex_t_sptr type_name_regex = priv_->get_type_name_regex(); - if (type_name_regex - && (regexec(type_name_regex.get(), var_type_name.c_str(), - 0, NULL, 0) != 0)) + if (type_name_regex && !regex::match(type_name_regex, var_type_name)) return false; } } @@ -3911,9 +3868,7 @@ variable_suppression::suppresses_variable_symbol(const elf_symbol* sym, else if (!get_symbol_name_regex_str().empty()) { const regex_t_sptr sym_name_regex = priv_->get_symbol_name_regex(); - if (sym_name_regex - && (regexec(sym_name_regex.get(), sym_name.c_str(), - 0, NULL, 0) != 0)) + if (sym_name_regex && !regex::match(sym_name_regex, sym_name)) return false; } else @@ -3931,9 +3886,7 @@ variable_suppression::suppresses_variable_symbol(const elf_symbol* sym, const regex_t_sptr symbol_version_regex = priv_->get_symbol_version_regex(); if (symbol_version_regex - && (regexec(symbol_version_regex.get(), - sym_version.c_str(), - 0, NULL, 0) != 0)) + && !regex::match(symbol_version_regex, sym_version)) return false; } else @@ -4229,14 +4182,14 @@ file_suppression::suppresses_file(const string& file_path) if (regex_t_sptr regexp = suppression_base::priv_->get_file_name_regex()) { has_regexp = true; - if (regexec(regexp.get(), fname.c_str(), 0, NULL, 0) != 0) + if (!regex::match(regexp, fname)) return false; } if (regex_t_sptr regexp = suppression_base::priv_->get_file_name_not_regex()) { has_regexp = true; - if (regexec(regexp.get(), fname.c_str(), 0, NULL, 0) == 0) + if (regex::match(regexp, fname)) return false; } -- 2.26.1.301.g55bc3eb7cb9-goog