[upstream_utils] Add std::is_debugger_present() shim (#7423)

This commit is contained in:
Tyler Veness
2024-11-22 09:17:23 -08:00
committed by GitHub
parent 1d58c5025e
commit b7eb9fb8f9
16 changed files with 425 additions and 3 deletions

View File

@@ -0,0 +1,35 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Thu, 21 Nov 2024 17:51:15 -0800
Subject: [PATCH 1/4] Guard [[gnu::flatten]] attribute
---
include/debugging.hpp | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/include/debugging.hpp b/include/debugging.hpp
index 70ba724a2b6522a774931af7d7be2cee9408567a..25014a9fc65d06052089058feea7566462c01d60 100644
--- a/include/debugging.hpp
+++ b/include/debugging.hpp
@@ -7,13 +7,19 @@ namespace stdx {
bool is_debugger_present() noexcept;
-[[gnu::flatten]] inline void breakpoint() noexcept
+#if defined(__GNUC__) && !defined(__clang__)
+[[gnu::flatten]]
+#endif
+inline void breakpoint() noexcept
{
psnip_trap();
}
-[[gnu::flatten]] inline void breakpoint_if_debugging() noexcept
+#if defined(__GNUC__) && !defined(__clang__)
+[[gnu::flatten]]
+#endif
+inline void breakpoint_if_debugging() noexcept
{
if (is_debugger_present()) breakpoint();
}

View File

@@ -0,0 +1,36 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Thu, 21 Nov 2024 17:23:48 -0800
Subject: [PATCH 2/4] Remove debugger_query argument from Windows and macOS
---
src/macos.cxx | 2 +-
src/windows.cxx | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/macos.cxx b/src/macos.cxx
index bbcf6f2eec9ea479a2bea0ff06b454dc81b5d356..85dbb5f45d89680e39b4847a9aa2d5472c824f2a 100644
--- a/src/macos.cxx
+++ b/src/macos.cxx
@@ -13,7 +13,7 @@ auto exc = std::array<T, EXC_TYPES_COUNT> { {} };
namespace stdx {
-bool is_debugger_present(debugger_query q) noexcept
+bool is_debugger_present() noexcept
{
mach_msg_type_number_t count {};
auto masks = exc<exception_mask_t>;
diff --git a/src/windows.cxx b/src/windows.cxx
index eec576f415d52f63d2658012546ead2e691d7415..45d98eb27c5182de7ad11291925275fb4fdb54fb 100644
--- a/src/windows.cxx
+++ b/src/windows.cxx
@@ -9,7 +9,7 @@
namespace stdx {
-bool is_debugger_present(debugger_query q) noexcept
+bool is_debugger_present() noexcept
{
return ::IsDebuggerPresent();
}

View File

@@ -0,0 +1,22 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Thu, 21 Nov 2024 18:09:37 -0800
Subject: [PATCH 3/4] Fix exception mask type typo on macOS
---
src/macos.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/macos.cxx b/src/macos.cxx
index 85dbb5f45d89680e39b4847a9aa2d5472c824f2a..2c68064742bc7883a08551b88cd5dbb9a1f38100 100644
--- a/src/macos.cxx
+++ b/src/macos.cxx
@@ -20,7 +20,7 @@ bool is_debugger_present() noexcept
auto ports = exc<mach_port_t>;
auto behaviors = exc<exception_behavior_t>;
auto flavors = exc<thread_state_flavor_t>;
- exception_mast_t mask
+ exception_mask_t mask
= EXC_MASK_ALL & ~(EXC_MASK_RESOURCE | EXC_MASK_GUARD);
kern_return_t result = task_get_exception_ports(mach_task_self(), mask,
masks.data(), &count, ports.data(), behaviors.data(), flavors.data());

View File

@@ -0,0 +1,21 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Tyler Veness <calcmogul@gmail.com>
Date: Thu, 21 Nov 2024 18:49:53 -0800
Subject: [PATCH 4/4] Remove NOMINMAX macro from Windows
---
src/windows.cxx | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/windows.cxx b/src/windows.cxx
index 45d98eb27c5182de7ad11291925275fb4fdb54fb..d20ae438ef9b2de8830c6df099f0476aba395de5 100644
--- a/src/windows.cxx
+++ b/src/windows.cxx
@@ -4,7 +4,6 @@
# include <debugging.hpp>
# define WIN32_LEAN_AND_MEAN
-# define NOMINMAX
# include <Windows.h>
namespace stdx {