All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH 1/1] package/libopenssl: fix performance issue in static build
Date: Sun, 25 Apr 2021 15:38:45 +0200	[thread overview]
Message-ID: <20210425133845.2459496-1-fontaine.fabrice@gmail.com> (raw)

Revert commit 8c2c959b028d44f5518d4445f864aedae3d90406 as no-dso has
been added back to openssl since version 1.1.1e and
https://github.com/openssl/openssl/commit/8dcd57461972dceaaf014b71d173d0a8758e7054
and because gcc no-asm has performance issue

Fixes:
 - https://bugs.buildroot.org/show_bug.cgi?id=13751

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
 package/libopenssl/Config.in     |  4 ----
 package/libopenssl/libopenssl.mk | 25 ++++++++++++++++++++-----
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/package/libopenssl/Config.in b/package/libopenssl/Config.in
index 8909e36b9e..723fd282a4 100644
--- a/package/libopenssl/Config.in
+++ b/package/libopenssl/Config.in
@@ -14,10 +14,6 @@ config BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH_LINUX_PPC
 
 config BR2_PACKAGE_LIBOPENSSL_TARGET_ARCH
 	string
-	# Use "gcc" minimalistic target to disable DSO
-	# no-asm is needed with generic architectures such as gcc, see
-	# https://github.com/openssl/openssl/issues/9839
-	default "gcc no-asm"			if BR2_STATIC_LIBS
 	# Doesn't work for thumb-only (Cortex-M?)
 	default "linux-armv4"			if BR2_ARM_CPU_HAS_ARM
 	default "linux-aarch64"			if BR2_aarch64
diff --git a/package/libopenssl/libopenssl.mk b/package/libopenssl/libopenssl.mk
index a10b64c8fd..487fe554c1 100644
--- a/package/libopenssl/libopenssl.mk
+++ b/package/libopenssl/libopenssl.mk
@@ -25,10 +25,6 @@ LIBOPENSSL_CFLAGS += -mxgot
 LIBOPENSSL_CFLAGS += -DOPENSSL_SMALL_FOOTPRINT
 endif
 
-ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
-LIBOPENSSL_CFLAGS += -DOPENSSL_THREADS
-endif
-
 ifeq ($(BR2_USE_MMU),)
 LIBOPENSSL_CFLAGS += -DHAVE_FORK=0 -DOPENSSL_NO_MADVISE
 endif
@@ -79,7 +75,7 @@ define LIBOPENSSL_CONFIGURE_CMDS
 			--prefix=/usr \
 			--openssldir=/etc/ssl \
 			$(if $(BR2_TOOLCHAIN_HAS_LIBATOMIC),-latomic) \
-			$(if $(BR2_TOOLCHAIN_HAS_THREADS),-lpthread threads, no-threads) \
+			$(if $(BR2_TOOLCHAIN_HAS_THREADS),threads,no-threads) \
 			$(if $(BR2_STATIC_LIBS),no-shared,shared) \
 			$(if $(BR2_PACKAGE_HAS_CRYPTODEV),enable-devcryptoeng) \
 			no-rc5 \
@@ -89,12 +85,21 @@ define LIBOPENSSL_CONFIGURE_CMDS
 			no-fuzz-libfuzzer \
 			no-fuzz-afl \
 			$(if $(BR2_STATIC_LIBS),zlib,zlib-dynamic) \
+			$(if $(BR2_STATIC_LIBS),no-dso) \
 	)
 	$(SED) "s#-march=[-a-z0-9] ##" -e "s#-mcpu=[-a-z0-9] ##g" $(@D)/Makefile
 	$(SED) "s#-O[0-9sg]#$(LIBOPENSSL_CFLAGS)#" $(@D)/Makefile
 	$(SED) "s# build_tests##" $(@D)/Makefile
 endef
 
+# libdl is not available in a static build, and this is not implied by no-dso
+ifeq ($(BR2_STATIC_LIBS),y)
+define LIBOPENSSL_FIXUP_STATIC_MAKEFILE
+	$(SED) 's#-ldl##g' $(@D)/Makefile
+endef
+LIBOPENSSL_POST_CONFIGURE_HOOKS += LIBOPENSSL_FIXUP_STATIC_MAKEFILE
+endif
+
 define HOST_LIBOPENSSL_BUILD_CMDS
 	$(HOST_MAKE_ENV) $(MAKE) -C $(@D)
 endef
@@ -117,6 +122,16 @@ define LIBOPENSSL_INSTALL_TARGET_CMDS
 	rm -f $(TARGET_DIR)/usr/bin/c_rehash
 endef
 
+# libdl has no business in a static build
+ifeq ($(BR2_STATIC_LIBS),y)
+define LIBOPENSSL_FIXUP_STATIC_PKGCONFIG
+	$(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/libcrypto.pc
+	$(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/libssl.pc
+	$(SED) 's#-ldl##' $(STAGING_DIR)/usr/lib/pkgconfig/openssl.pc
+endef
+LIBOPENSSL_POST_INSTALL_STAGING_HOOKS += LIBOPENSSL_FIXUP_STATIC_PKGCONFIG
+endif
+
 ifeq ($(BR2_PACKAGE_PERL),)
 define LIBOPENSSL_REMOVE_PERL_SCRIPTS
 	$(RM) -f $(TARGET_DIR)/etc/ssl/misc/{CA.pl,tsget}
-- 
2.30.2

             reply	other threads:[~2021-04-25 13:38 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-25 13:38 Fabrice Fontaine [this message]
2021-05-04 19:23 ` [Buildroot] [PATCH 1/1] package/libopenssl: fix performance issue in static build Yann E. MORIN
2021-05-07  8:39 ` Peter Korsgaard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210425133845.2459496-1-fontaine.fabrice@gmail.com \
    --to=fontaine.fabrice@gmail.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.