Commit Graph

158 Commits

Author SHA1 Message Date
Andre Heider
acc8c2d829
toolchain/gcc: enable zstd support
LTO object files will now be compressed using zstd.

Compressing debug sections with zstd will have to wait for GCC 13,
which adds support for -gz=zstd.

NOTE: wiping the ccache is strongly recommended, not doing so might
yield build error later on:
"lto1: internal compiler error: original not compressed with zstd"

Signed-off-by: Andre Heider <a.heider@gmail.com>
2023-03-17 02:08:25 +01:00
Andre Heider
ad564cb019
toolchain/gcc: clean up CFLAGS
Instead of having two different ways to pass flags to the gcc build
process, add them as configure args, which is a reliable way to let
gcc pass them around to its various pieces.

Also add CXXFLAGS, since gcc started to use c++ for itself recently
(~10 years ago now).

Signed-off-by: Andre Heider <a.heider@gmail.com>
2023-02-09 02:53:35 +01:00
Andre Heider
4b8b89da50
toolchain/gcc: use explicit configure args
Spell out what we want to enable or disable. This prevents host libs to leak in,
so everyone get the same feature set.

Signed-off-by: Andre Heider <a.heider@gmail.com>
2023-02-09 02:53:35 +01:00
Christian Marangi
9590e1155d
toolchain/gcc: use STAGING_DIR_HOST instead of hardcoding default
Use STAGING_DIR_HOST to reference staging host directory instead of
hardcoding it to default path.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2023-01-09 21:33:19 +01:00
Hauke Mehrtens
a58b29ded7 toolchain/gcc: Fix GCC version check
The version check which sets GCC_VERSION_FILE to the correct value only
worked when the advanced options menu was active and not when it was not
active.

Thank you Tony Butler for the fix.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2023-01-09 00:23:41 +01:00
Hauke Mehrtens
9db3caa749 toolchain: gcc: Remove gcc 10.x support
This compiler is old and was never used by default in OpenWrt.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2022-10-23 22:53:33 +02:00
Hauke Mehrtens
a14544d1bb toolchain: gcc: Remove gcc 8.x support
This compiler is old and not used by OpenWrt for some time now.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2022-10-23 22:53:33 +02:00
Christian Marangi
b51c52533b
Revert "toolchain/gcc: use zstd from tools"
This reverts commit e6cc3ded07.
Require more testing as it does cause compilation error.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2022-09-27 23:18:37 +02:00
Rosen Penev
e6cc3ded07
toolchain/gcc: use zstd from tools
pkgconfig is not used for some reason. Match other used tools.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2022-09-27 16:38:14 +02:00
Nick Hainke
d7382cc0e4
toolchain: gcc: improve patch handling by introducing major version
Every minor version bump of a major version will result in a huge patch
diff because of the moving of all the patches from version e.g. 11.2.0 to
11.3.0. This commit only use the major version for the patch folders to
differentiate between the different gcc versions. This will significantly
improve the reviewing of the smaller version bump patches and help to see
what really changed in a minor version bump.

Signed-off-by: Nick Hainke <vincent@systemli.org>
2022-09-11 11:24:57 +02:00
Nick Hainke
fac1f38d75 toolchain: bump GCC 12 to 12.2.0
Refreshed patches:
- 910-mbsd_multi.patch
- 970-macos_arm64-building-fix.patch

Signed-off-by: Nick Hainke <vincent@systemli.org>
2022-08-28 18:29:10 +02:00
Ivan Maslov
3c06a344e9
toolchaini/gcc: fix libstdc++ dual abi model
libstdcxx-dual-abi needs to be enabled to actually support C++11 ABI.
Enable the config flag to also permit support of .NET 6 development on
OpenWrt.

Signed-off-by: Ivan Maslov <avenger_msoft@mail.ru>
[ reword commit description and title ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2022-07-07 13:55:32 +02:00
Rui Salvaterra
c4bd303086 toolchain: add support for GCC 12
GCC 12.1 is out. Add support for it.

Deleted (upstreamed):
011-v12-configure-define-TARGET_LIBC_GNUSTACK-on-musl.patch
931-libffi-fix-MIPS-softfloat-build-issue.patch

Deleted (unneeded?)
970-macos_arm64-building-fix.patch

Other patches manually rebased due to C++ conversion and consequent file name
changing (.c to .cc).

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
2022-06-01 14:59:49 +02:00
Rui Salvaterra
f4cdef2191 toolchain: bump GCC 11 to 11.3.0
Remove an upstreamed patch and rebase all remaining patches.

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
2022-06-01 13:46:31 +02:00
Stijn Tintel
6e2556963d toolchain/gcc: use ELFv2 ABI on ppc64 with musl
At configuration time, gcc assumes that ppc64be targets use the ELFv1
ABI, and ppc64le targets use the ELFv2 ABI. However, musl libc does not
support the ELFv1 ABI on ppc64 at all, regardless of the endianness.

Therefore, when building for a ppc64 arch and with musl libc, instruct
gcc to use the ELFv2 ABI.

See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93157 for more info.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Reviewed-by: Rui Salvaterra <rsalvaterra@gmail.com>
2021-12-21 21:35:29 +02:00
Paul Spooren
62ed1af15d build: remove GCC7 support
The development branch is now on version 10, we shouldn't drag to many
old versions and therefore drop at least 7.x.

Signed-off-by: Paul Spooren <mail@aparcar.org>
Acked-by: Rosen Penev <rosenp@gmail.com>
Acked-by: Rui Salvaterra <rsalvaterra@gmail.com>
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
Acked-by: Aleksander Jan Bajkowski <A.Bajkowski@stud.elka.pw.edu.pl>
2021-09-19 11:26:00 -10:00
Paul Spooren
244847dae9 build: remove GCC9 support
gcc9 was never used within a release and the development branch is
already on version 10, no need to keep this in tree.

Signed-off-by: Paul Spooren <mail@aparcar.org>
Acked-by: Rosen Penev <rosenp@gmail.com>
Acked-by: Rui Salvaterra <rsalvaterra@gmail.com>
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
Acked-by: Stijn Tintel <stijn@linux-ipv6.be>
Acked-by: Aleksander Jan Bajkowski <A.Bajkowski@stud.elka.pw.edu.pl>
2021-09-19 11:21:02 -10:00
Rui Salvaterra
0af0ec1b7d toolchain/gcc: bump gcc 11 to 11.2
Patches automatically refreshed.

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
2021-08-08 19:50:46 +02:00
Ansuel Smith
0f499372c0 toolchain: add gcc 11 version
Add gcc 11 version. Same patches of gcc 10.

Build tested on: ipq806x ipq807x
Run tested on: ipq806x ipq807x

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
[refresh patches]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2021-07-17 19:12:11 +02:00
Hauke Mehrtens
acb0788b8e toolchain: gcc: Update to version 10.3.0
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2021-04-11 23:01:30 +02:00
Rosen Penev
01e4274c21 toolchain/libstdcpp: disable dual ABI and default to new
GCC 5.1 changed the std::string ABI in order to properly support C++11.
For compatibility with libraries compiled with the older ABI, that is,
linking between old-abi.so and new-abi.bin, both ABIs are enabled. In
terms of OpenWrt, all packages are compiled with the same toolchain,
which means these issues do not need to be handled.

Most importantly, this results in a significant size reduction of
libstdpp:

Before:

450794 bytes

After:

327752 bytes

Tested with all OpenWrt packages.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-01-26 15:23:06 -10:00
Hauke Mehrtens
080dc619d4 toolchain: gcc: Remove support for GCC 5
GCC was used in 17.01 as the default compiler the last time. We do not
test this old GCC version any more and there are some known problems it
fails to compile the U-Boot for the Allwinner A64 SoC.

Just remove it to make it clear that we will not support this old GCC
version any more.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Acked-by: Paul Spooren <mail@aparcar.org>
2020-12-16 22:11:16 +01:00
DENG Qingfang
21abc09cd6 toolchain: Update GCC 10 to version 10.2.0
Signed-off-by: DENG Qingfang <dengqf6@mail2.sysu.edu.cn>
2020-08-31 22:11:23 +02:00
Syrone Wong
bf540f333c toolchain/gcc: Add GCC 10.1.0 config
Add needed config changes and tarball hash for new GCC version.

Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
[added missing commit description]
Signed-off-by: Petr Štetiar <ynezz@true.cz>
2020-07-11 13:33:28 +02:00
Ian Cooper
b933f9cf0c toolchain: remove gcc libssp and use libc variant
Removes the standalone implementation of stack smashing protection
in gcc's libssp in favour of the native implementation available
in glibc and uclibc. Musl libc already uses its native ssp, so this
patch does not affect musl-based toolchains.

Stack smashing protection configuration options are now uniform
across all supported libc variants.

This also makes kernel-level stack smashing protection available
for x86_64 and i386 builds using non-musl libc.

Signed-off-by: Ian Cooper <iancooper@hotmail.com>
2020-06-17 23:57:07 +02:00
Rosen Penev
cf22c4435e toolchain/gcc: eliminate uClibc atexit hack
This seems to be over 10 years old. It doesn't seem to be needed anymore.

Tested on malta with uClibc (selected BROKEN).

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-04-26 21:45:41 +02:00
Rosen Penev
1647790ae6 toolchain/gcc: remove uclibc hack
This was introduced with 014d3b98b9 , which
is almost 10 years old. uClibc-ng does not suffer from this problem.

Note that this hack prevents libstdc++ from using C++11 math functions.

Tested by removing all of the mpd patches designed to fix this and
compiling.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-04-13 22:40:19 +02:00
Hauke Mehrtens
cb44ab4f5d toolchain: Update GCC 9 to version 9.3.0
The removed patch is included in GCC 9.3.0.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2020-03-18 23:55:51 +01:00
Hauke Mehrtens
db70077668 toolchain: Update GCC 8 to version 8.4.0
The removed patch is included in GCC 8.4.0.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2020-03-18 23:55:51 +01:00
Yorkie Liu
65a561fd09 toolchain/gcc: correct the check expr for newer clang
This fixes gcc build error within clang 11.0, it tweaks the version
string from LLVM to clang.

Signed-off-by: Yorkie Liu <yorkiefixer@gmail.com>
2019-12-23 00:04:18 +01:00
Koen Vandeputte
e5c18dad14 toolchain/gcc: bump to 7.5.0
This updates the GCC to the next minor release which fixes +213 bugs.
Tested on ARMv6, ARMv7, MIPS R2, x86

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
2019-11-19 14:59:03 +01:00
Hauke Mehrtens
b8b7d4cbca gcc: Update gcc 9.X to version 9.2.0
This updates the GCC version 9.X to version 9.2.0.
The removed patches are applied upstream.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2019-08-19 01:02:43 +02:00
Joseph Benden
88c07c6552 toolchain: Add GCC 9.1.0 release
Most of the patches are copied over from GCC 8.3.

The following patches are backported from the GCC 9.X development branch:
toolchain/gcc/patches/9.1.0/970-recompute-dom-fast-queries-before-vn.patch
toolchain/gcc/patches/9.1.0/975-g++-ICE-with-generic-lambda.patch

The specs file changed with gcc 9, now it contains "%@{L*}" instead of
"%{L*}" in older GCC versions.

Signed-off-by: Joseph Benden <joe@benden.us>
2019-06-16 16:40:08 +02:00
Alexander Couzens
79948e9d61
replace links towards lede-project.org with openwrt.org
Modify VERSION_SUPPORT_URL VERSION_REPO
Replace BUGS variable in toolchain/gcc/common.mk

Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
2019-06-11 01:46:53 +02:00
Boris Krasnovskiy
4cf991bedb toolchain: ARM: Fix option conflict with multiarch
This problem exposed when compiling glibc, but applicable across the
board. gcc compiles runtime libraries for all supported architectures,
unless otherwise specified, and later selects applicable library based
-m[arch,cpu,*] options, thus these options should not be passed to gcc
as they break the compilation process.

Signed-off-by: Boris Krasnovskiy <borkra@gmail.com>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
[modified so it only touches ARM - I'm too chicken, changed authors email]
2019-03-25 21:19:05 +01:00
Boris Krasnovskiy
8dcc108760 toolchain: ARM: Fix toolchain compilation for gcc 8.x
Set the toolchain's ARM CPU and FPU architectures by utilizing' gcc's
--with-cpu / --with-fpu configure options that: "Specify which cpu
variant the compiler should generate code for by default. cpu will
be used as the default value of the -mcpu= switch."

This will resolve the following kernel compilation failures under
gcc 8.x on ARM because the kernel wants to set (possibly conflicting)
optimization flags.

.../ccyVnmrs.s:204: Error: selected processor does not support `dmb ish' in ARM mode
.../ccyVnmrs.s:215: Error: architectural extension `mp' is not allowed for the current base architecture
.../ccyVnmrs.s:216: Error: selected processor does not support `pldw [r4]' in ARM mode

Because this is a big change, the .config and toolchain need to be
refreshed (as in removed and regenerated).

Reported-by: Ansuel Smith <ansuelsmth@gmail.com>
Reported-by: Daniel Engberg <daniel.engberg.lists@pyret.net> [#1203]
Signed-off-by: Boris Krasnovskiy <borkra@gmail.com>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [extended commit message,
removed now-deprecated CPU_CFLAGS, changed author to gmail address]
2019-03-25 21:15:58 +01:00
Daniel Engberg
075c76ea67 toolchain: Remove GCC 7.1 for ARC targets
Remove GCC 7.1 for ARC targets

Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
2019-03-20 18:23:39 +01:00
Daniel Engberg
40aec89b4c toolchain: Update to GCC 8.3.0
Update GCC to 8.3.0
Refresh patches
Allow GCC to be used for ARC
Source: https://github.com/openwrt/openwrt/pull/1803#issuecomment-462334890

Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
2019-02-26 23:20:04 +01:00
Daniel Engberg
700c0edc06 toolchain/gcc: Remove workaround for GCC 4.8
GCC 4.8 was removed a long time ago...

Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
2019-02-26 23:20:04 +01:00
Hauke Mehrtens
af1aa07b07 gcc: update to version 7.4.0
This updates the GCC to the next minor release which fixes 178 bugs.
The two removed patches are included in gcc 7.4.0

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
2018-12-15 15:25:03 +01:00
Syrone Wong
2fb95f7142 toolchain/gcc: update 8.x to 8.2.0
This release fixes LTO link-time performance problems and C++ bug introduced in GCC 8.1

Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
2018-08-20 09:24:33 +02:00
Syrone Wong
139f99c058 toolchain/gcc: add GCC 8.1.0
Changes compared to GCC 7.x

001-revert_register_mode_search.patch dropped

The underlying issue is described at the end of
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58139

It is fixed by the upstream commit:
3fa2798aa8

020-PR-libstdc-81797-Add-.NOTPARALLEL-to-include-Makefil.patch dropped due to already upstream

100-PR-rtl-optimization-83496.patch dropped due to already upstream

910-mbsd_multi.patch
modified to fix ambiguous overloaded inform() call error

gcc/input.h
header: define UNKNOWN_LOCATION ((source_location) 0)

-        inform (0, "someone does not honour COPTS correctly, passed %d times",
-         honour_copts);
+        inform (UNKNOWN_LOCATION, "someone does not honour COPTS correctly, passed %d times",
+         honour_copts);

940-no-clobber-stamp-bits.patch dropped due to fixed upstream by another way
upstream commit: 87b2d547f8

950-cpp_file_path_translation.patch dropped, Both -fmacro-prefix-map and -ffile-prefix-map are added
to gcc 8.1.0, if I understand it correctly, we should use -fmacro-prefix-map
usage: -fmacro-prefix-map=@var{old}=@var{new}
upstream commit: 859b51f836

-iremap exists as a flag for a long time, for backward compatibility, I think we should keep the
variable name unchanged but change its value in rules.mk for gcc 8.x and higher.

Compile and run tested on x86_64

Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
2018-07-22 17:16:47 +02:00
Felix Fietkau
29e2f9ea5b gcc: remove support for version 6.3.0
It is obsoleted by gcc 7

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2018-06-05 09:27:33 +02:00
Hauke Mehrtens
1a8523c835 toolchain: gcc: update 7.x to 7.3.0
This version still generates broken code in our setup for MIPS.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2018-01-27 19:54:52 +01:00
Julien Dusser
241e6dd3e9 build: cleanup SSP_SUPPORT configure option
Configure variable SSP_SUPPORT is ambiguous for packages (tor, openssh,
avahi, freeswitch). It means 'toolchain supporting SSP', but for toolchain
and depends it means 'build gcc with libssp'.

Musl no longer uses libssp (1877bc9d8f), it has internal support, so
SSP_SUPPORT was disabled leading some package to not use SSP.

No information why Glibc and uClibc use libssp, but they may also provide
their own SSP support. uClibc used it own with commit 933b588e25 but it was
reverted in f3cacb9e84 without details.

Create an new configure GCC_LIBSSP and automatically enable SSP_SUPPORT
if either USE_MUSL or GCC_LIBSSP.

Signed-off-by: Julien Dusser <julien.dusser@free.fr>
2018-01-27 19:02:48 +01:00
Julien Dusser
55779569eb toolchain: add gcc configure default PIE and SSP
GCC supports starting version 5 --enable-default-ssp and starting version 6
--enable-default-pie.

It produces hardened binaries by default without dealing with package
compilation flags.

Signed-off-by: Julien Dusser <julien.dusser@free.fr>
2018-01-27 19:02:47 +01:00
Evgeniy Didin
e47fe3284f toolchain/arc: update to the most recent release arc-2017.09
This commit finally bumps ARC tools to the most recent arc-2017.09 release version.

ARC GNU tools of version arc-2017.09 bring some quite significant changes like:
 * Binutils v2.29 with additional ARC patches
 * GCC 7.1.1 with additional ARC patches

More information on this release could be found here:
  https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2017.09-release

Signed-off-by: Evgeniy Didin <Evgeniy.Didin@synopsys.com>
CC: Alexey Brodkin <abrodkin@synopsys.com>
CC: John Crispin <john@phrozen.org>
2018-01-27 16:46:44 +01:00
Zoltan HERPAI
d2c06eb075 merge: etc: update remaining files
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
2017-12-08 19:41:18 +01:00
Felix Fietkau
7e2c271a80 gcc: remove support for libgcj/java
It has been removed in gcc 7

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2017-11-02 15:58:45 +01:00
Ryan Mounce
d67979b9d6 toolchain/gcc: update 5.x to 5.5.0
This is the final bugfix release in the gcc-5 series.

Compile and run tested on macOS 10.13 (Xcode 9), mvebu/ar71xx.

Removed redundant patch for macOS (backported upstream by yours truly)

Signed-off-by: Ryan Mounce <ryan@mounce.com.au>
2017-10-15 00:24:22 +02:00