From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <3DfZxXggKCroluwthniflttlqj.htrqngfgnlfnqxtzwhj1fwj.twl@flex--gprocida.bounces.google.com> Received: from mail-wr1-x449.google.com (mail-wr1-x449.google.com [IPv6:2a00:1450:4864:20::449]) by sourceware.org (Postfix) with ESMTPS id 3AB2D3942007 for ; Wed, 18 Mar 2020 10:21:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 3AB2D3942007 Received: by mail-wr1-x449.google.com with SMTP id o9so12114095wrw.14 for ; Wed, 18 Mar 2020 03:21:03 -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:message-id:mime-version:subject:from:to:cc; bh=RDE+2Fj0hnmiF5ebvJ8sUrujPbstGEFsAj3Czwr1v74=; b=AiOGPOp4DdNA85KyXnMzsI83VOCN7Km2SJelWZjvoPSQ9Rk0zAy4njMwWL8mL13Pcj HRiqzVRSdeOmY0MMjYOqlYZK1jW+Om2Y/Xbd5B3NvhjhdxXoz1eurTBtjLsoAV85Krko 2QCpRhqCEFw1AjJG/AmxK4XqVmKo4xk1Kc7I1oNSbEyMPszwkLqSjlHg8eYSncpuR7ez f1RdsxfkGFwyOwX95ZSporudWMezSvBHtFMJTLSLxVAlDpiYYH3SfzuEnGZ8rjvWjwwn j0ElWJvCgU78jNl+EGqRVSV5rdleRhNwNaFi9M0Ns37r2hp7a2+Q7l++nPu3FRBqu+TD nRiA== X-Gm-Message-State: ANhLgQ2a9hq37kxN6XBLqp/D7NSk3YI2lloblM265KsY83HgY8xkaklj hQ2ouR06ETDmQCFzgj+NQuRK9/tpE0MlKnCiy5z4rjmnpRJI2K+LjV4JKvCBxvlN8pkubLmf1ha 26Re5/KvGNAAtxoWUzwCKQUcPDYlbKsuirRqZMh9X61u5m+alcGWLewUqwoY2F+SBHHer19Y= X-Google-Smtp-Source: ADFU+vu163LqWeVx1vS3u4kOy1vep5NPSfSPAlWKAHldcI8H7dCEt5VD/QnMzg984nefnN7rrElHjmMf/JmADw== X-Received: by 2002:adf:f309:: with SMTP id i9mr5207893wro.0.1584526861989; Wed, 18 Mar 2020 03:21:01 -0700 (PDT) Date: Wed, 18 Mar 2020 10:20:55 +0000 Message-Id: <20200318102055.109824-1-gprocida@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.25.1.481.gfbce0eb801-goog Subject: [PATCH] dwarf-reader: Use high bits of Bloom filter words. From: Giuliano Procida To: libabigail@sourceware.org Cc: dodji@seketeli.org, kernel-team@android.com, gprocida@google.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-32.7 required=5.0 tests=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, 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: Wed, 18 Mar 2020 10:21:04 -0000 Most of the bit values used for GNU hash ELF section Bloom filtering were being ignored due to integer narrowing, reducing missing symbol filtering efficiency considerably. This patch fixes this. * src/abg-dwarf-reader.cc (lookup_symbol_from_gnu_hash_tab): Don't narrow calculated Bloom word to 8 bits before using it to mask the fetched Bloom word. --- src/abg-dwarf-reader.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/abg-dwarf-reader.cc b/src/abg-dwarf-reader.cc index 3454fcf5..5556bde5 100644 --- a/src/abg-dwarf-reader.cc +++ b/src/abg-dwarf-reader.cc @@ -2025,7 +2025,7 @@ lookup_symbol_from_gnu_hash_tab(const environment* env, // filter, in bits. int c = get_elf_class_size_in_bytes(elf_handle) * 8; int n = (h1 / c) % ht.bf_nwords; - unsigned char bitmask = (1ul << (h1 % c)) | (1ul << (h2 % c)); + GElf_Word bitmask = (1ul << (h1 % c)) | (1ul << (h2 % c)); // Test if the symbol is *NOT* present in this ELF file. if ((bloom_word_at(elf_handle, ht.bloom_filter, n) & bitmask) != bitmask) -- 2.25.1.481.gfbce0eb801-goog