diff mbox series

[v2,1/1] package/mono: force internal libatomic-ops for some arm variants

Message ID 20210819213131.1212610-1-illia.bitkov@mind.be
State Rejected, archived
Headers show
Series [v2,1/1] package/mono: force internal libatomic-ops for some arm variants | expand

Commit Message

Illia Bitkov Aug. 19, 2021, 9:31 p.m. UTC
Error:
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_steal_mark_stack':
gc.c:(.text+0x2020): undefined reference to `AO_store_full_emulation'
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_mark_from':
gc.c:(.text+0x51c0): undefined reference to `AO_store_full_emulation'
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: gc.c:(.text+0x54dc): undefined reference to `AO_store_full_emulation'
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: gc.c:(.text+0x5584): undefined reference to `AO_store_full_emulation'
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_mark_and_push':
gc.c:(.text+0x574c): undefined reference to `AO_store_full_emulation'
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o):gc.c:(.text+0x5f0c): more undefined references to `AO_store_full_emulation' follow
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_mark_local':
gc.c:(.text+0xfae4): undefined reference to `AO_fetch_compare_and_swap_emulation'
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_finalize':
gc.c:(.text+0x10990): undefined reference to `AO_store_full_emulation'
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: gc.c:(.text+0x10ae8): undefined reference to `AO_store_full_emulation'
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_malloc_kind':
gc.c:(.text+0x1682c): undefined reference to `AO_store_full_emulation'
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: gc.c:(.text+0x16880): undefined reference to `AO_store_full_emulation'
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_make_descriptor':
gc.c:(.text+0x16e04): undefined reference to `AO_store_full_emulation'
/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o):gc.c:(.text+0x177bc): more undefined references to `AO_store_full_emulation' follow
collect2: error: ld returned 1 exit status

Fixes:
http://autobuild.buildroot.net/results/18b017dd5b9c1d8d6c91303ea4f1fdd3e1b086e0/
http://autobuild.buildroot.net/results/1d262e9ad5bf8bf437bc3f2a709d84acf854d298/
Signed-off-by: Illia Bitkov <illia.bitkov@mind.be>
---
 package/mono/Config.in |  2 +-
 package/mono/mono.mk   | 10 ++++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

Comments

Thomas Petazzoni Aug. 19, 2021, 9:50 p.m. UTC | #1
On Thu, 19 Aug 2021 23:31:31 +0200
Illia Bitkov <illia.bitkov@mind.be> wrote:

> Error:
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_steal_mark_stack':
> gc.c:(.text+0x2020): undefined reference to `AO_store_full_emulation'
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_mark_from':
> gc.c:(.text+0x51c0): undefined reference to `AO_store_full_emulation'
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: gc.c:(.text+0x54dc): undefined reference to `AO_store_full_emulation'
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: gc.c:(.text+0x5584): undefined reference to `AO_store_full_emulation'
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_mark_and_push':
> gc.c:(.text+0x574c): undefined reference to `AO_store_full_emulation'
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o):gc.c:(.text+0x5f0c): more undefined references to `AO_store_full_emulation' follow
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_mark_local':
> gc.c:(.text+0xfae4): undefined reference to `AO_fetch_compare_and_swap_emulation'
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_finalize':
> gc.c:(.text+0x10990): undefined reference to `AO_store_full_emulation'
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: gc.c:(.text+0x10ae8): undefined reference to `AO_store_full_emulation'
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_malloc_kind':
> gc.c:(.text+0x1682c): undefined reference to `AO_store_full_emulation'
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: gc.c:(.text+0x16880): undefined reference to `AO_store_full_emulation'
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_make_descriptor':
> gc.c:(.text+0x16e04): undefined reference to `AO_store_full_emulation'
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: ../../external/bdwgc/.libs/libgc.a(gc.o):gc.c:(.text+0x177bc): more undefined references to `AO_store_full_emulation' follow
> collect2: error: ld returned 1 exit status
> 
> Fixes:
> http://autobuild.buildroot.net/results/18b017dd5b9c1d8d6c91303ea4f1fdd3e1b086e0/
> http://autobuild.buildroot.net/results/1d262e9ad5bf8bf437bc3f2a709d84acf854d298/
> Signed-off-by: Illia Bitkov <illia.bitkov@mind.be>

Thanks, but I don't really see where are the additional explanations.
Is libatomic_ops broken for those platforms? If so, why does it affect
only Mono and not other packages using libatomic_ops?

Thanks,

Thomas
Illia Bitkov Aug. 23, 2021, 12:36 p.m. UTC | #2
Hello,

On Thu, Aug 19, 2021 at 11:50 PM Thomas Petazzoni <
thomas.petazzoni@bootlin.com> wrote:

> On Thu, 19 Aug 2021 23:31:31 +0200
> Illia Bitkov <illia.bitkov@mind.be> wrote:
>
> > Error:
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_steal_mark_stack':
> > gc.c:(.text+0x2020): undefined reference to `AO_store_full_emulation'
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_mark_from':
> > gc.c:(.text+0x51c0): undefined reference to `AO_store_full_emulation'
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> gc.c:(.text+0x54dc): undefined reference to `AO_store_full_emulation'
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> gc.c:(.text+0x5584): undefined reference to `AO_store_full_emulation'
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_mark_and_push':
> > gc.c:(.text+0x574c): undefined reference to `AO_store_full_emulation'
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> ../../external/bdwgc/.libs/libgc.a(gc.o):gc.c:(.text+0x5f0c): more
> undefined references to `AO_store_full_emulation' follow
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_mark_local':
> > gc.c:(.text+0xfae4): undefined reference to
> `AO_fetch_compare_and_swap_emulation'
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_finalize':
> > gc.c:(.text+0x10990): undefined reference to `AO_store_full_emulation'
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> gc.c:(.text+0x10ae8): undefined reference to `AO_store_full_emulation'
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_malloc_kind':
> > gc.c:(.text+0x1682c): undefined reference to `AO_store_full_emulation'
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> gc.c:(.text+0x16880): undefined reference to `AO_store_full_emulation'
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> ../../external/bdwgc/.libs/libgc.a(gc.o): in function `GC_make_descriptor':
> > gc.c:(.text+0x16e04): undefined reference to `AO_store_full_emulation'
> >
> /home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/9.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld:
> ../../external/bdwgc/.libs/libgc.a(gc.o):gc.c:(.text+0x177bc): more
> undefined references to `AO_store_full_emulation' follow
> > collect2: error: ld returned 1 exit status
> >
> > Fixes:
> >
> http://autobuild.buildroot.net/results/18b017dd5b9c1d8d6c91303ea4f1fdd3e1b086e0/
> >
> http://autobuild.buildroot.net/results/1d262e9ad5bf8bf437bc3f2a709d84acf854d298/
> > Signed-off-by: Illia Bitkov <illia.bitkov@mind.be>
>
> Thanks, but I don't really see where are the additional explanations.
> Is libatomic_ops broken for those platforms? If so, why does it affect
> only Mono and not other packages using libatomic_ops?
>
>
Problem is not with mono but rather with the internal version of bdwgc
which doesn't link with external libatomic.
I will close this patch and create a new one which fixes the linkage
problem.


> Thanks,
>
> Thomas
> --
> Thomas Petazzoni, co-owner and CEO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
>

Thanks
diff mbox series

Patch

diff --git a/package/mono/Config.in b/package/mono/Config.in
index 44b8cf8581..3f26bd4092 100644
--- a/package/mono/Config.in
+++ b/package/mono/Config.in
@@ -16,7 +16,7 @@  config BR2_PACKAGE_MONO
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on !BR2_STATIC_LIBS
-	select BR2_PACKAGE_LIBATOMIC_OPS
+	select BR2_PACKAGE_LIBATOMIC_OPS if !BR2_xscale && !BR2_arm926t
 	help
 	  An open source, cross-platform, implementation of C#
 	  and the CLR that is binary compatible with Microsoft.NET.
diff --git a/package/mono/mono.mk b/package/mono/mono.mk
index 27f7886224..b1ee184c8a 100644
--- a/package/mono/mono.mk
+++ b/package/mono/mono.mk
@@ -43,8 +43,14 @@  endif
 
 MONO_DEPENDENCIES += \
 	host-mono \
-	$(if $(BR2_PACKAGE_LIBUNWIND),libunwind) \
-	libatomic_ops
+	$(if $(BR2_PACKAGE_LIBUNWIND),libunwind)
+
+ifeq ($(BR2_xscale)$(BR2_arm926t),y)
+#force use of internal libatomic-ops
+MONO_CONF_OPTS += --with-libatomic-ops=no
+else
+MONO_DEPENDENCIES += libatomic_ops
+endif
 
 ## Mono managed