Change the ABI CallFrameAddressIsValid methods for i386 and x86_64.
authorJason Molenda <jmolenda@apple.com>
Thu, 13 Feb 2014 04:19:32 +0000 (04:19 +0000)
committerJason Molenda <jmolenda@apple.com>
Thu, 13 Feb 2014 04:19:32 +0000 (04:19 +0000)
commit9098f1d3d96e36e3892c63d295de591791cc8849
tree4666c6ca8d698cc1b9b1a3e4f3fd9f71bb88a665
parent2b97f9b21108b3bff00f5d3c60cb6eeb97747e24
Change the ABI CallFrameAddressIsValid methods for i386 and x86_64.
They were enforcing 16-byte alignment on stack frames for Darwin x86 programs.
But we've found that trap handlers typically don't have the stack pointer
aligned correctly when a trap happens and lldb wasn't backtracing all
the way through.  This method is only used as a safety guard to prevent
lldb's unwinder from using a bogus address as a stack frame - we'll still
enforce word-size alignment on stack frames so that should be fine.

Also rolled back akaylor's changes from August 2013 in r188952 which changed
the i386 ABI plugin to relax the CallFrameAddressIsValid offsets for non-Darwin
targets where only 4-byte alignment is enforced.  Now Darwin is the same as
those environments.

<rdar://problem/15982682>

llvm-svn: 201292
lldb/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp
lldb/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h
lldb/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.h
lldb/source/Plugins/DynamicLoader/POSIX-DYLD/DynamicLoaderPOSIXDYLD.cpp