From: Alan Modra Date: Mon, 27 Mar 2023 05:51:05 +0000 (+1030) Subject: Set proper union selector tag X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3bb1480e2a85de6850863d245e7b6da03a3887f7;p=binutils-gdb.git Set proper union selector tag * coff-bfd.c (bfd_coff_get_auxent): After converting sym pointer to an index, reset the union tag. --- diff --git a/bfd/coff-bfd.c b/bfd/coff-bfd.c index 068ecebc8df..9660b6b14e5 100644 --- a/bfd/coff-bfd.c +++ b/bfd/coff-bfd.c @@ -82,19 +82,28 @@ bfd_coff_get_auxent (bfd *abfd, *pauxent = ent->u.auxent; if (ent->fix_tag) - pauxent->x_sym.x_tagndx.l = - ((combined_entry_type *) pauxent->x_sym.x_tagndx.p - - obj_raw_syments (abfd)); + { + pauxent->x_sym.x_tagndx.l = + ((combined_entry_type *) pauxent->x_sym.x_tagndx.p + - obj_raw_syments (abfd)); + ent->fix_tag = 0; + } if (ent->fix_end) - pauxent->x_sym.x_fcnary.x_fcn.x_endndx.l = - ((combined_entry_type *) pauxent->x_sym.x_fcnary.x_fcn.x_endndx.p - - obj_raw_syments (abfd)); + { + pauxent->x_sym.x_fcnary.x_fcn.x_endndx.l = + ((combined_entry_type *) pauxent->x_sym.x_fcnary.x_fcn.x_endndx.p + - obj_raw_syments (abfd)); + ent->fix_end = 0; + } if (ent->fix_scnlen) - pauxent->x_csect.x_scnlen.l = - ((combined_entry_type *) pauxent->x_csect.x_scnlen.p - - obj_raw_syments (abfd)); + { + pauxent->x_csect.x_scnlen.l = + ((combined_entry_type *) pauxent->x_csect.x_scnlen.p + - obj_raw_syments (abfd)); + ent->fix_scnlen = 0; + } return true; }