From 3bb1480e2a85de6850863d245e7b6da03a3887f7 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 27 Mar 2023 16:21:05 +1030 Subject: [PATCH] Set proper union selector tag * coff-bfd.c (bfd_coff_get_auxent): After converting sym pointer to an index, reset the union tag. --- bfd/coff-bfd.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) 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; } -- 2.30.2