FROMLIST: selftests/vDSO: change elf_hash parameter to signed char

Fixes clang compilation warnings by changing elf_hash's parameter type
to char * and casting to unsigned char * inside elf_hash:

parse_vdso.c:206:22: warning: passing 'const char *' to parameter of
 type 'const unsigned char *' converts between pointers to integer types
 where one is of the unique plain 'char' type and the other is not
 [-Wpointer-sign]
        ver_hash = elf_hash(version);
                            ^~~~~~~
parse_vdso.c:59:52: note: passing argument to parameter 'name' here
static unsigned long elf_hash(const unsigned char *name)
                                                   ^
parse_vdso.c:207:46: warning: passing 'const char *' to parameter of
 type 'const unsigned char *' converts between pointers to integer types
 where one is of the unique plain 'char' type and the other is not
 [-Wpointer-sign]
        ELF(Word) chain = vdso_info.bucket[elf_hash(name) % vdso_info.nbucket];
                                                    ^~~~
parse_vdso.c:59:52: note: passing argument to parameter 'name' here
static unsigned long elf_hash(const unsigned char *name)

Fixes: 98eedc3a9d ("Document the vDSO and add a reference parser")
Change-Id: I163a292875df97c51fa91fc930462d2e9c2c0b13
Signed-off-by: Edward Liaw <edliaw@google.com>
Link: https://lore.kernel.org/all/20240506181951.1804451-1-edliaw@google.com/
This commit is contained in:
Edward Liaw
2024-04-29 21:07:20 +00:00
committed by John Stultz
parent c866527fc2
commit eadd00ac9f
+6 -3
View File
@@ -56,12 +56,15 @@ static struct vdso_info
} vdso_info;
/* Straight from the ELF specification. */
static unsigned long elf_hash(const unsigned char *name)
static unsigned long elf_hash(const char *name)
{
unsigned long h = 0, g;
while (*name)
const unsigned char *s;
s = (const unsigned char *) name;
while (*s)
{
h = (h << 4) + *name++;
h = (h << 4) + *s++;
g = h & 0xf0000000;
if (h)
h ^= g >> 24;