summaryrefslogtreecommitdiffstats
path: root/src/Unwind-sjlj.c
Commit message (Collapse)AuthorAgeFilesLines
* Fix warnings about printf format stringsMartin Storsjo2019-01-221-45/+56
| | | | | | | | | | Either adjust the format string to use a more exact type, or add casts (for cases when printing pointers to structs/objects with a %p format specifier). Differential Revision: https://reviews.llvm.org/D56982 git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@351876 91177308-0d34-0410-b5e6-96231b3b80d8
* Update more file headers across all of the LLVM projects in the monorepoChandler Carruth2019-01-191-4/+3
| | | | | | | | | | | | | | | | | | to reflect the new license. These used slightly different spellings that defeated my regular expressions. We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach. Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository. git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@351648 91177308-0d34-0410-b5e6-96231b3b80d8
* [SjLj] Don't use __declspec(thread) in MinGW modeMartin Storsjo2019-01-181-1/+1
| | | | | | | | | | | GCC and Clang in MinGW mode don't support __declspec(thread), which after expanding macros ends up as __attribute__((thread)). Use the GCC specific attribute __thread instead (the next one in the chain of alternatives). Differential Revision: https://reviews.llvm.org/D56905 git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@351587 91177308-0d34-0410-b5e6-96231b3b80d8
* SjLj: Fix building after SVN r314632Martin Storsjo2017-10-011-1/+1
| | | | | | | The code moved from Unwind_AppleExtras.cpp to Unwind-sjlj.c needed a few minor modifications to build as C instead of C++. git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@314635 91177308-0d34-0410-b5e6-96231b3b80d8
* SjLj: make the SjLj implementation more portableSaleem Abdulrasool2017-10-011-13/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This moves the definition of the internal helpers `__Unwind_SjLj_GetTopOfFunctionStack` and `__Unwind_SjLj_SetTopOfFunctionStack` into `Unwind-sjlj.c`. These are not extra functions specific to Apple, but rather are internal implementation details of SjLj support in the LLVM libunwind implementation. This allows us to remove the internal header unwind_ext.h, as these functions are not meant to be used as SPI either. Because they are static, they will be given implicit hidden visibility, but due to the simplicity should get fully inlined into the actual use. Use the C11 standard static TLS annotation (`_Thread_local`) if possible, otherwise, use the Windows specific `__declspec(thread)` when targeting Windows or the GNU `__thread` extension. In theory, it should be possible for this implementation to use a `pthread_setspecific` and `pthread_getspecific` on platforms with pthreads or `SetFlsValue` and `GetFlsValue` on Windows for non-static TLS. However, static TLS tends to be significantly faster, so we really should prefer that over the dynamic TLS approach. On Apple environments, when not building for the loader (dyld), use the pre-allocated TLS slot in the loader rather than the local static TLS variable. Note that the un-threaded support of libunwind is still present as before, however, it is unsafe to use in a threaded environment as the cleanup stack may be mutated incorrectly due to lack of locking across threads. In the static TLS model, the lock is unneeded as each thread of execution retains its own copy of the cleanup stack. Take the opportunity to clean up the comment block, removing the iOS specific note as the SjLj implementation can be used outside of the context of iOS. Convert the rest of the explanation to a doxygen style comment block. git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@314632 91177308-0d34-0410-b5e6-96231b3b80d8
* Correct data types in the _Unwind_FunctionContext structMartin Storsjo2017-09-261-2/+2
| | | | | | | | | This makes it match the definition used within llvm and in libgcc, we previously got the wrong layout in 64 bit environments. Differential Revision: https://reviews.llvm.org/D38247 git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@314196 91177308-0d34-0410-b5e6-96231b3b80d8
* [libunwind] Clean up macro usage.Ranjeet Singh2017-03-311-2/+2
| | | | | | | | | | Convention in libunwind is to use !defined(FOOT) not !FOO. Differential Revision: https://reviews.llvm.org/D31078 git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@299225 91177308-0d34-0410-b5e6-96231b3b80d8
* consistently add \n to log and trace messagesEd Maste2016-08-301-34/+34
| | | | | | | | | | | Previously most messages included a newline in the string, but a few of them were missing. Fix these and simplify by just adding the newline in the _LIBUNWIND_LOG macro itself. Differential Revision: https://reviews.llvm.org/D24026 git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@280103 91177308-0d34-0410-b5e6-96231b3b80d8
* unwind: move src/Unwind, include/, and test/ unwind contentSaleem Abdulrasool2015-04-241-0/+468
This moves the majority of the unwind sources into the new project layout for libunwind. This was previously discussed on llvmdev at [1]. This is a purely movement related change, with the build infrastructure currently still residing in the libc++abi repository. [1] http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-January/081507.html git-svn-id: https://llvm.org/svn/llvm-project/libunwind/trunk@235758 91177308-0d34-0410-b5e6-96231b3b80d8