On Wed, Aug 26, 2020 at 01:08:00PM +0200, Richard Biener via Gcc-patches wrote: > You only need -fexceptions for that, then you can throw; from a signal handler > for example. If you want to be able to catch the exception somewhere up > the call chain all intermediate code needs to be compiled so that unwinding > from asynchronous events is possible - -fasynchronous-unwind-tables. > > So -fasynchronous-unwind-tables is about unwinding. -f[non-call]-exceptions > is about throw/catch. Clearly libgcc does neither throw nor catch but with > async events we might need to unwind from inside it.
In C code -f{,non-call-}exceptions is also about whether cleanup attribute will work or not. But I think in libgcc we don't really use it, especially not in the division/modulo code, not even indirectly from libc headers like pthread_cleanup_* macros. Jakub