From: Alan Modra Date: Thu, 15 Oct 2020 23:45:57 +0000 (+1030) Subject: elf32-arc.c: Don't cast between function pointer and void pointer X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e7f2f959e38e929ee04601abf97c4a637305771d;p=binutils-gdb.git elf32-arc.c: Don't cast between function pointer and void pointer Casts should be avoided if at all possible, and in particular the C standard doesn't promise that function pointers can be cast to void* or vice-versa. It is only mentioned under J.5 Common extensions, saying "The following extensions are widely used in many systems, but are not portable to all implementations." * elf32-arc.c (replace_func): Correct return type. (get_replace_function): Use a replace_func function pointer rather than void*. Update associated ARC_RELOC_HOWTO define. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 9595da0db3b..a7e0caea688 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2020-10-16 Alan Modra + + * elf32-arc.c (replace_func): Correct return type. + (get_replace_function): Use a replace_func function pointer rather + than void*. Update associated ARC_RELOC_HOWTO define. + 2020-10-16 Alan Modra * elf32-cr16.c: Formatting. diff --git a/bfd/elf32-arc.c b/bfd/elf32-arc.c index 7d282f39ac2..a05f697b657 100644 --- a/bfd/elf32-arc.c +++ b/bfd/elf32-arc.c @@ -391,17 +391,17 @@ static const struct arc_reloc_map arc_reloc_map[] = #undef ARC_RELOC_HOWTO -typedef ATTRIBUTE_UNUSED bfd_vma (*replace_func) (unsigned, int ATTRIBUTE_UNUSED); +typedef ATTRIBUTE_UNUSED unsigned (*replace_func) (unsigned, int ATTRIBUTE_UNUSED); #define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \ case TYPE: \ - func = (void *) RELOC_FUNCTION; \ + func = RELOC_FUNCTION; \ break; static replace_func get_replace_function (bfd *abfd, unsigned int r_type) { - void *func = NULL; + replace_func func = NULL; switch (r_type) { @@ -411,7 +411,7 @@ get_replace_function (bfd *abfd, unsigned int r_type) if (func == replace_bits24 && bfd_big_endian (abfd)) func = replace_bits24_be; - return (replace_func) func; + return func; } #undef ARC_RELOC_HOWTO