All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v3 1/1] package/mono: fix external libatomic_ops linkage
@ 2021-09-08 18:08 Illia Bitkov
  2021-09-21 18:59 ` Arnout Vandecappelle
  2021-10-04 13:33 ` Peter Korsgaard
  0 siblings, 2 replies; 3+ messages in thread
From: Illia Bitkov @ 2021-09-08 18:08 UTC (permalink / raw)
  To: buildroot; +Cc: Illia Bitkov, Angelo Compagnucci, Thomas Petazzoni

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>
---
 ...-system-libatomic_ops-shared-library.patch | 52 +++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch

diff --git a/package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch b/package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch
new file mode 100644
index 0000000000..66d4d8e100
--- /dev/null
+++ b/package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch
@@ -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],
-- 
2.25.1

_______________________________________________
buildroot mailing list
buildroot@lists.buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Buildroot] [PATCH v3 1/1] package/mono: fix external libatomic_ops linkage
  2021-09-08 18:08 [Buildroot] [PATCH v3 1/1] package/mono: fix external libatomic_ops linkage Illia Bitkov
@ 2021-09-21 18:59 ` Arnout Vandecappelle
  2021-10-04 13:33 ` Peter Korsgaard
  1 sibling, 0 replies; 3+ messages in thread
From: Arnout Vandecappelle @ 2021-09-21 18:59 UTC (permalink / raw)
  To: Illia Bitkov, buildroot; +Cc: Angelo Compagnucci, Thomas Petazzoni



On 08/09/2021 20:08, Illia Bitkov wrote:
> 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>

  Leave an empty line before the Signed-off-by.

  Applied to master with that fixed, thanks.

  Regards,
  Arnout

> ---
>   ...-system-libatomic_ops-shared-library.patch | 52 +++++++++++++++++++
>   1 file changed, 52 insertions(+)
>   create mode 100644 package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch
> 
> diff --git a/package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch b/package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch
> new file mode 100644
> index 0000000000..66d4d8e100
> --- /dev/null
> +++ b/package/mono/0001-Fix-linkage-with-a-system-libatomic_ops-shared-library.patch
> @@ -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],
> 
_______________________________________________
buildroot mailing list
buildroot@lists.buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Buildroot] [PATCH v3 1/1] package/mono: fix external libatomic_ops linkage
  2021-09-08 18:08 [Buildroot] [PATCH v3 1/1] package/mono: fix external libatomic_ops linkage Illia Bitkov
  2021-09-21 18:59 ` Arnout Vandecappelle
@ 2021-10-04 13:33 ` Peter Korsgaard
  1 sibling, 0 replies; 3+ messages in thread
From: Peter Korsgaard @ 2021-10-04 13:33 UTC (permalink / raw)
  To: Illia Bitkov; +Cc: Angelo Compagnucci, Thomas Petazzoni, buildroot

>>>>> "Illia" == Illia Bitkov <illia.bitkov@mind.be> writes:

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

Committed to 2021.02.x, 2021.05.x and 2021.08.x, thanks.

-- 
Bye, Peter Korsgaard
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-10-04 13:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-08 18:08 [Buildroot] [PATCH v3 1/1] package/mono: fix external libatomic_ops linkage Illia Bitkov
2021-09-21 18:59 ` Arnout Vandecappelle
2021-10-04 13:33 ` Peter Korsgaard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.