Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/website/content/en/status/report-2023-04-2023-06/gcc.adoc
18096 views
=== GCC on FreeBSD

Links: +
link:https://gcc.gnu.org/[GCC Project] URL: link:https://gcc.gnu.org/[] +
link:https://gcc.gnu.org/gcc-10/[GCC 10 release series] URL: link:https://gcc.gnu.org/gcc-10/[] +
link:https://gcc.gnu.org/gcc-11/[GCC 11 release series] URL: link:https://gcc.gnu.org/gcc-11/[] +
link:https://gcc.gnu.org/gcc-12/[GCC 12 release series] URL: link:https://gcc.gnu.org/gcc-12/[] +
link:https://gcc.gnu.org/gcc-13/[GCC 13 release series] URL: link:https://gcc.gnu.org/gcc-13/[]

Contact: Lorenzo Salvadore <[email protected]>

Upstream has released link:https://gcc.gnu.org/gcc-13[GCC 13].
As announced in the past status report, I plan to attempt an update of GCC_DEFAULT right from the first GCC 13 release, thus much of this quarter's work has been in preparation of this.

With the release of GCC 13.1 (first GCC 13 release: I remind that GCC counts minor version releases starting from 1), two new ports have been created in the ports tree:

* package:lang/gcc13[], tracking GCC 13 releases;
* package:lang/gcc14-devel[], tracking snapshots from the new GCC 14 upstream branch.

==== The *-devel ports

Support for .init_array and .fini_array has been enabled.
FreeBSD supports both since commit gitref:83aa9cc00c2d83d05a0efe7a1496d8aab4a153bb[repository=src].

The default bootstrap option on i386, amd64, and aarch64 has been reverted from LTO_BOOTSTRAP to STANDARD_BOOTSTRAP:

- LTO bootstrap produces too many failures on the package builders for those architectures
- LTO_BOOTSTRAP remains available for users who want it.

Those changes will be forwarded to the production ports.

==== The production ports

Upstream has released GCC 13, for which the new port package:lang/gcc13[] has been created.
GCC 11 and GCC 12 have been updated upstream and a new release of GCC 10 is planned.
All corresponding ports now need to be updated.

To ease the work of both ports maintainers and users, I plan to test and update together all the following changes:

* updates of package:lang/gcc10[], package:lang/gcc11[], package:lang/gcc12[];
* update of GCC_DEFAULT to 13;
* enabling of .init_array and .fini_array on the production ports;
* switching back from LTO_BOOTSTRAP to STANDARD_BOOTSTRAP on the production ports.

This will provide the following advantages:

* more testing with less exp-runs;
* fewer builds for ports users.