powerpc-none-eabi-toolchain
maintainer CalebW
· 1 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The package builds a toolchain from source using official GNU project Git repositories with pinned commits; the non-whitelisted hosts are legitimate project forges, and SKIP'd checksums are acceptable for Git sources, making this a standard AUR build with low risk.
Triggered rules
LOW
AI review downgraded a static finding
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package builds a toolchain from source using official GNU project Git repositories with pinned commits; the non-whitelisted hosts are legitimate project forges, and SKIP'd checksums are acceptable for Git sources, making this a standard AUR build with low risk.
2 higher static findings superseded - not the current verdict (shown for transparency)
MEDIUM
source=() URL on a non-standard host
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:20
source=(git+https://sourceware.org/git/binutils-gdb.git#commit=${_binutils_commit}
MEDIUM
Recently orphaned & re-adopted
orphaned_readopted
This package was orphaned and re-adopted within the last 30 days — a window where ownership transfers can introduce malicious changes.
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: Caleb Whitmer <caleb.s.whitmer+aur@gmail.com>
2
3
_arch=powerpc
4
_target=$_arch-none-eabi
5
pkgname=$_target-toolchain
6
pkgver=20230502
7
pkgrel=2
8
pkgdesc="A complete gcc/binutils/newlib toolchain for $_target"
9
depends=('zlib' 'bash' 'libmpc' 'libisl')
10
url="http://www.gnu.org"
11
arch=('x86_64')
12
depends=(libelf)
13
makedepends=(git)
14
license=('GPL' 'BSD')
15
options=('!strip')
16
_binutils_commit=594dcc92e8d1f6bb30e3dfa4eb343febcda66f1a
17
_gcc_commit=ffc6b225c955a3d8478de1beba5ad08a7396648c
18
_newlib_commit=ab49db3a8c08e2240e53d8f12d6a14fd285def4e
19
20
source=(git+https://sourceware.org/git/binutils-gdb.git#commit=${_binutils_commit}
21
git+https://gcc.gnu.org/git/gcc.git#commit=${_gcc_commit}
22
git+https://sourceware.org/git/newlib-cygwin.git#commit=${_newlib_commit}
23
)
24
sha256sums=('SKIP'
25
'SKIP'
26
'SKIP')
27
28
CFLAGS=${CFLAGS/-Werror=format-security/}
29
CXXFLAGS=${CXXFLAGS/-Werror=format-security/}
30
CFLAGS=${CFLAGS/-Wp,-D_GLIBCXX_ASSERTIONS/}
31
CXXFLAGS=${CXXFLAGS/-Wp,-D_GLIBCXX_ASSERTIONS/}
32
CFLAGS=${CFLAGS/-D_GLIBCXX_ASSERTIONS/}
33
CXXFLAGS=${CXXFLAGS/-D_GLIBCXX_ASSERTIONS/}
34
35
prepare() {
36
cd "${srcdir}"/binutils-gdb
37
38
# Fix Python 3.13+ compatibility by using stable GIL APIs instead of deprecated internal variables
39
if [ -f gdb/python/py-gdb-readline.c ]; then
40
sed -i 's/PyEval_RestoreThread (_PyOS_ReadlineTState);/PyGILState_STATE gil_state = PyGILState_Ensure ();/' gdb/python/py-gdb-readline.c
41
sed -i 's/PyEval_SaveThread ();/PyGILState_Release (gil_state);/' gdb/python/py-gdb-readline.c
42
fi
43
44
# Force Autoconf's C++11 macros to always report success
45
find "$srcdir" -name configure -exec sed -i 's/ax_cv_cxx_compile_cxx11=no/ax_cv_cxx_compile_cxx11=yes/g' {} +
46
find "$srcdir" -name configure -exec sed -i 's/as_fn_error $? "C++11 is required"/echo "Bypassing C++11 check"/g' {} +
47
48
# Cleanly sequence gnulib and local configs at the top of every simulator file
49
# This satisfies gnulib's ordering rule and prevents macro collisions
50
find sim/ppc -name "*.c" -exec sed -i '1s/^/#include "..\/..\/gnulib\/config.h"\n#undef PACKAGE_NAME\n#undef PACKAGE_STRING\n#undef PACKAGE_TARNAME\n#undef PACKAGE_VERSION\n#include "config.h"\n/' {} +
51
52
# Neutralize WERROR variables inside the legacy PPC simulator's Makefile template
53
if [ -f sim/ppc/Makefile.in ]; then
54
sed -i 's/WERROR_CFLAGS =.*/WERROR_CFLAGS = -Wno-error/g' sim/ppc/Makefile.in
55
fi
56
57
for i in gcc fixincludes libcody libcpp libgcc libstdc++-v3; do ln -snfv ../gcc/$i; done
58
for i in newlib libgloss; do ln -snfv ../newlib-cygwin/$i; done
59
60
# Revert any messy edits from previous runs
61
git checkout -- include/safe-ctype.h 2>/dev/null || true
62
(cd ../gcc && git checkout -- include/safe-ctype.h 2>/dev/null) || true
63
64
# Append undefs to the END of safe-ctype.h to protect C++ compilation units
65
for file in include/safe-ctype.h ../gcc/include/safe-ctype.h; do
66
if [ -f "$file" ]; then
67
cat << 'EOF' >> "$file"
68
69
#ifdef __cplusplus
70
# undef isalpha
71
# undef isdigit
72
# undef islower
73
# undef isspace
74
# undef isupper
75
# undef isxdigit
76
# undef isalnum
77
# undef isprint
78
# undef isgraph
79
# undef iscntrl
80
# undef isascii
81
# undef tolower
82
# undef toupper
83
#endif
84
EOF
85
fi
86
done
87
88
mkdir -p "${srcdir}/obj"
89
}
90
91
build()
92
{
93
cd "${srcdir}"/obj
94
95
local DEF_CFLAGS="$CFLAGS -std=gnu17 -D_GNU_SOURCE -Wno-error -Wno-incompatible-pointer-types -Wno-int-conversion -Wno-implicit-function-declaration -Wno-discarded-qualifiers -Wno-old-style-definition -Wno-return-mismatch"
96
local DEF_CXXFLAGS="$CXXFLAGS -std=gnu++17 -D_GNU_SOURCE -Wno-error -Wno-template-id-cdtor -fno-char8_t"
97
98
export MAKEFLAGS="-j$(nproc)"
99
100
"${srcdir}"/binutils-gdb/configure \
101
--prefix=/usr \
102
--libexecdir=/usr/lib \
103
--target=${_target} \
104
--disable-werror \
105
--enable-languages=c,c++ \
106
--disable-libstdcxx-pch \
107
--with-newlib \
108
--with-libgloss \
109
--with-system-zlib \
110
--disable-nls \
111
--enable-plugins \
112
--enable-deterministic-archives \
113
--enable-relro \
114
--enable-__cxa_atexit \
115
--enable-linker-build-id \
116
--enable-plugin \
117
--enable-checking=release \
118
--enable-host-shared \
119
--disable-libssp \
120
--disable-libunwind-exceptions \
121
--disable-source-highlight \
122
--with-system-readline \
123
CC="gcc" \
124
CXX="g++" \
125
CFLAGS="$DEF_CFLAGS" \
126
CXXFLAGS="$DEF_CXXFLAGS" \
127
SIM_CFLAGS="-include config.h" \
128
WARN_CFLAGS="-include config.h"
129
130
make
131
}
132
133
package()
134
{
135
cd "${srcdir}/obj"
136
make install DESTDIR="${pkgdir}" -j1
137
rm -rf "${pkgdir}"/usr/share
138
rm -rf "${pkgdir}"/usr/include
139
rm -rf "${pkgdir}"/usr/lib/libcc1.*
140
rm -rf "${pkgdir}"/usr/lib/bfd-plugins
141
find "${pkgdir}" -name '*.py' -delete
142
143
144
# local variable is scoped to the function, for general tidiness.
145
local regex='ELF ().*(executable|shared object).*'
146
# read null-terminated filenames from stdin, and use a while loop to operate on each one
147
# for each run of the loop, the filename is stored in the intuitive variable "filename". :)
148
while read -r -d '' filename; do
149
# test if the output of `file` matches the regular expression defined earlier
150
if [[ $(file -b "$filename") =~ $regex ]]; then
151
# awesome, it matches! So, do the standard strip routine since this isn't an $_target executable
152
strip --strip-unneeded "$filename"
153
fi
154
# this find command uses process substitution to pass the output of find into the `while read` loop
155
done < <(find "$pkgdir" -type f -print0)
156
157
find "${pkgdir}/usr/lib/gcc/${_target}" "${pkgdir}/usr/${_target}/lib" -type f -name '*.o' -o -name '*.a' -exec "${pkgdir}"/usr/bin/${_target}-strip -g {} +
158
159
}
160
Changes since previous scan
--- PKGBUILD @ 2026-07-24 00:02+++ PKGBUILD @ 2026-08-03 00:08@@ -1,10 +1,10 @@-# Maintainer: Christer Solskogen <christer.solskogen@gmail.com+# Maintainer: Caleb Whitmer <caleb.s.whitmer+aur@gmail.com> _arch=powerpc _target=$_arch-none-eabi pkgname=$_target-toolchain pkgver=20230502-pkgrel=1+pkgrel=2 pkgdesc="A complete gcc/binutils/newlib toolchain for $_target" depends=('zlib' 'bash' 'libmpc' 'libisl') url="http://www.gnu.org"@@ -18,8 +18,8 @@ _newlib_commit=ab49db3a8c08e2240e53d8f12d6a14fd285def4e source=(git+https://sourceware.org/git/binutils-gdb.git#commit=${_binutils_commit}- git+https://gcc.gnu.org/git/gcc.git#commit=${_gcc_commit}- git+https://sourceware.org/git/newlib-cygwin.git#commit=${_newlib_commit}+ git+https://gcc.gnu.org/git/gcc.git#commit=${_gcc_commit}+ git+https://sourceware.org/git/newlib-cygwin.git#commit=${_newlib_commit} ) sha256sums=('SKIP' 'SKIP'@@ -27,52 +27,134 @@ CFLAGS=${CFLAGS/-Werror=format-security/} CXXFLAGS=${CXXFLAGS/-Werror=format-security/}+CFLAGS=${CFLAGS/-Wp,-D_GLIBCXX_ASSERTIONS/}+CXXFLAGS=${CXXFLAGS/-Wp,-D_GLIBCXX_ASSERTIONS/}+CFLAGS=${CFLAGS/-D_GLIBCXX_ASSERTIONS/}+CXXFLAGS=${CXXFLAGS/-D_GLIBCXX_ASSERTIONS/} prepare() {- cd "${srcdir}"/binutils-gdb- - #for i in bfd binutils gas gold ld libctf libsframe opcodes; do ln -snfv ../binutils-gdb/$i; done- for i in gcc fixincludes libcody libcpp libgcc libstdc++-v3; do ln -snfv ../gcc/$i; done- for i in newlib libgloss; do ln -snfv ../newlib-cygwin/$i; done+ cd "${srcdir}"/binutils-gdb - mkdir -p "${srcdir}/obj"+ # Fix Python 3.13+ compatibility by using stable GIL APIs instead of deprecated internal variables+ if [ -f gdb/python/py-gdb-readline.c ]; then+ sed -i 's/PyEval_RestoreThread (_PyOS_ReadlineTState);/PyGILState_STATE gil_state = PyGILState_Ensure ();/' gdb/python/py-gdb-readline.c+ sed -i 's/PyEval_SaveThread ();/PyGILState_Release (gil_state);/' gdb/python/py-gdb-readline.c+ fi++ # Force Autoconf's C++11 macros to always report success+ find "$srcdir" -name configure -exec sed -i 's/ax_cv_cxx_compile_cxx11=no/ax_cv_cxx_compile_cxx11=yes/g' {} ++ find "$srcdir" -name configure -exec sed -i 's/as_fn_error $? "C++11 is required"/echo "Bypassing C++11 check"/g' {} +++ # Cleanly sequence gnulib and local configs at the top of every simulator file+ # This satisfies gnulib's ordering rule and prevents macro collisions+ find sim/ppc -name "*.c" -exec sed -i '1s/^/#include "..\/..\/gnulib\/config.h"\n#undef PACKAGE_NAME\n#undef PACKAGE_STRING\n#undef PACKAGE_TARNAME\n#undef PACKAGE_VERSION\n#include "config.h"\n/' {} +++ # Neutralize WERROR variables inside the legacy PPC simulator's Makefile template+ if [ -f sim/ppc/Makefile.in ]; then+ sed -i 's/WERROR_CFLAGS =.*/WERROR_CFLAGS = -Wno-error/g' sim/ppc/Makefile.in+ fi++ for i in gcc fixincludes libcody libcpp libgcc libstdc++-v3; do ln -snfv ../gcc/$i; done+ for i in newlib libgloss; do ln -snfv ../newlib-cygwin/$i; done++ # Revert any messy edits from previous runs+ git checkout -- include/safe-ctype.h 2>/dev/null || true+ (cd ../gcc && git checkout -- include/safe-ctype.h 2>/dev/null) || true++ # Append undefs to the END of safe-ctype.h to protect C++ compilation units+ for file in include/safe-ctype.h ../gcc/include/safe-ctype.h; do+ if [ -f "$file" ]; then+ cat << 'EOF' >> "$file"++#ifdef __cplusplus+# undef isalpha+# undef isdigit+# undef islower+# undef isspace+# undef isupper+# undef isxdigit+# undef isalnum+# undef isprint+# undef isgraph+# undef iscntrl+# undef isascii+# undef tolower+# undef toupper+#endif+EOF+ fi+ done++ mkdir -p "${srcdir}/obj" } build() {- cd "${srcdir}"/obj- "${srcdir}"/binutils-gdb/configure --prefix=/usr --libexecdir=/usr/lib --target=${_target} --enable-languages=c,c++ --disable-libstdcxx-pch \- --with-newlib --with-libgloss --with-system-zlib --disable-nls --enable-plugins --enable-deterministic-archives --enable-relro --enable-__cxa_atexit \- --enable-linker-build-id --enable-plugin --enable-checking=release --enable-host-shared --disable-libssp --disable-libunwind-exceptions --disable-source-highlight + cd "${srcdir}"/obj - make+ local DEF_CFLAGS="$CFLAGS -std=gnu17 -D_GNU_SOURCE -Wno-error -Wno-incompatible-pointer-types -Wno-int-conversion -Wno-implicit-function-declaration -Wno-discarded-qualifiers -Wno-old-style-definition -Wno-return-mismatch"+ local DEF_CXXFLAGS="$CXXFLAGS -std=gnu++17 -D_GNU_SOURCE -Wno-error -Wno-template-id-cdtor -fno-char8_t"++ export MAKEFLAGS="-j$(nproc)"++ "${srcdir}"/binutils-gdb/configure \+ --prefix=/usr \+ --libexecdir=/usr/lib \+ --target=${_target} \+ --disable-werror \+ --enable-languages=c,c++ \+ --disable-libstdcxx-pch \+ --with-newlib \+ --with-libgloss \+ --with-system-zlib \+ --disable-nls \+ --enable-plugins \+ --enable-deterministic-archives \+ --enable-relro \+ --enable-__cxa_atexit \+ --enable-linker-build-id \+ --enable-plugin \+ --enable-checking=release \+ --enable-host-shared \+ --disable-libssp \+ --disable-libunwind-exceptions \+ --disable-source-highlight \+ --with-system-readline \+ CC="gcc" \+ CXX="g++" \+ CFLAGS="$DEF_CFLAGS" \+ CXXFLAGS="$DEF_CXXFLAGS" \+ SIM_CFLAGS="-include config.h" \+ WARN_CFLAGS="-include config.h"++ make } package() {- cd "${srcdir}/obj"- make install DESTDIR="${pkgdir}" -j1- rm -rf "${pkgdir}"/usr/share- rm -rf "${pkgdir}"/usr/include- rm -rf "${pkgdir}"/usr/lib/libcc1.*- rm -rf "${pkgdir}"/usr/lib/bfd-plugins- find "${pkgdir}" -name '*.py' -delete + cd "${srcdir}/obj"+ make install DESTDIR="${pkgdir}" -j1+ rm -rf "${pkgdir}"/usr/share+ rm -rf "${pkgdir}"/usr/include+ rm -rf "${pkgdir}"/usr/lib/libcc1.*+ rm -rf "${pkgdir}"/usr/lib/bfd-plugins+ find "${pkgdir}" -name '*.py' -delete - # local variable is scoped to the function, for general tidiness. - local regex='ELF ().*(executable|shared object).*'- # read null-terminated filenames from stdin, and use a while loop to operate on each one- # for each run of the loop, the filename is stored in the intuitive variable "filename". :) - while read -r -d '' filename; do- # test if the output of `file` matches the regular expression defined earlier- if [[ $(file -b "$filename") =~ $regex ]]; then- # awesome, it matches! So, do the standard strip routine since this isn't an $_target executable- strip --strip-unneeded "$filename"- fi- # this find command uses process substitution to pass the output of find into the `while read` loop- done < <(find "$pkgdir" -type f -print0)+ # local variable is scoped to the function, for general tidiness. + local regex='ELF ().*(executable|shared object).*'+ # read null-terminated filenames from stdin, and use a while loop to operate on each one+ # for each run of the loop, the filename is stored in the intuitive variable "filename". :) + while read -r -d '' filename; do+ # test if the output of `file` matches the regular expression defined earlier+ if [[ $(file -b "$filename") =~ $regex ]]; then+ # awesome, it matches! So, do the standard strip routine since this isn't an $_target executable+ strip --strip-unneeded "$filename"+ fi+ # this find command uses process substitution to pass the output of find into the `while read` loop+ done < <(find "$pkgdir" -type f -print0) - find "${pkgdir}/usr/lib/gcc/${_target}" "${pkgdir}/usr/${_target}/lib" -type f -name '*.o' -o -name '*.a' -exec "${pkgdir}"/usr/bin/${_target}-strip -g {} ++ find "${pkgdir}/usr/lib/gcc/${_target}" "${pkgdir}/usr/${_target}/lib" -type f -name '*.o' -o -name '*.a' -exec "${pkgdir}"/usr/bin/${_target}-strip -g {} + } Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 3 |
| 2026-08-02 00:16:08 | LOW | 3 |
| 2026-08-01 00:11:18 | LOW | 3 |
| 2026-07-31 00:14:10 | LOW | 3 |
| 2026-07-30 00:17:23 | LOW | 3 |
| 2026-07-29 00:25:53 | LOW | 3 |
| 2026-07-28 00:07:28 | LOW | 3 |
| 2026-07-27 00:24:32 | LOW | 3 |
| 2026-07-26 00:07:32 | LOW | 3 |
| 2026-07-25 00:13:44 | LOW | 3 |
| 2026-07-24 19:28:12 | MEDIUM | 2 |
| 2026-07-24 00:02:28 | LOW | 3 |
| 2026-07-23 00:14:47 | LOW | 3 |
| 2026-07-22 00:29:32 | LOW | 3 |
| 2026-07-21 00:24:15 | LOW | 3 |
| 2026-07-20 17:14:35 | MEDIUM | 2 |
| 2026-06-19 19:07:35 | CLEAN | 2 |
| 2026-06-18 16:11:54 | MEDIUM | 1 |