diff mbox series

[V3] mesa: Disable asm on musl

Message ID 20181003004405.34524-1-raj.khem@gmail.com
State Accepted
Commit 27c25de38aacc98fe376422bbbee417b2b45a98e
Headers show
Series [V3] mesa: Disable asm on musl | expand

Commit Message

Khem Raj Oct. 3, 2018, 12:44 a.m. UTC
Musl started blocking dlopen of libs with initial-exec references into
dynamic TLS area, via

https://github.com/kraj/musl/commit/5c2f46a214fceeee3c3e41700c51415e0a4f1acd

prior to that commit, musl was loading it and silently letting
subsequent TLS accesses via the miscompiled code clobber memory that
didn't belong to them

This was wrong behavior and it relied on additional space reserved by
libc in TLS space to adjust fo such broken libs, but it also fails
with glibc if the reserved space was already used up

Right fix is that  mesa should be patched to remove all the
initial-exec hacks and use real TLS, and -mtls-dialect=gnu2 (TLSDESC)
should be used on archs it's supported on (i386, x86_64, and aarch64)
to make up for the lost performance, but mesa hardcodes the initial-exec,
so there must be a reason that probably is better known to mesa devs.

but we 'fixed' it for musl by adding --disable-glx-tls for mesa in OE,
which uses pthread_getspecific instead and makes is lot slower.

this caused additional problems with security flags on, it get textrels
in .text segment. Therefore this is 'second fix' to get us through this
warning.

Cause is some unknown part of mesa's x86 assembly code is broken by
readonly text segments

[ YOCTO #12918 ]

Signed-off-by: Khem Raj <raj.khem@gmail.com>

---
V3: Disable asm just on x86, since it works well elsewhere

 meta/recipes-graphics/mesa/mesa.inc | 2 ++
 1 file changed, 2 insertions(+)

-- 
2.19.0

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Comments

Paul Eggleton Oct. 3, 2018, 1:40 a.m. UTC | #1
On Wednesday, 3 October 2018 1:44:05 PM NZDT Khem Raj wrote:
> Musl started blocking dlopen of libs with initial-exec references into

> dynamic TLS area, via

> 

> https://github.com/kraj/musl/commit/5c2f46a214fceeee3c3e41700c51415e0a4f1acd

> 

> prior to that commit, musl was loading it and silently letting

> subsequent TLS accesses via the miscompiled code clobber memory that

> didn't belong to them

> 

> This was wrong behavior and it relied on additional space reserved by

> libc in TLS space to adjust fo such broken libs, but it also fails

> with glibc if the reserved space was already used up

> 

> Right fix is that  mesa should be patched to remove all the

> initial-exec hacks and use real TLS, and -mtls-dialect=gnu2 (TLSDESC)

> should be used on archs it's supported on (i386, x86_64, and aarch64)

> to make up for the lost performance, but mesa hardcodes the initial-exec,

> so there must be a reason that probably is better known to mesa devs.

> 

> but we 'fixed' it for musl by adding --disable-glx-tls for mesa in OE,

> which uses pthread_getspecific instead and makes is lot slower.

> 

> this caused additional problems with security flags on, it get textrels

> in .text segment. Therefore this is 'second fix' to get us through this

> warning.

> 

> Cause is some unknown part of mesa's x86 assembly code is broken by

> readonly text segments


That's excellent, thanks!

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre


-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Ross Burton Oct. 3, 2018, 9:12 a.m. UTC | #2
Perfect. :)  Did you file a bug upstream, or shall I copy/paste that
into a bug now?

Ross
On Wed, 3 Oct 2018 at 01:49, Khem Raj <raj.khem@gmail.com> wrote:
>

> Musl started blocking dlopen of libs with initial-exec references into

> dynamic TLS area, via

>

> https://github.com/kraj/musl/commit/5c2f46a214fceeee3c3e41700c51415e0a4f1acd

>

> prior to that commit, musl was loading it and silently letting

> subsequent TLS accesses via the miscompiled code clobber memory that

> didn't belong to them

>

> This was wrong behavior and it relied on additional space reserved by

> libc in TLS space to adjust fo such broken libs, but it also fails

> with glibc if the reserved space was already used up

>

> Right fix is that  mesa should be patched to remove all the

> initial-exec hacks and use real TLS, and -mtls-dialect=gnu2 (TLSDESC)

> should be used on archs it's supported on (i386, x86_64, and aarch64)

> to make up for the lost performance, but mesa hardcodes the initial-exec,

> so there must be a reason that probably is better known to mesa devs.

>

> but we 'fixed' it for musl by adding --disable-glx-tls for mesa in OE,

> which uses pthread_getspecific instead and makes is lot slower.

>

> this caused additional problems with security flags on, it get textrels

> in .text segment. Therefore this is 'second fix' to get us through this

> warning.

>

> Cause is some unknown part of mesa's x86 assembly code is broken by

> readonly text segments

>

> [ YOCTO #12918 ]

>

> Signed-off-by: Khem Raj <raj.khem@gmail.com>

> ---

> V3: Disable asm just on x86, since it works well elsewhere

>

>  meta/recipes-graphics/mesa/mesa.inc | 2 ++

>  1 file changed, 2 insertions(+)

>

> diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc

> index 8d0e2cb67c..0dfdfbd5b4 100644

> --- a/meta/recipes-graphics/mesa/mesa.inc

> +++ b/meta/recipes-graphics/mesa/mesa.inc

> @@ -108,6 +108,8 @@ PACKAGECONFIG[unwind] = "--enable-libunwind,--disable-libunwind,libunwind"

>

>  EXTRA_OECONF_remove_libc-musl = "--enable-glx-tls"

>  EXTRA_OECONF_append_libc-musl = " --disable-glx-tls"

> +EXTRA_OECONF_append_libc-musl_x86 = " --disable-asm"

> +

>  # llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2)

>  FULL_OPTIMIZATION_append = " -fno-omit-frame-pointer"

>

> --

> 2.19.0

>

> --

> _______________________________________________

> Openembedded-core mailing list

> Openembedded-core@lists.openembedded.org

> http://lists.openembedded.org/mailman/listinfo/openembedded-core

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Khem Raj Oct. 3, 2018, 1:32 p.m. UTC | #3
On Wed, Oct 3, 2018 at 2:12 AM Burton, Ross <ross.burton@intel.com> wrote:
>

> Perfect. :)  Did you file a bug upstream, or shall I copy/paste that

> into a bug now?


i did not. thanks in advance if you can
>

> Ross

> On Wed, 3 Oct 2018 at 01:49, Khem Raj <raj.khem@gmail.com> wrote:

> >

> > Musl started blocking dlopen of libs with initial-exec references into

> > dynamic TLS area, via

> >

> > https://github.com/kraj/musl/commit/5c2f46a214fceeee3c3e41700c51415e0a4f1acd

> >

> > prior to that commit, musl was loading it and silently letting

> > subsequent TLS accesses via the miscompiled code clobber memory that

> > didn't belong to them

> >

> > This was wrong behavior and it relied on additional space reserved by

> > libc in TLS space to adjust fo such broken libs, but it also fails

> > with glibc if the reserved space was already used up

> >

> > Right fix is that  mesa should be patched to remove all the

> > initial-exec hacks and use real TLS, and -mtls-dialect=gnu2 (TLSDESC)

> > should be used on archs it's supported on (i386, x86_64, and aarch64)

> > to make up for the lost performance, but mesa hardcodes the initial-exec,

> > so there must be a reason that probably is better known to mesa devs.

> >

> > but we 'fixed' it for musl by adding --disable-glx-tls for mesa in OE,

> > which uses pthread_getspecific instead and makes is lot slower.

> >

> > this caused additional problems with security flags on, it get textrels

> > in .text segment. Therefore this is 'second fix' to get us through this

> > warning.

> >

> > Cause is some unknown part of mesa's x86 assembly code is broken by

> > readonly text segments

> >

> > [ YOCTO #12918 ]

> >

> > Signed-off-by: Khem Raj <raj.khem@gmail.com>

> > ---

> > V3: Disable asm just on x86, since it works well elsewhere

> >

> >  meta/recipes-graphics/mesa/mesa.inc | 2 ++

> >  1 file changed, 2 insertions(+)

> >

> > diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc

> > index 8d0e2cb67c..0dfdfbd5b4 100644

> > --- a/meta/recipes-graphics/mesa/mesa.inc

> > +++ b/meta/recipes-graphics/mesa/mesa.inc

> > @@ -108,6 +108,8 @@ PACKAGECONFIG[unwind] = "--enable-libunwind,--disable-libunwind,libunwind"

> >

> >  EXTRA_OECONF_remove_libc-musl = "--enable-glx-tls"

> >  EXTRA_OECONF_append_libc-musl = " --disable-glx-tls"

> > +EXTRA_OECONF_append_libc-musl_x86 = " --disable-asm"

> > +

> >  # llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2)

> >  FULL_OPTIMIZATION_append = " -fno-omit-frame-pointer"

> >

> > --

> > 2.19.0

> >

> > --

> > _______________________________________________

> > Openembedded-core mailing list

> > Openembedded-core@lists.openembedded.org

> > http://lists.openembedded.org/mailman/listinfo/openembedded-core

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
diff mbox series

Patch

diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index 8d0e2cb67c..0dfdfbd5b4 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -108,6 +108,8 @@  PACKAGECONFIG[unwind] = "--enable-libunwind,--disable-libunwind,libunwind"
 
 EXTRA_OECONF_remove_libc-musl = "--enable-glx-tls"
 EXTRA_OECONF_append_libc-musl = " --disable-glx-tls"
+EXTRA_OECONF_append_libc-musl_x86 = " --disable-asm"
+
 # llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2)
 FULL_OPTIMIZATION_append = " -fno-omit-frame-pointer"