summaryrefslogtreecommitdiff
path: root/absl/debugging/internal/stacktrace_win32-inl.inc
diff options
context:
space:
mode:
authorGravatar Augusto Righetto <aurighet@microsoft.com>2020-03-03 07:26:59 -0800
committerGravatar GitHub <noreply@github.com>2020-03-03 10:26:59 -0500
commit06f0e767d13d4d68071c4fc51e25724e0fc8bc74 (patch)
treecac234809927e0ea5c0c5c8bfd76dea4a31ea7dc /absl/debugging/internal/stacktrace_win32-inl.inc
parentbcefbdcdf6ad85046ccacee0aeffba5404d3e528 (diff)
BuildBreak: UWP apps can't call GetModuleHandle (#596)
* BuildBreak: UWP apps can't call GetModuleHandle It is not possible to load RtlCaptureStackBackTrace at static init time in UWP. CaptureStackBackTrace is the public version of RtlCaptureStackBackTrace. * Using WINAPI_FAMILY_PARTITION family of macros Using WINAPI_FAMILY_PARTITION family of macros for detecting when building for UWP or Desktop. * Simplifying comment to please lint tool.
Diffstat (limited to 'absl/debugging/internal/stacktrace_win32-inl.inc')
-rw-r--r--absl/debugging/internal/stacktrace_win32-inl.inc8
1 files changed, 8 insertions, 0 deletions
diff --git a/absl/debugging/internal/stacktrace_win32-inl.inc b/absl/debugging/internal/stacktrace_win32-inl.inc
index 9c2c5580..af4578a5 100644
--- a/absl/debugging/internal/stacktrace_win32-inl.inc
+++ b/absl/debugging/internal/stacktrace_win32-inl.inc
@@ -46,11 +46,19 @@ typedef USHORT NTAPI RtlCaptureStackBackTrace_Function(
OUT PVOID *backtrace,
OUT PULONG backtrace_hash);
+// It is not possible to load RtlCaptureStackBackTrace at static init time in
+// UWP. CaptureStackBackTrace is the public version of RtlCaptureStackBackTrace
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && \
+ !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+static RtlCaptureStackBackTrace_Function* const RtlCaptureStackBackTrace_fn =
+ &::CaptureStackBackTrace;
+#else
// Load the function we need at static init time, where we don't have
// to worry about someone else holding the loader's lock.
static RtlCaptureStackBackTrace_Function* const RtlCaptureStackBackTrace_fn =
(RtlCaptureStackBackTrace_Function*)
GetProcAddress(GetModuleHandleA("ntdll.dll"), "RtlCaptureStackBackTrace");
+#endif // WINAPI_PARTITION_APP && !WINAPI_PARTITION_DESKTOP
template <bool IS_STACK_FRAMES, bool IS_WITH_CONTEXT>
static int UnwindImpl(void** result, int* sizes, int max_depth, int skip_count,