From: Jan Beulich Date: Fri, 2 May 2025 08:08:19 +0000 (+0200) Subject: COFF: correct function auxiliary symbol data clearing X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=89911183bd070b9e21a520db3a5213a7d1910bf6;p=thirdparty%2Fbinutils-gdb.git COFF: correct function auxiliary symbol data clearing 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. --- diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c index 445f2ac764d..2c95ba9038f 100644 --- a/gas/config/obj-coff.c +++ b/gas/config/obj-coff.c @@ -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