https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61664

Alp Sayin <alpsayin at alpsayin dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |alpsayin at alpsayin dot com

--- Comment #2 from Alp Sayin <alpsayin at alpsayin dot com> ---
This issue still persists. I've hit the exact same problem with gcc-12.1.0
built from zephyrproject-rtos/gcc fork.
But more interestingly, I noticed that following code example is able to catch
the exception. 
Whereas any alteration either causes std:terminator to kick in or it causes the
unwinder to hang.

int main()
{
        try
        {
                throw 42;
        }
        // doesnt have to be char type can be any type, but remove this catch
and it exits (std::terminator goes to _exit())
        catch (char c){} 
        catch (int i)
        {
                printf("int catcher\n");
                std::exception_ptr p = std::current_exception();
                printf("Exception Value: 0x%08x/%dd\n", (int)&p, **(int**)&p);
                printf("Exception Type: %s\n", p ?
p.__cxa_exception_type()->name() : "null");
                return;
        }
        catch (...)
        {
                printf("all catcher\n");
                std::exception_ptr p = std::current_exception();
                printf("Exception Value: 0x%08x/%dd\n", (int)&p, **(int**)&p);
                printf("Exception Type: %s\n", p ?
p.__cxa_exception_type()->name() : "null");
                return;
        }
        printf("missed all catch");
}
  • [Bug target/61664] Microblaze ex... alpsayin at alpsayin dot com via Gcc-bugs

Reply via email to