Jonathan Wakely <jwak...@redhat.com> writes: > [...] > +void > +std::breakpoint() noexcept > +{ > + PROBE(std::breakpoint); > + > + if (__gnu_cxx::debugger_signal_for_breakpoint > 0) > + std::raise(__gnu_cxx::debugger_signal_for_breakpoint); > +
glib's https://gitlab.gnome.org/GNOME/glib/-/blob/main/glib/gbacktrace.h#L58 is a useful reference. It has an entry for alpha and also MSVC (though I can't imagine MSVC matters here). > +#if _GLIBCXX_HAVE_DEBUGAPI_H && defined(_WIN32) && !defined(__CYGWIN__) > + DebugBreak(); > +#elif __has_builtin(__builtin_debugtrap) > + __builtin_debugtrap(); // Clang > +#elif defined(__i386__) || defined(__x86_64__) > + __asm__ volatile ("int3; nop"); > +#elifdef __thumb__ > + __asm__ volatile (".inst 0xde01"); > +#elifdef __aarch64__ > + __asm__ volatile (".inst 0xd4200000"); > +#elifdef __arm__ > + __asm__ volatile (".inst 0xe7f001f0"); > +#elifdef __riscv > + /* section 2.8 in the RISC-V unprivileged ISA manual says for semi-hosted > + * environments we want the sequence: > + * slli x0, x0, 0x1f # Entry NOP > + * ebreak # Break to debugger > + * srai x0, x0, 7 # NOP encoding the semihosting call number 7 > + */ > + __asm__ volatile (".4byte 0x00100073"); > +#elifdef __powerpc__ > + __asm__ volatile(".4byte 0x7d821008"); > +#else > + __builtin_trap(); > +#endif > +} // If the debugger stops here, std::breakpoint() was called. > + > [...]