initial buildroot for linux 5.15
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
From a0ae2ba37ca479c6edddec8634b25686be965e0d Mon Sep 17 00:00:00 2001
|
||||
From: Peter Korsgaard <peter@korsgaard.com>
|
||||
Date: Mon, 27 Aug 2018 22:50:57 +0200
|
||||
Subject: [PATCH] bn_mul.h: fix x86 PIC inline ASM compilation with GCC < 5
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Fixes #1910
|
||||
|
||||
With ebx added to the MULADDC_STOP clobber list to fix #1550, the inline
|
||||
assembly fails to build with GCC < 5 in PIC mode with the following error:
|
||||
|
||||
include/mbedtls/bn_mul.h:46:13: error: PIC register clobbered by ‘ebx’ in ‘asm’
|
||||
|
||||
This is because older GCC versions treated the x86 ebx register (which is
|
||||
used for the GOT) as a fixed reserved register when building as PIC.
|
||||
|
||||
This is fixed by an improved register allocator in GCC 5+. From the release
|
||||
notes:
|
||||
|
||||
Register allocation improvements: Reuse of the PIC hard register, instead of
|
||||
using a fixed register, was implemented on x86/x86-64 targets. This
|
||||
improves generated PIC code performance as more hard registers can be used.
|
||||
|
||||
https://www.gnu.org/software/gcc/gcc-5/changes.html
|
||||
|
||||
As a workaround, detect this situation and disable the inline assembly,
|
||||
similar to the MULADDC_CANNOT_USE_R7 logic.
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
Upstream: https://github.com/ARMmbed/mbedtls/pull/1986
|
||||
---
|
||||
include/mbedtls/bn_mul.h | 18 +++++++++++++++++-
|
||||
1 file changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/mbedtls/bn_mul.h b/include/mbedtls/bn_mul.h
|
||||
index b587317d9..74a2d29be 100644
|
||||
--- a/include/mbedtls/bn_mul.h
|
||||
+++ b/include/mbedtls/bn_mul.h
|
||||
@@ -50,13 +50,29 @@
|
||||
#if defined(__GNUC__) && \
|
||||
( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 )
|
||||
|
||||
+/*
|
||||
+ * GCC < 5.0 treated the x86 ebx (which is used for the GOT) as a
|
||||
+ * fixed reserved register when building as PIC, leading to errors
|
||||
+ * like: bn_mul.h:46:13: error: PIC register clobbered by ‘ebx’ in ‘asm’
|
||||
+ *
|
||||
+ * This is fixed by an improved register allocator in GCC 5+. From the
|
||||
+ * release notes:
|
||||
+ * Register allocation improvements: Reuse of the PIC hard register,
|
||||
+ * instead of using a fixed register, was implemented on x86/x86-64
|
||||
+ * targets. This improves generated PIC code performance as more hard
|
||||
+ * registers can be used.
|
||||
+ */
|
||||
+#if defined(__GNUC__) && __GNUC__ < 5 && defined(__PIC__)
|
||||
+#define MULADDC_CANNOT_USE_EBX
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* Disable use of the i386 assembly code below if option -O0, to disable all
|
||||
* compiler optimisations, is passed, detected with __OPTIMIZE__
|
||||
* This is done as the number of registers used in the assembly code doesn't
|
||||
* work with the -O0 option.
|
||||
*/
|
||||
-#if defined(__i386__) && defined(__OPTIMIZE__)
|
||||
+#if defined(__i386__) && defined(__OPTIMIZE__) && !defined(MULADDC_CANNOT_USE_EBX)
|
||||
|
||||
#define MULADDC_INIT \
|
||||
asm( \
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
config BR2_PACKAGE_MBEDTLS
|
||||
bool "mbedtls"
|
||||
help
|
||||
mbed TLS (formerly known as PolarSSL) makes it trivially easy
|
||||
for developers to include cryptographic and SSL/TLS
|
||||
capabilities in their (embedded) products, facilitating this
|
||||
functionality with a minimal coding footprint.
|
||||
|
||||
https://tls.mbed.org/
|
||||
|
||||
if BR2_PACKAGE_MBEDTLS
|
||||
|
||||
config BR2_PACKAGE_MBEDTLS_PROGRAMS
|
||||
bool "mbedtls programs"
|
||||
depends on BR2_USE_MMU # fork()
|
||||
help
|
||||
This option enables the installation and the build of
|
||||
mbed TLS companion programs.
|
||||
|
||||
config BR2_PACKAGE_MBEDTLS_COMPRESSION
|
||||
bool "enable compression support"
|
||||
select BR2_PACKAGE_ZLIB
|
||||
help
|
||||
Enable support for compression of the content data before it
|
||||
enters the secure channel as described in RFC 3749.
|
||||
|
||||
Warning: TLS compression may make you vulnerable to the
|
||||
CRIME attack. You should not enable it unless you know for
|
||||
sure CRIME and similar attacks are not applicable to your
|
||||
particular situation.
|
||||
|
||||
endif
|
||||
@@ -0,0 +1,4 @@
|
||||
# From https://github.com/ARMmbed/mbedtls/releases/tag/v2.16.11:
|
||||
sha256 c18e7e9abf95e69e425260493720470021384a1728417042060a35d0b7b18b41 mbedtls-2.16.11.tar.gz
|
||||
# Locally calculated
|
||||
sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache-2.0.txt
|
||||
@@ -0,0 +1,73 @@
|
||||
################################################################################
|
||||
#
|
||||
# mbedtls
|
||||
#
|
||||
################################################################################
|
||||
|
||||
MBEDTLS_VERSION = 2.16.11
|
||||
MBEDTLS_SITE = $(call github,ARMmbed,mbedtls,v$(MBEDTLS_VERSION))
|
||||
MBEDTLS_CONF_OPTS = \
|
||||
-DENABLE_PROGRAMS=$(if $(BR2_PACKAGE_MBEDTLS_PROGRAMS),ON,OFF) \
|
||||
-DENABLE_TESTING=OFF
|
||||
MBEDTLS_INSTALL_STAGING = YES
|
||||
MBEDTLS_LICENSE = Apache-2.0
|
||||
MBEDTLS_LICENSE_FILES = apache-2.0.txt
|
||||
MBEDTLS_CPE_ID_VENDOR = arm
|
||||
MBEDTLS_CPE_ID_PRODUCT = mbed_tls
|
||||
|
||||
# This is mandatory for hiawatha
|
||||
ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
|
||||
define MBEDTLS_ENABLE_THREADING
|
||||
$(SED) "s://#define MBEDTLS_THREADING_C:#define MBEDTLS_THREADING_C:" \
|
||||
$(@D)/include/mbedtls/config.h
|
||||
$(SED) "s://#define MBEDTLS_THREADING_PTHREAD:#define MBEDTLS_THREADING_PTHREAD:" \
|
||||
$(@D)/include/mbedtls/config.h
|
||||
endef
|
||||
MBEDTLS_POST_PATCH_HOOKS += MBEDTLS_ENABLE_THREADING
|
||||
ifeq ($(BR2_STATIC_LIBS),y)
|
||||
MBEDTLS_CONF_OPTS += -DLINK_WITH_PTHREAD=ON
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_STATIC_LIBS),y)
|
||||
MBEDTLS_CONF_OPTS += \
|
||||
-DUSE_SHARED_MBEDTLS_LIBRARY=OFF -DUSE_STATIC_MBEDTLS_LIBRARY=ON
|
||||
else ifeq ($(BR2_SHARED_STATIC_LIBS),y)
|
||||
MBEDTLS_CONF_OPTS += \
|
||||
-DUSE_SHARED_MBEDTLS_LIBRARY=ON -DUSE_STATIC_MBEDTLS_LIBRARY=ON
|
||||
else ifeq ($(BR2_SHARED_LIBS),y)
|
||||
MBEDTLS_CONF_OPTS += \
|
||||
-DUSE_SHARED_MBEDTLS_LIBRARY=ON -DUSE_STATIC_MBEDTLS_LIBRARY=OFF
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_MBEDTLS_COMPRESSION),y)
|
||||
MBEDTLS_CONF_OPTS += -DENABLE_ZLIB_SUPPORT=ON
|
||||
MBEDTLS_DEPENDENCIES += zlib
|
||||
define MBEDTLS_ENABLE_ZLIB
|
||||
$(SED) "s://#define MBEDTLS_ZLIB_SUPPORT:#define MBEDTLS_ZLIB_SUPPORT:" \
|
||||
$(@D)/include/mbedtls/config.h
|
||||
endef
|
||||
MBEDTLS_POST_PATCH_HOOKS += MBEDTLS_ENABLE_ZLIB
|
||||
else
|
||||
MBEDTLS_CONF_OPTS += -DENABLE_ZLIB_SUPPORT=OFF
|
||||
endif
|
||||
|
||||
define MBEDTLS_DISABLE_ASM
|
||||
$(SED) '/^#define MBEDTLS_AESNI_C/d' \
|
||||
$(@D)/include/mbedtls/config.h
|
||||
$(SED) '/^#define MBEDTLS_HAVE_ASM/d' \
|
||||
$(@D)/include/mbedtls/config.h
|
||||
$(SED) '/^#define MBEDTLS_PADLOCK_C/d' \
|
||||
$(@D)/include/mbedtls/config.h
|
||||
endef
|
||||
|
||||
# ARM in thumb mode breaks debugging with asm optimizations
|
||||
# Microblaze asm optimizations are broken in general
|
||||
# MIPS R6 asm is not yet supported
|
||||
ifeq ($(BR2_ENABLE_DEBUG)$(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_ARM_INSTRUCTIONS_THUMB2),yy)
|
||||
MBEDTLS_POST_CONFIGURE_HOOKS += MBEDTLS_DISABLE_ASM
|
||||
else ifeq ($(BR2_microblaze)$(BR2_MIPS_CPU_MIPS32R6)$(BR2_MIPS_CPU_MIPS64R6),y)
|
||||
MBEDTLS_POST_CONFIGURE_HOOKS += MBEDTLS_DISABLE_ASM
|
||||
endif
|
||||
|
||||
$(eval $(cmake-package))
|
||||
Reference in New Issue
Block a user