package/mono: fix external libatomic_ops linkage
Added patch fixes linkage of libgc with external libtomic-ops. Mono uses bundeled bdwgc which doesn't link external libatomic-ops. Patch is a fix cherry-picked from bdwgc upstream. Problem found on ARMv5 processors, on newer ARM processors it uses header based functions and doesn't need built library. 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' Fixes: http://autobuild.buildroot.net/results/ebc54e5dea63aca21a4072d294fdede41de559c7 http://autobuild.buildroot.net/results/6d10a4bd43fbc9c1d3fa26d5eef394c8023cb85f Signed-off-by: Illia Bitkov <illia.bitkov@mind.be> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
This commit is contained in:
parent
279167ee8d
commit
7b5a13eb3d
@ -0,0 +1,52 @@
|
|||||||
|
From 02a44ee1df8176c72e75fd706d1a8f063d3196d5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||||
|
Date: Mon, 5 Nov 2018 22:50:40 +0100
|
||||||
|
Subject: Fix linkage with a system libatomic_ops shared library
|
||||||
|
|
||||||
|
Issue #247 (bdwgc).
|
||||||
|
|
||||||
|
When bdwgc is linked with the external libatomic_ops, bdw-gc.pc must
|
||||||
|
contain the needed dynamic libraries (such as -latomic_ops) otherwise
|
||||||
|
build of applications could fail on the link stage on some hosts:
|
||||||
|
* libgc.so: undefined reference to 'AO_fetch_compare_and_swap_emulation'
|
||||||
|
* libgc.so: undefined reference to 'AO_store_full_emulation'
|
||||||
|
|
||||||
|
So, this commit sets ATOMIC_OPS_LIBS to "-latomic_ops" when a system
|
||||||
|
atomic_ops library is used and uses ATOMIC_OPS_LIBS in bdw-gc.pc.in.
|
||||||
|
|
||||||
|
* bdw-gc.pc.in (Libs): Add @ATOMIC_OPS_LIBS@.
|
||||||
|
* configure.ac [$with_libatomic_ops!=no && $with_libatomic_ops!=none
|
||||||
|
&& $THREADS!=none] (ATOMIC_OPS_LIBS): Set to -latomic_ops; do AC_SUBST.
|
||||||
|
|
||||||
|
Fix is cherry-picked from bdwgc upstream
|
||||||
|
|
||||||
|
Link to original commit https://github.com/ivmai/bdwgc/commit/02a44ee1df8176c72e75fd706d1a8f063d3196d5?branch=02a44ee1df8176c72e75fd706d1a8f063d3196d5&diff=unified
|
||||||
|
|
||||||
|
Signed-off-by: Illia Bitkov <illia.bitkov@mind.be>
|
||||||
|
|
||||||
|
diff --git a/external/bdwgc/bdw-gc.pc.in b/external/bdwgc/bdw-gc.pc.in
|
||||||
|
index ef4c2341..a32e7598 100644
|
||||||
|
--- a/external/bdwgc/bdw-gc.pc.in
|
||||||
|
+++ b/external/bdwgc/bdw-gc.pc.in
|
||||||
|
@@ -6,5 +6,5 @@ includedir=@includedir@
|
||||||
|
Name: Boehm-Demers-Weiser Conservative Garbage Collector
|
||||||
|
Description: A garbage collector for C and C++
|
||||||
|
Version: @PACKAGE_VERSION@
|
||||||
|
-Libs: -L${libdir} -lgc
|
||||||
|
+Libs: -L${libdir} @ATOMIC_OPS_LIBS@ -lgc
|
||||||
|
Cflags: -I${includedir}
|
||||||
|
diff --git a/external/bdwgc/configure.ac b/external/bdwgc/configure.ac
|
||||||
|
index 21abe8fa..9ffe81de 100644
|
||||||
|
--- a/external/bdwgc/configure.ac
|
||||||
|
+++ b/external/bdwgc/configure.ac
|
||||||
|
@@ -1081,7 +1081,9 @@ AS_IF([test x"$with_libatomic_ops" = xno \
|
||||||
|
AC_MSG_CHECKING([which libatomic_ops to use])
|
||||||
|
AS_IF([test x"$with_libatomic_ops" != xno],
|
||||||
|
[ AS_IF([test x"$with_libatomic_ops" != xnone -a x"$THREADS" != xnone],
|
||||||
|
- [ AC_MSG_RESULT([external]) ],
|
||||||
|
+ [ AC_MSG_RESULT([external])
|
||||||
|
+ ATOMIC_OPS_LIBS="-latomic_ops"
|
||||||
|
+ AC_SUBST([ATOMIC_OPS_LIBS]) ],
|
||||||
|
[ AC_MSG_RESULT([none])
|
||||||
|
AS_IF([test x"$THREADS" != xnone],
|
||||||
|
[ AC_DEFINE([GC_BUILTIN_ATOMIC], [1],
|
Loading…
Reference in New Issue
Block a user