I'm not sure we have an owner for libunwind, but things sounded positive on the code review, so go ahead and merge.
Thanks, Hans On Wed, Jul 20, 2016 at 8:06 PM, Eric Fiselier <e...@efcs.ca> wrote: > @Hans This should be merged into 3.9. > > Can a code owner give this the thumbs up? > > /Eric > > On Wed, Jul 20, 2016 at 5:56 PM, Eric Fiselier via cfe-commits > <cfe-commits@lists.llvm.org> wrote: >> >> Author: ericwf >> Date: Wed Jul 20 18:56:42 2016 >> New Revision: 276215 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=276215&view=rev >> Log: >> [libunwind] Properly align _Unwind_Exception. >> >> Summary: _Unwind_Exception is required to be double word aligned. >> Currently the struct is under aligned. >> >> Reviewers: mclow.lists, compnerd, kledzik, emaste >> >> Subscribers: emaste, cfe-commits >> >> Differential Revision: https://reviews.llvm.org/D22543 >> >> Added: >> libunwind/trunk/test/alignment.pass.cpp >> Modified: >> libunwind/trunk/include/unwind.h >> >> Modified: libunwind/trunk/include/unwind.h >> URL: >> http://llvm.org/viewvc/llvm-project/libunwind/trunk/include/unwind.h?rev=276215&r1=276214&r2=276215&view=diff >> >> ============================================================================== >> --- libunwind/trunk/include/unwind.h (original) >> +++ libunwind/trunk/include/unwind.h Wed Jul 20 18:56:42 2016 >> @@ -122,13 +122,16 @@ struct _Unwind_Exception { >> uintptr_t private_1; // non-zero means forced unwind >> uintptr_t private_2; // holds sp that phase1 found for phase2 to use >> #ifndef __LP64__ >> - // The gcc implementation of _Unwind_Exception used attribute mode on >> the >> - // above fields which had the side effect of causing this whole struct >> to >> + // The implementation of _Unwind_Exception uses an attribute mode on >> the >> + // above fields which has the side effect of causing this whole struct >> to >> // round up to 32 bytes in size. To be more explicit, we add pad fields >> // added for binary compatibility. >> uint32_t reserved[3]; >> #endif >> -}; >> + // The Itanium ABI requires that _Unwind_Exception objects are >> "double-word >> + // aligned". GCC has interpreted this to mean "use the maximum useful >> + // alignment for the target"; so do we. >> +} __attribute__((__aligned__)); >> >> typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn) >> (int version, >> >> Added: libunwind/trunk/test/alignment.pass.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/libunwind/trunk/test/alignment.pass.cpp?rev=276215&view=auto >> >> ============================================================================== >> --- libunwind/trunk/test/alignment.pass.cpp (added) >> +++ libunwind/trunk/test/alignment.pass.cpp Wed Jul 20 18:56:42 2016 >> @@ -0,0 +1,21 @@ >> +// -*- C++ -*- >> >> +//===----------------------------------------------------------------------===// >> +// >> +// The LLVM Compiler Infrastructure >> +// >> +// This file is dual licensed under the MIT and the University of >> Illinois Open >> +// Source Licenses. See LICENSE.TXT for details. >> +// >> >> +//===----------------------------------------------------------------------===// >> + >> +// The Itanium ABI requires that _Unwind_Exception objects are >> "double-word >> +// aligned". >> + >> +#include <unwind.h> >> + >> +struct MaxAligned {} __attribute__((aligned)); >> +static_assert(alignof(_Unwind_Exception) == alignof(MaxAligned), ""); >> + >> +int main() >> +{ >> +} >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > > _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits