about summary refs log tree commit diff
path: root/absl/debugging/internal
diff options
context:
space:
mode:
authorAugusto Righetto <aurighet@microsoft.com>2020-03-03T15·26-0800
committerGitHub <noreply@github.com>2020-03-03T15·26-0500
commit06f0e767d13d4d68071c4fc51e25724e0fc8bc74 (patch)
treecac234809927e0ea5c0c5c8bfd76dea4a31ea7dc /absl/debugging/internal
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')
-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 9c2c558044d8..af4578a506b0 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,