[PATCH] D38250: [libunwind] Implement the Get/SetTopOfFunctionStack functions via a __thread TLS variable

Martin Storsjö via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 25 12:57:20 PDT 2017

mstorsjo created this revision.

When targeting apple platforms, these functions are implemented in
Unwind_AppleExtras.cpp, but there's previously no implementation for
other platforms.

Does `__thread` have any specific runtime requirements on e.g. windows?



Index: src/Unwind-sjlj.c
--- src/Unwind-sjlj.c
+++ src/Unwind-sjlj.c
@@ -465,4 +465,18 @@
   return 0;
+#ifndef __APPLE__
+__thread struct _Unwind_FunctionContext *stack = NULL;
+struct _Unwind_FunctionContext *__Unwind_SjLj_GetTopOfFunctionStack() {
+  return stack;
+void __Unwind_SjLj_SetTopOfFunctionStack(struct _Unwind_FunctionContext *fc) {
+  stack = fc;
+#endif // !defined(__APPLE__)
 #endif // defined(_LIBUNWIND_BUILD_SJLJ_APIS)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D38250.116594.patch
Type: text/x-patch
Size: 564 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170925/e1af6c21/attachment-0001.bin>

More information about the cfe-commits mailing list