Compare commits

...

108 Commits

Author SHA1 Message Date
Dave Murphy
eac2e40528 devkitPPC: remove old patch file 2022-05-22 21:21:35 +01:00
Dave Murphy
e377ef05f6 devkitPPC: remove obsolete flag setting 2022-05-06 21:15:06 +01:00
Dave Murphy
67b8703a8c devkitPPC: update gcc to 12.1.0 2022-05-06 19:46:27 +01:00
Dave Murphy
df8b66a808 devkitA64: update gcc to 12.1.0 2022-05-06 17:46:22 +01:00
Dave Murphy
219b5dcebd devkitARM: update gcc to 12.1.0 2022-05-06 13:27:04 +01:00
Dave Murphy
a370be5c4a devkitA64: update gcc to 12.1.0-RC-20220429 2022-05-02 22:19:23 +01:00
Dave Murphy
a84866105a devkitARM: update gcc to 12.1.0-RC-20220429 2022-04-30 18:00:21 +01:00
Dave Murphy
c0146427e1 devkitARM: update binutils to 2.38 2022-04-30 17:57:26 +01:00
Dave Murphy
a0ee149c40 devkitA64: remove obsolete flag setting 2022-01-27 20:55:27 +00:00
Dave Murphy
da06cfb478 devkitPPC: add arm64 macOS patch 2022-01-25 19:49:11 +00:00
Dave Murphy
b700c35789 devkitARM: update newlib to 4.2.0.20211231 2022-01-03 19:21:28 +00:00
Dave Murphy
73b1cb9d7a devkitPPC: update newlib to 4.2.0.20211231 2022-01-03 19:21:20 +00:00
Dave Murphy
3ca5189cdd devkitA64: update newlib to 4.2.0.20211231 2022-01-03 12:24:00 +00:00
Dave Murphy
4dc7a3333c devkitPPC: next release is 40 2022-01-03 12:21:48 +00:00
Dave Murphy
98aac78959 devkitPPC: remove can delete directories 2022-01-02 18:34:36 +00:00
Dave Murphy
092f657e81 devkitPPC: update binutils to 2.37 2022-01-02 18:34:36 +00:00
Dave Murphy
7d3bbea16e devkitPPC: update gcc to 11.2.0 2022-01-02 18:34:36 +00:00
Dave Murphy
066afb3cca devkitARM: remove can delete directories 2022-01-02 18:34:36 +00:00
Dave Murphy
dd13eb9497 devkitARM: rework syscall interface 2022-01-02 18:34:36 +00:00
Dave Murphy
af726256f1 devkitARM: patch binutils for building with mingw 2022-01-02 18:34:36 +00:00
Dave Murphy
5e87380f11 devkitARM: update binutils to 2.37 2022-01-02 18:34:36 +00:00
Dave Murphy
cd9e7f1fee devkitARM: update gcc to 11.2.0 2022-01-02 18:34:36 +00:00
Dave Murphy
f1bf935706 devkitA64: remove can delete directories 2022-01-02 18:34:36 +00:00
Dave Murphy
9ae621ad62 devkitA64: upgrade gcc to 11.2 2022-01-02 18:34:26 +00:00
Dave Murphy
251c7cbbf1 devkitPPC: use supplied zlib 2021-05-25 09:27:00 +01:00
Dave Murphy
2b7e5215fc fix shebang 2021-05-25 09:16:19 +01:00
Dave Murphy
540dbb84c6 devkitPPC: remove stale patches 2021-05-25 09:16:19 +01:00
Dave Murphy
90fb45065c devkitPPC: disable unwanted features 2021-05-25 09:16:19 +01:00
Dave Murphy
771225f45a devkitPPC: move mn10200 binutils to 2.24 2021-05-25 09:16:19 +01:00
Dave Murphy
fdb7c8a6d2 devkitPPC: update gcc to 11.1.0 2021-05-25 09:16:19 +01:00
Dave Murphy
5649ec2a1f devkitPPC: update newlib patch 2021-05-25 09:16:19 +01:00
Dave Murphy
6e92980fd1 devkitPPC: allow external gcc config params 2021-05-25 09:16:19 +01:00
Dave Murphy
3673dced6d devkitPPC: reduce printf bloat 2021-05-25 09:16:19 +01:00
Dave Murphy
6999db3f10 devkitPPC: next release is 39 2021-05-25 09:16:19 +01:00
Dave Murphy
ae793d657a devkitPPC: update binutils to 2.36.1 2021-05-25 09:16:19 +01:00
Dave Murphy
c375da789d devkitPPC: update newlib to 4.1.0 2021-05-25 09:16:19 +01:00
Dave Murphy
b8c7c915bc allow prevention of binary stripping 2021-05-09 13:50:54 +01:00
Dave Murphy
c108162819 use ansi stdio on mingw host too 2021-05-09 13:38:10 +01:00
Dave Murphy
e952463476 use the supplied zlib 2021-05-08 21:28:54 +01:00
Dave Murphy
1444dc91df allow external variables to influence build 2021-05-08 21:10:04 +01:00
Dave Murphy
4219405837 devkitARM: update gcc patch 2021-04-30 13:08:32 +01:00
Dave Murphy
aacd4f8bf6 devkitARM: allow external gcc config params 2021-04-30 13:08:32 +01:00
Dave Murphy
e4cb9e3b2f devkitARM: update binutils to 2.36.1 2021-04-30 13:08:32 +01:00
Dave Murphy
85ec801a13 devkitARM: update newlib to 4.1.0 2021-04-30 13:08:32 +01:00
Dave Murphy
0eb81ba063 devkitARM: next release is 56 2021-04-30 13:08:32 +01:00
Dave Murphy
5740d1d57d devkitARM: update gcc to 11.1.0 2021-04-30 13:08:32 +01:00
Dave Murphy
d2c48d04c2 ignore .xz files 2021-04-29 22:53:42 +01:00
Dave Murphy
289d6a6aa0 use latest crtls & rules 2021-04-29 22:53:42 +01:00
Dave Murphy
c33f389df1 add zstd to configure options 2021-04-29 22:53:42 +01:00
Dave Murphy
2938af4ed5 add isl to configure options 2021-04-29 22:53:42 +01:00
Dave Murphy
0f4422c92c devkitA64: allow external gcc config params 2021-04-29 22:53:42 +01:00
Dave Murphy
dc5b7bb5a6 remove cross build scripts 2021-04-29 22:53:42 +01:00
Dave Murphy
a87f68d4dd devkitA64: update gcc to 11.1.0 2021-04-29 22:53:26 +01:00
Dave Murphy
a9b611e134 dlls no longer required 2021-04-27 16:49:40 +01:00
Dave Murphy
6015da5cab devkitA64: update newlib to 4.1.0 2021-04-27 16:49:31 +01:00
Dave Murphy
6a74f83616 devkitPPC: use modern config.sub for mn10200 binutils 2020-07-25 14:58:45 +01:00
Dave Murphy
953cf2a761 devkitPPC: update gcc to 10.2.0, next release is r38 2020-07-25 13:10:46 +01:00
Dave Murphy
60efdbd109 devkitPPC: stop building gdb here 2020-07-25 11:13:00 +01:00
Dave Murphy
ef789eddb7 don't download crtls & rules archives if not building them 2020-07-25 03:45:56 +01:00
Dave Murphy
502f832a5b fixup rules archive downloading 2020-07-25 03:29:50 +01:00
Dave Murphy
848924d332 devkitARM: update rules to 1.2.0 2020-07-25 03:07:30 +01:00
Dave Murphy
1f5f5eedf5 devkitARM: update gcc to 10.2.0 2020-07-25 03:05:58 +01:00
Dave Murphy
5664d84c44 devkitARM: update rules to 1.1.0 2020-07-25 03:02:16 +01:00
Dave Murphy
6e8de1b1d2 devkitARM: next release is 55 2020-07-25 03:02:16 +01:00
Dave Murphy
b16276e9da devkitARM: separate gdb 2020-07-25 03:02:16 +01:00
Dave Murphy
7f142c7583 devkitARM: use binutils 2.34 2020-07-25 03:02:16 +01:00
Dave Murphy
1a1b35aa3b devkitARM: disable tm clone registry and cxa-atexit 2020-07-25 03:02:16 +01:00
Dave Murphy
70c8df8709 devkitA64 now release 16 2020-07-25 02:53:33 +01:00
Dave Murphy
bc52f6ac2b devkitA64: next release is r16 2020-07-24 23:41:39 +01:00
Dave Murphy
81719c49e3 devkitA64: disable cxa_atexit & tm clone registry 2020-07-24 23:41:39 +01:00
Dave Murphy
d4a84c9884 devkitA64: separate rules package 2020-07-24 23:41:39 +01:00
Dave Murphy
25f22b6c93 devkitA64: don't build gdb 2020-07-24 23:41:39 +01:00
Dave Murphy
a0fe0c5297 devkitA64: update to gcc 10.2.0 2020-07-24 23:41:39 +01:00
Dave Murphy
77ad8b785c add native tools to path when cross building 2020-07-24 23:40:16 +01:00
Dave Murphy
e4b1370595 remove redundant toolsprefix 2020-07-24 23:38:05 +01:00
Dave Murphy
dcfd0e271e add dummy cross build script for linux PKGBUILD 2020-07-24 23:34:26 +01:00
Dave Murphy
9bf0973c2a ensure newly built tools on front of path 2020-07-24 16:02:56 +01:00
Dave Murphy
0b31c7ab1c stop building gdb here 2020-07-24 15:55:13 +01:00
Dave Murphy
90e2936222 add cross build for aarch64 linux 2020-06-30 18:18:19 +01:00
Dave Murphy
556a2a2e02 devkitPPC: refill buffer for large reads 2020-06-08 20:01:52 +01:00
Dave Murphy
6da9ea33f7 devkitPPC: use binutils 2.34 2020-06-08 19:59:53 +01:00
Dave Murphy
433a4bdd80 devkitPPC: releease 37 2020-05-16 03:17:05 +01:00
Dave Murphy
20bf4948a1 devkitPPC: update to gcc 10 2020-05-16 03:15:39 +01:00
Dave Murphy
5e720e01c1 devkitPPC: rework syscalls 2020-05-16 03:14:57 +01:00
Dave Murphy
183ab79cfc flag for building crtls & rules 2020-05-12 14:04:01 +01:00
Dave Murphy
ad4246dfc4 oops, forgot to update rules script for devkitPPC 2020-05-12 11:37:27 +00:00
Dave Murphy
9165c280f3 restore building of crtls and rules files 2020-05-11 13:43:17 +01:00
Dave Murphy
116613adc8 devkitARM: next release is r54 2020-05-08 10:04:40 +01:00
Dave Murphy
fbc790a8dd devkitARM: upgrade newlib to 3.3.0 2020-05-08 10:01:17 +01:00
Dave Murphy
91789e0ca8 devkitARM: upgrade gcc to 10.1.0 2020-05-08 10:00:10 +01:00
Dave Murphy
fddf563787 devkitA64: next release is r15 2020-05-08 09:59:14 +01:00
Dave Murphy
45bf89586f devkitA64: upgrade gdb to 9.1 2020-05-08 09:57:51 +01:00
Dave Murphy
ddaf472951 devkitA64: upgrade newlib to 3.3.0 2020-05-08 09:56:51 +01:00
Dave Murphy
0adc00806f devkitA64: upgrade gcc to 10.1.0 2020-05-08 09:54:21 +01:00
Dave Murphy
fa1972f5e9 gdb requires CPPFLAGS for cross compile 2020-05-08 09:51:51 +01:00
Dave Murphy
2a306b5e49 strip bins script should be executable 2020-05-08 09:50:02 +01:00
Dave Murphy
1857d52ede copy dll to libexec folder for windows tools 2020-05-08 09:49:26 +01:00
Dave Murphy
57ec7b67ac script builds devkitPPC release 36 2020-04-12 02:12:22 +01:00
Dave Murphy
d9392f8f56 stop downloading and building outdated tools archives 2020-04-12 02:10:35 +01:00
Dave Murphy
e0c908dfc2 devkitPPC: next release is r35 2020-04-12 01:38:45 +01:00
Dave Murphy
2ddef0ade4 devkitPPC: update newlib to 3.3.0 2020-04-12 01:38:08 +01:00
Dave Murphy
e68aaf8cdd devkitPPC: update gcc to 8.4.0 2020-04-12 01:37:13 +01:00
Dave Murphy
0add4d1b5c changes for devkitA64 r14 2019-12-11 01:18:57 +00:00
Dave Murphy
736db33e06 devkitARM: remove old gcc patch 2019-06-28 16:07:20 +01:00
Dave Murphy
96f7acc919 remove library building from scripts 2019-06-25 22:04:51 +01:00
Dave Murphy
c2aae79d59 devkitARM: latest newlib patch 2019-06-25 20:28:26 +01:00
Dave Murphy
fe202a6f50 devkitARM: update gcc to 9.1.0 2019-06-23 10:54:29 +01:00
Dave Murphy
aeb6482da9 devkitARM: update gdb patch 2019-05-14 10:22:19 +01:00
32 changed files with 1390 additions and 2203 deletions

1
.gitignore vendored
View File

@@ -2,6 +2,7 @@ config.sh
.devkitARM* .devkitARM*
.devkitPPC* .devkitPPC*
.devkitA64* .devkitA64*
*.xz
*.gz *.gz
*.bz2 *.bz2
*~ *~

View File

@@ -1,8 +1,8 @@
#!/bin/bash #!/usr/bin/env bash
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# devkitARM release 52 # devkitARM release 58
# devkitPPC release 35 # devkitPPC release 41
# devkitA64 release 13 # devkitA64 release 19
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
if [ 0 -eq 1 ] ; then if [ 0 -eq 1 ] ; then
@@ -26,45 +26,13 @@ echo "https://github.com/devkitPro/buildscripts/pulls"
echo echo
GENERAL_TOOLS_VER=1.0.2
LIBGBA_VER=0.5.2 DKARM_RULES_VER=1.2.1
GBATOOLS_VER=1.1.0 DKARM_CRTLS_VER=1.1.1
DKARM_RULES_VER=1.0.0
DKARM_CRTLS_VER=1.0.0
LIBNDS_VER=1.7.2 DKPPC_RULES_VER=1.1.0
DEFAULT_ARM7_VER=0.7.4
DSWIFI_VER=0.4.2
MAXMOD_VER=1.0.11
FILESYSTEM_VER=0.9.14
LIBFAT_VER=1.1.3
DSTOOLS_VER=1.2.1
GRIT_VER=0.8.15
NDSTOOL_VER=2.1.1
MMUTIL_VER=1.8.7
DFU_UTIL_VER=0.9.1 DKA64_RULES_VER=1.0.1
STLINK_VER=1.2.3
GAMECUBE_TOOLS_VER=1.0.2
LIBOGC_VER=1.8.21
WIILOAD_VER=0.5.1
DKPPC_RULES_VER=1.0.0
LIBCTRU_VER=1.5.1
CITRO3D_VER=1.5.0
CITRO2D_VER=1.1.0
TOOLS3DS_VER=1.1.4
LINK3DS_VER=0.5.2
PICASSO_VER=2.7.0
TEX3DS_VER=1.0.0
GP32_TOOLS_VER=1.0.3
LIBMIRKO_VER=0.9.8
SWITCH_TOOLS_VER=1.4.1
LIBNX_VER=1.3.0
OSXMIN=${OSXMIN:-10.9} OSXMIN=${OSXMIN:-10.9}
@@ -90,13 +58,6 @@ if [ ! -z "$CROSSBUILD" ] ; then
fi fi
fi fi
#---------------------------------------------------------------------------------
# Sane defaults for building toolchain
#---------------------------------------------------------------------------------
export CFLAGS="-O2 -pipe"
export CXXFLAGS="$CFLAGS"
unset LDFLAGS
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# Look for automated configuration file to bypass prompts # Look for automated configuration file to bypass prompts
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
@@ -151,24 +112,22 @@ fi
echo use $MAKE as make echo use $MAKE as make
export MAKE export MAKE
CROSS_PARAMS="--build=`./config.guess`"
if [ ! -z $CROSSBUILD ]; then
export PATH=/opt/devkitpro/$package/bin:$PATH
prefix=$INSTALLDIR/$CROSSBUILD/$package
CROSS_PARAMS="$CROSS_PARAMS --host=$CROSSBUILD"
CROSS_GCC_PARAMS="--with-gmp=$CROSSPATH --with-mpfr=$CROSSPATH --with-mpc=$CROSSPATH --with-isl=$CROSSPATH --with-zstd=$CROSSPATH"
else
prefix=$INSTALLDIR/$package
fi
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# Add installed devkit to the path, adjusting path on minsys # Add installed devkit to the path, adjusting path on minsys
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
TOOLPATH=$(echo $INSTALLDIR | sed -e 's/^\([a-zA-Z]\):/\/\1/') TOOLPATH=$(echo $INSTALLDIR | sed -e 's/^\([a-zA-Z]\):/\/\1/')
export PATH=$PATH:$TOOLPATH/$package/bin export PATH=$TOOLPATH/$package/bin:$PATH
CROSS_PARAMS="--build=`./config.guess`"
if [ ! -z $CROSSBUILD ]; then
toolsprefix=$INSTALLDIR/$CROSSBUILD/tools
prefix=$INSTALLDIR/$CROSSBUILD/$package
toolsprefix=$INSTALLDIR/$CROSSBUILD/tools
CROSS_PARAMS="$CROSS_PARAMS --host=$CROSSBUILD"
CROSS_GCC_PARAMS="--with-gmp=$CROSSPATH --with-mpfr=$CROSSPATH --with-mpc=$CROSSPATH"
else
toolsprefix=$INSTALLDIR/tools
prefix=$INSTALLDIR/$package
fi
if [ "$BUILD_DKPRO_AUTOMATED" != "1" ] ; then if [ "$BUILD_DKPRO_AUTOMATED" != "1" ] ; then
@@ -195,7 +154,7 @@ case $PLATFORM in
fi fi
;; ;;
MINGW32* ) MINGW32* )
cppflags="-D__USE_MINGW_ACCESS" cppflags="-D__USE_MINGW_ACCESS -D__USE_MINGW_ANSI_STDIO=1"
;; ;;
esac esac
@@ -214,43 +173,26 @@ fi
patchdir=$(pwd)/$basedir/patches patchdir=$(pwd)/$basedir/patches
scriptdir=$(pwd)/$basedir/scripts scriptdir=$(pwd)/$basedir/scripts
archives="binutils-${BINUTILS_VER}.tar.xz gcc-${GCC_VER}.tar.xz newlib-${NEWLIB_VER}.tar.gz gdb-${GDB_VER}.tar.xz" archives="binutils-${BINUTILS_VER}.tar.xz gcc-${GCC_VER}.tar.xz newlib-${NEWLIB_VER}.tar.gz"
if [ $VERSION -eq 1 ]; then
targetarchives="libnds-src-${LIBNDS_VER}.tar.bz2 libgba-src-${LIBGBA_VER}.tar.bz2
libmirko-src-${LIBMIRKO_VER}.tar.bz2 dswifi-src-${DSWIFI_VER}.tar.bz2 maxmod-src-${MAXMOD_VER}.tar.bz2
default-arm7-src-${DEFAULT_ARM7_VER}.tar.bz2 libfilesystem-src-${FILESYSTEM_VER}.tar.bz2
libfat-src-${LIBFAT_VER}.tar.bz2 libctru-src-${LIBCTRU_VER}.tar.bz2 citro3d-src-${CITRO3D_VER}.tar.bz2
citro2d-src-${CITRO2D_VER}.tar.bz2"
hostarchives="gba-tools-$GBATOOLS_VER.tar.bz2 gp32-tools-$GP32_TOOLS_VER.tar.bz2
dstools-$DSTOOLS_VER.tar.bz2 grit-$GRIT_VER.tar.bz2 ndstool-$NDSTOOL_VER.tar.bz2
general-tools-$GENERAL_TOOLS_VER.tar.bz2 mmutil-$MMUTIL_VER.tar.bz2
dfu-util-$DFU_UTIL_VER.tar.bz2 stlink-$STLINK_VER.tar.bz2 3dstools-$TOOLS3DS_VER.tar.bz2
picasso-$PICASSO_VER.tar.bz2 tex3ds-$TEX3DS_VER.tar.bz2 3dslink-$LINK3DS_VER.tar.bz2"
archives="devkitarm-rules-$DKARM_RULES_VER.tar.xz devkitarm-crtls-$DKARM_CRTLS_VER.tar.xz $archives"
fi
if [ $VERSION -eq 2 ]; then if [ $VERSION -eq 2 ]; then
archives="binutils-${MN_BINUTILS_VER}.tar.bz2 $archives"
targetarchives="libogc-src-${LIBOGC_VER}.tar.bz2 libfat-src-${LIBFAT_VER}.tar.bz2"
hostarchives="gamecube-tools-$GAMECUBE_TOOLS_VER.tar.bz2 wiiload-$WIILOAD_VER.tar.bz2 general-tools-$GENERAL_TOOLS_VER.tar.bz2"
archives="binutils-${MN_BINUTILS_VER}.tar.bz2 devkitppc-rules-$DKPPC_RULES_VER.tar.xz $archives"
fi fi
if [ $VERSION -eq 3 ]; then if [ "$BUILD_DKPRO_SKIP_CRTLS" != "1" ]; then
if [ $VERSION -eq 1 ]; then
archives="devkitarm-rules-$DKARM_RULES_VER.tar.gz devkitarm-crtls-$DKARM_CRTLS_VER.tar.gz $archives"
fi
targetarchives=" libnx-src-${LIBNX_VER}.tar.bz2" if [ $VERSION -eq 2 ]; then
archives="devkitppc-rules-$DKPPC_RULES_VER.tar.gz $archives"
hostarchives="general-tools-$GENERAL_TOOLS_VER.tar.bz2 switch-tools-$SWITCH_TOOLS_VER.tar.bz2" fi
if [ $VERSION -eq 3 ]; then
archives="devkita64-rules-$DKA64_RULES_VER.tar.gz $archives"
fi
fi fi
if [ ! -z "$BUILD_DKPRO_SRCDIR" ] ; then if [ ! -z "$BUILD_DKPRO_SRCDIR" ] ; then
SRCDIR="$BUILD_DKPRO_SRCDIR" SRCDIR="$BUILD_DKPRO_SRCDIR"
else else
@@ -258,7 +200,7 @@ else
fi fi
cd "$SRCDIR" cd "$SRCDIR"
for archive in $archives $targetarchives $hostarchives for archive in $archives
do do
echo $archive echo $archive
if [ ! -f $archive ]; then if [ ! -f $archive ]; then
@@ -273,52 +215,26 @@ cd $BUILDDIR
extract_and_patch binutils $BINUTILS_VER xz extract_and_patch binutils $BINUTILS_VER xz
extract_and_patch gcc $GCC_VER xz extract_and_patch gcc $GCC_VER xz
extract_and_patch newlib $NEWLIB_VER gz extract_and_patch newlib $NEWLIB_VER gz
extract_and_patch gdb $GDB_VER xz
if [ $VERSION -eq 2 ]; then if [ $VERSION -eq 2 ]; then extract_and_patch binutils $MN_BINUTILS_VER bz2; fi
extract_and_patch binutils $MN_BINUTILS_VER bz2
fi
for archive in $targetarchives
do
destdir=$(echo $archive | sed -e 's/\(.*\)-src-\(.*\)\.tar\.bz2/\1-\2/' )
echo $destdir
if [ ! -d $destdir ]; then
mkdir -p $destdir
bzip2 -cd "$SRCDIR/$archive" | tar -xf - -C $destdir || { echo "Error extracting "$archive; exit 1; }
fi
done
for archive in $hostarchives
do
destdir=$(echo $archive | sed -e 's/\(.*\)-src-\(.*\)\.tar\.bz2/\1-\2/' )
if [ ! -d $destdir ]; then
tar -xjf "$SRCDIR/$archive"
fi
done
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# Build and install devkit components # Build and install devkit components
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
if [ -f $scriptdir/build-gcc.sh ]; then . $scriptdir/build-gcc.sh || { echo "Error building toolchain"; exit 1; }; cd $BUILDSCRIPTDIR; fi if [ -f $scriptdir/build-gcc.sh ]; then . $scriptdir/build-gcc.sh || { echo "Error building toolchain"; exit 1; }; cd $BUILDSCRIPTDIR; fi
if [ "$BUILD_DKPRO_SKIP_TOOLS" != "1" ] && [ -f $scriptdir/build-tools.sh ]; then
. $scriptdir/build-tools.sh || { echo "Error building tools"; exit 1; }; cd $BUILDSCRIPTDIR;
fi
if [ "$BUILD_DKPRO_SKIP_LIBRARIES" != "1" ] && [ -f $scriptdir/build-libs.sh ]; then if [ "$BUILD_DKPRO_SKIP_CRTLS" != "1" ] && [ -f $scriptdir/build-crtls.sh ]; then
. $scriptdir/build-libs.sh || { echo "Error building libraries"; exit 1; }; cd $BUILDSCRIPTDIR; . $scriptdir/build-crtls.sh || { echo "Error building crtls & rules"; exit 1; }; cd $BUILDSCRIPTDIR;
fi fi
cd $BUILDSCRIPTDIR cd $BUILDSCRIPTDIR
if [ ! -z $CROSSBUILD ] && grep -q "mingw" <<<"$CROSSBUILD" ; then if [ "$BUILD_DKPRO_NO_STRIP_BINARIES" != "1" ]; then
cp -v $CROSSBINPATH//libwinpthread-1.dll $prefix/bin echo "stripping installed binaries"
. ./strip_bins.sh
fi fi
echo "stripping installed binaries"
. ./strip_bins.sh
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# Clean up temporary files and source directories # Clean up temporary files and source directories
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------

View File

@@ -31,15 +31,9 @@ BUILD_DKPRO_PACKAGE=0
#export MAKEFLAGS="$MAKEFLAGS -j${numcores}" #export MAKEFLAGS="$MAKEFLAGS -j${numcores}"
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# Uncomment to skip building of tools # Uncomment to skip building of crtls and rules files
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
#BUILD_DKPRO_SKIP_TOOLS=1 #BUILD_DKPRO_SKIP_CRTLS=1
#---------------------------------------------------------------------------------
# Uncomment to skip building of libraries
#---------------------------------------------------------------------------------
#BUILD_DKPRO_SKIP_LIBRARIES=1
# Automated script execution # Automated script execution
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------

View File

@@ -1,7 +0,0 @@
#!/bin/bash
export CROSSBUILD=i686-w64-mingw32
export CROSSPATH=/opt/mingw32/mingw
export CROSSLIBPATH=$CROSSPATH/lib
export CROSSBINPATH=$CROSSPATH/bin
export PATH=/opt/mingw32/bin:$PATH

View File

@@ -1,18 +0,0 @@
#!/bin/bash
export CPPFLAGS=-I/opt/osx/x86_64-apple-darwin15/include
export LDFLAGS=-L/opt/osx/x86_64-apple-darwin15/lib
export OSXCROSS_PKG_CONFIG_USE_NATIVE_VARIABLES=1
export CC=x86_64-apple-darwin15-clang
export CXX=x86_64-apple-darwin15-clang++
export CROSSBUILD=x86_64-apple-darwin15
export CROSSPATH=/opt/osx/x86_64-apple-darwin15
export CROSSLIBPATH=$CROSSPATH/lib
export CROSSBINPATH=$CROSSPATH/bin
export PATH=/opt/osx/bin:$PATH
export PKG_CONFIG_PATH=
export PKG_CONFIG_LIBDIR=$CROSSLIBPATH/pkgconfig

View File

@@ -1,7 +0,0 @@
#!/bin/bash
export CROSSBUILD=x86_64-w64-mingw32
export CROSSPATH=/opt/mingw64/mingw
export CROSSLIBPATH=$CROSSPATH/lib
export CROSSBINPATH=$CROSSPATH/bin
export PATH=/opt/mingw64/bin:$PATH

View File

@@ -1,54 +1,7 @@
diff --git a/gcc/config.gcc b/gcc/config.gcc diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/aarch64/aarch64.cc gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/aarch64.cc
index 7af8e028104..90a3a50f624 100644 --- gcc-12.1.0-RC-20220429/gcc/config/aarch64/aarch64.cc 2022-04-29 14:58:22.000000000 +0100
--- a/gcc/config.gcc +++ gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/aarch64.cc 2022-05-02 21:50:30.090088643 +0100
+++ b/gcc/config.gcc @@ -19417,8 +19417,24 @@
@@ -945,6 +945,12 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
case $target in
aarch64-*-elf*)
use_gcc_stdint=wrap
+ tm_file="${tm_file} devkitpro.h"
+ tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
+ extra_options="${extra_options} devkitpro.opt"
+ case ${enable_threads} in
+ "" | yes | posix) thread_file='posix' ;;
+ esac
;;
aarch64-*-fuchsia*)
tm_file="${tm_file} fuchsia.h"
diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h
index c074238df06..ef503ddd5a6 100644
--- a/gcc/config/aarch64/aarch64-elf-raw.h
+++ b/gcc/config/aarch64/aarch64-elf-raw.h
@@ -22,6 +22,7 @@
#ifndef GCC_AARCH64_ELF_RAW_H
#define GCC_AARCH64_ELF_RAW_H
+#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L %(libgloss) --end-group"
#define STARTFILE_SPEC " crti%O%s crtbegin%O%s crt0%O%s"
#define ENDFILE_SPEC \
" crtend%O%s crtn%O%s " \
diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h
index 7a5c6d7664f..687793841de 100644
--- a/gcc/config/aarch64/aarch64-opts.h
+++ b/gcc/config/aarch64/aarch64-opts.h
@@ -48,6 +48,12 @@ enum aarch64_tls_type {
TLS_DESCRIPTORS
};
+/* Which thread pointer access sequence to use. */
+enum aarch64_tp_type {
+ TP_HARD,
+ TP_SOFT
+};
+
/* The code model defines the address generation strategy.
Most have a PIC and non-PIC variant. */
enum aarch64_code_model {
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 349ca0c047b..5c03c42c28e 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -12005,8 +12005,24 @@ aarch64_load_tp (rtx target)
|| !register_operand (target, Pmode)) || !register_operand (target, Pmode))
target = gen_reg_rtx (Pmode); target = gen_reg_rtx (Pmode);
@@ -75,11 +28,21 @@ index 349ca0c047b..5c03c42c28e 100644
return target; return target;
} }
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/aarch64/aarch64-elf-raw.h gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/aarch64-elf-raw.h
index 976f9afae54..73263bcb5e7 100644 --- gcc-12.1.0-RC-20220429/gcc/config/aarch64/aarch64-elf-raw.h 2022-04-29 14:58:22.000000000 +0100
--- a/gcc/config/aarch64/aarch64.h +++ gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/aarch64-elf-raw.h 2022-05-02 21:50:30.086094234 +0100
+++ b/gcc/config/aarch64/aarch64.h @@ -22,6 +22,7 @@
@@ -957,6 +957,10 @@ typedef struct #ifndef GCC_AARCH64_ELF_RAW_H
#define GCC_AARCH64_ELF_RAW_H
+#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L %(libgloss) --end-group"
#define STARTFILE_SPEC " crti%O%s crtbegin%O%s crt0%O%s"
#define ENDFILE_SPEC \
" crtend%O%s crtn%O%s " \
diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/aarch64/aarch64.h gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/aarch64.h
--- gcc-12.1.0-RC-20220429/gcc/config/aarch64/aarch64.h 2022-04-29 14:58:22.000000000 +0100
+++ gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/aarch64.h 2022-05-02 21:50:30.090088643 +0100
@@ -1245,6 +1245,10 @@
/* Check TLS Descriptors mechanism is selected. */ /* Check TLS Descriptors mechanism is selected. */
#define TARGET_TLS_DESC (aarch64_tls_dialect == TLS_DESCRIPTORS) #define TARGET_TLS_DESC (aarch64_tls_dialect == TLS_DESCRIPTORS)
@@ -90,11 +53,19 @@ index 976f9afae54..73263bcb5e7 100644
extern enum aarch64_code_model aarch64_cmodel; extern enum aarch64_code_model aarch64_cmodel;
/* When using the tiny addressing model conditional and unconditional branches /* When using the tiny addressing model conditional and unconditional branches
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md @@ -1290,7 +1294,7 @@
index 32a0e1f3685..783c655acf0 100644 #define MCPU_TO_MARCH_SPEC_FUNCTIONS \
--- a/gcc/config/aarch64/aarch64.md { "rewrite_mcpu", aarch64_rewrite_mcpu },
+++ b/gcc/config/aarch64/aarch64.md
@@ -5693,11 +5693,22 @@ -#if defined(__aarch64__)
+#if 0 // defined(__aarch64__)
extern const char *host_detect_local_cpu (int argc, const char **argv);
#define HAVE_LOCAL_CPU_DETECT
# define EXTRA_SPEC_FUNCTIONS \
diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/aarch64/aarch64.md gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/aarch64.md
--- gcc-12.1.0-RC-20220429/gcc/config/aarch64/aarch64.md 2022-04-29 14:58:22.000000000 +0100
+++ gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/aarch64.md 2022-05-02 21:50:30.090088643 +0100
@@ -6899,11 +6899,22 @@
(define_insn "aarch64_load_tp_hard" (define_insn "aarch64_load_tp_hard"
[(set (match_operand:DI 0 "register_operand" "=r") [(set (match_operand:DI 0 "register_operand" "=r")
(unspec:DI [(const_int 0)] UNSPEC_TLS))] (unspec:DI [(const_int 0)] UNSPEC_TLS))]
@@ -119,11 +90,10 @@ index 32a0e1f3685..783c655acf0 100644
;; The TLS ABI specifically requires that the compiler does not schedule ;; The TLS ABI specifically requires that the compiler does not schedule
;; instructions in the TLS stubs, in order to enable linker relaxation. ;; instructions in the TLS stubs, in order to enable linker relaxation.
;; Therefore we treat the stubs as an atomic sequence. ;; Therefore we treat the stubs as an atomic sequence.
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/aarch64/aarch64.opt gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/aarch64.opt
index 52eaf8c6f40..52bccddc6e3 100644 --- gcc-12.1.0-RC-20220429/gcc/config/aarch64/aarch64.opt 2022-04-29 14:58:22.000000000 +0100
--- a/gcc/config/aarch64/aarch64.opt +++ gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/aarch64.opt 2022-05-02 21:50:30.090088643 +0100
+++ b/gcc/config/aarch64/aarch64.opt @@ -122,6 +122,21 @@
@@ -115,6 +115,20 @@ Enum(aarch64_tls_size) String(32) Value(32)
EnumValue EnumValue
Enum(aarch64_tls_size) String(48) Value(48) Enum(aarch64_tls_size) String(48) Value(48)
@@ -140,16 +110,41 @@ index 52eaf8c6f40..52bccddc6e3 100644
+ +
+EnumValue +EnumValue
+Enum(aarch64_tp_type) String(soft) Value(TP_SOFT) +Enum(aarch64_tp_type) String(soft) Value(TP_SOFT)
+
+ +
march= march=
Target RejectNegative ToLower Joined Var(aarch64_arch_string) Target RejectNegative Negative(march=) ToLower Joined Var(aarch64_arch_string)
-march=ARCH Use features of architecture ARCH. Use features of architecture ARCH.
diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64 @@ -260,7 +275,7 @@
index 0be1f0d63aa..a54068bfd96 100644 long aarch64_stack_protector_guard_offset = 0
--- a/gcc/config/aarch64/t-aarch64
+++ b/gcc/config/aarch64/t-aarch64 moutline-atomics
@@ -68,5 +68,7 @@ cortex-a57-fma-steering.o: $(srcdir)/config/aarch64/cortex-a57-fma-steering.c \ -Target Var(aarch64_flag_outline_atomics) Init(2) Save
$(srcdir)/config/aarch64/cortex-a57-fma-steering.c +Target Var(aarch64_flag_outline_atomics) Save
Generate local calls to out-of-line atomic operations.
-param=aarch64-sve-compare-costs=
diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/aarch64/aarch64-opts.h gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/aarch64-opts.h
--- gcc-12.1.0-RC-20220429/gcc/config/aarch64/aarch64-opts.h 2022-04-29 14:58:22.000000000 +0100
+++ gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/aarch64-opts.h 2022-05-02 21:50:30.086094234 +0100
@@ -48,6 +48,12 @@
TLS_DESCRIPTORS
};
+/* Which thread pointer access sequence to use. */
+enum aarch64_tp_type {
+ TP_HARD,
+ TP_SOFT
+};
+
/* The code model defines the address generation strategy.
Most have a PIC and non-PIC variant. */
enum aarch64_code_model {
diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/aarch64/t-aarch64 gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/t-aarch64
--- gcc-12.1.0-RC-20220429/gcc/config/aarch64/t-aarch64 2022-04-29 14:58:22.000000000 +0100
+++ gcc-12.1.0-RC-20220429-dka64/gcc/config/aarch64/t-aarch64 2022-05-02 21:50:30.090088643 +0100
@@ -177,8 +177,10 @@
$(srcdir)/config/aarch64/aarch64-cc-fusion.cc
comma=, comma=,
-MULTILIB_OPTIONS = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst $(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG)))) -MULTILIB_OPTIONS = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst $(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG))))
@@ -158,12 +153,13 @@ index 0be1f0d63aa..a54068bfd96 100644
+MULTILIB_DIRNAMES = large pic +MULTILIB_DIRNAMES = large pic
+MULTILIB_REQUIRED = mcmodel=large fPIC +MULTILIB_REQUIRED = mcmodel=large fPIC
+MULTILIB_MATCHES = fPIC=fpic fPIC=fpie fPIC=fPIE +MULTILIB_MATCHES = fPIC=fpic fPIC=fpie fPIC=fPIE
diff --git a/gcc/config/devkitpro.h b/gcc/config/devkitpro.h
new file mode 100644 insn-conditions.md: s-check-sve-md
index 00000000000..11ba0f5ab1c s-check-sve-md: $(srcdir)/config/aarch64/check-sve-md.awk \
--- /dev/null diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/devkitpro.h gcc-12.1.0-RC-20220429-dka64/gcc/config/devkitpro.h
+++ b/gcc/config/devkitpro.h --- gcc-12.1.0-RC-20220429/gcc/config/devkitpro.h 1970-01-01 01:00:00.000000000 +0100
@@ -0,0 +1,31 @@ +++ gcc-12.1.0-RC-20220429-dka64/gcc/config/devkitpro.h 2022-05-02 22:04:49.962851033 +0100
@@ -0,0 +1,29 @@
+/* Definitions for devkitPro toolchains. +/* Definitions for devkitPro toolchains.
+ Copyright (C) 2016-2018 Free Software Foundation, Inc. + Copyright (C) 2016-2018 Free Software Foundation, Inc.
+ +
@@ -193,13 +189,9 @@ index 00000000000..11ba0f5ab1c
+ do { \ + do { \
+ builtin_define ("__DEVKITA64__"); \ + builtin_define ("__DEVKITA64__"); \
+ } while (0) + } while (0)
+ diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/devkitpro.opt gcc-12.1.0-RC-20220429-dka64/gcc/config/devkitpro.opt
+ --- gcc-12.1.0-RC-20220429/gcc/config/devkitpro.opt 1970-01-01 01:00:00.000000000 +0100
diff --git a/gcc/config/devkitpro.opt b/gcc/config/devkitpro.opt +++ gcc-12.1.0-RC-20220429-dka64/gcc/config/devkitpro.opt 2022-05-02 21:50:30.090088643 +0100
new file mode 100644
index 00000000000..9acbbf9d27c
--- /dev/null
+++ b/gcc/config/devkitpro.opt
@@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
+; Options for devkitPro toolchains. +; Options for devkitPro toolchains.
+ +
@@ -230,11 +222,43 @@ index 00000000000..9acbbf9d27c
+Driver +Driver
+ +
+; This comment is to ensure we retain the blank line above. +; This comment is to ensure we retain the blank line above.
diff --git a/gcc/gcc.c b/gcc/gcc.c diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/i386/host-mingw32.cc gcc-12.1.0-RC-20220429-dka64/gcc/config/i386/host-mingw32.cc
index a716f708259..6a11011dba7 100644 --- gcc-12.1.0-RC-20220429/gcc/config/i386/host-mingw32.cc 2022-04-29 14:58:22.000000000 +0100
--- a/gcc/gcc.c +++ gcc-12.1.0-RC-20220429-dka64/gcc/config/i386/host-mingw32.cc 2022-05-02 21:50:30.090088643 +0100
+++ b/gcc/gcc.c @@ -45,7 +45,11 @@
@@ -786,6 +786,11 @@ proper position among the other output files. */ static inline void w32_error(const char*, const char*, int, const char*);
/* FIXME: Is this big enough? */
+#if __MINGW64__
+static const size_t pch_VA_max_size = UINT64_C(64 * 1024 * 1024 * 1024);
+#else
static const size_t pch_VA_max_size = 128 * 1024 * 1024;
+#endif
/* Granularity for reserving address space. */
static size_t va_granularity = 0x10000;
diff -NBaur gcc-12.1.0-RC-20220429/gcc/config.gcc gcc-12.1.0-RC-20220429-dka64/gcc/config.gcc
--- gcc-12.1.0-RC-20220429/gcc/config.gcc 2022-04-29 14:58:22.000000000 +0100
+++ gcc-12.1.0-RC-20220429-dka64/gcc/config.gcc 2022-05-02 21:50:30.086094234 +0100
@@ -1093,7 +1093,14 @@
tmake_file="${tmake_file} aarch64/t-aarch64"
case $target in
aarch64-*-elf*)
+ default_use_cxa_atexit=yes
use_gcc_stdint=wrap
+ tm_file="${tm_file} devkitpro.h"
+ tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
+ extra_options="${extra_options} devkitpro.opt"
+ case ${enable_threads} in
+ "" | yes | posix) thread_file='posix' ;;
+ esac
;;
aarch64-*-fuchsia*)
tm_file="${tm_file} fuchsia.h"
diff -NBaur gcc-12.1.0-RC-20220429/gcc/gcc.cc gcc-12.1.0-RC-20220429-dka64/gcc/gcc.cc
--- gcc-12.1.0-RC-20220429/gcc/gcc.cc 2022-04-29 14:58:23.000000000 +0100
+++ gcc-12.1.0-RC-20220429-dka64/gcc/gcc.cc 2022-05-02 21:50:30.090088643 +0100
@@ -860,6 +860,11 @@
#endif #endif
#endif #endif
@@ -246,7 +270,7 @@ index a716f708259..6a11011dba7 100644
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */ /* config.h can define STARTFILE_SPEC to override the default crt0 files. */
#ifndef STARTFILE_SPEC #ifndef STARTFILE_SPEC
#define STARTFILE_SPEC \ #define STARTFILE_SPEC \
@@ -1081,6 +1086,7 @@ static const char *link_spec = LINK_SPEC; @@ -1204,6 +1209,7 @@
static const char *lib_spec = LIB_SPEC; static const char *lib_spec = LIB_SPEC;
static const char *link_gomp_spec = ""; static const char *link_gomp_spec = "";
static const char *libgcc_spec = LIBGCC_SPEC; static const char *libgcc_spec = LIBGCC_SPEC;
@@ -254,7 +278,7 @@ index a716f708259..6a11011dba7 100644
static const char *endfile_spec = ENDFILE_SPEC; static const char *endfile_spec = ENDFILE_SPEC;
static const char *startfile_spec = STARTFILE_SPEC; static const char *startfile_spec = STARTFILE_SPEC;
static const char *linker_name_spec = LINKER_NAME; static const char *linker_name_spec = LINKER_NAME;
@@ -1577,6 +1583,7 @@ static struct spec_list static_specs[] = @@ -1709,6 +1715,7 @@
INIT_STATIC_SPEC ("lib", &lib_spec), INIT_STATIC_SPEC ("lib", &lib_spec),
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec), INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
INIT_STATIC_SPEC ("libgcc", &libgcc_spec), INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
@@ -262,23 +286,22 @@ index a716f708259..6a11011dba7 100644
INIT_STATIC_SPEC ("startfile", &startfile_spec), INIT_STATIC_SPEC ("startfile", &startfile_spec),
INIT_STATIC_SPEC ("cross_compile", &cross_compile), INIT_STATIC_SPEC ("cross_compile", &cross_compile),
INIT_STATIC_SPEC ("version", &compiler_version), INIT_STATIC_SPEC ("version", &compiler_version),
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c diff -NBaur gcc-12.1.0-RC-20220429/libgcc/crtstuff.c gcc-12.1.0-RC-20220429-dka64/libgcc/crtstuff.c
index 5e894455e16..f2347455de0 100644 --- gcc-12.1.0-RC-20220429/libgcc/crtstuff.c 2022-04-29 14:58:25.000000000 +0100
--- a/libgcc/crtstuff.c +++ gcc-12.1.0-RC-20220429-dka64/libgcc/crtstuff.c 2022-05-02 21:50:30.094083051 +0100
+++ b/libgcc/crtstuff.c @@ -325,7 +325,7 @@
@@ -47,6 +47,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Target machine header files require this define. */ #ifdef OBJECT_FORMAT_ELF
#define IN_LIBGCC2
+#define USED_FOR_TARGET
/* FIXME: Including auto-host is incorrect, but until we have -#if DEFAULT_USE_CXA_ATEXIT
identified the set of defines that need to go into auto-target.h, +#if 1 /* DEFAULT_USE_CXA_ATEXIT */
diff --git a/libgcc/gthr.h b/libgcc/gthr.h /* Declare the __dso_handle variable. It should have a unique value
index 88b0178f9e3..e94fcf9d721 100644 in every shared-object; in a main program its value is zero. The
--- a/libgcc/gthr.h object should in any case be protected. This means the instance
+++ b/libgcc/gthr.h diff -NBaur gcc-12.1.0-RC-20220429/libgcc/gthr.h gcc-12.1.0-RC-20220429-dka64/libgcc/gthr.h
@@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --- gcc-12.1.0-RC-20220429/libgcc/gthr.h 2022-04-29 14:58:25.000000000 +0100
+++ gcc-12.1.0-RC-20220429-dka64/libgcc/gthr.h 2022-05-02 21:50:30.094083051 +0100
@@ -136,7 +136,7 @@
/* The pe-coff weak support isn't fully compatible to ELF's weak. /* The pe-coff weak support isn't fully compatible to ELF's weak.
For static libraries it might would work, but as we need to deal For static libraries it might would work, but as we need to deal
with shared versions too, we disable it for mingw-targets. */ with shared versions too, we disable it for mingw-targets. */
@@ -287,11 +310,10 @@ index 88b0178f9e3..e94fcf9d721 100644
#undef GTHREAD_USE_WEAK #undef GTHREAD_USE_WEAK
#define GTHREAD_USE_WEAK 0 #define GTHREAD_USE_WEAK 0
#endif #endif
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am diff -NBaur gcc-12.1.0-RC-20220429/libstdc++-v3/include/Makefile.am gcc-12.1.0-RC-20220429-dka64/libstdc++-v3/include/Makefile.am
index 77e6dc2f6be..3a102997371 100644 --- gcc-12.1.0-RC-20220429/libstdc++-v3/include/Makefile.am 2022-04-29 14:58:26.000000000 +0100
--- a/libstdc++-v3/include/Makefile.am +++ gcc-12.1.0-RC-20220429-dka64/libstdc++-v3/include/Makefile.am 2022-05-02 21:50:30.094083051 +0100
+++ b/libstdc++-v3/include/Makefile.am @@ -1366,6 +1366,7 @@
@@ -1293,6 +1293,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \ -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \ -e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \ -e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
@@ -299,11 +321,10 @@ index 77e6dc2f6be..3a102997371 100644
-e 's,^#include "\(.*\)",#include <bits/\1>,g' \ -e 's,^#include "\(.*\)",#include <bits/\1>,g' \
< $< > $@ < $< > $@
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in diff -NBaur gcc-12.1.0-RC-20220429/libstdc++-v3/include/Makefile.in gcc-12.1.0-RC-20220429-dka64/libstdc++-v3/include/Makefile.in
index 948a5c1f1c5..ee8e240f6c5 100644 --- gcc-12.1.0-RC-20220429/libstdc++-v3/include/Makefile.in 2022-04-29 14:58:26.000000000 +0100
--- a/libstdc++-v3/include/Makefile.in +++ gcc-12.1.0-RC-20220429-dka64/libstdc++-v3/include/Makefile.in 2022-05-02 21:50:30.094083051 +0100
+++ b/libstdc++-v3/include/Makefile.in @@ -1857,6 +1857,7 @@
@@ -1719,6 +1719,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \ -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \ -e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \ -e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \

View File

@@ -1,60 +0,0 @@
diff -NBaur gdb-8.2.1/gdb/dtrace-probe.c gdb-8.2.1-apple/gdb/dtrace-probe.c
--- gdb-8.2.1/gdb/dtrace-probe.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/dtrace-probe.c 2019-03-23 19:45:04.743529457 +0000
@@ -100,7 +100,7 @@
/* DTrace static_probe_ops. */
-const dtrace_static_probe_ops dtrace_static_probe_ops;
+const dtrace_static_probe_ops dtrace_static_probe_ops = {};
/* The following structure represents a dtrace probe. */
diff -NBaur gdb-8.2.1/gdb/probe.c gdb-8.2.1-apple/gdb/probe.c
--- gdb-8.2.1/gdb/probe.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/probe.c 2019-03-23 19:35:59.701401090 +0000
@@ -60,7 +60,7 @@
/* Static operations associated with a generic probe. */
-const any_static_probe_ops any_static_probe_ops;
+const any_static_probe_ops any_static_probe_ops = {};
/* A helper for parse_probes that decodes a probe specification in
SEARCH_PSPACE. It appends matching SALs to RESULT. */
diff -NBaur gdb-8.2.1/gdb/record-btrace.c gdb-8.2.1-apple/gdb/record-btrace.c
--- gdb-8.2.1/gdb/record-btrace.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/record-btrace.c 2019-03-23 19:35:59.705388987 +0000
@@ -144,7 +144,7 @@
/* Token associated with a new-thread observer enabling branch tracing
for the new thread. */
-static const gdb::observers::token record_btrace_thread_observer_token;
+static const gdb::observers::token record_btrace_thread_observer_token = {};
/* Memory access types used in set/show record btrace replay-memory-access. */
static const char replay_memory_access_read_only[] = "read-only";
diff -NBaur gdb-8.2.1/gdb/stap-probe.c gdb-8.2.1-apple/gdb/stap-probe.c
--- gdb-8.2.1/gdb/stap-probe.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/stap-probe.c 2019-03-23 19:35:59.705388987 +0000
@@ -119,7 +119,7 @@
/* SystemTap static_probe_ops. */
-const stap_static_probe_ops stap_static_probe_ops;
+const stap_static_probe_ops stap_static_probe_ops = {};
class stap_probe : public probe
{
diff -NBaur gdb-8.2.1/gdb/tui/tui-hooks.c gdb-8.2.1-apple/gdb/tui/tui-hooks.c
--- gdb-8.2.1/gdb/tui/tui-hooks.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/tui/tui-hooks.c 2019-03-23 19:35:59.705388987 +0000
@@ -205,7 +205,7 @@
/* Token associated with observers registered while TUI hooks are
installed. */
-static const gdb::observers::token tui_observers_token;
+static const gdb::observers::token tui_observers_token = {};
/* Attach or detach a single observer, according to ATTACH. */

View File

@@ -1,8 +1,8 @@
diff --git a/libgloss/configure b/libgloss/configure diff --git a/libgloss/configure b/libgloss/configure
index 1a4033dce..ba7aea7b0 100755 index e70c57d89..ac5c745f9 100755
--- a/libgloss/configure --- a/libgloss/configure
+++ b/libgloss/configure +++ b/libgloss/configure
@@ -2599,6 +2599,8 @@ if test "${config_libnosys}" = "true"; then @@ -2787,6 +2787,8 @@ if test "${config_libnosys}" = "true"; then
fi fi
@@ -11,19 +11,19 @@ index 1a4033dce..ba7aea7b0 100755
DEPDIR="${am__leading_dot}deps" DEPDIR="${am__leading_dot}deps"
ac_config_commands="$ac_config_commands depfiles" ac_config_commands="$ac_config_commands depfiles"
diff --git a/libgloss/configure.in b/libgloss/configure.in diff --git a/libgloss/configure.ac b/libgloss/configure.ac
index 41843eed1..dc0e2a5fd 100644 index 0fbe99526..577dfdec6 100644
--- a/libgloss/configure.in --- a/libgloss/configure.ac
+++ b/libgloss/configure.in +++ b/libgloss/configure.ac
@@ -2,6 +2,7 @@ dnl Process this file with autoconf to produce a configure script. @@ -2,6 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59) AC_PREREQ(2.69)dnl
AC_INIT([libgloss],[LIBGLOSS_VERSION]) AC_INIT([libgloss],[LIBGLOSS_VERSION])
AC_CONFIG_SRCDIR([libnosys]) AC_CONFIG_SRCDIR([libnosys])
+AC_CONFIG_SRCDIR([libsysbase]) +AC_CONFIG_SRCDIR([libsysbase])
if test "${enable_shared}" = "yes" ; then if test "${enable_shared}" = "yes" ; then
echo "Shared libraries not supported for cross compiling, ignored" echo "Shared libraries not supported for cross compiling, ignored"
@@ -190,6 +191,7 @@ dnl fi @@ -196,6 +197,7 @@ dnl fi
if test "${config_libnosys}" = "true"; then if test "${config_libnosys}" = "true"; then
AC_CONFIG_SUBDIRS([libnosys]) AC_CONFIG_SUBDIRS([libnosys])
fi fi
@@ -5141,11 +5141,11 @@ index 000000000..aa653c235
+ +
+ +
+ +
diff --git a/libgloss/libsysbase/configure.in b/libgloss/libsysbase/configure.in diff --git a/libgloss/libsysbase/configure.ac b/libgloss/libsysbase/configure.ac
new file mode 100644 new file mode 100644
index 000000000..da85a3f46 index 000000000..da85a3f46
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/configure.in +++ b/libgloss/libsysbase/configure.ac
@@ -0,0 +1,202 @@ @@ -0,0 +1,202 @@
+# Copyright (c) 1995, 1996 Cygnus Support +# Copyright (c) 1995, 1996 Cygnus Support
+# +#
@@ -6555,10 +6555,10 @@ index 000000000..13bd0fba1
+} +}
diff --git a/libgloss/libsysbase/link.c b/libgloss/libsysbase/link.c diff --git a/libgloss/libsysbase/link.c b/libgloss/libsysbase/link.c
new file mode 100644 new file mode 100644
index 000000000..1675e5c24 index 000000000..162f70f63
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/link.c +++ b/libgloss/libsysbase/link.c
@@ -0,0 +1,33 @@ @@ -0,0 +1,36 @@
+#include "config.h" +#include "config.h"
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -6572,11 +6572,14 @@ index 000000000..1675e5c24
+int _link(const char *existing, const char *new) { +int _link(const char *existing, const char *new) {
+ struct _reent *r = _REENT; + struct _reent *r = _REENT;
+#endif +#endif
+ int ret; + int ret = -1;
+ int sourceDev = FindDevice(existing); + int sourceDev = FindDevice(existing);
+ int destDev = FindDevice(new); + int destDev = FindDevice(new);
+ +
+ ret = -1; + if (sourceDev == -1 || destDev == -1 ) {
+ r->_errno = ENODEV;
+ return ret;
+ }
+ +
+ if ( sourceDev == destDev) { + if ( sourceDev == destDev) {
+ if (devoptab_list[destDev]->link_r) { + if (devoptab_list[destDev]->link_r) {
@@ -6854,26 +6857,30 @@ index 000000000..456590956
+char *fake_heap_start = (char*)0; +char *fake_heap_start = (char*)0;
diff --git a/libgloss/libsysbase/mkdir.c b/libgloss/libsysbase/mkdir.c diff --git a/libgloss/libsysbase/mkdir.c b/libgloss/libsysbase/mkdir.c
new file mode 100644 new file mode 100644
index 000000000..b4fcbd3d7 index 000000000..19742b774
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/mkdir.c +++ b/libgloss/libsysbase/mkdir.c
@@ -0,0 +1,19 @@ @@ -0,0 +1,23 @@
+#include <reent.h> +#include <reent.h>
+#include <sys/iosupport.h> +#include <sys/iosupport.h>
+#include <errno.h> +#include <errno.h>
+ +
+int mkdir (const char *path, mode_t mode) { +int mkdir (const char *path, mode_t mode) {
+ struct _reent *r = _REENT; + struct _reent *r = _REENT;
+ int ret; + int ret = -1;
+ int dev = FindDevice(path);
+ ret = -1;
+ +
+ if (devoptab_list[dev]->mkdir_r) { + int dev = FindDevice(path);
+ r->deviceData = devoptab_list[dev]->deviceData; +
+ ret = devoptab_list[dev]->mkdir_r(r, path, mode); + if(dev!=-1) {
+ } else { + if(devoptab_list[dev]->mkdir_r) {
+ r->_errno = ENOSYS; + r->deviceData = devoptab_list[dev]->deviceData;
+ } + ret = devoptab_list[dev]->mkdir_r(r,path,mode);
+ } else {
+ r->_errno = ENOSYS;
+ }
+ } else {
+ r->_errno = ENODEV;
+ }
+ +
+ return ret; + return ret;
+} +}
@@ -8092,10 +8099,10 @@ index 000000000..838a8c796
+ +
diff --git a/libgloss/libsysbase/rename.c b/libgloss/libsysbase/rename.c diff --git a/libgloss/libsysbase/rename.c b/libgloss/libsysbase/rename.c
new file mode 100644 new file mode 100644
index 000000000..97a056a72 index 000000000..b54e0ce7c
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/rename.c +++ b/libgloss/libsysbase/rename.c
@@ -0,0 +1,34 @@ @@ -0,0 +1,37 @@
+#include "config.h" +#include "config.h"
+#include <reent.h> +#include <reent.h>
+#include <sys/iosupport.h> +#include <sys/iosupport.h>
@@ -8111,11 +8118,14 @@ index 000000000..97a056a72
+#endif +#endif
+ struct _reent *r = _REENT; + struct _reent *r = _REENT;
+ +
+ int ret; + int ret = -1;
+ int sourceDev = FindDevice(existing); + int sourceDev = FindDevice(existing);
+ int destDev = FindDevice(newName); + int destDev = FindDevice(newName);
+ +
+ ret = -1; + if (sourceDev == -1 || destDev == -1 ) {
+ r->_errno = ENODEV;
+ return ret;
+ }
+ +
+ if ( sourceDev == destDev) { + if ( sourceDev == destDev) {
+ if (devoptab_list[destDev]->rename_r) { + if (devoptab_list[destDev]->rename_r) {
@@ -8132,10 +8142,10 @@ index 000000000..97a056a72
+} +}
diff --git a/libgloss/libsysbase/rmdir.c b/libgloss/libsysbase/rmdir.c diff --git a/libgloss/libsysbase/rmdir.c b/libgloss/libsysbase/rmdir.c
new file mode 100644 new file mode 100644
index 000000000..2692a2997 index 000000000..b8640b87d
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/rmdir.c +++ b/libgloss/libsysbase/rmdir.c
@@ -0,0 +1,25 @@ @@ -0,0 +1,34 @@
+#include "config.h" +#include "config.h"
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -8143,24 +8153,33 @@ index 000000000..2692a2997
+#include <errno.h> +#include <errno.h>
+#include <sys/iosupport.h> +#include <sys/iosupport.h>
+ +
+int rmdir (const char *name) { +int _rmdir_r (struct _reent *ptr, const char *name) {
+ struct _reent *r = _REENT;
+ int dev,ret=-1; + int dev,ret=-1;
+ +
+ dev = FindDevice(name); + dev = FindDevice(name);
+ if(dev!=-1) { + if(dev!=-1) {
+ if(devoptab_list[dev]->rmdir_r) { + if(devoptab_list[dev]->rmdir_r) {
+ r->deviceData = devoptab_list[dev]->deviceData; + ptr->deviceData = devoptab_list[dev]->deviceData;
+ ret = devoptab_list[dev]->rmdir_r(r,name); + ret = devoptab_list[dev]->rmdir_r(ptr,name);
+ } else { + } else {
+ r->_errno = ENOSYS; + ptr->_errno = ENOSYS;
+ } + }
+ } else { + } else {
+ r->_errno = ENODEV; + ptr->_errno = ENODEV;
+ } + }
+ +
+ return ret; + return ret;
+} +}
+
+#ifndef _REENT_ONLY
+
+int
+rmdir (const char *filename)
+{
+ return _rmdir_r (_REENT, filename);
+}
+
+#endif
diff --git a/libgloss/libsysbase/sbrk.c b/libgloss/libsysbase/sbrk.c diff --git a/libgloss/libsysbase/sbrk.c b/libgloss/libsysbase/sbrk.c
new file mode 100644 new file mode 100644
index 000000000..5dd550c5c index 000000000..5dd550c5c
@@ -8229,10 +8248,10 @@ index 000000000..5dd550c5c
+} +}
diff --git a/libgloss/libsysbase/scandir.c b/libgloss/libsysbase/scandir.c diff --git a/libgloss/libsysbase/scandir.c b/libgloss/libsysbase/scandir.c
new file mode 100644 new file mode 100644
index 000000000..1333df4b2 index 000000000..5c673af52
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/scandir.c +++ b/libgloss/libsysbase/scandir.c
@@ -0,0 +1,74 @@ @@ -0,0 +1,76 @@
+#include <sys/types.h> +#include <sys/types.h>
+#include <sys/stat.h> +#include <sys/stat.h>
+#include <stddef.h> +#include <stddef.h>
@@ -8262,6 +8281,8 @@ index 000000000..1333df4b2
+ int (*filter) __P((const struct dirent *)), + int (*filter) __P((const struct dirent *)),
+ int (*compar) __P((const struct dirent **, const struct dirent **))) + int (*compar) __P((const struct dirent **, const struct dirent **)))
+{ +{
+ errno = 0;
+
+ DIR *d = opendir(dirname); + DIR *d = opendir(dirname);
+ +
+ if (!d) return -1; + if (!d) return -1;
@@ -8727,10 +8748,10 @@ index 000000000..61de918bc
+ return ret; + return ret;
+} +}
diff --git a/newlib/configure.host b/newlib/configure.host diff --git a/newlib/configure.host b/newlib/configure.host
index 6c49cb750..610b63e81 100644 index c429dde1c..fd3171ad2 100644
--- a/newlib/configure.host --- a/newlib/configure.host
+++ b/newlib/configure.host +++ b/newlib/configure.host
@@ -659,13 +659,25 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID @@ -686,13 +686,25 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
syscall_dir=syscalls syscall_dir=syscalls
;; ;;
aarch64*-*-*) aarch64*-*-*)
@@ -8756,6 +8777,32 @@ index 6c49cb750..610b63e81 100644
arm*-*-pe) arm*-*-pe)
syscall_dir=syscalls syscall_dir=syscalls
;; ;;
diff --git a/newlib/libc/ctype/jp2uc.c b/newlib/libc/ctype/jp2uc.c
index 5e30f09be..1ea357f92 100644
--- a/newlib/libc/ctype/jp2uc.c
+++ b/newlib/libc/ctype/jp2uc.c
@@ -35,7 +35,7 @@
#ifdef _MB_CAPABLE
/* Under Cygwin, the incoming wide character is already given in UTF due
to the requirements of the underlying OS. */
-#ifndef __CYGWIN__
+#if !defined(__CYGWIN__) && !defined(__DEVKITA64__)
#include <_ansi.h>
#include <string.h>
diff --git a/newlib/libc/ctype/local.h b/newlib/libc/ctype/local.h
index 5c293c83d..75ccf89f5 100644
--- a/newlib/libc/ctype/local.h
+++ b/newlib/libc/ctype/local.h
@@ -32,7 +32,7 @@
* for towupper and towlower, the result must be back-transformed
into the respective locale encoding; currently NOT IMPLEMENTED
*/
-#ifdef __CYGWIN__
+#if defined(__CYGWIN__) || defined(__DEVKITA64__)
/* Under Cygwin, wchar_t (or its extension wint_t) is Unicode */
#define _jp2uc(c) (c)
#define _jp2uc_l(c, l) (c)
diff --git a/newlib/libc/include/fnmatch.h b/newlib/libc/include/fnmatch.h diff --git a/newlib/libc/include/fnmatch.h b/newlib/libc/include/fnmatch.h
index a94e923a4..9171e98aa 100644 index a94e923a4..9171e98aa 100644
--- a/newlib/libc/include/fnmatch.h --- a/newlib/libc/include/fnmatch.h
@@ -8819,10 +8866,10 @@ index 000000000..a71a5d847
+ +
+#endif +#endif
diff --git a/newlib/libc/include/math.h b/newlib/libc/include/math.h diff --git a/newlib/libc/include/math.h b/newlib/libc/include/math.h
index 893a5d064..da4b3a1ee 100644 index 799ac494a..4174d72ab 100644
--- a/newlib/libc/include/math.h --- a/newlib/libc/include/math.h
+++ b/newlib/libc/include/math.h +++ b/newlib/libc/include/math.h
@@ -416,7 +416,7 @@ extern float hypotf (float, float); @@ -436,7 +436,7 @@ extern float hypotf (float, float);
simply call the double functions. On Cygwin the long double functions simply call the double functions. On Cygwin the long double functions
are implemented independently from newlib to be able to use optimized are implemented independently from newlib to be able to use optimized
assembler functions despite using the Microsoft x86_64 ABI. */ assembler functions despite using the Microsoft x86_64 ABI. */
@@ -8831,6 +8878,18 @@ index 893a5d064..da4b3a1ee 100644
/* Reentrant ANSI C functions. */ /* Reentrant ANSI C functions. */
#ifndef __math_68881 #ifndef __math_68881
extern long double atanl (long double); extern long double atanl (long double);
diff --git a/newlib/libc/include/reent.h b/newlib/libc/include/reent.h
index 23d572cd3..65310c084 100644
--- a/newlib/libc/include/reent.h
+++ b/newlib/libc/include/reent.h
@@ -150,6 +150,7 @@ extern int _mkdir_r (struct _reent *, const char *, int);
extern int _open_r (struct _reent *, const char *, int, int);
extern _ssize_t _read_r (struct _reent *, int, void *, size_t);
extern int _rename_r (struct _reent *, const char *, const char *);
+extern int _rmdir_r (struct _reent *r, const char *name);
extern void *_sbrk_r (struct _reent *, ptrdiff_t);
extern int _stat_r (struct _reent *, const char *, struct stat *);
extern _CLOCK_T_ _times_r (struct _reent *, struct tms *);
diff --git a/newlib/libc/include/semaphore.h b/newlib/libc/include/semaphore.h diff --git a/newlib/libc/include/semaphore.h b/newlib/libc/include/semaphore.h
new file mode 100755 new file mode 100755
index 000000000..4afb0e419 index 000000000..4afb0e419
@@ -8906,6 +8965,19 @@ index 000000000..4afb0e419
+#endif /* defined(_POSIX_SEMAPHORES) */ +#endif /* defined(_POSIX_SEMAPHORES) */
+ +
+#endif /* !_SEMAPHORE_H_ */ +#endif /* !_SEMAPHORE_H_ */
diff --git a/newlib/libc/include/stdio.h b/newlib/libc/include/stdio.h
index 7748351f0..e87104559 100644
--- a/newlib/libc/include/stdio.h
+++ b/newlib/libc/include/stdio.h
@@ -227,7 +227,7 @@ int fgetpos (FILE *, _fpos_t *);
#else
int fgetpos (FILE *__restrict, fpos_t *__restrict);
#endif
-int fseek (FILE *, long, int);
+int fseek (FILE *, off_t, int);
#ifdef _LIBC
int fsetpos (FILE *, const _fpos_t *);
#else
diff --git a/newlib/libc/include/sys/_pthreadtypes.h b/newlib/libc/include/sys/_pthreadtypes.h diff --git a/newlib/libc/include/sys/_pthreadtypes.h b/newlib/libc/include/sys/_pthreadtypes.h
index 75e9e1cbf..dc63dbe6a 100644 index 75e9e1cbf..dc63dbe6a 100644
--- a/newlib/libc/include/sys/_pthreadtypes.h --- a/newlib/libc/include/sys/_pthreadtypes.h
@@ -9080,10 +9152,10 @@ index 75e9e1cbf..dc63dbe6a 100644
int process_shared; /* allow this to be shared amongst processes */ int process_shared; /* allow this to be shared amongst processes */
#endif #endif
diff --git a/newlib/libc/include/sys/_timespec.h b/newlib/libc/include/sys/_timespec.h diff --git a/newlib/libc/include/sys/_timespec.h b/newlib/libc/include/sys/_timespec.h
index 7609e4a46..6017a5e3d 100644 index f810b008f..ca7e11dc7 100644
--- a/newlib/libc/include/sys/_timespec.h --- a/newlib/libc/include/sys/_timespec.h
+++ b/newlib/libc/include/sys/_timespec.h +++ b/newlib/libc/include/sys/_timespec.h
@@ -47,4 +47,10 @@ struct timespec { @@ -49,4 +49,10 @@ struct timespec {
long tv_nsec; /* and nanoseconds */ long tv_nsec; /* and nanoseconds */
}; };
@@ -9095,7 +9167,7 @@ index 7609e4a46..6017a5e3d 100644
+ +
#endif /* !_SYS__TIMESPEC_H_ */ #endif /* !_SYS__TIMESPEC_H_ */
diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h
index 49b62ebf6..d84ffaa59 100644 index 61a6f95d8..34aeaad3d 100644
--- a/newlib/libc/include/sys/config.h --- a/newlib/libc/include/sys/config.h
+++ b/newlib/libc/include/sys/config.h +++ b/newlib/libc/include/sys/config.h
@@ -4,6 +4,9 @@ @@ -4,6 +4,9 @@
@@ -9177,10 +9249,10 @@ index a3fb5c02c..b208de4a7 100644
+ +
+#endif // _dirent_h_ +#endif // _dirent_h_
diff --git a/newlib/libc/include/sys/features.h b/newlib/libc/include/sys/features.h diff --git a/newlib/libc/include/sys/features.h b/newlib/libc/include/sys/features.h
index f28dd071b..ab3780ee2 100644 index 45476ce4a..6ed532439 100644
--- a/newlib/libc/include/sys/features.h --- a/newlib/libc/include/sys/features.h
+++ b/newlib/libc/include/sys/features.h +++ b/newlib/libc/include/sys/features.h
@@ -330,6 +330,16 @@ extern "C" { @@ -331,6 +331,16 @@ extern "C" {
# define __SSP_FORTIFY_LEVEL 0 # define __SSP_FORTIFY_LEVEL 0
#endif #endif
@@ -9330,10 +9402,10 @@ index 000000000..82d2e3576
+#endif // __iosupp_h__ +#endif // __iosupp_h__
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
diff --git a/newlib/libc/include/sys/lock.h b/newlib/libc/include/sys/lock.h diff --git a/newlib/libc/include/sys/lock.h b/newlib/libc/include/sys/lock.h
index 528904957..30cb099e6 100644 index 528904957..2c3e64f1b 100644
--- a/newlib/libc/include/sys/lock.h --- a/newlib/libc/include/sys/lock.h
+++ b/newlib/libc/include/sys/lock.h +++ b/newlib/libc/include/sys/lock.h
@@ -1,69 +1,97 @@ @@ -1,69 +1,105 @@
#ifndef __SYS_LOCK_H__ #ifndef __SYS_LOCK_H__
#define __SYS_LOCK_H__ #define __SYS_LOCK_H__
@@ -9342,19 +9414,68 @@ index 528904957..30cb099e6 100644
-#include <newlib.h> -#include <newlib.h>
#include <_ansi.h> #include <_ansi.h>
+#include <stdint.h> +#include <stdint.h>
+
+typedef int32_t _LOCK_T; -#if !defined(_RETARGETABLE_LOCKING)
+ +typedef uint32_t _LOCK_T;
-typedef int _LOCK_T;
-typedef int _LOCK_RECURSIVE_T;
+struct __lock_t { +struct __lock_t {
+ _LOCK_T lock; + _LOCK_T lock;
+ uint32_t thread_tag; + uint32_t thread_tag;
+ uint32_t counter; + uint32_t counter;
+}; +};
+
-#define __LOCK_INIT(class,lock) static int lock = 0;
-#define __LOCK_INIT_RECURSIVE(class,lock) static int lock = 0;
-#define __lock_init(lock) ((void) 0)
-#define __lock_init_recursive(lock) ((void) 0)
-#define __lock_close(lock) ((void) 0)
-#define __lock_close_recursive(lock) ((void) 0)
-#define __lock_acquire(lock) ((void) 0)
-#define __lock_acquire_recursive(lock) ((void) 0)
-#define __lock_try_acquire(lock) ((void) 0)
-#define __lock_try_acquire_recursive(lock) ((void) 0)
-#define __lock_release(lock) ((void) 0)
-#define __lock_release_recursive(lock) ((void) 0)
+typedef struct __lock_t _LOCK_RECURSIVE_T; +typedef struct __lock_t _LOCK_RECURSIVE_T;
+
-#else
+typedef uint32_t _COND_T; +typedef uint32_t _COND_T;
+
#ifdef __cplusplus
extern "C" {
#endif
-struct __lock;
-typedef struct __lock * _LOCK_T;
-#define _LOCK_RECURSIVE_T _LOCK_T
-
-#define __LOCK_INIT(class,lock) extern struct __lock __lock_ ## lock; \
- class _LOCK_T lock = &__lock_ ## lock
-#define __LOCK_INIT_RECURSIVE(class,lock) __LOCK_INIT(class,lock)
-
-extern void __retarget_lock_init(_LOCK_T *lock);
-#define __lock_init(lock) __retarget_lock_init(&lock)
-extern void __retarget_lock_init_recursive(_LOCK_T *lock);
-#define __lock_init_recursive(lock) __retarget_lock_init_recursive(&lock)
-extern void __retarget_lock_close(_LOCK_T lock);
-#define __lock_close(lock) __retarget_lock_close(lock)
-extern void __retarget_lock_close_recursive(_LOCK_T lock);
-#define __lock_close_recursive(lock) __retarget_lock_close_recursive(lock)
-extern void __retarget_lock_acquire(_LOCK_T lock);
-#define __lock_acquire(lock) __retarget_lock_acquire(lock)
-extern void __retarget_lock_acquire_recursive(_LOCK_T lock);
-#define __lock_acquire_recursive(lock) __retarget_lock_acquire_recursive(lock)
-extern int __retarget_lock_try_acquire(_LOCK_T lock);
-#define __lock_try_acquire(lock) __retarget_lock_try_acquire(lock)
-extern int __retarget_lock_try_acquire_recursive(_LOCK_T lock);
-#define __lock_try_acquire_recursive(lock) \
- __retarget_lock_try_acquire_recursive(lock)
-extern void __retarget_lock_release(_LOCK_T lock);
-#define __lock_release(lock) __retarget_lock_release(lock)
-extern void __retarget_lock_release_recursive(_LOCK_T lock);
-#define __lock_release_recursive(lock) __retarget_lock_release_recursive(lock)
+extern void __libc_lock_init(_LOCK_T *lock); +extern void __libc_lock_init(_LOCK_T *lock);
+extern void __libc_lock_init_recursive(_LOCK_RECURSIVE_T *lock); +extern void __libc_lock_init_recursive(_LOCK_RECURSIVE_T *lock);
+extern void __libc_lock_close(_LOCK_T *lock); +extern void __libc_lock_close(_LOCK_T *lock);
@@ -9374,7 +9495,12 @@ index 528904957..30cb099e6 100644
+extern int __libc_cond_broadcast(_COND_T *cond); +extern int __libc_cond_broadcast(_COND_T *cond);
+extern int __libc_cond_wait(_COND_T *cond, _LOCK_T *lock, uint64_t timeout_ns); +extern int __libc_cond_wait(_COND_T *cond, _LOCK_T *lock, uint64_t timeout_ns);
+extern int __libc_cond_wait_recursive(_COND_T *cond, _LOCK_RECURSIVE_T *lock, uint64_t timeout_ns); +extern int __libc_cond_wait_recursive(_COND_T *cond, _LOCK_RECURSIVE_T *lock, uint64_t timeout_ns);
+
#ifdef __cplusplus
}
#endif
-#endif /* !defined(_RETARGETABLE_LOCKING) */
+#define __LOCK_INITIALIZER ((_LOCK_T)0) +#define __LOCK_INITIALIZER ((_LOCK_T)0)
+#define __LOCK_INITIALIZER_RECURSIVE ((_LOCK_RECURSIVE_T){__LOCK_INITIALIZER,0,0}) +#define __LOCK_INITIALIZER_RECURSIVE ((_LOCK_RECURSIVE_T){__LOCK_INITIALIZER,0,0})
+#define __COND_INITIALIZER ((_COND_T)0) +#define __COND_INITIALIZER ((_COND_T)0)
@@ -9433,73 +9559,26 @@ index 528904957..30cb099e6 100644
+#define __cond_wait_recursive(NAME, LOCK, TIMEOUT) \ +#define __cond_wait_recursive(NAME, LOCK, TIMEOUT) \
+ __libc_cond_wait_recursive(&(NAME), &(LOCK), (TIMEOUT)) + __libc_cond_wait_recursive(&(NAME), &(LOCK), (TIMEOUT))
-#if !defined(_RETARGETABLE_LOCKING)
-
-typedef int _LOCK_T;
-typedef int _LOCK_RECURSIVE_T;
-
-#define __LOCK_INIT(class,lock) static int lock = 0;
-#define __LOCK_INIT_RECURSIVE(class,lock) static int lock = 0;
-#define __lock_init(lock) ((void) 0)
-#define __lock_init_recursive(lock) ((void) 0)
-#define __lock_close(lock) ((void) 0)
-#define __lock_close_recursive(lock) ((void) 0)
-#define __lock_acquire(lock) ((void) 0)
-#define __lock_acquire_recursive(lock) ((void) 0)
-#define __lock_try_acquire(lock) ((void) 0)
-#define __lock_try_acquire_recursive(lock) ((void) 0)
-#define __lock_release(lock) ((void) 0)
-#define __lock_release_recursive(lock) ((void) 0)
-
-#else
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct __lock;
-typedef struct __lock * _LOCK_T;
-#define _LOCK_RECURSIVE_T _LOCK_T
-
-#define __LOCK_INIT(class,lock) extern struct __lock __lock_ ## lock; \
- class _LOCK_T lock = &__lock_ ## lock
-#define __LOCK_INIT_RECURSIVE(class,lock) __LOCK_INIT(class,lock)
-
-extern void __retarget_lock_init(_LOCK_T *lock);
-#define __lock_init(lock) __retarget_lock_init(&lock)
-extern void __retarget_lock_init_recursive(_LOCK_T *lock);
-#define __lock_init_recursive(lock) __retarget_lock_init_recursive(&lock)
-extern void __retarget_lock_close(_LOCK_T lock);
-#define __lock_close(lock) __retarget_lock_close(lock)
-extern void __retarget_lock_close_recursive(_LOCK_T lock);
-#define __lock_close_recursive(lock) __retarget_lock_close_recursive(lock)
-extern void __retarget_lock_acquire(_LOCK_T lock);
-#define __lock_acquire(lock) __retarget_lock_acquire(lock)
-extern void __retarget_lock_acquire_recursive(_LOCK_T lock);
-#define __lock_acquire_recursive(lock) __retarget_lock_acquire_recursive(lock)
-extern int __retarget_lock_try_acquire(_LOCK_T lock);
-#define __lock_try_acquire(lock) __retarget_lock_try_acquire(lock)
-extern int __retarget_lock_try_acquire_recursive(_LOCK_T lock);
-#define __lock_try_acquire_recursive(lock) \
- __retarget_lock_try_acquire_recursive(lock)
-extern void __retarget_lock_release(_LOCK_T lock);
-#define __lock_release(lock) __retarget_lock_release(lock)
-extern void __retarget_lock_release_recursive(_LOCK_T lock);
-#define __lock_release_recursive(lock) __retarget_lock_release_recursive(lock)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !defined(_RETARGETABLE_LOCKING) */
-
-#endif /* __SYS_LOCK_H__ */ -#endif /* __SYS_LOCK_H__ */
+#endif // __SYS_LOCK_H__ +#endif // __SYS_LOCK_H__
diff --git a/newlib/libc/include/sys/param.h b/newlib/libc/include/sys/param.h
index 9a6f115a6..fdd6cf92b 100644
--- a/newlib/libc/include/sys/param.h
+++ b/newlib/libc/include/sys/param.h
@@ -23,7 +23,7 @@
# define PATHSIZE (1024)
#endif
-#define MAXPATHLEN PATH_MAX
+#define MAXPATHLEN PATHSIZE
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#define MIN(a,b) ((a) < (b) ? (a) : (b))
diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h
index 6e55e1c1f..6e0c1c9cf 100644 index e4e36170e..5b8d06ed6 100644
--- a/newlib/libc/include/sys/reent.h --- a/newlib/libc/include/sys/reent.h
+++ b/newlib/libc/include/sys/reent.h +++ b/newlib/libc/include/sys/reent.h
@@ -416,6 +416,8 @@ struct _reent @@ -421,6 +421,8 @@ struct _reent
__FILE *__sf; /* file descriptors */ __FILE *__sf; /* file descriptors */
struct _misc_reent *_misc; /* strtok, multibyte states */ struct _misc_reent *_misc; /* strtok, multibyte states */
char *_signal_buf; /* strsignal */ char *_signal_buf; /* strsignal */
@@ -9508,7 +9587,7 @@ index 6e55e1c1f..6e0c1c9cf 100644
}; };
#ifdef _REENT_GLOBAL_STDIO_STREAMS #ifdef _REENT_GLOBAL_STDIO_STREAMS
@@ -686,6 +688,7 @@ struct _reent @@ -691,6 +693,7 @@ struct _reent
# ifndef _REENT_GLOBAL_STDIO_STREAMS # ifndef _REENT_GLOBAL_STDIO_STREAMS
__FILE __sf[3]; /* first three file descriptors */ __FILE __sf[3]; /* first three file descriptors */
# endif # endif
@@ -9517,10 +9596,10 @@ index 6e55e1c1f..6e0c1c9cf 100644
#ifdef _REENT_GLOBAL_STDIO_STREAMS #ifdef _REENT_GLOBAL_STDIO_STREAMS
diff --git a/newlib/libc/include/sys/stat.h b/newlib/libc/include/sys/stat.h diff --git a/newlib/libc/include/sys/stat.h b/newlib/libc/include/sys/stat.h
index eee98db64..aed9c1746 100644 index 6525272dd..d24673618 100644
--- a/newlib/libc/include/sys/stat.h --- a/newlib/libc/include/sys/stat.h
+++ b/newlib/libc/include/sys/stat.h +++ b/newlib/libc/include/sys/stat.h
@@ -152,8 +152,9 @@ int mkfifo (const char *__path, mode_t __mode ); @@ -142,8 +142,9 @@ int mkfifo (const char *__path, mode_t __mode );
int stat (const char *__restrict __path, struct stat *__restrict __sbuf ); int stat (const char *__restrict __path, struct stat *__restrict __sbuf );
mode_t umask (mode_t __mask ); mode_t umask (mode_t __mask );
@@ -9574,10 +9653,10 @@ index 000000000..380329d34
+#endif // _SYS_STATVFS_H +#endif // _SYS_STATVFS_H
\ No newline at end of file \ No newline at end of file
diff --git a/newlib/libc/include/sys/syslimits.h b/newlib/libc/include/sys/syslimits.h diff --git a/newlib/libc/include/sys/syslimits.h b/newlib/libc/include/sys/syslimits.h
index ba9dbd667..49c213ca8 100644 index c872d2018..b3800187f 100644
--- a/newlib/libc/include/sys/syslimits.h --- a/newlib/libc/include/sys/syslimits.h
+++ b/newlib/libc/include/sys/syslimits.h +++ b/newlib/libc/include/sys/syslimits.h
@@ -62,4 +62,6 @@ @@ -58,4 +58,6 @@
#define LINE_MAX 2048 /* max bytes in an input line */ #define LINE_MAX 2048 /* max bytes in an input line */
#define RE_DUP_MAX 255 /* max RE's in interval notation */ #define RE_DUP_MAX 255 /* max RE's in interval notation */
@@ -9611,7 +9690,7 @@ index 5e937f103..635a7a6b8 100644
}; };
#endif #endif
diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c
index 4c343e462..c04493460 100644 index 968642745..2ab1f9570 100644
--- a/newlib/libc/locale/locale.c --- a/newlib/libc/locale/locale.c
+++ b/newlib/libc/locale/locale.c +++ b/newlib/libc/locale/locale.c
@@ -92,7 +92,7 @@ beginning with <<"LC_">>. @@ -92,7 +92,7 @@ beginning with <<"LC_">>.
@@ -9723,7 +9802,7 @@ index 4c343e462..c04493460 100644
if (strcmp (locale, "POSIX") && strcmp (locale, "C") if (strcmp (locale, "POSIX") && strcmp (locale, "C")
&& strcmp (locale, "")) && strcmp (locale, ""))
return NULL; return NULL;
@@ -990,6 +1015,7 @@ __locale_ctype_ptr_l (struct __locale_t *locale) @@ -991,6 +1016,7 @@ __locale_ctype_ptr_l (struct __locale_t *locale)
const char * const char *
__locale_ctype_ptr (void) __locale_ctype_ptr (void)
@@ -9760,10 +9839,10 @@ index a0c80843a..efabdcfc4 100644
/* Only access fixed "C" locale using this function. Fake for !_MB_CAPABLE /* Only access fixed "C" locale using this function. Fake for !_MB_CAPABLE
diff --git a/newlib/libc/machine/aarch64/Makefile.am b/newlib/libc/machine/aarch64/Makefile.am diff --git a/newlib/libc/machine/aarch64/Makefile.am b/newlib/libc/machine/aarch64/Makefile.am
index e8b8197fa..011f69d69 100644 index ca7c79074..c5815db9d 100644
--- a/newlib/libc/machine/aarch64/Makefile.am --- a/newlib/libc/machine/aarch64/Makefile.am
+++ b/newlib/libc/machine/aarch64/Makefile.am +++ b/newlib/libc/machine/aarch64/Makefile.am
@@ -9,6 +9,7 @@ AM_CCASFLAGS = $(INCLUDES) @@ -7,6 +7,7 @@ AM_CCASFLAGS = $(INCLUDES)
noinst_LIBRARIES = lib.a noinst_LIBRARIES = lib.a
lib_a_SOURCES = lib_a_SOURCES =
@@ -9772,11 +9851,11 @@ index e8b8197fa..011f69d69 100644
lib_a_SOURCES += memchr.S lib_a_SOURCES += memchr.S
lib_a_SOURCES += memcmp-stub.c lib_a_SOURCES += memcmp-stub.c
diff --git a/newlib/libc/machine/aarch64/Makefile.in b/newlib/libc/machine/aarch64/Makefile.in diff --git a/newlib/libc/machine/aarch64/Makefile.in b/newlib/libc/machine/aarch64/Makefile.in
index 39b23a1ce..969512471 100644 index c854a1b96..3361b0a8c 100644
--- a/newlib/libc/machine/aarch64/Makefile.in --- a/newlib/libc/machine/aarch64/Makefile.in
+++ b/newlib/libc/machine/aarch64/Makefile.in +++ b/newlib/libc/machine/aarch64/Makefile.in
@@ -69,22 +69,22 @@ LIBRARIES = $(noinst_LIBRARIES) @@ -75,22 +75,22 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
ARFLAGS = cru am__v_at_0 = @
lib_a_AR = $(AR) $(ARFLAGS) lib_a_AR = $(AR) $(ARFLAGS)
lib_a_LIBADD = lib_a_LIBADD =
-am_lib_a_OBJECTS = lib_a-memchr-stub.$(OBJEXT) lib_a-memchr.$(OBJEXT) \ -am_lib_a_OBJECTS = lib_a-memchr-stub.$(OBJEXT) lib_a-memchr.$(OBJEXT) \
@@ -9814,7 +9893,7 @@ index 39b23a1ce..969512471 100644
lib_a_OBJECTS = $(am_lib_a_OBJECTS) lib_a_OBJECTS = $(am_lib_a_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@ DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = depcomp =
@@ -210,7 +210,7 @@ AUTOMAKE_OPTIONS = cygnus @@ -232,7 +232,7 @@ top_srcdir = @top_srcdir@
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
AM_CCASFLAGS = $(INCLUDES) AM_CCASFLAGS = $(INCLUDES)
noinst_LIBRARIES = lib.a noinst_LIBRARIES = lib.a
@@ -9823,9 +9902,9 @@ index 39b23a1ce..969512471 100644
memcpy-stub.c memcpy.S memmove-stub.c memmove.S memset-stub.c \ memcpy-stub.c memcpy.S memmove-stub.c memmove.S memset-stub.c \
memset.S rawmemchr.S rawmemchr-stub.c setjmp.S stpcpy-stub.c \ memset.S rawmemchr.S rawmemchr-stub.c setjmp.S stpcpy-stub.c \
stpcpy.S strchr-stub.c strchr.S strchrnul-stub.c strchrnul.S \ stpcpy.S strchr-stub.c strchr.S strchrnul-stub.c strchrnul.S \
@@ -381,6 +381,12 @@ lib_a-strrchr.obj: strrchr.S @@ -403,6 +403,12 @@ lib_a-strrchr.obj: strrchr.S
.c.obj: .c.obj:
$(COMPILE) -c `$(CYGPATH_W) '$<'` $(AM_V_CC)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+lib_a-access.o: access.c +lib_a-access.o: access.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-access.o `test -f 'access.c' || echo '$(srcdir)/'`access.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-access.o `test -f 'access.c' || echo '$(srcdir)/'`access.c
@@ -9834,7 +9913,7 @@ index 39b23a1ce..969512471 100644
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-access.obj `if test -f 'access.c'; then $(CYGPATH_W) 'access.c'; else $(CYGPATH_W) '$(srcdir)/access.c'; fi` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-access.obj `if test -f 'access.c'; then $(CYGPATH_W) 'access.c'; else $(CYGPATH_W) '$(srcdir)/access.c'; fi`
+ +
lib_a-memchr-stub.o: memchr-stub.c lib_a-memchr-stub.o: memchr-stub.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-memchr-stub.o `test -f 'memchr-stub.c' || echo '$(srcdir)/'`memchr-stub.c $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-memchr-stub.o `test -f 'memchr-stub.c' || echo '$(srcdir)/'`memchr-stub.c
diff --git a/newlib/libc/machine/aarch64/access.c b/newlib/libc/machine/aarch64/access.c diff --git a/newlib/libc/machine/aarch64/access.c b/newlib/libc/machine/aarch64/access.c
new file mode 100644 new file mode 100644
@@ -9876,10 +9955,10 @@ index 000000000..980682ef3
+} +}
+ +
diff --git a/newlib/libc/machine/arm/Makefile.am b/newlib/libc/machine/arm/Makefile.am diff --git a/newlib/libc/machine/arm/Makefile.am b/newlib/libc/machine/arm/Makefile.am
index 9bd35e733..731130092 100644 index 2d559464a..1e6625c05 100644
--- a/newlib/libc/machine/arm/Makefile.am --- a/newlib/libc/machine/arm/Makefile.am
+++ b/newlib/libc/machine/arm/Makefile.am +++ b/newlib/libc/machine/arm/Makefile.am
@@ -11,7 +11,9 @@ noinst_LIBRARIES = lib.a @@ -9,7 +9,9 @@ noinst_LIBRARIES = lib.a
lib_a_SOURCES = setjmp.S strcmp.S strcpy.c \ lib_a_SOURCES = setjmp.S strcmp.S strcpy.c \
aeabi_memcpy.c aeabi_memcpy-armv7a.S \ aeabi_memcpy.c aeabi_memcpy-armv7a.S \
aeabi_memmove.c aeabi_memmove-soft.S \ aeabi_memmove.c aeabi_memmove-soft.S \
@@ -9891,10 +9970,10 @@ index 9bd35e733..731130092 100644
lib_a_SOURCES += memchr.S lib_a_SOURCES += memchr.S
lib_a_SOURCES += memcpy-stub.c lib_a_SOURCES += memcpy-stub.c
diff --git a/newlib/libc/machine/arm/Makefile.in b/newlib/libc/machine/arm/Makefile.in diff --git a/newlib/libc/machine/arm/Makefile.in b/newlib/libc/machine/arm/Makefile.in
index d9dbcd5c3..43712f813 100644 index 17a46a44d..b319b8349 100644
--- a/newlib/libc/machine/arm/Makefile.in --- a/newlib/libc/machine/arm/Makefile.in
+++ b/newlib/libc/machine/arm/Makefile.in +++ b/newlib/libc/machine/arm/Makefile.in
@@ -75,10 +75,10 @@ am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT) lib_a-strcmp.$(OBJEXT) \ @@ -81,10 +81,10 @@ am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT) lib_a-strcmp.$(OBJEXT) \
lib_a-aeabi_memmove.$(OBJEXT) \ lib_a-aeabi_memmove.$(OBJEXT) \
lib_a-aeabi_memmove-soft.$(OBJEXT) \ lib_a-aeabi_memmove-soft.$(OBJEXT) \
lib_a-aeabi_memset.$(OBJEXT) lib_a-aeabi_memset-soft.$(OBJEXT) \ lib_a-aeabi_memset.$(OBJEXT) lib_a-aeabi_memset-soft.$(OBJEXT) \
@@ -9909,7 +9988,7 @@ index d9dbcd5c3..43712f813 100644
lib_a_OBJECTS = $(am_lib_a_OBJECTS) lib_a_OBJECTS = $(am_lib_a_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@ DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = depcomp =
@@ -208,8 +208,8 @@ noinst_LIBRARIES = lib.a @@ -230,8 +230,8 @@ noinst_LIBRARIES = lib.a
lib_a_SOURCES = setjmp.S strcmp.S strcpy.c aeabi_memcpy.c \ lib_a_SOURCES = setjmp.S strcmp.S strcpy.c aeabi_memcpy.c \
aeabi_memcpy-armv7a.S aeabi_memmove.c aeabi_memmove-soft.S \ aeabi_memcpy-armv7a.S aeabi_memmove.c aeabi_memmove-soft.S \
aeabi_memset.c aeabi_memset-soft.S aeabi_memclr.c \ aeabi_memset.c aeabi_memset-soft.S aeabi_memclr.c \
@@ -9920,9 +9999,9 @@ index d9dbcd5c3..43712f813 100644
lib_a_CCASFLAGS = $(AM_CCASFLAGS) lib_a_CCASFLAGS = $(AM_CCASFLAGS)
lib_a_CFLAGS = $(AM_CFLAGS) lib_a_CFLAGS = $(AM_CFLAGS)
ACLOCAL_AMFLAGS = -I ../../.. -I ../../../.. ACLOCAL_AMFLAGS = -I ../../.. -I ../../../..
@@ -367,6 +367,12 @@ lib_a-aeabi_memclr.o: aeabi_memclr.c @@ -389,6 +389,12 @@ lib_a-aeabi_memclr.o: aeabi_memclr.c
lib_a-aeabi_memclr.obj: aeabi_memclr.c lib_a-aeabi_memclr.obj: aeabi_memclr.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-aeabi_memclr.obj `if test -f 'aeabi_memclr.c'; then $(CYGPATH_W) 'aeabi_memclr.c'; else $(CYGPATH_W) '$(srcdir)/aeabi_memclr.c'; fi` $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-aeabi_memclr.obj `if test -f 'aeabi_memclr.c'; then $(CYGPATH_W) 'aeabi_memclr.c'; else $(CYGPATH_W) '$(srcdir)/aeabi_memclr.c'; fi`
+lib_a-sync_synchronize.o: sync_synchronize.c +lib_a-sync_synchronize.o: sync_synchronize.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sync_synchronize.o `test -f 'sync_synchronize.c' || echo '$(srcdir)/'`sync_synchronize.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sync_synchronize.o `test -f 'sync_synchronize.c' || echo '$(srcdir)/'`sync_synchronize.c
@@ -9931,7 +10010,7 @@ index d9dbcd5c3..43712f813 100644
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sync_synchronize.obj `if test -f 'sync_synchronize.c'; then $(CYGPATH_W) 'sync_synchronize.c'; else $(CYGPATH_W) '$(srcdir)/sync_synchronize.c'; fi` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sync_synchronize.obj `if test -f 'sync_synchronize.c'; then $(CYGPATH_W) 'sync_synchronize.c'; else $(CYGPATH_W) '$(srcdir)/sync_synchronize.c'; fi`
+ +
lib_a-memchr-stub.o: memchr-stub.c lib_a-memchr-stub.o: memchr-stub.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-memchr-stub.o `test -f 'memchr-stub.c' || echo '$(srcdir)/'`memchr-stub.c $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-memchr-stub.o `test -f 'memchr-stub.c' || echo '$(srcdir)/'`memchr-stub.c
diff --git a/newlib/libc/machine/arm/sync_synchronize.c b/newlib/libc/machine/arm/sync_synchronize.c diff --git a/newlib/libc/machine/arm/sync_synchronize.c b/newlib/libc/machine/arm/sync_synchronize.c
new file mode 100644 new file mode 100644
@@ -10018,7 +10097,7 @@ index 9b982a993..8c0aaac8c 100644
+*/ +*/
#endif /* ! defined (REENTRANT_SYSCALLS_PROVIDED) */ #endif /* ! defined (REENTRANT_SYSCALLS_PROVIDED) */
diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c
index b358d2b4a..29cec0229 100644 index df8321461..55ceaab42 100644
--- a/newlib/libc/stdio/fread.c --- a/newlib/libc/stdio/fread.c
+++ b/newlib/libc/stdio/fread.c +++ b/newlib/libc/stdio/fread.c
@@ -135,7 +135,7 @@ crlf_r (struct _reent * ptr, @@ -135,7 +135,7 @@ crlf_r (struct _reent * ptr,
@@ -10030,7 +10109,24 @@ index b358d2b4a..29cec0229 100644
} }
#endif #endif
@@ -225,7 +225,32 @@ _fread_r (struct _reent * ptr, @@ -187,7 +187,6 @@ _fread_r (struct _reent * ptr,
int rc = 0;
/* save fp buffering state */
void *old_base = fp->_bf._base;
- void * old_p = fp->_p;
int old_size = fp->_bf._size;
/* allow __refill to use user's buffer */
fp->_bf._base = (unsigned char *) p;
@@ -197,7 +196,7 @@ _fread_r (struct _reent * ptr,
/* restore fp buffering back to original state */
fp->_bf._base = old_base;
fp->_bf._size = old_size;
- fp->_p = old_p;
+ fp->_p = old_base;
resid -= fp->_r;
p += fp->_r;
fp->_r = 0;
@@ -225,7 +224,32 @@ _fread_r (struct _reent * ptr,
/* fp->_r = 0 ... done in __srefill */ /* fp->_r = 0 ... done in __srefill */
p += r; p += r;
resid -= r; resid -= r;
@@ -10038,7 +10134,7 @@ index b358d2b4a..29cec0229 100644
+ +
+ int rc = 0; + int rc = 0;
+ +
+ if (resid>BUFSIZ) + if (resid>fp->_bf._size)
+ { + {
+ /* save fp buffering state */ + /* save fp buffering state */
+ void *old_base = fp->_bf._base; + void *old_base = fp->_bf._base;
@@ -10052,7 +10148,7 @@ index b358d2b4a..29cec0229 100644
+ /* restore fp buffering back to original state */ + /* restore fp buffering back to original state */
+ fp->_bf._base = old_base; + fp->_bf._base = old_base;
+ fp->_bf._size = old_size; + fp->_bf._size = old_size;
+ fp->_p = old_p; + fp->_p = old_base;
+ resid -= fp->_r; + resid -= fp->_r;
+ p += fp->_r; + p += fp->_r;
+ fp->_r = 0; + fp->_r = 0;
@@ -10065,7 +10161,7 @@ index b358d2b4a..29cec0229 100644
/* no more input: return partial result */ /* no more input: return partial result */
#ifdef __SCLE #ifdef __SCLE
diff --git a/newlib/libc/stdio/local.h b/newlib/libc/stdio/local.h diff --git a/newlib/libc/stdio/local.h b/newlib/libc/stdio/local.h
index 53694aa1c..79a8f4666 100644 index 84ff40b49..ba1d4ee7b 100644
--- a/newlib/libc/stdio/local.h --- a/newlib/libc/stdio/local.h
+++ b/newlib/libc/stdio/local.h +++ b/newlib/libc/stdio/local.h
@@ -56,7 +56,7 @@ @@ -56,7 +56,7 @@
@@ -10077,11 +10173,35 @@ index 53694aa1c..79a8f4666 100644
#define _STDIO_WITH_THREAD_CANCELLATION_SUPPORT #define _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
#endif #endif
diff --git a/newlib/libc/stdio/remove.c b/newlib/libc/stdio/remove.c
index d8dfdbd82..a85b5a99b 100644
--- a/newlib/libc/stdio/remove.c
+++ b/newlib/libc/stdio/remove.c
@@ -57,13 +57,17 @@ Supporting OS subroutine required: <<unlink>>.
#include <_ansi.h>
#include <reent.h>
#include <stdio.h>
+#include <errno.h>
int
_remove_r (struct _reent *ptr,
const char *filename)
{
- if (_unlink_r (ptr, filename) == -1)
- return -1;
+ if (_unlink_r (ptr, filename) == -1) {
+ errno = 0;
+ if (_rmdir_r(ptr, filename) == -1)
+ return -1;
+ }
return 0;
}
diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c
index c4bf2dbe3..d756df37d 100644 index c1483c0ac..319b1972b 100644
--- a/newlib/libc/stdio/vfprintf.c --- a/newlib/libc/stdio/vfprintf.c
+++ b/newlib/libc/stdio/vfprintf.c +++ b/newlib/libc/stdio/vfprintf.c
@@ -112,6 +112,8 @@ Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>, @@ -108,6 +108,8 @@ Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
<<lseek>>, <<read>>, <<sbrk>>, <<write>>. <<lseek>>, <<read>>, <<sbrk>>, <<write>>.
*/ */
@@ -10090,7 +10210,7 @@ index c4bf2dbe3..d756df37d 100644
#if defined(LIBC_SCCS) && !defined(lint) #if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)vfprintf.c 5.50 (Berkeley) 12/16/92";*/ /*static char *sccsid = "from: @(#)vfprintf.c 5.50 (Berkeley) 12/16/92";*/
static char *rcsid = "$Id$"; static char *rcsid = "$Id$";
@@ -1438,7 +1440,7 @@ reswitch: switch (ch) { @@ -1431,7 +1433,7 @@ reswitch: switch (ch) {
string: string:
#endif #endif
sign = '\0'; sign = '\0';
@@ -10099,7 +10219,7 @@ index c4bf2dbe3..d756df37d 100644
/* Behavior is undefined if the user passed a /* Behavior is undefined if the user passed a
NULL string when precision is not 0. NULL string when precision is not 0.
However, if we are not optimizing for size, However, if we are not optimizing for size,
@@ -1448,7 +1450,7 @@ string: @@ -1441,7 +1443,7 @@ string:
size = ((unsigned) prec > 6U) ? 6 : prec; size = ((unsigned) prec > 6U) ? 6 : prec;
} }
else else
@@ -10109,7 +10229,7 @@ index c4bf2dbe3..d756df37d 100644
if (ch == 'S' || (flags & LONGINT)) { if (ch == 'S' || (flags & LONGINT)) {
mbstate_t ps; mbstate_t ps;
diff --git a/newlib/libc/stdio/vfscanf.c b/newlib/libc/stdio/vfscanf.c diff --git a/newlib/libc/stdio/vfscanf.c b/newlib/libc/stdio/vfscanf.c
index 9c38eebf4..fbc8d877d 100644 index 037692531..b5e524c53 100644
--- a/newlib/libc/stdio/vfscanf.c --- a/newlib/libc/stdio/vfscanf.c
+++ b/newlib/libc/stdio/vfscanf.c +++ b/newlib/libc/stdio/vfscanf.c
@@ -74,6 +74,8 @@ These are GNU extensions. @@ -74,6 +74,8 @@ These are GNU extensions.
@@ -10122,7 +10242,7 @@ index 9c38eebf4..fbc8d877d 100644
#include <reent.h> #include <reent.h>
#include <newlib.h> #include <newlib.h>
diff --git a/newlib/libc/stdio/vfwprintf.c b/newlib/libc/stdio/vfwprintf.c diff --git a/newlib/libc/stdio/vfwprintf.c b/newlib/libc/stdio/vfwprintf.c
index 980b31e3b..722be905e 100644 index 7384b37d3..b4e1dbde5 100644
--- a/newlib/libc/stdio/vfwprintf.c --- a/newlib/libc/stdio/vfwprintf.c
+++ b/newlib/libc/stdio/vfwprintf.c +++ b/newlib/libc/stdio/vfwprintf.c
@@ -92,6 +92,9 @@ SEEALSO @@ -92,6 +92,9 @@ SEEALSO
@@ -10136,7 +10256,7 @@ index 980b31e3b..722be905e 100644
#ifdef INTEGER_ONLY #ifdef INTEGER_ONLY
diff --git a/newlib/libc/stdio/vfwscanf.c b/newlib/libc/stdio/vfwscanf.c diff --git a/newlib/libc/stdio/vfwscanf.c b/newlib/libc/stdio/vfwscanf.c
index 0464b0837..435fc0142 100644 index e9e00dfec..c38d81e17 100644
--- a/newlib/libc/stdio/vfwscanf.c --- a/newlib/libc/stdio/vfwscanf.c
+++ b/newlib/libc/stdio/vfwscanf.c +++ b/newlib/libc/stdio/vfwscanf.c
@@ -74,6 +74,9 @@ PORTABILITY @@ -74,6 +74,9 @@ PORTABILITY
@@ -10150,10 +10270,10 @@ index 0464b0837..435fc0142 100644
#include <reent.h> #include <reent.h>
#include <newlib.h> #include <newlib.h>
diff --git a/newlib/libc/stdlib/Makefile.am b/newlib/libc/stdlib/Makefile.am diff --git a/newlib/libc/stdlib/Makefile.am b/newlib/libc/stdlib/Makefile.am
index 357e37beb..7183b2100 100644 index a91bdc784..e049adc9a 100644
--- a/newlib/libc/stdlib/Makefile.am --- a/newlib/libc/stdlib/Makefile.am
+++ b/newlib/libc/stdlib/Makefile.am +++ b/newlib/libc/stdlib/Makefile.am
@@ -110,6 +110,7 @@ MALLOCR=mallocr @@ -112,6 +112,7 @@ MALLOCR=mallocr
endif endif
EXTENDED_SOURCES = \ EXTENDED_SOURCES = \
@@ -10162,10 +10282,10 @@ index 357e37beb..7183b2100 100644
arc4random_uniform.c \ arc4random_uniform.c \
cxa_atexit.c \ cxa_atexit.c \
diff --git a/newlib/libc/stdlib/Makefile.in b/newlib/libc/stdlib/Makefile.in diff --git a/newlib/libc/stdlib/Makefile.in b/newlib/libc/stdlib/Makefile.in
index 699831f13..1e6d2e612 100644 index 0fed51d79..2d8dc1325 100644
--- a/newlib/libc/stdlib/Makefile.in --- a/newlib/libc/stdlib/Makefile.in
+++ b/newlib/libc/stdlib/Makefile.in +++ b/newlib/libc/stdlib/Makefile.in
@@ -119,7 +119,7 @@ am__objects_2 = lib_a-__adjust.$(OBJEXT) lib_a-__atexit.$(OBJEXT) \ @@ -127,7 +127,7 @@ am__objects_2 = lib_a-__adjust.$(OBJEXT) lib_a-__atexit.$(OBJEXT) \
lib_a-wcstoumax.$(OBJEXT) lib_a-wcstombs.$(OBJEXT) \ lib_a-wcstoumax.$(OBJEXT) lib_a-wcstombs.$(OBJEXT) \
lib_a-wcstombs_r.$(OBJEXT) lib_a-wctomb.$(OBJEXT) \ lib_a-wcstombs_r.$(OBJEXT) lib_a-wctomb.$(OBJEXT) \
lib_a-wctomb_r.$(OBJEXT) $(am__objects_1) lib_a-wctomb_r.$(OBJEXT) $(am__objects_1)
@@ -10174,7 +10294,7 @@ index 699831f13..1e6d2e612 100644
lib_a-arc4random_uniform.$(OBJEXT) lib_a-cxa_atexit.$(OBJEXT) \ lib_a-arc4random_uniform.$(OBJEXT) lib_a-cxa_atexit.$(OBJEXT) \
lib_a-cxa_finalize.$(OBJEXT) lib_a-drand48.$(OBJEXT) \ lib_a-cxa_finalize.$(OBJEXT) lib_a-drand48.$(OBJEXT) \
lib_a-ecvtbuf.$(OBJEXT) lib_a-efgcvt.$(OBJEXT) \ lib_a-ecvtbuf.$(OBJEXT) lib_a-efgcvt.$(OBJEXT) \
@@ -173,7 +173,7 @@ am__objects_9 = __adjust.lo __atexit.lo __call_atexit.lo __exp10.lo \ @@ -182,7 +182,7 @@ am__objects_9 = __adjust.lo __atexit.lo __call_atexit.lo __exp10.lo \
utoa.lo wcstod.lo wcstoimax.lo wcstol.lo wcstoul.lo \ utoa.lo wcstod.lo wcstoimax.lo wcstol.lo wcstoul.lo \
wcstoumax.lo wcstombs.lo wcstombs_r.lo wctomb.lo wctomb_r.lo \ wcstoumax.lo wcstombs.lo wcstombs_r.lo wctomb.lo wctomb_r.lo \
$(am__objects_8) $(am__objects_8)
@@ -10183,9 +10303,9 @@ index 699831f13..1e6d2e612 100644
cxa_finalize.lo drand48.lo ecvtbuf.lo efgcvt.lo erand48.lo \ cxa_finalize.lo drand48.lo ecvtbuf.lo efgcvt.lo erand48.lo \
jrand48.lo lcong48.lo lrand48.lo mrand48.lo msize.lo mtrim.lo \ jrand48.lo lcong48.lo lrand48.lo mrand48.lo msize.lo mtrim.lo \
nrand48.lo rand48.lo seed48.lo srand48.lo strtoll.lo \ nrand48.lo rand48.lo seed48.lo srand48.lo strtoll.lo \
@@ -1054,6 +1054,12 @@ lib_a-wcstold.o: wcstold.c @@ -1102,6 +1102,12 @@ lib_a-wcstold.o: wcstold.c
lib_a-wcstold.obj: wcstold.c lib_a-wcstold.obj: wcstold.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcstold.obj `if test -f 'wcstold.c'; then $(CYGPATH_W) 'wcstold.c'; else $(CYGPATH_W) '$(srcdir)/wcstold.c'; fi` $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-wcstold.obj `if test -f 'wcstold.c'; then $(CYGPATH_W) 'wcstold.c'; else $(CYGPATH_W) '$(srcdir)/wcstold.c'; fi`
+lib_a-threads.o: threads.c +lib_a-threads.o: threads.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-threads.o `test -f 'threads.c' || echo '$(srcdir)/'`threads.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-threads.o `test -f 'threads.c' || echo '$(srcdir)/'`threads.c
@@ -10194,40 +10314,8 @@ index 699831f13..1e6d2e612 100644
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-threads.obj `if test -f 'threads.c'; then $(CYGPATH_W) 'threads.c'; else $(CYGPATH_W) '$(srcdir)/threads.c'; fi` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-threads.obj `if test -f 'threads.c'; then $(CYGPATH_W) 'threads.c'; else $(CYGPATH_W) '$(srcdir)/threads.c'; fi`
+ +
lib_a-arc4random.o: arc4random.c lib_a-arc4random.o: arc4random.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-arc4random.o `test -f 'arc4random.c' || echo '$(srcdir)/'`arc4random.c $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-arc4random.o `test -f 'arc4random.c' || echo '$(srcdir)/'`arc4random.c
diff --git a/newlib/libc/stdlib/aligned_alloc.c b/newlib/libc/stdlib/aligned_alloc.c
index 88413ce86..24029a6f7 100644
--- a/newlib/libc/stdlib/aligned_alloc.c
+++ b/newlib/libc/stdlib/aligned_alloc.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2015 embedded brains GmbH
+ * Copyright (c) 2018 Dave Murphy
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,14 +25,15 @@
*/
#include <stdlib.h>
+#include <malloc.h>
+#include <errno.h>
void *
aligned_alloc(size_t alignment, size_t size)
{
- void *p;
- int error;
+ if ((alignment !=0) && !(alignment & (alignment - 1 )) && !(size & (alignment - 1)))
+ return memalign(alignment,size);
- error = posix_memalign(&p, alignment, size);
-
- return (error == 0 ? p : NULL);
+ errno = EINVAL;
+ return (void*)NULL;
}
diff --git a/newlib/libc/stdlib/mbtowc_r.c b/newlib/libc/stdlib/mbtowc_r.c diff --git a/newlib/libc/stdlib/mbtowc_r.c b/newlib/libc/stdlib/mbtowc_r.c
index 920a7ea3c..ba5ee7652 100644 index 920a7ea3c..ba5ee7652 100644
--- a/newlib/libc/stdlib/mbtowc_r.c --- a/newlib/libc/stdlib/mbtowc_r.c
@@ -10567,16 +10655,3 @@ index 000000000..567fed56b
+ __libc_lock_release_recursive(&(NAME)) + __libc_lock_release_recursive(&(NAME))
+ +
+#endif // __SYS_LOCK_H__ +#endif // __SYS_LOCK_H__
diff --git a/newlib/libc/sys/arm/sys/param.h b/newlib/libc/sys/arm/sys/param.h
index 5b9464cca..e8969b954 100644
--- a/newlib/libc/sys/arm/sys/param.h
+++ b/newlib/libc/sys/arm/sys/param.h
@@ -19,6 +19,8 @@
# define PATHSIZE (1024)
#endif
+#define MAXPATHLEN PATHSIZE
+
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#define MIN(a,b) ((a) < (b) ? (a) : (b))

View File

@@ -0,0 +1,15 @@
#!/bin/sh
#---------------------------------------------------------------------------------
# set env variables
#---------------------------------------------------------------------------------
export DEVKITPRO=$TOOLPATH
#---------------------------------------------------------------------------------
# Install the rules files
#---------------------------------------------------------------------------------
cd $BUILDDIR
tar -xvf $SRCDIR/devkita64-rules-$DKA64_RULES_VER.tar.gz
cd devkita64-rules-$DKA64_RULES_VER
make install

View File

@@ -10,7 +10,7 @@ cd $target/binutils
if [ ! -f configured-binutils ] if [ ! -f configured-binutils ]
then then
CFLAGS=$cflags LDFLAGS=$ldflags ../../binutils-$BINUTILS_VER/configure \ ../../binutils-$BINUTILS_VER/configure \
--prefix=$prefix --target=$target --disable-nls --disable-werror \ --prefix=$prefix --target=$target --disable-nls --disable-werror \
--enable-lto --enable-plugins --enable-poison-system-directories \ --enable-lto --enable-plugins --enable-poison-system-directories \
$CROSS_PARAMS \ $CROSS_PARAMS \
@@ -39,9 +39,6 @@ cd $target/gcc
if [ ! -f configured-gcc ] if [ ! -f configured-gcc ]
then then
CFLAGS="$cflags" \
CXXFLAGS="$cflags" \
LDFLAGS="$ldflags" \
CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \ CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
CXXFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \ CXXFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
LDFLAGS_FOR_TARGET="" \ LDFLAGS_FOR_TARGET="" \
@@ -52,21 +49,23 @@ then
--enable-cxx-flags='-ffunction-sections' \ --enable-cxx-flags='-ffunction-sections' \
--disable-libstdcxx-verbose \ --disable-libstdcxx-verbose \
--enable-poison-system-directories \ --enable-poison-system-directories \
--enable-interwork --enable-multilib \ --enable-multilib \
--enable-threads --disable-win32-registry --disable-nls --disable-debug\ --enable-threads --disable-win32-registry --disable-nls --disable-debug\
--disable-libmudflap --disable-libssp --disable-libgomp \ --disable-libmudflap --disable-libssp --disable-libgomp \
--disable-libstdcxx-pch \ --disable-libstdcxx-pch \
--enable-libstdcxx-time \ --enable-libstdcxx-time \
--enable-libstdcxx-filesystem-ts \ --enable-libstdcxx-filesystem-ts \
--target=$target \ --target=$target \
--with-newlib \ --with-newlib=yes \
--with-headers=../../newlib-$NEWLIB_VER/newlib/libc/include \ --with-headers=../../newlib-$NEWLIB_VER/newlib/libc/include \
--prefix=$prefix \ --prefix=$prefix \
--enable-lto $plugin_ld\ --enable-lto \
--with-system-zlib \ --disable-tm-clone-registry \
--with-bugurl="https://github.com/devkitPro/buildscripts/issues" --with-pkgversion="devkitA64 release 13" \ --disable-__cxa_atexit \
--with-bugurl="https://github.com/devkitPro/buildscripts/issues" --with-pkgversion="devkitA64 release 19" \
$CROSS_PARAMS \ $CROSS_PARAMS \
$CROSS_GCC_PARAMS \ $CROSS_GCC_PARAMS \
$EXTRA_GCC_PARAMS \
|| { echo "Error configuring gcc"; exit 1; } || { echo "Error configuring gcc"; exit 1; }
touch configured-gcc touch configured-gcc
fi fi
@@ -148,42 +147,3 @@ then
fi fi
rm -fr $prefix/$target/sys-include rm -fr $prefix/$target/sys-include
cd $BUILDDIR
#---------------------------------------------------------------------------------
# build and install the debugger
#---------------------------------------------------------------------------------
mkdir -p $target/gdb
cd $target/gdb
PLATFORM=`uname -s`
if [ ! -f configured-gdb ]
then
CFLAGS="$cflags" \
CXXFLAGS="$cflags" \
LDFLAGS="$ldflags" \
../../gdb-$GDB_VER/configure \
--disable-nls --prefix=$prefix --target=$target --disable-werror \
$CROSS_PARAMS \
|| { echo "Error configuring gdb"; exit 1; }
touch configured-gdb
fi
if [ ! -f built-gdb ]
then
$MAKE || { echo "Error building gdb"; exit 1; }
touch built-gdb
fi
if [ ! -f installed-gdb ]
then
$MAKE install || { echo "Error installing gdb"; exit 1; }
touch installed-gdb
fi
#---------------------------------------------------------------------------------
# copy base rulesets
#---------------------------------------------------------------------------------
cp -v $BUILDSCRIPTDIR/dka64/rules/* $prefix

View File

@@ -1,7 +0,0 @@
#!/bin/sh
export DEVKITPRO=$TOOLPATH
cd $BUILDDIR/libnx-$LIBNX_VER
$MAKE || { echo "error building libnx"; exit 1; }
$MAKE install || { echo "error installing libnx"; exit 1; }

View File

@@ -1,20 +0,0 @@
#!/bin/bash
cd $BUILDDIR
for archive in $hostarchives
do
dir=$(echo $archive | sed -e 's/\(.*\)\.tar\.bz2/\1/' )
cd $BUILDDIR/$dir
if [ ! -f configured ]; then
CXXFLAGS=$cflags CFLAGS=$cflags LDFLAGS=$ldflags ./configure --prefix=$toolsprefix $CROSS_PARAMS || { echo "error configuring $archive"; exit 1; }
touch configured
fi
if [ ! -f built ]; then
$MAKE || { echo "error building $dir"; exit 1; }
touch built
fi
if [ ! -f installed ]; then
$MAKE install || { echo "error installing $dir"; exit 1; }
touch installed
fi
done

View File

@@ -0,0 +1,17 @@
diff --git a/libiberty/rust-demangle.c b/libiberty/rust-demangle.c
index df09b7b8fddb82b21f97afee8821166d92220094..ac1eb8eb02c6d42533c0faa7aebdce432ac947e9 100644 (file)
--- a/libiberty/rust-demangle.c
+++ b/libiberty/rust-demangle.c
@@ -75,10 +75,10 @@ struct rust_demangler
int version;
/* Recursion depth. */
- uint recursion;
+ unsigned recursion;
/* Maximum number of times demangle_path may be called recursively. */
#define RUST_MAX_RECURSION_COUNT 1024
-#define RUST_NO_RECURSION_LIMIT ((uint) -1)
+#define RUST_NO_RECURSION_LIMIT ((unsigned) -1)
uint64_t bound_lifetime_depth;
};

View File

@@ -1,8 +1,7 @@
diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/arm/arm-cpus.in gcc-12.1.0-RC-20220429-dkarm/gcc/config/arm/arm-cpus.in
index ba194a80229..12e023c3728 100644 --- gcc-12.1.0-RC-20220429/gcc/config/arm/arm-cpus.in 2022-04-29 14:58:22.000000000 +0100
--- a/gcc/config/arm/arm-cpus.in +++ gcc-12.1.0-RC-20220429-dkarm/gcc/config/arm/arm-cpus.in 2022-04-30 13:31:09.120134164 +0100
+++ b/gcc/config/arm/arm-cpus.in @@ -412,7 +412,7 @@
@@ -401,7 +401,7 @@ begin arch armv6k
tune for mpcore tune for mpcore
tune flags CO_PROC tune flags CO_PROC
base 6K base 6K
@@ -11,17 +10,16 @@ index ba194a80229..12e023c3728 100644
option fp add VFPv2 FP_DBL option fp add VFPv2 FP_DBL
optalias vfpv2 fp optalias vfpv2 fp
option nofp remove ALL_FP option nofp remove ALL_FP
diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/arm/t-arm-elf gcc-12.1.0-RC-20220429-dkarm/gcc/config/arm/t-arm-elf
index 9ec5bf065ac..9ab3ffb109d 100644 --- gcc-12.1.0-RC-20220429/gcc/config/arm/t-arm-elf 2022-04-29 14:58:22.000000000 +0100
--- a/gcc/config/arm/t-arm-elf +++ gcc-12.1.0-RC-20220429-dkarm/gcc/config/arm/t-arm-elf 2022-04-30 13:31:39.759455398 +0100
+++ b/gcc/config/arm/t-arm-elf
@@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
-# Copyright (C) 1998-2018 Free Software Foundation, Inc. -# Copyright (C) 1998-2022 Free Software Foundation, Inc.
+# Copyright (C) 1998-2017 Free Software Foundation, Inc. +# Copyright (C) 1998-2021 Free Software Foundation, Inc.
# #
# This file is part of GCC. # This file is part of GCC.
# #
@@ -16,110 +16,83 @@ @@ -16,120 +16,14 @@
# along with GCC; see the file COPYING3. If not see # along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>. # <http://www.gnu.org/licenses/>.
@@ -47,15 +45,20 @@ index 9ec5bf065ac..9ab3ffb109d 100644
-# it seems to work ok. -# it seems to work ok.
-v8_fps := simd fp16 crypto fp16+crypto dotprod fp16fml -v8_fps := simd fp16 crypto fp16+crypto dotprod fp16fml
- -
-# We don't do anything special with these. Pre-v4t probably doesn't work. -v9_fps := simd fp16 crypto fp16+crypto dotprod fp16fml
-all_early_nofp := armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5t
- -
-all_early_arch := armv5e armv5tej armv6 armv6j armv6k armv6z armv6kz \ -# We don't do anything special with these. Pre-v4t probably doesn't work.
-all_early_nofp := armv4 armv4t armv5t
-
-all_early_arch := armv5tej armv6 armv6j armv6k armv6z armv6kz \
- armv6zk armv6t2 iwmmxt iwmmxt2 - armv6zk armv6t2 iwmmxt iwmmxt2
- -
-all_v7_a_r := armv7-a armv7ve armv7-r -all_v7_a_r := armv7-a armv7ve armv7-r
- -
-all_v8_archs := armv8-a armv8-a+crc armv8.1-a armv8.2-a armv8.3-a armv8.4-a -all_v8_archs := armv8-a armv8-a+crc armv8.1-a armv8.2-a armv8.3-a armv8.4-a \
- armv8.5-a armv8.6-a
-
-all_v9_archs := armv9-a
- -
-# No floating point variants, require thumb1 softfp -# No floating point variants, require thumb1 softfp
-all_nofp_t := armv6-m armv6s-m armv8-m.base -all_nofp_t := armv6-m armv6s-m armv8-m.base
@@ -119,11 +122,19 @@ index 9ec5bf065ac..9ab3ffb109d 100644
- march?armv7+fp=march?$(ARCH) \ - march?armv7+fp=march?$(ARCH) \
- $(foreach FPARCH, $(v8_fps), \ - $(foreach FPARCH, $(v8_fps), \
- march?armv7+fp=march?$(ARCH)+$(FPARCH))) - march?armv7+fp=march?$(ARCH)+$(FPARCH)))
-
-MULTILIB_MATCHES += $(foreach ARCH, $(all_v9_archs), \
- march?armv7+fp=march?$(ARCH) \
- $(foreach FPARCH, $(v9_fps), \
- march?armv7+fp=march?$(ARCH)+$(FPARCH)))
+MULTILIB_REQUIRED = mthumb mbig-endian mthumb/mbig-endian march=armv6k/mfloat-abi=hard
-MULTILIB_MATCHES += $(foreach ARCH, armv7e-m armv8-m.mainline, \ -MULTILIB_MATCHES += $(foreach ARCH, armv7e-m armv8-m.mainline, \
- march?armv7+fp=march?$(ARCH)+fp.dp) - march?armv7+fp=march?$(ARCH)+fp.dp)
-
-# PART 4 - Reuse rules -# PART 4 - Reuse rules
+MULTILIB_MATCHES += march?armv6k=mtune?mpcore
+MULTILIB_MATCHES += march?armv6k=mcpu?mpcore
-MULTILIB_REUSE += mthumb=mthumb/mfpu.auto -MULTILIB_REUSE += mthumb=mthumb/mfpu.auto
-MULTILIB_REUSE += mthumb=mthumb/mfpu.auto/march.armv5te+fp -MULTILIB_REUSE += mthumb=mthumb/mfpu.auto/march.armv5te+fp
@@ -134,85 +145,9 @@ index 9ec5bf065ac..9ab3ffb109d 100644
-MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=mthumb/march.armv7+fp/mfloat-abi.hard -MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=mthumb/march.armv7+fp/mfloat-abi.hard
-MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=mfpu.auto/march.armv7+fp/mfloat-abi.hard -MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=mfpu.auto/march.armv7+fp/mfloat-abi.hard
-MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=march.armv7+fp/mfloat-abi.hard -MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=march.armv7+fp/mfloat-abi.hard
+MULTILIB_REQUIRED = mthumb mbig-endian mthumb/mbig-endian march=armv6k/mfloat-abi=hard diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/arm/unknown-elf.h gcc-12.1.0-RC-20220429-dkarm/gcc/config/arm/unknown-elf.h
+ --- gcc-12.1.0-RC-20220429/gcc/config/arm/unknown-elf.h 2022-04-29 14:58:22.000000000 +0100
+ +++ gcc-12.1.0-RC-20220429-dkarm/gcc/config/arm/unknown-elf.h 2022-04-30 13:31:09.120134164 +0100
+MULTILIB_MATCHES += march?armv6k=mtune?mpcore
+MULTILIB_MATCHES += march?armv6k=mcpu?mpcore
+
+
+
+#MULTILIB_OPTIONS += mcpu=fa526/mcpu=fa626/mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
+#MULTILIB_DIRNAMES += fa526 fa626 fa606te fa626te fmp626 fa726te
+#MULTILIB_EXCEPTIONS += *mthumb*/*mcpu=fa526 *mthumb*/*mcpu=fa626
+
+#MULTILIB_OPTIONS += march=armv7
+#MULTILIB_DIRNAMES += thumb2
+#MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7*
+#MULTILIB_MATCHES += march?armv7=march?armv7-a
+#MULTILIB_MATCHES += march?armv7=march?armv7-r
+#MULTILIB_MATCHES += march?armv7=march?armv7-m
+#MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8
+#MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4
+#MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3
+
+# Not quite true. We can support hard-vfp calling in Thumb2, but how do we
+# express that here? Also, we really need architecture v5e or later
+# (mcrr etc).
+#MULTILIB_OPTIONS += mfloat-abi=hard
+#MULTILIB_DIRNAMES += fpu
+#MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard*
+#MULTILIB_EXCEPTIONS += *mcpu=fa526/*mfloat-abi=hard*
+#MULTILIB_EXCEPTIONS += *mcpu=fa626/*mfloat-abi=hard*
+
+# MULTILIB_OPTIONS += mcpu=ep9312
+# MULTILIB_DIRNAMES += ep9312
+# MULTILIB_EXCEPTIONS += *mthumb/*mcpu=ep9312*
+#
+# MULTILIB_OPTIONS += mlittle-endian/mbig-endian
+# MULTILIB_DIRNAMES += le be
+# MULTILIB_MATCHES += mbig-endian=mbe mlittle-endian=mle
+#
+# MULTILIB_OPTIONS += mfloat-abi=hard/mfloat-abi=soft
+# MULTILIB_DIRNAMES += fpu soft
+# MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard*
+#
+# MULTILIB_OPTIONS += mno-thumb-interwork/mthumb-interwork
+# MULTILIB_DIRNAMES += normal interwork
+#
+# MULTILIB_OPTIONS += fno-leading-underscore/fleading-underscore
+# MULTILIB_DIRNAMES += elf under
+#
+# MULTILIB_OPTIONS += mcpu=arm7
+# MULTILIB_DIRNAMES += nofmult
+# MULTILIB_EXCEPTIONS += *mthumb*/*mcpu=arm7*
+# # Note: the multilib_exceptions matches both -mthumb and
+# # -mthumb-interwork
+# #
+# # We have to match all the arm cpu variants which do not have the
+# # multiply instruction and treat them as if the user had specified
+# # -mcpu=arm7. Note that in the following the ? is interpreted as
+# # an = for the purposes of matching command line options.
+# # FIXME: There ought to be a better way to do this.
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7d
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7di
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm70
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm700
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm700i
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm710
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm710c
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7100
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7500
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm7500fe
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm6
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm60
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm600
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm610
+# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm620
diff --git a/gcc/config/arm/unknown-elf.h b/gcc/config/arm/unknown-elf.h
index 12dd0931b08..59584fe64bc 100644
--- a/gcc/config/arm/unknown-elf.h
+++ b/gcc/config/arm/unknown-elf.h
@@ -29,7 +29,7 @@ @@ -29,7 +29,7 @@
#endif #endif
@@ -222,22 +157,32 @@ index 12dd0931b08..59584fe64bc 100644
#undef STARTFILE_SPEC #undef STARTFILE_SPEC
#define STARTFILE_SPEC \ #define STARTFILE_SPEC \
@@ -93,4 +93,9 @@ @@ -93,4 +93,5 @@
udivmoddi4, which will depend on the exception unwind routines, udivmoddi4, which will depend on the exception unwind routines,
which will depend on abort, which is defined in libc. */ which will depend on abort, which is defined in libc. */
#undef LINK_GCC_C_SEQUENCE_SPEC #undef LINK_GCC_C_SEQUENCE_SPEC
-#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L --end-group" -#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %{!nolibc:%L} --end-group"
+#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L %(libgloss) --end-group" +#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L %(libgloss) --end-group"
+ +
+/* The system headers under devkitARM are C++-aware. */ diff -NBaur gcc-12.1.0-RC-20220429/gcc/config/i386/host-mingw32.cc gcc-12.1.0-RC-20220429-dkarm/gcc/config/i386/host-mingw32.cc
+#undef NO_IMPLICIT_EXTERN_C --- gcc-12.1.0-RC-20220429/gcc/config/i386/host-mingw32.cc 2022-04-29 14:58:22.000000000 +0100
+#define NO_IMPLICIT_EXTERN_C +++ gcc-12.1.0-RC-20220429-dkarm/gcc/config/i386/host-mingw32.cc 2022-04-30 13:31:09.120134164 +0100
+ @@ -45,7 +45,11 @@
diff --git a/gcc/gcc.c b/gcc/gcc.c static inline void w32_error(const char*, const char*, int, const char*);
index a716f708259..6a11011dba7 100644
--- a/gcc/gcc.c /* FIXME: Is this big enough? */
+++ b/gcc/gcc.c +#if __MINGW64__
@@ -786,6 +786,11 @@ proper position among the other output files. */ +static const size_t pch_VA_max_size = UINT64_C(64 * 1024 * 1024 * 1024);
+#else
static const size_t pch_VA_max_size = 128 * 1024 * 1024;
+#endif
/* Granularity for reserving address space. */
static size_t va_granularity = 0x10000;
diff -NBaur gcc-12.1.0-RC-20220429/gcc/gcc.cc gcc-12.1.0-RC-20220429-dkarm/gcc/gcc.cc
--- gcc-12.1.0-RC-20220429/gcc/gcc.cc 2022-04-29 14:58:23.000000000 +0100
+++ gcc-12.1.0-RC-20220429-dkarm/gcc/gcc.cc 2022-04-30 13:31:09.120134164 +0100
@@ -860,6 +860,11 @@
#endif #endif
#endif #endif
@@ -249,7 +194,7 @@ index a716f708259..6a11011dba7 100644
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */ /* config.h can define STARTFILE_SPEC to override the default crt0 files. */
#ifndef STARTFILE_SPEC #ifndef STARTFILE_SPEC
#define STARTFILE_SPEC \ #define STARTFILE_SPEC \
@@ -1081,6 +1086,7 @@ static const char *link_spec = LINK_SPEC; @@ -1204,6 +1209,7 @@
static const char *lib_spec = LIB_SPEC; static const char *lib_spec = LIB_SPEC;
static const char *link_gomp_spec = ""; static const char *link_gomp_spec = "";
static const char *libgcc_spec = LIBGCC_SPEC; static const char *libgcc_spec = LIBGCC_SPEC;
@@ -257,7 +202,7 @@ index a716f708259..6a11011dba7 100644
static const char *endfile_spec = ENDFILE_SPEC; static const char *endfile_spec = ENDFILE_SPEC;
static const char *startfile_spec = STARTFILE_SPEC; static const char *startfile_spec = STARTFILE_SPEC;
static const char *linker_name_spec = LINKER_NAME; static const char *linker_name_spec = LINKER_NAME;
@@ -1577,6 +1583,7 @@ static struct spec_list static_specs[] = @@ -1709,6 +1715,7 @@
INIT_STATIC_SPEC ("lib", &lib_spec), INIT_STATIC_SPEC ("lib", &lib_spec),
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec), INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
INIT_STATIC_SPEC ("libgcc", &libgcc_spec), INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
@@ -265,26 +210,24 @@ index a716f708259..6a11011dba7 100644
INIT_STATIC_SPEC ("startfile", &startfile_spec), INIT_STATIC_SPEC ("startfile", &startfile_spec),
INIT_STATIC_SPEC ("cross_compile", &cross_compile), INIT_STATIC_SPEC ("cross_compile", &cross_compile),
INIT_STATIC_SPEC ("version", &compiler_version), INIT_STATIC_SPEC ("version", &compiler_version),
diff --git a/libgcc/config/arm/t-bpabi b/libgcc/config/arm/t-bpabi diff -NBaur gcc-12.1.0-RC-20220429/libgcc/config/arm/t-bpabi gcc-12.1.0-RC-20220429-dkarm/libgcc/config/arm/t-bpabi
index dddddc7c444..c2502597953 100644 --- gcc-12.1.0-RC-20220429/libgcc/config/arm/t-bpabi 2022-04-29 14:58:25.000000000 +0100
--- a/libgcc/config/arm/t-bpabi +++ gcc-12.1.0-RC-20220429-dkarm/libgcc/config/arm/t-bpabi 2022-04-30 13:31:09.120134164 +0100
+++ b/libgcc/config/arm/t-bpabi @@ -17,4 +17,4 @@
@@ -17,4 +17,4 @@ SHLIB_MAPFILES += $(srcdir)/config/arm/libgcc-bpabi.ver
# On ARM, specifying -fnon-call-exceptions will needlessly pull in # On ARM, specifying -fnon-call-exceptions will needlessly pull in
# the unwinder in simple programs which use 64-bit division. Omitting # the unwinder in simple programs which use 64-bit division. Omitting
# the option is safe. # the option is safe.
-LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions -LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
+LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions +LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c diff -NBaur gcc-12.1.0-RC-20220429/libgcc/crtstuff.c gcc-12.1.0-RC-20220429-dkarm/libgcc/crtstuff.c
index 5e894455e16..f81c9c6a64c 100644 --- gcc-12.1.0-RC-20220429/libgcc/crtstuff.c 2022-04-29 14:58:25.000000000 +0100
--- a/libgcc/crtstuff.c +++ gcc-12.1.0-RC-20220429-dkarm/libgcc/crtstuff.c 2022-04-30 13:31:09.120134164 +0100
+++ b/libgcc/crtstuff.c @@ -325,7 +325,7 @@
@@ -47,7 +47,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Target machine header files require this define. */ #ifdef OBJECT_FORMAT_ELF
#define IN_LIBGCC2
- -#if DEFAULT_USE_CXA_ATEXIT
+#define USED_FOR_TARGET +#if 1 /* DEFAULT_USE_CXA_ATEXIT */
/* FIXME: Including auto-host is incorrect, but until we have /* Declare the __dso_handle variable. It should have a unique value
identified the set of defines that need to go into auto-target.h, in every shared-object; in a main program its value is zero. The
this will have to do. */ object should in any case be protected. This means the instance

View File

@@ -1,449 +0,0 @@
diff -NBaur gdb-8.2.1/gdb/arm-3ds-tdep.c gdb-8.2.1-apple/gdb/arm-3ds-tdep.c
--- gdb-8.2.1/gdb/arm-3ds-tdep.c 1970-01-01 01:00:00.000000000 +0100
+++ gdb-8.2.1-apple/gdb/arm-3ds-tdep.c 2019-02-19 17:15:22.100604954 +0000
@@ -0,0 +1,157 @@
+/* Target-dependent code for 3DS. */
+
+/* This uses code from GDB, which license is: */
+
+/*
+ Copyright (C) 2002-2017 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "defs.h"
+#include "gdbcore.h"
+#include "target.h"
+#include "osabi.h"
+#include "xml-syscall.h"
+
+#include "arch/arm.h"
+#include "arch/arm-get-next-pcs.h"
+#include "arm-tdep.h"
+
+static const gdb_byte arm_3ds_arm_le_breakpoint[] = {0xff, 0x00, 0x00, 0xef};
+static const gdb_byte arm_3ds_thumb_le_breakpoint[] = {0xff, 0xdf};
+
+static CORE_ADDR
+ arm_3ds_get_next_pcs_syscall_next_pc (struct arm_get_next_pcs *self);
+
+/* Operation function pointers for get_next_pcs. */
+static struct arm_get_next_pcs_ops arm_3ds_get_next_pcs_ops = {
+ arm_get_next_pcs_read_memory_unsigned_integer,
+ arm_3ds_get_next_pcs_syscall_next_pc,
+ arm_get_next_pcs_addr_bits_remove,
+ arm_get_next_pcs_is_thumb,
+ NULL,
+};
+
+static CORE_ADDR
+arm_3ds_get_next_pcs_syscall_next_pc (struct arm_get_next_pcs *self)
+{
+ CORE_ADDR next_pc = 0;
+ CORE_ADDR pc = regcache_read_pc (self->regcache);
+ int is_thumb = arm_is_thumb (self->regcache);
+ ULONGEST svc_number = 0;
+
+ if (is_thumb)
+ {
+ next_pc = pc + 2;
+ }
+ else
+ {
+ next_pc = pc + 4;
+ }
+
+ /* Addresses for calling Thumb functions have the bit 0 set. */
+ if (is_thumb)
+ next_pc = MAKE_THUMB_ADDR (next_pc);
+
+ return next_pc;
+}
+
+static LONGEST
+arm_3ds_get_syscall_number (struct gdbarch *gdbarch,
+ thread_info *thread)
+{
+ struct regcache *regs = get_thread_regcache (thread);
+
+ ULONGEST pc;
+ ULONGEST cpsr;
+ ULONGEST t_bit = arm_psr_thumb_bit (gdbarch);
+ int is_thumb;
+ ULONGEST svc_number = -1;
+
+ regcache_cooked_read_unsigned (regs, ARM_PC_REGNUM, &pc);
+ regcache_cooked_read_unsigned (regs, ARM_PS_REGNUM, &cpsr);
+ is_thumb = (cpsr & t_bit) != 0;
+
+ if (is_thumb)
+ {
+ enum bfd_endian byte_order_for_code =
+ gdbarch_byte_order_for_code (gdbarch);
+
+ /* PC gets incremented before the syscall-stop, so read the
+ previous instruction. */
+ unsigned long this_instr =
+ read_memory_unsigned_integer (pc - 2, 2, byte_order_for_code);
+
+ unsigned long svc_operand = (0x00ff & this_instr);
+ svc_number = svc_operand;
+ }
+ else
+ {
+ enum bfd_endian byte_order_for_code =
+ gdbarch_byte_order_for_code (gdbarch);
+
+ /* PC gets incremented before the syscall-stop, so read the
+ previous instruction. */
+ unsigned long this_instr =
+ read_memory_unsigned_integer (pc - 4, 4, byte_order_for_code);
+
+ unsigned long svc_operand = (0x000000ff & this_instr);
+ svc_number = svc_operand;
+ }
+
+ if (svc_number == 0xfe)
+ {
+ regcache_cooked_read_unsigned (regs, 12, &svc_number);
+ }
+
+ return svc_number;
+}
+
+static void
+arm_3ds_init_abi (struct gdbarch_info info,
+ struct gdbarch *gdbarch)
+{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+ switch (info.byte_order)
+ {
+ case BFD_ENDIAN_LITTLE:
+ tdep->arm_breakpoint = arm_3ds_arm_le_breakpoint;
+ tdep->thumb_breakpoint = arm_3ds_thumb_le_breakpoint;
+ tdep->arm_breakpoint_size = sizeof (arm_3ds_arm_le_breakpoint);
+ tdep->thumb_breakpoint_size = sizeof (arm_3ds_thumb_le_breakpoint);
+ break;
+
+ default:
+ internal_error (__FILE__, __LINE__,
+ _("arm_gdbarch_init: bad byte order"));
+ }
+ tdep->fp_model = ARM_FLOAT_VFP;
+
+ /* Single stepping. */
+ set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
+
+ /* `catch syscall' */
+ set_xml_syscall_file_name (gdbarch, "syscalls/arm-3ds.xml");
+ set_gdbarch_get_syscall_number (gdbarch, arm_3ds_get_syscall_number);
+}
+
+void
+_initialize_arm_3ds_tdep (void)
+{
+ gdbarch_register_osabi (bfd_arch_arm, 0, GDB_OSABI_3DS,
+ arm_3ds_init_abi);
+}
diff -NBaur gdb-8.2.1/gdb/configure.tgt gdb-8.2.1-apple/gdb/configure.tgt
--- gdb-8.2.1/gdb/configure.tgt 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/configure.tgt 2019-02-19 17:15:22.104618045 +0000
@@ -61,7 +61,7 @@
;;
arm*-*-*)
- cpu_obs="arch/arm.o arch/arm-get-next-pcs.o arm-tdep.o";;
+ cpu_obs="arch/arm.o arch/arm-get-next-pcs.o arm-tdep.o arm-3ds-tdep.o";;
hppa*-*-*)
# Target: HP PA-RISC
diff -NBaur gdb-8.2.1/gdb/data-directory/Makefile.in gdb-8.2.1-apple/gdb/data-directory/Makefile.in
--- gdb-8.2.1/gdb/data-directory/Makefile.in 2018-01-05 04:07:23.000000000 +0000
+++ gdb-8.2.1-apple/gdb/data-directory/Makefile.in 2019-02-19 17:15:22.104618045 +0000
@@ -63,7 +63,7 @@
sparc-linux.xml \
sparc64-linux.xml
-SYSCALLS_FILES = gdb-syscalls.dtd freebsd.xml $(GEN_SYSCALLS_FILES)
+SYSCALLS_FILES = gdb-syscalls.dtd freebsd.xml arm-3ds.xml $(GEN_SYSCALLS_FILES)
PYTHON_DIR = python
PYTHON_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(PYTHON_DIR)
diff -NBaur gdb-8.2.1/gdb/defs.h gdb-8.2.1-apple/gdb/defs.h
--- gdb-8.2.1/gdb/defs.h 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/defs.h 2019-02-19 17:15:22.104618045 +0000
@@ -495,6 +495,7 @@
GDB_OSABI_LYNXOS178,
GDB_OSABI_NEWLIB,
GDB_OSABI_SDE,
+ GDB_OSABI_3DS,
GDB_OSABI_INVALID /* keep this last */
};
diff -NBaur gdb-8.2.1/gdb/dtrace-probe.c gdb-8.2.1-apple/gdb/dtrace-probe.c
--- gdb-8.2.1/gdb/dtrace-probe.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/dtrace-probe.c 2019-02-19 17:30:16.449175937 +0000
@@ -100,7 +100,7 @@
/* DTrace static_probe_ops. */
-const dtrace_static_probe_ops dtrace_static_probe_ops;
+const dtrace_static_probe_ops dtrace_static_probe_ops = {};
/* The following structure represents a dtrace probe. */
diff -NBaur gdb-8.2.1/gdb/Makefile.in gdb-8.2.1-apple/gdb/Makefile.in
--- gdb-8.2.1/gdb/Makefile.in 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/Makefile.in 2019-02-19 17:15:22.104618045 +0000
@@ -684,6 +684,7 @@
arch/arm-linux.o \
arch/i386.o \
arch/ppc-linux-common.o \
+ arm-3ds-tdep.o \
arm-bsd-tdep.o \
arm-fbsd-tdep.o \
arm-linux-tdep.o \
@@ -2213,6 +2214,7 @@
amd64-tdep.c \
arc-tdep.c \
arm.c \
+ arm-3ds-tdep.c \
arm-bsd-tdep.c \
arm-fbsd-nat.c \
arm-fbsd-tdep.c \
diff -NBaur gdb-8.2.1/gdb/osabi.c gdb-8.2.1-apple/gdb/osabi.c
--- gdb-8.2.1/gdb/osabi.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/osabi.c 2019-02-19 17:15:22.104618045 +0000
@@ -80,6 +80,7 @@
{ "LynxOS178", NULL },
{ "Newlib", NULL },
{ "SDE", NULL },
+ { "3DS", NULL },
{ "<invalid>", NULL }
};
diff -NBaur gdb-8.2.1/gdb/probe.c gdb-8.2.1-apple/gdb/probe.c
--- gdb-8.2.1/gdb/probe.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/probe.c 2019-02-19 17:31:05.266578008 +0000
@@ -60,7 +60,7 @@
/* Static operations associated with a generic probe. */
-const any_static_probe_ops any_static_probe_ops;
+const any_static_probe_ops any_static_probe_ops = {};
/* A helper for parse_probes that decodes a probe specification in
SEARCH_PSPACE. It appends matching SALs to RESULT. */
diff -NBaur gdb-8.2.1/gdb/record-btrace.c gdb-8.2.1-apple/gdb/record-btrace.c
--- gdb-8.2.1/gdb/record-btrace.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/record-btrace.c 2019-02-19 17:31:33.301731324 +0000
@@ -144,7 +144,7 @@
/* Token associated with a new-thread observer enabling branch tracing
for the new thread. */
-static const gdb::observers::token record_btrace_thread_observer_token;
+static const gdb::observers::token record_btrace_thread_observer_token = {};
/* Memory access types used in set/show record btrace replay-memory-access. */
static const char replay_memory_access_read_only[] = "read-only";
diff -NBaur gdb-8.2.1/gdb/stap-probe.c gdb-8.2.1-apple/gdb/stap-probe.c
--- gdb-8.2.1/gdb/stap-probe.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/stap-probe.c 2019-02-19 17:29:35.744567941 +0000
@@ -119,7 +119,7 @@
/* SystemTap static_probe_ops. */
-const stap_static_probe_ops stap_static_probe_ops;
+const stap_static_probe_ops stap_static_probe_ops = {};
class stap_probe : public probe
{
diff -NBaur gdb-8.2.1/gdb/syscalls/arm-3ds.xml gdb-8.2.1-apple/gdb/syscalls/arm-3ds.xml
--- gdb-8.2.1/gdb/syscalls/arm-3ds.xml 1970-01-01 01:00:00.000000000 +0100
+++ gdb-8.2.1-apple/gdb/syscalls/arm-3ds.xml 2019-02-19 17:15:22.104618045 +0000
@@ -0,0 +1,159 @@
+<?xml version="1.0"?>
+<!DOCTYPE syscalls_info SYSTEM "gdb-syscalls.dtd">
+<!-- This file is located inside GDB and is based on files which license are: -->
+<!-- Copyright (C) 2009-2017 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved. This file is offered as-is,
+ without any warranty. -->
+<syscalls_info>
+ <syscall name="ControlMemory" number="1" groups="memory"/>
+ <syscall name="QueryMemory" number="2" groups="memory"/>
+
+ <syscall name="ExitProcess" number="3" groups="process"/>
+ <syscall name="GetProcessAffinityMask" number="4" groups="process"/>
+ <syscall name="SetProcessAffinityMask" number="5" groups="process"/>
+ <syscall name="GetProcessIdealProcessor" number="6" groups="process"/>
+ <syscall name="SetProcessIdealProcessor" number="7" groups="process"/>
+
+ <syscall name="CreateThread" number="8" groups="thread"/>
+ <syscall name="ExitThread" number="9" groups="thread"/>
+ <syscall name="SleepThread" number="10" groups="thread"/>
+ <syscall name="GetThreadPriority" number="11" groups="thread"/>
+ <syscall name="SetThreadPriority" number="12" groups="thread"/>
+ <syscall name="GetThreadAffinityMask" number="13" groups="thread"/>
+ <syscall name="SetThreadAffinityMask" number="14" groups="thread"/> <!-- removed -->
+ <syscall name="GetThreadIdealProcessor" number="15" groups="thread"/>
+ <syscall name="SetThreadIdealProcessor" number="16" groups="thread"/> <!-- removed -->
+ <syscall name="GetCurrentProcessorNumber" number="17" groups="thread"/>
+ <syscall name="Run" number="18" groups="thread"/>
+
+ <syscall name="CreateMutex" number="19" groups="synchronization"/>
+ <syscall name="ReleaseMutex" number="20" groups="synchronization"/>
+ <syscall name="CreateSemaphore" number="21" groups="synchronization"/>
+ <syscall name="ReleaseSemaphore" number="22" groups="synchronization"/>
+ <syscall name="CreateEvent" number="23" groups="synchronization"/>
+ <syscall name="SignalEvent" number="24" groups="synchronization"/>
+ <syscall name="ClearEvent" number="25" groups="synchronization"/>
+ <syscall name="CreateTimer" number="26" groups="synchronization"/>
+ <syscall name="SetTimer" number="27" groups="synchronization"/>
+ <syscall name="CancelTimer" number="28" groups="synchronization"/>
+ <syscall name="ClearTimer" number="29" groups="synchronization"/>
+
+ <syscall name="CreateMemoryBlock" number="30" groups="memory,ipc"/>
+ <syscall name="MapMemoryBlock" number="31" groups="memory,ipc"/>
+ <syscall name="UnmapMemoryBlock" number="32" groups="memory,ipc"/>
+
+ <syscall name="CreateAddressArbiter" number="33" groups="memory,synchronization"/>
+ <syscall name="ArbitrateAddress" number="34" groups="memory,synchronization"/>
+
+ <syscall name="CloseHandle" number="35" groups="synchronization,ipc,memory,thread,process,debug"/>
+ <syscall name="WaitSynchronization" number="36" groups="synchronization,ipc,thread,process,debug"/>
+ <syscall name="WaitSynchronizationN" number="37" groups="synchronization,ipc,thread,process,debug"/>
+ <syscall name="SignalAndWait" number="38" groups="synchronization"/> <!-- removed -->
+ <syscall name="DuplicateHandle" number="39" groups="synchronization,ipc,memory,thread,process,debug"/>
+
+ <syscall name="GetSystemTick" number="40" groups="information"/>
+ <syscall name="GetHandleInfo" number="41" groups="information,synchronization,ipc,memory,thread,process,debug"/>
+ <syscall name="GetSystemInfo" number="42" groups="information"/>
+ <syscall name="GetProcessInfo" number="43" groups="information,process"/>
+ <syscall name="GetThreadInfo" number="44" groups="information,thread"/>
+
+ <syscall name="ConnectToPort" number="45" groups="ipc"/>
+ <syscall name="GetCFWInfo" number="46" groups="custom,information"/> <!-- deprecated -->
+ <syscall name="SendSyncRequest2" number="47" groups="ipc"/> <!-- removed -->
+ <syscall name="SendSyncRequest3" number="48" groups="ipc"/> <!-- removed -->
+ <syscall name="SendSyncRequest4" number="49" groups="ipc"/> <!-- removed -->
+ <syscall name="SendSyncRequest" number="50" groups="ipc"/> <!-- removed -->
+
+ <syscall name="OpenProcess" number="51" groups="process"/>
+ <syscall name="OpenThread" number="52" groups="thread"/>
+
+ <syscall name="GetProcessId" number="53" groups="process"/>
+ <syscall name="GetProcessIdOfThread" number="54" groups="process,thread"/>
+ <syscall name="GetThreadId" number="55" groups="thread"/>
+
+ <syscall name="GetResourceLimit" number="56" groups="process"/>
+ <syscall name="GetResourceLimitLimitValues" number="57" groups="process"/>
+ <syscall name="GetResourceLimitCurrentValues" number="58" groups="process"/>
+
+ <syscall name="GetThreadContext" number="59" groups="debug,thread"/> <!-- removed -->
+ <syscall name="Break" number="60" groups="debug"/>
+ <syscall name="OutputDebugString" number="61" groups="debug"/>
+ <syscall name="ControlPerformanceCounter" number="62" groups="debug"/>
+
+ <syscall name="CreatePort" number="71" groups="ipc"/>
+ <syscall name="CreateSessionToPort" number="72" groups="ipc"/>
+ <syscall name="CreateSession" number="73" groups="ipc"/>
+ <syscall name="AcceptSession" number="74" groups="ipc"/>
+ <syscall name="ReplyAndReceive1" number="75" groups="ipc"/>
+ <syscall name="ReplyAndReceive2" number="76" groups="ipc"/>
+ <syscall name="ReplyAndReceive3" number="77" groups="ipc"/>
+ <syscall name="ReplyAndReceive4" number="78" groups="ipc"/>
+ <syscall name="ReplyAndReceive" number="79" groups="ipc"/>
+
+ <syscall name="BindInterrupt" number="80" groups="io,synchronization"/>
+ <syscall name="UnbindInterrupt" number="81" groups="io,synchronization"/>
+ <syscall name="InvalidateProcessDataCache" number="82" groups="io,memory,process"/>
+ <syscall name="StoreProcessDataCache" number="83" groups="io,memory,process"/>
+ <syscall name="FlushProcessDataCache" number="84" groups="io,memory,process"/>
+
+ <syscall name="StartInterprocessDma" number="85" groups="io,memory,ipc"/>
+ <syscall name="StopDma" number="86" groups="io,memory,ipc"/>
+ <syscall name="GetDmaState" number="87" groups="io,memory,ipc"/>
+ <syscall name="RestartDma" number="88" groups="io,memory,ipc"/>
+
+ <syscall name="SetGpuProt" number="89" groups="io"/>
+ <syscall name="SetWifiEnabled" number="90" groups="io"/>
+
+ <syscall name="DebugActiveProcess" number="96" groups="debug,process"/>
+ <syscall name="BreakDebugProcess" number="97" groups="debug,process"/>
+ <syscall name="TerminateDebugProcess" number="98" groups="debug,process"/>
+ <syscall name="GetProcessDebugEvent" number="99" groups="debug"/>
+ <syscall name="ContinueDebugEvent" number="100" groups="debug"/>
+ <syscall name="GetProcessList" number="101" groups="information,debug,process"/>
+ <syscall name="GetThreadList" number="102" groups="information,debug,thread"/>
+ <syscall name="GetDebugThreadContext" number="103" groups="debug,thread"/>
+ <syscall name="SetDebugThreadContext" number="104" groups="debug,thread"/>
+ <syscall name="QueryDebugProcessMemory" number="105" groups="debug,process,memory"/>
+ <syscall name="ReadProcessMemory" number="106" groups="debug,process,memory"/>
+ <syscall name="WriteProcessMemory" number="107" groups="debug,process,memory"/>
+ <syscall name="SetHardwareBreakPoint" number="108" group="debug"/>
+ <syscall name="GetDebugThreadParam" number="109" group="debug,thread"/>
+
+ <syscall name="ControlProcessMemory" number="112" group="process,memory"/>
+ <syscall name="MapProcessMemory" number="113" group="process,memory"/>
+ <syscall name="UnmapProcessMemory" number="114" group="process,memory"/>
+
+ <syscall name="CreateCodeSet" number="115" group="process,memory"/>
+ <syscall name="RandomStub" number="116" group="process,memory"/> <!-- removed -->
+ <syscall name="CreateProcess" number="117" group="process"/>
+ <syscall name="TerminateProcess" number="118" group="process"/>
+ <syscall name="SetProcessResourceLimits" number="119" group="process"/>
+ <syscall name="CreateResourceLimit" number="120" group="process"/>
+ <syscall name="SetResourceLimitValues" number="121" group="process"/>
+ <syscall name="AddCodeSegment" number="122" group="process"/> <!-- removed -->
+
+ <syscall name="Backdoor" number="123" group="kernel"/>
+ <syscall name="KernelSetState" number="124" group="kernel"/>
+
+ <syscall name="QueryProcessMemory" number="125" group="process,memory"/>
+
+ <syscall name="CustomBackdoor" number="128" group="custom,kernel"/>
+
+ <syscall name="ConvertVAToPA" number="144" group="custom,io,memory"/>
+ <syscall name="FlushDataCacheRange" number="145" group="custom,io,memory"/>
+ <syscall name="FlushEntireDataCache" number="146" group="custom,io,memory"/>
+ <syscall name="InvalidateInstructionCacheRange" number="147" group="custom,io,memory"/>
+ <syscall name="InvalidateEntireInstructionCache" number="148" group="custom,io,memory"/>
+
+ <syscall name="MapProcessMemoryEx" number="160" group="custom,process,memory"/>
+ <syscall name="UnmapProcessMemoryEx" number="161" group="custom,process,memory"/>
+ <syscall name="ControlMemoryEx" number="162" group="custom,memory"/>
+
+ <syscall name="ControlService" number="176" group="custom,ipc"/>
+ <syscall name="CopyHandle" number="177" groups="custom,synchronization,ipc,thread,process,debug"/>
+ <syscall name="TranslateHandle" number="178" groups="custom,synchronization,ipc,thread,process,debug"/>
+
+</syscalls_info>
diff -NBaur gdb-8.2.1/gdb/tui/tui-hooks.c gdb-8.2.1-apple/gdb/tui/tui-hooks.c
--- gdb-8.2.1/gdb/tui/tui-hooks.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/tui/tui-hooks.c 2019-02-19 17:28:53.178460364 +0000
@@ -205,7 +205,7 @@
/* Token associated with observers registered while TUI hooks are
installed. */
-static const gdb::observers::token tui_observers_token;
+static const gdb::observers::token tui_observers_token = {};
/* Attach or detach a single observer, according to ATTACH. */

View File

@@ -0,0 +1,26 @@
#!/bin/sh
#---------------------------------------------------------------------------------
# set env variables
#---------------------------------------------------------------------------------
export DEVKITPRO=$TOOLPATH
export DEVKITARM=$DEVKITPRO/devkitARM
#---------------------------------------------------------------------------------
# Install the rules files
#---------------------------------------------------------------------------------
cd $BUILDDIR
tar -xvf $SRCDIR/devkitarm-rules-$DKARM_RULES_VER.tar.gz
cd devkitarm-rules-$DKARM_RULES_VER
make install
#---------------------------------------------------------------------------------
# Install and build the crt0 files
#---------------------------------------------------------------------------------
cd $BUILDDIR
tar -xvf $SRCDIR/devkitarm-crtls-$DKARM_CRTLS_VER.tar.gz
cd devkitarm-crtls-$DKARM_CRTLS_VER
make install

View File

@@ -64,9 +64,12 @@ then
--prefix=$prefix \ --prefix=$prefix \
--enable-lto\ --enable-lto\
--with-system-zlib \ --with-system-zlib \
--with-bugurl="http://wiki.devkitpro.org/index.php/Bug_Reports" --with-pkgversion="devkitARM release 52" \ --disable-tm-clone-registry \
--disable-__cxa_atexit \
--with-bugurl="http://wiki.devkitpro.org/index.php/Bug_Reports" --with-pkgversion="devkitARM release 58" \
$CROSS_PARAMS \ $CROSS_PARAMS \
$CROSS_GCC_PARAMS \ $CROSS_GCC_PARAMS \
$EXTRA_GCC_PARAMS \
|| { echo "Error configuring gcc"; exit 1; } || { echo "Error configuring gcc"; exit 1; }
touch configured-gcc touch configured-gcc
fi fi
@@ -150,35 +153,3 @@ fi
rm -fr $prefix/$target/sys-include rm -fr $prefix/$target/sys-include
cd $BUILDDIR cd $BUILDDIR
#---------------------------------------------------------------------------------
# build and install the debugger
#---------------------------------------------------------------------------------
mkdir -p $target/gdb
cd $target/gdb
PLATFORM=`uname -s`
if [ ! -f configured-gdb ]
then
CPPFLAGS="$cppflags $CPPFLAGS" \
LDFLAGS="$ldflags" \
../../gdb-$GDB_VER/configure \
--disable-nls --prefix=$prefix --target=$target --disable-werror \
$CROSS_PARAMS \
|| { echo "Error configuring gdb"; exit 1; }
touch configured-gdb
fi
if [ ! -f built-gdb ]
then
$MAKE || { echo "Error building gdb"; exit 1; }
touch built-gdb
fi
if [ ! -f installed-gdb ]
then
$MAKE install || { echo "Error installing gdb"; exit 1; }
touch installed-gdb
fi

View File

@@ -1,71 +0,0 @@
#!/bin/sh
#---------------------------------------------------------------------------------
# set env variables
#---------------------------------------------------------------------------------
export DEVKITPRO=$TOOLPATH
export DEVKITARM=$DEVKITPRO/devkitARM
#---------------------------------------------------------------------------------
# Install the rules files
#---------------------------------------------------------------------------------
cd $BUILDDIR
mkdir -p rules
cd rules
tar -xvf $SRCDIR/devkitarm-rules-$DKARM_RULES_VER.tar.xz
make install
#---------------------------------------------------------------------------------
# Install and build the crt0 files
#---------------------------------------------------------------------------------
cd $BUILDDIR
mkdir -p crtls
cd crtls
tar -xvf $SRCDIR/devkitarm-crtls-$DKARM_CRTLS_VER.tar.xz
make install
cd $BUILDDIR/libgba-$LIBGBA_VER
$MAKE || { echo "error building libgba"; exit 1; }
$MAKE install || { echo "error installing libgba"; exit 1; }
cd $BUILDDIR/libnds-$LIBNDS_VER
$MAKE || { echo "error building libnds"; exit 1; }
$MAKE install || { echo "error installing libnds"; exit 1; }
cd $BUILDDIR/dswifi-$DSWIFI_VER
$MAKE || { echo "error building dswifi"; exit 1; }
$MAKE install || { echo "error installing dswifi"; exit 1; }
cd $BUILDDIR/maxmod-$MAXMOD_VER
$MAKE || { echo "error building maxmod"; exit 1; }
$MAKE install || { echo "error installing maxmod"; exit 1; }
cd $BUILDDIR/default_arm7-$DEFAULT_ARM7_VER
$MAKE || { echo "error building default arm7"; exit 1; }
$MAKE install || { echo "error installing default arm7"; exit 1; }
cd $BUILDDIR/libfat-$LIBFAT_VER
$MAKE nds-install || { echo "error building nds libfat"; exit 1; }
$MAKE gba-install || { echo "error installing gba libfat"; exit 1; }
#cd $BUILDDIR/libmirko-$LIBMIRKO_VER
#$MAKE || { echo "error building libmirko"; exit 1; }
#$MAKE install || { echo "error installing libmirko"; exit 1; }
cd $BUILDDIR/libfilesystem-$FILESYSTEM_VER
$MAKE || { echo "error building libfilesystem"; exit 1; }
$MAKE install || { echo "error installing libfilesystem"; exit 1; }
cd $BUILDDIR/libctru-$LIBCTRU_VER
$MAKE || { echo "error building libctru"; exit 1; }
$MAKE install || { echo "error installing libctru"; exit 1; }
cd $BUILDDIR/citro3d-$CITRO3D_VER
$MAKE || { echo "error building citro3d"; exit 1; }
$MAKE install || { echo "error installing citro3d"; exit 1; }
cd $BUILDDIR/citro2d-$CITRO2D_VER
$MAKE || { echo "error building citro2d"; exit 1; }
$MAKE install || { echo "error installing citro2d"; exit 1; }

View File

@@ -1,20 +0,0 @@
#!/bin/bash
cd $BUILDDIR
for archive in $hostarchives
do
dir=$(echo $archive | sed -e 's/\(.*\)\.tar\.bz2/\1/' )
cd $BUILDDIR/$dir
if [ ! -f configured ]; then
CPPFLAGS="$cppflags $CPPFLAGS" ./configure --prefix=$toolsprefix $CROSS_PARAMS || { echo "error configuring $archive"; exit 1; }
touch configured
fi
if [ ! -f built ]; then
$MAKE || { echo "error building $dir"; exit 1; }
touch built
fi
if [ ! -f installed ]; then
$MAKE install || { echo "error installing $dir"; exit 1; }
touch installed
fi
done

View File

@@ -1,12 +0,0 @@
diff -NBaur binutils-2.31.1/opcodes/ppc-opc.c binutils-2.31.1-ppc/opcodes/ppc-opc.c
--- binutils-2.31.1/opcodes/ppc-opc.c 2018-06-24 19:38:58.000000000 +0100
+++ binutils-2.31.1-ppc/opcodes/ppc-opc.c 2018-11-01 10:59:42.814553627 +0000
@@ -3501,7 +3501,7 @@
#define MFDEC2 (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
| PPC_OPCODE_TITAN)
#define BOOKE PPC_OPCODE_BOOKE
-#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
+#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_EFS
#define PPCE300 PPC_OPCODE_E300
#define PPCSPE PPC_OPCODE_SPE
#define PPCSPE2 PPC_OPCODE_SPE2

View File

@@ -0,0 +1,28 @@
diff -NBaur binutils-2.37/libiberty/rust-demangle.c binutils-2.37-new/libiberty/rust-demangle.c
--- binutils-2.37/libiberty/rust-demangle.c 2021-07-15 15:19:46.000000000 +0100
+++ binutils-2.37-new/libiberty/rust-demangle.c 2022-01-01 22:02:21.860422023 +0000
@@ -75,10 +75,10 @@
int version;
/* Recursion depth. */
- uint recursion;
+ unsigned recursion;
/* Maximum number of times demangle_path may be called recursively. */
#define RUST_MAX_RECURSION_COUNT 1024
-#define RUST_NO_RECURSION_LIMIT ((uint) -1)
+#define RUST_NO_RECURSION_LIMIT ((unsigned) -1)
uint64_t bound_lifetime_depth;
};
diff -NBaur binutils-2.37/opcodes/ppc-opc.c binutils-2.37-new/opcodes/ppc-opc.c
--- binutils-2.37/opcodes/ppc-opc.c 2021-07-08 12:37:21.000000000 +0100
+++ binutils-2.37-new/opcodes/ppc-opc.c 2022-01-01 22:02:04.409141184 +0000
@@ -4302,7 +4302,7 @@
#define MFDEC2 (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
| PPC_OPCODE_TITAN)
#define BOOKE PPC_OPCODE_BOOKE
-#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
+#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_EFS
#define PPCE300 PPC_OPCODE_E300
#define PPCSPE PPC_OPCODE_SPE
#define PPCSPE2 PPC_OPCODE_SPE2

View File

@@ -1,33 +1,33 @@
diff --git a/config/gthr.m4 b/config/gthr.m4 diff -NBaur gcc-12.1.0/config/gthr.m4 gcc-12.1.0-dkppc/config/gthr.m4
index 7b29f1f..814104f 100644 --- gcc-12.1.0/config/gthr.m4 2022-05-06 08:30:56.000000000 +0100
--- a/config/gthr.m4 +++ gcc-12.1.0-dkppc/config/gthr.m4 2022-05-06 19:17:44.784777075 +0100
+++ b/config/gthr.m4 @@ -13,6 +13,7 @@
@@ -12,6 +12,7 @@ AC_DEFUN([GCC_AC_THREAD_HEADER],
[
case $1 in case $1 in
aix) thread_header=config/rs6000/gthr-aix.h ;; aix) thread_header=config/rs6000/gthr-aix.h ;;
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
dce) thread_header=config/pa/gthr-dce.h ;; dce) thread_header=config/pa/gthr-dce.h ;;
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
gcn) thread_header=config/gcn/gthr-gcn.h ;;
lynx) thread_header=config/gthr-lynx.h ;; lynx) thread_header=config/gthr-lynx.h ;;
mipssde) thread_header=config/mips/gthr-mipssde.h ;; mipssde) thread_header=config/mips/gthr-mipssde.h ;;
diff --git a/gcc/config.gcc b/gcc/config.gcc diff -NBaur gcc-12.1.0/gcc/config/i386/host-mingw32.cc gcc-12.1.0-dkppc/gcc/config/i386/host-mingw32.cc
index 7af8e02..dc58cab 100644 --- gcc-12.1.0/gcc/config/i386/host-mingw32.cc 2022-05-06 08:30:56.000000000 +0100
--- a/gcc/config.gcc +++ gcc-12.1.0-dkppc/gcc/config/i386/host-mingw32.cc 2022-05-06 19:17:44.784777075 +0100
+++ b/gcc/config.gcc @@ -45,7 +45,11 @@
@@ -2464,7 +2464,7 @@ powerpc-xilinx-eabi*) static inline void w32_error(const char*, const char*, int, const char*);
use_gcc_stdint=wrap
;; /* FIXME: Is this big enough? */
powerpc-*-eabi*) +#if __MINGW64__
- tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h" +static const size_t pch_VA_max_size = UINT64_C(64 * 1024 * 1024 * 1024);
+ tm_file="${tm_file} dbxelf.h elfos.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/750cl.h" +#else
extra_options="${extra_options} rs6000/sysv4.opt" static const size_t pch_VA_max_size = 128 * 1024 * 1024;
tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm" +#endif
use_gcc_stdint=wrap
diff --git a/gcc/config/newlib-stdint.h b/gcc/config/newlib-stdint.h /* Granularity for reserving address space. */
index f46e797..fd39e64 100644 static size_t va_granularity = 0x10000;
--- a/gcc/config/newlib-stdint.h diff -NBaur gcc-12.1.0/gcc/config/newlib-stdint.h gcc-12.1.0-dkppc/gcc/config/newlib-stdint.h
+++ b/gcc/config/newlib-stdint.h --- gcc-12.1.0/gcc/config/newlib-stdint.h 2022-05-06 08:30:57.000000000 +0100
@@ -25,7 +25,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +++ gcc-12.1.0-dkppc/gcc/config/newlib-stdint.h 2022-05-06 19:17:44.784777075 +0100
@@ -25,7 +25,7 @@
/* newlib uses 32-bit long in certain cases for all non-SPU /* newlib uses 32-bit long in certain cases for all non-SPU
targets. */ targets. */
#ifndef STDINT_LONG32 #ifndef STDINT_LONG32
@@ -36,19 +36,18 @@ index f46e797..fd39e64 100644
#endif #endif
#define SIG_ATOMIC_TYPE "int" #define SIG_ATOMIC_TYPE "int"
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h diff -NBaur gcc-12.1.0/gcc/config/rs6000/rs6000.h gcc-12.1.0-dkppc/gcc/config/rs6000/rs6000.h
index b83b304..b85359e 100644 --- gcc-12.1.0/gcc/config/rs6000/rs6000.h 2022-05-06 08:30:57.000000000 +0100
--- a/gcc/config/rs6000/rs6000.h +++ gcc-12.1.0-dkppc/gcc/config/rs6000/rs6000.h 2022-05-06 19:22:10.793624730 +0100
+++ b/gcc/config/rs6000/rs6000.h @@ -196,6 +196,7 @@
@@ -212,6 +212,7 @@
{ "asm_cpu_476", ASM_CPU_476_SPEC }, \
SUBTARGET_EXTRA_SPECS
+#if 0
/* -mcpu=native handling only makes sense with compiler running on /* -mcpu=native handling only makes sense with compiler running on
an PowerPC chip. If changing this condition, also change an PowerPC chip. If changing this condition, also change
the condition in driver-rs6000.c. */ the condition in driver-rs6000.cc. */
@@ -226,6 +227,8 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); +#if 0
#if defined(__powerpc__) || defined(__POWERPC__) || defined(_AIX)
/* In driver-rs6000.cc. */
extern const char *host_detect_local_cpu (int argc, const char **argv);
@@ -207,6 +208,8 @@
#else #else
#define ASM_CPU_NATIVE_SPEC "%(asm_default)" #define ASM_CPU_NATIVE_SPEC "%(asm_default)"
#endif #endif
@@ -57,42 +56,10 @@ index b83b304..b85359e 100644
#ifndef CC1_CPU_SPEC #ifndef CC1_CPU_SPEC
#ifdef HAVE_LOCAL_CPU_DETECT #ifdef HAVE_LOCAL_CPU_DETECT
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md diff -NBaur gcc-12.1.0/gcc/config/rs6000/sysv4.h gcc-12.1.0-dkppc/gcc/config/rs6000/sysv4.h
index 4d69c1d..af2d7b5 100644 --- gcc-12.1.0/gcc/config/rs6000/sysv4.h 2022-05-06 08:30:57.000000000 +0100
--- a/gcc/config/rs6000/rs6000.md +++ gcc-12.1.0-dkppc/gcc/config/rs6000/sysv4.h 2022-05-06 19:17:44.784777075 +0100
+++ b/gcc/config/rs6000/rs6000.md @@ -589,7 +589,11 @@
@@ -5625,19 +5625,19 @@
tmp = gen_reg_rtx (DImode);
emit_insn (gen_fctiwz_<mode> (tmp, src));
- if (MEM_P (dest))
+ if (TARGET_POWERPC64 && (TARGET_MFPGPR || TARGET_DIRECT_MOVE))
{
- dest = rs6000_address_for_fpconvert (dest);
- emit_insn (gen_stfiwx (dest, tmp));
+ dest = gen_lowpart (DImode, dest);
+ emit_move_insn (dest, tmp);
DONE;
}
- else if (TARGET_POWERPC64 && (TARGET_MFPGPR || TARGET_DIRECT_MOVE))
+ else if (MEM_P (dest) && MEM_ALIGN (dest) >= 32)
{
- dest = gen_lowpart (DImode, dest);
- emit_move_insn (dest, tmp);
+ dest = rs6000_address_for_fpconvert (dest);
+ emit_insn (gen_stfiwx (dest, tmp));
DONE;
}
- else
+ else
{
rtx stack = rs6000_allocate_stack_temp (SImode, false, true);
emit_insn (gen_stfiwx (stack, tmp));
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
index bb19d0d..74d1e47 100644
--- a/gcc/config/rs6000/sysv4.h
+++ b/gcc/config/rs6000/sysv4.h
@@ -565,7 +565,11 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
/* Default starting address if specified. */ /* Default starting address if specified. */
#define LINK_START_SPEC "\ #define LINK_START_SPEC "\
@@ -105,7 +72,7 @@ index bb19d0d..74d1e47 100644
myellowknife : %(link_start_yellowknife) ; \ myellowknife : %(link_start_yellowknife) ; \
mmvme : %(link_start_mvme) ; \ mmvme : %(link_start_mvme) ; \
msim : %(link_start_sim) ; \ msim : %(link_start_sim) ; \
@@ -596,7 +600,8 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -620,7 +624,8 @@
/* Any specific OS flags. */ /* Any specific OS flags. */
#define LINK_OS_SPEC "\ #define LINK_OS_SPEC "\
@@ -115,7 +82,7 @@ index bb19d0d..74d1e47 100644
myellowknife : %(link_os_yellowknife) ; \ myellowknife : %(link_os_yellowknife) ; \
mmvme : %(link_os_mvme) ; \ mmvme : %(link_os_mvme) ; \
msim : %(link_os_sim) ; \ msim : %(link_os_sim) ; \
@@ -614,7 +619,10 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -635,7 +640,10 @@
/* Override rs6000.h definition. */ /* Override rs6000.h definition. */
#undef CPP_SPEC #undef CPP_SPEC
#define CPP_SPEC "%{posix: -D_POSIX_SOURCE} \ #define CPP_SPEC "%{posix: -D_POSIX_SOURCE} \
@@ -127,7 +94,7 @@ index bb19d0d..74d1e47 100644
myellowknife : %(cpp_os_yellowknife) ; \ myellowknife : %(cpp_os_yellowknife) ; \
mmvme : %(cpp_os_mvme) ; \ mmvme : %(cpp_os_mvme) ; \
msim : %(cpp_os_sim) ; \ msim : %(cpp_os_sim) ; \
@@ -628,7 +636,10 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -649,7 +657,10 @@
#undef STARTFILE_SPEC #undef STARTFILE_SPEC
#define STARTFILE_SPEC "\ #define STARTFILE_SPEC "\
@@ -139,7 +106,7 @@ index bb19d0d..74d1e47 100644
myellowknife : %(startfile_yellowknife) ; \ myellowknife : %(startfile_yellowknife) ; \
mmvme : %(startfile_mvme) ; \ mmvme : %(startfile_mvme) ; \
msim : %(startfile_sim) ; \ msim : %(startfile_sim) ; \
@@ -642,7 +653,8 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -663,7 +674,8 @@
#undef LIB_SPEC #undef LIB_SPEC
#define LIB_SPEC "\ #define LIB_SPEC "\
@@ -149,7 +116,7 @@ index bb19d0d..74d1e47 100644
myellowknife : %(lib_yellowknife) ; \ myellowknife : %(lib_yellowknife) ; \
mmvme : %(lib_mvme) ; \ mmvme : %(lib_mvme) ; \
msim : %(lib_sim) ; \ msim : %(lib_sim) ; \
@@ -652,11 +664,12 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -673,11 +685,12 @@
mcall-openbsd: %(lib_openbsd) ; \ mcall-openbsd: %(lib_openbsd) ; \
: %(lib_default) }" : %(lib_default) }"
@@ -164,7 +131,7 @@ index bb19d0d..74d1e47 100644
myellowknife : %(endfile_yellowknife) ; \ myellowknife : %(endfile_yellowknife) ; \
mmvme : %(endfile_mvme) ; \ mmvme : %(endfile_mvme) ; \
msim : %(endfile_sim) ; \ msim : %(endfile_sim) ; \
@@ -672,16 +685,27 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN) @@ -693,16 +706,27 @@
/* Motorola ADS support. */ /* Motorola ADS support. */
#define LIB_ADS_SPEC "--start-group -lads -lc --end-group" #define LIB_ADS_SPEC "--start-group -lads -lc --end-group"
@@ -192,7 +159,7 @@ index bb19d0d..74d1e47 100644
/* Motorola Yellowknife support. */ /* Motorola Yellowknife support. */
#define LIB_YELLOWKNIFE_SPEC "--start-group -lyk -lc --end-group" #define LIB_YELLOWKNIFE_SPEC "--start-group -lyk -lc --end-group"
@@ -882,6 +906,7 @@ ncrtn.o%s" @@ -850,6 +874,7 @@
#undef SUBTARGET_EXTRA_SPECS #undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \ #define SUBTARGET_EXTRA_SPECS \
{ "crtsavres_default", CRTSAVRES_DEFAULT_SPEC }, \ { "crtsavres_default", CRTSAVRES_DEFAULT_SPEC }, \
@@ -200,7 +167,7 @@ index bb19d0d..74d1e47 100644
{ "lib_ads", LIB_ADS_SPEC }, \ { "lib_ads", LIB_ADS_SPEC }, \
{ "lib_yellowknife", LIB_YELLOWKNIFE_SPEC }, \ { "lib_yellowknife", LIB_YELLOWKNIFE_SPEC }, \
{ "lib_mvme", LIB_MVME_SPEC }, \ { "lib_mvme", LIB_MVME_SPEC }, \
@@ -891,6 +916,7 @@ ncrtn.o%s" @@ -859,6 +884,7 @@
{ "lib_netbsd", LIB_NETBSD_SPEC }, \ { "lib_netbsd", LIB_NETBSD_SPEC }, \
{ "lib_openbsd", LIB_OPENBSD_SPEC }, \ { "lib_openbsd", LIB_OPENBSD_SPEC }, \
{ "lib_default", LIB_DEFAULT_SPEC }, \ { "lib_default", LIB_DEFAULT_SPEC }, \
@@ -208,7 +175,7 @@ index bb19d0d..74d1e47 100644
{ "startfile_ads", STARTFILE_ADS_SPEC }, \ { "startfile_ads", STARTFILE_ADS_SPEC }, \
{ "startfile_yellowknife", STARTFILE_YELLOWKNIFE_SPEC }, \ { "startfile_yellowknife", STARTFILE_YELLOWKNIFE_SPEC }, \
{ "startfile_mvme", STARTFILE_MVME_SPEC }, \ { "startfile_mvme", STARTFILE_MVME_SPEC }, \
@@ -900,6 +926,7 @@ ncrtn.o%s" @@ -868,6 +894,7 @@
{ "startfile_netbsd", STARTFILE_NETBSD_SPEC }, \ { "startfile_netbsd", STARTFILE_NETBSD_SPEC }, \
{ "startfile_openbsd", STARTFILE_OPENBSD_SPEC }, \ { "startfile_openbsd", STARTFILE_OPENBSD_SPEC }, \
{ "startfile_default", STARTFILE_DEFAULT_SPEC }, \ { "startfile_default", STARTFILE_DEFAULT_SPEC }, \
@@ -216,7 +183,7 @@ index bb19d0d..74d1e47 100644
{ "endfile_ads", ENDFILE_ADS_SPEC }, \ { "endfile_ads", ENDFILE_ADS_SPEC }, \
{ "endfile_yellowknife", ENDFILE_YELLOWKNIFE_SPEC }, \ { "endfile_yellowknife", ENDFILE_YELLOWKNIFE_SPEC }, \
{ "endfile_mvme", ENDFILE_MVME_SPEC }, \ { "endfile_mvme", ENDFILE_MVME_SPEC }, \
@@ -911,7 +938,11 @@ ncrtn.o%s" @@ -879,7 +906,11 @@
{ "endfile_default", ENDFILE_DEFAULT_SPEC }, \ { "endfile_default", ENDFILE_DEFAULT_SPEC }, \
{ "link_shlib", LINK_SHLIB_SPEC }, \ { "link_shlib", LINK_SHLIB_SPEC }, \
{ "link_start", LINK_START_SPEC }, \ { "link_start", LINK_START_SPEC }, \
@@ -228,7 +195,7 @@ index bb19d0d..74d1e47 100644
{ "link_start_yellowknife", LINK_START_YELLOWKNIFE_SPEC }, \ { "link_start_yellowknife", LINK_START_YELLOWKNIFE_SPEC }, \
{ "link_start_mvme", LINK_START_MVME_SPEC }, \ { "link_start_mvme", LINK_START_MVME_SPEC }, \
{ "link_start_sim", LINK_START_SIM_SPEC }, \ { "link_start_sim", LINK_START_SIM_SPEC }, \
@@ -921,6 +952,7 @@ ncrtn.o%s" @@ -889,6 +920,7 @@
{ "link_start_openbsd", LINK_START_OPENBSD_SPEC }, \ { "link_start_openbsd", LINK_START_OPENBSD_SPEC }, \
{ "link_start_default", LINK_START_DEFAULT_SPEC }, \ { "link_start_default", LINK_START_DEFAULT_SPEC }, \
{ "link_os", LINK_OS_SPEC }, \ { "link_os", LINK_OS_SPEC }, \
@@ -236,7 +203,7 @@ index bb19d0d..74d1e47 100644
{ "link_os_ads", LINK_OS_ADS_SPEC }, \ { "link_os_ads", LINK_OS_ADS_SPEC }, \
{ "link_os_yellowknife", LINK_OS_YELLOWKNIFE_SPEC }, \ { "link_os_yellowknife", LINK_OS_YELLOWKNIFE_SPEC }, \
{ "link_os_mvme", LINK_OS_MVME_SPEC }, \ { "link_os_mvme", LINK_OS_MVME_SPEC }, \
@@ -932,6 +964,9 @@ ncrtn.o%s" @@ -900,6 +932,9 @@
{ "link_os_default", LINK_OS_DEFAULT_SPEC }, \ { "link_os_default", LINK_OS_DEFAULT_SPEC }, \
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \ { "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
{ "link_secure_plt", LINK_SECURE_PLT_SPEC }, \ { "link_secure_plt", LINK_SECURE_PLT_SPEC }, \
@@ -246,11 +213,10 @@ index bb19d0d..74d1e47 100644
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \ { "cpp_os_ads", CPP_OS_ADS_SPEC }, \
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \ { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
diff --git a/gcc/config/rs6000/sysv4.opt b/gcc/config/rs6000/sysv4.opt diff -NBaur gcc-12.1.0/gcc/config/rs6000/sysv4.opt gcc-12.1.0-dkppc/gcc/config/rs6000/sysv4.opt
index 34fea0d..084a8ae 100644 --- gcc-12.1.0/gcc/config/rs6000/sysv4.opt 2022-05-06 08:30:57.000000000 +0100
--- a/gcc/config/rs6000/sysv4.opt +++ gcc-12.1.0-dkppc/gcc/config/rs6000/sysv4.opt 2022-05-06 19:17:44.784777075 +0100
+++ b/gcc/config/rs6000/sysv4.opt @@ -124,6 +124,26 @@
@@ -124,6 +124,26 @@ mads
Target RejectNegative Target RejectNegative
Link with libads.a, libc.a and crt0.o. Link with libads.a, libc.a and crt0.o.
@@ -277,11 +243,10 @@ index 34fea0d..084a8ae 100644
myellowknife myellowknife
Target RejectNegative Target RejectNegative
Link with libyk.a, libc.a and crt0.o. Link with libyk.a, libc.a and crt0.o.
diff --git a/gcc/configure b/gcc/configure diff -NBaur gcc-12.1.0/gcc/configure gcc-12.1.0-dkppc/gcc/configure
index 6121e16..6584112 100755 --- gcc-12.1.0/gcc/configure 2022-05-06 08:30:57.000000000 +0100
--- a/gcc/configure +++ gcc-12.1.0-dkppc/gcc/configure 2022-05-06 19:17:44.788859483 +0100
+++ b/gcc/configure @@ -12884,7 +12884,7 @@
@@ -11692,7 +11692,7 @@ case ${enable_threads} in
# default # default
target_thread_file='single' target_thread_file='single'
;; ;;
@@ -290,11 +255,10 @@ index 6121e16..6584112 100755
single | tpf | vxworks | win32) single | tpf | vxworks | win32)
target_thread_file=${enable_threads} target_thread_file=${enable_threads}
;; ;;
diff --git a/gcc/configure.ac b/gcc/configure.ac diff -NBaur gcc-12.1.0/gcc/configure.ac gcc-12.1.0-dkppc/gcc/configure.ac
index b066cc6..c42b3ef 100644 --- gcc-12.1.0/gcc/configure.ac 2022-05-06 08:30:57.000000000 +0100
--- a/gcc/configure.ac +++ gcc-12.1.0-dkppc/gcc/configure.ac 2022-05-06 19:17:44.788859483 +0100
+++ b/gcc/configure.ac @@ -1994,7 +1994,7 @@
@@ -1611,7 +1611,7 @@ case ${enable_threads} in
# default # default
target_thread_file='single' target_thread_file='single'
;; ;;
@@ -303,10 +267,9 @@ index b066cc6..c42b3ef 100644
single | tpf | vxworks | win32) single | tpf | vxworks | win32)
target_thread_file=${enable_threads} target_thread_file=${enable_threads}
;; ;;
diff --git a/libgcc/config/rs6000/crtrestvr.S b/libgcc/config/rs6000/crtrestvr.S diff -NBaur gcc-12.1.0/libgcc/config/rs6000/crtrestvr.S gcc-12.1.0-dkppc/libgcc/config/rs6000/crtrestvr.S
index ba2b262..8d86610 100644 --- gcc-12.1.0/libgcc/config/rs6000/crtrestvr.S 2022-05-06 08:30:59.000000000 +0100
--- a/libgcc/config/rs6000/crtrestvr.S +++ gcc-12.1.0-dkppc/libgcc/config/rs6000/crtrestvr.S 2022-05-06 19:17:44.792941894 +0100
+++ b/libgcc/config/rs6000/crtrestvr.S
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
/* On PowerPC64 Linux, these functions are provided by the linker. */ /* On PowerPC64 Linux, these functions are provided by the linker. */
@@ -316,15 +279,14 @@ index ba2b262..8d86610 100644
#undef __ALTIVEC__ #undef __ALTIVEC__
#define __ALTIVEC__ 1 #define __ALTIVEC__ 1
#include "ppc-asm.h" #include "ppc-asm.h"
@@ -86,3 +86,4 @@ FUNC_END(_restvr_20) @@ -86,3 +86,4 @@
CFI_ENDPROC CFI_ENDPROC
#endif #endif
+#endif +#endif
diff --git a/libgcc/config/rs6000/crtsavevr.S b/libgcc/config/rs6000/crtsavevr.S diff -NBaur gcc-12.1.0/libgcc/config/rs6000/crtsavevr.S gcc-12.1.0-dkppc/libgcc/config/rs6000/crtsavevr.S
index 077e33f..b7be68b 100644 --- gcc-12.1.0/libgcc/config/rs6000/crtsavevr.S 2022-05-06 08:30:59.000000000 +0100
--- a/libgcc/config/rs6000/crtsavevr.S +++ gcc-12.1.0-dkppc/libgcc/config/rs6000/crtsavevr.S 2022-05-06 19:17:44.792941894 +0100
+++ b/libgcc/config/rs6000/crtsavevr.S
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
/* On PowerPC64 Linux, these functions are provided by the linker. */ /* On PowerPC64 Linux, these functions are provided by the linker. */
@@ -334,17 +296,15 @@ index 077e33f..b7be68b 100644
#undef __ALTIVEC__ #undef __ALTIVEC__
#define __ALTIVEC__ 1 #define __ALTIVEC__ 1
#include "ppc-asm.h" #include "ppc-asm.h"
@@ -86,3 +86,4 @@ FUNC_END(_savevr_20) @@ -86,3 +86,4 @@
CFI_ENDPROC CFI_ENDPROC
#endif #endif
+#endif +#endif
diff --git a/libgcc/config/rs6000/gthr-dkp.c b/libgcc/config/rs6000/gthr-dkp.c diff -NBaur gcc-12.1.0/libgcc/config/rs6000/gthr-dkp.c gcc-12.1.0-dkppc/libgcc/config/rs6000/gthr-dkp.c
new file mode 100644 --- gcc-12.1.0/libgcc/config/rs6000/gthr-dkp.c 1970-01-01 01:00:00.000000000 +0100
index 0000000..94d6ba9 +++ gcc-12.1.0-dkppc/libgcc/config/rs6000/gthr-dkp.c 2022-05-06 19:17:44.792941894 +0100
--- /dev/null @@ -0,0 +1,319 @@
+++ b/libgcc/config/rs6000/gthr-dkp.c
@@ -0,0 +1,349 @@
+/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Threads compatibility routines for libgcc2 and libobjc. */
+/* Compile this one with gcc. */ +/* Compile this one with gcc. */
+/* Copyright (C) 1997-2016 Free Software Foundation, Inc. +/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
@@ -370,336 +330,304 @@ index 0000000..94d6ba9
+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+<http://www.gnu.org/licenses/>. */ +<http://www.gnu.org/licenses/>. */
+ +
+#define _BUILDING_LIBGCC
+#include "gthr-dkp.h" +#include "gthr-dkp.h"
+#include <stddef.h> +#include <stddef.h>
+ +
+__gthread_impl_t __gthread_impl = {
+ NULL, // active
+ NULL, // create
+ NULL, // join
+ NULL, // detach
+ NULL, // equal
+ NULL, // self
+ NULL, // yield
+ NULL, // once
+ NULL, // key_create
+ NULL, // key_delete
+ NULL, // getspecific
+ NULL, // setspecific
+ NULL, // mutex_init_function
+ NULL, // mutex_destroy
+ NULL, // mutex_lock
+ NULL, // mutex_trylock
+ NULL, // mutex_unlock
+ NULL, // recursive_mutex_init_function
+ NULL, // recursive_mutex_lock
+ NULL, // recursive_mutex_trylock
+ NULL, // recursive_mutex_unlock
+ NULL, // recursive_mutex_destroy
+ NULL, // cond_init_function
+ NULL, // cond_broadcast
+ NULL, // cond_signal
+ NULL, // cond_wait
+ NULL, // cond_timedwait
+ NULL, // cond_wait_recursive
+ NULL, // cond_destroy
+};
+ +
+int +int
+__gthread_active_p (void) +__gthread_active_p (void)
+{ +{
+ if (!__gthread_impl.active) { + if (!__has_gthr_impl(active)) {
+ return 0; + return 0;
+ } + }
+ +
+ return __gthread_impl.active(); + return __gthr_impl_active();
+} +}
+ +
+int +int
+__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
+ void *__args) + void *__args)
+{ +{
+ if (!__gthread_impl.create) { + if (!__has_gthr_impl(create)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.create(__threadid, __func, __args); + return __gthr_impl_create(__threadid, __func, __args);
+} +}
+ +
+int +int
+__gthread_join (__gthread_t __threadid, void **__value_ptr) +__gthread_join (__gthread_t __threadid, void **__value_ptr)
+{ +{
+ if (!__gthread_impl.join) { + if (!__has_gthr_impl(join)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.join(__threadid, __value_ptr); + return __gthr_impl_join(__threadid, __value_ptr);
+} +}
+ +
+int +int
+__gthread_detach (__gthread_t __threadid) +__gthread_detach (__gthread_t __threadid)
+{ +{
+ if (!__gthread_impl.detach) { + if (!__has_gthr_impl(detach)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.detach(__threadid); + return __gthr_impl_detach(__threadid);
+} +}
+ +
+int +int
+__gthread_equal (__gthread_t __t1, __gthread_t __t2) +__gthread_equal (__gthread_t __t1, __gthread_t __t2)
+{ +{
+ if (!__gthread_impl.equal) { + if (!__has_gthr_impl(equal)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.equal(__t1, __t2); + return __gthr_impl_equal(__t1, __t2);
+} +}
+ +
+__gthread_t +__gthread_t
+__gthread_self (void) +__gthread_self (void)
+{ +{
+ if (!__gthread_impl.self) { + if (!__has_gthr_impl(self)) {
+ __gthread_t result = { 0 }; + __gthread_t result = { 0 };
+ return result; + return result;
+ } + }
+ +
+ return __gthread_impl.self(); + return __gthr_impl_self();
+} +}
+ +
+int +int
+__gthread_yield (void) +__gthread_yield (void)
+{ +{
+ if (!__gthread_impl.yield) { + if (!__has_gthr_impl(yield)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.yield(); + return __gthr_impl_yield();
+} +}
+ +
+int +int
+__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +__gthread_once (__gthread_once_t *__once, void (*__func) (void))
+{ +{
+ if (!__gthread_impl.once) { + if (!__has_gthr_impl(once)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.once(__once, __func); + return __gthr_impl_once(__once, __func);
+} +}
+ +
+int +int
+__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
+{ +{
+ if (!__gthread_impl.key_create) { + if (!__has_gthr_impl(key_create)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.key_create(__key, __dtor); + return __gthr_impl_key_create(__key, __dtor);
+} +}
+ +
+int +int
+__gthread_key_delete (__gthread_key_t __key) +__gthread_key_delete (__gthread_key_t __key)
+{ +{
+ if (!__gthread_impl.key_delete) { + if (!__has_gthr_impl(key_delete)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.key_delete(__key); + return __gthr_impl_key_delete(__key);
+} +}
+ +
+void * +void *
+__gthread_getspecific (__gthread_key_t __key) +__gthread_getspecific (__gthread_key_t __key)
+{ +{
+ if (!__gthread_impl.getspecific) { + if (!__has_gthr_impl(getspecific)) {
+ return NULL; + return NULL;
+ } + }
+ +
+ return __gthread_impl.getspecific(__key); + return __gthr_impl_getspecific(__key);
+} +}
+ +
+int +int
+__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
+{ +{
+ if (!__gthread_impl.setspecific) { + if (!__has_gthr_impl(setspecific)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.setspecific(__key, __ptr); + return __gthr_impl_setspecific(__key, __ptr);
+} +}
+ +
+void +void
+__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +__gthread_mutex_init_function (__gthread_mutex_t *__mutex)
+{ +{
+ if (__gthread_impl.mutex_init_function) { + if (__has_gthr_impl(mutex_init_function)) {
+ __gthread_impl.mutex_init_function(__mutex); + __gthr_impl_mutex_init_function(__mutex);
+ } + }
+} +}
+ +
+int +int
+__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.mutex_destroy) { + if (!__has_gthr_impl(mutex_destroy)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.mutex_destroy(__mutex); + return __gthr_impl_mutex_destroy(__mutex);
+} +}
+ +
+int +int
+__gthread_mutex_lock (__gthread_mutex_t *__mutex) +__gthread_mutex_lock (__gthread_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.mutex_lock) { + if (!__has_gthr_impl(mutex_lock)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.mutex_lock(__mutex); + return __gthr_impl_mutex_lock(__mutex);
+} +}
+ +
+int +int
+__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.mutex_trylock) { + if (!__has_gthr_impl(mutex_trylock)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.mutex_trylock(__mutex); + return __gthr_impl_mutex_trylock(__mutex);
+} +}
+ +
+int +int
+__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.mutex_unlock) { + if (!__has_gthr_impl(mutex_unlock)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.mutex_unlock(__mutex); + return __gthr_impl_mutex_unlock(__mutex);
+} +}
+ +
+int +int
+__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.recursive_mutex_init_function) { + if (!__has_gthr_impl(recursive_mutex_init_function)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.recursive_mutex_init_function(__mutex); + return __gthr_impl_recursive_mutex_init_function(__mutex);
+} +}
+ +
+int +int
+__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.recursive_mutex_lock) { + if (!__has_gthr_impl(recursive_mutex_lock)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.recursive_mutex_lock(__mutex); + return __gthr_impl_recursive_mutex_lock(__mutex);
+} +}
+ +
+int +int
+__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.recursive_mutex_trylock) { + if (!__has_gthr_impl(recursive_mutex_trylock)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.recursive_mutex_trylock(__mutex); + return __gthr_impl_recursive_mutex_trylock(__mutex);
+} +}
+ +
+int +int
+__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.recursive_mutex_unlock) { + if (!__has_gthr_impl(recursive_mutex_unlock)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.recursive_mutex_unlock(__mutex); + return __gthr_impl_recursive_mutex_unlock(__mutex);
+} +}
+ +
+int +int
+__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.recursive_mutex_destroy) { + if (!__has_gthr_impl(recursive_mutex_destroy)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.recursive_mutex_destroy(__mutex); + return __gthr_impl_recursive_mutex_destroy(__mutex);
+} +}
+ +
+void +void
+__gthread_cond_init_function (__gthread_cond_t *__cond) +__gthread_cond_init_function (__gthread_cond_t *__cond)
+{ +{
+ if (__gthread_impl.cond_init_function) { + if (__has_gthr_impl(cond_init_function)) {
+ __gthread_impl.cond_init_function(__cond); + __gthr_impl_cond_init_function(__cond);
+ } + }
+} +}
+ +
+int +int
+__gthread_cond_broadcast (__gthread_cond_t *__cond) +__gthread_cond_broadcast (__gthread_cond_t *__cond)
+{ +{
+ if (!__gthread_impl.cond_broadcast) { + if (!__has_gthr_impl(cond_broadcast)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.cond_broadcast(__cond); + return __gthr_impl_cond_broadcast(__cond);
+} +}
+ +
+int +int
+__gthread_cond_signal (__gthread_cond_t *__cond) +__gthread_cond_signal (__gthread_cond_t *__cond)
+{ +{
+ if (!__gthread_impl.cond_signal) { + if (!__has_gthr_impl(cond_signal)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.cond_signal(__cond); + return __gthr_impl_cond_signal(__cond);
+} +}
+ +
+int +int
+__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.cond_wait) { + if (!__has_gthr_impl(cond_wait)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.cond_wait(__cond, __mutex); + return __gthr_impl_cond_wait(__cond, __mutex);
+} +}
+ +
+int +int
+__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout) + const __gthread_time_t *__abs_timeout)
+{ +{
+ if (!__gthread_impl.cond_timedwait) { + if (!__has_gthr_impl(cond_timedwait)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.cond_timedwait(__cond, __mutex, __abs_timeout); + return __gthr_impl_cond_timedwait(__cond, __mutex, __abs_timeout);
+} +}
+ +
+int +int
+__gthread_cond_wait_recursive (__gthread_cond_t *__cond, +__gthread_cond_wait_recursive (__gthread_cond_t *__cond,
+ __gthread_recursive_mutex_t *__mutex) + __gthread_recursive_mutex_t *__mutex)
+{ +{
+ if (!__gthread_impl.cond_wait_recursive) { + if (!__has_gthr_impl(cond_wait_recursive)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.cond_wait_recursive(__cond, __mutex); + return __gthr_impl_cond_wait_recursive(__cond, __mutex);
+} +}
+ +
+int +int
+__gthread_cond_destroy (__gthread_cond_t* __cond) +__gthread_cond_destroy (__gthread_cond_t* __cond)
+{ +{
+ if (!__gthread_impl.cond_destroy) { + if (!__has_gthr_impl(cond_destroy)) {
+ return -1; + return -1;
+ } + }
+ +
+ return __gthread_impl.cond_destroy(__cond); + return __gthr_impl_cond_destroy(__cond);
+} +}
diff --git a/libgcc/config/rs6000/gthr-dkp.h b/libgcc/config/rs6000/gthr-dkp.h diff -NBaur gcc-12.1.0/libgcc/config/rs6000/gthr-dkp.h gcc-12.1.0-dkppc/libgcc/config/rs6000/gthr-dkp.h
new file mode 100644 --- gcc-12.1.0/libgcc/config/rs6000/gthr-dkp.h 1970-01-01 01:00:00.000000000 +0100
index 0000000..281c19d +++ gcc-12.1.0-dkppc/libgcc/config/rs6000/gthr-dkp.h 2022-05-06 19:17:44.792941894 +0100
--- /dev/null @@ -0,0 +1,187 @@
+++ b/libgcc/config/rs6000/gthr-dkp.h
@@ -0,0 +1,185 @@
+/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Threads compatibility routines for libgcc2 and libobjc. */
+/* Compile this one with gcc. */ +/* Compile this one with gcc. */
+/* Copyright (C) 1997-2016 Free Software Foundation, Inc. +/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
@@ -753,42 +681,44 @@ index 0000000..281c19d
+#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function
+#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
+ +
+typedef struct { +#ifdef _BUILDING_LIBGCC
+ int (*active) (void); +#define __GTHR_IMPL(_name) __attribute__((weak)) __gthr_impl_##_name
+ int (*create) (__gthread_t *__threadid, void *(*__func) (void*), +#define __has_gthr_impl(_name) (&__gthr_impl_##_name)
+ void *__args); +#else
+ int (*join) (__gthread_t __threadid, void **__value_ptr); +#define __GTHR_IMPL(_name) __gthr_impl_##_name
+ int (*detach) (__gthread_t __threadid); +#endif
+ int (*equal) (__gthread_t __t1, __gthread_t __t2);
+ __gthread_t (*self) (void);
+ int (*yield) (void);
+ int (*once) (__gthread_once_t *__once, void (*__func) (void));
+ int (*key_create) (__gthread_key_t *__key, void (*__dtor) (void *));
+ int (*key_delete) (__gthread_key_t __key);
+ void * (*getspecific) (__gthread_key_t __key);
+ int (*setspecific) (__gthread_key_t __key, const void *__ptr);
+ void (*mutex_init_function) (__gthread_mutex_t *__mutex);
+ int (*mutex_destroy) (__gthread_mutex_t *__mutex);
+ int (*mutex_lock) (__gthread_mutex_t *__mutex);
+ int (*mutex_trylock) (__gthread_mutex_t *__mutex);
+ int (*mutex_unlock) (__gthread_mutex_t *__mutex);
+ int (*recursive_mutex_init_function) (__gthread_recursive_mutex_t *__mutex);
+ int (*recursive_mutex_lock) (__gthread_recursive_mutex_t *__mutex);
+ int (*recursive_mutex_trylock) (__gthread_recursive_mutex_t *__mutex);
+ int (*recursive_mutex_unlock) (__gthread_recursive_mutex_t *__mutex);
+ int (*recursive_mutex_destroy) (__gthread_recursive_mutex_t *__mutex);
+ void (*cond_init_function) (__gthread_cond_t *__cond);
+ int (*cond_broadcast) (__gthread_cond_t *__cond);
+ int (*cond_signal) (__gthread_cond_t *__cond);
+ int (*cond_wait) (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex);
+ int (*cond_timedwait) (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout);
+ int (*cond_wait_recursive) (__gthread_cond_t *__cond,
+ __gthread_recursive_mutex_t *__mutex);
+ int (*cond_destroy) (__gthread_cond_t* __cond);
+} __gthread_impl_t;
+ +
+extern __gthread_impl_t __gthread_impl; +int __GTHR_IMPL(active) (void);
+int __GTHR_IMPL(create) (__gthread_t *__threadid, void *(*__func) (void*), void *__args);
+int __GTHR_IMPL(join) (__gthread_t __threadid, void **__value_ptr);
+int __GTHR_IMPL(detach) (__gthread_t __threadid);
+int __GTHR_IMPL(equal) (__gthread_t __t1, __gthread_t __t2);
+__gthread_t __GTHR_IMPL(self) (void);
+int __GTHR_IMPL(yield) (void);
+int __GTHR_IMPL(once) (__gthread_once_t *__once, void (*__func) (void));
+int __GTHR_IMPL(key_create) (__gthread_key_t *__key, void (*__dtor) (void *));
+int __GTHR_IMPL(key_delete) (__gthread_key_t __key);
+void * __GTHR_IMPL(getspecific) (__gthread_key_t __key);
+int __GTHR_IMPL(setspecific) (__gthread_key_t __key, const void *__ptr);
+void __GTHR_IMPL(mutex_init_function) (__gthread_mutex_t *__mutex);
+int __GTHR_IMPL(mutex_destroy) (__gthread_mutex_t *__mutex);
+int __GTHR_IMPL(mutex_lock) (__gthread_mutex_t *__mutex);
+int __GTHR_IMPL(mutex_trylock) (__gthread_mutex_t *__mutex);
+int __GTHR_IMPL(mutex_unlock) (__gthread_mutex_t *__mutex);
+int __GTHR_IMPL(recursive_mutex_init_function) (__gthread_recursive_mutex_t *__mutex);
+int __GTHR_IMPL(recursive_mutex_lock) (__gthread_recursive_mutex_t *__mutex);
+int __GTHR_IMPL(recursive_mutex_trylock) (__gthread_recursive_mutex_t *__mutex);
+int __GTHR_IMPL(recursive_mutex_unlock) (__gthread_recursive_mutex_t *__mutex);
+int __GTHR_IMPL(recursive_mutex_destroy) (__gthread_recursive_mutex_t *__mutex);
+void __GTHR_IMPL(cond_init_function) (__gthread_cond_t *__cond);
+int __GTHR_IMPL(cond_broadcast) (__gthread_cond_t *__cond);
+int __GTHR_IMPL(cond_signal) (__gthread_cond_t *__cond);
+int __GTHR_IMPL(cond_wait) (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex);
+int __GTHR_IMPL(cond_timedwait) (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
+ const __gthread_time_t *__abs_timeout);
+int __GTHR_IMPL(cond_wait_recursive) (__gthread_cond_t *__cond,
+ __gthread_recursive_mutex_t *__mutex);
+int __GTHR_IMPL(cond_destroy) (__gthread_cond_t* __cond);
+ +
+int +int
+__gthread_active_p (void); +__gthread_active_p (void);
@@ -885,49 +815,46 @@ index 0000000..281c19d
+#endif +#endif
+ +
+#endif /* ! _GLIBCXX_GCC_GTHR_DKP_H */ +#endif /* ! _GLIBCXX_GCC_GTHR_DKP_H */
diff --git a/libgcc/config/rs6000/t-ppccomm b/libgcc/config/rs6000/t-ppccomm diff -NBaur gcc-12.1.0/libgcc/config/rs6000/t-ppccomm gcc-12.1.0-dkppc/libgcc/config/rs6000/t-ppccomm
index fb812d3..7f6669d 100644 --- gcc-12.1.0/libgcc/config/rs6000/t-ppccomm 2022-05-06 08:30:59.000000000 +0100
--- a/libgcc/config/rs6000/t-ppccomm +++ gcc-12.1.0-dkppc/libgcc/config/rs6000/t-ppccomm 2022-05-06 19:17:44.792941894 +0100
+++ b/libgcc/config/rs6000/t-ppccomm
@@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
LIB2ADD += $(srcdir)/config/rs6000/ibm-ldouble.c \ LIB2ADD += $(srcdir)/config/rs6000/ibm-ldouble.c \
+ $(srcdir)/config/rs6000/gthr-dkp.c \ + $(srcdir)/config/rs6000/gthr-dkp.c \
$(srcdir)/config/rs6000/tramp.S $(srcdir)/config/rs6000/tramp.S
# This can't end up in shared libgcc # This can't end up in shared libgcc
diff --git a/libgcc/configure b/libgcc/configure diff -NBaur gcc-12.1.0/libgcc/configure gcc-12.1.0-dkppc/libgcc/configure
index b2f3f87..c6f93f8 100644 --- gcc-12.1.0/libgcc/configure 2022-05-06 08:30:59.000000000 +0100
--- a/libgcc/configure +++ gcc-12.1.0-dkppc/libgcc/configure 2022-05-06 19:17:44.792941894 +0100
+++ b/libgcc/configure @@ -5689,6 +5689,7 @@
@@ -5442,6 +5442,7 @@ tm_file="${tm_file_}"
case $target_thread_file in case $target_thread_file in
aix) thread_header=config/rs6000/gthr-aix.h ;; aix) thread_header=config/rs6000/gthr-aix.h ;;
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
dce) thread_header=config/pa/gthr-dce.h ;; dce) thread_header=config/pa/gthr-dce.h ;;
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
gcn) thread_header=config/gcn/gthr-gcn.h ;;
lynx) thread_header=config/gthr-lynx.h ;; lynx) thread_header=config/gthr-lynx.h ;;
mipssde) thread_header=config/mips/gthr-mipssde.h ;; mipssde) thread_header=config/mips/gthr-mipssde.h ;;
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c diff -NBaur gcc-12.1.0/libgcc/crtstuff.c gcc-12.1.0-dkppc/libgcc/crtstuff.c
index 5e89445..f234745 100644 --- gcc-12.1.0/libgcc/crtstuff.c 2022-05-06 08:30:59.000000000 +0100
--- a/libgcc/crtstuff.c +++ gcc-12.1.0-dkppc/libgcc/crtstuff.c 2022-05-06 19:17:44.792941894 +0100
+++ b/libgcc/crtstuff.c @@ -325,7 +325,7 @@
@@ -47,6 +47,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Target machine header files require this define. */ #ifdef OBJECT_FORMAT_ELF
#define IN_LIBGCC2
+#define USED_FOR_TARGET
/* FIXME: Including auto-host is incorrect, but until we have
identified the set of defines that need to go into auto-target.h,
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 5535bfa..9f86d5d 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -15180,6 +15180,7 @@ $as_echo "$target_thread_file" >&6; }
-#if DEFAULT_USE_CXA_ATEXIT
+#if 1 /* DEFAULT_USE_CXA_ATEXIT */
/* Declare the __dso_handle variable. It should have a unique value
in every shared-object; in a main program its value is zero. The
object should in any case be protected. This means the instance
diff -NBaur gcc-12.1.0/libstdc++-v3/configure gcc-12.1.0-dkppc/libstdc++-v3/configure
--- gcc-12.1.0/libstdc++-v3/configure 2022-05-06 08:31:00.000000000 +0100
+++ gcc-12.1.0-dkppc/libstdc++-v3/configure 2022-05-06 19:17:44.801106712 +0100
@@ -15765,6 +15765,7 @@
case $target_thread_file in case $target_thread_file in
aix) thread_header=config/rs6000/gthr-aix.h ;; aix) thread_header=config/rs6000/gthr-aix.h ;;
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
dce) thread_header=config/pa/gthr-dce.h ;; dce) thread_header=config/pa/gthr-dce.h ;;
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
gcn) thread_header=config/gcn/gthr-gcn.h ;;
lynx) thread_header=config/gthr-lynx.h ;; lynx) thread_header=config/gthr-lynx.h ;;
mipssde) thread_header=config/mips/gthr-mipssde.h ;; mipssde) thread_header=config/mips/gthr-mipssde.h ;;

View File

@@ -1,60 +0,0 @@
diff -NBaur gdb-8.2.1/gdb/dtrace-probe.c gdb-8.2.1-apple/gdb/dtrace-probe.c
--- gdb-8.2.1/gdb/dtrace-probe.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/dtrace-probe.c 2019-02-19 17:30:16.449175937 +0000
@@ -100,7 +100,7 @@
/* DTrace static_probe_ops. */
-const dtrace_static_probe_ops dtrace_static_probe_ops;
+const dtrace_static_probe_ops dtrace_static_probe_ops = {};
/* The following structure represents a dtrace probe. */
diff -NBaur gdb-8.2.1/gdb/probe.c gdb-8.2.1-apple/gdb/probe.c
--- gdb-8.2.1/gdb/probe.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/probe.c 2019-02-19 17:31:05.266578008 +0000
@@ -60,7 +60,7 @@
/* Static operations associated with a generic probe. */
-const any_static_probe_ops any_static_probe_ops;
+const any_static_probe_ops any_static_probe_ops = {};
/* A helper for parse_probes that decodes a probe specification in
SEARCH_PSPACE. It appends matching SALs to RESULT. */
diff -NBaur gdb-8.2.1/gdb/record-btrace.c gdb-8.2.1-apple/gdb/record-btrace.c
--- gdb-8.2.1/gdb/record-btrace.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/record-btrace.c 2019-02-19 17:31:33.301731324 +0000
@@ -144,7 +144,7 @@
/* Token associated with a new-thread observer enabling branch tracing
for the new thread. */
-static const gdb::observers::token record_btrace_thread_observer_token;
+static const gdb::observers::token record_btrace_thread_observer_token = {};
/* Memory access types used in set/show record btrace replay-memory-access. */
static const char replay_memory_access_read_only[] = "read-only";
diff -NBaur gdb-8.2.1/gdb/stap-probe.c gdb-8.2.1-apple/gdb/stap-probe.c
--- gdb-8.2.1/gdb/stap-probe.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/stap-probe.c 2019-02-19 17:29:35.744567941 +0000
@@ -119,7 +119,7 @@
/* SystemTap static_probe_ops. */
-const stap_static_probe_ops stap_static_probe_ops;
+const stap_static_probe_ops stap_static_probe_ops = {};
class stap_probe : public probe
{
diff -NBaur gdb-8.2.1/gdb/tui/tui-hooks.c gdb-8.2.1-apple/gdb/tui/tui-hooks.c
--- gdb-8.2.1/gdb/tui/tui-hooks.c 2018-12-23 05:51:54.000000000 +0000
+++ gdb-8.2.1-apple/gdb/tui/tui-hooks.c 2019-02-19 17:28:53.178460364 +0000
@@ -205,7 +205,7 @@
/* Token associated with observers registered while TUI hooks are
installed. */
-static const gdb::observers::token tui_observers_token;
+static const gdb::observers::token tui_observers_token = {};
/* Attach or detach a single observer, according to ATTACH. */

View File

@@ -1,8 +1,8 @@
diff --git a/libgloss/configure b/libgloss/configure diff --git a/libgloss/configure b/libgloss/configure
index 1a4033dce..ba7aea7b0 100755 index e70c57d89..ac5c745f9 100755
--- a/libgloss/configure --- a/libgloss/configure
+++ b/libgloss/configure +++ b/libgloss/configure
@@ -2599,6 +2599,8 @@ if test "${config_libnosys}" = "true"; then @@ -2787,6 +2787,8 @@ if test "${config_libnosys}" = "true"; then
fi fi
@@ -11,12 +11,12 @@ index 1a4033dce..ba7aea7b0 100755
DEPDIR="${am__leading_dot}deps" DEPDIR="${am__leading_dot}deps"
ac_config_commands="$ac_config_commands depfiles" ac_config_commands="$ac_config_commands depfiles"
diff --git a/libgloss/configure.in b/libgloss/configure.in diff --git a/libgloss/configure.ac b/libgloss/configure.ac
index 41843eed1..689e8b3ad 100644 index 0fbe99526..42ea1d2ed 100644
--- a/libgloss/configure.in --- a/libgloss/configure.ac
+++ b/libgloss/configure.in +++ b/libgloss/configure.ac
@@ -2,6 +2,7 @@ dnl Process this file with autoconf to produce a configure script. @@ -2,6 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59) AC_PREREQ(2.69)dnl
AC_INIT([libgloss],[LIBGLOSS_VERSION]) AC_INIT([libgloss],[LIBGLOSS_VERSION])
AC_CONFIG_SRCDIR([libnosys]) AC_CONFIG_SRCDIR([libnosys])
+AC_CONFIG_SRCDIR([libsysbase]) +AC_CONFIG_SRCDIR([libsysbase])
@@ -33,7 +33,7 @@ index 41843eed1..689e8b3ad 100644
case "${target}" in case "${target}" in
aarch64*-*-*) aarch64*-*-*)
AC_CONFIG_SUBDIRS(aarch64) AC_CONFIG_SUBDIRS(aarch64)
@@ -191,6 +195,10 @@ if test "${config_libnosys}" = "true"; then @@ -197,6 +201,10 @@ if test "${config_libnosys}" = "true"; then
AC_CONFIG_SUBDIRS([libnosys]) AC_CONFIG_SUBDIRS([libnosys])
fi fi
@@ -46,7 +46,7 @@ index 41843eed1..689e8b3ad 100644
AC_SUBST(AS) AC_SUBST(AS)
diff --git a/libgloss/libsysbase/Makefile.in b/libgloss/libsysbase/Makefile.in diff --git a/libgloss/libsysbase/Makefile.in b/libgloss/libsysbase/Makefile.in
new file mode 100644 new file mode 100644
index 000000000..183f9acc7 index 000000000..bd69599a8
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/Makefile.in +++ b/libgloss/libsysbase/Makefile.in
@@ -0,0 +1,148 @@ @@ -0,0 +1,148 @@
@@ -121,8 +121,8 @@ index 000000000..183f9acc7
+ isatty.o kill.o link.o lseek.o lstat.o nanosleep.o open.o read.o sbrk.o sleep.o stat.o usleep.o times.o \ + isatty.o kill.o link.o lseek.o lstat.o nanosleep.o open.o read.o sbrk.o sleep.o stat.o usleep.o times.o \
+ unlink.o wait.o write.o _exit.o malloc_vars.o \ + unlink.o wait.o write.o _exit.o malloc_vars.o \
+ chdir.o mkdir.o rename.o build_argv.o statvfs.o \ + chdir.o mkdir.o rename.o build_argv.o statvfs.o \
+ flock.o syscall_support.o handle_manager.o truncate.o ftruncate.o dirent.o fsync.o \ + flock.o handle_manager.o truncate.o ftruncate.o dirent.o fsync.o \
+ fchmod.o chmod.o rmdir.o utime.o scandir.o + fchmod.o chmod.o rmdir.o utime.o scandir.o syscall_support.o
+ +
+# Object files specific to particular targets. +# Object files specific to particular targets.
+EVALOBJS = ${OBJS} +EVALOBJS = ${OBJS}
@@ -143,10 +143,10 @@ index 000000000..183f9acc7
+AR_FLAGS = qc +AR_FLAGS = qc
+ +
+.c.o: +.c.o:
+ $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $< + $(CC) $(CFLAGS_FOR_TARGET) -D_BUILDING_LIBSYSBASE -O2 $(INCLUDES) -c $(CFLAGS) $<
+ +
+.C.o: +.C.o:
+ $(CC) $(CFLAGS_FOR_TARGET) -O2 $(INCLUDES) -c $(CFLAGS) $< + $(CC) $(CFLAGS_FOR_TARGET) -D_BUILDING_LIBSYSBASE -O2 $(INCLUDES) -c $(CFLAGS) $<
+.s.o: +.s.o:
+ $(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $< + $(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $<
+ +
@@ -200,7 +200,7 @@ index 000000000..183f9acc7
+ $(SHELL) config.status --recheck + $(SHELL) config.status --recheck
diff --git a/libgloss/libsysbase/_exit.c b/libgloss/libsysbase/_exit.c diff --git a/libgloss/libsysbase/_exit.c b/libgloss/libsysbase/_exit.c
new file mode 100644 new file mode 100644
index 000000000..e5cb5a9ed index 000000000..6effb1105
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/_exit.c +++ b/libgloss/libsysbase/_exit.c
@@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
@@ -215,8 +215,8 @@ index 000000000..e5cb5a9ed
+void _exit(int rc) +void _exit(int rc)
+{ +{
+ +
+ if ( __syscalls.exit ) { + if ( __has_syscall(exit) ) {
+ __syscalls.exit(rc); + __syscall_exit(rc);
+ } + }
+ +
+ while(1); + while(1);
@@ -622,10 +622,10 @@ index 000000000..b6cdfaeb8
+m4_include([../acinclude.m4]) +m4_include([../acinclude.m4])
diff --git a/libgloss/libsysbase/build_argv.c b/libgloss/libsysbase/build_argv.c diff --git a/libgloss/libsysbase/build_argv.c b/libgloss/libsysbase/build_argv.c
new file mode 100644 new file mode 100644
index 000000000..3ca95d5b6 index 000000000..a969a0482
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/build_argv.c +++ b/libgloss/libsysbase/build_argv.c
@@ -0,0 +1,31 @@ @@ -0,0 +1,32 @@
+struct __argv { +struct __argv {
+ int argvMagic; + int argvMagic;
+ char *commandLine; + char *commandLine;
@@ -652,10 +652,11 @@ index 000000000..3ca95d5b6
+ } while (data < end); + } while (data < end);
+ +
+ *end = '\0'; // Force NULL terminator for last arg + *end = '\0'; // Force NULL terminator for last arg
+ argv[argCount] = 0; // Force NULL terminator for argv
+ +
+ argstruct->argv = argv; + argstruct->argv = argv;
+ argstruct->argc = argCount; + argstruct->argc = argCount;
+ argstruct->endARGV = &argv[argCount]; + argstruct->endARGV = &argv[argCount + 1];
+} +}
diff --git a/libgloss/libsysbase/chdir.c b/libgloss/libsysbase/chdir.c diff --git a/libgloss/libsysbase/chdir.c b/libgloss/libsysbase/chdir.c
new file mode 100644 new file mode 100644
@@ -902,7 +903,7 @@ index 000000000..3668b5801
+ +
diff --git a/libgloss/libsysbase/clocks.c b/libgloss/libsysbase/clocks.c diff --git a/libgloss/libsysbase/clocks.c b/libgloss/libsysbase/clocks.c
new file mode 100644 new file mode 100644
index 000000000..01cfee469 index 000000000..b36b5c079
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/clocks.c +++ b/libgloss/libsysbase/clocks.c
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
@@ -912,8 +913,8 @@ index 000000000..01cfee469
+ +
+int clock_gettime(clockid_t clock_id, struct timespec *tp) +int clock_gettime(clockid_t clock_id, struct timespec *tp)
+{ +{
+ if ( __syscalls.clock_gettime ) { + if ( __has_syscall(clock_gettime) ) {
+ return __syscalls.clock_gettime(clock_id, tp); + return __syscall_clock_gettime(clock_id, tp);
+ } else { + } else {
+ errno = ENOSYS; + errno = ENOSYS;
+ return -1; + return -1;
@@ -922,8 +923,8 @@ index 000000000..01cfee469
+ +
+int clock_settime(clockid_t clock_id, const struct timespec *tp) +int clock_settime(clockid_t clock_id, const struct timespec *tp)
+{ +{
+ if ( __syscalls.clock_settime ) { + if ( __has_syscall(clock_settime) ) {
+ return __syscalls.clock_settime(clock_id, tp); + return __syscall_clock_settime(clock_id, tp);
+ } else { + } else {
+ errno = ENOSYS; + errno = ENOSYS;
+ return -1; + return -1;
@@ -932,8 +933,8 @@ index 000000000..01cfee469
+ +
+int clock_getres (clockid_t clock_id, struct timespec *res) +int clock_getres (clockid_t clock_id, struct timespec *res)
+{ +{
+ if ( __syscalls.clock_getres ) { + if ( __has_syscall(clock_getres) ) {
+ return __syscalls.clock_getres(clock_id, res); + return __syscall_clock_getres(clock_id, res);
+ } else { + } else {
+ errno = ENOSYS; + errno = ENOSYS;
+ return -1; + return -1;
@@ -5937,7 +5938,7 @@ index 000000000..ec3b84037
+ +
diff --git a/libgloss/libsysbase/gettod.c b/libgloss/libsysbase/gettod.c diff --git a/libgloss/libsysbase/gettod.c b/libgloss/libsysbase/gettod.c
new file mode 100644 new file mode 100644
index 000000000..11dc528fa index 000000000..ee8947f51
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/gettod.c +++ b/libgloss/libsysbase/gettod.c
@@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
@@ -5960,7 +5961,7 @@ index 000000000..11dc528fa
+ struct _reent *ptr = _REENT; + struct _reent *ptr = _REENT;
+#endif +#endif
+ +
+ if ( __syscalls.gettod_r ) return __syscalls.gettod_r(ptr, ptimeval, ptimezone); + if ( __has_syscall(gettod_r) ) return __syscall_gettod_r(ptr, ptimeval, ptimezone);
+ +
+ ptr->_errno = ENOSYS; + ptr->_errno = ENOSYS;
+ return -1; + return -1;
@@ -6517,7 +6518,7 @@ index 000000000..b4fcbd3d7
+} +}
diff --git a/libgloss/libsysbase/nanosleep.c b/libgloss/libsysbase/nanosleep.c diff --git a/libgloss/libsysbase/nanosleep.c b/libgloss/libsysbase/nanosleep.c
new file mode 100644 new file mode 100644
index 000000000..3c96fc61b index 000000000..a233b9df6
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/nanosleep.c +++ b/libgloss/libsysbase/nanosleep.c
@@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
@@ -6527,8 +6528,8 @@ index 000000000..3c96fc61b
+ +
+int nanosleep(const struct timespec *req, struct timespec *rem) +int nanosleep(const struct timespec *req, struct timespec *rem)
+{ +{
+ if ( __syscalls.nanosleep ) { + if ( __has_syscall(nanosleep) ) {
+ return __syscalls.nanosleep(req, rem); + return __syscall_nanosleep(req, rem);
+ } else { + } else {
+ *rem = *req; + *rem = *req;
+ errno = ENOSYS; + errno = ENOSYS;
@@ -6679,10 +6680,10 @@ index 000000000..1d7b7e8e7
+} +}
diff --git a/libgloss/libsysbase/rmdir.c b/libgloss/libsysbase/rmdir.c diff --git a/libgloss/libsysbase/rmdir.c b/libgloss/libsysbase/rmdir.c
new file mode 100644 new file mode 100644
index 000000000..2692a2997 index 000000000..b8640b87d
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/rmdir.c +++ b/libgloss/libsysbase/rmdir.c
@@ -0,0 +1,25 @@ @@ -0,0 +1,34 @@
+#include "config.h" +#include "config.h"
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -6690,27 +6691,36 @@ index 000000000..2692a2997
+#include <errno.h> +#include <errno.h>
+#include <sys/iosupport.h> +#include <sys/iosupport.h>
+ +
+int rmdir (const char *name) { +int _rmdir_r (struct _reent *ptr, const char *name) {
+ struct _reent *r = _REENT;
+ int dev,ret=-1; + int dev,ret=-1;
+ +
+ dev = FindDevice(name); + dev = FindDevice(name);
+ if(dev!=-1) { + if(dev!=-1) {
+ if(devoptab_list[dev]->rmdir_r) { + if(devoptab_list[dev]->rmdir_r) {
+ r->deviceData = devoptab_list[dev]->deviceData; + ptr->deviceData = devoptab_list[dev]->deviceData;
+ ret = devoptab_list[dev]->rmdir_r(r,name); + ret = devoptab_list[dev]->rmdir_r(ptr,name);
+ } else { + } else {
+ r->_errno = ENOSYS; + ptr->_errno = ENOSYS;
+ } + }
+ } else { + } else {
+ r->_errno = ENODEV; + ptr->_errno = ENODEV;
+ } + }
+ +
+ return ret; + return ret;
+} +}
+
+#ifndef _REENT_ONLY
+
+int
+rmdir (const char *filename)
+{
+ return _rmdir_r (_REENT, filename);
+}
+
+#endif
diff --git a/libgloss/libsysbase/sbrk.c b/libgloss/libsysbase/sbrk.c diff --git a/libgloss/libsysbase/sbrk.c b/libgloss/libsysbase/sbrk.c
new file mode 100644 new file mode 100644
index 000000000..e2bdb9edc index 000000000..83d922d85
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/sbrk.c +++ b/libgloss/libsysbase/sbrk.c
@@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
@@ -6730,8 +6740,8 @@ index 000000000..e2bdb9edc
+#endif +#endif
+ +
+ +
+ if ( __syscalls.sbrk_r ) { + if ( __has_syscall(sbrk_r) ) {
+ return __syscalls.sbrk_r(ptr, incr); + return __syscall_sbrk_r(ptr, incr);
+ } else { + } else {
+ +
+ ptr->_errno = ENOMEM; + ptr->_errno = ENOMEM;
@@ -6921,34 +6931,16 @@ index 000000000..84e221340
+} +}
diff --git a/libgloss/libsysbase/syscall_support.c b/libgloss/libsysbase/syscall_support.c diff --git a/libgloss/libsysbase/syscall_support.c b/libgloss/libsysbase/syscall_support.c
new file mode 100644 new file mode 100644
index 000000000..f02714764 index 000000000..39e75fd0b
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/syscall_support.c +++ b/libgloss/libsysbase/syscall_support.c
@@ -0,0 +1,67 @@ @@ -0,0 +1,49 @@
+#include <sys/iosupport.h> +#include <sys/iosupport.h>
+ +
+//---------------------------------------------------------------------------------
+__syscalls_t __syscalls = {
+//---------------------------------------------------------------------------------
+ NULL, // sbrk
+ NULL, // lock_init
+ NULL, // lock_close
+ NULL, // lock_release
+ NULL, // lock_acquire
+ NULL, // malloc_lock
+ NULL, // malloc_unlock
+ NULL, // exit
+ NULL, // gettod_r
+ NULL, // clock_gettime
+ NULL, // clock_settime
+ NULL, // clock_getres
+ NULL // nanosleep
+};
+
+int __libc_lock_init(int *lock,int recursive) { +int __libc_lock_init(int *lock,int recursive) {
+ +
+ if ( __syscalls.lock_init ) { + if ( __has_syscall(lock_init) ) {
+ return __syscalls.lock_init(lock, recursive); + return __syscall_lock_init(lock, recursive);
+ } + }
+ +
+ return 0; + return 0;
@@ -6956,8 +6948,8 @@ index 000000000..f02714764
+ +
+int __libc_lock_close( int *lock ) { +int __libc_lock_close( int *lock ) {
+ +
+ if ( __syscalls.lock_close) { + if ( __has_syscall(lock_close)) {
+ return __syscalls.lock_close(lock); + return __syscall_lock_close(lock);
+ } + }
+ +
+ return 0; + return 0;
@@ -6965,8 +6957,8 @@ index 000000000..f02714764
+ +
+int __libc_lock_release( int *lock ) { +int __libc_lock_release( int *lock ) {
+ +
+ if ( __syscalls.lock_release) { + if ( __has_syscall(lock_release)) {
+ return __syscalls.lock_release(lock); + return __syscall_lock_release(lock);
+ } + }
+ +
+ return 0; + return 0;
@@ -6974,22 +6966,22 @@ index 000000000..f02714764
+ +
+int __libc_lock_acquire( int *lock ) { +int __libc_lock_acquire( int *lock ) {
+ +
+ if ( __syscalls.lock_acquire) { + if ( __has_syscall(lock_acquire)) {
+ return __syscalls.lock_acquire(lock); + return __syscall_lock_acquire(lock);
+ } + }
+ +
+ return 0; + return 0;
+} +}
+ +
+void __malloc_lock( struct _reent *ptr ) { +void __malloc_lock( struct _reent *ptr ) {
+ if ( __syscalls.malloc_lock) { + if ( __has_syscall(malloc_lock) ){
+ __syscalls.malloc_lock(ptr); + __syscall_malloc_lock(ptr);
+ } + }
+} +}
+ +
+void __malloc_unlock( struct _reent *ptr ) { +void __malloc_unlock( struct _reent *ptr ) {
+ if ( __syscalls.malloc_unlock) { + if ( __has_syscall(malloc_unlock)) {
+ __syscalls.malloc_unlock(ptr); + __syscall_malloc_unlock(ptr);
+ } + }
+} +}
diff --git a/libgloss/libsysbase/times.c b/libgloss/libsysbase/times.c diff --git a/libgloss/libsysbase/times.c b/libgloss/libsysbase/times.c
@@ -7389,15 +7381,16 @@ index 000000000..bd25d775d
+ exit ( main(__system_argv->argc,__system_argv->argv) ); + exit ( main(__system_argv->argc,__system_argv->argv) );
+} +}
diff --git a/newlib/configure.host b/newlib/configure.host diff --git a/newlib/configure.host b/newlib/configure.host
index 6c49cb750..f30edc1a3 100644 index c429dde1c..350dbc8f0 100644
--- a/newlib/configure.host --- a/newlib/configure.host
+++ b/newlib/configure.host +++ b/newlib/configure.host
@@ -832,7 +832,12 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID @@ -863,7 +863,13 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
default_newlib_io_long_long="yes" default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES" newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
;; ;;
- powerpc*-*-eabi* | \ - powerpc*-*-eabi* | \
+ powerpc*-*-eabi*) + powerpc*-*-eabi*)
+ default_newlib_io_c99_formats="yes"
+ default_newlib_io_long_long="yes" + default_newlib_io_long_long="yes"
+ newlib_cflags="${newlib_cflags} -DREENTRANT_SYSCALLS_PROVIDED -D__DEFAULT_UTF8__" + newlib_cflags="${newlib_cflags} -DREENTRANT_SYSCALLS_PROVIDED -D__DEFAULT_UTF8__"
+ newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections" + newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections"
@@ -7406,6 +7399,44 @@ index 6c49cb750..f30edc1a3 100644
powerpc*-*-elf* | \ powerpc*-*-elf* | \
powerpc*-*-linux* | \ powerpc*-*-linux* | \
powerpc*-*-rtem* | \ powerpc*-*-rtem* | \
diff --git a/newlib/libc/ctype/jp2uc.c b/newlib/libc/ctype/jp2uc.c
index 5e30f09be..1ea357f92 100644
--- a/newlib/libc/ctype/jp2uc.c
+++ b/newlib/libc/ctype/jp2uc.c
@@ -35,7 +35,7 @@
#ifdef _MB_CAPABLE
/* Under Cygwin, the incoming wide character is already given in UTF due
to the requirements of the underlying OS. */
-#ifndef __CYGWIN__
+#if !defined(__CYGWIN__) && !defined(__DEVKITA64__)
#include <_ansi.h>
#include <string.h>
diff --git a/newlib/libc/ctype/local.h b/newlib/libc/ctype/local.h
index 5c293c83d..75ccf89f5 100644
--- a/newlib/libc/ctype/local.h
+++ b/newlib/libc/ctype/local.h
@@ -32,7 +32,7 @@
* for towupper and towlower, the result must be back-transformed
into the respective locale encoding; currently NOT IMPLEMENTED
*/
-#ifdef __CYGWIN__
+#if defined(__CYGWIN__) || defined(__DEVKITA64__)
/* Under Cygwin, wchar_t (or its extension wint_t) is Unicode */
#define _jp2uc(c) (c)
#define _jp2uc_l(c, l) (c)
diff --git a/newlib/libc/include/reent.h b/newlib/libc/include/reent.h
index 23d572cd3..65310c084 100644
--- a/newlib/libc/include/reent.h
+++ b/newlib/libc/include/reent.h
@@ -150,6 +150,7 @@ extern int _mkdir_r (struct _reent *, const char *, int);
extern int _open_r (struct _reent *, const char *, int, int);
extern _ssize_t _read_r (struct _reent *, int, void *, size_t);
extern int _rename_r (struct _reent *, const char *, const char *);
+extern int _rmdir_r (struct _reent *r, const char *name);
extern void *_sbrk_r (struct _reent *, ptrdiff_t);
extern int _stat_r (struct _reent *, const char *, struct stat *);
extern _CLOCK_T_ _times_r (struct _reent *, struct tms *);
diff --git a/newlib/libc/include/sys/dirent.h b/newlib/libc/include/sys/dirent.h diff --git a/newlib/libc/include/sys/dirent.h b/newlib/libc/include/sys/dirent.h
index a3fb5c02c..adb8e1083 100644 index a3fb5c02c..adb8e1083 100644
--- a/newlib/libc/include/sys/dirent.h --- a/newlib/libc/include/sys/dirent.h
@@ -7470,10 +7501,10 @@ index a3fb5c02c..adb8e1083 100644
+ +
+#endif // _dirent_h_ +#endif // _dirent_h_
diff --git a/newlib/libc/include/sys/features.h b/newlib/libc/include/sys/features.h diff --git a/newlib/libc/include/sys/features.h b/newlib/libc/include/sys/features.h
index f28dd071b..96980676d 100644 index 45476ce4a..d76706321 100644
--- a/newlib/libc/include/sys/features.h --- a/newlib/libc/include/sys/features.h
+++ b/newlib/libc/include/sys/features.h +++ b/newlib/libc/include/sys/features.h
@@ -330,6 +330,9 @@ extern "C" { @@ -331,6 +331,9 @@ extern "C" {
# define __SSP_FORTIFY_LEVEL 0 # define __SSP_FORTIFY_LEVEL 0
#endif #endif
@@ -7485,10 +7516,10 @@ index f28dd071b..96980676d 100644
#ifdef __rtems__ #ifdef __rtems__
diff --git a/newlib/libc/include/sys/iosupport.h b/newlib/libc/include/sys/iosupport.h diff --git a/newlib/libc/include/sys/iosupport.h b/newlib/libc/include/sys/iosupport.h
new file mode 100644 new file mode 100644
index 000000000..8b6d8da30 index 000000000..9bec9e473
--- /dev/null --- /dev/null
+++ b/newlib/libc/include/sys/iosupport.h +++ b/newlib/libc/include/sys/iosupport.h
@@ -0,0 +1,108 @@ @@ -0,0 +1,117 @@
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
+#ifndef __iosupp_h__ +#ifndef __iosupp_h__
+#define __iosupp_h__ +#define __iosupp_h__
@@ -7523,6 +7554,7 @@ index 000000000..8b6d8da30
+ void *dirStruct; + void *dirStruct;
+} DIR_ITER; +} DIR_ITER;
+ +
+
+typedef struct { +typedef struct {
+ const char *name; + const char *name;
+ size_t structSize; + size_t structSize;
@@ -7561,23 +7593,31 @@ index 000000000..8b6d8da30
+ +
+extern const devoptab_t *devoptab_list[]; +extern const devoptab_t *devoptab_list[];
+ +
+typedef struct { +#ifdef _BUILDING_LIBSYSBASE
+ void *(*sbrk_r) (struct _reent *ptr, ptrdiff_t incr); +#define __SYSCALL(_name) __attribute__((weak)) __syscall_##_name
+ int (*lock_init) (int *lock,int recursive); +#define __has_syscall(_name) (&__syscall_##_name)
+ int (*lock_close) (int *lock); +#else
+ int (*lock_release) (int *lock); +#define __SYSCALL(_name) __syscall_##_name
+ int (*lock_acquire) (int *lock); +#endif
+ void (*malloc_lock) (struct _reent *ptr);
+ void (*malloc_unlock) (struct _reent *ptr);
+ void (*exit) ( int rc );
+ int (*gettod_r) (struct _reent *ptr, struct timeval *tp, struct timezone *tz);
+ int (*clock_gettime)(clockid_t clock_id, struct timespec *tp);
+ int (*clock_settime)(clockid_t clock_id, const struct timespec *tp);
+ int (*clock_getres)(clockid_t clock_id, struct timespec *res);
+ int (*nanosleep)(const struct timespec *req, struct timespec *rem);
+} __syscalls_t;
+ +
+extern __syscalls_t __syscalls; +void *__SYSCALL(sbrk_r) (struct _reent *ptr, ptrdiff_t incr);
+int __SYSCALL(lock_init) (int *lock,int recursive);
+
+int __SYSCALL(lock_close) (int *lock);
+int __SYSCALL(lock_release) (int *lock);
+int __SYSCALL(lock_acquire) (int *lock);
+void __SYSCALL(malloc_lock) (struct _reent *ptr);
+void __SYSCALL(malloc_unlock) (struct _reent *ptr);
+
+void __SYSCALL(exit)(int rc);
+
+int __SYSCALL(gettod_r)(struct _reent *ptr, struct timeval *tp, struct timezone *tz);
+int __SYSCALL(clock_gettime)(clockid_t clock_id, struct timespec *tp);
+int __SYSCALL(clock_settime)(clockid_t clock_id, const struct timespec *tp);
+int __SYSCALL(clock_getres)(clockid_t clock_id, struct timespec *res);
+int __SYSCALL(nanosleep)(const struct timespec *req, struct timespec *rem);
+
+#undef __SYSCALL
+ +
+int AddDevice( const devoptab_t* device); +int AddDevice( const devoptab_t* device);
+int FindDevice(const char* name); +int FindDevice(const char* name);
@@ -7598,10 +7638,10 @@ index 000000000..8b6d8da30
+#endif // __iosupp_h__ +#endif // __iosupp_h__
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h
index 6e55e1c1f..6e0c1c9cf 100644 index e4e36170e..5b8d06ed6 100644
--- a/newlib/libc/include/sys/reent.h --- a/newlib/libc/include/sys/reent.h
+++ b/newlib/libc/include/sys/reent.h +++ b/newlib/libc/include/sys/reent.h
@@ -416,6 +416,8 @@ struct _reent @@ -421,6 +421,8 @@ struct _reent
__FILE *__sf; /* file descriptors */ __FILE *__sf; /* file descriptors */
struct _misc_reent *_misc; /* strtok, multibyte states */ struct _misc_reent *_misc; /* strtok, multibyte states */
char *_signal_buf; /* strsignal */ char *_signal_buf; /* strsignal */
@@ -7610,7 +7650,7 @@ index 6e55e1c1f..6e0c1c9cf 100644
}; };
#ifdef _REENT_GLOBAL_STDIO_STREAMS #ifdef _REENT_GLOBAL_STDIO_STREAMS
@@ -686,6 +688,7 @@ struct _reent @@ -691,6 +693,7 @@ struct _reent
# ifndef _REENT_GLOBAL_STDIO_STREAMS # ifndef _REENT_GLOBAL_STDIO_STREAMS
__FILE __sf[3]; /* first three file descriptors */ __FILE __sf[3]; /* first three file descriptors */
# endif # endif
@@ -7619,10 +7659,10 @@ index 6e55e1c1f..6e0c1c9cf 100644
#ifdef _REENT_GLOBAL_STDIO_STREAMS #ifdef _REENT_GLOBAL_STDIO_STREAMS
diff --git a/newlib/libc/include/sys/stat.h b/newlib/libc/include/sys/stat.h diff --git a/newlib/libc/include/sys/stat.h b/newlib/libc/include/sys/stat.h
index eee98db64..aed9c1746 100644 index 6525272dd..d24673618 100644
--- a/newlib/libc/include/sys/stat.h --- a/newlib/libc/include/sys/stat.h
+++ b/newlib/libc/include/sys/stat.h +++ b/newlib/libc/include/sys/stat.h
@@ -152,8 +152,9 @@ int mkfifo (const char *__path, mode_t __mode ); @@ -142,8 +142,9 @@ int mkfifo (const char *__path, mode_t __mode );
int stat (const char *__restrict __path, struct stat *__restrict __sbuf ); int stat (const char *__restrict __path, struct stat *__restrict __sbuf );
mode_t umask (mode_t __mask ); mode_t umask (mode_t __mask );
@@ -7676,10 +7716,10 @@ index 000000000..380329d34
+#endif // _SYS_STATVFS_H +#endif // _SYS_STATVFS_H
\ No newline at end of file \ No newline at end of file
diff --git a/newlib/libc/include/sys/syslimits.h b/newlib/libc/include/sys/syslimits.h diff --git a/newlib/libc/include/sys/syslimits.h b/newlib/libc/include/sys/syslimits.h
index ba9dbd667..93ed11a42 100644 index c872d2018..9ccdbc51a 100644
--- a/newlib/libc/include/sys/syslimits.h --- a/newlib/libc/include/sys/syslimits.h
+++ b/newlib/libc/include/sys/syslimits.h +++ b/newlib/libc/include/sys/syslimits.h
@@ -44,12 +44,12 @@ @@ -40,12 +40,12 @@
#define LINK_MAX 32767 /* max file link count */ #define LINK_MAX 32767 /* max file link count */
#define MAX_CANON 255 /* max bytes in term canon input line */ #define MAX_CANON 255 /* max bytes in term canon input line */
#define MAX_INPUT 255 /* max bytes in terminal input */ #define MAX_INPUT 255 /* max bytes in terminal input */
@@ -7721,7 +7761,7 @@ index 5e937f103..635a7a6b8 100644
}; };
#endif #endif
diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c
index 4c343e462..835b3a712 100644 index 968642745..82f68c809 100644
--- a/newlib/libc/locale/locale.c --- a/newlib/libc/locale/locale.c
+++ b/newlib/libc/locale/locale.c +++ b/newlib/libc/locale/locale.c
@@ -166,15 +166,18 @@ No supporting OS subroutines are required. @@ -166,15 +166,18 @@ No supporting OS subroutines are required.
@@ -7815,7 +7855,7 @@ index 4c343e462..835b3a712 100644
#else /* __HAVE_LOCALE_INFO__ */ #else /* __HAVE_LOCALE_INFO__ */
{ {
{ NULL, NULL }, /* LC_ALL */ { NULL, NULL }, /* LC_ALL */
@@ -990,6 +1015,7 @@ __locale_ctype_ptr_l (struct __locale_t *locale) @@ -991,6 +1016,7 @@ __locale_ctype_ptr_l (struct __locale_t *locale)
const char * const char *
__locale_ctype_ptr (void) __locale_ctype_ptr (void)
@@ -7852,10 +7892,10 @@ index a0c80843a..efabdcfc4 100644
/* Only access fixed "C" locale using this function. Fake for !_MB_CAPABLE /* Only access fixed "C" locale using this function. Fake for !_MB_CAPABLE
diff --git a/newlib/libc/machine/powerpc/Makefile.am b/newlib/libc/machine/powerpc/Makefile.am diff --git a/newlib/libc/machine/powerpc/Makefile.am b/newlib/libc/machine/powerpc/Makefile.am
index e86afdf1c..007bd1567 100644 index 577b7f9b3..ce3bb7b53 100644
--- a/newlib/libc/machine/powerpc/Makefile.am --- a/newlib/libc/machine/powerpc/Makefile.am
+++ b/newlib/libc/machine/powerpc/Makefile.am +++ b/newlib/libc/machine/powerpc/Makefile.am
@@ -10,7 +10,7 @@ noinst_LIBRARIES = lib.a @@ -8,7 +8,7 @@ noinst_LIBRARIES = lib.a
AM_CFLAGS = -I $(srcdir)/../../stdio -I $(srcdir)/../../stdlib AM_CFLAGS = -I $(srcdir)/../../stdio -I $(srcdir)/../../stdlib
@@ -7865,19 +7905,19 @@ index e86afdf1c..007bd1567 100644
lib_a_CFLAGS=$(AM_CFLAGS) lib_a_CFLAGS=$(AM_CFLAGS)
lib_a_LIBADD = @extra_objs@ lib_a_LIBADD = @extra_objs@
diff --git a/newlib/libc/machine/powerpc/Makefile.in b/newlib/libc/machine/powerpc/Makefile.in diff --git a/newlib/libc/machine/powerpc/Makefile.in b/newlib/libc/machine/powerpc/Makefile.in
index 73b0cc471..12044cb8a 100644 index 46acda680..892a82288 100644
--- a/newlib/libc/machine/powerpc/Makefile.in --- a/newlib/libc/machine/powerpc/Makefile.in
+++ b/newlib/libc/machine/powerpc/Makefile.in +++ b/newlib/libc/machine/powerpc/Makefile.in
@@ -68,7 +68,7 @@ CONFIG_CLEAN_VPATH_FILES = @@ -74,7 +74,7 @@ AM_V_at = $(am__v_at_@AM_V@)
LIBRARIES = $(noinst_LIBRARIES) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
ARFLAGS = cru am__v_at_0 = @
lib_a_AR = $(AR) $(ARFLAGS) lib_a_AR = $(AR) $(ARFLAGS)
-am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT) -am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT)
+am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT) lib_a-access.$(OBJEXT) +am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT) lib_a-access.$(OBJEXT)
lib_a_OBJECTS = $(am_lib_a_OBJECTS) lib_a_OBJECTS = $(am_lib_a_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@ DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = depcomp =
@@ -196,7 +196,7 @@ INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) @@ -218,7 +218,7 @@ INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
AM_CCASFLAGS = $(INCLUDES) AM_CCASFLAGS = $(INCLUDES)
noinst_LIBRARIES = lib.a noinst_LIBRARIES = lib.a
AM_CFLAGS = -I $(srcdir)/../../stdio -I $(srcdir)/../../stdlib AM_CFLAGS = -I $(srcdir)/../../stdio -I $(srcdir)/../../stdlib
@@ -7886,9 +7926,9 @@ index 73b0cc471..12044cb8a 100644
lib_a_CCASFLAGS = $(AM_CCASFLAGS) lib_a_CCASFLAGS = $(AM_CCASFLAGS)
lib_a_CFLAGS = $(AM_CFLAGS) lib_a_CFLAGS = $(AM_CFLAGS)
lib_a_LIBADD = @extra_objs@ lib_a_LIBADD = @extra_objs@
@@ -280,6 +280,12 @@ lib_a-setjmp.obj: setjmp.S @@ -302,6 +302,12 @@ lib_a-setjmp.obj: setjmp.S
.c.obj: .c.obj:
$(COMPILE) -c `$(CYGPATH_W) '$<'` $(AM_V_CC)$(COMPILE) -c `$(CYGPATH_W) '$<'`
+lib_a-access.o: access.c +lib_a-access.o: access.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-access.o `test -f 'access.c' || echo '$(srcdir)/'`access.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-access.o `test -f 'access.c' || echo '$(srcdir)/'`access.c
@@ -7897,7 +7937,7 @@ index 73b0cc471..12044cb8a 100644
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-access.obj `if test -f 'access.c'; then $(CYGPATH_W) 'access.c'; else $(CYGPATH_W) '$(srcdir)/access.c'; fi` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-access.obj `if test -f 'access.c'; then $(CYGPATH_W) 'access.c'; else $(CYGPATH_W) '$(srcdir)/access.c'; fi`
+ +
lib_a-vfprintf.o: vfprintf.c lib_a-vfprintf.o: vfprintf.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-vfprintf.o `test -f 'vfprintf.c' || echo '$(srcdir)/'`vfprintf.c $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-vfprintf.o `test -f 'vfprintf.c' || echo '$(srcdir)/'`vfprintf.c
diff --git a/newlib/libc/machine/powerpc/access.c b/newlib/libc/machine/powerpc/access.c diff --git a/newlib/libc/machine/powerpc/access.c b/newlib/libc/machine/powerpc/access.c
new file mode 100644 new file mode 100644
@@ -8065,10 +8105,10 @@ index 95f1a7422..c797d2e64 100644
+ +
#endif #endif
diff --git a/newlib/libc/stdio/Makefile.in b/newlib/libc/stdio/Makefile.in diff --git a/newlib/libc/stdio/Makefile.in b/newlib/libc/stdio/Makefile.in
index aa22a0e3a..93e672b6a 100644 index 6d18a4443..01402f4de 100644
--- a/newlib/libc/stdio/Makefile.in --- a/newlib/libc/stdio/Makefile.in
+++ b/newlib/libc/stdio/Makefile.in +++ b/newlib/libc/stdio/Makefile.in
@@ -507,6 +507,7 @@ GENERAL_SOURCES = \ @@ -527,6 +527,7 @@ GENERAL_SOURCES = \
rename.c \ rename.c \
rewind.c \ rewind.c \
rget.c \ rget.c \
@@ -8076,9 +8116,9 @@ index aa22a0e3a..93e672b6a 100644
scanf.c \ scanf.c \
sccl.c \ sccl.c \
setbuf.c \ setbuf.c \
@@ -1176,6 +1177,12 @@ lib_a-rget.o: rget.c @@ -1196,6 +1197,12 @@ lib_a-rget.o: rget.c
lib_a-rget.obj: rget.c lib_a-rget.obj: rget.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rget.obj `if test -f 'rget.c'; then $(CYGPATH_W) 'rget.c'; else $(CYGPATH_W) '$(srcdir)/rget.c'; fi` $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rget.obj `if test -f 'rget.c'; then $(CYGPATH_W) 'rget.c'; else $(CYGPATH_W) '$(srcdir)/rget.c'; fi`
+lib_a-rmdir.o: rmdir.c +lib_a-rmdir.o: rmdir.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rmdir.o `test -f 'rmdir.c' || echo '$(srcdir)/'`rmdir.c + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rmdir.o `test -f 'rmdir.c' || echo '$(srcdir)/'`rmdir.c
@@ -8087,10 +8127,10 @@ index aa22a0e3a..93e672b6a 100644
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rmdir.obj `if test -f 'rmdir.c'; then $(CYGPATH_W) 'rmdir.c'; else $(CYGPATH_W) '$(srcdir)/rmdir.c'; fi` + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-rmdir.obj `if test -f 'rmdir.c'; then $(CYGPATH_W) 'rmdir.c'; else $(CYGPATH_W) '$(srcdir)/rmdir.c'; fi`
+ +
lib_a-scanf.o: scanf.c lib_a-scanf.o: scanf.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-scanf.o `test -f 'scanf.c' || echo '$(srcdir)/'`scanf.c $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-scanf.o `test -f 'scanf.c' || echo '$(srcdir)/'`scanf.c
diff --git a/newlib/libc/stdio/fopen.c b/newlib/libc/stdio/fopen.c diff --git a/newlib/libc/stdio/fopen.c b/newlib/libc/stdio/fopen.c
index 022992b8d..bdf4c7bb0 100644 index 1ac551fed..d293b7b0e 100644
--- a/newlib/libc/stdio/fopen.c --- a/newlib/libc/stdio/fopen.c
+++ b/newlib/libc/stdio/fopen.c +++ b/newlib/libc/stdio/fopen.c
@@ -139,6 +139,9 @@ _fopen_r (struct _reent *ptr, @@ -139,6 +139,9 @@ _fopen_r (struct _reent *ptr,
@@ -8104,73 +8144,80 @@ index 022992b8d..bdf4c7bb0 100644
fp->_flags = flags; fp->_flags = flags;
fp->_cookie = (void *) fp; fp->_cookie = (void *) fp;
diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c
index b358d2b4a..9cab2180e 100644 index df8321461..eee4181cd 100644
--- a/newlib/libc/stdio/fread.c --- a/newlib/libc/stdio/fread.c
+++ b/newlib/libc/stdio/fread.c +++ b/newlib/libc/stdio/fread.c
@@ -225,7 +225,31 @@ _fread_r (struct _reent * ptr, @@ -187,7 +187,6 @@ _fread_r (struct _reent * ptr,
int rc = 0;
/* save fp buffering state */
void *old_base = fp->_bf._base;
- void * old_p = fp->_p;
int old_size = fp->_bf._size;
/* allow __refill to use user's buffer */
fp->_bf._base = (unsigned char *) p;
@@ -197,7 +196,7 @@ _fread_r (struct _reent * ptr,
/* restore fp buffering back to original state */
fp->_bf._base = old_base;
fp->_bf._size = old_size;
- fp->_p = old_p;
+ fp->_p = old_base;
resid -= fp->_r;
p += fp->_r;
fp->_r = 0;
@@ -225,7 +224,29 @@ _fread_r (struct _reent * ptr,
/* fp->_r = 0 ... done in __srefill */ /* fp->_r = 0 ... done in __srefill */
p += r; p += r;
resid -= r; resid -= r;
- if (__srefill_r (ptr, fp)) - if (__srefill_r (ptr, fp))
+ int rc = 0; + int rc = 0;
+ +
+ if (resid>BUFSIZ) + if (resid>fp->_bf._size)
+ { + {
+ /* save fp buffering state */ + /* save fp buffering state */
+ void *old_base = fp->_bf._base; + void *old_base = fp->_bf._base;
+ void * old_p = fp->_p;
+ int old_size = fp->_bf._size; + int old_size = fp->_bf._size;
+ /* allow __refill to use user's buffer */ + /* allow __refill to use user's buffer */
+ fp->_bf._base = (unsigned char *) p; + fp->_bf._base = (unsigned char *) p;
+ fp->_bf._size = resid; + fp->_bf._size = resid - old_size;
+ fp->_p = (unsigned char *) p; + fp->_p = (unsigned char *) p;
+ rc = __srefill_r (ptr, fp); + rc = __srefill_r (ptr, fp);
+ /* restore fp buffering back to original state */ + /* restore fp buffering back to original state */
+ fp->_bf._base = old_base; + fp->_bf._base = old_base;
+ fp->_bf._size = old_size; + fp->_bf._size = old_size;
+ fp->_p = old_p; + fp->_p = old_base;
+ resid -= fp->_r; + resid -= fp->_r;
+ p += fp->_r; + p += fp->_r;
+ fp->_r = 0; + //fp->_r = 0;
+
+ } else {
+ rc = __srefill_r (ptr, fp);
+ } + }
+ if (rc) + rc = __srefill_r (ptr, fp);
+
+ if (rc)
{ {
/* no more input: return partial result */ /* no more input: return partial result */
#ifdef __SCLE #ifdef __SCLE
diff --git a/newlib/libc/stdlib/aligned_alloc.c b/newlib/libc/stdlib/aligned_alloc.c diff --git a/newlib/libc/stdio/remove.c b/newlib/libc/stdio/remove.c
index 88413ce86..24029a6f7 100644 index d8dfdbd82..a85b5a99b 100644
--- a/newlib/libc/stdlib/aligned_alloc.c --- a/newlib/libc/stdio/remove.c
+++ b/newlib/libc/stdlib/aligned_alloc.c +++ b/newlib/libc/stdio/remove.c
@@ -1,5 +1,5 @@ @@ -57,13 +57,17 @@ Supporting OS subroutine required: <<unlink>>.
/*- #include <_ansi.h>
- * Copyright (c) 2015 embedded brains GmbH #include <reent.h>
+ * Copyright (c) 2018 Dave Murphy #include <stdio.h>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,14 +25,15 @@
*/
#include <stdlib.h>
+#include <malloc.h>
+#include <errno.h> +#include <errno.h>
void * int
aligned_alloc(size_t alignment, size_t size) _remove_r (struct _reent *ptr,
const char *filename)
{ {
- void *p; - if (_unlink_r (ptr, filename) == -1)
- int error; - return -1;
+ if ((alignment !=0) && !(alignment & (alignment - 1 )) && !(size & (alignment - 1))) + if (_unlink_r (ptr, filename) == -1) {
+ return memalign(alignment,size); + errno = 0;
+ if (_rmdir_r(ptr, filename) == -1)
+ return -1;
+ }
- error = posix_memalign(&p, alignment, size); return 0;
-
- return (error == 0 ? p : NULL);
+ errno = EINVAL;
+ return (void*)NULL;
} }
diff --git a/newlib/libc/stdlib/mbtowc_r.c b/newlib/libc/stdlib/mbtowc_r.c diff --git a/newlib/libc/stdlib/mbtowc_r.c b/newlib/libc/stdlib/mbtowc_r.c
index 920a7ea3c..ba5ee7652 100644 index 920a7ea3c..ba5ee7652 100644

16
dkppc/scripts/build-crtls.sh Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/sh
#---------------------------------------------------------------------------------
# set env variables
#---------------------------------------------------------------------------------
export DEVKITPRO=$TOOLPATH
export DEVKITPPC=$DEVKITPRO/devkitPPC
#---------------------------------------------------------------------------------
# Install the rules files
#---------------------------------------------------------------------------------
cd $BUILDDIR
tar -xvf $SRCDIR/devkitppc-rules-$DKPPC_RULES_VER.tar.gz
cd devkitppc-rules-$DKPPC_RULES_VER
make install

View File

@@ -12,7 +12,7 @@ cd $target/binutils
if [ ! -f configured-binutils ] if [ ! -f configured-binutils ]
then then
CFLAGS=$cflags LDFLAGS=$ldflags ../../binutils-$BINUTILS_VER/configure \ ../../binutils-$BINUTILS_VER/configure \
--prefix=$prefix --target=$target --disable-nls --disable-shared --disable-debug \ --prefix=$prefix --target=$target --disable-nls --disable-shared --disable-debug \
--disable-werror \ --disable-werror \
--enable-poison-system-directories \ --enable-poison-system-directories \
@@ -40,12 +40,15 @@ cd $BUILDDIR
# build and install mn10200 binutils # build and install mn10200 binutils
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# Use modern config.sub for aarch64 host
cp binutils-$BINUTILS_VER/config.sub binutils-$MN_BINUTILS_VER/config.sub
mkdir -p mn10200/binutils mkdir -p mn10200/binutils
cd mn10200/binutils cd mn10200/binutils
if [ ! -f configured-binutils ] if [ ! -f configured-binutils ]
then then
CFLAGS=$cflags LDFLAGS=$ldflags ../../binutils-$MN_BINUTILS_VER/configure \ ../../binutils-$MN_BINUTILS_VER/configure \
--prefix=$prefix --target=mn10200 --disable-nls --disable-debug \ --prefix=$prefix --target=mn10200 --disable-nls --disable-debug \
--disable-multilib \ --disable-multilib \
--disable-werror $CROSS_PARAMS \ --disable-werror $CROSS_PARAMS \
@@ -75,9 +78,6 @@ cd $target/gcc
if [ ! -f configured-gcc ] if [ ! -f configured-gcc ]
then then
CFLAGS="$cflags" \
CXXFLAGS="$cflags" \
LDFLAGS="$ldflags" \
CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \ CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
CXXFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \ CXXFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
LDFLAGS_FOR_TARGET="" \ LDFLAGS_FOR_TARGET="" \
@@ -91,15 +91,17 @@ then
--disable-libstdcxx-verbose \ --disable-libstdcxx-verbose \
--enable-libstdcxx-time=yes \ --enable-libstdcxx-time=yes \
--enable-libstdcxx-filesystem-ts \ --enable-libstdcxx-filesystem-ts \
--disable-tm-clone-registry \
--disable-__cxa_atexit \
--enable-cxx-flags='-ffunction-sections -fdata-sections' \ --enable-cxx-flags='-ffunction-sections -fdata-sections' \
--target=$target \ --target=$target \
--with-newlib \ --with-newlib \
--with-headers=../../newlib-$NEWLIB_VER/newlib/libc/include \ --with-headers=../../newlib-$NEWLIB_VER/newlib/libc/include \
--prefix=$prefix\ --prefix=$prefix \
--with-system-zlib\ --with-bugurl="https://github.com/devkitpro/buildscripts/issues" --with-pkgversion="devkitPPC release 41" \
--with-bugurl="https://github.com/devkitpro/buildscripts/issues" --with-pkgversion="devkitPPC release 35" \
$CROSS_PARAMS \ $CROSS_PARAMS \
$CROSS_GCC_PARAMS \ $CROSS_GCC_PARAMS \
$EXTRA_GCC_PARAMS \
CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \ CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
|| { echo "Error configuring gcc stage 1"; exit 1; } || { echo "Error configuring gcc stage 1"; exit 1; }
touch configured-gcc touch configured-gcc
@@ -187,31 +189,3 @@ echo "installing linkscripts ..."
cp $BUILDSCRIPTDIR/dkppc/crtls/*.ld $prefix/$target/lib/ cp $BUILDSCRIPTDIR/dkppc/crtls/*.ld $prefix/$target/lib/
cd $BUILDDIR cd $BUILDDIR
#---------------------------------------------------------------------------------
# build and install the debugger
#---------------------------------------------------------------------------------
mkdir -p $target/gdb
cd $target/gdb
if [ ! -f configured-gdb ]
then
CFLAGS="$cflags" LDFLAGS="$ldflags" ../../gdb-$GDB_VER/configure \
--disable-nls --prefix=$prefix --target=$target --disable-werror \
$CROSS_PARAMS \
$CROSS_GCC_PARAMS || { echo "Error configuring gdb"; exit 1; }
touch configured-gdb
fi
if [ ! -f built-gdb ]
then
$MAKE || { echo "Error building gdb"; exit 1; }
touch built-gdb
fi
if [ ! -f installed-gdb ]
then
$MAKE install || { echo "Error installing gdb"; exit 1; }
touch installed-gdb
fi

View File

@@ -1,27 +0,0 @@
#!/bin/bash
export DEVKITPPC=$TOOLPATH/devkitPPC
export DEVKITPRO=$TOOLPATH
cd $BUILDDIR
mkdir -p rules
cd rules
tar -xvf $SRCDIR/devkitppc-rules-$DKPPC_RULES_VER.tar.xz
make install
cd $BUILDDIR/libogc-$LIBOGC_VER
if [ ! -f installed ]; then
echo "Building & installing libogc"
$MAKE install || { echo "libogc install failed"; exit 1; }
touch installed
fi
cd $BUILDDIR/libfat-$LIBFAT_VER
if [ ! -f installed ]; then
echo "Building & installing libfat"
$MAKE ogc-install || { echo "libfat install failed"; exit 1; }
touch installed
fi

View File

@@ -1,20 +0,0 @@
#!/bin/bash
cd $BUILDDIR
for archive in $hostarchives
do
dir=$(echo $archive | sed -e 's/\(.*\)\.tar\.bz2/\1/' )
cd $BUILDDIR/$dir
if [ ! -f configured ]; then
CXXFLAGS=$cflags CFLAGS=$cflags LDFLAGS=$ldflags ./configure --prefix=$toolsprefix --disable-dependency-tracking $CROSS_PARAMS || { echo "error configuring $archive"; exit 1; }
touch configured
fi
if [ ! -f built ]; then
$MAKE || { echo "error building $archive"; exit 1; }
touch built
fi
if [ ! -f installed ]; then
$MAKE install || { echo "error installing $archive"; exit 1; }
touch installed
fi
done

View File

@@ -30,31 +30,28 @@ done
case "$VERSION" in case "$VERSION" in
"1" ) "1" )
GCC_VER=8.3.0 GCC_VER=12.1.0
BINUTILS_VER=2.32 BINUTILS_VER=2.38
NEWLIB_VER=3.1.0 NEWLIB_VER=4.2.0.20211231
GDB_VER=8.2.1
basedir='dkarm-eabi' basedir='dkarm-eabi'
package=devkitARM package=devkitARM
target=arm-none-eabi target=arm-none-eabi
toolchain=DEVKITARM toolchain=DEVKITARM
;; ;;
"2" ) "2" )
GCC_VER=8.3.0 GCC_VER=12.1.0
BINUTILS_VER=2.32 BINUTILS_VER=2.37
MN_BINUTILS_VER=2.17 MN_BINUTILS_VER=2.24
NEWLIB_VER=3.1.0 NEWLIB_VER=4.2.0.20211231
GDB_VER=8.2.1
basedir='dkppc' basedir='dkppc'
package=devkitPPC package=devkitPPC
target=powerpc-eabi target=powerpc-eabi
toolchain=DEVKITPPC toolchain=DEVKITPPC
;; ;;
"3" ) "3" )
GCC_VER=8.3.0 GCC_VER=12.1.0
BINUTILS_VER=2.32 BINUTILS_VER=2.32
NEWLIB_VER=3.1.0 NEWLIB_VER=4.2.0.20211231
GDB_VER=8.2.1
basedir='dka64' basedir='dka64'
package=devkitA64 package=devkitA64
target=aarch64-none-elf target=aarch64-none-elf

0
strip_bins.sh Normal file → Executable file
View File