[Lldb-commits] [lldb] r353778 - Define _ENABLE_EXTENDED_ALIGNED_STORAGE on Windows.

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Wed Feb 13 09:46:30 PST 2019


Hi Pavel,

I think the offending struct is XSAVE in RegisterContext_x86.h. I don't
really know this code, would you mind having a look? It looks like you
touched the alignment in the past and seems to know what this this is doing
:-)

tree f8fc1af1c62b728260b6c950649c55f7aba513f6
parent 6857692687979d934e188d117eadc93f48d52a0c
author Pavel Labath <pavel at labath.sk> Wed Sep 12 08:50:08 2018 +0000
committer Pavel Labath <pavel at labath.sk> Wed Sep 12 08:50:08 2018 +0000

Reduce alignment on struct XSAVE, fixing a gcc warning

The warning is about heap-allocating a struct with bigger alignment
requirements than the standard heap allocator provides.

AFAICT, all uses of the XSAVE struct are already heap-allocated, so this
high alignment does not actually have any effect and removing it should
be NFC.

I have also done some digging in the commit history. This alignment
requirement was since the XSAVE struct was introduced in r180572 when
adding AVX register support for linux. It does not mention the alignment
specifically, so I am guessing this was just put there because the
corresponging XSAVE cpu instruction requires its buffer to be 64-byte
aligned. However, LLDB will not be normally reading this struct via the
XSAVE instruction directly. Instead we will ask the kernel to copy the
buffer saved when suspeding the inferior. This should not require such
strict alignment (in fact, linux kernel will happily do this for any
alignment).

llvm-svn: 342029





On Mon, Feb 11, 2019 at 10:55 PM Pavel Labath <pavel at labath.sk> wrote:

> On 12/02/2019 01:30, Jonas Devlieghere via lldb-commits wrote:
> > Author: jdevlieghere
> > Date: Mon Feb 11 16:30:21 2019
> > New Revision: 353778
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=353778&view=rev
> > Log:
> > Define _ENABLE_EXTENDED_ALIGNED_STORAGE on Windows.
> >
> > Apparently there are multiple places where MSVC complains about
> > instantiations with extended aligment. I think it's better to define
> > `_ENABLE_EXTENDED_ALIGNED_STORAGE` as suggested by the error message.
> >
> > I don't have access to a Windows machine so this is all speculative.
> >
>
> I think it would be worth investigating where is this large alignment
> coming from (my guess: something inside the RegisterContextDarwin
> structs). We've had a case in the past where we were heap-allocating a
> struct with a 64-byte alignment. MSVC would give a warning there, but
> gcc&clang would silently under-align the result.
>
> In that case, the large alignment was actually unneeded, so I fixed both
> issues by just lowering it. I suspect something similar may be possible
> here.
>
> pl
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20190213/3a894f3a/attachment.html>


More information about the lldb-commits mailing list