diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2016-11-04 23:06:45 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2016-11-07 08:54:58 +0100 |
commit | 9ec4c4ab052c66e9e25c9893bba33b8dee258484 (patch) | |
tree | 9b3a8fb20e5dbb47c0017454b9b5ab4b096ee1a4 /jurt | |
parent | c01e02425e3ce7a14f06cfc505cf375a82a7c980 (diff) |
Don't rely on __builtin_alloca when creating a call stack
same as 3f7c8ce1dca7eacb511def7799691be2e3d9a4a6 for gcc_linux_x86-64 (see there
for a more detailed commit message; plus trivial follow-up
5e04886917abad0541eb3ef6d51cd5dc0395af21 "Remove spurious vertical whitespace").
Except use labels 'Lpush', 'Lpushed' not starting with a dot ('.Lpush',
'.Lpushed'), as otherwise at least macOS 10.12.1 linker (ld64-274.1), when
building libgcc3_uno.dylib's __TEXT,__unwind_info section, would use
callvirtualmethod.o's __LD,__compact_unwind entry---covering the complete
callVirtualMethod function---only for the first part of the function up to the
.Lpush label, and would mark the remainder as having no unwind information (a
compact_unwind_encoding_t value of 0; see the inline comments in the
libunwind-35.3 source code,
<http://opensource.apple.com/source/libunwind/libunwind-35.3/>). So if an
exception shall pass through that latter part it would lead to std::terminate.
Change-Id: Ib1e8a5e4534b11ebe96c3ce774f8e5e8d45476cf
Diffstat (limited to 'jurt')
0 files changed, 0 insertions, 0 deletions