aboutsummaryrefslogtreecommitdiff
path: root/elf/dl-lookup.c
diff options
context:
space:
mode:
authorNoah Goldstein <goldstein.w.n@gmail.com>2022-04-13 19:46:03 -0500
committerNoah Goldstein <goldstein.w.n@gmail.com>2022-04-13 21:23:04 -0500
commit535e935a284b2ec96659d1ac40eebf61321f2362 (patch)
tree05e8df88daa71e7dc7d39d7cdb994045e85e69b7 /elf/dl-lookup.c
parentd275970ab56f8ba6a3ca598aba75db4daabe5924 (diff)
downloadglibc-535e935a284b2ec96659d1ac40eebf61321f2362.zip
glibc-535e935a284b2ec96659d1ac40eebf61321f2362.tar.gz
glibc-535e935a284b2ec96659d1ac40eebf61321f2362.tar.bz2
Replace {u}int_fast{16|32} with {u}int32_t
On 32-bit machines this has no affect. On 64-bit machines {u}int_fast{16|32} are set as {u}int64_t which is often not ideal. Particularly x86_64 this change both saves code size and may save instruction cost. Full xcheck passes on x86_64.
Diffstat (limited to 'elf/dl-lookup.c')
-rw-r--r--elf/dl-lookup.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c
index 7b2a662..989b073 100644
--- a/elf/dl-lookup.c
+++ b/elf/dl-lookup.c
@@ -208,7 +208,7 @@ is_nodelete (struct link_map *map, int flags)
in the unique symbol table, creating a new entry if necessary.
Return the matching symbol in RESULT. */
static void
-do_lookup_unique (const char *undef_name, uint_fast32_t new_hash,
+do_lookup_unique (const char *undef_name, unsigned int new_hash,
struct link_map *map, struct sym_val *result,
int type_class, const ElfW(Sym) *sym, const char *strtab,
const ElfW(Sym) *ref, const struct link_map *undef_map,
@@ -339,7 +339,7 @@ marking %s [%lu] as NODELETE due to unique symbol\n",
something bad happened. */
static int
__attribute_noinline__
-do_lookup_x (const char *undef_name, uint_fast32_t new_hash,
+do_lookup_x (const char *undef_name, unsigned int new_hash,
unsigned long int *old_hash, const ElfW(Sym) *ref,
struct sym_val *result, struct r_scope_elem *scope, size_t i,
const struct r_found_version *const version, int flags,
@@ -558,13 +558,13 @@ skip:
}
-static uint_fast32_t
+static uint32_t
dl_new_hash (const char *s)
{
- uint_fast32_t h = 5381;
+ uint32_t h = 5381;
for (unsigned char c = *s; c != '\0'; c = *++s)
h = h * 33 + c;
- return h & 0xffffffff;
+ return h;
}
@@ -816,7 +816,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 uint_fast32_t 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;