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 |
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
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 --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
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(-)