Go to file
Peter Korsgaard 992c2399e0 mbedtls: fix x86 PIC build with GCC < 5
Fixes:
http://autobuild.buildroot.net/results/d6d/d6dc9a640aa1f6650a3e7b9397f2fe2ae3433f4d/
http://autobuild.buildroot.net/results/ab5/ab5a58ea7845f9f378454ee1aa7e872448618ba9/

ebx was recently added to the x86 inline asm MULADDC_STOP clobber list to
fix #1550, but this causes the build to fail with GCC < 5 when building in
PIC mode with errors like:

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, add a patch to detect this situation and disable the inline
assembly, similar to the MULADDC_CANNOT_USE_R7 logic.

Patch submitted upstream: https://github.com/ARMmbed/mbedtls/pull/1986

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
(cherry picked from commit 11241ac656)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2018-08-28 10:12:08 +02:00
arch Revert "arch/arm: add cortex-m7 core" 2018-05-20 19:13:29 +02:00
board board/technologic/ts7680: fix bogus size in genimage.cfg 2018-08-24 10:26:34 +02:00
boot boot-wrapper-aarch64: use SPDX identifier for 3 clause BSD 2018-08-24 00:19:16 +02:00
configs configs/arm_juno: bump ATF to v1.3 2018-08-24 10:27:46 +02:00
docs docs/manual: expand on why using a branch name is not supported 2018-08-26 23:19:03 +02:00
fs fs: ensure hard links in TARGET_DIR are correctly copied for filesystem input 2018-05-27 23:46:29 +02:00
linux linux: bump CIP to version v4.4.138-cip25 2018-08-24 00:18:13 +02:00
package mbedtls: fix x86 PIC build with GCC < 5 2018-08-28 10:12:08 +02:00
support support/testing: add test for file capabilities 2018-08-10 08:27:17 +02:00
system skeleton: add /dev/fd, /dev/std{in, out, err} symlinks for static /dev on readonly rootfs 2018-05-01 21:53:45 +02:00
toolchain toolchain: allow disabling packages affected by gcc bug 85180 2018-05-30 23:23:21 +02:00
utils utils/test-pkg: log the output of merge-config 2018-07-19 23:27:56 +02:00
.defconfig arch: remove support for sh64 2016-09-08 22:15:15 +02:00
.flake8 .flake8: ignore utils/diffconfig 2018-03-13 22:37:54 +01:00
.gitignore
.gitlab-ci.yml support/testing: add test for file capabilities 2018-08-10 08:27:17 +02:00
.gitlab-ci.yml.in .gitlab-ci.yml: extend check-package test to Config.* files 2018-04-01 10:16:35 +02:00
CHANGES Update for 2018.05.1 2018-07-20 00:39:18 +02:00
Config.in Config.in: add BR2_HOST_GCC_AT_LEAST_8 2018-05-02 14:50:14 +02:00
Config.in.legacy libmediaart: rename options to have proper prefix 2018-05-21 23:13:52 +02:00
COPYING COPYING: add exception about patch licensing 2016-02-26 19:50:13 +01:00
DEVELOPERS DEVELOPERS: update datacom email addresses 2018-05-25 08:40:14 +02:00
Makefile Makefile: help: BR2_DEFCONFIG for defconfig must be on command line 2018-08-23 22:02:55 +02:00
Makefile.legacy Remove BR2_DEPRECATED 2016-10-15 23:14:45 +02:00
README README: add reference to submitting-patches 2016-02-01 19:16:08 +01:00

Buildroot is a simple, efficient and easy-to-use tool to generate embedded
Linux systems through cross-compilation.

The documentation can be found in docs/manual. You can generate a text
document with 'make manual-text' and read output/docs/manual/manual.text.
Online documentation can be found at http://buildroot.org/docs.html

To build and use the buildroot stuff, do the following:

1) run 'make menuconfig'
2) select the target architecture and the packages you wish to compile
3) run 'make'
4) wait while it compiles
5) find the kernel, bootloader, root filesystem, etc. in output/images

You do not need to be root to build or run buildroot.  Have fun!

Buildroot comes with a basic configuration for a number of boards. Run
'make list-defconfigs' to view the list of provided configurations.

Please feed suggestions, bug reports, insults, and bribes back to the
buildroot mailing list: buildroot@buildroot.org
You can also find us on #buildroot on Freenode IRC.

If you would like to contribute patches, please read
https://buildroot.org/manual.html#submitting-patches