[binutils-gdb] elf32-arc.c: Don't cast between function pointer and void pointer
Alan Modra
amodra@sourceware.org
Fri Oct 16 00:05:46 GMT 2020
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e7f2f959e38e929ee04601abf97c4a637305771d
commit e7f2f959e38e929ee04601abf97c4a637305771d
Author: Alan Modra <amodra@gmail.com>
Date: Fri Oct 16 10:15:57 2020 +1030
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:
---
bfd/ChangeLog | 6 ++++++
bfd/elf32-arc.c | 8 ++++----
2 files changed, 10 insertions(+), 4 deletions(-)
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 <amodra@gmail.com>
+
+ * 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 <amodra@gmail.com>
* 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
More information about the Binutils-cvs
mailing list