summaryrefslogtreecommitdiffstats
path: root/package/gcc
Commit message (Collapse)AuthorAgeFilesLines
...
* arch: add support for mips32r6 and mips64r6 variantsVicente Olivert Riera2015-10-121-0/+8
| | | | | | | | | | | | | | | - Add support for mips32r6 and mips64r6 target architecture variants - Disable unsupported gcc versions - Disable unsupported binutils versions - Disable unsupported external toolchains - Disable unsuported C libraries - Add a hook in order to make glibc compile for MIPS R6. [Thomas: slightly tweak the glibc hack explanation, to make it hopefully clearer.] Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: backport xtensa libgcc stack unwinding fixesMax Filippov2015-10-059-0/+445
| | | | | | | | | | | | | | | | These backported patches fix the following failing uClibc-ng tests: nptl/tst-cancelx4, nptl/tst-cancelx16, nptl/tst-cancelx18, nptl/tst-cancelx20, nptl/tst-cancelx21, nptl/tst-cleanupx1, nptl/tst-cleanupx3, nptl/tst-oncex3, nptl/tst-oncex4. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: sort the patches before they are hashedArnout Vandecappelle2015-10-041-2/+2
| | | | | | | | | | $(wildcard ...) in make doesn't sort the files, so the order of the hashed files is not predictable. Therefore, the ccache hash could change from one build to another. We don't want that, so sort the files explicitly. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* xtensa: switch from text-section-literals to auto-litpoolsMax Filippov2015-10-041-3/+3
| | | | | | | | | | | | | | Now that both binutils and gcc support auto-litpools use that option instead of text-section-literals to be able to compile huge functions. Fixes: http://autobuild.buildroot.net/results/dd384fe0ef02a4205bea66a4a16ca2062afe53b4/ http://autobuild.buildroot.net/results/87dd357a4b883ea3cd75546b3d63c4c28245beee/ http://autobuild.buildroot.net/results/b5bca00dec1ecb118c7fb9c10dee74c94809c831/ and many others. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: backport mauto-litpools xtensa optionMax Filippov2015-10-043-0/+870
| | | | | | | | | | | | | | | With support from assembler this option allows compiling huge functions, where single literal pool at the beginning of a function may not be reachable by L32R instructions at its end. Currently assembler --auto-litpools option cannot deal with literals used from multiple locations separated by more than 256 KBytes of code. Don't turn constants into literals, instead use MOVI instruction to load them into registers and let the assembler turn them into literals as necessary. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: remove the --with-pkgversion option from the ccache hashArnout Vandecappelle2015-10-041-2/+4
| | | | | | | | | | | | | One of the gcc configure options that we hash for ccache is --with-pkgversion which is set to something like Buildroot 2015.11-git-00426-ge7e7e4f - i.e., it will change with every buildroot commit. That's obviously not wanted, so substitute this away. Also add a \n to the printf so the output is a bit more readable. [Peter: update documentation to match] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* ccache: support changing the output directoryArnout Vandecappelle2015-10-041-1/+3
| | | | | | | | | | | | | | | | | | | | When building in a different output directory than the original build, there will currently be a lot of ccache misses because in many cases there is some -I/... absolute path in the compilation. Ccache has an option CCACHE_BASEDIR to substitute absolute paths with relative paths, so they wil be the same in the hash (and in the output). Since there are some disadvantages to this path rewriting, it is made optional as BR2_CCACHE_USE_BASEDIR. It defaults to y because the usefulness of ccache is severely reduced without this option. In addition to CCACHE_BASEDIR, we also substitute away the occurences of $(HOST_DIR) in the calculation of the compiler hash. This is done regardless of the setting of BR2_CCACHE_USE_BASEDIR because it's quite harmless. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* ccache: use mtime for external toolchain, CONF_OPTS for internal toolchainArnout Vandecappelle2015-10-041-2/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Our current ccache disables hashing of the compiler executable itself, because using the default 'mtime' doesn't work in buildroot: we always rebuild the compiler, so the mtime is always different, so the cache always misses. However, in the current situation, if a user changes the compiler configuration (which would result in the compiler generating different object files than before) and does 'make clean all', ccache may in fact reuse object files from the previous run. This rarely gives problems, because (1) the cache expires quite quickly (it's only 1GB by default), (2) radically changing compiler options will cause cache misses because different header files are used, (3) many compiler changes (e.g. changing -mtune) have little practical effect because the resulting code is usually still compatible, (4) we currently don't use CCACHE_BASEDIR, and almost all object files will contain an absolute path (e.g. in debug info), so when building in a different directory, most of it will miss, (5) we do mostly build test, and many of the potential problems only appear at runtime. Still, when ccache _does_ use the wrong cached object files, the effects are really weird and hard to debug. Also, we want reproducible builds and obviously the above makes builds non-reproducible. So we have a FAQ entry that warns against using ccache and tells the user to clear the cache in case of problems. Now that ccache is called from the toolchain wrapper, it is in fact possible to at least use the 'mtime' compiler hash for the external toolchain and for the host-gcc. Indeed, in this case, the compiler executable comes from a tarball so the mtime will be a good reference for its state. Therefore, the patch (sed script) that changes the default from 'mtime' to 'none' is removed. For the internal toolchain, we can do better by providing a hash of the relevant toolchain options. We are only interested in things that affect the compiler itself, because ccache also processes the header files and it doesn't look at libraries because it doesn't cache the link step, just compilation. Everything that affects the compiler itself can nicely be summarised in $(HOST_GCC_FINAL_CONF_OPTS). Of course, also the compiler source itself is relevant, so the source tarball and all the patches are included in the hash. For this purpose, a new HOST_GCC_XTENSA_OVERLAY_TAR is introduced. The following procedure tests the ccache behaviour: Use this defconfig: BR2_arm=y BR2_CCACHE=y make readelf -A output/build/uclibc-1.0.6/libc/signal/signal.os -> Tag_CPU_name: "ARM926EJ-S" Now make menuconfig, change variant into BR2_cortex_a9 make clean; make readelf -A output/build/uclibc-1.0.6/libc/signal/signal.os -> Tag_CPU_name: "ARM926EJ-S" should be "Cortex-A9" After this commit, it is "Cortex-A9". Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Cc: Danomi Manchego <danomimanchego123@gmail.com> Cc: Károly Kasza <kaszak@gmail.com> Cc: Samuel Martin <s.martin49@gmail.com> Cc: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc: remove unsafe patch check (poison system dirs) patchArnout Vandecappelle2015-10-046-1050/+0
| | | | | | | | | | | | | | Now that the calls to gcc always pass through the toolchain wrapper, it is no longer necessary to patch gcc to support poisoning. This does have the disadvantage that there is no unsafe path check for libc, libgcc and libstdc++ (all of these are built before the wrapper exists). But we can assume that the toolchain components themselves should be pretty safe. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Reviewed-by: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc: use toolchain wrapperArnout Vandecappelle2015-10-043-8/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have a toolchain wrapper for external toolchain, but it is also beneficial for internal toolchains, for the following reasons: 1. It can make sure that BR2_TARGET_OPTIMIZATION is passed to the compiler even if a package's build system doesn't honor CFLAGS. 2. It allows us to do the unsafe path check (i.e. -I/usr/include) without patching gcc. 3. It makes it simpler to implement building each package with a separate staging directory (per-package staging). 4. It makes it simpler to implement a compiler hash check for ccache. The wrapper is reused from the external toolchain. A third CROSS_PATH_ option is added to the wrapper: in this case, the real executable is in the same directory, with the extension .real. The creation of the simple symlinks is merged with the creation of the wrapper symlinks, otherwise part of the -gcc-ar handling logic would have to be repeated. The complex case-condition could be refactored with the one for the external toolchain, but then it becomes even more complex because they each have special corner cases. For example, the internal toolchain has to handle *.real to avoid creating an extra indirection after host-gcc-{final,initial}-rebuild. Instead of creating the .real files, it would also have been possible to install the internal toolchain in $(HOST_DIR)/opt, similar to what we do for the external toolchain. However, then we would also have to copy things to the sysroot and do more of the magic that the external toolchain is doing. So keeping it in $(HOST_DIR)/usr/bin is much simpler. Note that gcc-initial has to be wrapped as well, because it is used for building libc and we want to apply the same magic when building libc. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Cc: Fabio Porcedda <fabio.porcedda@gmail.com> Cc: Jérôme Oufella <jerome.oufella@savoirfairelinux.com> Reviewed-by: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* host-gcc-final: don't install a potentially dead symlinkArnout Vandecappelle2015-09-201-3/+0
| | | | | | | | | | | | | | | | | | gcc used to be installed into $(HOST_DIR)/usr/$(GNU_TARGET_NAME) but since gcc 4.9 this is no longer the case. Therefore, the cc -> gcc symlink that is created in that we create in that directory is dead. There don't seem to have been any problems due to the missing gcc and cc in $(HOST_DIR)/usr/$(GNU_TARGET_NAME), things seems to build fine without it. The cc -> gcc symlinks in general should not be needed anyway, since we always pass the appropriate CC variable to the package build system. Therefore, let's remove the cc -> gcc symlink in $(HOST_DIR)/usr/$(GNU_TARGET_NAME) - also for pre-4.9 gcc versions. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: add missing NIOS-II patch after bump to 4.9.3Thomas Petazzoni2015-08-081-0/+12
| | | | | | | | | | | | | When gcc 4.9.x was bumped from 4.9.2 to 4.9.3 in commit 2fed00ea1eaeca952f872120af79a46f39b0868c, patch 920-libgcc-remove-unistd-header.patch was removed with the argument that it had been applied upstream. However, it is not the case, and the patch continues to apply fine on gcc 4.9.3, and is actually needed to make gcc build properly on NIOS-II. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: select the appropriate BR2_TOOLCHAIN_GCC_AT_LEAST_* optionThomas Petazzoni2015-08-051-0/+7
| | | | | | | | | | This commit wires up the gcc version dependency mechanism in the internal toolchain backend by making the gcc version choice in the gcc package Config.in.host select the appropriate BR2_TOOLCHAIN_GCC_AT_LEAST_* option. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
* binutils: rename config optionGustavo Zacarias2015-07-281-1/+1
| | | | | | | | Rename the binutils configuration option to match that one used by gcc where the patchlevel is explicitly left out. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package/gcc (4.7): backport PR56780 patchesRomain Naour2015-07-271-0/+244
| | | | | | | Reported-by: Anthony Viallard <viallard@syscom-instruments.com> Signed-off-by: Romain Naour <romain.naour@openwide.fr> Cc: Anthony Viallard <viallard@syscom-instruments.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package/gcc: fix gcc 4.7 build with gcc5Romain Naour2015-07-271-0/+42
| | | | | | | | | | | gcc 4.7 doesn't build with gcc5. Patch is from DragonFlyBSD github [1] [1] https://github.com/DragonFlyBSD/DPorts/issues/136 Signed-off-by: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package/gcc: fix libgcc build for xtensaMax Filippov2015-07-241-0/+7
| | | | | | | | | | | | xtensa libgcc can't be built with -mtext-section-literals flag, now coming from TARGET_CFLAGS, because it needs to emit literals to .init/.fini sections, which is not currently supported. Filter -mtext-section-literals flag out of GCC_COMMON_TARGET_CFLAGS. Suggested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package/gcc: fix typo for CFLAGS_FOR_TARGETRomain Naour2015-07-231-1/+1
| | | | | | | | | CFLAGS_FOR_TARGET is initialized with GCC_COMMON_TARGET_CXXFLAGS. Signed-off-by: Romain Naour <romain.naour@openwide.fr> Cc: Alexey Brodkin <abrodkin@synopsys.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspaceAlexey Brodkin2015-07-221-3/+9
| | | | | | | | | | | | | | | | | | | | | | The gcc.mk file is passing --enable-target-optspace to gcc configure script, to ask for space-optimized (-Os) target libraries. However, passing this option has the effect of overriding any custom CFLAGS_FOR_TARGET or CXXFLAGS_FOR_TARGET values that may be passed. These are some situations when it is required to pass custom flags on buildong of libgcc: * Default flags "-g -Os" lead to build isses as with PowerPC on gcc 4.5 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810) * Particular CPU requires specific instructions for HW support * Deep optimizations Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Anton Kolesov <akolesov@synopsys.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: add support for fortranDavid Kessler2015-07-192-0/+12
| | | | | Signed-off-by: David Kessler <DJKessler@me.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: fix undefined reference to .tdataAlexey Brodkin2015-07-181-0/+42
| | | | | | | | | | | | | | | | | | | | | | This fix is done in development tree: http://github.com/foss-for-synopsys-dwc-arc-processors/gcc/commit/366cc86e4f8ff6f00f0b731dc6f78d22c7ac9e0a and will be a part of the next release of ARC GNU tools. Once that new release happens this patch must be removed. Fixes: http://autobuild.buildroot.net/results/8b22ac0dc9e3c1cd44f2fdbe5cc99a41cf77f454/ http://autobuild.buildroot.net/results/37e9c3c79e0a6aea5b89428c2226811ebb3fd611/ http://autobuild.buildroot.net/results/37e9c3c79e0a6aea5b89428c2226811ebb3fd611/ and many others. Prerequisite: "ARC: update tools to arc-2015.06 release": http://patchwork.ozlabs.org/patch/495837/ Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Anton Kolesov <akolesov@synopsys.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Peter Korsgaard <peter@korsgaard.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc/libmudflap: also unavailable for gcc 5.xGustavo Zacarias2015-07-181-0/+1
| | | | | Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: bump 5.x series to version 5.2.0Gustavo Zacarias2015-07-1821-5/+5
| | | | | | | | Also rename the BR2_GCC_VERSION_5_1_X symbol to BR2_GCC_VERSION_5_X to reflect this change to match the new versioning scheme. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* ARC: update tools to arc-2015.06 releaseAlexey Brodkin2015-07-185-2/+2
| | | | | | | | | | | | | | | | | | | | | | I'm happy to update GNU tools for ARC cores to the most recent arc-2015.06 release. This release brings following major improvements: * GCC: source update to v4.8.4 * GCC: C ABI compatibility between MetaWare and GNU toolchains * uClibc: support for thread local storage and Native Pthread Library (NPTL) * GDB: updated to version 7.9.1 Also a lot of fixes and improvements has been done, please refer to https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2015.06 for more details. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Anton Kolesov <akolesov@synopsys.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Romain Naour <romain.naour@openwide.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* packages: do not use TAR_STRIP_COMPONENTS, but directly --strip-componentsThomas Petazzoni2015-07-121-1/+1
| | | | Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Disable gcc-4.8.x + binutils-2.25 + MIPS combinationVicente Olivert Riera2015-07-031-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This combination causes a compilation failure of the host-gcc-final recipe like this one: /br/output/host/usr/mips-buildroot-linux-gnu/bin/ld: .libs/gload.o: relocation R_MIPS_HI16 against `__gnu_local_gp' can not be used when making a shared object; recompile with -fPIC The problem is the file 'libatomic/gload.c' is compiled without -fPIC when using binutils-2.25. All gcc (with libatomic) versions below 4.9.3 are affected by this issue. Here is a summary of affected/unaffected versions in Buildroot: 4.7.x: unaffected (doesn't have libatomic) 4.8.x: affected 4.9.x: unaffected (we have 4.9.3 which is fixed) 5.1.x: unaffected The fix can be found here: https://github.com/gcc-mirror/gcc/commit/57f5c0954f95cb37f995d60167ddde06c7d6e697 However, given the following reasons... - Upstream gcc 4.8 branch is closed. - The fix is very hard to backport from 4.9 to 4.8. - This stuff is insanely sensitive and not working at all could be better than looking like it works but not quite. ...I think the best choice is to disable that combination in Buildroot. Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package/gcc: fix ARC failure to build in 2 phases.Tal Zilcer2015-07-021-0/+1
| | | | | | | | | | | When working with GCC initial at override source dir mode the HOST_GCC_INITIAL_POST_PATCH_HOOKS is not called and compilation failes. The solution is to use HOST_GCC_INITIAL_POST_RSYNC_HOOKS since this hook is being called at override source dir mode. Signed-off-by: Tal Zilcer <talz@ezchip.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* ARC: update folders with patches for arc-2015.06-rc1 releaseAlexey Brodkin2015-07-013-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | In buildroot we maintain a couple off-the-tree patches. In particular for binutils and gcc packages. Because we have many versions of mentioned packages patches for each particular version reside in a folder which name matches full version name of the package. For example we used to have patches for binutils distributed as part of arc-2014.12 tools in folder ""package/binutils/arc-2014.12". Now with bump of ARC tools version we need to rename folder with patches to "arc-2015.06-rc1". The same applies to gcc. Should fix http://autobuild.buildroot.net/results/2b2/2b27a4a64c0b225ae479ecfccf7a97f5ea95598c/ As discussed before it's not possible to reproduce reported problem on recent Fedora 21/22 distros (at least we know about them) but I may confirm that patches were applied fine and everything was built well. Hopefully reported build failure goes away now. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Romain Naour <romain.naour@openwide.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* ARC: switch to RC1 of upcoming arc-2015.06 toolsAlexey Brodkin2015-06-282-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Even though this is only RC1 it's been heavily used internally so it should not be any worse than existing arc-2014.12. Moreover this relase (and so its RC1) finally delivers support of NPTL for ARC in uClibc. That's why it would be good to allow interested users to start trying it (for example WebKit and apps that use WebKit could be successfully built and run) also it will be helpful to run that new toolchain through autobuilder in attempt to find any hidden regressions so we have a solid toolchain for release. If there's an interest in that patch more patches will follow with subsequent RCs and essentially on appearence or relese Buildroot will be updated with it. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: arc-buildroot@synopsys.com Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: bump 4.9.x series to version 4.9.3Gustavo Zacarias2015-06-2816-347/+258
| | | | | | | | | | Drop 110-pr64896.patch and 920-libgcc-remove-unistd-header.patch since they're upstream. Tweak 850-libstdcxx-uclibc-c99.patch for this new release. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: bump 4.8.x versionPeter Korsgaard2015-06-2416-3/+3
| | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc: switch to gcc 4.9 as the default versionThomas Petazzoni2015-06-231-2/+1
| | | | | | | | Now that we have added gcc 5.1, it's time to make gcc 4.9 the default version used in Buildroot. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc: add support for gcc 5.1Thomas Petazzoni2015-06-2321-0/+1623
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds support for gcc 5.1 in Buildroot. In terms of gcc patches, compared to gcc 4.9.x: * Kept as is, sometimes after minor adjusments: 100-uclibc-conf.patch 301-missing-execinfo_h.patch 810-arm-softfloat-libgcc.patch 830-arm_unbreak_armv4t.patch 840-microblaze-enable-dwarf-eh-support.patch 850-libstdcxx-uclibc-c99.patch 860-cilk-wchar.patch * Dropped: 110-pr64896.patch 111-pr65730.patch * Split in multiple parts: 900-musl-support.patch The patches from Crosstool-NG for muls support are used instead of one single patch. * Renamed: 910-gcc-poison-system-directories.patch to 200-gcc-poison-system-directories.patch 920-libgcc-remove-unistd-header.patch to 201-libgcc-remove-unistd-header.patch Since the 9xx part of the series is now used by the various musl related patches. We have tested the following configurations, with a minimal Busybox system: * ARM, uClibc-ng * ARM, glibc * ARM, musl * x86, uClibc-ng and uClibc 0.9.33.2 * x86, glibc * x86, musl All of the configurations built fine. All the configurations boot fine in Qemu, except x86/uClibc (either ng or 0.9.33.2), it segfaults when running init: devtmpfs: mounted Freeing unused kernel memory: 300K (c1389000 - c13d4000) init[1]: segfault at 0 ip b77708c1 sp bfa9bb0c error 4 in ld-uClibc-0.9.33.2.so[b776c000+6000] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b We'll give some time for the uClibc developers to fix the problem before taking other measures in Buildroot to exclude gcc 5.1 from a x86/uClibc configuration. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc/gcc-final: install libatomic via HOST_GCC_FINAL_GCC_LIB_DIRGustavo Zacarias2015-06-061-2/+2
| | | | | | | Otherwise it's a no-op for sh4. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc/gcc-final: pass TARGET_ABI flags to configure with --enable-cxx-flagsMax Filippov2015-05-311-0/+4
| | | | | | | | | | | | | | | libstdc++ is in all regards a normal library, it needs to be built with TARGET_ABI flags, otherwise linking it with other C++ code may fail. Pass TARGET_ABI flags to gcc-final configure script in the --enable-cxx-flags parameter. Fixes: http://autobuild.buildroot.net/results/81a3bca5cbcf789c7ce1aa221a6a4154dd7c3917/ http://autobuild.buildroot.net/results/4943b214c29951ecc7af0a1f360b6454485c0b9b/ Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc: fix PR 65730 (ICE on xtensa cores w/o hardware multiplication)Max Filippov2015-05-203-0/+111
| | | | | Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package/gcc (arc): backport PR56780 patchesRomain Naour2015-05-121-0/+244
| | | | | | | | | | | | | | | | --disable-install-libiberty configure option is broken in gcc 4.8.x, so libiberty.a is always installed in HOST_DIR. This library broke the host-gdb build due to a fpic/fPIC issue. Note: host-binutils-arc-2014.12 install libiberty.a in HOST_DIR but it was overwritten by the gcc one. The host-binutils's libiberty.a also broke the host-gdb build. This should be fixed in a followup patch. Signed-off-by: Romain Naour <romain.naour@openwide.fr> Cc: Alexey Brodkin <abrodkin@synopsys.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* package/gcc: backport PR56780 patchesRomain Naour2015-05-111-0/+244
| | | | | | | | | | | | | | | | | --disable-install-libiberty configure option is broken in gcc 4.8.x, so libiberty.a is always installed in HOST_DIR. This library broke the host-gdb build due to a fpic/fPIC issue. Fixes: http://autobuild.buildroot.net/results/28f/28f3074e99a35f4321dad2fa6c5abdad14d2d2c6/ And many more. Signed-off-by: Romain Naour <romain.naour@openwide.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* sh4: fix toolchain creationWaldemar Brodkorb2015-05-031-5/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | The Linux kernel does force compile with -m4-nofpu, which is only available when building a multilib toolchain. The interesting part here is, that buildroot use --disable-multilib for gcc configure, but enables --with-multilib-list=m4,m4-nofpu in the default configuration for Qemu targeting r2d emulation. This results in a toolchain, which can be used for the kernel and for userland without creating a multilib toolchain with different kinds of libgcc version. In the multilib case there would be subdirectories created (!m4 and m4-nofpu). As buildroot uses a short version of toolchain creation, a multilib enabled gcc build fails when creating libgcc. So the best solution is to just keep multilib disabled, but always add --with-multilib-list when sh4/sh4eb/sh4a/sh4aeb is choosen. Tested with sh4/sh4a toolchain build and qemu defconfig with gcc 4.8.x/4.9.x (with and without C++ enabled), uClibc and glibc. Disable sh4a/sh4aeb for uClibc, as it does not implemented, yet. Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> (ARM and SH4 uClibc toolchain builds)
* gcc/4.8.4: fix aarch64 vmlaq_lane_s32 typoPeter Korsgaard2015-04-271-0/+24
| | | | | | | | | | | | | | | | Fixes webp build: http://autobuild.buildroot.net/results/656/6563be62557ab6c1bdd4152523774316dc09c9ce/ http://autobuild.buildroot.net/results/e31/e31e782d927215dde87b2f3174d70b8eb70085fd/ http://autobuild.buildroot.net/results/e2e/e2e627dd6fdfa58ee07fd3aaca43e1731cc8b6e4/ http://autobuild.buildroot.net/results/26e/26ed07fe917e1af21b5c5c3e4f6c2b39d78a8aff/ And many more. Upstream bug report and patch: https://code.google.com/p/webp/issues/detail?id=230 https://android-review.googlesource.com/#/c/99470 Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* package/gcc: add hashesYann E. MORIN2015-04-233-0/+12
| | | | | | | | | | Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Gustavo Zacarias <gustavo@zacarias.com.ar> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Tested-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc-final: install libatomicGustavo Zacarias2015-04-191-0/+9
| | | | | | | | | | | It's required in some 32-bit architectures for the extended (64-bit) atomic operations, like __sync_add_and_fetch_8. These arches are at least: i386, mips & mipsel. Target size growth is ~15 KiB for ARM. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: disable libsanitizer for sparcGustavo Zacarias2015-04-161-0/+6
| | | | | | | | | | | Normally libsanitizer handles the different functionalities gracefully for each architecture, but it doesn't seem to be the case for SPARC. Since in general it doesn't support anything for SPARC just disable it. Fixes bug #7951. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package infra: drop non-lfs supportGustavo Zacarias2015-04-011-1/+0
| | | | | | | | Now that largefile is mandatory remove support for non-lfs tweaks/variables in the package infra and the gcc build. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: remove stray bfin --with-cpu exclusionGustavo Zacarias2015-03-251-3/+0
| | | | | | | We no longer support an internal bfin toolchain hence it's dead code. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: mark 4.5.x as deprecatedGustavo Zacarias2015-03-251-0/+1
| | | | | | | | It was kept for the internal blackfin toolchain which has been removed since because of lack of maintenance and testing. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: remove blackfin conditionalsGustavo Zacarias2015-03-201-5/+4
| | | | | | | | Now that we don't support the internal blackfin toolchain any more remove unnecessary conditionals. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package/gcc: fix ICE building QT5 on xtensaMax Filippov2015-03-201-0/+59
| | | | | | | | Add fix for GCC PR 64896 from the gcc-4_9-branch of gcc. This fixes bugzilla bug 7961. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: fix 4.9.2 build with C++ and !wcharPeter Korsgaard2015-03-151-0/+56
| | | | | | | | | The libcilk library (used on x86/x86-64 when building with C++ support) unconditionally uses WCHAR_MIN / WCHAR_MAX, causing build issues with uClibc when configured without wchar support. Reported-by: Bernd Kuhls <bernd.kuhls@t-online.de> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain: add link-time-optimization supportPeter Kümmel2015-03-072-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new option BR2_GCC_ENABLE_LTO that builds gcc and binutils with LTO support. Individual packages still have to enable LTO explicitly by passing '-flto' to GCC, which passes it on to the linker. This option does not add that flag globally. Some packages detect if the compiler supports LTO and enable the flag if it does. To support LTO, ar and ranlib must be called with an argument which triggers the usage of the LTO plugin. Since GCC doesn't call these tools itself, it instead provides wrappers for ar and ranlib that pass the LTO arguments. This way existing Makefiles don't need to be changed for LTO support. However, these wrappers are called <tuple>-gcc-ar which matches the pattern to link to the buildroot wrapper in the external toolchain logic. So the external toolchain logic is updated to provide the correct symlink. [Thomas: - Add a separate BR2_BINUTILS_ENABLE_LTO option to enable LTO support in binutils. This is a blind option, selected by BR2_GCC_ENABLE_LTO. It just avoids having binutils.mk poke directly into gcc Config.in options. - Remove the check on the AVR32 special gcc version, which we don't support anymore. - Adapt the help text of the LTO Config.in option to no longer mention "Since version 4.5", since we only support gcc >= 4.5 in Buildroot anyway. - Fix typo in toolchain-external.mk comment.] Signed-off-by: Peter Kümmel <syntheticpp@gmx.net> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
OpenPOWER on IntegriCloud