]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
fix assert in non-atomic path
authorThomas Neumann <tneumann@users.sourceforge.net>
Mon, 15 May 2023 12:59:22 +0000 (14:59 +0200)
committerThomas Neumann <tneumann@users.sourceforge.net>
Mon, 15 May 2023 13:17:21 +0000 (15:17 +0200)
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.

libgcc/unwind-dw2-fde.c

index 8683a65aa025a798888413802f16b203999a65a6..a5786bf729ce3a940be745488ca58cadc6ab4a86 100644 (file)
@@ -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;
 }