Compare commits

...
Sign in to create a new pull request.

6 commits

Author SHA1 Message Date
Jakub Jelinek
3048d135fb 13.3.1-3 2024-09-13 16:41:17 +02:00
Jakub Jelinek
3e4d87c0f2 13.3.1-2 2024-06-11 12:03:32 +02:00
Jakub Jelinek
9fa1f12ab1 13.3.1-1 2024-05-22 19:06:28 +02:00
Jakub Jelinek
7f18366e68 13.3.1-1 2024-05-22 12:34:02 +02:00
Jakub Jelinek
554f2cd027 13.3.1-1 2024-05-22 12:17:01 +02:00
Jakub Jelinek
f3ed673218 13.2.1-7 2024-03-16 09:39:37 +01:00
6 changed files with 185 additions and 177 deletions

4
.gitignore vendored
View file

@ -114,3 +114,7 @@
/gcc-13.2.1-20231011.tar.xz
/gcc-13.2.1-20231113.tar.xz
/gcc-13.2.1-20231205.tar.xz
/gcc-13.2.1-20240316.tar.xz
/gcc-13.3.1-20240522.tar.xz
/gcc-13.3.1-20240611.tar.xz
/gcc-13.3.1-20240913.tar.xz

152
gcc.spec
View file

@ -1,10 +1,10 @@
%global DATE 20231205
%global gitrev f783814ad6a04ae5ef44595216596a2b75eda15b
%global gcc_version 13.2.1
%global DATE 20240913
%global gitrev 2fcca36eb1d34066437939cf1b54810a75dd553f
%global gcc_version 13.3.1
%global gcc_major 13
# Note, gcc_release must be integer, if you want to add suffixes to
# %%{release}, append them after %%{gcc_release} on Release: line.
%global gcc_release 6
%global gcc_release 3
%global nvptx_tools_gitrev aa3404ad5a496cda5d79a50bedb1344fd63e8763
%global newlib_cygwin_gitrev 9e09d6ed83cce4777a5950412647ccc603040409
%global _unpackaged_files_terminate_build 0
@ -286,7 +286,6 @@ Patch8: gcc13-no-add-needed.patch
Patch9: gcc13-Wno-format-security.patch
Patch10: gcc13-rh1574936.patch
Patch11: gcc13-d-shared-libphobos.patch
Patch12: gcc13-pr110792.patch
Patch50: isl-rh2155127.patch
@ -864,7 +863,6 @@ so that there cannot be any synchronization problems.
%patch -P10 -p0 -b .rh1574936~
%endif
%patch -P11 -p0 -b .d-shared-libphobos~
%patch -P12 -p0 -b .pr110792~
%patch -P50 -p0 -b .rh2155127~
touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4
@ -1308,7 +1306,8 @@ CC="`$ANNOBIN_FLAGS --build-cc`" CXX="`$ANNOBIN_FLAGS --build-cxx`" \
CFLAGS="$ANNOBIN_CFLAGS1 $ANNOBIN_CFLAGS2 $ANNOBIN_LDFLAGS" \
CXXFLAGS="$ANNOBIN_CFLAGS1 `$ANNOBIN_FLAGS --build-includes` $ANNOBIN_CFLAGS2 $ANNOBIN_LDFLAGS" \
./configure --with-gcc-plugin-dir=%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin \
--without-annocheck --without-tests --without-docs --disable-rpath --without-debuginfod
--without-annocheck --without-tests --without-docs --disable-rpath --without-debuginfod \
--without-clang-plugin --without-llvm-plugin
make
cd ../..
%endif
@ -3459,6 +3458,145 @@ end
%endif
%changelog
* Fri Sep 13 2024 Jakub Jelinek <jakub@redhat.com> 13.3.1-3
- update from releases/gcc-13 branch
- PRs c/115290, c++/113063, c++/115511, c++/116289, c++/116449,
driver/115440, fortran/83865, fortran/84006, fortran/98534,
fortran/100027, fortran/103115, fortran/103312, fortran/108889,
fortran/113363, ipa/115277, ipa/116410, jit/115442, libstdc++/114770,
libstdc++/114958, libstdc++/115247, libstdc++/115308,
libstdc++/115454, libstdc++/115522, libstdc++/115575,
libstdc++/115585, libstdc++/115668, libstdc++/115807,
libstdc++/116070, lto/116614, middle-end/115527, middle-end/115836,
rtl-optimization/115049, rtl-optimization/115565, target/87376,
target/88236, target/97367, target/98762, target/103100,
target/105090, target/106069, target/111343, target/113384,
target/113780, target/114603, target/114607, target/114759,
target/114846, target/115253, target/115355, target/115360,
target/115389, target/115457, target/115475, target/115526,
target/115611, target/115618, target/115691, target/115726,
target/115752, target/115872, target/115988, target/116043,
target/116189, target/116287, target/116407, target/116512,
target/116617, testsuite/116061, tree-optimization/113281,
tree-optimization/115843, tree-optimization/116034
* Tue Jun 11 2024 Jakub Jelinek <jakub@redhat.com> 13.3.1-2
- update from releases/gcc-13 branch
- PRs ada/114398, ada/114708, c/114493, c++/111529, c++/113598,
fortran/110415, fortran/114827, fortran/115150, libstdc++/114940,
libstdc++/115269, middle-end/108789, rtl-optimization/114902,
rtl-optimization/115092, target/113281, target/113719, target/115297,
target/115317, target/115324, tree-optimization/115192,
tree-optimization/115307, tree-optimization/115337
* Wed May 22 2024 Jakub Jelinek <jakub@redhat.com> 13.3.1-1
- update from releases/gcc-13 branch
- GCC 13.3 release
- PRs analyzer/104042, analyzer/108171, analyzer/109251, analyzer/109577,
analyzer/110014, analyzer/110112, analyzer/110700, analyzer/110882,
analyzer/111289, analyzer/112790, analyzer/112889, analyzer/112969,
analyzer/113253, analyzer/113333, analyzer/114408, analyzer/114473,
bootstrap/106472, bootstrap/114369, c/112571, c/114780, c++/89224,
c++/97990, c++/100667, c++/103825, c++/110006, c++/111284, c++/112769,
c++/113141, c++/113966, c++/114303, c++/114377, c++/114537,
c++/114561, c++/114562, c++/114572, c++/114580, c++/114634,
c++/114691, c++/114709, debug/112718, driver/111700, fortran/36337,
fortran/50410, fortran/55978, fortran/89462, fortran/93678,
fortran/95374, fortran/101135, fortran/102003, fortran/103707,
fortran/103715, fortran/103716, fortran/104352, fortran/106987,
fortran/106999, fortran/107426, fortran/110987, fortran/112407,
fortran/113799, fortran/113866, fortran/113885, fortran/113956,
fortran/114001, fortran/114474, fortran/114535, fortran/114739,
fortran/114825, fortran/115039, gcov-profile/114115,
gcov-profile/114715, ipa/92606, ipa/108007, ipa/111571, ipa/112616,
ipa/113359, ipa/113907, ipa/113964, jit/110466, libgcc/111731,
libquadmath/114533, libstdc++/66146, libstdc++/93672,
libstdc++/104606, libstdc++/107800, libstdc++/108976,
libstdc++/110050, libstdc++/110054, libstdc++/113841,
libstdc++/114147, libstdc++/114316, libstdc++/114359,
libstdc++/114367, libstdc++/114401, libstdc++/114750,
libstdc++/114803, libstdc++/114863, libstdc++/115063, lto/114655,
middle-end/110027, middle-end/111151, middle-end/111632,
middle-end/111683, middle-end/112684, middle-end/112732,
middle-end/113396, middle-end/113622, middle-end/114070,
middle-end/114348, middle-end/114552, middle-end/114599,
middle-end/114734, middle-end/114753, middle-end/114907,
rtl-optimization/54052, rtl-optimization/114415,
rtl-optimization/114768, rtl-optimization/114924, sanitizer/97696,
sanitizer/114687, sanitizer/114743, sanitizer/114956,
sanitizer/115172, target/88309, target/101865, target/105522,
target/110621, target/111234, target/111600, target/111610,
target/111822, target/112397, target/113095, target/113233,
target/113950, target/114049, target/114130, target/114160,
target/114172, target/114175, target/114272, target/114747,
target/114752, target/114794, target/114837, target/114848,
target/114981, testsuite/111066, testsuite/112297, testsuite/114034,
testsuite/114036, testsuite/114662, tree-optimization/91838,
tree-optimization/109925, tree-optimization/110838,
tree-optimization/111009, tree-optimization/111268,
tree-optimization/111407, tree-optimization/111736,
tree-optimization/111882, tree-optimization/112281,
tree-optimization/112303, tree-optimization/112793,
tree-optimization/112961, tree-optimization/112991,
tree-optimization/113552, tree-optimization/113630,
tree-optimization/113670, tree-optimization/113831,
tree-optimization/113910, tree-optimization/114027,
tree-optimization/114115, tree-optimization/114121,
tree-optimization/114203, tree-optimization/114231,
tree-optimization/114246, tree-optimization/114375,
tree-optimization/114396, tree-optimization/114485,
tree-optimization/114566, tree-optimization/114672,
tree-optimization/114733, tree-optimization/114736,
tree-optimization/114749, tree-optimization/114787,
tree-optimization/114799, tree-optimization/114876,
tree-optimization/114965, tree-optimization/115143,
tree-optimization/115152, tree-optimization/115154
- add --without-clang-plugin --without-llvm-plugin to annobin configure
options
* Sat Mar 16 2024 Jakub Jelinek <jakub@redhat.com> 13.2.1-7
- update from releases/gcc-13 branch
- PRs ada/112781, ada/113893, ada/113979, c++/95226, c++/99493, c++/103185,
c++/104634, c++/107291, c++/109359, c++/109876, c++/109899,
c++/110084, c++/110106, c++/111286, c++/112410, c++/112437,
c++/112439, c++/112795, c++/113088, c++/113242, c++/113347,
c++/113529, c++/113545, c++/113612, c++/113638, c++/113674,
c/113262, c/114007, d/112285, d/112290, d/113125, d/113758,
d/114171, driver/114314, fortran/67277, fortran/93762,
fortran/97592, fortran/100651, fortran/100988, fortran/104819,
fortran/104908, fortran/110826, fortran/114012, fortran/114024,
libfortran/105437, libfortran/105473, libfortran/110651,
libfortran/111022, libfortran/114304, libgcc/113850, libgomp/113192,
libstdc++/90276, libstdc++/99117, libstdc++/107466,
libstdc++/110133, libstdc++/110167, libstdc++/111826,
libstdc++/111948, libstdc++/112467, libstdc++/112473,
libstdc++/112477, libstdc++/112480, libstdc++/112832,
libstdc++/113200, libstdc++/113241, libstdc++/113250,
libstdc++/113258, libstdc++/113294, libstdc++/113450,
libstdc++/113500, libstdc++/113512, libstdc++/113960,
libstdc++/114152, middle-end/90348, middle-end/95351,
middle-end/107385, middle-end/110115, middle-end/110176,
middle-end/110754, middle-end/111422, middle-end/112733,
middle-end/113907, middle-end/113921, middle-end/114136,
other/109668, preprocessor/105608, rtl-optimization/110079,
rtl-optimization/112758, rtl-optimization/113140,
rtl-optimization/113656, rtl-optimization/114211, sanitizer/111736,
sanitizer/112709, sanitizer/112727, target/101737, target/105523,
target/107201, target/108120, target/108174, target/111677,
target/112299, target/112330, target/112759, target/112787,
target/112816, target/112837, target/112845, target/112891,
target/112952, target/113122, target/113156, target/113601,
target/113824, target/113927, target/114098, target/114184,
target/114310, target/114339, testsuite/106879, testsuite/108321,
testsuite/113175, testsuite/113366, testsuite/114343,
tree-optimization/109804, tree-optimization/110221,
tree-optimization/110422, tree-optimization/112495,
tree-optimization/112505, tree-optimization/112618,
tree-optimization/113012, tree-optimization/113013,
tree-optimization/113372, tree-optimization/113603,
tree-optimization/113896, tree-optimization/113993,
tree-optimization/114041, tree-optimization/114090
* Tue Dec 5 2023 Jakub Jelinek <jakub@redhat.com> 13.2.1-6
- update from releases/gcc-13 branch
- PRs c++/33799, c++/102191, c++/111703, c++/112269, c++/112301, c++/112633,

View file

@ -4,7 +4,7 @@
<a class="link" href="https://www.fsf.org" target="_top">FSF
</a>
</p><p>
+ Release 13.2.1
+ Release 13.3.1
+ </p><p>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation
@ -17,7 +17,7 @@
</p><p>
- The API documentation, rendered into HTML, can be viewed online
+ The API documentation, rendered into HTML, can be viewed locally
+ <a class="link" href="api/index.html" target="_top">for the 13.2.1 release</a>,
+ <a class="link" href="api/index.html" target="_top">for the 13.3.1 release</a>,
+ online
<a class="link" href="http://gcc.gnu.org/onlinedocs/" target="_top">for each GCC release</a>
and

View file

@ -1,163 +0,0 @@
PR target/110792: Early clobber issues with rot32di2_doubleword on i386.
This patch is a conservative fix for PR target/110792, a wrong-code
regression affecting doubleword rotations by BITS_PER_WORD, which
effectively swaps the highpart and lowpart words, when the source to be
rotated resides in memory. The issue is that if the register used to
hold the lowpart of the destination is mentioned in the address of
the memory operand, the current define_insn_and_split unintentionally
clobbers it before reading the highpart.
Hence, for the testcase, the incorrectly generated code looks like:
salq $4, %rdi // calculate address
movq WHIRL_S+8(%rdi), %rdi // accidentally clobber addr
movq WHIRL_S(%rdi), %rbp // load (wrong) lowpart
Traditionally, the textbook way to fix this would be to add an
explicit early clobber to the instruction's constraints.
(define_insn_and_split "<insn>32di2_doubleword"
- [(set (match_operand:DI 0 "register_operand" "=r,r,r")
+ [(set (match_operand:DI 0 "register_operand" "=r,r,&r")
(any_rotate:DI (match_operand:DI 1 "nonimmediate_operand" "0,r,o")
(const_int 32)))]
but unfortunately this currently generates significantly worse code,
due to a strange choice of reloads (effectively memcpy), which ends up
looking like:
salq $4, %rdi // calculate address
movdqa WHIRL_S(%rdi), %xmm0 // load the double word in SSE reg.
movaps %xmm0, -16(%rsp) // store the SSE reg back to the stack
movq -8(%rsp), %rdi // load highpart
movq -16(%rsp), %rbp // load lowpart
Note that reload's "&" doesn't distinguish between the memory being
early clobbered, vs the registers used in an addressing mode being
early clobbered.
The fix proposed in this patch is to remove the third alternative, that
allowed offsetable memory as an operand, forcing reload to place the
operand into a register before the rotation. This results in:
salq $4, %rdi
movq WHIRL_S(%rdi), %rax
movq WHIRL_S+8(%rdi), %rdi
movq %rax, %rbp
I believe there's a more advanced solution, by swapping the order of
the loads (if first destination register is mentioned in the address),
or inserting a lea insn (if both destination registers are mentioned
in the address), but this fix is a minimal "safe" solution, that
should hopefully be suitable for backporting.
2023-08-06 Roger Sayle <roger@nextmovesoftware.com>
gcc/testsuite/ChangeLog
PR target/110792
* gcc.target/i386/pr110792.c: Remove dg-final scan-assembler-not.
2023-08-03 Roger Sayle <roger@nextmovesoftware.com>
gcc/ChangeLog
PR target/110792
* config/i386/i386.md (<any_rotate>ti3): For rotations by 64 bits
place operand in a register before gen_<insn>64ti2_doubleword.
(<any_rotate>di3): Likewise, for rotations by 32 bits, place
operand in a register before gen_<insn>32di2_doubleword.
(<any_rotate>32di2_doubleword): Constrain operand to be in register.
(<any_rotate>64ti2_doubleword): Likewise.
gcc/testsuite/ChangeLog
PR target/110792
* g++.target/i386/pr110792.C: New 32-bit C++ test case.
* gcc.target/i386/pr110792.c: New 64-bit C test case.
--- gcc/config/i386/i386.md
+++ gcc/config/i386/i386.md
@@ -15341,7 +15341,10 @@ (define_expand "<insn>ti3"
emit_insn (gen_ix86_<insn>ti3_doubleword
(operands[0], operands[1], operands[2]));
else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 64)
- emit_insn (gen_<insn>64ti2_doubleword (operands[0], operands[1]));
+ {
+ operands[1] = force_reg (TImode, operands[1]);
+ emit_insn (gen_<insn>64ti2_doubleword (operands[0], operands[1]));
+ }
else
{
rtx amount = force_reg (QImode, operands[2]);
@@ -15376,7 +15379,10 @@ (define_expand "<insn>di3"
emit_insn (gen_ix86_<insn>di3_doubleword
(operands[0], operands[1], operands[2]));
else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 32)
- emit_insn (gen_<insn>32di2_doubleword (operands[0], operands[1]));
+ {
+ operands[1] = force_reg (DImode, operands[1]);
+ emit_insn (gen_<insn>32di2_doubleword (operands[0], operands[1]));
+ }
else
FAIL;
@@ -15544,8 +15550,8 @@ (define_insn_and_split "ix86_rotr<dwi>3_doubleword"
})
(define_insn_and_split "<insn>32di2_doubleword"
- [(set (match_operand:DI 0 "register_operand" "=r,r,r")
- (any_rotate:DI (match_operand:DI 1 "nonimmediate_operand" "0,r,o")
+ [(set (match_operand:DI 0 "register_operand" "=r,r")
+ (any_rotate:DI (match_operand:DI 1 "register_operand" "0,r")
(const_int 32)))]
"!TARGET_64BIT"
"#"
@@ -15562,8 +15568,8 @@ (define_insn_and_split "<insn>32di2_doubleword"
})
(define_insn_and_split "<insn>64ti2_doubleword"
- [(set (match_operand:TI 0 "register_operand" "=r,r,r")
- (any_rotate:TI (match_operand:TI 1 "nonimmediate_operand" "0,r,o")
+ [(set (match_operand:TI 0 "register_operand" "=r,r")
+ (any_rotate:TI (match_operand:TI 1 "register_operand" "0,r")
(const_int 64)))]
"TARGET_64BIT"
"#"
--- gcc/testsuite/g++.target/i386/pr110792.C
+++ gcc/testsuite/g++.target/i386/pr110792.C
@@ -0,0 +1,16 @@
+/* { dg-do compile { target ia32 } } */
+/* { dg-options "-O2" } */
+
+template <int ROT, typename T>
+inline T rotr(T input)
+{
+ return static_cast<T>((input >> ROT) | (input << (8 * sizeof(T) - ROT)));
+}
+
+unsigned long long WHIRL_S[256] = {0x18186018C07830D8};
+unsigned long long whirl(unsigned char x0)
+{
+ const unsigned long long s4 = WHIRL_S[x0&0xFF];
+ return rotr<32>(s4);
+}
+/* { dg-final { scan-assembler-not "movl\tWHIRL_S\\+4\\(,%eax,8\\), %eax" } } */
--- gcc/testsuite/gcc.target/i386/pr110792.c
+++ gcc/testsuite/gcc.target/i386/pr110792.c
@@ -0,0 +1,17 @@
+/* { dg-do compile { target int128 } } */
+/* { dg-options "-O2" } */
+
+static inline unsigned __int128 rotr(unsigned __int128 input)
+{
+ return ((input >> 64) | (input << (64)));
+}
+
+unsigned __int128 WHIRL_S[256] = {((__int128)0x18186018C07830D8) << 64 |0x18186018C07830D8};
+unsigned __int128 whirl(unsigned char x0)
+{
+ register int t __asm("rdi") = x0&0xFF;
+ const unsigned __int128 s4 = WHIRL_S[t];
+ register unsigned __int128 tt __asm("rdi") = rotr(s4);
+ asm("":::"memory");
+ return tt;
+}

View file

@ -1,4 +1,4 @@
SHA512 (gcc-13.2.1-20231205.tar.xz) = f132a2d35d6ea0b0d82043870f1c9f60dda119e63df6833b16d20e2c93e2978f62698d4cc72a6e2eefbaeded0683107de9ebeb93923b96c57dcd612504aa6a1b
SHA512 (gcc-13.3.1-20240913.tar.xz) = adc6c54e8ddffbc59d55a144b5ef27ad84a3664af24907029eadbe379397a3b64600a42a16802e94f9329d52ec974ee5edc778d174f23cb9f8eead372d121fa7
SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95
SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983
SHA512 (nvptx-tools-aa3404ad5a496cda5d79a50bedb1344fd63e8763.tar.xz) = 33a024326426375533cb5dd9b68b2508f37540be418d2506bfa19a5f5866485e9af150469064e9059b68136ad8cb080b3b12e7eb5c6b7d1288cf6bfb3f6bb5d0

View file

@ -1,7 +1,36 @@
#!/bin/sh
[ -d gcc-dir.tmp ] && echo gcc-dir.tmp already exists && exit 1
git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin $1
if [ "$#" -eq 0 ]; then
echo "Usage: ./update-gcc.sh gcc/redhat/heads/gcc-NN-branch_commit_hash [git_reference_dir_to_speed_up]"
exit 1
fi
export LC_ALL=C
if ! [ -f gcc.spec ]; then echo Must be run in the directory with gcc.spec file.; exit 1; fi
if [ -d gcc-dir.tmp ]; then echo gcc-dir.tmp already exists.; exit 1; fi
v=`sed -n 's/^%global gcc_version //p' gcc.spec`
p=`sed -n 's/^%global gitrev //p' gcc.spec`
h=$1
if [ "$#" -ge 2 ]; then
git clone --dissociate --reference $2 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
else
git clone git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
fi
git --git-dir=gcc-dir.tmp/.git fetch origin $h
d=`date --iso | sed 's/-//g'`
git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-13.2.1-$d/ $1 | xz -9e > gcc-13.2.1-$d.tar.xz
cd gcc-dir.tmp
git diff $p..$h > P1
git log --format=%B `git log --format='%ae %H' $p..$h | awk '/^gccadmin@gcc.gnu.org/{print $2;exit 0}'`..$h > P2
diff -up /dev/null P2 >> P1
sed -n 's,^+[[:blank:]]\+PR \([a-z0-9+-]\+/[0-9]\+\)$,\1,p' P1 | sed 's/ - .*$//;s/[: ;.]//g' | LC_ALL=C sort -u -t / -k 1,1 -k 2,2n > P3
> P4
for i in `cat P3`; do if grep -F $i ../gcc.spec >/dev/null; then echo $i already recorded.; else echo $i >> P4; fi; done
case "$v" in
*.0.*) echo "- update from trunk" > P5;;
*) echo "- update from releases/gcc-`echo $v | sed 's/\..*$//'` branch" > P5;;
esac
echo `cat P4` | sed 's/ /, /g' | fold -w 71 -s | sed '1s/^/ - PRs /;2,$s/^/ /;s/, $/,/' >> P5
echo >> P5
cd ..
sed -i -e '/^%global gitrev /s/ [0-9a-f]\+$/ '$h'/;/^%global DATE /s/ [0-9]\+$/ '$d'/;/^%changelog$/r gcc-dir.tmp/P5' gcc.spec
git --git-dir=gcc-dir.tmp/.git archive --prefix=gcc-$v-$d/ $h | xz -9e > gcc-$v-$d.tar.xz
rm -rf gcc-dir.tmp
fedpkg new-sources gcc-$v-$d.tar.xz `sed 's/SHA512 (\(.*\)) = [0-9a-f]\+$/\1/' sources | grep -v '^gcc-'`