Compare commits

...

34 Commits

Author SHA1 Message Date
Dave Murphy
7489d47923 scripts build devkitARM r47 2017-07-15 16:17:53 +01:00
Dave Murphy
bb3dda93dc remove obsolete patches 2017-07-15 16:14:42 +01:00
Dave Murphy
759b6bb8a1 align before sections 2017-07-14 23:39:04 +01:00
Dave Murphy
771c404dbc remove alpha designation 2017-07-14 21:17:15 +01:00
Dave Murphy
e972030770 use latest citro3d and libctru 2017-07-14 19:21:12 +01:00
Dave Murphy
5047819058 split common part of path 2017-06-27 19:49:13 +01:00
Dave Murphy
bd1c16fe50 provide stub __sync_synchronize 2017-06-27 18:34:13 +01:00
Dave Murphy
16de2cb293 use latest 3dslink 2017-06-27 18:33:18 +01:00
Dave Murphy
c7e940005d mininum OSX target is 10.9 thanks to gdb 2017-06-27 18:28:01 +01:00
Dave Murphy
e1fc813b17 update gp32 tools 2017-06-27 18:26:39 +01:00
Dave Murphy
b7699f8545 don't set OSXSDKPATH by default 2017-06-10 19:09:54 +01:00
Dave Murphy
8f77bb6da9 update picasso version 2017-06-10 19:05:45 +01:00
Dave Murphy
5c23673540 mark this as alpha 2017-06-09 15:08:11 +01:00
Dave Murphy
3970b7c5ad use gdb 8.0 for devkitARM 2017-06-09 15:07:23 +01:00
Dave Murphy
bd5a36b0ff allow C++ code in system headers 2017-06-09 15:06:08 +01:00
Dave Murphy
2c8fdb4f85 update to gdb 7.12.1 2017-05-12 23:27:18 +01:00
Dave Murphy
5d81b788b1 update to gcc 7.1.0 2017-05-04 21:42:00 +01:00
Dave Murphy
636e4ab786 objc has build issues 2017-05-04 21:38:56 +01:00
Dave Murphy
9c64ef65eb latest maxmod & dswifi 2017-05-04 21:37:47 +01:00
Dave Murphy
4733579ef0 use latest picasso 2017-05-04 21:37:26 +01:00
Dave Murphy
f803bbc861 restore objc by popular demand 2017-03-12 22:53:01 +00:00
Dave Murphy
6fa30085c6 proper UTF-8 defaults 2017-03-06 10:32:33 +00:00
Dave Murphy
0cc4623212 use latest ndstool version 2017-03-05 23:00:02 +00:00
Dave Murphy
1b0715ef2f next release is r47 2017-03-05 22:59:28 +00:00
Dave Murphy
13239c3800 use binutils 2.28 2017-03-05 22:58:53 +00:00
Dave Murphy
6c36362230 copy all dlls to install 2017-03-04 22:51:41 +00:00
Dave Murphy
b0f2701d30 update x86_64 cross 2017-03-04 22:51:11 +00:00
Dave Murphy
8731b42b20 use latest libctru version 2017-03-03 20:09:18 +00:00
Dave Murphy
f49dee7361 update notes for OSX 2017-03-03 19:49:53 +00:00
Dave Murphy
d16584234d no longer distributing devkitPSP 2017-03-03 19:41:40 +00:00
Dave Murphy
34eca34dcf increase bracket depth if compiling with clang 2017-03-03 16:13:25 +00:00
Dave Murphy
c42584594b build just c & c++ compilers 2017-03-03 15:34:10 +00:00
Dave Murphy
9ea6924b39 use github to download sources 2017-03-03 00:46:25 +00:00
Dave Murphy
3af916aa90 Allow easier switching and external setting of OSX SDK 2017-03-03 00:45:15 +00:00
11 changed files with 685 additions and 133 deletions

View File

@@ -26,19 +26,26 @@ http://www.multiprecision.org/
sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev
Some of the tools for devkitARM and devkitPPC also require FreeImage, zlib,
and libusb. Again these are built as static libraries for ease of packaging
but you can probably use the versions supplied by your distro.
expat, and libusb. Again these are built as static libraries for ease of
packaging but you can probably use the versions supplied by your distro.
http://freeimage.sourceforge.net/
http://www.zlib.net
http://www.libusb.org
http://expat.sourceforge.net/
sudo apt-get install libfreeimage-dev zlib1g-dev libusb-dev libexpat1-dev
sudo apt-get install libfreeimage-dev zlib1g-dev libusb-dev
Building gxtexconv for cube/wii needs GL/gl.h which can be obtained with
sudo apt-get install mesa-common-dev
For building the OSX versions we install the Xcode commandline tools and build
pkg-config from source as well as static versions of the libraries listed above.
This helps keep the dependencies to a minimum so end users can use the tools
with only Xcode command line tools to obtain make.
To avoid having to manually answer prompts during the build the script will
read variables from config.sh if it exists. Copy config.sh.sample to config.sh
and set the variables as appropriate for your build.
@@ -85,16 +92,6 @@ to use the built in crt0 and linkscript use powerpc-eabi-gcc to link your projec
using the command line switch -mgcn for a bare bones system, -mogc to use libogc and
the multi-threaded microkernel for gamecube, -mrvl for wii, -mwup for wii u.
Using devkitPSP
---------------
All you need to do now to use devkitPSP is make sure that your freshly built tools
are in your PATH, something like this;
export PATH=$PATH:<path to devkitPSP>/bin
(Obviously replace <path to devkitPSP> with the full path to the devkitPSP
installation directory)
Getting started
---------------

View File

@@ -1,6 +1,6 @@
#!/bin/bash
#---------------------------------------------------------------------------------
# devkitARM release 46
# devkitARM release 47
# devkitPPC release 29-1
#---------------------------------------------------------------------------------
@@ -30,13 +30,13 @@ GBATOOLS_VER=1.0.0
LIBNDS_VER=1.6.2
DEFAULT_ARM7_VER=0.7.0
DSWIFI_VER=0.4.0
MAXMOD_VER=1.0.10
DSWIFI_VER=0.4.1
MAXMOD_VER=1.0.11
FILESYSTEM_VER=0.9.13
LIBFAT_VER=1.1.0
DSTOOLS_VER=1.1.0
GRIT_VER=0.8.14
NDSTOOL_VER=2.0.1
NDSTOOL_VER=2.0.3
DLDITOOL_VER=1.24.0
MMUTIL_VER=1.8.6
@@ -47,15 +47,17 @@ GAMECUBE_TOOLS_VER=1.0.1
LIBOGC_VER=1.8.16
WIILOAD_VER=0.5.1
LIBCTRU_VER=1.2.0
CITRO3D_VER=1.2.0
LIBCTRU_VER=1.3.0
CITRO3D_VER=1.3.0
TOOLS3DS_VER=1.1.4
LINK3DS_VER=0.5.1
PICASSO_VER=2.5.0
LINK3DS_VER=0.5.2
PICASSO_VER=2.6.2
GP32_TOOLS_VER=1.0.2
GP32_TOOLS_VER=1.0.3
LIBMIRKO_VER=0.9.7
OSXMIN=${OSXMIN:-10.9}
#---------------------------------------------------------------------------------
function extract_and_patch {
#---------------------------------------------------------------------------------
@@ -165,8 +167,16 @@ PLATFORM=`uname -s`
case $PLATFORM in
Darwin )
cflags="-mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk -I/usr/local/include"
ldflags="-mmacosx-version-min=10.5 -Wl,-syslibroot,/Developer/SDKs/MacOSX10.5.sdk -L/usr/local/lib"
cflags="-mmacosx-version-min=${OSXMIN} -I/usr/local/include"
ldflags="-mmacosx-version-min=${OSXMIN} -L/usr/local/lib"
if [ "x${OSXSDKPATH}x" != "xx" ]; then
cflags="$cflags -isysroot ${OSXSDKPATH}"
ldflags="$ldflags -Wl,-syslibroot,${OSXSDKPATH}"
fi
TESTCC=`cc -v 2>&1 | grep clang`
if [ "x${TESTCC}x" != "xx" ]; then
cflags="$cflags -fbracket-depth=512"
fi
;;
MINGW32* )
cflags="-D__USE_MINGW_ACCESS"
@@ -175,12 +185,13 @@ case $PLATFORM in
;;
esac
BUILDSCRIPTDIR=$(pwd)
BUILDDIR=$(pwd)/.$package
if [ ! -z $CROSSBUILD ]; then
BUILDDIR=$BUILDDIR-$CROSSBUILD
fi
DEVKITPRO_URL="http://downloads.sourceforge.net/devkitpro"
patchdir=$(pwd)/$basedir/patches
scriptdir=$(pwd)/$basedir/scripts
@@ -222,7 +233,7 @@ for archive in $archives $targetarchives $hostarchives
do
echo $archive
if [ ! -f $archive ]; then
$FETCH http://downloads.sf.net/devkitpro/$archive || { echo "Error: Failed to download $archive"; exit 1; }
$FETCH https://github.com/devkitPro/buildscripts/releases/download/sources/$archive || { echo "Error: Failed to download $archive"; exit 1; }
fi
done
@@ -271,9 +282,7 @@ if [ ! -z $CROSSBUILD ]; then
if [ $VERSION -eq 1 ]; then
cp -v $CROSSBINPATH/libusb-1.0.dll $prefix/bin
fi
cp -v $CROSSLIBPATH/libstdc++-6.dll \
$CROSSLIBPATH/libgcc_s_sjlj-1.dll \
$prefix/bin
cp -v $CROSSLIBPATH/*.dll $prefix/bin
fi
echo "stripping installed binaries"

View File

@@ -22,7 +22,7 @@ BUILD_DKPRO_PACKAGE=0
#---------------------------------------------------------------------------------
# Path to previously downloaded source packages, comment if not specified
#---------------------------------------------------------------------------------
#BUILD_DKPRO_SRCDIR=/d/projects/archives
#BUILD_DKPRO_SRCDIR=~/projects/archives
#---------------------------------------------------------------------------------
# MAKEFLAGS for building - use number of processors for jobs
@@ -38,3 +38,9 @@ BUILD_DKPRO_PACKAGE=0
#---------------------------------------------------------------------------------
BUILD_DKPRO_AUTOMATED=0
#---------------------------------------------------------------------------------
# set OSX SDK path if needed
#---------------------------------------------------------------------------------
#export OSXSDKPATH=/Library/Developer/CommandLineTools/SDKs/MacOSX10.12.sdk

View File

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

View File

@@ -40,7 +40,9 @@ SECTIONS
/* =========== RODATA section =========== */
.rodata ALIGN(0x1000) :
. = ALIGN(0x1000);
.rodata :
{
*(.rodata)
*(.roda)
@@ -58,7 +60,9 @@ SECTIONS
/* =========== DATA section =========== */
.data ALIGN(0x1000) :
. = ALIGN(0x1000);
.data :
{
*(.data)
*(.data.*)

View File

@@ -1,6 +1,6 @@
diff -NBaur gcc-6.2.0/gcc/config/arm/t-arm-elf gcc-6.2.0-arm/gcc/config/arm/t-arm-elf
--- gcc-6.2.0/gcc/config/arm/t-arm-elf 2016-01-04 14:30:50.000000000 +0000
+++ gcc-6.2.0-arm/gcc/config/arm/t-arm-elf 2016-12-10 12:16:20.076000000 +0000
diff -NBaur gcc-7.1.0/gcc/config/arm/t-arm-elf gcc-7.1.0-arm/gcc/config/arm/t-arm-elf
--- gcc-7.1.0/gcc/config/arm/t-arm-elf 2017-01-01 12:07:43.000000000 +0000
+++ gcc-7.1.0-arm/gcc/config/arm/t-arm-elf 2017-05-03 12:58:45.387209969 +0100
@@ -16,11 +16,19 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
@@ -36,9 +36,9 @@ diff -NBaur gcc-6.2.0/gcc/config/arm/t-arm-elf gcc-6.2.0-arm/gcc/config/arm/t-ar
#MULTILIB_EXCEPTIONS += *mcpu=fa526/*mfloat-abi=hard*
#MULTILIB_EXCEPTIONS += *mcpu=fa626/*mfloat-abi=hard*
diff -NBaur gcc-6.2.0/gcc/config/arm/unknown-elf.h gcc-6.2.0-arm/gcc/config/arm/unknown-elf.h
--- gcc-6.2.0/gcc/config/arm/unknown-elf.h 2016-01-04 14:30:50.000000000 +0000
+++ gcc-6.2.0-arm/gcc/config/arm/unknown-elf.h 2016-09-07 08:58:29.977682360 +0100
diff -NBaur gcc-7.1.0/gcc/config/arm/unknown-elf.h gcc-7.1.0-arm/gcc/config/arm/unknown-elf.h
--- gcc-7.1.0/gcc/config/arm/unknown-elf.h 2017-01-01 12:07:43.000000000 +0000
+++ gcc-7.1.0-arm/gcc/config/arm/unknown-elf.h 2017-06-08 12:22:17.868509897 +0100
@@ -29,7 +29,7 @@
#endif
@@ -48,16 +48,21 @@ diff -NBaur gcc-6.2.0/gcc/config/arm/unknown-elf.h gcc-6.2.0-arm/gcc/config/arm/
#undef STARTFILE_SPEC
#define STARTFILE_SPEC \
@@ -97,4 +97,4 @@
@@ -93,4 +93,9 @@
udivmoddi4, which will depend on the exception unwind routines,
which will depend on abort, which is defined in libc. */
#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 %L %(libgloss) --end-group"
diff -NBaur gcc-6.2.0/gcc/gcc.c gcc-6.2.0-arm/gcc/gcc.c
--- gcc-6.2.0/gcc/gcc.c 2016-08-15 12:19:34.000000000 +0100
+++ gcc-6.2.0-arm/gcc/gcc.c 2016-09-07 08:58:29.981682360 +0100
@@ -778,6 +778,11 @@
+
+/* The system headers under devkitARM are C++-aware. */
+#undef NO_IMPLICIT_EXTERN_C
+#define NO_IMPLICIT_EXTERN_C
+
diff -NBaur gcc-7.1.0/gcc/gcc.c gcc-7.1.0-arm/gcc/gcc.c
--- gcc-7.1.0/gcc/gcc.c 2017-01-17 09:38:48.000000000 +0000
+++ gcc-7.1.0-arm/gcc/gcc.c 2017-05-03 12:58:45.395210596 +0100
@@ -779,6 +779,11 @@
#endif
#endif
@@ -69,7 +74,7 @@ diff -NBaur gcc-6.2.0/gcc/gcc.c gcc-6.2.0-arm/gcc/gcc.c
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */
#ifndef STARTFILE_SPEC
#define STARTFILE_SPEC \
@@ -1062,6 +1067,7 @@
@@ -1074,6 +1079,7 @@
static const char *lib_spec = LIB_SPEC;
static const char *link_gomp_spec = "";
static const char *libgcc_spec = LIBGCC_SPEC;
@@ -77,7 +82,7 @@ diff -NBaur gcc-6.2.0/gcc/gcc.c gcc-6.2.0-arm/gcc/gcc.c
static const char *endfile_spec = ENDFILE_SPEC;
static const char *startfile_spec = STARTFILE_SPEC;
static const char *linker_name_spec = LINKER_NAME;
@@ -1563,6 +1569,7 @@
@@ -1579,6 +1585,7 @@
INIT_STATIC_SPEC ("lib", &lib_spec),
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
@@ -85,18 +90,18 @@ diff -NBaur gcc-6.2.0/gcc/gcc.c gcc-6.2.0-arm/gcc/gcc.c
INIT_STATIC_SPEC ("startfile", &startfile_spec),
INIT_STATIC_SPEC ("cross_compile", &cross_compile),
INIT_STATIC_SPEC ("version", &compiler_version),
diff -NBaur gcc-6.2.0/libgcc/config/arm/t-bpabi gcc-6.2.0-arm/libgcc/config/arm/t-bpabi
--- gcc-6.2.0/libgcc/config/arm/t-bpabi 2012-08-17 16:06:06.000000000 +0100
+++ gcc-6.2.0-arm/libgcc/config/arm/t-bpabi 2016-09-07 08:58:29.985682360 +0100
diff -NBaur gcc-7.1.0/libgcc/config/arm/t-bpabi gcc-7.1.0-arm/libgcc/config/arm/t-bpabi
--- gcc-7.1.0/libgcc/config/arm/t-bpabi 2012-08-17 16:06:06.000000000 +0100
+++ gcc-7.1.0-arm/libgcc/config/arm/t-bpabi 2017-05-03 12:58:45.395210596 +0100
@@ -17,4 +17,4 @@
# On ARM, specifying -fnon-call-exceptions will needlessly pull in
# the unwinder in simple programs which use 64-bit division. Omitting
# the option is safe.
-LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
+LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions
diff -NBaur gcc-6.2.0/libgcc/crtstuff.c gcc-6.2.0-arm/libgcc/crtstuff.c
--- gcc-6.2.0/libgcc/crtstuff.c 2016-01-04 14:30:50.000000000 +0000
+++ gcc-6.2.0-arm/libgcc/crtstuff.c 2016-09-07 08:58:29.985682360 +0100
diff -NBaur gcc-7.1.0/libgcc/crtstuff.c gcc-7.1.0-arm/libgcc/crtstuff.c
--- gcc-7.1.0/libgcc/crtstuff.c 2017-01-01 12:07:43.000000000 +0000
+++ gcc-7.1.0-arm/libgcc/crtstuff.c 2017-05-03 12:58:45.395210596 +0100
@@ -47,7 +47,7 @@
/* Target machine header files require this define. */
@@ -106,10 +111,10 @@ diff -NBaur gcc-6.2.0/libgcc/crtstuff.c gcc-6.2.0-arm/libgcc/crtstuff.c
/* FIXME: Including auto-host is incorrect, but until we have
identified the set of defines that need to go into auto-target.h,
this will have to do. */
diff -NBaur gcc-6.2.0/libgcc/Makefile.in gcc-6.2.0-arm/libgcc/Makefile.in
--- gcc-6.2.0/libgcc/Makefile.in 2016-02-25 12:23:52.000000000 +0000
+++ gcc-6.2.0-arm/libgcc/Makefile.in 2016-09-07 08:58:29.989682360 +0100
@@ -820,7 +820,7 @@
diff -NBaur gcc-7.1.0/libgcc/Makefile.in gcc-7.1.0-arm/libgcc/Makefile.in
--- gcc-7.1.0/libgcc/Makefile.in 2017-04-19 09:08:44.000000000 +0100
+++ gcc-7.1.0-arm/libgcc/Makefile.in 2017-05-03 12:58:45.399210922 +0100
@@ -844,7 +844,7 @@
# libgcc_eh.a, only LIB2ADDEH matters. If we do, only LIB2ADDEHSTATIC and
# LIB2ADDEHSHARED matter. (Usually all three are identical.)

View File

@@ -1,32 +0,0 @@
diff -NBaur gdb-7.11/gdb/Makefile.in gdb-7.11-arm/gdb/Makefile.in
--- gdb-7.11/gdb/Makefile.in 2016-02-24 09:55:15.000000000 +0000
+++ gdb-7.11-arm/gdb/Makefile.in 2016-05-13 15:06:03.629019640 +0100
@@ -2726,10 +2726,8 @@
# Note that we put the dependencies into a .Tpo file, then move them
# into place if the compile succeeds. We need this because gcc does
# not atomically write the dependency output file.
-@GMAKE_TRUE@override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \
-@GMAKE_TRUE@ -MF $(DEPDIR)/$(basename $(@F)).Tpo
-@GMAKE_TRUE@override POSTCOMPILE = @mv $(DEPDIR)/$(basename $(@F)).Tpo \
-@GMAKE_TRUE@ $(DEPDIR)/$(basename $(@F)).Po
+@GMAKE_TRUE@override COMPILE.post = -c -o $@
+@GMAKE_TRUE@override POSTCOMPILE =
@GMAKE_TRUE@else
@GMAKE_TRUE@override COMPILE.pre = source='$<' object='$@' libtool=no \
@GMAKE_TRUE@ DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) $(CC)
diff -NBaur gdb-7.11/sim/common/Make-common.in gdb-7.11-arm/sim/common/Make-common.in
--- gdb-7.11/sim/common/Make-common.in 2016-02-10 03:19:39.000000000 +0000
+++ gdb-7.11-arm/sim/common/Make-common.in 2016-05-13 15:06:03.633019640 +0100
@@ -402,10 +402,8 @@
# Note that we put the dependencies into a .Tpo file, then move them
# into place if the compile succeeds. We need this because gcc does
# not atomically write the dependency output file.
-@GMAKE_TRUE@override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \
-@GMAKE_TRUE@ -MF $(DEPDIR)/$(basename $(@F)).Tpo
-@GMAKE_TRUE@override POSTCOMPILE = @mv $(DEPDIR)/$(basename $(@F)).Tpo \
-@GMAKE_TRUE@ $(DEPDIR)/$(basename $(@F)).Po
+@GMAKE_TRUE@override COMPILE.post = -c -o $@
+@GMAKE_TRUE@override POSTCOMPILE =
@GMAKE_TRUE@else
@GMAKE_TRUE@override COMPILE.pre = source='$<' object='$@' libtool=no \
@GMAKE_TRUE@ DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) $(CC)

View File

@@ -0,0 +1,441 @@
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 1d2dbaf3f7..2d24f09c1b 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -779,6 +779,7 @@ ALL_64_TARGET_OBS = \
ALL_TARGET_OBS = \
arc-tdep.o \
arm.o \
+ arm-3ds-tdep.o \
arm-bsd-tdep.o \
arm-get-next-pcs.o \
arm-linux.o \
@@ -2487,6 +2488,7 @@ ALLDEPFILES = \
amd64-tdep.c \
arc-tdep.c \
arm.c \
+ arm-3ds-tdep.c \
arm-bsd-tdep.c \
arm-get-next-pcs.c \
arm-linux.c \
diff --git a/gdb/arm-3ds-tdep.c b/gdb/arm-3ds-tdep.c
new file mode 100644
index 0000000000..ad014e28db
--- /dev/null
+++ b/gdb/arm-3ds-tdep.c
@@ -0,0 +1,197 @@
+/* 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 VEC (CORE_ADDR) *
+arm_3ds_software_single_step (struct regcache *regcache)
+{
+ struct gdbarch *gdbarch = get_regcache_arch (regcache);
+ struct arm_get_next_pcs next_pcs_ctx;
+ CORE_ADDR pc;
+ int i;
+ VEC (CORE_ADDR) *next_pcs = NULL;
+ struct cleanup *old_chain;
+
+ /* If the target does have hardware single step, GDB doesn't have
+ to bother software single step. */
+ if (target_can_do_single_step () == 1)
+ return NULL;
+
+ old_chain = make_cleanup (VEC_cleanup (CORE_ADDR), &next_pcs);
+
+ arm_get_next_pcs_ctor (&next_pcs_ctx,
+ &arm_3ds_get_next_pcs_ops,
+ gdbarch_byte_order (gdbarch),
+ gdbarch_byte_order_for_code (gdbarch),
+ 1,
+ regcache);
+
+ next_pcs = arm_get_next_pcs (&next_pcs_ctx);
+
+ for (i = 0; VEC_iterate (CORE_ADDR, next_pcs, i, pc); i++)
+ {
+ pc = gdbarch_addr_bits_remove (gdbarch, pc);
+ VEC_replace (CORE_ADDR, next_pcs, i, pc);
+ }
+
+ discard_cleanups (old_chain);
+
+ return next_pcs;
+}
+
+static LONGEST
+arm_3ds_get_syscall_number (struct gdbarch *gdbarch,
+ ptid_t ptid)
+{
+ struct regcache *regs = get_thread_regcache (ptid);
+
+ 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_3ds_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);
+}
+
+/* Provide a prototype to silence -Wmissing-prototypes. */
+extern initialize_file_ftype _initialize_arm_3ds_tdep;
+
+void
+_initialize_arm_3ds_tdep (void)
+{
+ gdbarch_register_osabi (bfd_arch_arm, 0, GDB_OSABI_3DS,
+ arm_3ds_init_abi);
+}
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index fdcb7b1d69..d8fd1622b8 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -119,8 +119,8 @@ arm*-*-symbianelf*)
gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o arm-symbian-tdep.o"
;;
arm*-*-*)
- # Target: ARM embedded system
- gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o"
+ # Target: ARM embedded system (+ 3DS)
+ gdb_target_obs="arm.o arm-get-next-pcs.o arm-tdep.o arm-3ds-tdep.o"
gdb_sim=../sim/arm/libsim.a
;;
diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
index 304d4b05c0..2cf8986d3a 100644
--- a/gdb/data-directory/Makefile.in
+++ b/gdb/data-directory/Makefile.in
@@ -63,7 +63,7 @@ GEN_SYSCALLS_FILES = \
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 --git a/gdb/defs.h b/gdb/defs.h
index a0b586f401..a1508fd5b3 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -604,6 +604,7 @@ enum gdb_osabi
GDB_OSABI_LYNXOS178,
GDB_OSABI_NEWLIB,
GDB_OSABI_SDE,
+ GDB_OSABI_3DS,
GDB_OSABI_INVALID /* keep this last */
};
diff --git a/gdb/osabi.c b/gdb/osabi.c
index 84fa9c0273..c1c4bb1672 100644
--- a/gdb/osabi.c
+++ b/gdb/osabi.c
@@ -79,6 +79,7 @@ static const struct osabi_names gdb_osabi_names[] =
{ "LynxOS178", NULL },
{ "Newlib", NULL },
{ "SDE", NULL },
+ { "3DS", NULL },
{ "<invalid>", NULL }
};
diff --git a/gdb/syscalls/arm-3ds.xml b/gdb/syscalls/arm-3ds.xml
new file mode 100644
index 0000000000..48780b7bd5
--- /dev/null
+++ b/gdb/syscalls/arm-3ds.xml
@@ -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>

View File

@@ -611,7 +611,7 @@ index 0000000..b6cdfae
+m4_include([../acinclude.m4])
diff --git a/libgloss/libsysbase/build_argv.c b/libgloss/libsysbase/build_argv.c
new file mode 100644
index 0000000..79d2006
index 0000000..3ca95d5
--- /dev/null
+++ b/libgloss/libsysbase/build_argv.c
@@ -0,0 +1,31 @@
@@ -648,7 +648,7 @@ index 0000000..79d2006
+}
diff --git a/libgloss/libsysbase/chdir.c b/libgloss/libsysbase/chdir.c
new file mode 100644
index 0000000..2a0fa03
index 0000000..90d2dc5
--- /dev/null
+++ b/libgloss/libsysbase/chdir.c
@@ -0,0 +1,201 @@
@@ -855,7 +855,7 @@ index 0000000..2a0fa03
+}
diff --git a/libgloss/libsysbase/chmod.c b/libgloss/libsysbase/chmod.c
new file mode 100644
index 0000000..ce79a2c
index 0000000..3668b58
--- /dev/null
+++ b/libgloss/libsysbase/chmod.c
@@ -0,0 +1,30 @@
@@ -891,7 +891,7 @@ index 0000000..ce79a2c
+
diff --git a/libgloss/libsysbase/close.c b/libgloss/libsysbase/close.c
new file mode 100644
index 0000000..d3563fb
index 0000000..a251e5b
--- /dev/null
+++ b/libgloss/libsysbase/close.c
@@ -0,0 +1,49 @@
@@ -976,7 +976,7 @@ index 0000000..48ce950
+/* symbol prefix */
+#undef __SYMBOL_PREFIX
diff --git a/libgloss/libsysbase/configure b/libgloss/libsysbase/configure
new file mode 100755
new file mode 100644
index 0000000..c4b5a79
--- /dev/null
+++ b/libgloss/libsysbase/configure
@@ -5141,7 +5141,7 @@ index 0000000..c4b5a79
+
diff --git a/libgloss/libsysbase/configure.in b/libgloss/libsysbase/configure.in
new file mode 100644
index 0000000..4c31956
index 0000000..bf276a4
--- /dev/null
+++ b/libgloss/libsysbase/configure.in
@@ -0,0 +1,199 @@
@@ -5721,7 +5721,7 @@ index 0000000..c6b8c92
+}
diff --git a/libgloss/libsysbase/fork.c b/libgloss/libsysbase/fork.c
new file mode 100644
index 0000000..712b13e
index 0000000..3aa75a3
--- /dev/null
+++ b/libgloss/libsysbase/fork.c
@@ -0,0 +1,25 @@
@@ -6469,7 +6469,7 @@ index 0000000..4565909
+char *fake_heap_start = (char*)0;
diff --git a/libgloss/libsysbase/mkdir.c b/libgloss/libsysbase/mkdir.c
new file mode 100644
index 0000000..4175cf8
index 0000000..b4fcbd3
--- /dev/null
+++ b/libgloss/libsysbase/mkdir.c
@@ -0,0 +1,19 @@
@@ -6612,7 +6612,7 @@ index 0000000..7f3f7f2
+
diff --git a/libgloss/libsysbase/rename.c b/libgloss/libsysbase/rename.c
new file mode 100644
index 0000000..7520d1d
index 0000000..f8a0aa9
--- /dev/null
+++ b/libgloss/libsysbase/rename.c
@@ -0,0 +1,41 @@
@@ -6806,7 +6806,7 @@ index 0000000..e474c47
+
diff --git a/libgloss/libsysbase/statvfs.c b/libgloss/libsysbase/statvfs.c
new file mode 100644
index 0000000..b3dec22
index 0000000..84e2213
--- /dev/null
+++ b/libgloss/libsysbase/statvfs.c
@@ -0,0 +1,24 @@
@@ -6941,7 +6941,7 @@ index 0000000..044f12d
+
diff --git a/libgloss/libsysbase/times.c b/libgloss/libsysbase/times.c
new file mode 100644
index 0000000..67db6c7
index 0000000..45e9781
--- /dev/null
+++ b/libgloss/libsysbase/times.c
@@ -0,0 +1,21 @@
@@ -7075,7 +7075,7 @@ index 0000000..9a61639
+
diff --git a/libgloss/libsysbase/wait.c b/libgloss/libsysbase/wait.c
new file mode 100644
index 0000000..322c847
index 0000000..f64bf13
--- /dev/null
+++ b/libgloss/libsysbase/wait.c
@@ -0,0 +1,29 @@
@@ -7515,7 +7515,7 @@ index 84219ca..af9d12c 100644
#if defined(__CYGWIN__) || defined(__rtems__)
int _EXFUN(getdtablesize, (void));
diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c
index 8572821..52b6469 100644
index 8572821..e6baf35 100644
--- a/newlib/libc/locale/locale.c
+++ b/newlib/libc/locale/locale.c
@@ -107,7 +107,7 @@ beginning with <<"LC_">>.
@@ -7552,14 +7552,44 @@ index 8572821..52b6469 100644
#ifndef DEFAULT_LOCALE
-#define DEFAULT_LOCALE "C"
+#ifdef __DEFAULT_UTF8__
+#define DEFAULT_LOCALE "C"
+#else
+#define DEFAULT_LOCALE "C.UTF-8"
+#else
+#define DEFAULT_LOCALE "C"
+#endif
#endif
#ifdef _MB_CAPABLE
@@ -255,10 +262,11 @@ const struct __locale_t __C_locale =
@@ -222,8 +229,13 @@ char __default_locale[ENCODING_LEN + 1] = DEFAULT_LOCALE;
const struct __locale_t __C_locale =
{
{ "C", "C", "C", "C", "C", "C", "C", },
+#if defined ( __DEFAULT_UTF8__ )
+ __utf8_wctomb,
+ __utf8_mbtowc,
+#else
__ascii_wctomb,
__ascii_mbtowc,
+#endif
0,
DEFAULT_CTYPE_PTR,
{
@@ -234,9 +246,15 @@ const struct __locale_t __C_locale =
CHAR_MAX, CHAR_MAX
},
#ifndef __HAVE_LOCALE_INFO__
+#ifdef __DEFAULT_UTF8__
+ "\6",
+ "UTF-8",
+ "UTF-8",
+#else
"\1",
"ASCII",
"ASCII",
+#endif
#else /* __HAVE_LOCALE_INFO__ */
{
{ NULL, NULL }, /* LC_ALL */
@@ -255,10 +273,11 @@ const struct __locale_t __C_locale =
};
#endif /* _MB_CAPABLE */
@@ -7572,7 +7602,23 @@ index 8572821..52b6469 100644
__utf8_wctomb,
__utf8_mbtowc,
#else
@@ -312,7 +320,7 @@ _DEFUN(_setlocale_r, (p, category, locale),
@@ -275,9 +294,15 @@ struct __locale_t __global_locale =
CHAR_MAX, CHAR_MAX
},
#ifndef __HAVE_LOCALE_INFO__
+#ifdef __DEFAULT_UTF8__
+ "\6",
+ "UTF-8",
+ "UTF-8",
+#else
"\1",
"ASCII",
"ASCII",
+#endif
#else /* __HAVE_LOCALE_INFO__ */
{
{ NULL, NULL }, /* LC_ALL */
@@ -312,7 +337,7 @@ _DEFUN(_setlocale_r, (p, category, locale),
{
#ifndef _MB_CAPABLE
if (locale)
@@ -7581,7 +7627,7 @@ index 8572821..52b6469 100644
if (strcmp (locale, "POSIX") && strcmp (locale, "C")
&& strcmp (locale, ""))
return NULL;
@@ -995,6 +1003,7 @@ __locale_ctype_ptr_l (struct __locale_t *locale)
@@ -995,6 +1020,7 @@ __locale_ctype_ptr_l (struct __locale_t *locale)
const char *
__locale_ctype_ptr (void)
@@ -7589,6 +7635,80 @@ index 8572821..52b6469 100644
{
return __get_current_locale ()->ctype_ptr;
}
diff --git a/newlib/libc/machine/arm/Makefile.am b/newlib/libc/machine/arm/Makefile.am
index 62ed158..7f34177 100644
--- a/newlib/libc/machine/arm/Makefile.am
+++ b/newlib/libc/machine/arm/Makefile.am
@@ -11,7 +11,9 @@ noinst_LIBRARIES = lib.a
lib_a_SOURCES = setjmp.S access.c strcmp.S strcpy.c \
aeabi_memcpy.c 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 \
+ sync_synchronize.c
+
lib_a_SOURCES += memchr-stub.c
lib_a_SOURCES += memchr.S
lib_a_SOURCES += memcpy-stub.c
diff --git a/newlib/libc/machine/arm/Makefile.in b/newlib/libc/machine/arm/Makefile.in
index 4908208..694cbb0 100644
--- a/newlib/libc/machine/arm/Makefile.in
+++ b/newlib/libc/machine/arm/Makefile.in
@@ -76,10 +76,10 @@ am_lib_a_OBJECTS = lib_a-setjmp.$(OBJEXT) lib_a-access.$(OBJEXT) \
lib_a-aeabi_memmove.$(OBJEXT) \
lib_a-aeabi_memmove-soft.$(OBJEXT) \
lib_a-aeabi_memset.$(OBJEXT) lib_a-aeabi_memset-soft.$(OBJEXT) \
- lib_a-aeabi_memclr.$(OBJEXT) lib_a-memchr-stub.$(OBJEXT) \
- lib_a-memchr.$(OBJEXT) lib_a-memcpy-stub.$(OBJEXT) \
- lib_a-memcpy.$(OBJEXT) lib_a-strlen-stub.$(OBJEXT) \
- lib_a-strlen.$(OBJEXT)
+ lib_a-aeabi_memclr.$(OBJEXT) lib_a-sync_synchronize.$(OBJEXT) \
+ lib_a-memchr-stub.$(OBJEXT) lib_a-memchr.$(OBJEXT) \
+ lib_a-memcpy-stub.$(OBJEXT) lib_a-memcpy.$(OBJEXT) \
+ lib_a-strlen-stub.$(OBJEXT) lib_a-strlen.$(OBJEXT)
lib_a_OBJECTS = $(am_lib_a_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp =
@@ -209,8 +209,8 @@ noinst_LIBRARIES = lib.a
lib_a_SOURCES = setjmp.S access.c strcmp.S strcpy.c aeabi_memcpy.c \
aeabi_memcpy-armv7a.S aeabi_memmove.c aeabi_memmove-soft.S \
aeabi_memset.c aeabi_memset-soft.S aeabi_memclr.c \
- memchr-stub.c memchr.S memcpy-stub.c memcpy.S strlen-stub.c \
- strlen.S
+ sync_synchronize.c memchr-stub.c memchr.S memcpy-stub.c \
+ memcpy.S strlen-stub.c strlen.S
lib_a_CCASFLAGS = $(AM_CCASFLAGS)
lib_a_CFLAGS = $(AM_CFLAGS)
ACLOCAL_AMFLAGS = -I ../../.. -I ../../../..
@@ -374,6 +374,12 @@ lib_a-aeabi_memclr.o: 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`
+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
+
+lib_a-sync_synchronize.obj: sync_synchronize.c
+ $(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
$(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
new file mode 100644
index 0000000..3acc9e0
--- /dev/null
+++ b/newlib/libc/machine/arm/sync_synchronize.c
@@ -0,0 +1,10 @@
+#if __ARM_ARCH < 6
+#include <sys/cdefs.h>
+void __attribute__((weak))
+__sync_synchronize (void)
+{
+ __warn_references (__sync_synchronize,
+ "legacy compatible __sync_synchronize used. Not suitable for multi-threaded applications");
+ return;
+}
+#endif
diff --git a/newlib/libc/machine/arm/sys/stdio.h b/newlib/libc/machine/arm/sys/stdio.h
new file mode 100644
index 0000000..4eb278e

View File

@@ -46,7 +46,7 @@ then
CXXFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
LDFLAGS_FOR_TARGET="" \
../../gcc-$GCC_VER/configure \
--enable-languages=c,c++,objc,obj-c++ \
--enable-languages=c,c++ \
--with-gnu-as --with-gnu-ld --with-gcc \
--with-march=armv4t\
--enable-cxx-flags='-ffunction-sections' \
@@ -62,7 +62,7 @@ then
--prefix=$prefix \
--enable-lto $plugin_ld\
--with-system-zlib \
--with-bugurl="http://wiki.devkitpro.org/index.php/Bug_Reports" --with-pkgversion="devkitARM release 46" \
--with-bugurl="http://wiki.devkitpro.org/index.php/Bug_Reports" --with-pkgversion="devkitARM release 47" \
$CROSS_PARAMS \
|| { echo "Error configuring gcc"; exit 1; }
touch configured-gcc

View File

@@ -29,10 +29,10 @@ done
case "$VERSION" in
"1" )
GCC_VER=6.3.0
BINUTILS_VER=2.27
GCC_VER=7.1.0
BINUTILS_VER=2.28
NEWLIB_VER=2.5.0
GDB_VER=7.12
GDB_VER=8.0
basedir='dkarm-eabi'
package=devkitARM
target=arm-none-eabi