diff options
author | Stephane Sezer <sas@cd80.net> | 2016-01-08 20:32:35 +0000 |
---|---|---|
committer | Stephane Sezer <sas@cd80.net> | 2016-01-08 20:32:35 +0000 |
commit | 728384a05ecf23ff3ede48ee6bf03fadfe09c726 (patch) | |
tree | ab3e5aac244f517b07d5a752e1ba1779d862aa2d /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | b705b100127b0fec09f2219381d8428914773a27 (diff) | |
download | bcm5719-llvm-728384a05ecf23ff3ede48ee6bf03fadfe09c726.tar.gz bcm5719-llvm-728384a05ecf23ff3ede48ee6bf03fadfe09c726.zip |
Prevent infinite recursive loop in AppleObjCTrampolineHandler constructor
Summary:
When we construct AppleObjCTrampolineHandler, if m_impl_fn_addr is
invalid, we call CanJIT(). If the gdb remote process does not support
allocating and deallocating memory, this call stack will include a call
to the AppleObjCRuntime constructor. The AppleObjCRuntime constructor
will then call the AppleObjCTrampolineHandler constructor, creating a
recursive call loop that eventually overflows the stack and segfaults.
Avoid this call loop by not constructing the AppleObjCTrampolineHandler
within AppleObjCRuntime until we actually need to use it.
Reviewers: clayborg, jingham
Subscribers: sas, lldb-commits
Differential Revision: http://reviews.llvm.org/D15978
Change by Francis Ricci <fjricci@fb.com>
llvm-svn: 257204
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions