aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Neumann <tneumann@users.sourceforge.net>2023-05-15 14:59:22 +0200
committerThomas Neumann <tneumann@users.sourceforge.net>2023-05-15 15:17:21 +0200
commit30adfb85ff994c0faa0cc556ba46838b218263f5 (patch)
treef2ea72cc9d02eb74046cf9ea366fd220ea849a95
parentc4733ea2b46278974f8d78a8afb379447cc38201 (diff)
fix assert in non-atomic path
The non-atomic path does not have range information, we have to adjust the assert handle that case, too. libgcc/ChangeLog: * unwind-dw2-fde.c: Fix assert in non-atomic path.
-rw-r--r--libgcc/unwind-dw2-fde.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libgcc/unwind-dw2-fde.c b/libgcc/unwind-dw2-fde.c
index 8683a65aa02..a5786bf729c 100644
--- a/libgcc/unwind-dw2-fde.c
+++ b/libgcc/unwind-dw2-fde.c
@@ -240,6 +240,7 @@ __deregister_frame_info_bases (const void *begin)
// And remove
ob = btree_remove (&registered_frames, range[0]);
+ bool empty_table = (range[1] - range[0]) == 0;
#else
init_object_mutex_once ();
__gthread_mutex_lock (&object_mutex);
@@ -276,11 +277,12 @@ __deregister_frame_info_bases (const void *begin)
out:
__gthread_mutex_unlock (&object_mutex);
+ const int empty_table = 0; // The non-atomic path stores all tables.
#endif
// If we didn't find anything in the lookup data structures then they
// were either already destroyed or we tried to remove an empty range.
- gcc_assert (in_shutdown || ((range[1] - range[0]) == 0 || ob));
+ gcc_assert (in_shutdown || (empty_table || ob));
return (void *) ob;
}