Re: How to get 16-byte stack alignment in leaf functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>> On Tue, Sep 10, 2013 at 3:42 AM, Andrew Haley <aph@xxxxxxxxxx> wrote:
>>> What is the faulting instruction?
>
> -----Original Message----- From: Dave Allured - NOAA Affiliate
>> movdqa, an SSE instruction that requires 16-byte alignment.  This is
>> about a dozen instructions within the dynamic loader.
>
On Tue, Sep 10, 2013 at 5:35 PM,  Rob <sisyphus1@xxxxxxxxxxxxxxx> wrote:
> By some coincidence the same problem with movdqa cropped up (and a solution
> found) in a perl forum:
>
> http://www.perlmonks.org/?node_id=1052707
>
> In a nutshell, the solution there was to invoke "__attribute__
> ((aligned(8)))", which meant that gcc generated movdqu instructions instead
> of the faster movdqa.
>
> I don't know if that necessarily helps here :-)

Okay, __attribute__ is for variables and structures, right?  My
problem is keeping the stack aligned between calls, so I don't think
there is a clean way to apply __attribute__ to the stack itself.

Also, that errant movdqa is part of the loader, not my own code.  In
other words it is inside the ABI, and an ABI rule was violated well in
advance of that instruction.  As I see it, the memory fault is simply
an expected consequence of violating the ABI.

Thanks anyway, that helped me get a clearer picture on the situation.

--Dave




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux