[Mesa-dev] [Mesa-stable] [PATCH V3] mesa: use build flag to ensure stack is realigned on x86
Timothy Arceri
t_arceri at yahoo.com.au
Mon Dec 8 23:46:29 PST 2014
On Mon, 2014-12-08 at 22:08 -0800, Matt Turner wrote:
> On Mon, Dec 8, 2014 at 9:43 PM, Timothy Arceri <t_arceri at yahoo.com.au> wrote:
> > Nowadays GCC assumes stack pointer is 16-byte aligned even on 32-bits, but
> > that is an assumption OpenGL drivers (or any dynamic library for that matter)
> > can't afford to make as there are many closed- and open- source application
> > binaries out there that only assume 4-byte stack alignment.
> >
> > V3: move all sse4.1 build flag config to the same location
> > and add comment as to why we need to do the realign
> >
> > V2: use $target_cpu rather than $host_cpu
> > and setup build flags in config rather than makefile
> >
> > https://bugs.freedesktop.org/show_bug.cgi?id=86788
> > Signed-off-by: Timothy Arceri <t_arceri at yahoo.com.au>
> > Reviewed-by: Matt Turner <mattst88 at gmail.com>
> > CC: "10.4" <mesa-stable at lists.freedesktop.org>
> > ---
> > If there are no other comments I'll commit it to master
> > tomorrow.
> >
> > The last hunk should be dropped when applying to 10.4.
> >
> > configure.ac | 11 ++++++++++-
> > src/mesa/Makefile.am | 2 +-
> > src/mesa/main/sse_minmax.c | 3 ---
> > 3 files changed, 11 insertions(+), 5 deletions(-)
> >
> > diff --git a/configure.ac b/configure.ac
> > index b0df1bb..e510bcf 100644
> > --- a/configure.ac
> > +++ b/configure.ac
> > @@ -253,8 +253,16 @@ AC_SUBST([VISIBILITY_CXXFLAGS])
> > dnl
> > dnl Optional flags, check for compiler support
> > dnl
> > +SSE41_CFLAGS="-msse4.1"
> > +dnl 32-bit Mesa is 4-byte aligned to allow support for old applications
> > +dnl therefore we need to realign the stack when using SSE
>
> I don't think this comment is right. It doesn't have anything to do
> with Mesa. The 32-bit ABI just doesn't require the stack to be >4 byte
> aligned.
Thanks for the clarification I was wondering where the 4-byte align
config switch was but it was just me misreading Jose's comments on the
bug report.
>
> Søren's pixman patch has this comment, which I think is fine:
>
> Code compiled by GCC with -msse2 and -mssse3 assumes a 16 byte aligned
> stack, but on x86-32 such alignment is not guaranteed.
>
> (Just replace "-msse2 and -mssse3" with "-msse*")
>
> > +case "$target_cpu" in
> > + i?86)
> > + SSE41_CFLAGS="$SSE41_CFLAGS -mstackrealign"
> > + ;;
>
> Okay, starting to wonder if you're trolling me with this. :-|
uh sorry I did indent it, but not to the right place. The i?86)
shouldn't be indented either. All fixed in the next version, thanks
for all the feedback.
>
> Look at the other instances of ;; -- they're either on the same line
> as the previous statement or they're aligned with it.
> _______________________________________________
> mesa-stable mailing list
> mesa-stable at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-stable
More information about the mesa-dev
mailing list