This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: libsanitizer merge from upstream r191666


On Thu, Nov 14, 2013 at 10:09 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Thu, Nov 14, 2013 at 07:08:17PM +0100, Jakub Jelinek wrote:
>> On Thu, Nov 14, 2013 at 09:56:36PM +0400, Konstantin Serebryany wrote:
>> > I thought about alignment but did not reflect it anywhere in the
>> > interface/comments.
>> > The alignment should be min(4096, N), which is enough for most purposes.
>>
>> You mean max(4096, N), right?
>
> Oops, of course min.
>
>> And, what exactly is N?  1 << (class_id + 6)?

Right.
The minimal allocation unit is 64-aligned 64-bytes.
Then 128-aligned 128-bytes and so on up to 4096.
Then only 4096-alignment is guaranteed.

These are the chunks returned by  __asan_stack_malloc.
The compiler pads them with redzones which in clang (and IIRC in gcc)
are 32-aligned 32-bytes.

You raised a valid concern about 512-bit (64-byte) alignment.
Clang asan does not support that now (will just not add a redzone to
such variables).
Someday we'll implement adaptable redzones for stack (we did that for
globals and heap already) which will fix this.

--kcc


>
> But this is valid.
>
>         Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]