587 Commits
Author SHA1 Message Date
Bernd Kuhls ca02e86f88 package/gcc/15.2.0: fix build with glibc 2.43
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
2026-03-08 17:39:32 +01:00
Peter Korsgaard 0af159ae2b Merge branch 'next'
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-09-08 15:36:35 +02:00
Thomas Petazzoni b1dd235ad0 package/gcc: bump 15.x series to 15.2.0
Announcement:
https://gcc.gnu.org/pipermail/gcc-announce/2025/000189.html

GCC 15.2 is a bug-fix release from the GCC 15 branch
containing important fixes for regressions and serious bugs in
GCC 15.1 with more than 123 bugs fixed since the previous release.

For the list of bugs fixed in this version, see:
https://gcc.gnu.org/gcc-15/changes.html#15.2

One patch is renamed to match the filename generated by "git
format-patch" out of the box.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
[Julien: add link to the bug list in commit log]
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-08-13 16:15:04 +02:00
Thomas Petazzoni c9c8624d45 package/gcc: backport upstream fix for glibc 2.42 build
glibc 2.42 drops <termio.h>, so the libsanitizer code needs to be
adjusted accordingly, by backporting upstream gcc fixes.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
[Julien:
 - renumbered 14.3.0/0003 patch to 14.3.0/0004
 - renumbered 15.1.0/0002 patch to 15.1.0/0004
]
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-08-12 21:28:23 +02:00
Romain Naour 4df243b470 package/gcc: add microblaze fix for GCC bug 121432
This is a temporary fix under discussion [1], but it resolves the
problem, by implementing the same behavior as GCC 14.x for register
allocation on Microblaze.

Tested with qemu_microblazeel_mmu_defconfig and used to generate
Microblaze toolchains for the Bootlin toolchains 2025.08-1 [2].

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121432#c10
[2] https://github.com/bootlin/buildroot-toolchains/commit/83947c7bb6158072bc2f52b58e90891cd3dc04a2

Signed-off-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-08-11 11:22:25 +02:00
Neal Frager 88d58d8ef8 package/gcc: add microblaze atomic support
This patch adds atomic test and set support for the microblaze arch.  A patch
is required to use atomic test and set with gcc 14 and 15 which has been
submitted upstream.

To test this patch with gcc 14:
$ cat > .config<<EOF
BR2_microblazeel=y
BR2_GCC_VERSION_14_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_PACKAGE_ACPITOOL=y
EOF
$ make olddefconfig
$ make

To test this patch with gcc 15:
$ cat > .config<<EOF
BR2_microblazeel=y
BR2_GCC_VERSION_15_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_PACKAGE_ACPITOOL=y
EOF
$ make olddefconfig
$ make

Fixes: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118280
Upstream: https://patchwork.ozlabs.org/project/gcc/list/?series=466193

Signed-off-by: Neal Frager <neal.frager@amd.com>
Tested-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-08-11 11:22:04 +02:00
Thomas Petazzoni 99df6586c5 package/gcc: 2024.12 ARC gcc is in fact based on GCC 14.x
Contrary to what was done in
8ef2ba2ec3 ("package/{gcc, binutils,
gdb}: update ARC version to 2024.12"), the ARC gcc version 2024.12 is
in fact based on GCC 14.2. This can be verified at:

  https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2024.12-release

Which states "GCC 14.2 with ARC patches".

Fixes: 8ef2ba2ec3 ("package/{gcc, binutils, gdb}: update ARC version to 2024.12")
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
2025-08-10 16:03:11 +02:00
Thomas Petazzoni 8ef2ba2ec3 package/{gcc, binutils, gdb}: update ARC version to 2024.12
This commit updates the ARC toolchain components to the 2024.12
release, keeping the same patches.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-08-07 23:00:42 +02:00
Thomas Petazzoni 2fbf98da7c package/gcc: drop stale 13.3.0 patches
Commit 0b8b72d2fe bumped gcc 13.x from
13.3.0 to 13.4.0 but forgot to drop the gcc 13.3.0, so let's remove
those patches.

Cc: Kadambini Nema <kadambini.nema@gmail.com>
Fixes: 0b8b72d2fe
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-07-31 15:00:13 +02:00
Fabien Lehoussel b2801c7bce package/gcc/gcc-final: fix CPE identification
Fix the CPE (Common Platform Enumeration) identification in the
gcc-final package to ensure proper vulnerability tracking through the
NVD database:

https://nvd.nist.gov/products/cpe/search/results?keyword=cpe:2.3:a:gnu:gcc

Signed-off-by: Fabien Lehoussel <fabien.lehoussel@smile.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2025-07-30 22:44:29 +02:00
Jiaxun Yang 286f5bacd7 package/gcc: Introduce BR2_GCC_TARGET_SIMD option
Introduce BR2_GCC_TARGET_SIMD for gcc to handle --with-simd/-msimd
present at loongarch's gcc options.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Reviewed-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-07-05 19:45:38 +02:00
Julien Olivain 49dbfba22f package/gcc: add logic to hide gcc 15 for unsupported CPUs
This logic is to prepare for future gcc versions and their new
supported CPUs. As of today, gcc 15 is the latest gcc version
and all architectures and CPUs in Buildroot are supported by
this version.

Signed-off-by: Julien Olivain <ju.o@free.fr>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
2025-07-02 15:14:47 +02:00
Julien Olivain 6f231d3003 package/gcc/Config.in.host: hide gcc version for unsupported CPUs
When a new gcc version is introduced, for example gcc 15 in
commit [1], it should have also added a "depends on
!BR2_ARCH_NEEDS_GCC_AT_LEAST_15" to the previous gcc version.

This logic is described for external toolchains in commit [2],
for example. The internal Buildroot toolchains should have the
same logic. This logic existed for previous gcc version. See for
example the removal of gcc 12 in commit [3].

There is usually no problem, because all the three latest active gcc
versions supports all CPUs present in Buildroot.

However, the commit [4] recently added the support for the Arm
Cortex-A720 CPU, which needs at least gcc 14. Since there is no
logic preventing the selection of the gcc version, it is possible
to select an unsupported gcc version (i.e. gcc 13).

In such a case, the host-gcc-initial package configuration fails
with output:

    Unknown cpu used in --with-cpu=cortex-a720

This commit fixes the issue by adding those missing dependencies.

Fixes:
https://autobuild.buildroot.org/results/918b90aee0b65f01efc241622015cb847b4e23a8/

[1] https://gitlab.com/buildroot.org/buildroot/-/commit/75891397abe60dbe3d82a1ec39654ff81d1b1406
[2] https://gitlab.com/buildroot.org/buildroot/-/commit/f577d8218f3f18016aa084255e337a7f589eeed1
[3] https://gitlab.com/buildroot.org/buildroot/-/commit/58cf7c51da3ae4804332f68ee934e153d695d047#66f7e875db173e5538d3511c8297acc1ba30da33_27_25
[4] https://gitlab.com/buildroot.org/buildroot/-/commit/de374e06d856dd5079fc792c883b06563af950b0

Cc: Romain Naour <romain.naour@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2025-06-28 22:42:23 +02:00
Kadambini Nema e9227311d9 package/gcc: update to 14.3.0
Release announcement:
https://gcc.gnu.org/pipermail/gcc-announce/2025/000186.html

List of bugs which were resolved in 14.3.0:
https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=14.3

Drop upstream patch 0003-libquadmath-Fix-up-libquadmath-math-sqrtq.c-compilat.patch
https://gcc.gnu.org/cgit/gcc/commit/?id=3fe5720430a9ba61ed7562aac4d758cc77d49a28

Signed-off-by: Kadambini Nema <kadambini.nema@gmail.com>
[Julien:
 - rebase on branch next
 - fix patch 0003 upstream merge URL
]
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-06-08 16:21:21 +02:00
Kadambini Nema 0b8b72d2fe package/gcc: update to 13.4.0
Release announcement:
https://gcc.gnu.org/pipermail/gcc-announce/2025/000187.html

Changelog:
https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=13.4

Signed-off-by: Kadambini Nema <kadambini.nema@gmail.com>
[Julien: fix check-package error by fixing .checkpackageignore entry]
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-06-08 16:14:38 +02:00
Thomas Petazzoni b5f14d65cb package/gcc: drop useless condition on BR2_GCC_ENABLE_GRAPHITE
For a long while now, we only support building GCC >= 8.x, so the
dependency of BR2_GCC_ENABLE_GRAPHITE on GCC >= 5.x is useless, drop
it, together with the corresponding Config.in comment.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-05-19 18:46:13 +02:00
Thomas Petazzoni 62e784cb97 package/gcc: drop dead code related to BR2_GCC_SUPPORTS_LIBCILKRTS
The libcilkrts library was removed from gcc 8.x, and gcc 8.x is the
oldest version we allow building (to still support PowerPC SPE). So it
means the BR2_GCC_SUPPORTS_LIBCILKRTS is basically dead code because:

	default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8

Will never evaluate to 'y' in current Buildroot.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-05-19 18:46:13 +02:00
Thomas Petazzoni 5fd75bfb02 package/gcc: drop stale hash
The hash for the GCC 10.4.0 tarball should have been removed a long
time ago, when support for GCC 10.x has been removed.

Fixes: d37a8f3a2e ("package/gcc: remove gcc 10.x")
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-05-19 18:46:13 +02:00
Thomas Petazzoni 58cf7c51da package/gcc: drop support for GCC 12.x
Now that we have added support for GCC 15.x, made GCC 14.x the
default, let's drop support for GCC 12.x.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-05-19 18:46:13 +02:00
Thomas Petazzoni 1e1fafa1f0 package/gcc: switch to GCC 14.x as the default
Now that GCC 15.x support has been added, follow our usual strategy of
making GCC 14.x the default GCC version.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-05-19 18:46:13 +02:00
Thomas Petazzoni 75891397ab package/gcc: add support for GCC 15.x
Changelog:

  https://gcc.gnu.org/gcc-15/changes.html

NIOS II support has been removed, and we removed it from Buildroot
some time ago.

AArch64 ILP32 support has been deprecated, but we never supported it
in Buildroot.

In the stack of patches, just keep patch 0001.

Indeed, from 14.2.0:

- 0002-libsanitizer-also-undef-_TIME_BITS-in-sanitizer_proc.patch is
  upstream as of commit fa321004f3f6288d3ee2eefa6b02177131882dca

- 0003-libquadmath-Fix-up-libquadmath-math-sqrtq.c-compilat.patch is
  upstream as of commit 3ac02e67503ccffa3dfeeffc0a60fce6bdaca43b

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-05-19 18:46:13 +02:00
Thomas Petazzoni 5f5e351043 package/gcc: disable GCC 14.x on Microblaze
GCC 14.x is badly broken on Microblaze, with important functions
missing from libatomic, causing build failures in a huge number of
packages. The issue has been reported upstream at
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118280 but still isn't
fixed. For the time being, let's disable GCC 14.x on Microblaze.

Fixes:

  http://autobuild.buildroot.net/results/6fea0ecaa90b24da4e5575565b88018ea95e72c0/

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-02-08 21:38:50 +01:00
Romain Naour 8fe1935fcc package/gcc: remove nios2 handling
Buildroot internal toolchain backend for nios2 was removed, so
remove nios2 handling for gcc package.

Signed-off-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Julien Olivain <ju.o@free.fr>
2025-01-15 21:30:27 +01:00
Peter Korsgaard d5bb8fff5f package/gcc: fix explicitly typo
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-09-10 22:49:53 +02:00
Thomas Petazzoni 4780e11726 package/gcc: add GCC patch to fix PowerPC64/musl build issue
PowerPC64/musl toolchains currently fail to build with:

In file included from ../../../libquadmath/math/sqrtq.c:13:
../../../libquadmath/math/../../libgcc/soft-fp/quad.h:69:1: error: unable to emulate 'TF'
   69 | typedef float TFtype __attribute__ ((mode (TF)));
      | ^~~~~~~
make[4]: *** [Makefile:979: math/sqrtq.lo] Error 1

This issue has been reported upstream as
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116007, and has been
fixed as
https://gcc.gnu.org/g:3ac02e67503ccffa3dfeeffc0a60fce6bdaca43b.

This commit simply backports the upstream GCC fix. This issue was new
with GCC 14.x, so only GCC 14.x needs to be fixed.

Fixes:

  http://autobuild.buildroot.org/results/529bec7ef338842030d3340d9b21d8fd16d8639d/

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-08-27 13:31:31 +02:00
Waldemar Brodkorb f3148385f8 package/gcc: update to 14.2.0
List of bugs which were resolved in 14.2.0:
https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=14.2

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-08-02 08:19:22 +02:00
Thomas Petazzoni 81a4b6e7b8 package/gcc: fix build with BR2_TIME_BITS_64=y
On the architectures that supports libsanitizer (part of gcc), the
build is currently failing with BR2_TIME_BITS_64=y. This is because
some code in libsanitizer unsets _FILE_OFFSET_BITS, but building code
with _FILE_OFFSET_BITS unset, but _TIME_BITS set isn't legal.

To fix this, this commit backports two changes:

- One change to also unset _TIME_BITS in
  sanitizer_platform_limits_posix.cpp. This change is upstream in
  LLVM, and already part of GCC 14.x, so we only bringing it to GCC
  12.x and GCC 13.x.

- A second change doing the same modification, but in
  sanitizer_procmaps_solaris.cpp, which as crazy as it might sound,
  also gets compiled on Linux platforms (but to basically an empty
  file). This change has been submitted upstream to both LLVM and gcc.

Notes:

 - the special PowerPC SPE version of GCC cannot be affected, as only
   uClibc-ng is used for this architecture, and uClibc-ng doesn't use
   _TIME_BITS=64 (but now default to 64-bit time_t on 32-bit
   architectures, like musl does).

 - the special ARC version doesn't need patching because libsanitizer
   doesn't support the ARC architecture, so it doesn't get built

Fixes:

  http://autobuild.buildroot.net/results/ff2dbfdabf0bb6a0d82ea8a80122ab97fd75bd3f/
  https://gitlab.com/buildroot.org/buildroot/-/issues/16

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-07-30 09:29:44 +02:00
Thomas Petazzoni 41f2567618 package/gcc: disallow Fortran on gcc 12/13 on Microblaze
The build of gcc with Fortran support is broken on gcc 12.x and gcc
13.x, it fails with:

../../../libgfortran/generated/bessel_r8.c: In function 'bessel_yn_r8':
../../../libgfortran/generated/bessel_r8.c:178:1: internal compiler error: in gen_reg_rtx, at emit-rtl.cc:1167

This issue has been fixed in gcc 14.x, which builds a Microblaze
Fortran-capable toolchain successfully.

Since we're not really interested in figuring out the commit that
fixed the problem, let's simply disallow the selection of Fortran with
gcc12/13 on Microblaze.

Fixes:

  http://autobuild.buildroot.net/results/5b4eee1d9b119c9f923f9518618f45a6482ddc85/

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
2024-07-13 17:53:40 +02:00
Thomas Petazzoni b445472090 package/gcc: bump 12.x series to 12.4
https://gcc.gnu.org/gcc-12/changes.html describes the changes of gcc
12.4 as follows:

  This is the list of problem reports (PRs) from GCC's bug tracking
  system that are known to be fixed in the 12.4 release. This list
  might not be complete (that is, it is possible that some PRs that
  have been fixed are not listed here).

With a link to
https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.4

There are 654 relevant commits (ignoring the "daily bumps") between
gcc 12.3.0 and 12.4.0, which is too much to list exhaustively here.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
2024-07-13 16:53:51 +02:00
Thomas Petazzoni 1c1edaefb8 docs, package/gcc: switch to Gitlab issue tracker
Our Bugzilla is so slow and unstable that it has become
unusable. Let's switch to using the Gitlab issue tracker instead.

There are still lots of references to the Bugzilla bug tracker in our
News page at https://buildroot.org/news.html, but these are for older
news.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
[yann.morin.1998@free.fr: don't needlessly re-flow]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-06-15 16:35:26 +02:00
Waldemar Brodkorb f3b2f0f985 package/gcc: update to 13.3.0
See here for changes made to this release:
https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=13.3

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-06-01 23:00:07 +02:00
Thomas Petazzoni 1c8bdef542 package/gcc: refactor nios2 obsolete handling into common gcc code
Commit 69cb625947 ("package/gcc: enable
obsolete nios2 target") added some handling of nios2 with gcc 14.x,
duplicated between gcc-initial and gcc-final. Let's deduplicate this
logic into the common package/gcc/gcc.mk code.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-05-13 22:37:38 +02:00
Waldemar Brodkorb 69cb625947 package/gcc: enable obsolete nios2 target
GCC 14.1.0 deprecated NIOS2 so we need to enable it explicitely.

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-05-13 22:35:30 +02:00
Waldemar Brodkorb 1680e491d8 package/gcc: remove version 11.x
Now that gcc 14 was added, we can remove the oldest version of gcc.

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-05-11 22:50:01 +02:00
Waldemar Brodkorb dc0f7215c6 package/gcc: switch to 13.x as default
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-05-11 22:50:00 +02:00
Waldemar Brodkorb 5eb0203cb0 package/gcc: add version 14.x
See here for changes:
https://gcc.gnu.org/gcc-14/changes.html

Patches 0002/0003 are upstream.

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-05-11 22:50:00 +02:00
Brandon Maier 8fa9ad7e4f package/gcc: add patch to fix gcc 11 build warning
When building GCC 11 with GCC 14 the following error occurs

> ../../../libiberty/simple-object-mach-o.c:1231:17: error: passing argument 1 of 'set_32' from incompatible pointer type [-Wincompatible-pointer-types]

This was fixed upstream in GCC12[1]. It is applied to the GCC 11 release
branch[2], but has not been officially released yet.

[1] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=38757aa88735ab2e511bc428e2407a5a5e9fa0be
[2] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=02cd761eb1198df50453b2e39653f48053609ffc

Signed-off-by: Brandon Maier <brandon.maier@collins.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-05-11 08:56:55 +02:00
Thomas Petazzoni d8910b71bc package/gcc: add patches to remove crypt()/crypt_r() libsanitizer interceptors
In preparation for the upgrade of glibc to version 2.39, we need to
backport some gcc patches. Indeed glibc 2.39 drops libcrypt, causing a
build failure of libsanitizer (part of gcc) as it has code to
intercept crypt() and crypt_r() calls. This has been fixed in gcc
master, but we need to backport the fix for gcc 11.x, 12.x and 13.x.

gcc 8.x doesn't need to be fixed because (1) its libsanitizer does not
have an interceptor for crypt()/crypt_r() and (2) we only allow gcc
8.x for PowerPC SPE, for which we only support uClibc-ng, so this
issue with crypt/crypt_r going away from glibc is not relevant.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-04-01 10:47:41 +02:00
Thomas Petazzoni 5dd2672009 package/gcc: fix BR2_GCC_VERSION_ARC definition for gcc 13.x
Since the ARC-special GCC version was bumped from gcc 10.x to gcc 13.x
in commit 045ab73702 ("toolchain: bump
ARC toolchain components to arc-2023.09-release"), the
BR2_GCC_VERSION_ARC option definition is not entirely correct: it
selects BR2_TOOLCHAIN_GCC_AT_LEAST_10, while it should select
BR2_TOOLCHAIN_GCC_AT_LEAST_13. This commit fixes this.

Cc: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-03-03 16:54:26 +01:00
Vincent Fazio fbedcfa221 package/gcc: remove orphaned 10.4.0 patch
Shortly before GCC 10.4.0 was dropped in d37a8f3a2, commit 4ce0dacb6 was
merged and introduced a patch to 10.4.0 that was not accounted for by
the patch that dropped 10.4.0 support.

Fixes: d37a8f3a2 ("package/gcc: remove gcc 10.x")
Signed-off-by: Vincent Fazio <vfazio@gmail.com>
Reviewed-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-02-24 11:13:25 +01:00
Alexey Brodkin 747dff5a36 package/gcc: pass toolchain wrapper flags during build
With [1], [2] & [3] we made sure Buildroot packages get built with
proper MMU page size assumed. This was done nicely through insertion of
required flags into the toolchain wrapper so that there's no need to
pass these flags to each and every package separately - toolchain
wrapper used for real building has all set internally and so proper
flags are implicitly used.

But there's yet another corner case which is not handled that way -
these are binaries or rather libraries which are being used as a part of
GCC compilation: libgcc_s.so.1 and libstdc++.so.

And so to make sure both the libraries get built properly we need to
set TARGET_CFLAGS (cures libgcc_s.so) & TARGET_LDFLAGS (cures
libstdc++.so).

In case of ARM by defaut 64 KiB page size seems to be used, as w/o
that patch we see the following for BR2_ARM64_PAGE_SIZE_4K=y:

--------------------------->8----------------------------
$ ./output/host/bin/aarch64-linux-readelf -l ./output/target/lib/libgcc_s.so.1

Elf file type is DYN (Shared object file)
Entry point 0x0
There are 6 program headers, starting at offset 64

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x0000000000013d1c 0x0000000000013d1c  R E    0x10000
  LOAD           0x000000000001fd98 0x000000000002fd98 0x000000000002fd98
                 0x0000000000000438 0x00000000000005c8  RW     0x10000
  DYNAMIC        0x000000000001fdb8 0x000000000002fdb8 0x000000000002fdb8
                 0x0000000000000200 0x0000000000000200  RW     0x8

$ ./output/host/bin/aarch64-linux-readelf -l ./output/target/usr/lib/libstdc++.so.6.0.32

Elf file type is DYN (Shared object file)
Entry point 0x0
There are 7 program headers, starting at offset 64

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x00000000001d3462 0x00000000001d3462  R E    0x10000
  LOAD           0x00000000001d5760 0x00000000001e5760 0x00000000001e5760
                 0x000000000000e528 0x0000000000012de8  RW     0x10000
  DYNAMIC        0x00000000001deef0 0x00000000001eeef0 0x00000000001eeef0
                 0x0000000000000240 0x0000000000000240  RW     0x8
--------------------------->8----------------------------

Note alignment of 0x10000 in sections marked for loading.

And with the patch applied we get expected alignment of 0x1000 (4
KiB):

--------------------------->8----------------------------
$ ./output/host/bin/aarch64-linux-readelf -l ./output/target/lib/libgcc_s.so.1

Elf file type is DYN (Shared object file)
Entry point 0x0
There are 6 program headers, starting at offset 64

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x0000000000013d1c 0x0000000000013d1c  R E    0x1000
  LOAD           0x0000000000013d98 0x0000000000014d98 0x0000000000014d98
                 0x0000000000000438 0x00000000000005c8  RW     0x1000
  DYNAMIC        0x0000000000013db8 0x0000000000014db8 0x0000000000014db8
                 0x0000000000000200 0x0000000000000200  RW     0x8

$ ./output/host/bin/aarch64-linux-readelf -l ./output/target/usr/lib/libstdc++.so.6.0.32

Elf file type is DYN (Shared object file)
Entry point 0x0
There are 7 program headers, starting at offset 64

Program Headers:
  Type           Offset             VirtAddr           PhysAddr
                 FileSiz            MemSiz              Flags  Align
  LOAD           0x0000000000000000 0x0000000000000000 0x0000000000000000
                 0x00000000001d3462 0x00000000001d3462  R E    0x1000
  LOAD           0x00000000001d3760 0x00000000001d4760 0x00000000001d4760
                 0x000000000000e528 0x0000000000012de8  RW     0x1000
  DYNAMIC        0x00000000001dcef0 0x00000000001ddef0 0x00000000001ddef0
                 0x0000000000000240 0x0000000000000240  RW     0x8
--------------------------->8----------------------------

A nice side effect is that we can get rid of the special handling of
"-matomic" as it's already part of ARCH_TOOLCHAIN_WRAPPER_OPTS.

[1] https://git.buildroot.net/buildroot/commit/?id=3cc2c6d19ab2e1bb4634f26f9318da9b07df5fff
[2] https://git.buildroot.net/buildroot/commit/?id=dcb74db89e74e512e36b32cea6f574a1a1ca84c4
[3] https://git.buildroot.net/buildroot/commit/?id=5e52c28397b79f8c4c99552217cbe95202166626

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Signed-off-by: Vladimir Isaev <VVIsaev@gmail.com>
Signed-off-by: Pavel Kozlov <kozlov@synopsys.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Arnout Vandecappelle <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-01-05 23:48:43 +01:00
Alexey Brodkin 045ab73702 toolchain: bump ARC toolchain components to arc-2023.09-release
With the most recent ARC GNU toolchain version released [1]
we may switch to its stable and verified components for Buildroot's
built-in toolchian.

And while for ARCompact (i.e. ARC700) & ARCv2 (ARC HS38 & HS48)
processors upstream components work just fine, in this new release
of ARC GNU toolchain we have also support for newer ARCv3 procesors.

And so that update is more of an enabler for introduction of ARCv3
in the next series of patches.

[1] https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/tag/arc-2023.09-release

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Giulio Benetti <giulio.benetti@benettiengineering.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Waldemar Brodkorb <mail@waldemar-brodkorb.de>
Cc: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-01-05 09:31:05 +01:00
Alexey Brodkin 6b25c3dad2 package/gcc: enable ARC HS rel 3.10 in vanilla GCC 13+
For quite some time a special tuning for ARC HS release 3.10
was only implemented in ARC fork of GCC, thus there was a dependency
introduced back in the day, see [1].

But finally that tuning got merged upstream (see [2]) and
so could be used with vanilla GCC starting from version 13.1.

[1] https://git.buildroot.net/buildroot/commit/?id=770c9e5ce3de4ef1743948898a37e9a2ad76ca8f
[2] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=7501eec65c60701f72621d04eeb5342bad2fe4fb

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-01-02 21:23:20 +01:00
Nicolas Cavallari f7b9d3ad2b package/gcc: fix disabling the documentation
gcc.mk attempts to disable building the documentation by setting
MAKEINFO=missing, but it is not working.  If makeinfo is installed
and recent enough, gcc still uses it.  This can be checked easily:

grep BUILD_INFO='info' host-gcc-initial-*/build/gcc/config.log

It happens because the root ./configure script will check
$MAKEINFO --version (aka 'missing --version') and will overwrite it with
MAKEINFO='missing makeinfo' because the version does not match.

Having MAKEINFO='missing makeinfo' is a problem because
'missing makeinfo' will actually attempt to run 'makeinfo' before
failing with an error message.  If makeinfo is installed on the host,
then 'missing makeinfo' will successfully run makeinfo anyway.

Many gcc subprojects will check $MAKEINFO --version and enable building
the documentation if it is recent enough.  This patch overrides these
checks by forcing gcc_cv_prog_makeinfo_modern=no.

Building the GCC documentation can fail with the wrong makeinfo version.
It happened at least when building GCC 11.3.0 with makeinfo 7.1.

Signed-off-by: Nicolas Cavallari <nicolas.cavallari@green-communications.fr>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2023-11-26 16:37:29 +01:00
Damien Le Moal 01932fec17 package/gcc: Fix gcc finale library installation
Fixes:
http://autobuild.buildroot.net/results/98f/98fedf4969c260f73a01b937b9625e66dcd86b3c

When BR2_TOOLCHAIN_HAS_LIBATOMIC is "n", there is no gcc libatomic.so
library to install. For configurations with such settings, compilation
fails as gcc-final.mk unconditionally adds libatomic as an installation
target. This error, for instance, shows for all Canaan K210 riscv
configs, as they all use uclibc flat binary format which disabled
libatomic:

Fix this by modifying package/gcc/gcc-final/gcc-final.mk to add
libatomic to GCC_FINAL_LIBS only for configurations that have
BR2_TOOLCHAIN_HAS_LIBATOMIC set to "y".

Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2023-11-12 14:09:28 +01:00
Yann E. MORIN 84cdd92f01 package/gcc: remove leftover from legacy PowerPC patch
In commit 0c82f3f635 (package/gcc: remove powerpc conditional patching
logic), the macro defining the conditional patch was removed, but it was
still referenced and expanded in the apply-patches hook.

Drop that now.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Romain Naour <romain.naour@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2023-10-15 10:49:15 +02:00
Thomas Petazzoni d797ecc6f0 package/gcc/gcc-final: only install libgcc_s for shared library builds
In commit
55e83008fc ("package/gcc/gcc-final:
rework installation of libgcc_s/libatomic"), we reworked the libgcc_s
installation. In the previous code, libgcc_s was installed to
STAGING_DIR/TARGET_DIR unconditionally, but a "-cp" command was used,
which means that any failure was ignored. As we are now more picky, it
has become clear that this in fact wasn't entirely correct: libgcc_s
only exists for shared builds. For static builds, only libgcc.a is
available, but it doesn't need to be installed to STAGING_DIR (for
some reason, and as it was never installed by Buildroot, it has always
worked without libgcc.a in STAGING_DIR).

So long story short: we change the code to only install libgcc_s when
BR2_STATIC_LIBS is disabled. This fixes the following build failure on
BR2_STATIC_LIBS=y builds:

cp -dpf /home/thomas/buildroot/buildroot/output/host/arm-buildroot-linux-uclibcgnueabi/lib*/libgcc_s* /home/thomas/buildroot/buildroot/output/host/arm-buildroot-linux-uclibcgnueabi/sysroot/lib/
cp: cannot stat '/home/thomas/buildroot/buildroot/output/host/arm-buildroot-linux-uclibcgnueabi/lib*/libgcc_s*': No such file or directory

Reported-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2023-09-30 17:37:00 +02:00
Thomas Petazzoni 952e320a1b package/gcc: add license information
This commit adds the licensing information for the host-gcc-initial,
host-gcc-final and gcc-final packages.

For host-gcc-initial and host-gcc-final, instead of duplicating the
information, we use common variables coming from gcc.mk.

Of course for the target gcc-final, we use a different license than
for host-gcc-final, as it's the whole point of this series: be able to
describe that the target side of gcc is GPL-3.0 with linking
exception.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
2023-09-30 14:49:55 +02:00
Thomas Petazzoni bfcddf0570 package/gcc/gcc-final: add a target variant in charge of target installation
This commit adds a target package "gcc-final", which is a target
package responsible for installing the gcc runtime libraries to
STAGING_DIR and TARGET_DIR. This task was so far done by the host
gcc-final package.

The motivation for splitting it up into a target package is to be able
to properly handle the licensing situation of GCC, where the host part
of GCC (the compiler itself) is under GPLv3, but the runtime libraries
on the target are under GPLv3-with-exception. So far, we were not
handling at all the license of gcc.

So what this commit does is:

 * Add a gcc-final target package, which is depended on by the
   toolchain-buildroot package, and which depends on
   host-gcc-final.

 * Moves to gcc-final the logic for installing target/staging
   libraries

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
2023-09-30 14:49:51 +02:00
Thomas Petazzoni cc36341877 package/gcc/gcc-final: move hook further down
The HOST_GCC_FINAL_M68K_LIBGCC_FIXUP hook is tweaking the staging
directory. In preparation for additional rework, let's move it further
down in the file so that the diff of the rework will be easier to look
at.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Romain Naour <romain.naour@smile.fr>
2023-09-30 14:49:48 +02:00