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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user