From patchwork Fri Jun 19 21:42:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Matthias_M=C3=A4nnich?= X-Patchwork-Id: 39704 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 46D20389852E; Fri, 19 Jun 2020 21:43:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 46D20389852E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1592603017; bh=XjBPJTOqn+i4IrybqcqcmecLSGS9G4R4yGHP46Cjolc=; h=Date:In-Reply-To:References:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Help:List-Subscribe:From:Reply-To:Cc:From; b=Jk9u4NUIKHkjGDPU5mHov/iQig7Fy3aV52vR7hBim2Wfqg5lzfYpyTSrndEEnfjC7 ewJ3iLcpwi6AzQ850FbXNmQEPAA9ZzMkq50hnuHwBVjDHIuaMYdRlVAX4RJY7cWjXW NU+F5XlFj1lJbVej5uKXu8vdfvHoeeHqpPoSnT7M= X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from mail-qt1-x84a.google.com (mail-qt1-x84a.google.com [IPv6:2607:f8b0:4864:20::84a]) by sourceware.org (Postfix) with ESMTPS id 09B7A388F057 for ; Fri, 19 Jun 2020 21:43:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 09B7A388F057 Received: by mail-qt1-x84a.google.com with SMTP id o11so8151862qti.23 for ; Fri, 19 Jun 2020 14:43:35 -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=XjBPJTOqn+i4IrybqcqcmecLSGS9G4R4yGHP46Cjolc=; b=i+iKfmEwEEm1v84gZCUOebZw495ZgLFiKdJ6mLZqOr2lfn3kInT9CDsPCbskFsPV9T K0XOt1CCUQM8bu9RbR8jUMf1C12fkT8cj5pzcS9sMpXaV8C1bHrHD2Iuk4x4+HufUjrn TqwpMUVTROe3KcYXxwczXT7TFVduT2TX+609sOXoE/P/gyhYpHJc4zCCMrkKcRw20EpY otWnKUf7pN7YQP2HWdEfRFL5Xge1Or3BbeM5nM87zdaOy9+6DXqOITNT4jLw403UQoZd iPXWLqpvJa02BglWRwtgH1y5gMnjJ8hbevmMIOLU98TER0EPe25Qu0oR++pXmwtE3sij Xfqw== X-Gm-Message-State: AOAM531BF6qbkOnc9OMN7XdcC+6euplsxLmNtd7qbQk6Q6oZ2BRLt9zv 0F5ppkHnGfGfs4r8xdsfrmRiA1QD7DADTVdAPWvfm7kGZB2H9/aLDs1QCUxm0uKt7VHYyoJqm3e Q6W+KZmJ9wo/Yo5lrsoo6ygTBmFipzSrMzXYq6kJsoTRR3HVzDhEH26WWxmIX+XK/BvRzWw4= X-Google-Smtp-Source: ABdhPJynRXuG4V+fk15+YQZijlBRzh4uLPsjfLeTNi5SFibxnLyoLWo2JF69txh1thRAuksDbtoePpNg0JgV/w== X-Received: by 2002:ad4:4b33:: with SMTP id s19mr10160710qvw.211.1592603014275; Fri, 19 Jun 2020 14:43:34 -0700 (PDT) Date: Fri, 19 Jun 2020 23:42:59 +0200 In-Reply-To: <20200619214305.562-1-maennich@google.com> Message-Id: <20200619214305.562-11-maennich@google.com> Mime-Version: 1.0 References: <20200619214305.562-1-maennich@google.com> X-Mailer: git-send-email 2.27.0.111.gc72c7da667-goog Subject: [PATCH v1 10/16] abg-reader: avoid using the (var|function)_symbol_map To: libabigail@sourceware.org X-Spam-Status: No, score=-22.8 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-Patchwork-Original-From: Matthias Maennich via Libabigail From: =?utf-8?q?Matthias_M=C3=A4nnich?= Reply-To: Matthias Maennich Cc: maennich@google.com, gprocida@google.com, kernel-team@android.com Errors-To: libabigail-bounces@sourceware.org Sender: "Libabigail" Instead of using the corpus var|function_symbol_maps for symbol lookups, let build_elf_symbol_from_reference use the symtab::lookup_symbol method. That leads to a shorter implementation and we can drop the indicative parameter. * src/abg-reader.cc (build_elf_symbol_from_reference): drop last parameter indicating the lookup type and use corpus symtab for the lookup (build_function_decl): Adjust accordingly. (build_var_decl): Likewise. Reviewed-by: Giuliano Procida Signed-off-by: Matthias Maennich --- src/abg-reader.cc | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/src/abg-reader.cc b/src/abg-reader.cc index 188c23d2e5cd..313639fddff0 100644 --- a/src/abg-reader.cc +++ b/src/abg-reader.cc @@ -1150,8 +1150,7 @@ static elf_symbol_sptr build_elf_symbol(read_context&, const xmlNodePtr, bool); static elf_symbol_sptr -build_elf_symbol_from_reference(read_context&, const xmlNodePtr, - bool); +build_elf_symbol_from_reference(read_context&, const xmlNodePtr); static string_elf_symbols_map_sptr build_elf_symbol_db(read_context&, const xmlNodePtr, bool); @@ -2884,8 +2883,7 @@ build_elf_symbol(read_context& ctxt, const xmlNodePtr node, /// /// @return a shared pointer the resutling elf_symbol. static elf_symbol_sptr -build_elf_symbol_from_reference(read_context& ctxt, const xmlNodePtr node, - bool function_symbol) +build_elf_symbol_from_reference(read_context& ctxt, const xmlNodePtr node) { elf_symbol_sptr nil; @@ -2904,20 +2902,13 @@ build_elf_symbol_from_reference(read_context& ctxt, const xmlNodePtr node, if (name.empty()) return nil; - string_elf_symbols_map_sptr sym_db = - (function_symbol) - ? ctxt.get_corpus()->get_fun_symbol_map_sptr() - : ctxt.get_corpus()->get_var_symbol_map_sptr(); + const elf_symbols& symbols = + ctxt.get_corpus()->get_symtab()->lookup_symbol(name); - string_elf_symbols_map_type::const_iterator i = sym_db->find(name); - if (i != sym_db->end()) - { - for (elf_symbols::const_iterator s = i->second.begin(); - s != i->second.end(); - ++s) - if ((*s)->get_id_string() == sym_id) - return *s; - } + for (elf_symbols::const_iterator symbol = symbols.begin(); + symbol != symbols.end(); ++symbol) + if ((*symbol)->get_id_string() == sym_id) + return *symbol; } return nil; @@ -3168,8 +3159,7 @@ build_function_decl(read_context& ctxt, ctxt.push_decl_to_current_scope(fn_decl, add_to_current_scope); - elf_symbol_sptr sym = build_elf_symbol_from_reference(ctxt, node, - /*function_sym=*/true); + elf_symbol_sptr sym = build_elf_symbol_from_reference(ctxt, node); if (sym) fn_decl->set_symbol(sym); @@ -3400,8 +3390,7 @@ build_var_decl(read_context& ctxt, locus, mangled_name, vis, bind)); - elf_symbol_sptr sym = build_elf_symbol_from_reference(ctxt, node, - /*function_sym=*/false); + elf_symbol_sptr sym = build_elf_symbol_from_reference(ctxt, node); if (sym) decl->set_symbol(sym);