]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
COFF: correct function auxiliary symbol data clearing
authorJan Beulich <jbeulich@suse.com>
Fri, 2 May 2025 08:08:19 +0000 (10:08 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 2 May 2025 08:08:19 +0000 (10:08 +0200)
It's unclear why the array part of the union was used there, when we're
dealing with a function. Originally, when 32-bit hosts and targets were
prevailing, the memset() in question ended up clearing the entire x_fcn,
while for 64-bit hosts/targets only x_lnnoptr would have been cleared.
Then a2c7ca15a560 ("Use stdint types in coff internal_auxent") made
things consistent, but imo in the wrong direction (and likely
unintentionally). Go back to what apparently was meant originally, using
the correct part of the union now.

gas/config/obj-coff.c

index 445f2ac764d4a6f4bdce80dadacb2ad08ee1153c..2c95ba9038f32718abff1bee77544e8e3e4b30e6 100644 (file)
@@ -1345,8 +1345,8 @@ coff_frob_symbol (symbolS *symp, int *punt)
              if (S_GET_NUMBER_AUXILIARY (symp) < 1)
                S_SET_NUMBER_AUXILIARY (symp, 1);
              auxp = SYM_AUXENT (symp);
-             memset (auxp->x_sym.x_fcnary.x_ary.x_dimen, 0,
-                     sizeof (auxp->x_sym.x_fcnary.x_ary.x_dimen));
+             memset (&auxp->x_sym.x_fcnary.x_fcn, 0,
+                     sizeof (auxp->x_sym.x_fcnary.x_fcn));
            }
 
          if (S_GET_STORAGE_CLASS (symp) == C_EFCN