On 9/25/22 00:29, Iain Sandoe wrote:
On 23 Sep 2022, at 15:30, David Edelsohn via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
On Fri, Sep 23, 2022 at 10:12 AM Thomas Neumann <neum...@in.tum.de> wrote:
+static const bool in_shutdown = false;
I'll let Jason or others decide if this is the right solution. It seems
that in_shutdown also could be declared outside the #ifdef and
initialized as "false".
sure, either is fine. Moving it outside the #ifdef wastes one byte in
the executable (while the compiler can eliminate the const), but it does
not really matter.
I have verified that the patch below fixes builds for both fast-path and
non-fast-path builds. But if you prefer I will move the in_shutdown
definition instead.
Best
Thomas
PS: in_shutdown is an int here instead of a bool because non-fast-path
builds do not include stdbool. Not a good reason, of course, but I
wanted to keep the patch minimal and it makes no difference in practice.
When using the atomic fast path deregistering can fail during
program shutdown if the lookup structures are already destroyed.
The assert in __deregister_frame_info_bases takes that into
account. In the non-fast-path case however is not aware of
program shutdown, which caused a compiler error on such platforms.
We fix that by introducing a constant for in_shutdown in
non-fast-path builds.
libgcc/ChangeLog:
* unwind-dw2-fde.c: Introduce a constant for in_shutdown
for the non-fast-path case.
diff --git a/libgcc/unwind-dw2-fde.c b/libgcc/unwind-dw2-fde.c
index d237179f4ea..0bcd5061d76 100644
--- a/libgcc/unwind-dw2-fde.c
+++ b/libgcc/unwind-dw2-fde.c
@@ -67,6 +67,8 @@ static void
init_object (struct object *ob);
#else
+/* Without fast path frame deregistration must always succeed. */
+static const int in_shutdown = 0;
/* The unseen_objects list contains objects that have been registered
but not yet categorized in any way. The seen_objects list has had
Thanks for the patch. I'll let you and Jason decide which style solution
is preferred.
This also breaks bootstrap on Darwin at least, so an early solution would be
welcome (the fix here allows bootstrap to continue, testing on-going).
thanks,
I'm using it in the automated tester as well -- without all the *-elf
targets would fail to build libgcc.
jeff