Compare commits

..

45 Commits

Author SHA1 Message Date
Dave Murphy
24164cca86 devkitARM: release 66 2025-05-25 18:58:59 +01:00
Dave Murphy
d6434abd04 devkitARM: update crtls & rules versions 2025-05-25 18:58:58 +01:00
Dave Murphy
55eb881d09 devkitARM: remove stale patches 2025-05-05 00:12:13 +01:00
Dave Murphy
3a70b58ce2 devkitARM: newlib 4.5.0 2025-05-02 19:26:17 +01:00
Dave Murphy
3fedda9d74 devkitARM: 15.1.0 2025-05-02 19:26:17 +01:00
Dave Murphy
7e4aed9985 devkitARM: binutils 2.44 2025-05-02 19:26:11 +01:00
Dave Murphy
1b09b3a824 devkitPPC: r46.1 2024-11-11 10:32:05 +00:00
Dave Murphy
a133b4d622 devkitPPC: fix _REENT_INIT_PTR for gcc 14 2024-11-11 10:31:59 +00:00
Dave Murphy
f1428f47e8 devkitPPC: newlib fixes for gcc 14 2024-11-05 12:25:27 +00:00
Dave Murphy
1a3f555292 devkitARM: remove stale patches 2024-11-05 11:40:01 +00:00
Dave Murphy
6ea8070246 devkitA64: remove stale patches 2024-11-05 11:39:21 +00:00
Dave Murphy
57928f194f devkitPPC: update binutils to 2.43.1 2024-11-05 11:38:12 +00:00
Dave Murphy
6628e681e2 devkitPPC: update to gcc 14.2.0 2024-11-05 11:36:12 +00:00
Dave Murphy
72ca8f813f devkitARM: update gcc to 14.2.0 2024-08-30 20:00:15 +01:00
Dave Murphy
ce700b701d devkitARM: update binutils to 2.43.1 2024-08-30 19:59:41 +01:00
Dave Murphy
8b3fb07490 devkitA64: add relr defines 2024-08-30 11:54:06 +01:00
Dave Murphy
5599e42c8c devkitA64: update gcc to 14.2.0 2024-08-30 11:54:06 +01:00
Dave Murphy
57b7f68921 devkitA64: update binutils to 2.43.1 2024-08-30 11:54:06 +01:00
Jaeden Amero
88bd526925 Prefer using GNU Patch
The patches we use do not apply with BSD Patch. Attempt to find GNU
Patch and use that instead of the default 'patch' program. The patches
appear to apply fine as no errors are returned when we run patch.
However, files like libsysbase/dummy.c aren't created and we see the
following error:

    gmake[2]: Entering directory '.devkitARM/arm-none-eabi/newlib/arm-none-eabi/libgloss' /usr/local/bin/gmake  all-recursive
    gmake[3]: Entering directory '.devkitARM/arm-none-eabi/newlib/arm-none-eabi/libgloss'
    Making all in .
    gmake[4]: Entering directory '.devkitARM/arm-none-eabi/newlib/arm-none-eabi/libgloss'
      MAKEINFO ../../../../newlib-4.4.0.20231231/libgloss/doc/porting.info
      gmake[4]: *** No rule to make target 'libsysbase/dummy.c', needed by 'libsysbase/dummy.o'.  Stop.

By switching to GNU Patch, our patches properly apply and the build
succeeds.
2024-07-07 18:56:47 +01:00
Jaeden Amero
d3d636cb54 crtls: Use exported make
Without this, when building on platforms where 'make' is not GNU Make,
building crtls will fail. The Makefiles used to build crtls depend on
GNU Make and will not work on e.g. BSD Make.
2024-07-07 18:56:47 +01:00
Dave Murphy
78eb432d11 devkitA64: update version 2024-06-16 11:47:58 +01:00
Dave Murphy
aa76a0ea46 devkitA64: make read/write posix compliant 2024-06-16 11:47:13 +01:00
Dave Murphy
2429e9ee7d gcc 2024-05-26 18:33:40 +01:00
Dave Murphy
f0b081246c devkitA64: use latest newlib patches 2024-05-26 17:25:22 +01:00
Dave Murphy
a280f18794 devkitA64: update gcc to 14.1.0 2024-05-26 17:25:15 +01:00
Dave Murphy
c012acf8d8 macOS fix 2024-05-16 22:57:12 +01:00
Dave Murphy
19217fdc51 update devkitarm rules/crtls versions 2024-05-11 19:55:02 +01:00
Dave Murphy
aad3392808 devkitARM: binutils 2.42 2024-05-11 19:09:58 +01:00
Dave Murphy
7b0a333842 devkitARM: remove stale patches 2024-05-11 19:09:58 +01:00
Dave Murphy
41922724cb devkitARM: use LDFLAGS from environment 2024-05-11 19:09:57 +01:00
Dave Murphy
2422223439 devkitARM: gcc 14.1.0 2024-05-11 19:09:50 +01:00
Dave Murphy
23afd9959c devkitARM: latest newlib patches 2024-05-04 21:04:10 +01:00
Dave Murphy
03bc549c5c devkitARM: gcc 14.1 release candidate 2024-05-04 21:03:49 +01:00
Dave Murphy
5ae950ae8b devkitPPC: r45.2 2024-04-28 12:44:28 +01:00
Dave Murphy
c62e968c1e devkitPPC: newlib tweaks 2024-04-28 12:42:29 +01:00
Dave Murphy
ee693ddac0 devkitPPC: fix regex.h for C++ 2024-04-22 09:37:31 +01:00
Dave Murphy
ff5a6b07d3 devkitPPC: fixup file buffer alignment 2024-04-20 15:33:32 +01:00
Dave Murphy
80f5db66de devkitPPC: fix readdir 2024-04-14 17:48:41 +01:00
Dave Murphy
4ef6c0321a devkitPPC: syscall abort & assert_func 2024-04-12 18:20:07 +01:00
Dave Murphy
b4e8b963f3 devkitPPC: expand dirent 2024-04-06 16:25:51 +01:00
Dave Murphy
dbd33d2312 devkitPPC: add stat to dirent 2024-03-30 20:53:11 +00:00
Dave Murphy
3f5312c34a devkitPPC: update binutils to 2.42 2024-03-30 20:52:39 +00:00
Dave Murphy
1ac48f5437 devkitA64: add sys/mkdev.h header 2024-02-15 19:19:55 +00:00
Dave Murphy
9d8f579c1c devkitA64: update newlib to 4.4.0 2024-02-01 20:48:07 +00:00
Dave Murphy
de681b1691 devkitA64: update binutils to 2.42 2024-02-01 20:48:02 +00:00
16 changed files with 8889 additions and 8759 deletions

View File

@@ -1,8 +1,8 @@
#!/usr/bin/env bash
#---------------------------------------------------------------------------------
# devkitARM release 63
# devkitPPC release 45
# devkitA64 release 24
# devkitARM release 66
# devkitPPC release 46.1
# devkitA64 release 27
#---------------------------------------------------------------------------------
if [ 0 -eq 1 ] ; then
@@ -27,8 +27,8 @@ echo
DKARM_RULES_VER=1.5.0
DKARM_CRTLS_VER=1.2.2
DKARM_RULES_VER=1.6.1
DKARM_CRTLS_VER=1.2.7
DKPPC_RULES_VER=1.2.1
@@ -36,6 +36,18 @@ DKA64_RULES_VER=1.1.1
OSXMIN=${OSXMIN:-10.9}
#---------------------------------------------------------------------------------
# find proper patch
#---------------------------------------------------------------------------------
if [ -z "$PATCH" -a -x "$(which gpatch)" ]; then PATCH=$(which gpatch); fi
if [ -z "$PATCH" -a -x "$(which patch)" ]; then PATCH=$(which patch); fi
if [ -z "$PATCH" ]; then
echo no patch found
exit 1
fi
echo use $PATCH as patch
export PATCH
#---------------------------------------------------------------------------------
function extract_and_patch {
#---------------------------------------------------------------------------------
@@ -46,7 +58,7 @@ function extract_and_patch {
fi
if [[ ! -f patched-$1-$2 && -f $patchdir/$1-$2.patch ]]; then
echo "patching $1-$2"
patch -p1 -d $1-$2 -i $patchdir/$1-$2.patch || { echo "Error patching $1"; exit 1; }
$PATCH -p1 -d $1-$2 -i $patchdir/$1-$2.patch || { echo "Error patching $1"; exit 1; }
touch patched-$1-$2
fi
}

View File

@@ -1,8 +1,8 @@
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index ec856764519..436098cbcc2 100644
index b89d3dda05d..1ad8a9c088d 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -1966,6 +1966,14 @@ struct output_elf_obj_tdata
@@ -2005,6 +2005,14 @@ struct output_elf_obj_tdata
asection *sec;
} package_metadata;
@@ -18,10 +18,10 @@ index ec856764519..436098cbcc2 100644
bfd_size_type program_header_size;
diff --git a/bfd/elf.c b/bfd/elf.c
index d38e0afff2e..372e6615931 100644
index f85f79e1e35..d27f05b92ae 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -7321,6 +7321,14 @@ _bfd_elf_write_object_contents (bfd *abfd)
@@ -7166,6 +7166,14 @@ _bfd_elf_write_object_contents (bfd *abfd)
if (!bed->s->write_shdrs_and_ehdr (abfd))
return false;
@@ -37,7 +37,7 @@ index d38e0afff2e..372e6615931 100644
if (t->o->build_id.after_write_object_contents != NULL
&& !(*t->o->build_id.after_write_object_contents) (abfd))
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 4592bd6da27..dc27042cfe2 100644
index 94c9a01069b..d39880b27c4 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -2441,6 +2441,12 @@ enum elf_aarch64_stub_type
@@ -53,7 +53,7 @@ index 4592bd6da27..dc27042cfe2 100644
struct elf_aarch64_stub_hash_entry
{
/* Base hash table entry structure. */
@@ -6916,11 +6922,13 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
@@ -6969,11 +6975,13 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
Elf_Internal_Sym *sym;
asection *sec;
struct elf_link_hash_entry *h;
@@ -67,7 +67,7 @@ index 4592bd6da27..dc27042cfe2 100644
char *error_message = NULL;
r_symndx = ELFNN_R_SYM (rel->r_info);
@@ -7060,6 +7068,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
@@ -7113,6 +7121,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
h, &unresolved_reloc,
save_addend, &addend, sym);
@@ -78,7 +78,7 @@ index 4592bd6da27..dc27042cfe2 100644
switch (elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type))
{
case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
@@ -7083,7 +7095,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
@@ -7136,7 +7148,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
need_relocs =
(!bfd_link_executable (info) || indx != 0) &&
(h == NULL
@@ -87,7 +87,7 @@ index 4592bd6da27..dc27042cfe2 100644
|| h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7178,7 +7190,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
@@ -7231,7 +7243,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
need_relocs =
(!bfd_link_executable (info) || indx != 0) &&
(h == NULL
@@ -96,7 +96,7 @@ index 4592bd6da27..dc27042cfe2 100644
|| h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7227,7 +7239,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
@@ -7280,7 +7292,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
bfd_vma off = symbol_tlsdesc_got_offset (input_bfd, h, r_symndx);
need_relocs = (h == NULL
@@ -105,7 +105,7 @@ index 4592bd6da27..dc27042cfe2 100644
|| h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7553,6 +7565,23 @@ need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
@@ -7606,6 +7618,23 @@ need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
return false;
}
@@ -129,7 +129,7 @@ index 4592bd6da27..dc27042cfe2 100644
/* Adjust a symbol defined by a dynamic object and referenced by a
regular object. The current definition is in some section of the
dynamic object, but we're not including those sections. We have to
@@ -8771,6 +8800,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8824,6 +8853,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
struct elf_aarch64_link_hash_table *htab;
struct elf_aarch64_link_hash_entry *eh;
struct elf_dyn_relocs *p;
@@ -137,7 +137,7 @@ index 4592bd6da27..dc27042cfe2 100644
/* An example of a bfd_link_hash_indirect symbol is versioned
symbol. For example: __gxx_personality_v0(bfd_link_hash_indirect)
@@ -8790,6 +8820,10 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8843,6 +8873,10 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
info = (struct bfd_link_info *) inf;
htab = elf_aarch64_hash_table (info);
@@ -148,7 +148,7 @@ index 4592bd6da27..dc27042cfe2 100644
/* Since STT_GNU_IFUNC symbol must go through PLT, we handle it
here if it is defined and referenced in a non-shared object. */
if (h->type == STT_GNU_IFUNC
@@ -8799,7 +8833,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8852,7 +8886,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
{
/* Make sure this symbol is output as a dynamic symbol.
Undefined weak syms won't yet be marked as dynamic. */
@@ -157,7 +157,7 @@ index 4592bd6da27..dc27042cfe2 100644
&& h->root.type == bfd_link_hash_undefweak)
{
if (!bfd_elf_link_record_dynamic_symbol (info, h))
@@ -8833,6 +8867,11 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8886,6 +8920,11 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
of relaxing into these from the large model PLT entries. */
s->size += htab->plt_entry_size;
@@ -169,7 +169,7 @@ index 4592bd6da27..dc27042cfe2 100644
/* We also need to make an entry in the .got.plt section, which
will be placed in the .got section by the linker script. */
htab->root.sgotplt->size += GOT_ENTRY_SIZE;
@@ -8861,6 +8900,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8914,6 +8953,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
htab->variant_pcs = 1;
}
@@ -177,7 +177,7 @@ index 4592bd6da27..dc27042cfe2 100644
else
{
h->plt.offset = (bfd_vma) - 1;
@@ -8873,9 +8913,6 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8926,9 +8966,6 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
h->needs_plt = 0;
}
@@ -187,7 +187,7 @@ index 4592bd6da27..dc27042cfe2 100644
if (h->got.refcount > 0)
{
bool dyn;
@@ -8887,7 +8924,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8940,7 +8977,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
/* Make sure this symbol is output as a dynamic symbol.
Undefined weak syms won't yet be marked as dynamic. */
@@ -196,7 +196,7 @@ index 4592bd6da27..dc27042cfe2 100644
&& h->root.type == bfd_link_hash_undefweak)
{
if (!bfd_elf_link_record_dynamic_symbol (info, h))
@@ -8901,7 +8938,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8954,7 +8991,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
{
h->got.offset = htab->root.sgot->size;
htab->root.sgot->size += GOT_ENTRY_SIZE;
@@ -205,7 +205,7 @@ index 4592bd6da27..dc27042cfe2 100644
|| h->root.type != bfd_link_hash_undefweak)
&& (bfd_link_pic (info)
|| WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h))
@@ -8937,7 +8974,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8990,7 +9027,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
}
indx = h && h->dynindx != -1 ? h->dynindx : 0;
@@ -214,7 +214,7 @@ index 4592bd6da27..dc27042cfe2 100644
|| h->root.type != bfd_link_hash_undefweak)
&& (!bfd_link_executable (info)
|| indx != 0
@@ -9019,7 +9056,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -9072,7 +9109,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
visibility. */
if (h->dyn_relocs != NULL && h->root.type == bfd_link_hash_undefweak)
{
@@ -223,7 +223,7 @@ index 4592bd6da27..dc27042cfe2 100644
|| UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
h->dyn_relocs = NULL;
@@ -9039,7 +9076,9 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -9092,7 +9129,9 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
symbols which turn out to need copy relocs or are not
dynamic. */
@@ -234,7 +234,7 @@ index 4592bd6da27..dc27042cfe2 100644
&& ((h->def_dynamic
&& !h->def_regular)
|| (htab->root.dynamic_sections_created
@@ -9050,6 +9089,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -9103,6 +9142,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
Undefined weak syms won't yet be marked as dynamic. */
if (h->dynindx == -1
&& !h->forced_local
@@ -242,7 +242,7 @@ index 4592bd6da27..dc27042cfe2 100644
&& h->root.type == bfd_link_hash_undefweak
&& !bfd_elf_link_record_dynamic_symbol (info, h))
return false;
@@ -9607,8 +9647,17 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
@@ -10058,8 +10098,17 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
Elf_Internal_Sym *sym)
{
struct elf_aarch64_link_hash_table *htab;
@@ -260,8 +260,8 @@ index 4592bd6da27..dc27042cfe2 100644
if (h->plt.offset != (bfd_vma) - 1)
{
asection *plt, *gotplt, *relplt;
@@ -9643,7 +9692,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
return false;
@@ -10094,7 +10143,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
abort ();
elfNN_aarch64_create_small_pltn_entry (h, htab, output_bfd, info);
- if (!h->def_regular)
@@ -269,7 +269,7 @@ index 4592bd6da27..dc27042cfe2 100644
{
/* Mark the symbol as undefined, rather than as defined in
the .plt section. */
@@ -9665,7 +9714,8 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
@@ -10116,7 +10165,8 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
&& elf_aarch64_hash_entry (h)->got_type == GOT_NORMAL
/* Undefined weak symbol in static PIE resolves to 0 without
any dynamic relocations. */
@@ -279,7 +279,7 @@ index 4592bd6da27..dc27042cfe2 100644
{
Elf_Internal_Rela rela;
bfd_byte *loc;
@@ -10312,6 +10362,9 @@ const struct elf_size_info elfNN_aarch64_size_info =
@@ -10766,6 +10816,9 @@ const struct elf_size_info elfNN_aarch64_size_info =
#define elf_backend_init_index_section \
_bfd_elf_init_2_index_sections
@@ -290,30 +290,30 @@ index 4592bd6da27..dc27042cfe2 100644
elfNN_aarch64_finish_dynamic_sections
diff --git a/ld/emulparams/aarch64elf.sh b/ld/emulparams/aarch64elf.sh
index 8f68e517b45..260a590e69e 100644
index 72616b57691..42f708118fb 100644
--- a/ld/emulparams/aarch64elf.sh
+++ b/ld/emulparams/aarch64elf.sh
@@ -1,3 +1,5 @@
@@ -1,4 +1,5 @@
source_sh ${srcdir}/emulparams/dt-relr.sh
+source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
+
ARCH=aarch64
MACHINE=
NOP=0x1f2003d5
diff --git a/ld/emulparams/aarch64elf32.sh b/ld/emulparams/aarch64elf32.sh
index 5a08d9e29f1..e4c9abf85a1 100644
index 45bf31a179a..02e0cad8699 100644
--- a/ld/emulparams/aarch64elf32.sh
+++ b/ld/emulparams/aarch64elf32.sh
@@ -1,3 +1,5 @@
@@ -1,4 +1,5 @@
source_sh ${srcdir}/emulparams/dt-relr.sh
+source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
+
ARCH="aarch64:ilp32"
MACHINE=
NOP=0x1f2003d5
diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
index d47bdbf9937..b6f76d5c8d7 100644
index aa2859d4f73..c680dca8f86 100644
--- a/ld/emultempl/aarch64elf.em
+++ b/ld/emultempl/aarch64elf.em
@@ -378,7 +378,7 @@ PARSE_AND_LIST_LONGOPTS='
@@ -368,7 +368,7 @@ PARSE_AND_LIST_LONGOPTS='
{ "no-apply-dynamic-relocs", no_argument, NULL, OPTION_NO_APPLY_DYNAMIC_RELOCS},
'
@@ -323,29 +323,22 @@ index d47bdbf9937..b6f76d5c8d7 100644
" enum sizes\n"));
fprintf (file, _(" --no-wchar-size-warning Don'\''t warn about objects with incompatible\n"
diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
index 3f67f8b09d9..eb8e8e1596e 100644
index 863657e12f5..672974df511 100644
--- a/ld/emultempl/elf.em
+++ b/ld/emultempl/elf.em
@@ -572,6 +572,7 @@ enum elf_options
OPTION_EXCLUDE_LIBS,
OPTION_HASH_STYLE,
OPTION_BUILD_ID,
+ OPTION_NX_MODULE_NAME,
OPTION_PACKAGE_METADATA,
OPTION_AUDIT,
OPTION_COMPRESS_DEBUG
@@ -603,6 +604,7 @@ EOF
@@ -813,6 +813,7 @@ EOF
fi
fragment <<EOF
{"build-id", optional_argument, NULL, OPTION_BUILD_ID},
+ {"nx-module-name", optional_argument, NULL, OPTION_NX_MODULE_NAME},
{"package-metadata", optional_argument, NULL, OPTION_PACKAGE_METADATA},
{"compress-debug-sections", required_argument, NULL, OPTION_COMPRESS_DEBUG},
EOF
@@ -673,6 +675,16 @@ gld${EMULATION_NAME}_handle_option (int optc)
einfo (_("%F%P: invalid --compress-debug-sections option: \`%s'\n"),
optarg);
{"rosegment", no_argument, NULL, OPTION_ROSEGMENT},
@@ -892,6 +893,18 @@ gld${EMULATION_NAME}_handle_option (int optc)
case OPTION_NO_ROSEGMENT:
link_info.one_rosegment = false;
break;
+
+ case OPTION_NX_MODULE_NAME:
+ if (ldelf_emit_nx_module_name != NULL)
+ {
@@ -356,11 +349,12 @@ index 3f67f8b09d9..eb8e8e1596e 100644
+ optarg = "";
+ ldelf_emit_nx_module_name = xstrdup (optarg);
+ break;
+
EOF
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
diff --git a/ld/ldelf.c b/ld/ldelf.c
index f9a6819366f..99e982ef5eb 100644
index 09691609fc0..5769b4aa0f9 100644
--- a/ld/ldelf.c
+++ b/ld/ldelf.c
@@ -55,6 +55,9 @@ const char *ldelf_emit_note_gnu_build_id;
@@ -373,7 +367,7 @@ index f9a6819366f..99e982ef5eb 100644
/* These variables are required to pass information back and forth
between after_open and check_needed and stat_needed and vercheck. */
@@ -1206,8 +1209,93 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
@@ -1209,8 +1212,93 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
*save_input_bfd_tail = NULL;
}
@@ -417,7 +411,7 @@ index f9a6819366f..99e982ef5eb 100644
+ position = i_shdr->sh_offset + asec->output_offset;
+
+ return (bfd_seek (abfd, position, SEEK_SET) == 0
+ && bfd_bwrite (contents, size, abfd) == size);
+ && bfd_write (contents, size, abfd) == size);
+}
+
+/* Make .nx-module-name section, and set up elf_tdata->nx_module_name. */
@@ -468,7 +462,7 @@ index f9a6819366f..99e982ef5eb 100644
void
ldelf_before_plugin_all_symbols_read (int use_libpath, int native,
int is_linux, int is_freebsd,
@@ -1286,6 +1374,24 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
@@ -1289,6 +1377,24 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
}
}
@@ -494,7 +488,7 @@ index f9a6819366f..99e982ef5eb 100644
/* Do not allow executable files to be used as inputs to the link. */
diff --git a/ld/ldelf.h b/ld/ldelf.h
index f82bd9234a7..96173dcd671 100644
index 239194772c4..68516dbf45e 100644
--- a/ld/ldelf.h
+++ b/ld/ldelf.h
@@ -20,6 +20,7 @@
@@ -505,3 +499,15 @@ index f82bd9234a7..96173dcd671 100644
extern void ldelf_after_parse (void);
extern bool ldelf_load_symbols (lang_input_statement_type *);
diff --git a/ld/ldlex.h b/ld/ldlex.h
index defe3fcbbb9..30f31df990e 100644
--- a/ld/ldlex.h
+++ b/ld/ldlex.h
@@ -186,6 +186,7 @@ enum option_values
/* Used by emultempl/elf.em, emultempl/pe.em and emultempl/pep.em. */
OPTION_BUILD_ID,
OPTION_EXCLUDE_LIBS,
+ OPTION_NX_MODULE_NAME,
/* Used by emulparams/elf32mcore.sh, emultempl/beos.em, emultempl/pe.em
and emultempl/pep.em. */
OPTION_BASE_FILE,

View File

@@ -1,8 +1,8 @@
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 648b3dc2110..ed605b28956 100644
index 95c91ee02be..4711542eee5 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1132,7 +1132,14 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
@@ -1195,7 +1195,14 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
tmake_file="${tmake_file} aarch64/t-aarch64"
case $target in
aarch64-*-elf*)
@@ -18,7 +18,7 @@ index 648b3dc2110..ed605b28956 100644
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 ec45f23fa41..a208eabd806 100644
index 5396da9b2d6..87235d680ad 100644
--- a/gcc/config/aarch64/aarch64-elf-raw.h
+++ b/gcc/config/aarch64/aarch64-elf-raw.h
@@ -22,6 +22,7 @@
@@ -30,27 +30,24 @@ index ec45f23fa41..a208eabd806 100644
#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 a9f3e2715ca..0c7304e1d81 100644
index a05c0d3ded1..5551807e4c6 100644
--- a/gcc/config/aarch64/aarch64-opts.h
+++ b/gcc/config/aarch64/aarch64-opts.h
@@ -52,6 +52,12 @@ enum aarch64_tls_type {
TLS_DESCRIPTORS
@@ -80,7 +80,8 @@ enum aarch64_tp_reg {
AARCH64_TPIDR_EL1 = 1,
AARCH64_TPIDR_EL2 = 2,
AARCH64_TPIDR_EL3 = 3,
- AARCH64_TPIDRRO_EL0 = 4
+ AARCH64_TPIDRRO_EL0 = 4,
+ AARCH64_TP_SOFT = 5
};
+/* 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 {
/* SVE vector register sizes. */
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index f5db5379543..f582e5a7543 100644
index 1beec94629d..90a9ec580f8 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -19550,8 +19550,24 @@ aarch64_load_tp (rtx target)
@@ -21060,8 +21060,24 @@ aarch64_load_tp (rtx target)
|| !register_operand (target, Pmode))
target = gen_reg_rtx (Pmode);
@@ -78,32 +75,31 @@ index f5db5379543..f582e5a7543 100644
}
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index 73b09e20508..ad62b5080cc 100644
index 4fa1dfc7906..43a01fe3d56 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -1154,6 +1154,10 @@ typedef struct
@@ -1377,6 +1377,10 @@ typedef struct
/* Check TLS Descriptors mechanism is selected. */
#define TARGET_TLS_DESC (aarch64_tls_dialect == TLS_DESCRIPTORS)
+/* Check selected thread pointer access sequence to use. */
+#define TARGET_HARD_TP (target_thread_pointer == TP_HARD)
+#define TARGET_SOFT_TP (target_thread_pointer == TP_SOFT)
+#define TARGET_HARD_TP (aarch64_tpidr_reg != AARCH64_TP_SOFT)
+#define TARGET_SOFT_TP (aarch64_tpidr_reg == AARCH64_TP_SOFT)
+
extern enum aarch64_code_model aarch64_cmodel;
/* When using the tiny addressing model conditional and unconditional branches
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 36d0bb3f718..cfa2f7efc7f 100644
index dbde066f747..3e3198bf52f 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -7068,11 +7068,22 @@
@@ -7436,11 +7436,22 @@
(define_insn "aarch64_load_tp_hard"
[(set (match_operand:DI 0 "register_operand" "=r")
(unspec:DI [(const_int 0)] UNSPEC_TLS))]
- ""
- "mrs\\t%0, tpidr_el0"
+ "TARGET_HARD_TP"
+ "mrs\\t%0, tpidr_el0\\t// aarch64_load_tp_hard"
"* return aarch64_output_load_tp (operands[0]);"
[(set_attr "type" "mrs")]
)
@@ -122,32 +118,20 @@ index 36d0bb3f718..cfa2f7efc7f 100644
;; instructions in the TLS stubs, in order to enable linker relaxation.
;; Therefore we treat the stubs as an atomic sequence.
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
index 1d7967db9c0..17870f18b8b 100644
index 6356c419399..a6907ed0a0b 100644
--- a/gcc/config/aarch64/aarch64.opt
+++ b/gcc/config/aarch64/aarch64.opt
@@ -128,6 +128,21 @@ Enum(aarch64_tls_size) String(32) Value(32)
@@ -128,6 +128,9 @@ Enum(tp_reg) String(tpidr_el3) Value(AARCH64_TPIDR_EL3)
EnumValue
Enum(aarch64_tls_size) String(48) Value(48)
Enum(tp_reg) String(tpidrro_el0) Value(AARCH64_TPIDRRO_EL0)
+mtp=
+Target RejectNegative Joined Enum(aarch64_tp_type) Var(target_thread_pointer) Init(TP_HARD)
+Specify how to access the thread pointer.
+
+Enum
+Name(aarch64_tp_type) Type(enum aarch64_tp_type)
+Valid arguments to -mtp=:
+
+EnumValue
+Enum(aarch64_tp_type) String(hard) Value(TP_HARD)
+Enum(tp_reg) String(soft) Value(AARCH64_TP_SOFT)
+
+EnumValue
+Enum(aarch64_tp_type) String(soft) Value(TP_SOFT)
+
+
march=
Target RejectNegative Negative(march=) ToLower Joined Var(aarch64_arch_string)
Use features of architecture ARCH.
@@ -266,7 +281,7 @@ TargetVariable
mtp=
Target RejectNegative Joined Enum(tp_reg) Var(aarch64_tpidr_reg) Init(AARCH64_TPIDR_EL0) Save
Specify the thread pointer register.
@@ -329,7 +332,7 @@ TargetVariable
long aarch64_stack_protector_guard_offset = 0
moutline-atomics
@@ -155,13 +139,13 @@ index 1d7967db9c0..17870f18b8b 100644
+Target Var(aarch64_flag_outline_atomics) Save
Generate local calls to out-of-line atomic operations.
-param=aarch64-sve-compare-costs=
-param=aarch64-vect-compare-costs=
diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64
index a9a244ab6d6..a29f2772d63 100644
index 78713558e7d..76c0914d8ce 100644
--- a/gcc/config/aarch64/t-aarch64
+++ b/gcc/config/aarch64/t-aarch64
@@ -177,8 +177,10 @@ aarch64-cc-fusion.o: $(srcdir)/config/aarch64/aarch64-cc-fusion.cc \
$(srcdir)/config/aarch64/aarch64-cc-fusion.cc
@@ -208,8 +208,10 @@ aarch64-ldp-fusion.o: $(srcdir)/config/aarch64/aarch64-ldp-fusion.cc \
$(srcdir)/config/aarch64/aarch64-ldp-fusion.cc
comma=,
-MULTILIB_OPTIONS = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst $(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG))))
@@ -246,8 +230,15 @@ index 00000000000..9acbbf9d27c
+Driver
+
+; This comment is to ensure we retain the blank line above.
diff --git a/gcc/config/devkitpro.opt.urls b/gcc/config/devkitpro.opt.urls
new file mode 100644
index 00000000000..ab7b466aa71
--- /dev/null
+++ b/gcc/config/devkitpro.opt.urls
@@ -0,0 +1 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/devkitpro.opt and generated HTML
diff --git a/gcc/config/i386/host-mingw32.cc b/gcc/config/i386/host-mingw32.cc
index acff6138d63..8dc91b75f93 100644
index 42563982e42..923dc198a7e 100644
--- a/gcc/config/i386/host-mingw32.cc
+++ b/gcc/config/i386/host-mingw32.cc
@@ -93,7 +93,10 @@ mingw32_gt_pch_get_address (size_t size, int)
@@ -263,10 +254,10 @@ index acff6138d63..8dc91b75f93 100644
MEM_RESERVE | MEM_TOP_DOWN,
PAGE_NOACCESS);
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index 16bb07f2cdc..22a181a3a1c 100644
index 728332b8153..47fc03eb8c8 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -868,6 +868,11 @@ proper position among the other output files. */
@@ -881,6 +881,11 @@ proper position among the other output files. */
#endif
#endif
@@ -278,7 +269,7 @@ index 16bb07f2cdc..22a181a3a1c 100644
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */
#ifndef STARTFILE_SPEC
#define STARTFILE_SPEC \
@@ -1191,6 +1196,7 @@ static const char *link_spec = LINK_SPEC;
@@ -1208,6 +1213,7 @@ static const char *link_spec = LINK_SPEC;
static const char *lib_spec = LIB_SPEC;
static const char *link_gomp_spec = "";
static const char *libgcc_spec = LIBGCC_SPEC;
@@ -286,7 +277,7 @@ index 16bb07f2cdc..22a181a3a1c 100644
static const char *endfile_spec = ENDFILE_SPEC;
static const char *startfile_spec = STARTFILE_SPEC;
static const char *linker_name_spec = LINKER_NAME;
@@ -1701,6 +1707,7 @@ static struct spec_list static_specs[] =
@@ -1720,6 +1726,7 @@ static struct spec_list static_specs[] =
INIT_STATIC_SPEC ("lib", &lib_spec),
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
@@ -294,8 +285,21 @@ index 16bb07f2cdc..22a181a3a1c 100644
INIT_STATIC_SPEC ("startfile", &startfile_spec),
INIT_STATIC_SPEC ("cross_compile", &cross_compile),
INIT_STATIC_SPEC ("version", &compiler_version),
diff --git a/libcc1/configure b/libcc1/configure
index ea689a353c8..98f9d9b21b7 100755
--- a/libcc1/configure
+++ b/libcc1/configure
@@ -5119,7 +5119,7 @@ else
# Adding the `sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored
case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
- *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
+ $tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
break
;;
*)
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
index 93ff5b81dc5..20c0fe89a28 100644
index 38d3859a73c..f97358d9787 100644
--- a/libgcc/crtstuff.c
+++ b/libgcc/crtstuff.c
@@ -326,7 +326,7 @@ register_tm_clones (void)
@@ -308,7 +312,7 @@ index 93ff5b81dc5..20c0fe89a28 100644
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 --git a/libgcc/gthr.h b/libgcc/gthr.h
index 1989c0c86ed..f1c49b2d4b1 100644
index 33c2d8ff630..2a0a9c1e87e 100644
--- a/libgcc/gthr.h
+++ b/libgcc/gthr.h
@@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
@@ -321,10 +325,10 @@ index 1989c0c86ed..f1c49b2d4b1 100644
#define GTHREAD_USE_WEAK 0
#endif
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index a880e8ee227..c58249f986c 100644
index 422a0f4bd0a..ee09ada9170 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -1417,6 +1417,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
@@ -1429,6 +1429,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
@@ -333,10 +337,10 @@ index a880e8ee227..c58249f986c 100644
< $< > $@
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 0ff875b280b..37820c57a0a 100644
index 9fd4ab4848c..beea48941a3 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -1891,6 +1891,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
@@ -1903,6 +1903,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
@@ -344,3 +348,16 @@ index 0ff875b280b..37820c57a0a 100644
-e 's,^#include "\(.*\)",#include <bits/\1>,g' \
< $< > $@
diff --git a/lto-plugin/configure b/lto-plugin/configure
index 28f5dd79cd7..a79f318a4d6 100755
--- a/lto-plugin/configure
+++ b/lto-plugin/configure
@@ -6469,7 +6469,7 @@ else
# Adding the `sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored
case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
- *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
+ $tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
break
;;
*)

View File

@@ -13,7 +13,7 @@ index 0d4460b58..0eab54b65 100644
include lm32/Makefile.inc
endif
diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in
index fd845cf5f..5f80b89ab 100644
index fd845cf5f..0a6ff43fb 100644
--- a/libgloss/Makefile.in
+++ b/libgloss/Makefile.in
@@ -173,25 +173,28 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3)
@@ -104,7 +104,7 @@ index fd845cf5f..5f80b89ab 100644
$(top_srcdir)/m68k/acinclude.m4 \
$(top_srcdir)/mcore/acinclude.m4 \
$(top_srcdir)/mips/acinclude.m4 \
@@ -459,6 +463,69 @@ libobjs_a_LIBADD =
@@ -459,6 +463,70 @@ libobjs_a_LIBADD =
am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \
$(am__objects_5) $(am__objects_6) $(am__objects_7)
libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS)
@@ -118,6 +118,7 @@ index fd845cf5f..5f80b89ab 100644
+libsysbase_libsysbase_a_LIBADD =
+@CONFIG_LIBSYSBASE_TRUE@am_libsysbase_libsysbase_a_OBJECTS = libsysbase/libsysbase_libsysbase_a-_exit.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-abort.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-assert.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-build_argv.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-chdir.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-chmod.$(OBJEXT) \
@@ -174,7 +175,7 @@ index fd845cf5f..5f80b89ab 100644
lm32_libgloss_a_AR = $(AR) $(ARFLAGS)
lm32_libgloss_a_LIBADD =
@CONFIG_LM32_TRUE@am_lm32_libgloss_a_OBJECTS = lm32/isatty.$(OBJEXT) \
@@ -668,7 +735,8 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \
@@ -668,7 +736,8 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \
$(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \
$(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \
$(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \
@@ -184,7 +185,7 @@ index fd845cf5f..5f80b89ab 100644
$(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \
$(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \
$(xtensa_libgloss_a_SOURCES) \
@@ -761,7 +829,7 @@ ETAGS = etags
@@ -761,7 +830,7 @@ ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
@@ -193,7 +194,7 @@ index fd845cf5f..5f80b89ab 100644
AARCH64_OBJTYPE = @AARCH64_OBJTYPE@
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -779,7 +847,7 @@ CCASFLAGS = @CCASFLAGS@
@@ -779,7 +848,7 @@ CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
@@ -202,7 +203,7 @@ index fd845cf5f..5f80b89ab 100644
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -874,6 +942,7 @@ pdfdir = @pdfdir@
@@ -874,6 +943,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
@@ -210,7 +211,7 @@ index fd845cf5f..5f80b89ab 100644
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -899,14 +968,14 @@ multilibtooldir = $(tooldir)/lib$(MULTISUBDIR)
@@ -899,14 +969,14 @@ multilibtooldir = $(tooldir)/lib$(MULTISUBDIR)
multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \
$(am__append_8) $(am__append_13) $(am__append_15) \
$(am__append_18) $(am__append_22) $(am__append_23) \
@@ -230,7 +231,7 @@ index fd845cf5f..5f80b89ab 100644
includetooldir = $(tooldir)/include
includetool_DATA = $(am__append_16)
includesystooldir = $(tooldir)/include/sys
@@ -917,7 +986,7 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include
@@ -917,7 +987,7 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include
# to install (e.g. our crt0.o objects).
noinst_LIBRARIES = libobjs.a
libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_25) \
@@ -239,7 +240,7 @@ index fd845cf5f..5f80b89ab 100644
FLAGS_TO_PASS = \
"CC=$(CC)" \
"CFLAGS=$(CFLAGS)" \
@@ -1098,6 +1167,65 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
@@ -1098,6 +1168,66 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
@CONFIG_LIBNOSYS_TRUE@ libnosys/getentropy.c \
@CONFIG_LIBNOSYS_TRUE@ libnosys/_exit.c
@@ -250,6 +251,7 @@ index fd845cf5f..5f80b89ab 100644
+@CONFIG_LIBSYSBASE_TRUE@libsysbase_libsysbase_a_SOURCES = \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/_exit.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/abort.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/assert.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/build_argv.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/chdir.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/chmod.c \
@@ -305,7 +307,7 @@ index fd845cf5f..5f80b89ab 100644
@CONFIG_LM32_TRUE@lm32_libgloss_a_SOURCES = \
@CONFIG_LM32_TRUE@ lm32/isatty.c \
@CONFIG_LM32_TRUE@ lm32/scall.S
@@ -1203,19 +1331,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
@@ -1203,19 +1333,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \
@@ -331,7 +333,7 @@ index fd845cf5f..5f80b89ab 100644
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c
@@ -1228,7 +1356,7 @@ all: config.h
@@ -1228,7 +1358,7 @@ all: config.h
.SUFFIXES: .S .c .dvi .o .obj .ps
am--refresh: Makefile
@:
@@ -340,7 +342,7 @@ index fd845cf5f..5f80b89ab 100644
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -1250,7 +1378,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@@ -1250,7 +1380,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
@@ -349,7 +351,7 @@ index fd845cf5f..5f80b89ab 100644
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
@@ -1730,6 +1858,183 @@ libobjs.a: $(libobjs_a_OBJECTS) $(libobjs_a_DEPENDENCIES) $(EXTRA_libobjs_a_DEPE
@@ -1730,6 +1860,186 @@ libobjs.a: $(libobjs_a_OBJECTS) $(libobjs_a_DEPENDENCIES) $(EXTRA_libobjs_a_DEPE
$(AM_V_at)-rm -f libobjs.a
$(AM_V_AR)$(libobjs_a_AR) libobjs.a $(libobjs_a_OBJECTS) $(libobjs_a_LIBADD)
$(AM_V_at)$(RANLIB) libobjs.a
@@ -372,6 +374,9 @@ index fd845cf5f..5f80b89ab 100644
+libsysbase/libsysbase_libsysbase_a-abort.$(OBJEXT): \
+ libsysbase/$(am__dirstamp) \
+ libsysbase/$(DEPDIR)/$(am__dirstamp)
+libsysbase/libsysbase_libsysbase_a-assert.$(OBJEXT): \
+ libsysbase/$(am__dirstamp) \
+ libsysbase/$(DEPDIR)/$(am__dirstamp)
+libsysbase/libsysbase_libsysbase_a-build_argv.$(OBJEXT): \
+ libsysbase/$(am__dirstamp) \
+ libsysbase/$(DEPDIR)/$(am__dirstamp)
@@ -533,7 +538,7 @@ index fd845cf5f..5f80b89ab 100644
lm32/isatty.$(OBJEXT): lm32/$(am__dirstamp) \
lm32/$(DEPDIR)/$(am__dirstamp)
lm32/scall.$(OBJEXT): lm32/$(am__dirstamp) \
@@ -2113,6 +2418,7 @@ mostlyclean-compile:
@@ -2113,6 +2423,7 @@ mostlyclean-compile:
-rm -f d30v/*.$(OBJEXT)
-rm -f iq2000/*.$(OBJEXT)
-rm -f libnosys/*.$(OBJEXT)
@@ -541,13 +546,14 @@ index fd845cf5f..5f80b89ab 100644
-rm -f lm32/*.$(OBJEXT)
-rm -f nios2/*.$(OBJEXT)
-rm -f riscv/*.$(OBJEXT)
@@ -2238,6 +2544,60 @@ distclean-compile:
@@ -2238,6 +2549,61 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/unlink.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/wait.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/dummy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-_exit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-abort.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-chdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-chmod.Po@am__quote@
@@ -602,7 +608,7 @@ index fd845cf5f..5f80b89ab 100644
@AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/crt0.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/isatty.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/scall.Po@am__quote@
@@ -3082,6 +3442,748 @@ csky/csky_libsemi_a-getpid.obj: csky/getpid.c
@@ -3082,6 +3448,762 @@ csky/csky_libsemi_a-getpid.obj: csky/getpid.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-getpid.obj `if test -f 'csky/getpid.c'; then $(CYGPATH_W) 'csky/getpid.c'; else $(CYGPATH_W) '$(srcdir)/csky/getpid.c'; fi`
@@ -634,6 +640,20 @@ index fd845cf5f..5f80b89ab 100644
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-abort.obj `if test -f 'libsysbase/abort.c'; then $(CYGPATH_W) 'libsysbase/abort.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/abort.c'; fi`
+
+libsysbase/libsysbase_libsysbase_a-assert.o: libsysbase/assert.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-assert.o -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo -c -o libsysbase/libsysbase_libsysbase_a-assert.o `test -f 'libsysbase/assert.c' || echo '$(srcdir)/'`libsysbase/assert.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libsysbase/assert.c' object='libsysbase/libsysbase_libsysbase_a-assert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-assert.o `test -f 'libsysbase/assert.c' || echo '$(srcdir)/'`libsysbase/assert.c
+
+libsysbase/libsysbase_libsysbase_a-assert.obj: libsysbase/assert.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-assert.obj -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo -c -o libsysbase/libsysbase_libsysbase_a-assert.obj `if test -f 'libsysbase/assert.c'; then $(CYGPATH_W) 'libsysbase/assert.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/assert.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libsysbase/assert.c' object='libsysbase/libsysbase_libsysbase_a-assert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-assert.obj `if test -f 'libsysbase/assert.c'; then $(CYGPATH_W) 'libsysbase/assert.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/assert.c'; fi`
+
+libsysbase/libsysbase_libsysbase_a-build_argv.o: libsysbase/build_argv.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-build_argv.o -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Tpo -c -o libsysbase/libsysbase_libsysbase_a-build_argv.o `test -f 'libsysbase/build_argv.c' || echo '$(srcdir)/'`libsysbase/build_argv.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Po
@@ -1351,7 +1371,7 @@ index fd845cf5f..5f80b89ab 100644
nios2/nios2_libnios2_a-io-close.o: nios2/io-close.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-close.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo -c -o nios2/nios2_libnios2_a-io-close.o `test -f 'nios2/io-close.c' || echo '$(srcdir)/'`nios2/io-close.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po
@@ -5103,6 +6205,8 @@ distclean-generic:
@@ -5103,6 +6225,8 @@ distclean-generic:
-rm -f iq2000/$(am__dirstamp)
-rm -f libnosys/$(DEPDIR)/$(am__dirstamp)
-rm -f libnosys/$(am__dirstamp)
@@ -1360,7 +1380,7 @@ index fd845cf5f..5f80b89ab 100644
-rm -f lm32/$(DEPDIR)/$(am__dirstamp)
-rm -f lm32/$(am__dirstamp)
-rm -f nios2/$(DEPDIR)/$(am__dirstamp)
@@ -5129,7 +6233,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \
@@ -5129,7 +6253,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -1369,7 +1389,7 @@ index fd845cf5f..5f80b89ab 100644
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-local distclean-tags
@@ -5272,7 +6376,7 @@ installcheck-am:
@@ -5272,7 +6396,7 @@ installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
@@ -1544,10 +1564,10 @@ index 268d86c51..1b918a61e 100644
m4_include([mips/acinclude.m4])
diff --git a/libgloss/libsysbase/Makefile.inc b/libgloss/libsysbase/Makefile.inc
new file mode 100644
index 000000000..123a1dedf
index 000000000..bb3c45c32
--- /dev/null
+++ b/libgloss/libsysbase/Makefile.inc
@@ -0,0 +1,66 @@
@@ -0,0 +1,67 @@
+multilibtool_DATA += %D%/sysbase.specs
+
+multilibtool_LIBRARIES += %D%/libpthread.a
@@ -1563,6 +1583,7 @@ index 000000000..123a1dedf
+%C%_libsysbase_a_SOURCES = \
+ %D%/_exit.c \
+ %D%/abort.c \
+ %D%/assert.c \
+ %D%/build_argv.c \
+ %D%/chdir.c \
+ %D%/chmod.c \
@@ -1638,16 +1659,23 @@ index 000000000..a45723f84
+}
diff --git a/libgloss/libsysbase/abort.c b/libgloss/libsysbase/abort.c
new file mode 100644
index 000000000..9272e22c9
index 000000000..9074c8fa2
--- /dev/null
+++ b/libgloss/libsysbase/abort.c
@@ -0,0 +1,8 @@
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/iosupport.h>
+
+void abort(void) {
+ write (2, "Abort called.\n", sizeof("Abort called.\n")-1);
+ _exit (1);
+ do {
+
+ if ( __has_syscall(abort) ) {
+ __syscall_abort();
+ } else {
+ _exit (1);
+ }
+ } while(1);
+}
+
diff --git a/libgloss/libsysbase/acconfig.h b/libgloss/libsysbase/acconfig.h
@@ -1718,6 +1746,29 @@ index 000000000..7b0d7b4d6
+ z8k-*-*) ;;
+ *) AC_DEFINE(MISSING_SYSCALL_NAMES, 1, [Missing syscall names]) ;;
+esac
diff --git a/libgloss/libsysbase/assert.c b/libgloss/libsysbase/assert.c
new file mode 100644
index 000000000..faa74b866
--- /dev/null
+++ b/libgloss/libsysbase/assert.c
@@ -0,0 +1,17 @@
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/iosupport.h>
+
+void
+__assert_func (const char *file,
+ int line,
+ const char *func,
+ const char *failedexpr)
+{
+ if ( __has_syscall(assert_func) ) {
+ __syscall_assert_func(file, line, func, failedexpr);
+ }
+ abort();
+ /* NOTREACHED */
+}
diff --git a/libgloss/libsysbase/build_argv.c b/libgloss/libsysbase/build_argv.c
new file mode 100644
index 000000000..0697f53d2
@@ -6465,10 +6516,10 @@ index 000000000..d15eab89d
+
diff --git a/libgloss/libsysbase/dirent.c b/libgloss/libsysbase/dirent.c
new file mode 100644
index 000000000..482d2f814
index 000000000..4dfeabd71
--- /dev/null
+++ b/libgloss/libsysbase/dirent.c
@@ -0,0 +1,257 @@
@@ -0,0 +1,241 @@
+#include <malloc.h>
+#include <errno.h>
+#include <string.h>
@@ -6608,47 +6659,13 @@ index 000000000..482d2f814
+ return res;
+}
+
+
+struct dirent* readdir (DIR *dirp) {
+ struct stat st;
+ char filename[NAME_MAX+1];
+ int res;
+ int olderrno = errno;
+
+ if (!dirp) {
+ errno = EBADF;
+ return NULL;
+ }
+
+ res = __dirnext (dirp->dirData, filename, &st);
+
+ if (res < 0) {
+ if (errno == ENOENT) {
+ // errno == ENONENT set by dirnext means it's end of directory
+ // But readdir should not touch errno in case of dir end
+ errno = olderrno;
+ }
+ return NULL;
+ }
+
+ // We've moved forward in the directory
+ dirp->position += 1;
+
+ if (strnlen(filename, sizeof(filename)) >= sizeof(dirp->fileData.d_name)) {
+ errno = EOVERFLOW;
+ return NULL;
+ }
+
+ strncpy (dirp->fileData.d_name, filename, sizeof(dirp->fileData.d_name));
+ dirp->fileData.d_ino = st.st_ino;
+ dirp->fileData.d_type = IFTODT(st.st_mode);
+
+ return &(dirp->fileData);
+}
+
+
+int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result) {
+ struct stat st;
+#ifdef _DIRENT_HAVE_D_STAT
+ struct stat *st = &dirp->fileData.d_stat;
+#else
+ struct stat tmpstat;
+ struct stat *st = &tmpstat;
+#endif
+ char filename[NAME_MAX+1];
+ int res;
+
@@ -6656,7 +6673,11 @@ index 000000000..482d2f814
+ return EBADF;
+ }
+
+ res = __dirnext (dirp->dirData, filename, &st);
+ if (!result) {
+ return EFAULT;
+ }
+
+ res = __dirnext (dirp->dirData, filename, st);
+
+ if (res < 0) {
+ res = errno;
@@ -6665,6 +6686,7 @@ index 000000000..482d2f814
+ // errno == ENONENT set by dirnext means it's end of directory
+ // But readdir should not touch errno in case of dir end
+ res = 0;
+ errno = 0;
+ }
+ return res;
+ }
@@ -6678,13 +6700,26 @@ index 000000000..482d2f814
+ }
+
+ strncpy (entry->d_name, filename, sizeof(entry->d_name));
+ entry->d_ino = st.st_ino;
+ entry->d_type = IFTODT(st.st_mode);
+ entry->d_ino = st->st_ino;
+ entry->d_type = IFTODT(st->st_mode);
+
+ *result = entry;
+ return 0;
+}
+
+struct dirent* readdir (DIR *dirp) {
+
+ struct dirent *entry = &dirp->fileData;
+
+ int res = readdir_r(dirp, entry, &entry);
+
+ if (res !=0) {
+ errno = res;
+ return NULL;
+ }
+
+ return entry;
+}
+
+void rewinddir (DIR *dirp) {
+ if (!dirp) {
@@ -7058,7 +7093,7 @@ index 000000000..2bada9736
+}
diff --git a/libgloss/libsysbase/fpathconf.c b/libgloss/libsysbase/fpathconf.c
new file mode 100644
index 000000000..453f64870
index 000000000..9cba92a72
--- /dev/null
+++ b/libgloss/libsysbase/fpathconf.c
@@ -0,0 +1,30 @@
@@ -7078,7 +7113,7 @@ index 000000000..453f64870
+ struct _reent *r = _REENT;
+
+ if ( NULL == handle ) {
+ errno = EINVAL;
+ errno = EBADF;
+ return ret;
+ }
+
@@ -7094,10 +7129,10 @@ index 000000000..453f64870
+}
diff --git a/libgloss/libsysbase/fstat.c b/libgloss/libsysbase/fstat.c
new file mode 100644
index 000000000..32267b828
index 000000000..94924d802
--- /dev/null
+++ b/libgloss/libsysbase/fstat.c
@@ -0,0 +1,32 @@
@@ -0,0 +1,35 @@
+#include "config.h"
+#include <_ansi.h>
+#include <_syslist.h>
@@ -7117,7 +7152,10 @@ index 000000000..32267b828
+ if(fileDesc!=-1) {
+ handle = __get_handle(fileDesc);
+
+ if ( NULL == handle ) return ret;
+ if ( NULL == handle ) {
+ errno = EBADF;
+ return ret;
+ }
+
+ dev = handle->device;
+
@@ -7132,7 +7170,7 @@ index 000000000..32267b828
+}
diff --git a/libgloss/libsysbase/fsync.c b/libgloss/libsysbase/fsync.c
new file mode 100644
index 000000000..fb06cb6d1
index 000000000..e63e3762b
--- /dev/null
+++ b/libgloss/libsysbase/fsync.c
@@ -0,0 +1,34 @@
@@ -7156,7 +7194,7 @@ index 000000000..fb06cb6d1
+ handle = __get_handle(fileDesc);
+
+ if ( NULL == handle ) {
+ errno = EINVAL;
+ errno = EBADF;
+ return ret;
+ }
+
@@ -7172,7 +7210,7 @@ index 000000000..fb06cb6d1
+}
diff --git a/libgloss/libsysbase/ftruncate.c b/libgloss/libsysbase/ftruncate.c
new file mode 100644
index 000000000..0cd7d0fc4
index 000000000..94b4a3761
--- /dev/null
+++ b/libgloss/libsysbase/ftruncate.c
@@ -0,0 +1,34 @@
@@ -7196,7 +7234,7 @@ index 000000000..0cd7d0fc4
+ handle = __get_handle(fileDesc);
+
+ if ( NULL == handle ) {
+ r->_errno = EINVAL;
+ r->_errno=EBADF;
+ return ret;
+ }
+
@@ -7741,10 +7779,10 @@ index 000000000..d7a988359
+
diff --git a/libgloss/libsysbase/lseek.c b/libgloss/libsysbase/lseek.c
new file mode 100644
index 000000000..39ef385b1
index 000000000..c5568e338
--- /dev/null
+++ b/libgloss/libsysbase/lseek.c
@@ -0,0 +1,35 @@
@@ -0,0 +1,38 @@
+#include "config.h"
+#include <_ansi.h>
+#include <_syslist.h>
@@ -7766,7 +7804,10 @@ index 000000000..39ef385b1
+
+ handle = __get_handle(fileDesc);
+
+ if ( NULL == handle ) return ret;
+ if ( NULL == handle ) {
+ r->_errno=EBADF;
+ return ret;
+ }
+
+ dev = handle->device;
+
@@ -9039,10 +9080,10 @@ index 000000000..ff84cd355
+}
diff --git a/libgloss/libsysbase/read.c b/libgloss/libsysbase/read.c
new file mode 100644
index 000000000..9c548d830
index 000000000..30505c7b6
--- /dev/null
+++ b/libgloss/libsysbase/read.c
@@ -0,0 +1,32 @@
@@ -0,0 +1,35 @@
+#include "config.h"
+#include <_ansi.h>
+#include <_syslist.h>
@@ -9062,7 +9103,10 @@ index 000000000..9c548d830
+ if(fileDesc!=-1) {
+ handle = __get_handle(fileDesc);
+
+ if ( NULL == handle ) return ret;
+ if ( NULL == handle ) {
+ r->_errno=EBADF;
+ return ret;
+ }
+
+ dev = handle->device;
+
@@ -10068,10 +10112,10 @@ index 000000000..2c2998250
+#endif /* __WARNING_H__ */
diff --git a/libgloss/libsysbase/write.c b/libgloss/libsysbase/write.c
new file mode 100644
index 000000000..04198e854
index 000000000..baf0d6ae5
--- /dev/null
+++ b/libgloss/libsysbase/write.c
@@ -0,0 +1,31 @@
@@ -0,0 +1,34 @@
+#include "config.h"
+#include <_ansi.h>
+#include <_syslist.h>
@@ -10091,7 +10135,10 @@ index 000000000..04198e854
+ if(fileDesc!=-1) {
+ handle = __get_handle(fileDesc);
+
+ if ( NULL == handle ) return ret;
+ if ( NULL == handle ) {
+ r->_errno=EBADF;
+ return ret;
+ }
+
+ dev = handle->device;
+
@@ -10168,11 +10215,12 @@ index ef5038e68..32a1d5e0b 100644
.stab 0 : { *(.stab) }
diff --git a/libgloss/rs6000/crtmain.c b/libgloss/rs6000/crtmain.c
new file mode 100644
index 000000000..bd25d775d
index 000000000..f4f11fa28
--- /dev/null
+++ b/libgloss/rs6000/crtmain.c
@@ -0,0 +1,18 @@
@@ -0,0 +1,20 @@
+#include <unistd.h>
+#include <stdlib.h>
+
+struct __argv {
+ int argvMagic; //!< argv magic number, set to 0x5f617267 ('_arg') if valid
@@ -10185,11 +10233,26 @@ index 000000000..bd25d775d
+extern struct __argv *__system_argv;
+void __init();
+void SYS_PreMain();
+int main(int argc, char **argv);
+
+void __crtmain() {
+ SYS_PreMain();
+ exit ( main(__system_argv->argc,__system_argv->argv) );
+}
diff --git a/libgloss/rs6000/mbx-print.c b/libgloss/rs6000/mbx-print.c
index 64472ee68..8474dd7d5 100644
--- a/libgloss/rs6000/mbx-print.c
+++ b/libgloss/rs6000/mbx-print.c
@@ -16,6 +16,9 @@
/*
* print -- do a raw print of a string
*/
+
+#include <unistd.h>
+
void
print (ptr)
char *ptr;
diff --git a/libgloss/rs6000/mbx.ld b/libgloss/rs6000/mbx.ld
index cedf4e867..99d849e90 100644
--- a/libgloss/rs6000/mbx.ld
@@ -10202,6 +10265,73 @@ index cedf4e867..99d849e90 100644
/* These are needed for ELF backends which have not yet been
converted to the new style linker. */
.stab 0 : { *(.stab) }
diff --git a/libgloss/rs6000/mvme-print.c b/libgloss/rs6000/mvme-print.c
index 8d195424e..7f0877bd5 100644
--- a/libgloss/rs6000/mvme-print.c
+++ b/libgloss/rs6000/mvme-print.c
@@ -17,6 +17,10 @@
* write -- write some bytes to the output device.
*/
+void __pcrlf(void);
+void __outln(char *ptr, char *q);
+void __outstr(char *ptr, char *q);
+
int
write (fd, ptr, len)
int fd;
diff --git a/libgloss/rs6000/sim-abort.c b/libgloss/rs6000/sim-abort.c
index e1b59cf19..faeb93153 100644
--- a/libgloss/rs6000/sim-abort.c
+++ b/libgloss/rs6000/sim-abort.c
@@ -14,6 +14,9 @@
* they apply.
*/
+#include <unistd.h>
+#include <stdlib.h>
+
void abort(void)
{
write (2, "Abort called.\n", sizeof("Abort called.\n")-1);
diff --git a/libgloss/rs6000/sim-inbyte.c b/libgloss/rs6000/sim-inbyte.c
index 787b68976..44b273dff 100644
--- a/libgloss/rs6000/sim-inbyte.c
+++ b/libgloss/rs6000/sim-inbyte.c
@@ -14,6 +14,8 @@
* they apply.
*/
+#include <unistd.h>
+
int
inbyte ()
{
diff --git a/libgloss/rs6000/sim-print.c b/libgloss/rs6000/sim-print.c
index c0b9adced..e74bbfa04 100644
--- a/libgloss/rs6000/sim-print.c
+++ b/libgloss/rs6000/sim-print.c
@@ -16,6 +16,8 @@
/*
* print -- do a raw print of a string
*/
+#include <unistd.h>
+
void
print (ptr)
char *ptr;
diff --git a/libgloss/rs6000/sim-sbrk.c b/libgloss/rs6000/sim-sbrk.c
index 5c8bd6522..a536c663e 100644
--- a/libgloss/rs6000/sim-sbrk.c
+++ b/libgloss/rs6000/sim-sbrk.c
@@ -16,6 +16,7 @@
extern char _end[];
static char *curbrk = _end;
+int brk(char *curbrk);
char *
sbrk (incr)
diff --git a/libgloss/rs6000/xilinx.ld b/libgloss/rs6000/xilinx.ld
index 75b2a12b6..40a4a1e4b 100644
--- a/libgloss/rs6000/xilinx.ld
@@ -10501,7 +10631,7 @@ index 9a32646ab..e5df29f36 100644
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/powerpc/libc_a-vfprintf.o -MD -MP -MF libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Tpo -c -o libc/machine/powerpc/libc_a-vfprintf.o `test -f 'libc/machine/powerpc/vfprintf.c' || echo '$(srcdir)/'`libc/machine/powerpc/vfprintf.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Tpo libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Po
diff --git a/newlib/configure.host b/newlib/configure.host
index 386183466..cc5e33ad7 100644
index 386183466..b8b021100 100644
--- a/newlib/configure.host
+++ b/newlib/configure.host
@@ -630,13 +630,25 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
@@ -10538,7 +10668,7 @@ index 386183466..cc5e33ad7 100644
+ powerpc*-*-eabi*)
+ default_newlib_io_c99_formats="yes"
+ default_newlib_io_long_long="yes"
+ newlib_cflags="${newlib_cflags} -DCUSTOM_MALLOC_LOCK -D__DYNAMIC_REENT__ -DGETREENT_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -D__DEFAULT_UTF8__"
+ newlib_cflags="${newlib_cflags} -DHAVE_ASSERT_FUNC -DABORT_PROVIDED -DCUSTOM_MALLOC_LOCK -D__DYNAMIC_REENT__ -DGETREENT_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -D__DEFAULT_UTF8__"
+ newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections"
+ syscall_dir=syscalls
+ ;;
@@ -10571,6 +10701,35 @@ index 5c293c83d..0dbfcd7ee 100644
/* 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/elf.h b/newlib/libc/include/elf.h
index 79d3b974b..673f3391a 100644
--- a/newlib/libc/include/elf.h
+++ b/newlib/libc/include/elf.h
@@ -580,6 +580,11 @@ typedef struct {
+typedef Elf32_Word Elf32_Relr;
+typedef Elf64_Xword Elf64_Relr;
+
+
+
#define ELF32_R_SYM(val) ((val) >> 8)
#define ELF32_R_TYPE(val) ((val) & 0xff)
#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff))
@@ -747,7 +752,11 @@ typedef struct {
#define DT_ENCODING 32
#define DT_PREINIT_ARRAY 32
#define DT_PREINIT_ARRAYSZ 33
-#define DT_NUM 34
+#define DT_SYMTAB_SHNDX 34
+#define DT_RELRSZ 35
+#define DT_RELR 36
+#define DT_RELRENT 37
+#define DT_NUM 38
#define DT_LOOS 0x6000000d
#define DT_HIOS 0x6ffff000
#define DT_LOPROC 0x70000000
diff --git a/newlib/libc/include/fnmatch.h b/newlib/libc/include/fnmatch.h
index a94e923a4..9171e98aa 100644
--- a/newlib/libc/include/fnmatch.h
@@ -10658,6 +10817,19 @@ index b1dd2a7c4..16e29c037 100644
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/regex.h b/newlib/libc/include/regex.h
index fa3e26879..4da1a374e 100644
--- a/newlib/libc/include/regex.h
+++ b/newlib/libc/include/regex.h
@@ -96,7 +96,7 @@ __BEGIN_DECLS
int regcomp(regex_t *__restrict, const char *__restrict, int);
size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t);
int regexec(const regex_t *__restrict, const char *__restrict,
- size_t, regmatch_t [__restrict], int);
+ size_t, regmatch_t [__restrict_arr], int);
void regfree(regex_t *);
__END_DECLS
diff --git a/newlib/libc/include/semaphore.h b/newlib/libc/include/semaphore.h
new file mode 100755
index 000000000..4afb0e419
@@ -10922,27 +11094,34 @@ index f810b008f..ca7e11dc7 100644
+
#endif /* !_SYS__TIMESPEC_H_ */
diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h
index 5dcc77a80..6930a751d 100644
index 5dcc77a80..10a992c21 100644
--- a/newlib/libc/include/sys/config.h
+++ b/newlib/libc/include/sys/config.h
@@ -4,8 +4,19 @@
@@ -4,8 +4,26 @@
#include <machine/ieeefp.h> /* floating point macros */
#include <sys/features.h> /* POSIX defs */
-#ifdef __aarch64__
+#ifdef __DEVKITARM__
+#define __DYNAMIC_REENT__
+#define MALLOC_ALIGNMENT_THRESHOLD 32
+#endif
+
+#ifdef __DEVKITA64__
#define MALLOC_ALIGNMENT 16
+#define MALLOC_ALIGNMENT_THRESHOLD 32
+#define __DYNAMIC_REENT__
+#endif
+
+#ifdef __DEVKITPPC__
+#define MALLOC_ALIGNMENT_THRESHOLD 64
+#define __BUFSIZ__ 32768
+#define MALLOC_ALIGNMENT 64
+#define __DYNAMIC_REENT__
+#endif
+
+#ifdef __DEVKITPRO__
+#define _READ_WRITE_RETURN_TYPE _ssize_t
+#define _READ_WRITE_BUFSIZE_TYPE size_t
#endif
#ifdef __AMDGCN__
@@ -10970,10 +11149,10 @@ index a7d4bc52d..a04f13544 100644
#ifdef __rtems__
diff --git a/newlib/libc/include/sys/iosupport.h b/newlib/libc/include/sys/iosupport.h
new file mode 100644
index 000000000..335014a4b
index 000000000..b81214720
--- /dev/null
+++ b/newlib/libc/include/sys/iosupport.h
@@ -0,0 +1,140 @@
@@ -0,0 +1,142 @@
+//---------------------------------------------------------------------------------
+#ifndef __iosupp_h__
+#define __iosupp_h__
@@ -11060,6 +11239,8 @@ index 000000000..335014a4b
+#define __SYSCALL(_name) __syscall_##_name
+#endif
+
+void __SYSCALL(abort) (void);
+void __SYSCALL(assert_func) (const char *file, int line, const char *func, const char *failedexpr);
+void __SYSCALL(exit) ( int rc );
+int __SYSCALL(gettod_r) (struct _reent *ptr, struct timeval *tp, struct timezone *tz);
+void __SYSCALL(lock_init) (_LOCK_T *lock);
@@ -11114,6 +11295,23 @@ index 000000000..335014a4b
+//---------------------------------------------------------------------------------
+#endif // __iosupp_h__
+//---------------------------------------------------------------------------------
diff --git a/newlib/libc/include/sys/mkdev.h b/newlib/libc/include/sys/mkdev.h
new file mode 100644
index 000000000..a6f860158
--- /dev/null
+++ b/newlib/libc/include/sys/mkdev.h
@@ -0,0 +1,11 @@
+#ifndef __SYS_MKDEV_H__
+#define __SYS_MKDEV_H__
+
+#define MINORBITS 20
+#define MINORMASK ((1U << MINORBITS) - 1)
+
+#define major(dev) ((unsigned int) ((dev) >> MINORBITS))
+#define minor(dev) ((unsigned int) ((dev) & MINORMASK))
+#define mkdev(ma,mi) (((ma) << MINORBITS) | (mi))
+
+#endif
diff --git a/newlib/libc/include/sys/param.h b/newlib/libc/include/sys/param.h
index 9a6f115a6..142e71d35 100644
--- a/newlib/libc/include/sys/param.h
@@ -11684,17 +11882,19 @@ index 000000000..a7d63da51
+#endif // _MACHINE__TYPES_H
diff --git a/newlib/libc/machine/powerpc/sys/dirent.h b/newlib/libc/machine/powerpc/sys/dirent.h
new file mode 100644
index 000000000..2aaca6080
index 000000000..b3780c263
--- /dev/null
+++ b/newlib/libc/machine/powerpc/sys/dirent.h
@@ -0,0 +1,58 @@
@@ -0,0 +1,61 @@
+#ifndef _dirent_h_
+#define _dirent_h_
+
+#define _DIRENT_HAVE_D_TYPE
+#define _DIRENT_HAVE_D_STAT
+
+#include <sys/iosupport.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/syslimits.h>
+
+#define DT_UNKNOWN 0
@@ -11713,6 +11913,7 @@ index 000000000..2aaca6080
+
+struct dirent {
+ ino_t d_ino;
+ struct stat d_stat;
+ unsigned char d_type;
+ char d_name[NAME_MAX+1];
+};
@@ -11966,6 +12167,30 @@ index 63c0618f1..dd3801900 100644
#define _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
#endif
diff --git a/newlib/libc/stdio/makebuf.c b/newlib/libc/stdio/makebuf.c
index b9c75bbf8..bc65acc2a 100644
--- a/newlib/libc/stdio/makebuf.c
+++ b/newlib/libc/stdio/makebuf.c
@@ -19,6 +19,7 @@
#include <_ansi.h>
#include <stdio.h>
#include <stdlib.h>
+#include <malloc.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/unistd.h>
@@ -50,7 +51,11 @@ __smakebuf_r (struct _reent *ptr,
return;
}
flags = __swhatbuf_r (ptr, fp, &size, &couldbetty);
+#ifdef MALLOC_ALIGNMENT_THRESHOLD
+ if ((p = _memalign_r (ptr, MALLOC_ALIGNMENT_THRESHOLD, size)) == NULL)
+#else
if ((p = _malloc_r (ptr, size)) == NULL)
+#endif
{
if (!(fp->_flags & __SSTR))
{
diff --git a/newlib/libc/stdio/remove.c b/newlib/libc/stdio/remove.c
index d8dfdbd82..a85b5a99b 100644
--- a/newlib/libc/stdio/remove.c
@@ -12134,6 +12359,24 @@ index 9b7bd518b..f0e33bbc1 100644
/*
* Exit, flushing stdio buffers if necessary.
*/
diff --git a/newlib/libc/stdlib/malloc.c b/newlib/libc/stdlib/malloc.c
index f5ac29208..7d016a653 100644
--- a/newlib/libc/stdlib/malloc.c
+++ b/newlib/libc/stdlib/malloc.c
@@ -161,7 +161,12 @@ Supporting OS subroutines required: <<sbrk>>. */
void *
malloc (size_t nbytes) /* get a block */
{
- return _malloc_r (_REENT, nbytes);
+#ifdef MALLOC_ALIGNMENT_THRESHOLD
+ if (nbytes >= MALLOC_ALIGNMENT_THRESHOLD)
+ return _memalign_r (_REENT, MALLOC_ALIGNMENT_THRESHOLD, nbytes);
+ else
+#endif
+ return _malloc_r (_REENT, nbytes);
}
void
diff --git a/newlib/libc/stdlib/mlock.c b/newlib/libc/stdlib/mlock.c
index 23aa10173..ba88eb9fb 100644
--- a/newlib/libc/stdlib/mlock.c

View File

@@ -12,4 +12,4 @@ cd $BUILDDIR
tar -xvf $SRCDIR/devkita64-rules-$DKA64_RULES_VER.tar.gz
cd devkita64-rules-$DKA64_RULES_VER
make install
$MAKE install

View File

@@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/sh
#---------------------------------------------------------------------------------
#---------------------------------------------------------------------------------
@@ -62,7 +62,7 @@ then
--enable-lto \
--disable-tm-clone-registry \
--disable-__cxa_atexit \
--with-bugurl="https://github.com/devkitPro/buildscripts/issues" --with-pkgversion="devkitA64 release 24" \
--with-bugurl="https://github.com/devkitPro/buildscripts/issues" --with-pkgversion="devkitA64 release 27" \
$CROSS_PARAMS \
$CROSS_GCC_PARAMS \
$EXTRA_GCC_PARAMS \

View File

@@ -1,8 +1,8 @@
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 6fd1594480a..92b82426f50 100644
index 40b50dc969e..16b1224f3ec 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1412,6 +1412,11 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
@@ -1508,6 +1508,11 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
tm_file="$tm_file newlib-stdint.h"
tmake_file="${tmake_file} arm/t-bpabi"
use_gcc_stdint=wrap
@@ -15,7 +15,7 @@ index 6fd1594480a..92b82426f50 100644
arm*-*-fuchsia*)
tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
index f1fa3fa174c..2bb894b5b2d 100644
index 1939d55b9fd..62d425cb596 100644
--- a/gcc/config/arm/arm-cpus.in
+++ b/gcc/config/arm/arm-cpus.in
@@ -416,7 +416,7 @@ begin arch armv6k
@@ -28,7 +28,7 @@ index f1fa3fa174c..2bb894b5b2d 100644
optalias vfpv2 fp
option nofp remove ALL_FP
diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf
index f7fc1460d1c..055f9d62385 100644
index fdfdf9c580b..add129f0a62 100644
--- a/gcc/config/arm/t-arm-elf
+++ b/gcc/config/arm/t-arm-elf
@@ -16,120 +16,22 @@
@@ -165,7 +165,7 @@ index f7fc1460d1c..055f9d62385 100644
-MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=march.armv7+fp/mfloat-abi.hard
+MULTILIB_REUSE = mthumb/march.armv6s-m/mfloat-abi.soft=mthumb/march.armv6s-m
diff --git a/gcc/config/arm/unknown-elf.h b/gcc/config/arm/unknown-elf.h
index 397ac3f68b9..b9a388f19be 100644
index ab3918283d8..c14a1955cad 100644
--- a/gcc/config/arm/unknown-elf.h
+++ b/gcc/config/arm/unknown-elf.h
@@ -29,7 +29,7 @@
@@ -252,11 +252,33 @@ index 00000000000..9acbbf9d27c
+Driver
+
+; This comment is to ensure we retain the blank line above.
diff --git a/gcc/config/devkitpro.opt.urls b/gcc/config/devkitpro.opt.urls
new file mode 100644
index 00000000000..ab7b466aa71
--- /dev/null
+++ b/gcc/config/devkitpro.opt.urls
@@ -0,0 +1 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/devkitpro.opt and generated HTML
diff --git a/gcc/config/i386/host-mingw32.cc b/gcc/config/i386/host-mingw32.cc
index e083f49f3da..1b81e7e88ce 100644
--- a/gcc/config/i386/host-mingw32.cc
+++ b/gcc/config/i386/host-mingw32.cc
@@ -94,6 +94,10 @@ mingw32_gt_pch_get_address (size_t size, int)
If we allocate at bottom we need to reserve the address as early
as possible and at the same point in each invocation. */
+#if __MINGW64__
+ size = UINT64_C(64 * 1024 * 1024 * 1024);
+#endif
+
res = VirtualAlloc (NULL, size,
MEM_RESERVE | MEM_TOP_DOWN,
PAGE_NOACCESS);
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index 16bb07f2cdc..22a181a3a1c 100644
index 4fd87f2c4a1..6af06f7b032 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -868,6 +868,11 @@ proper position among the other output files. */
@@ -888,6 +888,11 @@ proper position among the other output files. */
#endif
#endif
@@ -268,7 +290,7 @@ index 16bb07f2cdc..22a181a3a1c 100644
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */
#ifndef STARTFILE_SPEC
#define STARTFILE_SPEC \
@@ -1191,6 +1196,7 @@ static const char *link_spec = LINK_SPEC;
@@ -1215,6 +1220,7 @@ static const char *link_spec = LINK_SPEC;
static const char *lib_spec = LIB_SPEC;
static const char *link_gomp_spec = "";
static const char *libgcc_spec = LIBGCC_SPEC;
@@ -276,7 +298,7 @@ index 16bb07f2cdc..22a181a3a1c 100644
static const char *endfile_spec = ENDFILE_SPEC;
static const char *startfile_spec = STARTFILE_SPEC;
static const char *linker_name_spec = LINKER_NAME;
@@ -1701,6 +1707,7 @@ static struct spec_list static_specs[] =
@@ -1727,6 +1733,7 @@ static struct spec_list static_specs[] =
INIT_STATIC_SPEC ("lib", &lib_spec),
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
@@ -284,6 +306,19 @@ index 16bb07f2cdc..22a181a3a1c 100644
INIT_STATIC_SPEC ("startfile", &startfile_spec),
INIT_STATIC_SPEC ("cross_compile", &cross_compile),
INIT_STATIC_SPEC ("version", &compiler_version),
diff --git a/libcc1/configure b/libcc1/configure
index ea689a353c8..98f9d9b21b7 100755
--- a/libcc1/configure
+++ b/libcc1/configure
@@ -5119,7 +5119,7 @@ else
# Adding the `sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored
case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
- *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
+ $tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
break
;;
*)
diff --git a/libgcc/config/arm/t-bpabi b/libgcc/config/arm/t-bpabi
index dddddc7c444..c2502597953 100644
--- a/libgcc/config/arm/t-bpabi
@@ -295,7 +330,7 @@ index dddddc7c444..c2502597953 100644
-LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
+LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
index 93ff5b81dc5..20c0fe89a28 100644
index b9767cd1eee..362689c9f0b 100644
--- a/libgcc/crtstuff.c
+++ b/libgcc/crtstuff.c
@@ -326,7 +326,7 @@ register_tm_clones (void)
@@ -308,7 +343,7 @@ index 93ff5b81dc5..20c0fe89a28 100644
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 --git a/libgcc/gthr.h b/libgcc/gthr.h
index 1989c0c86ed..dc3220cdf3c 100644
index 557417997f4..cb223aa43fc 100644
--- a/libgcc/gthr.h
+++ b/libgcc/gthr.h
@@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
@@ -316,15 +351,206 @@ index 1989c0c86ed..dc3220cdf3c 100644
For static libraries it might would work, but as we need to deal
with shared versions too, we disable it for mingw-targets. */
-#ifdef __MINGW32__
+#ifdef __MINGW32__ || defined(__DEVKITARM__)
+#if defined( __MINGW32__) || defined(__DEVKITARM__)
#undef GTHREAD_USE_WEAK
#define GTHREAD_USE_WEAK 0
#endif
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 819a1d82876..d81e6057c5b 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -893,6 +893,7 @@ infodir
docdir
oldincludedir
includedir
+runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -1027,6 +1028,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1279,6 +1281,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1416,7 +1427,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
+ libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1569,6 +1580,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -5080,7 +5092,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -5126,7 +5138,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -5150,7 +5162,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -5195,7 +5207,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -5219,7 +5231,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -12280,7 +12292,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12283 "configure"
+#line 12295 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12386,7 +12398,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12389 "configure"
+#line 12401 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -16182,7 +16194,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; }
# Fake what AC_TRY_COMPILE does.
cat > conftest.$ac_ext << EOF
-#line 16185 "configure"
+#line 16197 "configure"
int main()
{
typedef bool atomic_type;
@@ -16217,7 +16229,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 16220 "configure"
+#line 16232 "configure"
int main()
{
typedef short atomic_type;
@@ -16252,7 +16264,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 16255 "configure"
+#line 16267 "configure"
int main()
{
// NB: _Atomic_word not necessarily int.
@@ -16288,7 +16300,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 16291 "configure"
+#line 16303 "configure"
int main()
{
typedef long long atomic_type;
@@ -16445,7 +16457,7 @@ $as_echo "mutex" >&6; }
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 16448 "configure"
+#line 16460 "configure"
int main()
{
_Decimal32 d1;
@@ -16487,7 +16499,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 16490 "configure"
+#line 16502 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
@@ -28602,6 +28614,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
$as_echo "#define HAVE_MEMALIGN 1" >>confdefs.h
+ $as_echo "#define HAVE_ALIGNED_ALLOC 1" >>confdefs.h
+
case "${target}" in
*-rtems*)
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index a6c01b29e94..a8fb1200c8b 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -386,6 +386,7 @@ dnl # rather than hardcoding that information.
fi
AC_DEFINE(HAVE_MEMALIGN)
+ AC_DEFINE(HAVE_ALIGNED_ALLOC)
case "${target}" in
*-rtems*)
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index a880e8ee227..2050e2e4ccf 100644
index 537774c2668..b15e28d2371 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -1417,6 +1417,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
@@ -1436,6 +1436,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
@@ -333,7 +559,7 @@ index a880e8ee227..2050e2e4ccf 100644
< $< > $@
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 0ff875b280b..7d270fc3a83 100644
index 7b96b2207f8..80f0effec92 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -336,6 +336,7 @@ prefix = @prefix@
@@ -344,7 +570,7 @@ index 0ff875b280b..7d270fc3a83 100644
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -1891,6 +1892,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
@@ -1910,6 +1911,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
@@ -352,3 +578,16 @@ index 0ff875b280b..7d270fc3a83 100644
-e 's,^#include "\(.*\)",#include <bits/\1>,g' \
< $< > $@
diff --git a/lto-plugin/configure b/lto-plugin/configure
index 28f5dd79cd7..a79f318a4d6 100755
--- a/lto-plugin/configure
+++ b/lto-plugin/configure
@@ -6469,7 +6469,7 @@ else
# Adding the `sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored
case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
- *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
+ $tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
break
;;
*)

File diff suppressed because one or more lines are too long

View File

@@ -13,7 +13,7 @@ cd $BUILDDIR
tar -xvf $SRCDIR/devkitarm-rules-$DKARM_RULES_VER.tar.gz
cd devkitarm-rules-$DKARM_RULES_VER
make install
$MAKE install
#---------------------------------------------------------------------------------
# Install and build the crt0 files
@@ -22,5 +22,5 @@ cd $BUILDDIR
tar -xvf $SRCDIR/devkitarm-crtls-$DKARM_CRTLS_VER.tar.gz
cd devkitarm-crtls-$DKARM_CRTLS_VER
make install
$MAKE install

View File

@@ -10,7 +10,7 @@ cd $target/binutils
if [ ! -f configured-binutils ]
then
CPPFLAGS="$cppflags $CPPFLAGS" LDFLAGS=$ldflags ../../binutils-$BINUTILS_VER/configure \
CPPFLAGS="$cppflags $CPPFLAGS" LDFLAGS="$ldflags $LDFLAGS" ../../binutils-$BINUTILS_VER/configure \
--prefix=$prefix --target=$target --disable-nls --disable-werror \
--enable-lto --enable-plugins \
--enable-poison-system-directories \
@@ -41,7 +41,7 @@ cd $target/gcc
if [ ! -f configured-gcc ]
then
CPPFLAGS="$cppflags $CPPFLAGS" \
LDFLAGS="$ldflags" \
LDFLAGS="$ldflags $LDFLAGS" \
CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
CXXFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
LDFLAGS_FOR_TARGET="" \
@@ -66,7 +66,7 @@ then
--with-system-zlib \
--disable-tm-clone-registry \
--disable-__cxa_atexit \
--with-bugurl="http://wiki.devkitpro.org/index.php/Bug_Reports" --with-pkgversion="devkitARM release 63" \
--with-bugurl="http://wiki.devkitpro.org/index.php/Bug_Reports" --with-pkgversion="devkitARM release 66" \
$CROSS_PARAMS \
$CROSS_GCC_PARAMS \
$EXTRA_GCC_PARAMS \

View File

@@ -12,7 +12,7 @@ index da892988f5d..6b8efb9bbdb 100644
.fixup ${RELOCATING-0} : { *(.fixup) }
.got1 ${RELOCATING-0} : { *(.got1) }
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index 37f1aeb780c..f8de8aacc44 100644
index e55bfe846cd..f160e290bce 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -4988,7 +4988,7 @@ const unsigned int num_powerpc_operands = ARRAY_SIZE (powerpc_operands);

View File

@@ -11,7 +11,7 @@ index 11996247f15..f21b315ce8a 100644
lynx) thread_header=config/gthr-lynx.h ;;
mipssde) thread_header=config/mips/gthr-mipssde.h ;;
diff --git a/gcc/config/newlib-stdint.h b/gcc/config/newlib-stdint.h
index 98bc77b46b8..4f1690d4f4d 100644
index a35aecaa7bd..63c67a9c7d6 100644
--- a/gcc/config/newlib-stdint.h
+++ b/gcc/config/newlib-stdint.h
@@ -25,7 +25,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
@@ -24,7 +24,7 @@ index 98bc77b46b8..4f1690d4f4d 100644
#define SIG_ATOMIC_TYPE "int"
diff --git a/gcc/config/rs6000/eabi.h b/gcc/config/rs6000/eabi.h
index 5bfc377e0de..342ed1932b9 100644
index d768459fbeb..b54041268e5 100644
--- a/gcc/config/rs6000/eabi.h
+++ b/gcc/config/rs6000/eabi.h
@@ -36,6 +36,8 @@
@@ -37,10 +37,10 @@ index 5bfc377e0de..342ed1932b9 100644
} \
while (0)
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 3503614efbd..b0a1b8e4ad7 100644
index 2cde2e329b0..768470b753a 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -199,6 +199,7 @@ ASM_OPT_ANY
@@ -197,6 +197,7 @@ ASM_OPT_ANY
/* -mcpu=native handling only makes sense with compiler running on
an PowerPC chip. If changing this condition, also change
the condition in driver-rs6000.cc. */
@@ -48,7 +48,7 @@ index 3503614efbd..b0a1b8e4ad7 100644
#if defined(__powerpc__) || defined(__POWERPC__) || defined(_AIX)
/* In driver-rs6000.cc. */
extern const char *host_detect_local_cpu (int argc, const char **argv);
@@ -210,6 +211,8 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
@@ -208,6 +209,8 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
#else
#define ASM_CPU_NATIVE_SPEC "%(asm_default)"
#endif
@@ -58,7 +58,7 @@ index 3503614efbd..b0a1b8e4ad7 100644
#ifndef CC1_CPU_SPEC
#ifdef HAVE_LOCAL_CPU_DETECT
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
index ae932fc22f0..527b48878b8 100644
index bcafa9d0cf4..d629d85bd17 100644
--- a/gcc/config/rs6000/sysv4.h
+++ b/gcc/config/rs6000/sysv4.h
@@ -581,7 +581,11 @@ GNU_USER_TARGET_CC1_SPEC
@@ -216,7 +216,7 @@ index ae932fc22f0..527b48878b8 100644
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
diff --git a/gcc/config/rs6000/sysv4.opt b/gcc/config/rs6000/sysv4.opt
index 691e0d3d2e8..2eb60bc56b6 100644
index fdfe665fefa..42a1935d358 100644
--- a/gcc/config/rs6000/sysv4.opt
+++ b/gcc/config/rs6000/sysv4.opt
@@ -124,6 +124,26 @@ mads
@@ -247,10 +247,104 @@ index 691e0d3d2e8..2eb60bc56b6 100644
Target RejectNegative
Link with libyk.a, libc.a and crt0.o.
diff --git a/gcc/configure b/gcc/configure
index c7b26d1927d..d1e32ef9ec5 100755
index abc8bfdc244..d0065dd166c 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -13011,7 +13011,7 @@ case ${enable_threads} in
@@ -933,6 +933,7 @@ infodir
docdir
oldincludedir
includedir
+runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -1117,6 +1118,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE}'
@@ -1369,6 +1371,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1506,7 +1517,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
+ libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1659,6 +1670,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -6229,7 +6241,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -6275,7 +6287,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -6299,7 +6311,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -6344,7 +6356,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -6368,7 +6380,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -13219,7 +13231,7 @@ case ${enable_threads} in
# default
target_thread_file='single'
;;
@@ -259,11 +353,29 @@ index c7b26d1927d..d1e32ef9ec5 100755
single | tpf | vxworks | win32 | mcf)
target_thread_file=${enable_threads}
;;
@@ -21575,7 +21587,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21578 "configure"
+#line 21590 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -21681,7 +21693,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21684 "configure"
+#line 21696 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 09082e8ccae..f5700df9455 100644
index 1d2cefa3f6a..1880a43edb7 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -2020,7 +2020,7 @@ case ${enable_threads} in
@@ -2053,7 +2053,7 @@ case ${enable_threads} in
# default
target_thread_file='single'
;;
@@ -272,8 +384,21 @@ index 09082e8ccae..f5700df9455 100644
single | tpf | vxworks | win32 | mcf)
target_thread_file=${enable_threads}
;;
diff --git a/libcc1/configure b/libcc1/configure
index ea689a353c8..98f9d9b21b7 100755
--- a/libcc1/configure
+++ b/libcc1/configure
@@ -5119,7 +5119,7 @@ else
# Adding the `sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored
case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
- *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
+ $tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
break
;;
*)
diff --git a/libgcc/config/rs6000/crtrestvr.S b/libgcc/config/rs6000/crtrestvr.S
index cf7f71ae123..7e0892a845f 100644
index 62709321d60..29474da45ac 100644
--- a/libgcc/config/rs6000/crtrestvr.S
+++ b/libgcc/config/rs6000/crtrestvr.S
@@ -24,7 +24,7 @@
@@ -291,7 +416,7 @@ index cf7f71ae123..7e0892a845f 100644
#endif
+#endif
diff --git a/libgcc/config/rs6000/crtsavevr.S b/libgcc/config/rs6000/crtsavevr.S
index 19de2128714..d116593062d 100644
index d5b96600911..58be7119b2d 100644
--- a/libgcc/config/rs6000/crtsavevr.S
+++ b/libgcc/config/rs6000/crtsavevr.S
@@ -24,7 +24,7 @@
@@ -635,10 +760,10 @@ index 00000000000..26180aa7f36
+}
diff --git a/libgcc/config/rs6000/gthr-dkp.h b/libgcc/config/rs6000/gthr-dkp.h
new file mode 100644
index 00000000000..72ecf82ab83
index 00000000000..51fae2d359c
--- /dev/null
+++ b/libgcc/config/rs6000/gthr-dkp.h
@@ -0,0 +1,187 @@
@@ -0,0 +1,360 @@
+/* Threads compatibility routines for libgcc2 and libobjc. */
+/* Compile this one with gcc. */
+/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
@@ -821,6 +946,179 @@ index 00000000000..72ecf82ab83
+int
+__gthread_cond_destroy (__gthread_cond_t* __cond);
+
+
+#ifdef _LIBOBJC
+
+#define UNUSED __attribute__((__unused__))
+
+/* Thread local storage for a single thread */
+static void *thread_local_storage = NULL;
+
+/* Backend initialization functions */
+
+/* Initialize the threads subsystem. */
+static inline int
+__gthread_objc_init_thread_system (void)
+{
+ /* No thread support available */
+ return -1;
+}
+
+/* Close the threads subsystem. */
+static inline int
+__gthread_objc_close_thread_system (void)
+{
+ /* No thread support available */
+ return -1;
+}
+
+/* Backend thread functions */
+
+/* Create a new thread of execution. */
+static inline objc_thread_t
+__gthread_objc_thread_detach (void (* func)(void *), void * arg UNUSED)
+{
+ /* No thread support available */
+ return NULL;
+}
+
+/* Set the current thread's priority. */
+static inline int
+__gthread_objc_thread_set_priority (int priority UNUSED)
+{
+ /* No thread support available */
+ return -1;
+}
+
+/* Return the current thread's priority. */
+static inline int
+__gthread_objc_thread_get_priority (void)
+{
+ return OBJC_THREAD_INTERACTIVE_PRIORITY;
+}
+
+/* Yield our process time to another thread. */
+static inline void
+__gthread_objc_thread_yield (void)
+{
+ return;
+}
+
+/* Terminate the current thread. */
+static inline int
+__gthread_objc_thread_exit (void)
+{
+ /* No thread support available */
+ /* Should we really exit the program */
+ /* exit (&__objc_thread_exit_status); */
+ return -1;
+}
+
+/* Returns an integer value which uniquely describes a thread. */
+static inline objc_thread_t
+__gthread_objc_thread_id (void)
+{
+ /* No thread support, use 1. */
+ return (objc_thread_t) 1;
+}
+
+/* Sets the thread's local storage pointer. */
+static inline int
+__gthread_objc_thread_set_data (void *value)
+{
+ thread_local_storage = value;
+ return 0;
+}
+
+/* Returns the thread's local storage pointer. */
+static inline void *
+__gthread_objc_thread_get_data (void)
+{
+ return thread_local_storage;
+}
+
+/* Backend mutex functions */
+
+/* Allocate a mutex. */
+static inline int
+__gthread_objc_mutex_allocate (objc_mutex_t mutex UNUSED)
+{
+ return 0;
+}
+
+/* Deallocate a mutex. */
+static inline int
+__gthread_objc_mutex_deallocate (objc_mutex_t mutex UNUSED)
+{
+ return 0;
+}
+
+/* Grab a lock on a mutex. */
+static inline int
+__gthread_objc_mutex_lock (objc_mutex_t mutex UNUSED)
+{
+ /* There can only be one thread, so we always get the lock */
+ return 0;
+}
+
+/* Try to grab a lock on a mutex. */
+static inline int
+__gthread_objc_mutex_trylock (objc_mutex_t mutex UNUSED)
+{
+ /* There can only be one thread, so we always get the lock */
+ return 0;
+}
+
+/* Unlock the mutex */
+static inline int
+__gthread_objc_mutex_unlock (objc_mutex_t mutex UNUSED)
+{
+ return 0;
+}
+
+/* Backend condition mutex functions */
+
+/* Allocate a condition. */
+static inline int
+__gthread_objc_condition_allocate (objc_condition_t condition UNUSED)
+{
+ return 0;
+}
+
+/* Deallocate a condition. */
+static inline int
+__gthread_objc_condition_deallocate (objc_condition_t condition UNUSED)
+{
+ return 0;
+}
+
+/* Wait on the condition */
+static inline int
+__gthread_objc_condition_wait (objc_condition_t condition UNUSED,
+ objc_mutex_t mutex UNUSED)
+{
+ return 0;
+}
+
+/* Wake up all threads waiting on this condition. */
+static inline int
+__gthread_objc_condition_broadcast (objc_condition_t condition UNUSED)
+{
+ return 0;
+}
+
+/* Wake up one thread waiting on this condition. */
+static inline int
+__gthread_objc_condition_signal (objc_condition_t condition UNUSED)
+{
+ return 0;
+}
+
+#undef UNUSED
+
+#endif /* _LIBOBJC */
+
+
+#ifdef __cplusplus
+}
+#endif
@@ -837,10 +1135,10 @@ index fb812d3801f..7f6669d530f 100644
# This can't end up in shared libgcc
diff --git a/libgcc/configure b/libgcc/configure
index be5d45f1755..5c5aa253655 100755
index cff1eff9625..c4bb38358b3 100755
--- a/libgcc/configure
+++ b/libgcc/configure
@@ -5690,6 +5690,7 @@ tm_file="${tm_file_}"
@@ -5754,6 +5754,7 @@ tm_file="${tm_file_}"
case $target_thread_file in
aix) thread_header=config/rs6000/gthr-aix.h ;;
dce) thread_header=config/pa/gthr-dce.h ;;
@@ -849,7 +1147,7 @@ index be5d45f1755..5c5aa253655 100755
lynx) thread_header=config/gthr-lynx.h ;;
mipssde) thread_header=config/mips/gthr-mipssde.h ;;
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
index 93ff5b81dc5..20c0fe89a28 100644
index 38d3859a73c..f97358d9787 100644
--- a/libgcc/crtstuff.c
+++ b/libgcc/crtstuff.c
@@ -326,7 +326,7 @@ register_tm_clones (void)
@@ -862,10 +1160,122 @@ index 93ff5b81dc5..20c0fe89a28 100644
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 --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 68ee94c9e28..1e17f789b89 100755
index 21abaeb0778..f16aacb03e6 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -15800,6 +15800,7 @@ $as_echo "$target_thread_file" >&6; }
@@ -893,6 +893,7 @@ infodir
docdir
oldincludedir
includedir
+runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -1027,6 +1028,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1279,6 +1281,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1416,7 +1427,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
+ libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1569,6 +1580,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -5080,7 +5092,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -5126,7 +5138,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -5150,7 +5162,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -5195,7 +5207,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -5219,7 +5231,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
@@ -12280,7 +12292,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12283 "configure"
+#line 12295 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12386,7 +12398,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12389 "configure"
+#line 12401 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -15965,6 +15977,7 @@ $as_echo "$target_thread_file" >&6; }
case $target_thread_file in
aix) thread_header=config/rs6000/gthr-aix.h ;;
dce) thread_header=config/pa/gthr-dce.h ;;
@@ -873,11 +1283,86 @@ index 68ee94c9e28..1e17f789b89 100755
gcn) thread_header=config/gcn/gthr-gcn.h ;;
lynx) thread_header=config/gthr-lynx.h ;;
mipssde) thread_header=config/mips/gthr-mipssde.h ;;
@@ -16182,7 +16195,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; }
# Fake what AC_TRY_COMPILE does.
cat > conftest.$ac_ext << EOF
-#line 16185 "configure"
+#line 16198 "configure"
int main()
{
typedef bool atomic_type;
@@ -16217,7 +16230,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 16220 "configure"
+#line 16233 "configure"
int main()
{
typedef short atomic_type;
@@ -16252,7 +16265,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 16255 "configure"
+#line 16268 "configure"
int main()
{
// NB: _Atomic_word not necessarily int.
@@ -16288,7 +16301,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 16291 "configure"
+#line 16304 "configure"
int main()
{
typedef long long atomic_type;
@@ -16444,7 +16457,7 @@ $as_echo "mutex" >&6; }
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 16447 "configure"
+#line 16460 "configure"
int main()
{
_Decimal32 d1;
@@ -16486,7 +16499,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 16489 "configure"
+#line 16502 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
@@ -28575,6 +28588,8 @@ _ACEOF
$as_echo "#define HAVE_MEMALIGN 1" >>confdefs.h
+ $as_echo "#define HAVE_ALIGNED_ALLOC 1" >>confdefs.h
+
case "${target}" in
*-rtems*)
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index 37396bd6ebb..1dadf658c08 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -378,6 +378,7 @@ dnl # rather than hardcoding that information.
AC_DEFINE(HAVE_ICONV)
AC_DEFINE(HAVE_MEMALIGN)
+ AC_DEFINE(HAVE_ALIGNED_ALLOC)
case "${target}" in
*-rtems*)
diff --git a/libstdc++-v3/include/std/fstream b/libstdc++-v3/include/std/fstream
index 3dff4e5e74e..7835a727321 100644
index 1008a275540..d94296eb54c 100644
--- a/libstdc++-v3/include/std/fstream
+++ b/libstdc++-v3/include/std/fstream
@@ -48,7 +48,7 @@
@@ -51,7 +51,7 @@
// This can be overridden by the target's os_defines.h
#ifndef _GLIBCXX_BUFSIZ
@@ -887,7 +1372,7 @@ index 3dff4e5e74e..7835a727321 100644
namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/libsupc++/eh_alloc.cc b/libstdc++-v3/libsupc++/eh_alloc.cc
index 8380052c9f3..100de070f20 100644
index ec8c8fd13af..72b808b6ec0 100644
--- a/libstdc++-v3/libsupc++/eh_alloc.cc
+++ b/libstdc++-v3/libsupc++/eh_alloc.cc
@@ -143,6 +143,7 @@ namespace
@@ -915,7 +1400,7 @@ index 8380052c9f3..100de070f20 100644
{
__scoped_lock sentry(emergency_mutex);
diff --git a/libstdc++-v3/src/c++17/fs_ops.cc b/libstdc++-v3/src/c++17/fs_ops.cc
index c94d260632f..74c7a06a90d 100644
index 07bc2a0fa88..6c52045b377 100644
--- a/libstdc++-v3/src/c++17/fs_ops.cc
+++ b/libstdc++-v3/src/c++17/fs_ops.cc
@@ -1124,6 +1124,7 @@ fs::permissions(const path& p, perms prms, perm_options opts,
@@ -935,10 +1420,10 @@ index c94d260632f..74c7a06a90d 100644
if (err)
diff --git a/libstdc++-v3/src/filesystem/ops-common.h b/libstdc++-v3/src/filesystem/ops-common.h
index c95511b5c95..f9be4529bb2 100644
index d917fddbeb1..d2981fc22cd 100644
--- a/libstdc++-v3/src/filesystem/ops-common.h
+++ b/libstdc++-v3/src/filesystem/ops-common.h
@@ -486,6 +486,7 @@ _GLIBCXX_BEGIN_NAMESPACE_FILESYSTEM
@@ -557,6 +557,7 @@ _GLIBCXX_BEGIN_NAMESPACE_FILESYSTEM
return false;
}
@@ -946,19 +1431,19 @@ index c95511b5c95..f9be4529bb2 100644
#if defined _GLIBCXX_USE_FCHMOD && ! defined _GLIBCXX_FILESYSTEM_IS_WINDOWS
if (::fchmod(out.fd, from_st->st_mode))
#elif defined _GLIBCXX_USE_FCHMODAT && ! defined _GLIBCXX_FILESYSTEM_IS_WINDOWS
@@ -497,6 +498,7 @@ _GLIBCXX_BEGIN_NAMESPACE_FILESYSTEM
@@ -570,6 +571,7 @@ _GLIBCXX_BEGIN_NAMESPACE_FILESYSTEM
ec.assign(errno, std::generic_category());
return false;
}
+#endif
size_t count = from_st->st_size;
#if defined _GLIBCXX_USE_SENDFILE && ! defined _GLIBCXX_FILESYSTEM_IS_WINDOWS
bool has_copied = false;
diff --git a/libstdc++-v3/src/filesystem/ops.cc b/libstdc++-v3/src/filesystem/ops.cc
index d33c13d7f15..7c343cdc30e 100644
index 4d23a804da0..400d2cdaf5b 100644
--- a/libstdc++-v3/src/filesystem/ops.cc
+++ b/libstdc++-v3/src/filesystem/ops.cc
@@ -972,6 +972,7 @@ fs::permissions(const path& p, perms prms, error_code& ec) noexcept
@@ -973,6 +973,7 @@ fs::permissions(const path& p, perms prms, error_code& ec) noexcept
}
int err = 0;
@@ -966,7 +1451,7 @@ index d33c13d7f15..7c343cdc30e 100644
#if _GLIBCXX_USE_FCHMODAT
const int flag = (nofollow && is_symlink(st)) ? AT_SYMLINK_NOFOLLOW : 0;
if (::fchmodat(AT_FDCWD, p.c_str(), static_cast<mode_t>(prms), flag))
@@ -981,6 +982,7 @@ fs::permissions(const path& p, perms prms, error_code& ec) noexcept
@@ -982,6 +983,7 @@ fs::permissions(const path& p, perms prms, error_code& ec) noexcept
ec = std::__unsupported();
else if (posix::chmod(p.c_str(), static_cast<mode_t>(prms)))
err = errno;
@@ -974,3 +1459,16 @@ index d33c13d7f15..7c343cdc30e 100644
#endif
if (err)
diff --git a/lto-plugin/configure b/lto-plugin/configure
index 28f5dd79cd7..a79f318a4d6 100755
--- a/lto-plugin/configure
+++ b/lto-plugin/configure
@@ -6469,7 +6469,7 @@ else
# Adding the `sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored
case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
- *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
+ $tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
break
;;
*)

View File

@@ -13,7 +13,7 @@ index 0d4460b58..0eab54b65 100644
include lm32/Makefile.inc
endif
diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in
index fd845cf5f..7d314a0bb 100644
index fd845cf5f..fc13db331 100644
--- a/libgloss/Makefile.in
+++ b/libgloss/Makefile.in
@@ -173,25 +173,27 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3)
@@ -103,7 +103,7 @@ index fd845cf5f..7d314a0bb 100644
$(top_srcdir)/m68k/acinclude.m4 \
$(top_srcdir)/mcore/acinclude.m4 \
$(top_srcdir)/mips/acinclude.m4 \
@@ -459,6 +462,62 @@ libobjs_a_LIBADD =
@@ -459,6 +462,63 @@ libobjs_a_LIBADD =
am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \
$(am__objects_5) $(am__objects_6) $(am__objects_7)
libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS)
@@ -111,6 +111,7 @@ index fd845cf5f..7d314a0bb 100644
+libsysbase_libsysbase_a_LIBADD =
+@CONFIG_LIBSYSBASE_TRUE@am_libsysbase_libsysbase_a_OBJECTS = libsysbase/libsysbase_libsysbase_a-_exit.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-abort.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-assert.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-build_argv.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-chdir.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-chmod.$(OBJEXT) \
@@ -166,7 +167,7 @@ index fd845cf5f..7d314a0bb 100644
lm32_libgloss_a_AR = $(AR) $(ARFLAGS)
lm32_libgloss_a_LIBADD =
@CONFIG_LM32_TRUE@am_lm32_libgloss_a_OBJECTS = lm32/isatty.$(OBJEXT) \
@@ -668,10 +727,10 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \
@@ -668,10 +728,10 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \
$(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \
$(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \
$(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \
@@ -181,7 +182,7 @@ index fd845cf5f..7d314a0bb 100644
$(xtensa_libsys_openocd_a_SOURCES) \
$(xtensa_libsys_qemu_a_SOURCES) bfin/sim-test.c iq2000/test.c \
$(wince_stub_exe_SOURCES)
@@ -761,7 +820,7 @@ ETAGS = etags
@@ -761,7 +821,7 @@ ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
@@ -190,7 +191,7 @@ index fd845cf5f..7d314a0bb 100644
AARCH64_OBJTYPE = @AARCH64_OBJTYPE@
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -779,7 +838,7 @@ CCASFLAGS = @CCASFLAGS@
@@ -779,7 +839,7 @@ CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
@@ -199,7 +200,7 @@ index fd845cf5f..7d314a0bb 100644
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -874,6 +933,7 @@ pdfdir = @pdfdir@
@@ -874,6 +934,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
@@ -207,7 +208,7 @@ index fd845cf5f..7d314a0bb 100644
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -899,14 +959,14 @@ multilibtooldir = $(tooldir)/lib$(MULTISUBDIR)
@@ -899,14 +960,14 @@ multilibtooldir = $(tooldir)/lib$(MULTISUBDIR)
multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \
$(am__append_8) $(am__append_13) $(am__append_15) \
$(am__append_18) $(am__append_22) $(am__append_23) \
@@ -227,7 +228,7 @@ index fd845cf5f..7d314a0bb 100644
includetooldir = $(tooldir)/include
includetool_DATA = $(am__append_16)
includesystooldir = $(tooldir)/include/sys
@@ -917,7 +977,7 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include
@@ -917,7 +978,7 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include
# to install (e.g. our crt0.o objects).
noinst_LIBRARIES = libobjs.a
libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_25) \
@@ -236,7 +237,7 @@ index fd845cf5f..7d314a0bb 100644
FLAGS_TO_PASS = \
"CC=$(CC)" \
"CFLAGS=$(CFLAGS)" \
@@ -1098,6 +1158,61 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
@@ -1098,6 +1159,62 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
@CONFIG_LIBNOSYS_TRUE@ libnosys/getentropy.c \
@CONFIG_LIBNOSYS_TRUE@ libnosys/_exit.c
@@ -244,6 +245,7 @@ index fd845cf5f..7d314a0bb 100644
+@CONFIG_LIBSYSBASE_TRUE@libsysbase_libsysbase_a_SOURCES = \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/_exit.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/abort.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/assert.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/build_argv.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/chdir.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/chmod.c \
@@ -298,7 +300,7 @@ index fd845cf5f..7d314a0bb 100644
@CONFIG_LM32_TRUE@lm32_libgloss_a_SOURCES = \
@CONFIG_LM32_TRUE@ lm32/isatty.c \
@CONFIG_LM32_TRUE@ lm32/scall.S
@@ -1203,19 +1318,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
@@ -1203,19 +1320,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \
@@ -324,7 +326,7 @@ index fd845cf5f..7d314a0bb 100644
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c
@@ -1228,7 +1343,7 @@ all: config.h
@@ -1228,7 +1345,7 @@ all: config.h
.SUFFIXES: .S .c .dvi .o .obj .ps
am--refresh: Makefile
@:
@@ -333,7 +335,7 @@ index fd845cf5f..7d314a0bb 100644
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@@ -1250,7 +1365,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@@ -1250,7 +1367,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
@@ -342,7 +344,7 @@ index fd845cf5f..7d314a0bb 100644
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
@@ -1730,6 +1845,173 @@ libobjs.a: $(libobjs_a_OBJECTS) $(libobjs_a_DEPENDENCIES) $(EXTRA_libobjs_a_DEPE
@@ -1730,6 +1847,176 @@ libobjs.a: $(libobjs_a_OBJECTS) $(libobjs_a_DEPENDENCIES) $(EXTRA_libobjs_a_DEPE
$(AM_V_at)-rm -f libobjs.a
$(AM_V_AR)$(libobjs_a_AR) libobjs.a $(libobjs_a_OBJECTS) $(libobjs_a_LIBADD)
$(AM_V_at)$(RANLIB) libobjs.a
@@ -358,6 +360,9 @@ index fd845cf5f..7d314a0bb 100644
+libsysbase/libsysbase_libsysbase_a-abort.$(OBJEXT): \
+ libsysbase/$(am__dirstamp) \
+ libsysbase/$(DEPDIR)/$(am__dirstamp)
+libsysbase/libsysbase_libsysbase_a-assert.$(OBJEXT): \
+ libsysbase/$(am__dirstamp) \
+ libsysbase/$(DEPDIR)/$(am__dirstamp)
+libsysbase/libsysbase_libsysbase_a-build_argv.$(OBJEXT): \
+ libsysbase/$(am__dirstamp) \
+ libsysbase/$(DEPDIR)/$(am__dirstamp)
@@ -516,7 +521,7 @@ index fd845cf5f..7d314a0bb 100644
lm32/isatty.$(OBJEXT): lm32/$(am__dirstamp) \
lm32/$(DEPDIR)/$(am__dirstamp)
lm32/scall.$(OBJEXT): lm32/$(am__dirstamp) \
@@ -2113,6 +2395,7 @@ mostlyclean-compile:
@@ -2113,6 +2400,7 @@ mostlyclean-compile:
-rm -f d30v/*.$(OBJEXT)
-rm -f iq2000/*.$(OBJEXT)
-rm -f libnosys/*.$(OBJEXT)
@@ -524,12 +529,13 @@ index fd845cf5f..7d314a0bb 100644
-rm -f lm32/*.$(OBJEXT)
-rm -f nios2/*.$(OBJEXT)
-rm -f riscv/*.$(OBJEXT)
@@ -2238,6 +2521,58 @@ distclean-compile:
@@ -2238,6 +2526,59 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/unlink.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/wait.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-_exit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-abort.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-chdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-chmod.Po@am__quote@
@@ -583,7 +589,7 @@ index fd845cf5f..7d314a0bb 100644
@AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/crt0.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/isatty.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/scall.Po@am__quote@
@@ -3082,6 +3417,734 @@ csky/csky_libsemi_a-getpid.obj: csky/getpid.c
@@ -3082,6 +3423,748 @@ csky/csky_libsemi_a-getpid.obj: csky/getpid.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-getpid.obj `if test -f 'csky/getpid.c'; then $(CYGPATH_W) 'csky/getpid.c'; else $(CYGPATH_W) '$(srcdir)/csky/getpid.c'; fi`
@@ -615,6 +621,20 @@ index fd845cf5f..7d314a0bb 100644
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-abort.obj `if test -f 'libsysbase/abort.c'; then $(CYGPATH_W) 'libsysbase/abort.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/abort.c'; fi`
+
+libsysbase/libsysbase_libsysbase_a-assert.o: libsysbase/assert.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-assert.o -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo -c -o libsysbase/libsysbase_libsysbase_a-assert.o `test -f 'libsysbase/assert.c' || echo '$(srcdir)/'`libsysbase/assert.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libsysbase/assert.c' object='libsysbase/libsysbase_libsysbase_a-assert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-assert.o `test -f 'libsysbase/assert.c' || echo '$(srcdir)/'`libsysbase/assert.c
+
+libsysbase/libsysbase_libsysbase_a-assert.obj: libsysbase/assert.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-assert.obj -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo -c -o libsysbase/libsysbase_libsysbase_a-assert.obj `if test -f 'libsysbase/assert.c'; then $(CYGPATH_W) 'libsysbase/assert.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/assert.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libsysbase/assert.c' object='libsysbase/libsysbase_libsysbase_a-assert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-assert.obj `if test -f 'libsysbase/assert.c'; then $(CYGPATH_W) 'libsysbase/assert.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/assert.c'; fi`
+
+libsysbase/libsysbase_libsysbase_a-build_argv.o: libsysbase/build_argv.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-build_argv.o -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Tpo -c -o libsysbase/libsysbase_libsysbase_a-build_argv.o `test -f 'libsysbase/build_argv.c' || echo '$(srcdir)/'`libsysbase/build_argv.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Po
@@ -1318,7 +1338,7 @@ index fd845cf5f..7d314a0bb 100644
nios2/nios2_libnios2_a-io-close.o: nios2/io-close.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-close.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo -c -o nios2/nios2_libnios2_a-io-close.o `test -f 'nios2/io-close.c' || echo '$(srcdir)/'`nios2/io-close.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po
@@ -5103,6 +6166,8 @@ distclean-generic:
@@ -5103,6 +6186,8 @@ distclean-generic:
-rm -f iq2000/$(am__dirstamp)
-rm -f libnosys/$(DEPDIR)/$(am__dirstamp)
-rm -f libnosys/$(am__dirstamp)
@@ -1327,7 +1347,7 @@ index fd845cf5f..7d314a0bb 100644
-rm -f lm32/$(DEPDIR)/$(am__dirstamp)
-rm -f lm32/$(am__dirstamp)
-rm -f nios2/$(DEPDIR)/$(am__dirstamp)
@@ -5129,7 +6194,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \
@@ -5129,7 +6214,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -1336,7 +1356,7 @@ index fd845cf5f..7d314a0bb 100644
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-local distclean-tags
@@ -5272,7 +6337,7 @@ installcheck-am:
@@ -5272,7 +6357,7 @@ installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
@@ -1511,10 +1531,10 @@ index 268d86c51..1b918a61e 100644
m4_include([mips/acinclude.m4])
diff --git a/libgloss/libsysbase/Makefile.inc b/libgloss/libsysbase/Makefile.inc
new file mode 100644
index 000000000..2030c24d2
index 000000000..22477e8df
--- /dev/null
+++ b/libgloss/libsysbase/Makefile.inc
@@ -0,0 +1,58 @@
@@ -0,0 +1,59 @@
+multilibtool_DATA += %D%/sysbase.specs
+multilibtool_LIBRARIES += %D%/libsysbase.a
+
@@ -1523,6 +1543,7 @@ index 000000000..2030c24d2
+%C%_libsysbase_a_SOURCES = \
+ %D%/_exit.c \
+ %D%/abort.c \
+ %D%/assert.c \
+ %D%/build_argv.c \
+ %D%/chdir.c \
+ %D%/chmod.c \
@@ -1597,16 +1618,23 @@ index 000000000..a45723f84
+}
diff --git a/libgloss/libsysbase/abort.c b/libgloss/libsysbase/abort.c
new file mode 100644
index 000000000..9272e22c9
index 000000000..9074c8fa2
--- /dev/null
+++ b/libgloss/libsysbase/abort.c
@@ -0,0 +1,8 @@
@@ -0,0 +1,15 @@
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/iosupport.h>
+
+void abort(void) {
+ write (2, "Abort called.\n", sizeof("Abort called.\n")-1);
+ _exit (1);
+ do {
+
+ if ( __has_syscall(abort) ) {
+ __syscall_abort();
+ } else {
+ _exit (1);
+ }
+ } while(1);
+}
+
diff --git a/libgloss/libsysbase/acconfig.h b/libgloss/libsysbase/acconfig.h
@@ -1677,6 +1705,29 @@ index 000000000..7b0d7b4d6
+ z8k-*-*) ;;
+ *) AC_DEFINE(MISSING_SYSCALL_NAMES, 1, [Missing syscall names]) ;;
+esac
diff --git a/libgloss/libsysbase/assert.c b/libgloss/libsysbase/assert.c
new file mode 100644
index 000000000..faa74b866
--- /dev/null
+++ b/libgloss/libsysbase/assert.c
@@ -0,0 +1,17 @@
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/iosupport.h>
+
+void
+__assert_func (const char *file,
+ int line,
+ const char *func,
+ const char *failedexpr)
+{
+ if ( __has_syscall(assert_func) ) {
+ __syscall_assert_func(file, line, func, failedexpr);
+ }
+ abort();
+ /* NOTREACHED */
+}
diff --git a/libgloss/libsysbase/build_argv.c b/libgloss/libsysbase/build_argv.c
new file mode 100644
index 000000000..0697f53d2
@@ -6424,10 +6475,10 @@ index 000000000..d15eab89d
+
diff --git a/libgloss/libsysbase/dirent.c b/libgloss/libsysbase/dirent.c
new file mode 100644
index 000000000..482d2f814
index 000000000..4dfeabd71
--- /dev/null
+++ b/libgloss/libsysbase/dirent.c
@@ -0,0 +1,257 @@
@@ -0,0 +1,241 @@
+#include <malloc.h>
+#include <errno.h>
+#include <string.h>
@@ -6567,47 +6618,13 @@ index 000000000..482d2f814
+ return res;
+}
+
+
+struct dirent* readdir (DIR *dirp) {
+ struct stat st;
+ char filename[NAME_MAX+1];
+ int res;
+ int olderrno = errno;
+
+ if (!dirp) {
+ errno = EBADF;
+ return NULL;
+ }
+
+ res = __dirnext (dirp->dirData, filename, &st);
+
+ if (res < 0) {
+ if (errno == ENOENT) {
+ // errno == ENONENT set by dirnext means it's end of directory
+ // But readdir should not touch errno in case of dir end
+ errno = olderrno;
+ }
+ return NULL;
+ }
+
+ // We've moved forward in the directory
+ dirp->position += 1;
+
+ if (strnlen(filename, sizeof(filename)) >= sizeof(dirp->fileData.d_name)) {
+ errno = EOVERFLOW;
+ return NULL;
+ }
+
+ strncpy (dirp->fileData.d_name, filename, sizeof(dirp->fileData.d_name));
+ dirp->fileData.d_ino = st.st_ino;
+ dirp->fileData.d_type = IFTODT(st.st_mode);
+
+ return &(dirp->fileData);
+}
+
+
+int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result) {
+ struct stat st;
+#ifdef _DIRENT_HAVE_D_STAT
+ struct stat *st = &dirp->fileData.d_stat;
+#else
+ struct stat tmpstat;
+ struct stat *st = &tmpstat;
+#endif
+ char filename[NAME_MAX+1];
+ int res;
+
@@ -6615,7 +6632,11 @@ index 000000000..482d2f814
+ return EBADF;
+ }
+
+ res = __dirnext (dirp->dirData, filename, &st);
+ if (!result) {
+ return EFAULT;
+ }
+
+ res = __dirnext (dirp->dirData, filename, st);
+
+ if (res < 0) {
+ res = errno;
@@ -6624,6 +6645,7 @@ index 000000000..482d2f814
+ // errno == ENONENT set by dirnext means it's end of directory
+ // But readdir should not touch errno in case of dir end
+ res = 0;
+ errno = 0;
+ }
+ return res;
+ }
@@ -6637,13 +6659,26 @@ index 000000000..482d2f814
+ }
+
+ strncpy (entry->d_name, filename, sizeof(entry->d_name));
+ entry->d_ino = st.st_ino;
+ entry->d_type = IFTODT(st.st_mode);
+ entry->d_ino = st->st_ino;
+ entry->d_type = IFTODT(st->st_mode);
+
+ *result = entry;
+ return 0;
+}
+
+struct dirent* readdir (DIR *dirp) {
+
+ struct dirent *entry = &dirp->fileData;
+
+ int res = readdir_r(dirp, entry, &entry);
+
+ if (res !=0) {
+ errno = res;
+ return NULL;
+ }
+
+ return entry;
+}
+
+void rewinddir (DIR *dirp) {
+ if (!dirp) {
@@ -7014,7 +7049,7 @@ index 000000000..2bada9736
+}
diff --git a/libgloss/libsysbase/fpathconf.c b/libgloss/libsysbase/fpathconf.c
new file mode 100644
index 000000000..453f64870
index 000000000..9cba92a72
--- /dev/null
+++ b/libgloss/libsysbase/fpathconf.c
@@ -0,0 +1,30 @@
@@ -7034,7 +7069,7 @@ index 000000000..453f64870
+ struct _reent *r = _REENT;
+
+ if ( NULL == handle ) {
+ errno = EINVAL;
+ errno = EBADF;
+ return ret;
+ }
+
@@ -7050,10 +7085,10 @@ index 000000000..453f64870
+}
diff --git a/libgloss/libsysbase/fstat.c b/libgloss/libsysbase/fstat.c
new file mode 100644
index 000000000..32267b828
index 000000000..94924d802
--- /dev/null
+++ b/libgloss/libsysbase/fstat.c
@@ -0,0 +1,32 @@
@@ -0,0 +1,35 @@
+#include "config.h"
+#include <_ansi.h>
+#include <_syslist.h>
@@ -7073,7 +7108,10 @@ index 000000000..32267b828
+ if(fileDesc!=-1) {
+ handle = __get_handle(fileDesc);
+
+ if ( NULL == handle ) return ret;
+ if ( NULL == handle ) {
+ errno = EBADF;
+ return ret;
+ }
+
+ dev = handle->device;
+
@@ -7088,7 +7126,7 @@ index 000000000..32267b828
+}
diff --git a/libgloss/libsysbase/fsync.c b/libgloss/libsysbase/fsync.c
new file mode 100644
index 000000000..fb06cb6d1
index 000000000..e63e3762b
--- /dev/null
+++ b/libgloss/libsysbase/fsync.c
@@ -0,0 +1,34 @@
@@ -7112,7 +7150,7 @@ index 000000000..fb06cb6d1
+ handle = __get_handle(fileDesc);
+
+ if ( NULL == handle ) {
+ errno = EINVAL;
+ errno = EBADF;
+ return ret;
+ }
+
@@ -7128,7 +7166,7 @@ index 000000000..fb06cb6d1
+}
diff --git a/libgloss/libsysbase/ftruncate.c b/libgloss/libsysbase/ftruncate.c
new file mode 100644
index 000000000..0cd7d0fc4
index 000000000..94b4a3761
--- /dev/null
+++ b/libgloss/libsysbase/ftruncate.c
@@ -0,0 +1,34 @@
@@ -7152,7 +7190,7 @@ index 000000000..0cd7d0fc4
+ handle = __get_handle(fileDesc);
+
+ if ( NULL == handle ) {
+ r->_errno = EINVAL;
+ r->_errno=EBADF;
+ return ret;
+ }
+
@@ -7697,10 +7735,10 @@ index 000000000..d7a988359
+
diff --git a/libgloss/libsysbase/lseek.c b/libgloss/libsysbase/lseek.c
new file mode 100644
index 000000000..39ef385b1
index 000000000..c5568e338
--- /dev/null
+++ b/libgloss/libsysbase/lseek.c
@@ -0,0 +1,35 @@
@@ -0,0 +1,38 @@
+#include "config.h"
+#include <_ansi.h>
+#include <_syslist.h>
@@ -7722,7 +7760,10 @@ index 000000000..39ef385b1
+
+ handle = __get_handle(fileDesc);
+
+ if ( NULL == handle ) return ret;
+ if ( NULL == handle ) {
+ r->_errno=EBADF;
+ return ret;
+ }
+
+ dev = handle->device;
+
@@ -7906,10 +7947,10 @@ index 000000000..a696c9ab9
+}
diff --git a/libgloss/libsysbase/read.c b/libgloss/libsysbase/read.c
new file mode 100644
index 000000000..9c548d830
index 000000000..30505c7b6
--- /dev/null
+++ b/libgloss/libsysbase/read.c
@@ -0,0 +1,32 @@
@@ -0,0 +1,35 @@
+#include "config.h"
+#include <_ansi.h>
+#include <_syslist.h>
@@ -7929,7 +7970,10 @@ index 000000000..9c548d830
+ if(fileDesc!=-1) {
+ handle = __get_handle(fileDesc);
+
+ if ( NULL == handle ) return ret;
+ if ( NULL == handle ) {
+ r->_errno=EBADF;
+ return ret;
+ }
+
+ dev = handle->device;
+
@@ -8884,10 +8928,10 @@ index 000000000..2c2998250
+#endif /* __WARNING_H__ */
diff --git a/libgloss/libsysbase/write.c b/libgloss/libsysbase/write.c
new file mode 100644
index 000000000..04198e854
index 000000000..baf0d6ae5
--- /dev/null
+++ b/libgloss/libsysbase/write.c
@@ -0,0 +1,31 @@
@@ -0,0 +1,34 @@
+#include "config.h"
+#include <_ansi.h>
+#include <_syslist.h>
@@ -8907,7 +8951,10 @@ index 000000000..04198e854
+ if(fileDesc!=-1) {
+ handle = __get_handle(fileDesc);
+
+ if ( NULL == handle ) return ret;
+ if ( NULL == handle ) {
+ r->_errno=EBADF;
+ return ret;
+ }
+
+ dev = handle->device;
+
@@ -8984,11 +9031,11 @@ index ef5038e68..32a1d5e0b 100644
.stab 0 : { *(.stab) }
diff --git a/libgloss/rs6000/crtmain.c b/libgloss/rs6000/crtmain.c
new file mode 100644
index 000000000..bd25d775d
index 000000000..7f8850624
--- /dev/null
+++ b/libgloss/rs6000/crtmain.c
@@ -0,0 +1,18 @@
+#include <unistd.h>
@@ -0,0 +1,20 @@
+#include <stdlib.h>
+
+struct __argv {
+ int argvMagic; //!< argv magic number, set to 0x5f617267 ('_arg') if valid
@@ -9002,10 +9049,28 @@ index 000000000..bd25d775d
+void __init();
+void SYS_PreMain();
+
+int main(int argc, char **argv);
+
+void __crtmain() {
+ SYS_PreMain();
+ exit ( main(__system_argv->argc,__system_argv->argv) );
+}
diff --git a/libgloss/rs6000/mbx-print.c b/libgloss/rs6000/mbx-print.c
index 64472ee68..5a16e1ab7 100644
--- a/libgloss/rs6000/mbx-print.c
+++ b/libgloss/rs6000/mbx-print.c
@@ -15,7 +15,10 @@
/*
* print -- do a raw print of a string
- */
+ */
+
+#include <unistd.h>
+
void
print (ptr)
char *ptr;
diff --git a/libgloss/rs6000/mbx.ld b/libgloss/rs6000/mbx.ld
index cedf4e867..99d849e90 100644
--- a/libgloss/rs6000/mbx.ld
@@ -9018,6 +9083,77 @@ index cedf4e867..99d849e90 100644
/* These are needed for ELF backends which have not yet been
converted to the new style linker. */
.stab 0 : { *(.stab) }
diff --git a/libgloss/rs6000/mvme-print.c b/libgloss/rs6000/mvme-print.c
index 8d195424e..bae0eaf7c 100644
--- a/libgloss/rs6000/mvme-print.c
+++ b/libgloss/rs6000/mvme-print.c
@@ -17,6 +17,10 @@
* write -- write some bytes to the output device.
*/
+void __outln( char *ptr, char *q);
+void __outstr( char *ptr, char *q);
+void __pcrlf();
+
int
write (fd, ptr, len)
int fd;
diff --git a/libgloss/rs6000/sim-abort.c b/libgloss/rs6000/sim-abort.c
index e1b59cf19..faeb93153 100644
--- a/libgloss/rs6000/sim-abort.c
+++ b/libgloss/rs6000/sim-abort.c
@@ -14,6 +14,9 @@
* they apply.
*/
+#include <unistd.h>
+#include <stdlib.h>
+
void abort(void)
{
write (2, "Abort called.\n", sizeof("Abort called.\n")-1);
diff --git a/libgloss/rs6000/sim-inbyte.c b/libgloss/rs6000/sim-inbyte.c
index 787b68976..44b273dff 100644
--- a/libgloss/rs6000/sim-inbyte.c
+++ b/libgloss/rs6000/sim-inbyte.c
@@ -14,6 +14,8 @@
* they apply.
*/
+#include <unistd.h>
+
int
inbyte ()
{
diff --git a/libgloss/rs6000/sim-print.c b/libgloss/rs6000/sim-print.c
index c0b9adced..911d8f4a2 100644
--- a/libgloss/rs6000/sim-print.c
+++ b/libgloss/rs6000/sim-print.c
@@ -15,7 +15,10 @@
/*
* print -- do a raw print of a string
- */
+ */
+
+#include <unistd.h>
+
void
print (ptr)
char *ptr;
diff --git a/libgloss/rs6000/sim-sbrk.c b/libgloss/rs6000/sim-sbrk.c
index 5c8bd6522..9cf7de25d 100644
--- a/libgloss/rs6000/sim-sbrk.c
+++ b/libgloss/rs6000/sim-sbrk.c
@@ -17,6 +17,8 @@
extern char _end[];
static char *curbrk = _end;
+int brk(char *curbrk);
+
char *
sbrk (incr)
int incr;
diff --git a/libgloss/rs6000/xilinx.ld b/libgloss/rs6000/xilinx.ld
index 75b2a12b6..40a4a1e4b 100644
--- a/libgloss/rs6000/xilinx.ld
@@ -9205,7 +9341,7 @@ index 9a32646ab..fb28f3611 100644
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/powerpc/libc_a-vfprintf.o -MD -MP -MF libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Tpo -c -o libc/machine/powerpc/libc_a-vfprintf.o `test -f 'libc/machine/powerpc/vfprintf.c' || echo '$(srcdir)/'`libc/machine/powerpc/vfprintf.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Tpo libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Po
diff --git a/newlib/configure.host b/newlib/configure.host
index 386183466..728170741 100644
index 386183466..45993129a 100644
--- a/newlib/configure.host
+++ b/newlib/configure.host
@@ -637,6 +637,14 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
@@ -9231,7 +9367,7 @@ index 386183466..728170741 100644
+ powerpc*-*-eabi*)
+ default_newlib_io_c99_formats="yes"
+ default_newlib_io_long_long="yes"
+ newlib_cflags="${newlib_cflags} -DCUSTOM_MALLOC_LOCK -D__DYNAMIC_REENT__ -DGETREENT_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -D__DEFAULT_UTF8__"
+ newlib_cflags="${newlib_cflags} -DHAVE_ASSERT_FUNC -DABORT_PROVIDED -DCUSTOM_MALLOC_LOCK -D__DYNAMIC_REENT__ -DGETREENT_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -D__DEFAULT_UTF8__"
+ newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections"
+ syscall_dir=syscalls
+ ;;
@@ -9288,27 +9424,42 @@ index b1dd2a7c4..16e29c037 100644
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/regex.h b/newlib/libc/include/regex.h
index fa3e26879..4da1a374e 100644
--- a/newlib/libc/include/regex.h
+++ b/newlib/libc/include/regex.h
@@ -96,7 +96,7 @@ __BEGIN_DECLS
int regcomp(regex_t *__restrict, const char *__restrict, int);
size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t);
int regexec(const regex_t *__restrict, const char *__restrict,
- size_t, regmatch_t [__restrict], int);
+ size_t, regmatch_t [__restrict_arr], int);
void regfree(regex_t *);
__END_DECLS
diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h
index 5dcc77a80..6930a751d 100644
index 5dcc77a80..fdf232649 100644
--- a/newlib/libc/include/sys/config.h
+++ b/newlib/libc/include/sys/config.h
@@ -4,8 +4,19 @@
@@ -4,8 +4,21 @@
#include <machine/ieeefp.h> /* floating point macros */
#include <sys/features.h> /* POSIX defs */
-#ifdef __aarch64__
+#ifdef __DEVKITARM__
+#define __DYNAMIC_REENT__
+#define MALLOC_ALIGNMENT_THRESHOLD 32
+#endif
+
+#ifdef __DEVKITA64__
#define MALLOC_ALIGNMENT 16
+#define MALLOC_ALIGNMENT_THRESHOLD 32
+#define __DYNAMIC_REENT__
+#endif
+
+#ifdef __DEVKITPPC__
+#define MALLOC_ALIGNMENT_THRESHOLD 64
+#define __BUFSIZ__ 32768
+#define MALLOC_ALIGNMENT 64
+#define __DYNAMIC_REENT__
#endif
@@ -9329,10 +9480,10 @@ index a7d4bc52d..6b06ce5a5 100644
#ifdef __rtems__
diff --git a/newlib/libc/include/sys/iosupport.h b/newlib/libc/include/sys/iosupport.h
new file mode 100644
index 000000000..fb0646bc6
index 000000000..3a7c44c28
--- /dev/null
+++ b/newlib/libc/include/sys/iosupport.h
@@ -0,0 +1,125 @@
@@ -0,0 +1,127 @@
+//---------------------------------------------------------------------------------
+#ifndef __iosupp_h__
+#define __iosupp_h__
@@ -9342,7 +9493,7 @@ index 000000000..fb0646bc6
+extern "C" {
+#endif
+
+#include <reent.h>
+#include <sys/reent.h>
+#include <sys/stat.h>
+#include <sys/statvfs.h>
+#include <sys/time.h>
@@ -9402,7 +9553,7 @@ index 000000000..fb0646bc6
+ int (*lstat_r)(struct _reent *r, const char *file, struct stat *st);
+ int (*utimes_r)(struct _reent *r, const char *filename, const struct timeval times[2]);
+
+ long (*fpathconf_r)(struct _reent *r, int fd, int name);
+ long (*fpathconf_r)(struct _reent *r, void *fd, int name);
+ long (*pathconf_r)(struct _reent *r, const char *path, int name);
+
+ int (*symlink_r)(struct _reent *r, const char *target, const char *linkpath);
@@ -9419,6 +9570,8 @@ index 000000000..fb0646bc6
+#define __SYSCALL(_name) __syscall_##_name
+#endif
+
+void __SYSCALL(abort) (void);
+void __SYSCALL(assert_func) (const char *file, int line, const char *func, const char *failedexpr);
+void __SYSCALL(exit) ( int rc );
+int __SYSCALL(gettod_r) (struct _reent *ptr, struct timeval *tp, struct timezone *tz);
+void __SYSCALL(lock_init) (_LOCK_T *lock);
@@ -9458,6 +9611,23 @@ index 000000000..fb0646bc6
+//---------------------------------------------------------------------------------
+#endif // __iosupp_h__
+//---------------------------------------------------------------------------------
diff --git a/newlib/libc/include/sys/mkdev.h b/newlib/libc/include/sys/mkdev.h
new file mode 100644
index 000000000..a6f860158
--- /dev/null
+++ b/newlib/libc/include/sys/mkdev.h
@@ -0,0 +1,11 @@
+#ifndef __SYS_MKDEV_H__
+#define __SYS_MKDEV_H__
+
+#define MINORBITS 20
+#define MINORMASK ((1U << MINORBITS) - 1)
+
+#define major(dev) ((unsigned int) ((dev) >> MINORBITS))
+#define minor(dev) ((unsigned int) ((dev) & MINORMASK))
+#define mkdev(ma,mi) (((ma) << MINORBITS) | (mi))
+
+#endif
diff --git a/newlib/libc/include/sys/param.h b/newlib/libc/include/sys/param.h
index 9a6f115a6..142e71d35 100644
--- a/newlib/libc/include/sys/param.h
@@ -9473,10 +9643,19 @@ index 9a6f115a6..142e71d35 100644
#define MAXPATHLEN PATH_MAX
diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h
index a02e7c2bd..61de73f88 100644
index a02e7c2bd..5bade6497 100644
--- a/newlib/libc/include/sys/reent.h
+++ b/newlib/libc/include/sys/reent.h
@@ -420,6 +420,8 @@ struct _reent
@@ -45,6 +45,8 @@ struct _reent;
struct __locale_t;
+void * memset (void *, int, size_t);
+
/*
* If _REENT_SMALL is defined, we make struct _reent as small as possible,
* by having nearly everything possible allocated at first use.
@@ -420,6 +422,8 @@ struct _reent
__FILE *__sf; /* file descriptors */
struct _misc_reent *_misc; /* strtok, multibyte states */
char *_signal_buf; /* strsignal */
@@ -9485,7 +9664,7 @@ index a02e7c2bd..61de73f88 100644
};
# define _REENT_INIT(var) \
@@ -648,6 +650,8 @@ struct _reent
@@ -648,6 +652,8 @@ struct _reent
/* signal info */
void (**_sig_func)(int);
@@ -9782,17 +9961,19 @@ index 000000000..a7d63da51
+#endif // _MACHINE__TYPES_H
diff --git a/newlib/libc/machine/powerpc/sys/dirent.h b/newlib/libc/machine/powerpc/sys/dirent.h
new file mode 100644
index 000000000..2aaca6080
index 000000000..b3780c263
--- /dev/null
+++ b/newlib/libc/machine/powerpc/sys/dirent.h
@@ -0,0 +1,58 @@
@@ -0,0 +1,61 @@
+#ifndef _dirent_h_
+#define _dirent_h_
+
+#define _DIRENT_HAVE_D_TYPE
+#define _DIRENT_HAVE_D_STAT
+
+#include <sys/iosupport.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/syslimits.h>
+
+#define DT_UNKNOWN 0
@@ -9811,6 +9992,7 @@ index 000000000..2aaca6080
+
+struct dirent {
+ ino_t d_ino;
+ struct stat d_stat;
+ unsigned char d_type;
+ char d_name[NAME_MAX+1];
+};
@@ -10051,6 +10233,30 @@ index 8664dc3e5..dbaba0264 100644
(void) memcpy ((void *) p, (void *) fp->_p, resid);
fp->_r -= resid;
fp->_p += resid;
diff --git a/newlib/libc/stdio/makebuf.c b/newlib/libc/stdio/makebuf.c
index b9c75bbf8..bc65acc2a 100644
--- a/newlib/libc/stdio/makebuf.c
+++ b/newlib/libc/stdio/makebuf.c
@@ -19,6 +19,7 @@
#include <_ansi.h>
#include <stdio.h>
#include <stdlib.h>
+#include <malloc.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/unistd.h>
@@ -50,7 +51,11 @@ __smakebuf_r (struct _reent *ptr,
return;
}
flags = __swhatbuf_r (ptr, fp, &size, &couldbetty);
+#ifdef MALLOC_ALIGNMENT_THRESHOLD
+ if ((p = _memalign_r (ptr, MALLOC_ALIGNMENT_THRESHOLD, size)) == NULL)
+#else
if ((p = _malloc_r (ptr, size)) == NULL)
+#endif
{
if (!(fp->_flags & __SSTR))
{
diff --git a/newlib/libc/stdio/remove.c b/newlib/libc/stdio/remove.c
index d8dfdbd82..a85b5a99b 100644
--- a/newlib/libc/stdio/remove.c
@@ -10186,6 +10392,24 @@ index 710440389..985e720bf 100644
}
#endif /* _WANT_REGISTER_FINI */
diff --git a/newlib/libc/stdlib/malloc.c b/newlib/libc/stdlib/malloc.c
index f5ac29208..7d016a653 100644
--- a/newlib/libc/stdlib/malloc.c
+++ b/newlib/libc/stdlib/malloc.c
@@ -161,7 +161,12 @@ Supporting OS subroutines required: <<sbrk>>. */
void *
malloc (size_t nbytes) /* get a block */
{
- return _malloc_r (_REENT, nbytes);
+#ifdef MALLOC_ALIGNMENT_THRESHOLD
+ if (nbytes >= MALLOC_ALIGNMENT_THRESHOLD)
+ return _memalign_r (_REENT, MALLOC_ALIGNMENT_THRESHOLD, nbytes);
+ else
+#endif
+ return _malloc_r (_REENT, nbytes);
}
void
diff --git a/newlib/libc/stdlib/mlock.c b/newlib/libc/stdlib/mlock.c
index 23aa10173..ba88eb9fb 100644
--- a/newlib/libc/stdlib/mlock.c

View File

@@ -13,4 +13,4 @@ cd $BUILDDIR
tar -xvf $SRCDIR/devkitppc-rules-$DKPPC_RULES_VER.tar.gz
cd devkitppc-rules-$DKPPC_RULES_VER
make install
$MAKE install

View File

@@ -101,7 +101,7 @@ then
--with-newlib \
--with-headers=../../newlib-$NEWLIB_VER/newlib/libc/include \
--prefix=$prefix \
--with-bugurl="https://github.com/devkitpro/buildscripts/issues" --with-pkgversion="devkitPPC release 45" \
--with-bugurl="https://github.com/devkitpro/buildscripts/issues" --with-pkgversion="devkitPPC release 46.1" \
$CROSS_PARAMS \
$CROSS_GCC_PARAMS \
$EXTRA_GCC_PARAMS \

View File

@@ -30,17 +30,17 @@ done
case "$VERSION" in
"1" )
GCC_VER=13.2.0
BINUTILS_VER=2.41
NEWLIB_VER=4.4.0.20231231
GCC_VER=15.1.0
BINUTILS_VER=2.44
NEWLIB_VER=4.5.0.20241231
basedir='dkarm-eabi'
package=devkitARM
target=arm-none-eabi
toolchain=DEVKITARM
;;
"2" )
GCC_VER=13.2.0
BINUTILS_VER=2.41
GCC_VER=14.2.0
BINUTILS_VER=2.43.1
MN_BINUTILS_VER=2.24
NEWLIB_VER=4.4.0.20231231
basedir='dkppc'
@@ -49,9 +49,9 @@ case "$VERSION" in
toolchain=DEVKITPPC
;;
"3" )
GCC_VER=13.2.0
BINUTILS_VER=2.41
NEWLIB_VER=4.3.0.20230120
GCC_VER=14.2.0
BINUTILS_VER=2.43.1
NEWLIB_VER=4.4.0.20231231
basedir='dka64'
package=devkitA64
target=aarch64-none-elf