From b08625af20ade108868edd6f31d1cee68889a0df Mon Sep 17 00:00:00 2001 From: =?utf8?q?Cl=C3=A9ment=20Chigot?= Date: Wed, 10 Nov 2021 13:35:07 +0100 Subject: [PATCH] gdb: adjust x_file fields on COFF readers Commit e86fc4a5bc37 ("PR 28447: implement multiple parameters for .file on XCOFF") changes the structure associated to the internal representation of files in COFF formats. However, gdb directory update has been forgotten, leading to compilation errors of this kind: CXX coffread.o /home/simark/src/binutils-gdb/gdb/coffread.c: In function 'const char* coff_getfilename(internal_auxent*)': /home/simark/src/binutils-gdb/gdb/coffread.c:1343:29: error: 'union internal_auxent::::' has no member named 'x_zeroes' 1343 | if (aux_entry->x_file.x_n.x_zeroes == 0) | ^~~~~~~~ Fix it by adjusting the COFF code in GDB. Change-Id: I703fa134bc722d47515efbd72b88fa5650af6c3c --- gdb/coffread.c | 8 ++++---- gdb/xcoffread.c | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gdb/coffread.c b/gdb/coffread.c index 225e0e28e95..4723662f140 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -1340,15 +1340,15 @@ coff_getfilename (union internal_auxent *aux_entry) static char buffer[BUFSIZ]; const char *result; - if (aux_entry->x_file.x_n.x_zeroes == 0) + if (aux_entry->x_file.x_n.x_n.x_zeroes == 0) { - if (strlen (stringtab + aux_entry->x_file.x_n.x_offset) >= BUFSIZ) + if (strlen (stringtab + aux_entry->x_file.x_n.x_n.x_offset) >= BUFSIZ) internal_error (__FILE__, __LINE__, _("coff file name too long")); - strcpy (buffer, stringtab + aux_entry->x_file.x_n.x_offset); + strcpy (buffer, stringtab + aux_entry->x_file.x_n.x_n.x_offset); } else { - strncpy (buffer, aux_entry->x_file.x_fname, FILNMLEN); + strncpy (buffer, aux_entry->x_file.x_n.x_fname, FILNMLEN); buffer[FILNMLEN] = '\0'; } result = buffer; diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index a854d4daf37..067f6fecdb8 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -1678,12 +1678,12 @@ coff_getfilename (union internal_auxent *aux_entry, struct objfile *objfile) { static char buffer[BUFSIZ]; - if (aux_entry->x_file.x_n.x_zeroes == 0) + if (aux_entry->x_file.x_n.x_n.x_zeroes == 0) strcpy (buffer, (XCOFF_DATA (objfile)->strtbl - + aux_entry->x_file.x_n.x_offset)); + + aux_entry->x_file.x_n.x_n.x_offset)); else { - strncpy (buffer, aux_entry->x_file.x_fname, FILNMLEN); + strncpy (buffer, aux_entry->x_file.x_n.x_fname, FILNMLEN); buffer[FILNMLEN] = '\0'; } return (buffer); -- 2.30.2