Skip to contentSkip to conversation

package/mono: fix undefined reference to tls

PATCH New Angelo Compagnucci 2 participants 4 messages Sep 8, 2016 – Sep 9, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 package/mono: fix undefined reference to tls

This commit fixes the nasty undefined reference to tls bug experienced with musl.

Fixes:
http://autobuild.buildroot.net/results/048f04488cb8c7f4c32b828aa5214ebc22ba0153

---
 package/mono/mono.mk | 4 ++++
 1 file changed, 4 insertions(+)
package/mono/mono.mk +4 -0
index 3d0b9bc..de4f16b 100644
@@ -26,6 +26,10 @@ MONO_CONF_OPTS = --disable-gtk-doc \
 	--disable-mcs-build \
 	--enable-static
 
+ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
+MONO_CONF_OPTS += --with-tls=pthread
+endif
+
 # The libraries have been built by the host-mono build. Since they are
 # architecture-independent, we simply copy them to the target.
 define MONO_INSTALL_LIBS
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/1 package/mono: fix undefined reference to tls

Hello,

Thanks for investigating this issue!

Quoted 14 lines · Angelo Compagnucci

This commit fixes the nasty undefined reference to tls bug experienced with musl.

Fixes:
http://autobuild.buildroot.net/results/048f04488cb8c7f4c32b828aa5214ebc22ba0153

---
 package/mono/mono.mk | 4 ++++
 1 file changed, 4 insertions(+)
package/mono/mono.mk +0 -0
index 3d0b9bc..de4f16b 100644

package/mono/mono.mk MONO_CONF_OPTS = --disable-gtk-doc \ · line 31

Quoted 6 lines
package/mono/mono.mk +3 -0
@@ -26,6 +26,10 @@ MONO_CONF_OPTS = --disable-gtk-doc \
 	--disable-mcs-build \
 	--enable-static
 
+ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
+MONO_CONF_OPTS += --with-tls=pthread
+endif

Hum, that's interesting. Do you have more details about what this --with-tls option is doing?

Is --with-tls related to Thread Local Storage provided by the compiler ?

Indeed, TLS support in gcc was disabled for musl toolchains until recently (i.e until commit
https://git.buildroot.org/buildroot/commit/package/gcc?id=1bd02bc230e1b3b22ca3eb23fb3dcb91b878283a).

Since the toolchain that was causing the build failure was built *prior* to this commit, maybe this commit fixes the issue, as it would make musl toolchains have TLS support enabled in gcc.

Could you test this using the internal toolchain backend, and see if without your fix the problem isn't already fixed? If that's the case, I'll simply rebuild the pre-built toolchains.

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#2 lore raw

PATCH 1/1 package/mono: fix undefined reference to tls

Hello Thomas,

2016-09-08 13:42 GMT+02:00 Thomas Petazzoni <
[email protected]>:

Quoted 24 lines

Hello,

Thanks for investigating this issue!

Quoted 1 line · Angelo Compagnucci

This commit fixes the nasty undefined reference to tls bug experienced

with musl.

Quoted 3 lines

Fixes:
http://autobuild.buildroot.net/results/048f04488cb8c7f4c32b828aa5214e

bc22ba0153

Quoted 13 lines
---
 package/mono/mono.mk | 4 ++++
 1 file changed, 4 insertions(+)
package/mono/mono.mk +0 -0
index 3d0b9bc..de4f16b 100644
@@ -26,6 +26,10 @@ MONO_CONF_OPTS = --disable-gtk-doc \
      --disable-mcs-build \
      --enable-static
 
Quoted 7 lines

package/mono/mono.mk MONO_CONF_OPTS = --disable-gtk-doc \ · line 31

Quoted 3 lines
package/mono/mono.mk +3 -0
+ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
+MONO_CONF_OPTS += --with-tls=pthread
+endif

Hum, that's interesting. Do you have more details about what this --with-tls option is doing?

Actually, it sets another variable (HAVE_KW_THREAD) that it's used around the code to accommodate the use of __thread or phtread as local storage.

Quoted 2 lines

Is --with-tls related to Thread Local Storage provided by the compiler ?

Yes, absolutely!

Quoted 6 lines

Indeed, TLS support in gcc was disabled for musl toolchains until recently (i.e until commit
https://git.buildroot.org/buildroot/commit/package/gcc?id=
1bd02bc230e1b3b22ca3eb23fb3dcb91b878283a).

Quoted 8 lines

Since the toolchain that was causing the build failure was built *prior* to this commit, maybe this commit fixes the issue, as it would make musl toolchains have TLS support enabled in gcc.

Could you test this using the internal toolchain backend, and see if without your fix the problem isn't already fixed? If that's the case, I'll simply rebuild the pre-built toolchains.

I tested both the pre-compiled musl external toolchain and a musl internal toolchain I compiled and I can confirm that it's working without this patch. So, probably simply rebuilding the autobuild toolchain should solve the problem.

Sincerely, Angelo

Quoted 9 lines

Thanks,

Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

Signature · 4 lines
Profile: http://it.linkedin.com/in/compagnucciangelo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20160909/716811ea/attachment.html>
#3 lore raw

PATCH 1/1 package/mono: fix undefined reference to tls

Hello,

Quoted 4 lines · Angelo Compagnucci

I tested both the pre-compiled musl external toolchain and a musl internal toolchain I compiled and I can confirm that it's working without this patch. So, probably simply rebuilding the autobuild toolchain should solve the problem.

Excellent, thanks! I'll kick a rebuild of the different Buildroot toolchains soon, especially since we have move to a newer binutils version, and have more recent version of gcc available as well.

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com