]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Fix bootstrap failures in src/c++26/debugging.cc
authorJonathan Wakely <jwakely@redhat.com>
Sun, 31 Aug 2025 09:11:25 +0000 (10:11 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Sun, 31 Aug 2025 09:16:19 +0000 (10:16 +0100)
ptrace on Darwin requires <sys/types.h>.

The inline x86 asm doesn't work with the Solaris assembler.

libstdc++-v3/ChangeLog:

* src/c++26/debugging.cc [_GLIBCXX_HAVE_SYS_PTRACE_H]: Include
<sys/types.h>.
(breakpoint) [__i386__ || __x86_64__]: Use "int 0x03" instead of
"int3".

libstdc++-v3/src/c++26/debugging.cc

index 72e305d3272b120535476ef83060fa6d23b9d62c..c6262db73f442e3e775300bc3019c4c39f0f2b35 100644 (file)
@@ -33,6 +33,7 @@
 #endif
 
 #if _GLIBCXX_HAVE_SYS_PTRACE_H
+# include <sys/types.h> // for darwin ptrace
 # include <sys/ptrace.h>
 # include <errno.h>
 #endif
@@ -138,7 +139,7 @@ std::breakpoint() noexcept
   __builtin_debugtrap(); // Clang
 #elif defined(__i386__) || defined(__x86_64__)
   // nop is for GDB, see https://sourceware.org/bugzilla/show_bug.cgi?id=31194
-  __asm__ volatile ("int3\n\tnop");
+  __asm__ volatile ("int $0x3\n\tnop");
 #elifdef __thumb__
   __asm__ volatile (".inst 0xde01");
 #elifdef __aarch64__