[binutils-gdb] gas md_apply_fix bad casts
Alan Modra
amodra@sourceware.org
Tue Jun 10 22:27:33 GMT 2025
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=44fce26c10eb598b5117665a1d36db1d1b14476f
commit 44fce26c10eb598b5117665a1d36db1d1b14476f
Author: Alan Modra <amodra@gmail.com>
Date: Mon Jun 9 15:00:30 2025 +0930
gas md_apply_fix bad casts
ns32k and z8k cast a valueT pointer to a long pointer when loading
md_apply_fix's value. That's quite wrong if the types have different
sizes, as they may eg. on a 32-bit host with 64-bit bfd support.
sparc also loads the value via a cast pointer, but at least in that
case the cast is to the same size pointer. None of these casts are
needed. Get rid of them.
Diff:
---
gas/config/tc-ns32k.c | 2 +-
gas/config/tc-sparc.c | 2 +-
gas/config/tc-z8k.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gas/config/tc-ns32k.c b/gas/config/tc-ns32k.c
index ad2c1f4d09c..13907f26ad3 100644
--- a/gas/config/tc-ns32k.c
+++ b/gas/config/tc-ns32k.c
@@ -1966,7 +1966,7 @@ md_fix_pcrel_adjust (fixS *fixP)
void
md_apply_fix (fixS *fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED)
{
- long val = * (long *) valP;
+ long val = *valP;
char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
if (fix_bit_fixP (fixP))
diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c
index 358042cb36a..6db848181e1 100644
--- a/gas/config/tc-sparc.c
+++ b/gas/config/tc-sparc.c
@@ -3460,7 +3460,7 @@ void
md_apply_fix (fixS *fixP, valueT *valP, segT segment ATTRIBUTE_UNUSED)
{
char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
- offsetT val = * (offsetT *) valP;
+ offsetT val = *valP;
long insn;
gas_assert (fixP->fx_r_type < BFD_RELOC_UNUSED);
diff --git a/gas/config/tc-z8k.c b/gas/config/tc-z8k.c
index aa8fc5f92ae..9947fe1e1fc 100644
--- a/gas/config/tc-z8k.c
+++ b/gas/config/tc-z8k.c
@@ -1407,7 +1407,7 @@ md_section_align (segT seg, valueT size)
void
md_apply_fix (fixS *fixP, valueT *valP, segT segment ATTRIBUTE_UNUSED)
{
- long val = * (long *) valP;
+ offsetT val = *valP;
char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
switch (fixP->fx_r_type)
More information about the Binutils-cvs
mailing list