From: Tom Tromey <tromey@adacore.com>
To: Tom de Vries <tdevries@suse.de>
Cc: Tom Tromey <tromey@adacore.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH] Fix build with GCC 7.5
Date: Wed, 22 Nov 2023 08:17:34 -0700 [thread overview]
Message-ID: <871qchizqp.fsf@tromey.com> (raw)
In-Reply-To: <4d6a5f51-eb17-4de4-9c9f-df6a487ee9a1@suse.de> (Tom de Vries's message of "Wed, 22 Nov 2023 15:27:54 +0100")
Tom> This fixes one of the three warnings.
Indeed, duh. Sorry about that.
Here is v2.
Tom
commit 0447f3d09267f6fb90237b42aa6e1ec137a09c87
Author: Tom Tromey <tromey@adacore.com>
Date: Wed Nov 22 06:54:40 2023 -0700
Fix build with GCC 7.5
A recent change to 'struct field' caused a build failure with GCC
7.5.0, as reported by Tom de Vries:
/data/vries/gdb/src/gdb/gdbtypes.h:721:51: error:
‘field::m_accessibility’ is too small to hold all values of ‘enum
class accessibility’ [-Werror]
ENUM_BITFIELD (accessibility) m_accessibility : 2;
^
Mark Wielaard pointed out that this was a GCC bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51242
This patch works around the bug by changing several members not to be
bitfields. It reduces the size of the enum's underlying type,
instead.
I also changed m_bitsize to no longer be a bitfield -- that was done
for packing reasons in ancient times, but with m_accessibility not
being a bitfield, this no longer matters.
I removed fn_field::dummy. In earlier times it was somewhat normal in
gdb to have these dummy fields to keep track of any available padding.
However, since the advent of "ptype/o", there doesn't seem to be any
need for this.
This patch does not change the size of struct field, fn_field, or
decl_field on 64-bit hosts.
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
index 34ca1ac99e5..eca92196364 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
@@ -534,7 +534,7 @@ union field_location
};
/* Accessibility of a member. */
-enum class accessibility : unsigned
+enum class accessibility : unsigned char
{
/* It's important that this be 0 so that fields default to
public. */
@@ -717,8 +717,6 @@ struct field
unsigned int m_artificial : 1;
- /* Accessibility of the field. */
- ENUM_BITFIELD (accessibility) m_accessibility : 2;
/* Whether the field is 'virtual'. */
bool m_virtual : 1;
/* Whether the field is 'ignored'. */
@@ -728,13 +726,16 @@ struct field
ENUM_BITFIELD(field_loc_kind) m_loc_kind : 3;
+ /* Accessibility of the field. */
+ enum accessibility m_accessibility;
+
/* * Size of this field, in bits, or zero if not packed.
If non-zero in an array type, indicates the element size in
bits (used only in Ada at the moment).
For an unpacked field, the field's type's length
says how many bytes the field occupies. */
- unsigned int m_bitsize : 28;
+ unsigned int m_bitsize;
/* * In a struct or union type, type of this field.
- In a function or member type, type of this argument.
@@ -1611,8 +1612,6 @@ struct fn_field
unsigned int is_const:1;
unsigned int is_volatile:1;
- /* Accessibility of the field. */
- ENUM_BITFIELD (accessibility) accessibility : 2;
unsigned int is_artificial:1;
/* * A stub method only has some fields valid (but they are enough
@@ -1633,9 +1632,8 @@ struct fn_field
ENUM_BITFIELD (dwarf_defaulted_attribute) defaulted : 2;
- /* * Unused. */
-
- unsigned int dummy:6;
+ /* Accessibility of the field. */
+ enum accessibility accessibility;
/* * Index into that baseclass's virtual function table, minus 2;
else if static: VOFFSET_STATIC; else: 0. */
@@ -1658,7 +1656,7 @@ struct decl_field
struct type *type;
/* Accessibility of the field. */
- ENUM_BITFIELD (accessibility) accessibility : 2;
+ enum accessibility accessibility;
};
/* * C++ language-specific information for TYPE_CODE_STRUCT and
next prev parent reply other threads:[~2023-11-22 15:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-22 14:03 Tom Tromey
2023-11-22 14:27 ` Tom de Vries
2023-11-22 15:17 ` Tom Tromey [this message]
2023-11-22 17:04 ` Tom de Vries
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871qchizqp.fsf@tromey.com \
--to=tromey@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=tdevries@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).