Message ID | 20211207155910.15552-1-abrodkin@synopsys.com |
---|---|
State | New |
Headers | show |
Series | openssl: Use linux-latomic target for ARC | expand |
Hello, Please disregard this patch, as it was meant for OE-core, where it is now posted, see https://lists.openembedded.org/g/openembedded-core/message/159312 -Alexey > From: Alexey Brodkin <abrodkin@synopsys.com> > Sent: Tuesday, December 7, 2021 6:59 PM > To: openembedded-devel@lists.openembedded.org <openembedded-devel@lists.openembedded.org> > Cc: linux-snps-arc@lists.infradead.org <linux-snps-arc@lists.infradead.org>; Alexey Brodkin <abrodkin@synopsys.com> > Subject: [PATCH] openssl: Use linux-latomic target for ARC > > Some atomic ops for 32-bit ARC processors are implemented in GCC's libatomic. > For example those dealing with 64-bit data (e.g. __atomic_load_8()) as well as > some others. That said it's required to add "-latomic" for successful linkage. > > Otherwise error messages like this happen on OpenSSL building for ARC: > ------------------------------->8------------------------------ > | ...ld: libcrypto.a(libcrypto-lib-threads_pthread.o): in function `CRYPTO_atomic_or': > | .../openssl-3.0.0/crypto/threads_pthread.c:219: undefined reference to `__atomic_is_lock_free' > | ...ld: .../openssl-3.0.0/crypto/threads_pthread.c:219: undefined reference to `__atomic_is_lock_free' > | ...ld: .../openssl-3.0.0/crypto/threads_pthread.c:220: undefined reference to `__atomic_fetch_or_8' > ------------------------------->8------------------------------ > > Fix that by using a special target, which does exactly what's needed. > See [1] and [2] for more details on the matter. > > [1] https://github.com/openssl/openssl/commit/cdf2986a70d92668d882eb29737225f1aaafd0f1 > [2] https://github.com/openssl/openssl/pull/15640 > > Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> > --- > meta/recipes-connectivity/openssl/openssl_3.0.0.bb | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/meta/recipes-connectivity/openssl/openssl_3.0.0.bb b/meta/recipes-connectivity/openssl/openssl_3.0.0.bb > index 4b1ae71a85..da73ed6bc3 100644 > --- a/meta/recipes-connectivity/openssl/openssl_3.0.0.bb > +++ b/meta/recipes-connectivity/openssl/openssl_3.0.0.bb > @@ -70,6 +70,9 @@ do_configure () { > esac > target="$os-${HOST_ARCH}" > case $target in > + linux-arc) > + target=linux-latomic > + ;; > linux-arm*) > target=linux-armv4 > ;; > -- > 2.16.2 >
diff --git a/meta/recipes-connectivity/openssl/openssl_3.0.0.bb b/meta/recipes-connectivity/openssl/openssl_3.0.0.bb index 4b1ae71a85..da73ed6bc3 100644 --- a/meta/recipes-connectivity/openssl/openssl_3.0.0.bb +++ b/meta/recipes-connectivity/openssl/openssl_3.0.0.bb @@ -70,6 +70,9 @@ do_configure () { esac target="$os-${HOST_ARCH}" case $target in + linux-arc) + target=linux-latomic + ;; linux-arm*) target=linux-armv4 ;;
Some atomic ops for 32-bit ARC processors are implemented in GCC's libatomic. For example those dealing with 64-bit data (e.g. __atomic_load_8()) as well as some others. That said it's required to add "-latomic" for successful linkage. Otherwise error messages like this happen on OpenSSL building for ARC: ------------------------------->8------------------------------ | ...ld: libcrypto.a(libcrypto-lib-threads_pthread.o): in function `CRYPTO_atomic_or': | .../openssl-3.0.0/crypto/threads_pthread.c:219: undefined reference to `__atomic_is_lock_free' | ...ld: .../openssl-3.0.0/crypto/threads_pthread.c:219: undefined reference to `__atomic_is_lock_free' | ...ld: .../openssl-3.0.0/crypto/threads_pthread.c:220: undefined reference to `__atomic_fetch_or_8' ------------------------------->8------------------------------ Fix that by using a special target, which does exactly what's needed. See [1] and [2] for more details on the matter. [1] https://github.com/openssl/openssl/commit/cdf2986a70d92668d882eb29737225f1aaafd0f1 [2] https://github.com/openssl/openssl/pull/15640 Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> --- meta/recipes-connectivity/openssl/openssl_3.0.0.bb | 3 +++ 1 file changed, 3 insertions(+)