aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorPeter Zotov <whitequark@whitequark.org>2015-11-09 06:57:29 +0000
committerPeter Zotov <whitequark@whitequark.org>2015-11-09 06:57:29 +0000
commitb0342a66a005b72d42bdbf858969c208c08595ca (patch)
tree6d457896c5fdd3881a8412fc9fdfb7f3d6863769 /clang/lib/Frontend/CompilerInvocation.cpp
parent7a6e292d865f5e510648bb1928bbbd7ea3026b40 (diff)
downloadllvm-b0342a66a005b72d42bdbf858969c208c08595ca.zip
llvm-b0342a66a005b72d42bdbf858969c208c08595ca.tar.gz
llvm-b0342a66a005b72d42bdbf858969c208c08595ca.tar.bz2
Make it possible to use libunwind without heap.
This patch allows to use libunwind on bare-metal systems that do not include malloc/free by conditionally turning off nonessential functionality that requires these functions. The disabled functionality includes: * the .cfi_remember_state and .cfi_restore_state instructions; * the DWARF FDE cache. The .cfi_{remember,restore}_state instructions don't seem to be used by contemporary compilers. None of the LLVM backends emit it. The DWARF FDE cache is bypassed if _LIBUNWIND_NO_HEAP is defined. Specifically, entries are never added to it, so the search begins and ends at the statically allocated, empty initial cache. Such heap-less libunwind on a bare metal system is successfully used in the ARTIQ project[1], and it is my hope that it will be useful elsewhere. [1]: http://m-labs.hk/artiq Differential Revision: http://reviews.llvm.org/D11897 llvm-svn: 252452
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions