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.
This commit is contained in:
parent
fd63a770b7
commit
e7f2f959e3
@ -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.
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user