From 89911183bd070b9e21a520db3a5213a7d1910bf6 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 2 May 2025 10:08:19 +0200 Subject: [PATCH] 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. --- gas/config/obj-coff.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 -- 2.47.3