aboutsummaryrefslogtreecommitdiff
path: root/package/gcc
Commit message (Collapse)AuthorAgeFilesLines
* gcc: bump 4.8.x series to version 4.8.4Gravatar Gustavo Zacarias2014-12-1912-3/+3
| | | | | Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Rename BR2_PREFER_STATIC_LIB to BR2_STATIC_LIBSGravatar Thomas Petazzoni2014-12-111-2/+2
| | | | | | | | | | | | | | | | | | | | | | | Since a while, the semantic of BR2_PREFER_STATIC_LIB has been changed from "prefer static libraries when possible" to "use only static libraries". The former semantic didn't make much sense, since the user had absolutely no control/idea of which package would use static libraries, and which packages would not. Therefore, for quite some time, we have been starting to enforce that BR2_PREFER_STATIC_LIB should really build everything with static libraries. As a consequence, this patch renames BR2_PREFER_STATIC_LIB to BR2_STATIC_LIBS, and adjust the Config.in option accordingly. This also helps preparing the addition of other options to select shared, shared+static or just static. Note that we have verified that this commit can be reproduced by simply doing a global rename of BR2_PREFER_STATIC_LIB to BR2_STATIC_LIBS plus adding BR2_PREFER_STATIC_LIB to Config.in.legacy. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
* gcc: enable poison system directories optionGravatar Thomas Petazzoni2014-12-111-0/+1
| | | | | | | | | | This commit enables the poison system directories option, which is now available thanks to the gcc patches that have been added. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Acked-by: Romain Naour <romain.naour@openwide.fr> Tested-by: Romain Naour <romain.naour@openwide.fr>
* gcc/4.7: add patch to warn about unsafe header pathsGravatar Thomas Petazzoni2014-12-111-0/+207
| | | | | | | | | | | | | | | | This commit adds a patch to gcc borrowed from CodeSourcery/Yocto that warns about unsafe include paths (i.e /usr/include, /usr/local/include, etc.). The patch was adapted to gcc 4.7.4, and modified to support the BR_COMPILER_PARANOID_UNSAFE_PATH environment variable to error out instead of just warn when unsafe paths are used. Even though erroring out can be chosen by passing -Werror=poison-system-directories, we are not sure this option in CFLAGS will always be passed, so having an environment variable guarantees it will always be passed, and also allows to have an identical behavior to the external toolchain wrapper. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Tested-by: Romain Naour <romain.naour@openwide.fr>
* gcc/arc-2014.08: add patch to warn about unsafe header pathsGravatar Thomas Petazzoni2014-12-111-0/+221
| | | | | | | | | | | | | | | | This commit adds a patch to gcc borrowed from CodeSourcery/Yocto that warns about unsafe include paths (i.e /usr/include, /usr/local/include, etc.). The patch was adapted to gcc arc-2014.08, and modified to support the BR_COMPILER_PARANOID_UNSAFE_PATH environment variable to error out instead of just warn when unsafe paths are used. Even though erroring out can be chosen by passing -Werror=poison-system-directories, we are not sure this option in CFLAGS will always be passed, so having an environment variable guarantees it will always be passed, and also allows to have an identical behavior to the external toolchain wrapper. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Tested-by: Romain Naour <romain.naour@openwide.fr>
* gcc/4.8: add patch to warn about unsafe header pathsGravatar Thomas Petazzoni2014-12-111-0/+207
| | | | | | | | | | | | | | | | This commit adds a patch to gcc borrowed from CodeSourcery/Yocto that warns about unsafe include paths (i.e /usr/include, /usr/local/include, etc.). The patch was adapted to gcc 4.8.3, and modified to support the BR_COMPILER_PARANOID_UNSAFE_PATH environment variable to error out instead of just warn when unsafe paths are used. Even though erroring out can be chosen by passing -Werror=poison-system-directories, we are not sure this option in CFLAGS will always be passed, so having an environment variable guarantees it will always be passed, and also allows to have an identical behavior to the external toolchain wrapper. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Tested-by: Romain Naour <romain.naour@openwide.fr>
* gcc/4.9: add patch to warn about unsafe header pathsGravatar Thomas Petazzoni2014-12-111-0/+207
| | | | | | | | | | | | | | | | This commit adds a patch to gcc borrowed from CodeSourcery/Yocto that warns about unsafe include paths (i.e /usr/include, /usr/local/include, etc.). The patch was adapted to gcc 4.9.1, and modified to support the BR_COMPILER_PARANOID_UNSAFE_PATH environment variable to error out instead of just warn when unsafe paths are used. Even though erroring out can be chosen by passing -Werror=poison-system-directories, we are not sure this option in CFLAGS will always be passed, so having an environment variable guarantees it will always be passed, and also allows to have an identical behavior to the external toolchain wrapper. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Tested-by: Romain Naour <romain.naour@openwide.fr>
* package/gcc: set e5500 and e6500 version maskGravatar Gustavo Zacarias2014-12-071-2/+4
| | | | | | | | Freescale e5500 and e6500 cores are supported for versions >= 4.8 So filter out all of the older versions to avoid build failures. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package/gcc/mpfr: remove deprecated featuresGravatar Gustavo Zacarias2014-12-012-29/+0
| | | | | | | | Remove the fortran and objective C language support since these have been deprecated since more than a year ago. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* package/gcc: use correct symbol for powerpc version maskGravatar Gustavo Zacarias2014-11-181-3/+3
| | | | | | Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc: do not use BR2_GCC_TARGET_TUNE anymoreGravatar Thomas Petazzoni2014-11-071-3/+0
| | | | | | | | | Since the BR2_GCC_TARGET_TUNE value is always empty now, there is no longer a point in using it in the gcc package. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc: remove version 4.4.xGravatar Andreas Larsson2014-10-308-309/+0
| | | | | | | | | | That gcc series is old and is not used as the default version for any of the architectures we support, so this commit gets rid of it. [Thomas: move the Config.in.legacy option at the right location.] Signed-off-by: Andreas Larsson <andreas@gaisler.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* arch: sparc: Add leon3 cpu type and remove sparc{s,h}fleon{,v8}Gravatar Andreas Larsson2014-10-302-252/+6
| | | | | | | | | | | There is support for -mcpu=leon3 from gcc 4.8.3. Use this for LEON systems instead of the non-mainline targets sparcsfleon, sparchfleon, sparcsfleonv8, and sparchfleonv8. [Thomas: add Config.in.legacy handling for the removed options.] Signed-off-by: Andreas Larsson <andreas@gaisler.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: bump 4.9.x series to version 4.9.2Gravatar Gustavo Zacarias2014-10-3010-389/+1
| | | | | | | Drop PR60102 patch which is now upstream. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package: indentation cleanupGravatar Jerzy Grzegorek2014-10-262-13/+13
| | | | | Signed-off-by: Jerzy Grzegorek <jerzy.grzegorek@trzebnica.net> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* apply-patches.sh: Use the "APPLY_PATCHES" variable to call the scriptGravatar Fabio Porcedda2014-10-251-2/+2
| | | | | | | | | | To easy up adding optional parameters when calling the "apply-patches.sh" add and use the "APPLY_PATCHES" variable to execute the script. Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc: remove gcc snapshot optionGravatar Peter Korsgaard2014-10-122-31/+2
| | | | | | | | As discussed during the dev days. It is broken for uClibc/musl and architectures not using mainline gcc, so it has only very limited usefulness. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc/gcc-initial: fix build of the AVR32 toolchainGravatar Thomas Petazzoni2014-10-091-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | Since we switched to a two stage gcc build process, the AVR32 toolchain stopped building. This is because with such an old gcc version, we cannot use the all-target-libgcc and install-target-libgcc targets. Before the two stage gcc, libgcc was only built in gcc-intermediate, which carried a similar logic. This commit basically restores in gcc-initial the logic that used to be in gcc-intermediate, which consists in using the all-target-libcc and install-target-libgcc targets only for gcc versions others than the AVR32 one. Using the BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE option has a way of distinguishing the old AVR32 compiler from the other gcc versions is a bit ugly, but it's what was done in gcc-intermediate before. And since the AVR32 support is due to go away at some point in the hopefully near future, we don't care that much. This will fix the build of the two AVR32 defconfig that have been constantly failing since switching to the two stage gcc process. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* ARC: gcc - fixes for improperly calculated jump/branch offsetsGravatar Alexey Brodkin2014-10-084-0/+240
| | | | | | | | | | | | | | | | | | | | | | | Symptoms usually seen are like that: --->--- Error: operand out of range (128 is not between -128 and 127) --->--- where range may differ. Since compiler tries to use jump/branch instructions with the shortest encoding of offset it's important to calculate required offset properly. In case of miscalculation by compiler later assembler throws an error because of inability to encode requested value. Fixes are taken from current development branch of GCC for ARC and will be a part of the next release of ARC tools, so at that point patch should be dropped. 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: Peter Korsgaard <peter@korsgaard.com>
* .mk files: bulk aligment and whitespace cleanup of assignmentsGravatar Thomas De Schampheleire2014-10-072-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Buildroot coding style defines one space around make assignments and does not align the assignment symbols. This patch does a bulk fix of offending packages. The package infrastructures (or more in general assignments to calculated variable names, like $(2)_FOO) are not touched. Alignment of line continuation characters (\) is kept as-is. The sed command used to do this replacement is: find * -name "*.mk" | xargs sed -i \ -e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*$#\1 \2#' -e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*\([^\\]\+\)$#\1 \2 \3#' -e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\s*\([^\\ \t]\+\s*\\\)\s*$#\1 \2 \3#' -e 's#^\([A-Z0-9a-z_]\+\)\s*\([?:+]\?=\)\(\s*\\\)#\1 \2\3#' Brief explanation of this command: ^\([A-Z0-9a-z_]\+\) a regular variable at the beginning of the line \([?:+]\?=\) any assignment character =, :=, ?=, += \([^\\]\+\) any string not containing a line continuation \([^\\ \t]\+\s*\\\) string, optional whitespace, followed by a line continuation character \(\s*\\\) optional whitespace, followed by a line continuation character Hence, the first subexpression handles empty assignments, the second handles regular assignments, the third handles regular assignments with line continuation, and the fourth empty assignments with line continuation. This expression was tested on following test text: (initial tab not included) FOO = spaces before FOO = spaces before and after FOO = tab before FOO = tab and spaces before FOO = tab after FOO = tab and spaces after FOO = spaces and tab after FOO = \ FOO = bar \ FOO = bar space \ FOO = \ GENIMAGE_DEPENDENCIES = host-pkgconf libconfuse FOO += spaces before FOO ?= spaces before and after FOO := FOO = FOO = FOO = FOO = $(MAKE1) CROSS_COMPILE=$(TARGET_CROSS) -C AT91BOOTSTRAP3_DEFCONFIG = \ AXEL_DISABLE_I18N=--i18n=0 After this bulk change, following manual fixups were done: - fix line continuation alignment in cegui06 and spice (the sed expression leaves the number of whitespace between the value and line continuation character intact, but the whitespace before that could have changed, causing misalignment. - qt5base was reverted, as this package uses extensive alignment which actually makes the code more readable. Finally, the end result was manually reviewed. Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Cc: Yann E. Morin <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* packages: rename FOO_CONF_OPT into FOO_CONF_OPTSGravatar Thomas De Schampheleire2014-10-043-36/+36
| | | | | | | | | | | | To be consistent with the recent change of FOO_MAKE_OPT into FOO_MAKE_OPTS, make the same change for FOO_CONF_OPT. Sed command used: find * -type f | xargs sed -i 's#_CONF_OPT\>#&S#g' Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* packages: rename FOO_INSTALL_OPT into FOO_INSTALL_OPTSGravatar Thomas De Schampheleire2014-10-041-1/+1
| | | | | | | | | | | | To be consistent with the recent change of FOO_MAKE_OPT into FOO_MAKE_OPTS, make the same change for FOO_INSTALL_OPT. Sed command used: find * -type f | xargs sed -i 's#_INSTALL_OPT\>#&S#g' Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* packages: rename FOO_MAKE_OPT into FOO_MAKE_OPTSGravatar Thomas De Schampheleire2014-10-041-1/+1
| | | | | | | | | | | | | | | | | | | | | While the autotools infrastructure was using FOO_MAKE_OPT, generic packages were typically using FOO_MAKE_OPTS. This inconsistency becomes a problem when a new infrastructure is introduced that wants to make use of FOO_MAKE_OPT(S), and can live alongside either generic-package or autotools-package. The new infrastructure will have to choose between either OPT or OPTS, and thus rule out transparent usage by respectively generic packages or generic packages. An example of such an infrastructure is kconfig-package, which provides kconfig-related make targets. The OPTS variant is more logical, as there are typically multiple options. This patch renames all occurrences of FOO_MAKE_OPT in FOO_MAKE_OPTS. Sed command used: find * -type f | xargs sed -i 's#_MAKE_OPT\>#&S#g' Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: add new fix for the ARC 2014.08 gcc versionGravatar Alexey Brodkin2014-09-231-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | This commit adds a new patch to the ARC 2014.08 gcc specific version, that redefines PTRDIFF_TYPE from "long int" to "int". The change of SIZE_TYPE from "long unsigned int" to "unsigned int" http://git.buildroot.net/buildroot/commit/?id=0f236c1fef669192c8f5cc8ef26e93da91438dc2 introduced a regression due to the existing PTRDIFF_TYPE. Now to fix regression the patch converts PTRDIFF_TYPE to simple "int". The fix is taken from current development branch of GCC for ARC and will be a part of the next release of ARC tools, so at that point patch should be dropped. https://github.com/foss-for-synopsys-dwc-arc-processors/gcc/commit/846e92167aa4f486259c9ff44bb4e6cce6097fa4 [Thomas: tweak commit log.] 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>
* package/gcc: cleanup arch/cpu combinationsGravatar Gustavo Zacarias2014-09-231-17/+67
| | | | | | | | | | | | | | | Cleanup arch/cpu combination limits, we had super-wide depends and it doesn't help readability, version bumps or testing. Make the bool/depends/select order the same for all entries. Drop redundant limitations, for example sparc* if sparc wasn't supported in general. Power8 requires at least gcc 4.9. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* qemu-sparc: use default gccGravatar Waldemar Brodkorb2014-09-211-4/+3
| | | | | | | | | With the kernel patch from: http://patchwork.ozlabs.org/patch/384285/ There is no problem with latest gcc anymore. Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* ARC: gcc - Fix SIZE_TYPE to be "unsigned int" instead of "long unsigned int"Gravatar Alexey Brodkin2014-09-161-0/+24
| | | | | | | | | | | | | | | | | | | This makes size_t to be "unsigned" ssize_t which makes happy compiler on data type checks. Fix is taken from current development branch of GCC for ARC and will be a part of the next release of ARC tools, so at that point patch should be dropped. https://github.com/foss-for-synopsys-dwc-arc-processors/gcc/commit/249f040299402647525c3f15b79d319fa7acddd3 Fixes http://autobuild.buildroot.net/results/405/405da9a945511329929b18740b983c51b8dcc43e 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> Reviewed-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc/gcc-intermediate: remove packageGravatar Thomas Petazzoni2014-09-142-51/+1
| | | | | | | | | Now that we have switched to a two steps gcc build process that uses only gcc-initial and gcc-final, we can get rid of the gcc-intermediate package. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* toolchain: switch to a two stage gcc buildGravatar Thomas Petazzoni2014-09-141-2/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, the internal toolchain backend does a three stage gcc build, with the following sequence of builds: - build gcc-initial - configure libc, install headers and start files - build gcc-intermediate - build libc - build gcc-final However, it turns out that this is not necessary, and only a two stage gcc build is needed. At some point, it was believed that a three stage gcc build was needed for NPTL based toolchains with old gcc versions, but even a gcc 4.4 build with a NPTL toolchain works fine. So, this commit switches the internal toolchain backend to use a two stage gcc build: just gcc-initial and gcc-final. It does so by: * Removing the custom dependency of all C libraries build step to host-gcc-intermediate. Now the C library packages simply have to depend on host-gcc-initial as a normal dependency (which they already do), and that's it. * Build and install both gcc *and* libgcc in host-gcc-initial. Previously, only gcc was built and installed in host-gcc-initial. libgcc was only done in host-gcc-intermediate, but now we need libgcc to build the C library. * Pass appropriate environment variables to get SSP (Stack Smashing Protection) to work properly: - Tell the compiler that the libc will provide the SSP support, by passing gcc_cv_libc_provides_ssp=yes. In Buildroot, we have chosen to use the SSP support from the C library instead of the SSP support from the compiler (this is not changed by this patch series, it was already the case). - Tell glibc to *not* build its own programs with SSP support. The issue is that if glibc detects that the compiler supports -fstack-protector, then glibc uses it to build a few things with SSP. However, at this point, the support is not complete (we only have host-gcc-initial, and the C library is not completely built). So, we pass libc_cv_ssp=no to tell the C library to not use SSP support itself. Note that this is not a big loss: only a few parts of the C library were built with -fstack-protector, not the entire library. * A special change is needed for ARC, because its libgcc depends on the C library, which breaks building libgcc in host-gcc-initial. This looks like a bug in the ARC compiler, as it does not obey the inhibit_libc variable which tells the compiler build process to *not* enable things that depend on the C library. So for now, in host-gcc-initial, we simply disable the build of libgmon.a for ARC. It's going to be built as part of host-gcc-final, so the final compiler will have gmon support. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* ARC: bump tools to 2014.08 releaseGravatar Alexey Brodkin2014-09-012-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Now when new shiny tools are released by Synopsys we're ready for version update in Buildroot. Important change in this release is switching to combined "binutils-gdb" repo in accordance to upstream move. Following patch now is a part of the most recent relese: https://github.com/foss-for-synopsys-dwc-arc-processors/binutils-gdb/commit/e6ab8cac627a44a7594aeb907a579d8d2f066ba5 So dropping it. package/binutils/arc-4.8-R3/0001-arc-Honor-DESTDIR-in-custom-Makefile.patch Since arc-2014.08 tools are still based on GCC 4.8 following patch is still relevant so moving to the new folder to matxh ARC gcc bump. package/gcc/arc-4.8-R3/100-libstdcxx-uclibc-c99.patch -> package/gcc/arc-2014.08/100-libstdcxx-uclibc-c99.patch 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: Peter Korsgaard <peter@korsgaard.com>
* gcc/4.9: fix C++ exceptions and pthread_exit()Gravatar Thomas Petazzoni2014-08-171-43/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Following the introduction of the support for the musl C library, the support of C++ exceptions or features like pthread_exit() got broken even with other libraries such as glibc. This was reported as bug #7028. The problem was caused by the gcc patch needed to add support for musl, which modified the libgcc/unwind-dw2-fde-dip.c logic to decide whether USE_PT_GNU_EH_FRAME should be enabled or not. It completely removed the existing logic, replacing it by a single logic based on the definition of TARGET_DL_ITERATE_PHDR. However, this constant gets defined by the configure script only for Solaris, or Linux Musl platforms. For glibc/uClibc, the configure script does not define it, and therefore USE_PT_GNU_EH_FRAME is not defined, causing issues with exception handling. This patch fixes that by restoring all the logic of libgcc/unwind-dw2-fde-dip.c, and just adding the musl logic as one more case. It has been successfully runtime tested using the two code examples provided in bug #7208, with uClibc, musl and glibc. Cc: Krzysztof Wrzalik <kwrzalik@gmail.com> Cc: David Bachelart <david.bachelart@bbright.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc/4.8: fix C++ exceptions and pthread_exit()Gravatar Thomas Petazzoni2014-08-171-105/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Following the introduction of the support for the musl C library, the support of C++ exceptions or features like pthread_exit() got broken even with other libraries such as glibc. This was reported as bug #7028. The problem was caused by the gcc patch needed to add support for musl, which modified the libgcc/unwind-dw2-fde-dip.c logic to decide whether USE_PT_GNU_EH_FRAME should be enabled or not. It completely removed the existing logic, replacing it by a single logic based on the definition of TARGET_DL_ITERATE_PHDR. However, this constant gets defined by the configure script only for Solaris, or Linux Musl platforms. For glibc/uClibc, the configure script does not define it, and therefore USE_PT_GNU_EH_FRAME is not defined, causing issues with exception handling. This patch fixes that by restoring all the logic of libgcc/unwind-dw2-fde-dip.c, and just adding the musl logic as one more case. It has been successfully runtime tested using the two code examples provided in bug #7208, with uClibc, musl and glibc. Cc: Krzysztof Wrzalik <kwrzalik@gmail.com> Cc: David Bachelart <david.bachelart@bbright.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc/4.7: fix C++ exceptions and pthread_exit()Gravatar Thomas Petazzoni2014-08-171-38/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Following the introduction of the support for the musl C library, the support of C++ exceptions or features like pthread_exit() got broken even with other libraries such as glibc. This was reported as bug #7028. The problem was caused by the gcc patch needed to add support for musl, which modified the libgcc/unwind-dw2-fde-dip.c logic to decide whether USE_PT_GNU_EH_FRAME should be enabled or not. It completely removed the existing logic, replacing it by a single logic based on the definition of TARGET_DL_ITERATE_PHDR. However, this constant gets defined by the configure script only for Solaris, or Linux Musl platforms. For glibc/uClibc, the configure script does not define it, and therefore USE_PT_GNU_EH_FRAME is not defined, causing issues with exception handling. This patch fixes that by restoring all the logic of libgcc/unwind-dw2-fde-dip.c, and just adding the musl logic as one more case. It has been successfully runtime tested using the two code examples provided in bug #7208, with uClibc, musl and glibc. Cc: Krzysztof Wrzalik <kwrzalik@gmail.com> Cc: David Bachelart <david.bachelart@bbright.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc/arc-4.8-R3: add patch to enable more C++ features with uClibcGravatar Thomas Petazzoni2014-08-171-0/+273
| | | | | | | | | | | | | | | | | | | | | | | This commit fixes bug #7250, by allowing more libstdc++ features to be enabled with uClibc. libstdc++ wants an absolutely complete C99 support in the C library before enabling *any* feature that needs some C99 functions. However, uClibc doesn't provide C99 complex numbers, so libstdc++ disables a lot of C++ standard methods, even though they are not related to C99 complex numbers. A partial solution already existed in the patch 302-c99-snprintf.patch, but this commit replaces it by the more complete 850-libstdcxx-uclibc-c99.patch, which is highly inspired by https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58393, except that it doesn't rely on configure.ac checks, but simply on testing defined(__UCLIBC__) like was done in 302-c99-snprintf.patch. This allows to avoid having to autoreconf gcc, which is quite complicated to achieve. Reported-by: Richard <tarka.t.otter@gmail.com> Cc: Richard <tarka.t.otter@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc/4.9: add patch to enable more C++ features with uClibcGravatar Thomas Petazzoni2014-08-172-13/+273
| | | | | | | | | | | | | | | | | | | | | | | This commit fixes bug #7250, by allowing more libstdc++ features to be enabled with uClibc. libstdc++ wants an absolutely complete C99 support in the C library before enabling *any* feature that needs some C99 functions. However, uClibc doesn't provide C99 complex numbers, so libstdc++ disables a lot of C++ standard methods, even though they are not related to C99 complex numbers. A partial solution already existed in the patch 302-c99-snprintf.patch, but this commit replaces it by the more complete 850-libstdcxx-uclibc-c99.patch, which is highly inspired by https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58393, except that it doesn't rely on configure.ac checks, but simply on testing defined(__UCLIBC__) like was done in 302-c99-snprintf.patch. This allows to avoid having to autoreconf gcc, which is quite complicated to achieve. Reported-by: Richard <tarka.t.otter@gmail.com> Cc: Richard <tarka.t.otter@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc/4.8: add patch to enable more C++ features with uClibcGravatar Thomas Petazzoni2014-08-172-13/+273
| | | | | | | | | | | | | | | | | | | | | | | This commit fixes bug #7250, by allowing more libstdc++ features to be enabled with uClibc. libstdc++ wants an absolutely complete C99 support in the C library before enabling *any* feature that needs some C99 functions. However, uClibc doesn't provide C99 complex numbers, so libstdc++ disables a lot of C++ standard methods, even though they are not related to C99 complex numbers. A partial solution already existed in the patch 302-c99-snprintf.patch, but this commit replaces it by the more complete 850-libstdcxx-uclibc-c99.patch, which is highly inspired by https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58393, except that it doesn't rely on configure.ac checks, but simply on testing defined(__UCLIBC__) like was done in 302-c99-snprintf.patch. This allows to avoid having to autoreconf gcc, which is quite complicated to achieve. Reported-by: Richard <tarka.t.otter@gmail.com> Cc: Richard <tarka.t.otter@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc/4.7: add patch to enable more C++ features with uClibcGravatar Thomas Petazzoni2014-08-172-13/+273
| | | | | | | | | | | | | | | | | | | | | | | This commit fixes bug #7250, by allowing more libstdc++ features to be enabled with uClibc. libstdc++ wants an absolutely complete C99 support in the C library before enabling *any* feature that needs some C99 functions. However, uClibc doesn't provide C99 complex numbers, so libstdc++ disables a lot of C++ standard methods, even though they are not related to C99 complex numbers. A partial solution already existed in the patch 302-c99-snprintf.patch, but this commit replaces it by the more complete 850-libstdcxx-uclibc-c99.patch, which is highly inspired by https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58393, except that it doesn't rely on configure.ac checks, but simply on testing defined(__UCLIBC__) like was done in 302-c99-snprintf.patch. This allows to avoid having to autoreconf gcc, which is quite complicated to achieve. Reported-by: Richard <tarka.t.otter@gmail.com> Cc: Richard <tarka.t.otter@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc 4.9.1: add patch for PR60102Gravatar Gustavo Zacarias2014-08-062-1/+388
| | | | | | | | | | Fixes ICE for SPE ABI, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102 And re-enable gcc 4.9.1 for SPE. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* package: remove the trailing slash sign from <PKG>_SITE variableGravatar Jerzy Grzegorek2014-07-311-2/+2
| | | | | | | | | | | | Since the trailing slash is stripped from $($(PKG)_SITE) by pkg-generic.mk: $(call DOWNLOAD,$($(PKG)_SITE:/=)/$($(PKG)_SOURCE)) so it is redundant. This patch removes it from $(PKG)_SITE variable for BR consistency. Signed-off-by: Jerzy Grzegorek <jerzy.grzegorek@trzebnica.net> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc-final: disable shared build for staticGravatar Gustavo Zacarias2014-07-301-5/+24
| | | | | | | | | | | | | | Disable shared build for host-gcc-final when building for static targets. We really want static or shared, there's no such thing as "preferring static" since we can't choose with any degree of granularity for which packages. And it confuses linking scripts having both available at the same time. Fixes: http://autobuild.buildroot.net/results/c54/c54bdf88eff6d60c7001cb0e2cb6792cc75178db/ [Thomas: slightly amend the commit to factorize the installation of static libraries.] Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc 4.9.x: Exclude for PPC SPE because of PR60102Gravatar Gustavo Zacarias2014-07-181-0/+2
| | | | | | | | | | Exclude gcc 4.9.x for PowerPC SPE toolchains because of an ICE https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102 There's a patch available but it's somewhat intrusive with PPC in general and hasn't been well tested yet. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: bump 4.9.x series to version 4.9.1Gravatar Gustavo Zacarias2014-07-179-16/+2
| | | | | Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: remove versions 4.3.x and 4.6.xGravatar Thomas Petazzoni2014-07-1021-729/+0
| | | | | | | | | | | | | | | | | | | | | | | | Those gcc series are old and are not used as the default versions for any of the architectures we support, so this commit gets rid of them. The gcc 4.3.x series technically remains used by the LPC32xx defconfigs we have: configs/ea3250_defconfig:BR2_GCC_VERSION_4_3_X=y configs/fdi3250_defconfig:BR2_GCC_VERSION_4_3_X=y configs/phy3250_defconfig:BR2_GCC_VERSION_4_3_X=y Back when those defconfigs were introduced, gcc 4.3 was chosen because it was the only one capable of building a fully working kernel for those ARM-based platforms. However, the original submitter, Alexandre Belloni, no longer has access to the hardware platforms, so he is unable to test if newer gcc versions have fixed the problem. It certainly doesn't make sense to keep gcc 4.3.x just for those three boards, so we'll wait for someone actually using those defconfigs to complain. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc 4.8.3: add patch for PR60155Gravatar Gustavo Zacarias2014-07-021-0/+111
| | | | | | | | Fixes: http://autobuild.buildroot.net/results/6c8/6c8c3cb19a6f98f6f27986b671d48ee092fdf7cc/ Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc: drop redundant explicit version handling for aarch64Gravatar Peter Korsgaard2014-06-131-1/+0
| | | | | | Not needed anymore now that we default to gcc 4.8.x Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc 4.8.x does not compile a working kernel for sparcGravatar Waldemar Brodkorb2014-06-131-3/+4
| | | | | | | | | | | | | | | Since the switch to 4.8.x as default, the qemu-sparc target is broken. For a gcc bug report see here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60624 Switch back to gcc 4.7.x as default for sparc. Disable 4.8/4.9 as suggested by Thomas Petazzoni. I even disabled gcc snapshot, it works right now, because it is an old 4.8.0 snapshot by default, but as soon as this is updated sparc build will break. Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc: bump 4.7.x series to version 4.7.4Gravatar Gustavo Zacarias2014-06-1311-30/+1
| | | | | Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* gcc: add a BR2_GCC_ENABLE_GRAPHITE optionGravatar Steve Thomas2014-06-092-0/+20
| | | | | | | | | | | | | The gcc graphite optimisations such as loop-interchange, blocking and loop-flattening, also known as graphite are an optional feature of gcc that is very well supported since about gcc version 4.5. This patch adds support for graphite for the toolchain as an optional flag for versions 4.8 onwards as an optional flag, that is disabled by default. Signed-off-by: Steve Thomas <scjthm@live.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* gcc: switch to gcc 4.8.x as the default compiler versionGravatar Thomas Petazzoni2014-06-011-1/+1
| | | | | | | | | | | | gcc 4.7.x is going to be retired soon, and now that gcc 4.9.0 is out, it's time for Buildroot to switch to gcc 4.8.x as the default gcc compiler version. See https://gcc.gnu.org/ml/gcc/2014-05/msg00324.html for details about gcc 4.7.x life cycle. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* powerpc: add powerpc64 and powerpc64le supportGravatar Cody P Schafer2014-05-261-6/+6
| | | | | | | | | | This enables powerpc64 and powerpc64le. Currently, le needs at least glibc 2.19 and gcc 4.9.0. For gdb, 7.7.1 works (added in an earlier patch). [Peter: also disallow gcc 4.8 for ppc64le] Signed-off-by: Cody P Schafer <cody@linux.vnet.ibm.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>