From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw1-x1130.google.com (mail-yw1-x1130.google.com [IPv6:2607:f8b0:4864:20::1130]) by sourceware.org (Postfix) with ESMTPS id EEE793858C2C for ; Wed, 18 May 2022 17:28:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EEE793858C2C Received: by mail-yw1-x1130.google.com with SMTP id 00721157ae682-2fedd26615cso32066287b3.7 for ; Wed, 18 May 2022 10:28:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=PjOhvmPUZQygkij2i5AaLxP7Vo7dD8iEE7LbVESbePs=; b=fGxTLj62Be/Aw14DQm2+h3OueeQxiiW197K60JhA85tS0unM5eoAn2VxL4BcsXzYe9 cHRjQyJpSknLvNJ+atPt3wpirf5OTmGTANWzaqweip6d+TYpLe19MJ5gAi+PRo/whPRM su3+4kjWFj2I69aH/DOm1gWR6Cx2a1mNUTA/k3GMd5bnHsSyxJ88XuXys6YwcxZzYRPi /FRkWOGgb/E/k5D909S3PSklynP0rR5hWosNIRsOqmyXYwiS+eTyN1aG/hI+E97wrUSV 8MTmA26J8u8IABUGe1Ptwrjh+n7tiEyKCReFilWVW8NNx5rYKp8rnY7ehL8XdwcPKxA1 mpOA== X-Gm-Message-State: AOAM531TywyffaDyLw9AIFMLI9/bVAeyUI5ibiiDRJj3BiBhI8vAuRgu 4GLm4LgnclhiUMvOg+CBUnn+eDM7Qzdq9M7ajPoVpyZo X-Google-Smtp-Source: ABdhPJzevCkRw1uEQUXpClz4Jh0fK0+eBx5F8lu6GUQoL7asAtNVt9EUn3+/LV6qlrh2au03dwKR31SkNi9aZ8A7J2g= X-Received: by 2002:a81:c44b:0:b0:2d6:4726:ef4b with SMTP id s11-20020a81c44b000000b002d64726ef4bmr517940ywj.184.1652894911383; Wed, 18 May 2022 10:28:31 -0700 (PDT) MIME-Version: 1.0 References: <20220414041231.926415-1-goldstein.w.n@gmail.com> <20220516203004.38687-1-goldstein.w.n@gmail.com> <5dd79fed-d97f-b03a-e4c6-f79e4c72cc40@gotplt.org> In-Reply-To: <5dd79fed-d97f-b03a-e4c6-f79e4c72cc40@gotplt.org> From: Noah Goldstein Date: Wed, 18 May 2022 12:28:20 -0500 Message-ID: Subject: Re: [PATCH v9 1/6] elf: Refactor dl_new_hash so it can be tested / benchmarked To: Siddhesh Poyarekar Cc: GNU C Library Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 May 2022 17:28:33 -0000 On Mon, May 16, 2022 at 10:34 PM Siddhesh Poyarekar wrote: > > On 17/05/2022 01:59, Noah Goldstein via Libc-alpha wrote: > > No change to the code other than moving the function to > > dl-new-hash.h. Changed name so its now in the reserved namespace. > > --- > > elf/dl-lookup.c | 13 ++----------- > > elf/dl-new-hash.h | 37 +++++++++++++++++++++++++++++++++++++ > > 2 files changed, 39 insertions(+), 11 deletions(-) > > create mode 100644 elf/dl-new-hash.h > > LGTM. > > Reviewed-by: Siddhesh Poyarekar > Slightly modified in V10 adding the #define __simple_.... > > diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c > > index 989b073e4f..a42f6d5390 100644 > > --- a/elf/dl-lookup.c > > +++ b/elf/dl-lookup.c > > @@ -24,6 +24,7 @@ > > #include > > #include > > #include > > +#include > > #include > > #include > > #include > > @@ -558,16 +559,6 @@ skip: > > } > > > > > > -static uint32_t > > -dl_new_hash (const char *s) > > -{ > > - uint32_t h = 5381; > > - for (unsigned char c = *s; c != '\0'; c = *++s) > > - h = h * 33 + c; > > - return h; > > -} > > - > > - > > /* Add extra dependency on MAP to UNDEF_MAP. */ > > static int > > add_dependency (struct link_map *undef_map, struct link_map *map, int flags) > > @@ -816,7 +807,7 @@ _dl_lookup_symbol_x (const char *undef_name, struct link_map *undef_map, > > const struct r_found_version *version, > > int type_class, int flags, struct link_map *skip_map) > > { > > - const unsigned int new_hash = dl_new_hash (undef_name); > > + const unsigned int new_hash = _dl_new_hash (undef_name); > > unsigned long int old_hash = 0xffffffff; > > struct sym_val current_value = { NULL, NULL }; > > struct r_scope_elem **scope = symbol_scope; > > diff --git a/elf/dl-new-hash.h b/elf/dl-new-hash.h > > new file mode 100644 > > index 0000000000..b7a91ecc07 > > --- /dev/null > > +++ b/elf/dl-new-hash.h > > @@ -0,0 +1,37 @@ > > +/* _dl_new_hash for elf symbol lookup > > + Copyright (C) 2022 Free Software Foundation, Inc. > > + This file is part of the GNU C Library. > > + > > + The GNU C Library is free software; you can redistribute it and/or > > + modify it under the terms of the GNU Lesser General Public > > + License as published by the Free Software Foundation; either > > + version 2.1 of the License, or (at your option) any later version. > > + > > + The GNU C Library is distributed in the hope that it will be useful, > > + but WITHOUT ANY WARRANTY; without even the implied warranty of > > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > > + Lesser General Public License for more details. > > + > > + You should have received a copy of the GNU Lesser General Public > > + License along with the GNU C Library; if not, see > > + . */ > > + > > +#ifndef _DL_NEW_HASH_H > > +#define _DL_NEW_HASH_H 1 > > + > > +#include > > +/* For __always_inline. */ > > +#include > > + > > +static __always_inline uint32_t > > +__attribute__ ((unused)) > > +_dl_new_hash (const char *s) > > +{ > > + uint32_t h = 5381; > > + for (unsigned char c = *s; c != '\0'; c = *++s) > > + h = h * 33 + c; > > + return h; > > +} > > + > > + > > +#endif /* dl-new-hash.h */ >