From: Alan Modra Date: Mon, 9 Jun 2025 05:30:30 +0000 (+0930) Subject: gas md_apply_fix bad casts X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=44fce26c10eb598b5117665a1d36db1d1b14476f;p=thirdparty%2Fbinutils-gdb.git 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 --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)