Skip to contentSkip to conversation

mesa: Disable asm on musl

PATCH In review Khem Raj 3 participants 4 messages Oct 3, 2018

lore
Share & tools
lore

Khem Raj

author
#0 lore raw

PATCH v3 1/1 mesa: Disable asm on musl

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 ]

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

 meta/recipes-graphics/mesa/mesa.inc | 2 ++
 1 file changed, 2 insertions(+)
meta/recipes-graphics/mesa/mesa.inc +2 -0
index 8d0e2cb67c..0dfdfbd5b4 100644
@@ -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"
 
Signature · 1 line
2.19.0
#1 lore raw
Quoted 22 lines · NZDT Khem Raj

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.

Quoted 6 lines

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

Signature · 2 lines
Paul Eggleton
Intel Open Source Technology Centre
#2 lore raw
In reply to Khem Raj

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

Ross

Quoted 60 lines · Khem Raj

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 ]

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

 meta/recipes-graphics/mesa/mesa.inc | 2 ++
 1 file changed, 2 insertions(+)
meta/recipes-graphics/mesa/mesa.inc +2 -1
index 8d0e2cb67c..0dfdfbd5b4 100644
@@ -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
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

author
#3 lore raw
Quoted 3 lines · Ross

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

Quoted 63 lines

Ross

Quoted 60 lines · Khem Raj

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 ]

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

 meta/recipes-graphics/mesa/mesa.inc | 2 ++
 1 file changed, 2 insertions(+)
meta/recipes-graphics/mesa/mesa.inc +2 -1
index 8d0e2cb67c..0dfdfbd5b4 100644
@@ -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
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core