<feed xmlns='http://www.w3.org/2005/Atom'>
<title>staging/stintel/toolchain/gcc, branch master</title>
<subtitle>Staging tree of Stijn Tintel</subtitle>
<id>https://git.openwrt.org/openwrt/staging/stintel/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/openwrt/staging/stintel/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/'/>
<updated>2026-09-22T16:46:30Z</updated>
<entry>
<title>toolchain: keep the build path out of the target libraries</title>
<updated>2026-09-22T16:46:30Z</updated>
<author>
<name>John Crispin</name>
</author>
<published>2026-09-21T20:32:00Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=fa081cadb824d6b104386471eaecb217b665a9a9'/>
<id>urn:sha1:fa081cadb824d6b104386471eaecb217b665a9a9</id>
<content type='text'>
gcc builds the target libraries with CFLAGS_FOR_TARGET, which carries no
prefix map. __FILE__ therefore expands to an absolute path, and assert in
libstdc++ and the ryu code put seven of them into .rodata, where the strip
before packaging cannot reach them. The libstdcpp6 package differs between
two builds in different directories, and so does every image that ships it.

The published package shows the same thing. libstdcpp6-14.4.0-r5.apk of
bcm47xx/mips74k holds
/builder/shared-workdir/build/build_dir/toolchain-mipsel_74kc_gcc-14.4.0_musl/gcc-14.4.0/libstdc++-v3/src/c++11/debug.cc
so no rebuild of that package can match today.

iremap is called with BUILD_DIR for the kernel, with PKG_BUILD_DIR for a
package and with STAGING_DIR for the target headers. The toolchain build
directory has no such call. Add one for the three FOR_TARGET flag sets.

The replacement keeps the build_dir element, because the last element of
the toolchain build directory and of the toolchain staging directory is
the same string and one replacement for both would make the two roots
indistinguishable.

Tested with two bcm47xx/mips74k trees whose directory names differ in
length. The shipped libstdc++.so.6.0.33 holds no absolute path any more
and the libstdcpp6 package is now identical in both trees. It differed by
165 bytes before.

The toolchain staging directory still appears in the debug information of
the same library, 244 times. Those are DWARF include directories, they do
not survive the strip, and no shipped file carries them.

Signed-off-by: John Crispin &lt;john@phrozen.org&gt;
</content>
</entry>
<entry>
<title>toolchain: gcc: fix SHF_MERGE check with binutils 2.46</title>
<updated>2026-09-14T11:09:01Z</updated>
<author>
<name>Daniel Golle</name>
</author>
<published>2026-09-14T11:05:23Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=796b5590ce66fe06c1fce5af199bdf61eb069689'/>
<id>urn:sha1:796b5590ce66fe06c1fce5af199bdf61eb069689</id>
<content type='text'>
gcc probes the assembler for section merging support with
'.section .rodata.str, "aMS", @progbits, 1', which on 32-bit arm the
'@' comment character truncates. gas 2.46 no longer accepts that form,
and since gcc's %progbits fallback probe reuses the same autoconf cache
variable it never runs, so HAVE_GAS_SHF_MERGE ends up 0. String
literals then land in one plain .rodata per translation unit instead of
per-function mergeable sections, --gc-sections can no longer drop the
strings of dead functions, and the am335x SPL grows by 9.5 kB past its
110592 byte budget.

Backport the upstream fix, which gives the fallback probe its own cache
variable. It is in GCC 15 and later.

Fixes: 82f26df15c56 ("toolchain: binutils: change default to 2.46")
Signed-off-by: Daniel Golle &lt;daniel@makrotopia.org&gt;
</content>
</entry>
<entry>
<title>Revert "toolchain: drop $(REVISION) from GCC version"</title>
<updated>2026-07-29T07:14:05Z</updated>
<author>
<name>Paul Spooren</name>
</author>
<published>2026-07-29T07:11:42Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=b5ed5604cf901dc1df58befba757011ac2422ddf'/>
<id>urn:sha1:b5ed5604cf901dc1df58befba757011ac2422ddf</id>
<content type='text'>
This reverts commit 9292f32fd96dc00b7c3f34a028d1fc41a4fcb6d2.

Downstream patches may change the output. If the GCC version doesn't
incooperate the patches somehow (hash, git commit, ...), ccache may not
invalidate existing cache.

Revert this until a cleaner solution is found.

Signed-off-by: Paul Spooren &lt;mail@aparcar.org&gt;
</content>
</entry>
<entry>
<title>toolchain: drop $(REVISION) from GCC version</title>
<updated>2026-07-23T11:20:23Z</updated>
<author>
<name>Paul Spooren</name>
</author>
<published>2026-07-22T12:37:12Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=9292f32fd96dc00b7c3f34a028d1fc41a4fcb6d2'/>
<id>urn:sha1:9292f32fd96dc00b7c3f34a028d1fc41a4fcb6d2</id>
<content type='text'>
Storing the ever changing revision in the GCC binary may result in leakage in
package builds. If two equal GCC versions build the same package version with
different OpenWrt revisions, the package becomes unreproducible.

Solve this by dropping the revision.

Below is an example of the `cni` package:

    │ ├── readelf --wide --decompress --string-dump=.comment {}
    │ │ @@ -1,4 +1,4 @@
    │ │
    │ │  String dump of section '.comment':
    │ │ -  [     0]  GCC: (OpenWrt GCC 14.4.0 r35470-1b2aeb4f8a) 14.4.0
    │ │ +  [     0]  GCC: (OpenWrt GCC 14.4.0 r35485-0f256a0a7a) 14.4.0

Signed-off-by: Paul Spooren &lt;mail@aparcar.org&gt;
</content>
</entry>
<entry>
<title>toolchain: gcc: update GCC 14 to 14.4</title>
<updated>2026-06-29T09:40:20Z</updated>
<author>
<name>Shiji Yang</name>
</author>
<published>2026-06-26T15:20:56Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=ab40696d6134c842a93112a7a0325a148b3b1a2b'/>
<id>urn:sha1:ab40696d6134c842a93112a7a0325a148b3b1a2b</id>
<content type='text'>
Changelog:
  https://gcc.gnu.org/gcc-14/changes.html

Remove upstreamed patches:
- patches-14.x/004-libcody-Make-it-buildable-by-C-11-to-C-26.patch[1]
- patches-14.x/005-include-memory.patch[2]
- patches-14.x/240-libsanitizer-fix-termio-glibc-2.40.patch[3]

All other patches are automatically refreshed.

[1] https://gcc.gnu.org/cgit/gcc/commit/?h=releases/gcc-14.4.0&amp;id=daa3e1ead791bc58208043cfc4595ba1a78cdd34
[2] https://gcc.gnu.org/cgit/gcc/commit/?h=releases/gcc-14.4.0&amp;id=046776dac7cc74bdbab36f450af80644a045858a
[3] https://gcc.gnu.org/cgit/gcc/commit/?h=releases/gcc-14.4.0&amp;id=f0feb51ff40553643c582ec9c3ca7f293721ddc8
Signed-off-by: Shiji Yang &lt;yangshiji66@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/23950
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>toolchain: gcc: update GCC 15 to 15.3.0</title>
<updated>2026-06-27T09:54:03Z</updated>
<author>
<name>Konstantin Demin</name>
</author>
<published>2026-06-13T15:12:13Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=97424f9c860593ad524aff84a2f982b97abfed5f'/>
<id>urn:sha1:97424f9c860593ad524aff84a2f982b97abfed5f</id>
<content type='text'>
Release Notes: https://gcc.gnu.org/gcc-15/changes.html

Removed upstreamed:
 toolchain/gcc/patches-15.x/004-libcody-Make-it-buildable-by-C-11-to-C-26.patch [1]

[1] https://github.com/gcc-mirror/gcc/commit/1f0224e8ddb3d3d0bf4c7a11769b193a4df5cc37

Signed-off-by: Konstantin Demin &lt;rockdrilla@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/23771
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</content>
</entry>
<entry>
<title>toolchain/gcc: backport libsanitizer struct termio fix for glibc 2.43</title>
<updated>2026-06-04T18:06:32Z</updated>
<author>
<name>Dustin Lundquist</name>
</author>
<published>2026-06-02T19:38:32Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=f93228427aa98324b97bac1defd9a8a39e47c29a'/>
<id>urn:sha1:f93228427aa98324b97bac1defd9a8a39e47c29a</id>
<content type='text'>
glibc 2.43 no longer exposes struct termio (the old UNIX System V
terminal struct) through &lt;termios.h&gt;. This breaks the GCC 14
libsanitizer build which uses sizeof(struct termio) and registers
ioctl interceptors for the legacy TCGETA/TCSETA/TCSETAF/TCSETAW
ioctls that operated on struct termio.

GCC 15 already dropped these references. Backport that removal to
the GCC 14 patch series.

Signed-off-by: Dustin Lundquist &lt;dustin@null-ptr.net&gt;
</content>
</entry>
<entry>
<title>toolchain/gcc: use configure option to disable TM clone registry</title>
<updated>2026-05-25T21:17:58Z</updated>
<author>
<name>Shiji Yang</name>
</author>
<published>2026-05-23T13:42:19Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=59c07e6053e5211719a199a9094edc77eac9024e'/>
<id>urn:sha1:59c07e6053e5211719a199a9094edc77eac9024e</id>
<content type='text'>
GCC 10 added the new configure option --disable-tm-clone-registry[1].
It is useful for reducing code size in embedded systems. Our local hack
patch is no longer needed.

[1] https://gcc.gnu.org/cgit/gcc/commit/?h=releases/gcc-10&amp;id=5a4602805eb3ebddbc935b102481e63bffc7c5e6
Signed-off-by: Shiji Yang &lt;yangshiji66@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/23494
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</content>
</entry>
<entry>
<title>treewide: remove unused archs leftovers</title>
<updated>2026-05-07T08:58:47Z</updated>
<author>
<name>Andre Heider</name>
</author>
<published>2025-04-23T11:04:15Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=e3271a6786524008b7135228145d0540df7c1451'/>
<id>urn:sha1:e3271a6786524008b7135228145d0540df7c1451</id>
<content type='text'>
These are all unused by the current targets, clean up and stop
irritating the user with irrelevant grep results.

Signed-off-by: Andre Heider &lt;a.heider@gmail.com&gt;
Link: https://github.com/openwrt/openwrt/pull/23240
Signed-off-by: Robert Marko &lt;robimarko@gmail.com&gt;
</content>
</entry>
<entry>
<title>toolchain: gcc: remove support for GCC 12</title>
<updated>2026-05-02T23:21:01Z</updated>
<author>
<name>Shiji Yang</name>
</author>
<published>2026-05-02T06:39:30Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=07e91bc11a32ae17d071bd2e5c11cf437ac54b3e'/>
<id>urn:sha1:07e91bc11a32ae17d071bd2e5c11cf437ac54b3e</id>
<content type='text'>
We will soon introduce new GCC version 16. There is no need to
maintain too many toolchain versions.

Signed-off-by: Shiji Yang &lt;yangshiji66@outlook.com&gt;
Link: https://github.com/openwrt/openwrt/pull/23195
Signed-off-by: Hauke Mehrtens &lt;hauke@hauke-m.de&gt;
</content>
</entry>
</feed>
