Compare commits

...

10 Commits

Author SHA1 Message Date
Dave Murphy
9b57a02264 devkitA64: release 30 2026-06-10 17:01:20 +01:00
Dave Murphy
5be6f7a121 devkitARM: release 68 2026-06-10 17:01:20 +01:00
Dave Murphy
7a8c81eecc devkitPPC: binutils 2.46, gcc 16.1.0 2026-06-10 17:01:13 +01:00
Dave Murphy
174e0edc3f devkitARM: fix c89 building 2026-04-11 17:35:30 +01:00
Dave Murphy
d2e6e22b37 remove stale patches 2026-02-20 15:55:30 +00:00
Dave Murphy
f1a462cc36 devkitPPC: update newlib patch 2026-02-20 15:54:52 +00:00
Dave Murphy
9681963375 devkitA64: update newlib patch 2026-02-20 15:52:39 +00:00
Dave Murphy
e9f9826e26 update patchsets for devkitARM release 67.1 2026-02-17 17:37:34 +00:00
Dave Murphy
6af2efa45a remove unused patches 2026-02-01 23:50:47 +00:00
Dave Murphy
0aa89d4699 patchsets for devkitA64 r29.1 2026-02-01 23:48:24 +00:00
9 changed files with 768 additions and 15400 deletions

View File

@@ -1,8 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# devkitARM release 67 # devkitARM release 68
# devkitPPC release 49.1 # devkitPPC release 50
# devkitA64 release 29 # devkitA64 release 30
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
if [ 0 -eq 1 ] ; then if [ 0 -eq 1 ] ; then

View File

@@ -0,0 +1,539 @@
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index dbf53756200..087ea660042 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -2070,6 +2070,14 @@ struct output_elf_obj_tdata
asection *sec;
} package_metadata;
+ /* Data for .nx-module-name. */
+ struct
+ {
+ bool (*after_write_object_contents) (bfd *);
+ const char *name;
+ asection *sec;
+ } nx_module_name;
+
/* Records the result of `get_program_header_size'. */
bfd_size_type program_header_size;
diff --git a/bfd/elf.c b/bfd/elf.c
index 1177c3c3016..0cfd60b9426 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -7288,6 +7288,14 @@ _bfd_elf_write_object_contents (bfd *abfd)
if (!bed->s->write_shdrs_and_ehdr (abfd))
return false;
+ /* Write out the NX module name. */
+ if (t->o->nx_module_name.after_write_object_contents != NULL)
+ {
+ failed = !(*t->o->nx_module_name.after_write_object_contents) (abfd);
+ if (failed)
+ return false;
+ }
+
/* This is last since write_shdrs_and_ehdr can touch i_shdrp[0]. */
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 1ba7dd393e6..04f837e2140 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -2444,6 +2444,12 @@ enum elf_aarch64_stub_type
aarch64_stub_erratum_843419_veneer,
};
+/* Is an undefined weak symbol resolved to 0 ? */
+#define UNDEFINED_WEAK_RESOLVED_TO_ZERO(INFO, EH) \
+ ((EH)->root.root.type == bfd_link_hash_undefweak \
+ && bfd_link_executable (INFO) \
+ && !(INFO)->dynamic_undefined_weak)
+
struct elf_aarch64_stub_hash_entry
{
/* Base hash table entry structure. */
@@ -7054,11 +7060,13 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
Elf_Internal_Sym *sym;
asection *sec;
struct elf_link_hash_entry *h;
+ struct elf_aarch64_link_hash_entry *eh;
bfd_vma relocation;
bfd_reloc_status_type r;
arelent bfd_reloc;
char sym_type;
bool unresolved_reloc = false;
+ bool resolved_to_zero = false;
char *error_message = NULL;
r_symndx = ELFNN_R_SYM (rel->r_info);
@@ -7199,6 +7207,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
h, &unresolved_reloc,
save_addend, &addend, sym);
+ eh = (struct elf_aarch64_link_hash_entry *) h;
+ resolved_to_zero = (eh != NULL
+ && UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh));
+
switch (elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type))
{
case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
@@ -7222,7 +7234,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
need_relocs =
(!bfd_link_executable (info) || indx != 0) &&
(h == NULL
- || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+ || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT && !resolved_to_zero)
|| h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7317,7 +7329,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
need_relocs =
(!bfd_link_executable (info) || indx != 0) &&
(h == NULL
- || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+ || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT && !resolved_to_zero)
|| h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7366,7 +7378,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
bfd_vma off = symbol_tlsdesc_got_offset (input_bfd, h, r_symndx);
need_relocs = (h == NULL
- || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+ || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT && !resolved_to_zero)
|| h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7692,6 +7704,23 @@ need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
return false;
}
+/* Remove undefined weak symbol from the dynamic symbol table if it
+ is resolved to 0. */
+
+static bool
+elfNN_aarch64_elf_fixup_symbol (struct bfd_link_info *info,
+ struct elf_link_hash_entry *h)
+{
+ if (h->dynindx != -1
+ && UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, elf_aarch64_hash_entry (h)))
+ {
+ h->dynindx = -1;
+ _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
+ h->dynstr_index);
+ }
+ return true;
+}
+
/* 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
@@ -8797,6 +8826,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;
+ bool resolved_to_zero;
/* An example of a bfd_link_hash_indirect symbol is versioned
symbol. For example: __gxx_personality_v0(bfd_link_hash_indirect)
@@ -8816,6 +8846,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);
+ eh = (struct elf_aarch64_link_hash_entry *) h;
+ eh->tlsdesc_got_jump_table_offset = (bfd_vma) - 1;
+ resolved_to_zero = UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh);
+
/* 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
@@ -8825,7 +8859,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. */
- if (h->dynindx == -1 && !h->forced_local
+ if (h->dynindx == -1 && !h->forced_local && !resolved_to_zero
&& h->root.type == bfd_link_hash_undefweak)
{
if (!bfd_elf_link_record_dynamic_symbol (info, h))
@@ -8859,6 +8893,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;
+ /* There should be no PLT relocations against resolved undefined
+ weak symbols in the executable. */
+ if (!resolved_to_zero)
+ {
+
/* 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;
@@ -8887,6 +8926,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
htab->variant_pcs = 1;
}
+ }
else
{
h->plt.offset = (bfd_vma) - 1;
@@ -8899,9 +8939,6 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
h->needs_plt = 0;
}
- eh = (struct elf_aarch64_link_hash_entry *) h;
- eh->tlsdesc_got_jump_table_offset = (bfd_vma) - 1;
-
if (h->got.refcount > 0)
{
bool dyn;
@@ -8913,7 +8950,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. */
- if (dyn && h->dynindx == -1 && !h->forced_local
+ if (dyn && h->dynindx == -1 && !h->forced_local && !resolved_to_zero
&& h->root.type == bfd_link_hash_undefweak)
{
if (!bfd_elf_link_record_dynamic_symbol (info, h))
@@ -8927,7 +8964,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;
- if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+ if (((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT && !resolved_to_zero)
|| h->root.type != bfd_link_hash_undefweak)
&& (bfd_link_pic (info)
|| WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h))
@@ -8963,7 +9000,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
}
indx = h && h->dynindx != -1 ? h->dynindx : 0;
- if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+ if (((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT && !resolved_to_zero)
|| h->root.type != bfd_link_hash_undefweak)
&& (!bfd_link_executable (info)
|| indx != 0
@@ -9045,7 +9082,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)
{
- if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
+ if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT || resolved_to_zero
|| UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
h->dyn_relocs = NULL;
@@ -9065,7 +9102,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. */
- if (!h->non_got_ref
+ if (!(h->non_got_ref
+ || (h->root.type == bfd_link_hash_undefweak
+ && !resolved_to_zero))
&& ((h->def_dynamic
&& !h->def_regular)
|| (htab->root.dynamic_sections_created
@@ -9076,6 +9115,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
+ && !resolved_to_zero
&& h->root.type == bfd_link_hash_undefweak
&& !bfd_elf_link_record_dynamic_symbol (info, h))
return false;
@@ -10046,8 +10086,17 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
Elf_Internal_Sym *sym)
{
struct elf_aarch64_link_hash_table *htab;
+ struct elf_aarch64_link_hash_entry *eh;
+ bool local_undefweak;
htab = elf_aarch64_hash_table (info);
+ eh = (struct elf_aarch64_link_hash_entry *) h;
+
+ /* We keep PLT/GOT entries without dynamic PLT/GOT relocations for
+ resolved undefined weak symbols in executable so that their
+ references have value 0 at run-time. */
+ local_undefweak = UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh);
+
if (h->plt.offset != (bfd_vma) - 1)
{
asection *plt, *gotplt, *relplt;
@@ -10082,7 +10131,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)
+ if (!local_undefweak && !h->def_regular)
{
/* Mark the symbol as undefined, rather than as defined in
the .plt section. */
@@ -10104,7 +10153,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. */
- && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
+ && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h)
+ && !local_undefweak)
{
Elf_Internal_Rela rela;
bfd_byte *loc;
@@ -10811,6 +10861,9 @@ static const struct elf_size_info elfNN_aarch64_size_info =
#define elf_backend_init_index_section \
_bfd_elf_init_2_index_sections
+#define elf_backend_fixup_symbol \
+ elfNN_aarch64_elf_fixup_symbol
+
#define elf_backend_finish_dynamic_sections \
elfNN_aarch64_finish_dynamic_sections
diff --git a/ld/emulparams/aarch64elf.sh b/ld/emulparams/aarch64elf.sh
index aa051c76a7a..073d3a47b65 100644
--- a/ld/emulparams/aarch64elf.sh
+++ b/ld/emulparams/aarch64elf.sh
@@ -1,4 +1,5 @@
source_sh ${srcdir}/emulparams/dt-relr.sh
+source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
ARCH=aarch64
MACHINE=
diff --git a/ld/emulparams/aarch64elf32.sh b/ld/emulparams/aarch64elf32.sh
index 0565b7a066c..64821b1fc31 100644
--- a/ld/emulparams/aarch64elf32.sh
+++ b/ld/emulparams/aarch64elf32.sh
@@ -1,4 +1,5 @@
source_sh ${srcdir}/emulparams/dt-relr.sh
+source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
ARCH="aarch64:ilp32"
MACHINE=
diff --git a/ld/emulparams/elf32ppccommon.sh b/ld/emulparams/elf32ppccommon.sh
index da892988f5d..6b8efb9bbdb 100644
--- a/ld/emulparams/elf32ppccommon.sh
+++ b/ld/emulparams/elf32ppccommon.sh
@@ -23,7 +23,7 @@ else
unset SBSS_START_SYMBOLS
unset SBSS_END_SYMBOLS
fi
-OTHER_END_SYMBOLS="${CREATE_SHLIB+PROVIDE (}__end = .${CREATE_SHLIB+)};"
+OTHER_END_SYMBOLS="${CREATE_SHLIB+PROVIDE (}__end = .${CREATE_SHLIB+)};${CREATE_SHLIB+PROVIDE (}__end__ = .${CREATE_SHLIB+)};"
OTHER_RELRO_SECTIONS="
.fixup ${RELOCATING-0} : { *(.fixup) }
.got1 ${RELOCATING-0} : { *(.got1) }
diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
index 5ddbed99724..2891f84ebdb 100644
--- a/ld/emultempl/aarch64elf.em
+++ b/ld/emultempl/aarch64elf.em
@@ -490,7 +490,7 @@ PARSE_AND_LIST_LONGOPTS='
{ "discard-sframe", no_argument, NULL, OPTION_DISCARD_SFRAME},
'
-PARSE_AND_LIST_OPTIONS='
+PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'
fprintf (file, _(" --no-enum-size-warning Don'\''t warn about objects with incompatible\n"
" 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 37bdfff051c..14f4bd6e8c6 100644
--- a/ld/emultempl/elf.em
+++ b/ld/emultempl/elf.em
@@ -814,6 +814,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},
{"rosegment", no_argument, NULL, OPTION_ROSEGMENT},
@@ -901,6 +902,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)
+ {
+ free ((char *) ldelf_emit_nx_module_name);
+ ldelf_emit_nx_module_name = NULL;
+ }
+ if (optarg == NULL)
+ 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 a623d37c4d0..1434a643db5 100644
--- a/ld/ldelf.c
+++ b/ld/ldelf.c
@@ -55,6 +55,9 @@ const char *ldelf_emit_note_gnu_build_id;
/* Content of .note.package section. */
const char *ldelf_emit_note_fdo_package_metadata;
+/* NX module name. */
+const char *ldelf_emit_nx_module_name;
+
/* These variables are required to pass information back and forth
between after_open and check_needed and stat_needed and vercheck. */
@@ -1213,8 +1216,93 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
*save_input_bfd_tail = NULL;
}
-/* This is called before calling plugin 'all symbols read' hook. */
+static bool
+write_nx_module_name (bfd *abfd)
+{
+ struct elf_obj_tdata *t = elf_tdata (abfd);
+ const char *name;
+ asection *asec;
+ Elf_Internal_Shdr *i_shdr;
+ unsigned char *contents;
+ bfd_size_type size;
+ file_ptr position;
+
+ name = t->o->nx_module_name.name;
+ asec = t->o->nx_module_name.sec;
+ if (bfd_is_abs_section (asec->output_section))
+ {
+ einfo (_("%P: warning: .nx-module-name section discarded,"
+ " --build-id ignored\n"));
+ return true;
+ }
+ i_shdr = &elf_section_data (asec->output_section)->this_hdr;
+
+ if (i_shdr->contents == NULL)
+ {
+ if (asec->contents == NULL)
+ asec->contents = (unsigned char *) xmalloc (asec->size);
+ contents = asec->contents;
+ }
+ else
+ contents = i_shdr->contents + asec->output_offset;
+
+ size = asec->size;
+ bfd_h_put_32 (abfd, 0, &contents[0]);
+ bfd_h_put_32 (abfd, size - 9, &contents[4]);
+ memcpy (&contents[8], name, size - 9);
+ contents[size - 1] = 0; /* ensure null termination for AMS */
+
+ position = i_shdr->sh_offset + asec->output_offset;
+
+ return (bfd_seek (abfd, position, SEEK_SET) == 0
+ && bfd_write (contents, size, abfd) == size);
+}
+/* Make .nx-module-name section, and set up elf_tdata->nx_module_name. */
+
+static bool
+setup_nx_module_name (bfd *ibfd, bfd *obfd)
+{
+ asection *s;
+ bfd_size_type size;
+ flagword flags;
+
+ if (ldelf_emit_nx_module_name[0] == '\0')
+ {
+ /* Extract the basename of the output bfd and use it as the module name. */
+ char *dot_pos;
+ free ((char *) ldelf_emit_nx_module_name);
+ ldelf_emit_nx_module_name = (char *) lbasename (bfd_get_filename (obfd));
+ ldelf_emit_nx_module_name = xstrdup (ldelf_emit_nx_module_name);
+ dot_pos = strrchr (ldelf_emit_nx_module_name, '.');
+ if (dot_pos != NULL)
+ {
+ /* Remove extension. */
+ *dot_pos = 0;
+ }
+ }
+
+ size = 8 + strlen(ldelf_emit_nx_module_name) + 1; /* extra null terminator for AMS */
+ flags = (SEC_ALLOC | SEC_LOAD | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED | SEC_READONLY | SEC_DATA);
+ s = bfd_make_section_with_flags (ibfd, ".nx-module-name", flags);
+ if (s != NULL && bfd_set_section_alignment (s, 4))
+ {
+ struct elf_obj_tdata *t = elf_tdata (link_info.output_bfd);
+ t->o->nx_module_name.after_write_object_contents = &write_nx_module_name;
+ t->o->nx_module_name.name = ldelf_emit_nx_module_name;
+ t->o->nx_module_name.sec = s;
+ elf_section_type (s) = SHT_PROGBITS;
+ s->size = size;
+ return true;
+ }
+
+ einfo (_("%P: warning: cannot create .nx-module-name section,"
+ " --nx-module-name ignored\n"));
+ return false;
+}
+
+/* This is called before calling plugin 'all symbols read' hook. */
void
ldelf_before_plugin_all_symbols_read (int use_libpath, int native,
int is_linux, int is_freebsd,
@@ -1291,6 +1379,24 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
}
}
+ if (ldelf_emit_nx_module_name != NULL)
+ {
+ /* Find an ELF input. */
+ for (abfd = link_info.input_bfds;
+ abfd != (bfd *) NULL; abfd = abfd->link.next)
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
+ && bfd_count_sections (abfd) != 0
+ && !((lang_input_statement_type *) abfd->usrdata)->flags.just_syms)
+ break;
+
+ /* If there are no ELF input files do not try to create a .nx-module-name section. */
+ if (abfd == NULL || !setup_nx_module_name (abfd, link_info.output_bfd))
+ {
+ free ((char *) ldelf_emit_nx_module_name);
+ ldelf_emit_nx_module_name = NULL;
+ }
+ }
+
get_elf_backend_data (link_info.output_bfd)->setup_object_attributes (&link_info);
get_elf_backend_data (link_info.output_bfd)->setup_gnu_properties (&link_info);
diff --git a/ld/ldelf.h b/ld/ldelf.h
index 2bb2a3fb774..cd4385c056b 100644
--- a/ld/ldelf.h
+++ b/ld/ldelf.h
@@ -20,6 +20,7 @@
extern const char *ldelf_emit_note_gnu_build_id;
extern const char *ldelf_emit_note_fdo_package_metadata;
+extern const char *ldelf_emit_nx_module_name;
extern void ldelf_finish (void);
extern void ldelf_after_parse (void);
diff --git a/ld/ldlex.h b/ld/ldlex.h
index 85e06b6fcc4..27243a47459 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,
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
index dfc6734e027..0b61a0612f6 100644
--- a/opcodes/ppc-opc.c
+++ b/opcodes/ppc-opc.c
@@ -5123,7 +5123,7 @@ const unsigned int num_powerpc_operands = ARRAY_SIZE (powerpc_operands);
#define MFDEC2 (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
| PPC_OPCODE_TITAN)
#define BOOKE PPC_OPCODE_BOOKE
-#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
+#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_EFS
#define PPCE300 PPC_OPCODE_E300
#define PPCSPE PPC_OPCODE_SPE
#define PPCSPE2 PPC_OPCODE_SPE2

View File

@@ -1,380 +0,0 @@
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 087aaa7be37..8ae1a7bbaf4 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1192,7 +1192,14 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
tmake_file="${tmake_file} aarch64/t-aarch64"
case $target in
aarch64-*-elf*)
+ default_use_cxa_atexit=yes
use_gcc_stdint=wrap
+ tm_file="${tm_file} devkitpro.h"
+ tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
+ extra_options="${extra_options} devkitpro.opt"
+ case ${enable_threads} in
+ "" | yes | posix) thread_file='posix' ;;
+ esac
;;
aarch64-*-fuchsia*)
tm_file="${tm_file} fuchsia.h"
diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h
index 15cf1eb0389..aba0e9bbff9 100644
--- a/gcc/config/aarch64/aarch64-elf-raw.h
+++ b/gcc/config/aarch64/aarch64-elf-raw.h
@@ -22,6 +22,7 @@
#ifndef GCC_AARCH64_ELF_RAW_H
#define GCC_AARCH64_ELF_RAW_H
+#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L %(libgloss) --end-group"
#define STARTFILE_SPEC " crti%O%s crtbegin%O%s crt0%O%s"
#define ENDFILE_SPEC \
" crtend%O%s crtn%O%s " \
diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h
index a6ca5cf016b..90470fd6c44 100644
--- a/gcc/config/aarch64/aarch64-opts.h
+++ b/gcc/config/aarch64/aarch64-opts.h
@@ -91,7 +91,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
};
/* SVE vector register sizes. */
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index 6d6b6552a71..1595f0951e5 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -21393,8 +21393,24 @@ aarch64_load_tp (rtx target)
|| !register_operand (target, Pmode))
target = gen_reg_rtx (Pmode);
- /* Can return in any reg. */
- emit_insn (gen_aarch64_load_tp_hard (target));
+ if (TARGET_HARD_TP)
+ {
+ /* Can return in any reg. */
+ emit_insn (gen_aarch64_load_tp_hard (target));
+ }
+ else
+ {
+ /* Always returned in r0. Immediately copy the result into a pseudo,
+ otherwise other uses of r0 (e.g. setting up function arguments) may
+ clobber the value. */
+
+ rtx tmp;
+
+ emit_insn (gen_aarch64_load_tp_soft ());
+
+ tmp = gen_rtx_REG (DImode, R0_REGNUM);
+ emit_move_insn (target, tmp);
+ }
return target;
}
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index e8bd8c73c12..4fc0d8f4ded 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -1436,6 +1436,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 (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 79bbf5fafb3..e648866c39f 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -7710,11 +7710,22 @@
(define_insn "aarch64_load_tp_hard"
[(set (match_operand:DI 0 "register_operand" "=r")
(unspec:DI [(const_int 0)] UNSPEC_TLS))]
- ""
+ "TARGET_HARD_TP"
"* return aarch64_output_load_tp (operands[0]);"
[(set_attr "type" "mrs")]
)
+(define_insn "aarch64_load_tp_soft"
+ [(set (reg:DI 0) (unspec:DI [(const_int 0)] UNSPEC_TLS))
+ (clobber (reg:DI IP0_REGNUM))
+ (clobber (reg:DI IP1_REGNUM))
+ (clobber (reg:DI LR_REGNUM))
+ (clobber (reg:CC CC_REGNUM))]
+ "TARGET_SOFT_TP"
+ "bl\\t__aarch64_read_tp\\t// aarch64_load_tp_soft"
+ [(set_attr "type" "branch")]
+)
+
;; The TLS ABI specifically requires that the compiler does not schedule
;; 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 f32d56d4ffa..7cf8d3ba3d4 100644
--- a/gcc/config/aarch64/aarch64.opt
+++ b/gcc/config/aarch64/aarch64.opt
@@ -137,6 +137,9 @@ Enum(tp_reg) String(tpidr_el3) Value(AARCH64_TPIDR_EL3)
EnumValue
Enum(tp_reg) String(tpidrro_el0) Value(AARCH64_TPIDRRO_EL0)
+EnumValue
+Enum(tp_reg) String(soft) Value(AARCH64_TP_SOFT)
+
mtp=
Target RejectNegative Joined Enum(tp_reg) Var(aarch64_tpidr_reg) Init(AARCH64_TPIDR_EL0) Save
Specify the thread pointer register.
@@ -338,7 +341,7 @@ TargetVariable
long aarch64_stack_protector_guard_offset = 0
moutline-atomics
-Target Var(aarch64_flag_outline_atomics) Init(2) Save
+Target Var(aarch64_flag_outline_atomics) Save
Generate local calls to out-of-line atomic operations.
-param=aarch64-vect-compare-costs=
diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64
index 59571948479..f50c37d8b3c 100644
--- a/gcc/config/aarch64/t-aarch64
+++ b/gcc/config/aarch64/t-aarch64
@@ -198,8 +198,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))))
-MULTILIB_DIRNAMES = $(subst $(comma), ,$(TM_MULTILIB_CONFIG))
+MULTILIB_OPTIONS = mcmodel=large fPIC
+MULTILIB_DIRNAMES = large pic
+MULTILIB_REQUIRED = mcmodel=large fPIC
+MULTILIB_MATCHES = fPIC=fpic fPIC=fpie fPIC=fPIE
insn-conditions.md: s-check-sve-md
s-check-sve-md: $(srcdir)/config/aarch64/check-sve-md.awk \
diff --git a/gcc/config/devkitpro.h b/gcc/config/devkitpro.h
new file mode 100644
index 00000000000..a25459e4352
--- /dev/null
+++ b/gcc/config/devkitpro.h
@@ -0,0 +1,32 @@
+/* Definitions for devkitPro toolchains.
+ Copyright (C) 2016-2018 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() \
+ do { \
+ builtin_define ("__DEVKITA64__"); \
+ builtin_define ("__DEVKITPRO__"); \
+ } while (0)
+
+
diff --git a/gcc/config/devkitpro.opt b/gcc/config/devkitpro.opt
new file mode 100644
index 00000000000..9acbbf9d27c
--- /dev/null
+++ b/gcc/config/devkitpro.opt
@@ -0,0 +1,29 @@
+; Options for devkitPro toolchains.
+
+; Copyright (C) 2011-2018 Free Software Foundation, Inc.
+;
+; This file is part of GCC.
+;
+; GCC is free software; you can redistribute it and/or modify it under
+; the terms of the GNU General Public License as published by the Free
+; Software Foundation; either version 3, or (at your option) any later
+; version.
+;
+; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+; WARRANTY; without even the implied warranty of MERCHANTABILITY or
+; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+; for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with GCC; see the file COPYING3. If not see
+; <http://www.gnu.org/licenses/>.
+
+; See the GCC internals manual (options.texi) for a description of
+; this file's format.
+
+; Please try to keep this file in ASCII collating order.
+
+pthread
+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 4fd87f2c4a1..6af06f7b032 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -888,6 +888,11 @@ proper position among the other output files. */
#endif
#endif
+#ifndef LIBGLOSS_SPEC
+# define LIBGLOSS_SPEC "-lsysbase"
+#endif
+
+
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */
#ifndef STARTFILE_SPEC
#define STARTFILE_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;
+static const char *libgloss_spec = LIBGLOSS_SPEC;
static const char *endfile_spec = ENDFILE_SPEC;
static const char *startfile_spec = STARTFILE_SPEC;
static const char *linker_name_spec = LINKER_NAME;
@@ -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),
+ INIT_STATIC_SPEC ("libgloss", &libgloss_spec),
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 b9767cd1eee..362689c9f0b 100644
--- a/libgcc/crtstuff.c
+++ b/libgcc/crtstuff.c
@@ -326,7 +326,7 @@ register_tm_clones (void)
#ifdef OBJECT_FORMAT_ELF
-#if DEFAULT_USE_CXA_ATEXIT
+#if 1 /* DEFAULT_USE_CXA_ATEXIT */
/* Declare the __dso_handle variable. It should have a unique value
in every shared-object; in a main program its value is zero. The
object should in any case be protected. This means the instance
diff --git a/libgcc/gthr.h b/libgcc/gthr.h
index 557417997f4..1269ece007f 100644
--- a/libgcc/gthr.h
+++ b/libgcc/gthr.h
@@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* The pe-coff weak support isn't fully compatible to ELF's weak.
For static libraries it might would work, but as we need to deal
with shared versions too, we disable it for mingw-targets. */
-#ifdef __MINGW32__
+#if defined(__MINGW32__) || defined(__DEVKITA64__)
#undef GTHREAD_USE_WEAK
#define GTHREAD_USE_WEAK 0
#endif
diff --git a/libsanitizer/sanitizer_common/sanitizer_platform.h b/libsanitizer/sanitizer_common/sanitizer_platform.h
index 57966403c92..c624f31b5d6 100644
--- a/libsanitizer/sanitizer_common/sanitizer_platform.h
+++ b/libsanitizer/sanitizer_common/sanitizer_platform.h
@@ -12,11 +12,13 @@
#ifndef SANITIZER_PLATFORM_H
#define SANITIZER_PLATFORM_H
+#if 0
#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && \
!defined(__APPLE__) && !defined(_WIN32) && !defined(__Fuchsia__) && \
!(defined(__sun__) && defined(__svr4__))
# error "This operating system is not supported"
#endif
+#endif
// Get __GLIBC__ on a glibc platform. Exclude Android: features.h includes C
// function declarations into a .S file which doesn't compile.
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index 537774c2668..76da4f35b96 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -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' \
+ -e 's/_GLIBCXX___DEVKITA64_GLIBCXX___/__DEVKITA64__/g' \
-e 's,^#include "\(.*\)",#include <bits/\1>,g' \
< $< > $@
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 7b96b2207f8..817de242772 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -1910,6 +1910,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' \
+ -e 's/_GLIBCXX___DEVKITA64_GLIBCXX___/__DEVKITA64__/g' \
-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

@@ -245,7 +245,7 @@ index 1939d55b9fd..62d425cb596 100644
option nofp remove ALL_FP option nofp remove ALL_FP
diff --git a/gcc/config/arm/devkitarm.h b/gcc/config/arm/devkitarm.h diff --git a/gcc/config/arm/devkitarm.h b/gcc/config/arm/devkitarm.h
new file mode 100644 new file mode 100644
index 00000000000..4d6c16a3db4 index 00000000000..7f408d6d81d
--- /dev/null --- /dev/null
+++ b/gcc/config/arm/devkitarm.h +++ b/gcc/config/arm/devkitarm.h
@@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
@@ -278,7 +278,7 @@ index 00000000000..4d6c16a3db4
+ do { \ + do { \
+ builtin_define ("__DEVKITPRO__"); \ + builtin_define ("__DEVKITPRO__"); \
+ builtin_define ("__DEVKITARM__"); \ + builtin_define ("__DEVKITARM__"); \
+ TARGET_BPABI_CPP_BUILTINS(); + TARGET_BPABI_CPP_BUILTINS(); \
+ } while (0) + } while (0)
+ +
+ +

View File

@@ -1,8 +1,8 @@
diff --git a/gcc/config.gcc b/gcc/config.gcc diff --git a/gcc/config.gcc b/gcc/config.gcc
index 087aaa7be37..1230fd4b519 100644 index 8fe99616f82..51edd190338 100644
--- a/gcc/config.gcc --- a/gcc/config.gcc
+++ b/gcc/config.gcc +++ b/gcc/config.gcc
@@ -526,7 +526,7 @@ powerpc*-*-*) @@ -546,7 +546,7 @@ powerpc*-*-*)
extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o" extra_objs="rs6000-string.o rs6000-p8swap.o rs6000-logue.o"
extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o" extra_objs="${extra_objs} rs6000-call.o rs6000-pcrel-opt.o"
extra_objs="${extra_objs} rs6000-builtins.o rs6000-builtin.o" extra_objs="${extra_objs} rs6000-builtins.o rs6000-builtin.o"
@@ -11,7 +11,7 @@ index 087aaa7be37..1230fd4b519 100644
extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h" extra_headers="${extra_headers} bmi2intrin.h bmiintrin.h"
extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h" extra_headers="${extra_headers} xmmintrin.h mm_malloc.h emmintrin.h"
extra_headers="${extra_headers} mmintrin.h x86intrin.h" extra_headers="${extra_headers} mmintrin.h x86intrin.h"
@@ -1192,7 +1192,14 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*) @@ -1242,7 +1242,14 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
tmake_file="${tmake_file} aarch64/t-aarch64" tmake_file="${tmake_file} aarch64/t-aarch64"
case $target in case $target in
aarch64-*-elf*) aarch64-*-elf*)
@@ -26,7 +26,7 @@ index 087aaa7be37..1230fd4b519 100644
;; ;;
aarch64-*-fuchsia*) aarch64-*-fuchsia*)
tm_file="${tm_file} fuchsia.h" tm_file="${tm_file} fuchsia.h"
@@ -1508,6 +1515,11 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*) @@ -1561,6 +1568,11 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
tm_file="$tm_file newlib-stdint.h" tm_file="$tm_file newlib-stdint.h"
tmake_file="${tmake_file} arm/t-bpabi" tmake_file="${tmake_file} arm/t-bpabi"
use_gcc_stdint=wrap use_gcc_stdint=wrap
@@ -38,10 +38,10 @@ index 087aaa7be37..1230fd4b519 100644
;; ;;
arm*-*-fuchsia*) arm*-*-fuchsia*)
tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h" tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
@@ -3051,9 +3063,12 @@ powerpc-*-eabialtivec*) @@ -3121,9 +3133,12 @@ powerpc-*-eabialtivec*)
;; ;;
powerpc-*-eabi*) powerpc-*-eabi*)
tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h" tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
- extra_options="${extra_options} rs6000/sysv4.opt" - extra_options="${extra_options} rs6000/sysv4.opt"
+ extra_options="${extra_options} rs6000/sysv4.opt devkitpro.opt" + extra_options="${extra_options} rs6000/sysv4.opt devkitpro.opt"
tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm" tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
@@ -53,7 +53,7 @@ index 087aaa7be37..1230fd4b519 100644
powerpc-*-rtems*) powerpc-*-rtems*)
tm_file="rs6000/biarch64.h ${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/rtems.h rtems.h" tm_file="rs6000/biarch64.h ${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/rtems.h rtems.h"
diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h
index 15cf1eb0389..aba0e9bbff9 100644 index d808225799b..a32e17a739f 100644
--- a/gcc/config/aarch64/aarch64-elf-raw.h --- a/gcc/config/aarch64/aarch64-elf-raw.h
+++ b/gcc/config/aarch64/aarch64-elf-raw.h +++ b/gcc/config/aarch64/aarch64-elf-raw.h
@@ -22,6 +22,7 @@ @@ -22,6 +22,7 @@
@@ -65,7 +65,7 @@ index 15cf1eb0389..aba0e9bbff9 100644
#define ENDFILE_SPEC \ #define ENDFILE_SPEC \
" crtend%O%s crtn%O%s " \ " crtend%O%s crtn%O%s " \
diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h
index a6ca5cf016b..90470fd6c44 100644 index 45527809549..9b2c8891999 100644
--- a/gcc/config/aarch64/aarch64-opts.h --- a/gcc/config/aarch64/aarch64-opts.h
+++ b/gcc/config/aarch64/aarch64-opts.h +++ b/gcc/config/aarch64/aarch64-opts.h
@@ -91,7 +91,8 @@ enum aarch64_tp_reg { @@ -91,7 +91,8 @@ enum aarch64_tp_reg {
@@ -79,10 +79,10 @@ index a6ca5cf016b..90470fd6c44 100644
/* SVE vector register sizes. */ /* SVE vector register sizes. */
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index 6d6b6552a71..1595f0951e5 100644 index 62194b96450..e72f56e28fd 100644
--- a/gcc/config/aarch64/aarch64.cc --- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc
@@ -21393,8 +21393,24 @@ aarch64_load_tp (rtx target) @@ -22348,8 +22348,24 @@ aarch64_load_tp (rtx target)
|| !register_operand (target, Pmode)) || !register_operand (target, Pmode))
target = gen_reg_rtx (Pmode); target = gen_reg_rtx (Pmode);
@@ -110,10 +110,10 @@ index 6d6b6552a71..1595f0951e5 100644
} }
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index e8bd8c73c12..4fc0d8f4ded 100644 index d61705d78f6..dbc9da36922 100644
--- a/gcc/config/aarch64/aarch64.h --- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h
@@ -1436,6 +1436,10 @@ typedef struct @@ -1498,6 +1498,10 @@ typedef struct
/* Check TLS Descriptors mechanism is selected. */ /* Check TLS Descriptors mechanism is selected. */
#define TARGET_TLS_DESC (aarch64_tls_dialect == TLS_DESCRIPTORS) #define TARGET_TLS_DESC (aarch64_tls_dialect == TLS_DESCRIPTORS)
@@ -125,10 +125,10 @@ index e8bd8c73c12..4fc0d8f4ded 100644
/* When using the tiny addressing model conditional and unconditional branches /* When using the tiny addressing model conditional and unconditional branches
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 79bbf5fafb3..e648866c39f 100644 index 0ef01e889a6..a06f3dc1ee1 100644
--- a/gcc/config/aarch64/aarch64.md --- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md +++ b/gcc/config/aarch64/aarch64.md
@@ -7710,11 +7710,22 @@ @@ -7995,11 +7995,22 @@
(define_insn "aarch64_load_tp_hard" (define_insn "aarch64_load_tp_hard"
[(set (match_operand:DI 0 "register_operand" "=r") [(set (match_operand:DI 0 "register_operand" "=r")
(unspec:DI [(const_int 0)] UNSPEC_TLS))] (unspec:DI [(const_int 0)] UNSPEC_TLS))]
@@ -153,10 +153,10 @@ index 79bbf5fafb3..e648866c39f 100644
;; instructions in the TLS stubs, in order to enable linker relaxation. ;; instructions in the TLS stubs, in order to enable linker relaxation.
;; Therefore we treat the stubs as an atomic sequence. ;; Therefore we treat the stubs as an atomic sequence.
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
index f32d56d4ffa..7cf8d3ba3d4 100644 index 64004f21332..2e17633d04c 100644
--- a/gcc/config/aarch64/aarch64.opt --- a/gcc/config/aarch64/aarch64.opt
+++ b/gcc/config/aarch64/aarch64.opt +++ b/gcc/config/aarch64/aarch64.opt
@@ -137,6 +137,9 @@ Enum(tp_reg) String(tpidr_el3) Value(AARCH64_TPIDR_EL3) @@ -147,6 +147,9 @@ Enum(tp_reg) String(tpidr_el3) Value(AARCH64_TPIDR_EL3)
EnumValue EnumValue
Enum(tp_reg) String(tpidrro_el0) Value(AARCH64_TPIDRRO_EL0) Enum(tp_reg) String(tpidrro_el0) Value(AARCH64_TPIDRRO_EL0)
@@ -166,7 +166,7 @@ index f32d56d4ffa..7cf8d3ba3d4 100644
mtp= mtp=
Target RejectNegative Joined Enum(tp_reg) Var(aarch64_tpidr_reg) Init(AARCH64_TPIDR_EL0) Save Target RejectNegative Joined Enum(tp_reg) Var(aarch64_tpidr_reg) Init(AARCH64_TPIDR_EL0) Save
Specify the thread pointer register. Specify the thread pointer register.
@@ -338,7 +341,7 @@ TargetVariable @@ -367,7 +370,7 @@ TargetVariable
long aarch64_stack_protector_guard_offset = 0 long aarch64_stack_protector_guard_offset = 0
moutline-atomics moutline-atomics
@@ -214,12 +214,12 @@ index 00000000000..5c0b53b9810
+ +
+ +
diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64 diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64
index 59571948479..f50c37d8b3c 100644 index ed622058f82..ab937f15c5a 100644
--- a/gcc/config/aarch64/t-aarch64 --- a/gcc/config/aarch64/t-aarch64
+++ b/gcc/config/aarch64/t-aarch64 +++ b/gcc/config/aarch64/t-aarch64
@@ -198,8 +198,10 @@ aarch64-ldp-fusion.o: $(srcdir)/config/aarch64/aarch64-ldp-fusion.cc \ @@ -244,8 +244,10 @@ aarch64-narrow-gp-writes.o: $(srcdir)/config/aarch64/aarch64-narrow-gp-writes.cc
$(srcdir)/config/aarch64/aarch64-ldp-fusion.cc $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(srcdir)/config/aarch64/aarch64-narrow-gp-writes.cc
comma=, comma=,
-MULTILIB_OPTIONS = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst $(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG)))) -MULTILIB_OPTIONS = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst $(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG))))
-MULTILIB_DIRNAMES = $(subst $(comma), ,$(TM_MULTILIB_CONFIG)) -MULTILIB_DIRNAMES = $(subst $(comma), ,$(TM_MULTILIB_CONFIG))
@@ -231,10 +231,10 @@ index 59571948479..f50c37d8b3c 100644
insn-conditions.md: s-check-sve-md insn-conditions.md: s-check-sve-md
s-check-sve-md: $(srcdir)/config/aarch64/check-sve-md.awk \ s-check-sve-md: $(srcdir)/config/aarch64/check-sve-md.awk \
diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
index 1939d55b9fd..62d425cb596 100644 index db674b85af1..587fc96b77c 100644
--- a/gcc/config/arm/arm-cpus.in --- a/gcc/config/arm/arm-cpus.in
+++ b/gcc/config/arm/arm-cpus.in +++ b/gcc/config/arm/arm-cpus.in
@@ -416,7 +416,7 @@ begin arch armv6k @@ -410,7 +410,7 @@ begin arch armv6k
tune for mpcore tune for mpcore
tune flags CO_PROC tune flags CO_PROC
base 6K base 6K
@@ -245,7 +245,7 @@ index 1939d55b9fd..62d425cb596 100644
option nofp remove ALL_FP option nofp remove ALL_FP
diff --git a/gcc/config/arm/devkitarm.h b/gcc/config/arm/devkitarm.h diff --git a/gcc/config/arm/devkitarm.h b/gcc/config/arm/devkitarm.h
new file mode 100644 new file mode 100644
index 00000000000..4d6c16a3db4 index 00000000000..7f408d6d81d
--- /dev/null --- /dev/null
+++ b/gcc/config/arm/devkitarm.h +++ b/gcc/config/arm/devkitarm.h
@@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
@@ -278,12 +278,12 @@ index 00000000000..4d6c16a3db4
+ do { \ + do { \
+ builtin_define ("__DEVKITPRO__"); \ + builtin_define ("__DEVKITPRO__"); \
+ builtin_define ("__DEVKITARM__"); \ + builtin_define ("__DEVKITARM__"); \
+ TARGET_BPABI_CPP_BUILTINS(); + TARGET_BPABI_CPP_BUILTINS(); \
+ } while (0) + } while (0)
+ +
+ +
diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf
index fdfdf9c580b..add129f0a62 100644 index 2aba20d8152..2f70e1d6523 100644
--- a/gcc/config/arm/t-arm-elf --- a/gcc/config/arm/t-arm-elf
+++ b/gcc/config/arm/t-arm-elf +++ b/gcc/config/arm/t-arm-elf
@@ -16,120 +16,22 @@ @@ -16,120 +16,22 @@
@@ -420,7 +420,7 @@ index fdfdf9c580b..add129f0a62 100644
-MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=march.armv7+fp/mfloat-abi.hard -MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=march.armv7+fp/mfloat-abi.hard
+MULTILIB_REUSE = mthumb/march.armv6s-m/mfloat-abi.soft=mthumb/march.armv6s-m +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 diff --git a/gcc/config/arm/unknown-elf.h b/gcc/config/arm/unknown-elf.h
index ab3918283d8..c14a1955cad 100644 index 959b6c3e6e3..a894510eff5 100644
--- a/gcc/config/arm/unknown-elf.h --- a/gcc/config/arm/unknown-elf.h
+++ b/gcc/config/arm/unknown-elf.h +++ b/gcc/config/arm/unknown-elf.h
@@ -29,7 +29,7 @@ @@ -29,7 +29,7 @@
@@ -432,13 +432,12 @@ index ab3918283d8..c14a1955cad 100644
#undef STARTFILE_SPEC #undef STARTFILE_SPEC
#define STARTFILE_SPEC \ #define STARTFILE_SPEC \
@@ -93,4 +93,5 @@ @@ -93,4 +93,4 @@
udivmoddi4, which will depend on the exception unwind routines, udivmoddi4, which will depend on the exception unwind routines,
which will depend on abort, which is defined in libc. */ which will depend on abort, which is defined in libc. */
#undef LINK_GCC_C_SEQUENCE_SPEC #undef LINK_GCC_C_SEQUENCE_SPEC
-#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %{!nolibc:%L} --end-group" -#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %{!nolibc:" LINK_LIBATOMIC_SPEC "%L} --end-group"
+#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L %(libgloss) --end-group" +#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %{!nolibc:" LINK_LIBATOMIC_SPEC "%L} %(libgloss) --end-group"
+
diff --git a/gcc/config/devkitpro.opt b/gcc/config/devkitpro.opt diff --git a/gcc/config/devkitpro.opt b/gcc/config/devkitpro.opt
new file mode 100644 new file mode 100644
index 00000000000..9acbbf9d27c index 00000000000..9acbbf9d27c
@@ -482,7 +481,7 @@ index 00000000000..ab7b466aa71
@@ -0,0 +1 @@ @@ -0,0 +1 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/devkitpro.opt and generated HTML +; 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 diff --git a/gcc/config/i386/host-mingw32.cc b/gcc/config/i386/host-mingw32.cc
index e083f49f3da..1b81e7e88ce 100644 index d284e42c9ab..ab3f683e29b 100644
--- a/gcc/config/i386/host-mingw32.cc --- a/gcc/config/i386/host-mingw32.cc
+++ b/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) @@ -94,6 +94,10 @@ mingw32_gt_pch_get_address (size_t size, int)
@@ -497,7 +496,7 @@ index e083f49f3da..1b81e7e88ce 100644
MEM_RESERVE | MEM_TOP_DOWN, MEM_RESERVE | MEM_TOP_DOWN,
PAGE_NOACCESS); PAGE_NOACCESS);
diff --git a/gcc/config/rs6000/eabi.h b/gcc/config/rs6000/eabi.h diff --git a/gcc/config/rs6000/eabi.h b/gcc/config/rs6000/eabi.h
index 3cbee36cd20..e0ffda81164 100644 index cde3333d0b7..56df3588f63 100644
--- a/gcc/config/rs6000/eabi.h --- a/gcc/config/rs6000/eabi.h
+++ b/gcc/config/rs6000/eabi.h +++ b/gcc/config/rs6000/eabi.h
@@ -36,6 +36,8 @@ @@ -36,6 +36,8 @@
@@ -510,7 +509,7 @@ index 3cbee36cd20..e0ffda81164 100644
} \ } \
while (0) while (0)
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index db6112a09e1..71cd6664a3e 100644 index 2b90694cef1..278f2cf1420 100644
--- a/gcc/config/rs6000/rs6000.h --- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h
@@ -193,6 +193,7 @@ ASM_OPT_ANY @@ -193,6 +193,7 @@ ASM_OPT_ANY
@@ -531,7 +530,7 @@ index db6112a09e1..71cd6664a3e 100644
#ifndef CC1_CPU_SPEC #ifndef CC1_CPU_SPEC
#ifdef HAVE_LOCAL_CPU_DETECT #ifdef HAVE_LOCAL_CPU_DETECT
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h
index afb5c6ad867..30d30d530e8 100644 index 2187fe366b7..7b1d1a08cff 100644
--- a/gcc/config/rs6000/sysv4.h --- a/gcc/config/rs6000/sysv4.h
+++ b/gcc/config/rs6000/sysv4.h +++ b/gcc/config/rs6000/sysv4.h
@@ -581,7 +581,11 @@ GNU_USER_TARGET_CC1_SPEC @@ -581,7 +581,11 @@ GNU_USER_TARGET_CC1_SPEC
@@ -689,7 +688,7 @@ index afb5c6ad867..30d30d530e8 100644
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \ { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
diff --git a/gcc/config/rs6000/sysv4.opt b/gcc/config/rs6000/sysv4.opt diff --git a/gcc/config/rs6000/sysv4.opt b/gcc/config/rs6000/sysv4.opt
index dc0b0e82d9e..20300b60da8 100644 index 66b0de0ae43..85152e122da 100644
--- a/gcc/config/rs6000/sysv4.opt --- a/gcc/config/rs6000/sysv4.opt
+++ b/gcc/config/rs6000/sysv4.opt +++ b/gcc/config/rs6000/sysv4.opt
@@ -124,6 +124,26 @@ mads @@ -124,6 +124,26 @@ mads
@@ -756,10 +755,10 @@ index 00000000000..92731fee3ba
+; This comment is to ensure we retain the blank line above. +; This comment is to ensure we retain the blank line above.
+ +
diff --git a/gcc/gcc.cc b/gcc/gcc.cc diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index 4fd87f2c4a1..6af06f7b032 100644 index 43b0158ee02..2103719ae82 100644
--- a/gcc/gcc.cc --- a/gcc/gcc.cc
+++ b/gcc/gcc.cc +++ b/gcc/gcc.cc
@@ -888,6 +888,11 @@ proper position among the other output files. */ @@ -903,6 +903,11 @@ proper position among the other output files. */
#endif #endif
#endif #endif
@@ -771,7 +770,7 @@ index 4fd87f2c4a1..6af06f7b032 100644
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */ /* config.h can define STARTFILE_SPEC to override the default crt0 files. */
#ifndef STARTFILE_SPEC #ifndef STARTFILE_SPEC
#define STARTFILE_SPEC \ #define STARTFILE_SPEC \
@@ -1215,6 +1220,7 @@ static const char *link_spec = LINK_SPEC; @@ -1241,6 +1246,7 @@ static const char *link_spec = LINK_SPEC LIBC_LINK_SPEC;
static const char *lib_spec = LIB_SPEC; static const char *lib_spec = LIB_SPEC;
static const char *link_gomp_spec = ""; static const char *link_gomp_spec = "";
static const char *libgcc_spec = LIBGCC_SPEC; static const char *libgcc_spec = LIBGCC_SPEC;
@@ -779,7 +778,7 @@ index 4fd87f2c4a1..6af06f7b032 100644
static const char *endfile_spec = ENDFILE_SPEC; static const char *endfile_spec = ENDFILE_SPEC;
static const char *startfile_spec = STARTFILE_SPEC; static const char *startfile_spec = STARTFILE_SPEC;
static const char *linker_name_spec = LINKER_NAME; static const char *linker_name_spec = LINKER_NAME;
@@ -1727,6 +1733,7 @@ static struct spec_list static_specs[] = @@ -1758,6 +1764,7 @@ static struct spec_list static_specs[] =
INIT_STATIC_SPEC ("lib", &lib_spec), INIT_STATIC_SPEC ("lib", &lib_spec),
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec), INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
INIT_STATIC_SPEC ("libgcc", &libgcc_spec), INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
@@ -788,10 +787,10 @@ index 4fd87f2c4a1..6af06f7b032 100644
INIT_STATIC_SPEC ("cross_compile", &cross_compile), INIT_STATIC_SPEC ("cross_compile", &cross_compile),
INIT_STATIC_SPEC ("version", &compiler_version), INIT_STATIC_SPEC ("version", &compiler_version),
diff --git a/libcc1/configure b/libcc1/configure diff --git a/libcc1/configure b/libcc1/configure
index ea689a353c8..98f9d9b21b7 100755 index e010d1b67e5..420b41b5a3b 100755
--- a/libcc1/configure --- a/libcc1/configure
+++ b/libcc1/configure +++ b/libcc1/configure
@@ -5119,7 +5119,7 @@ else @@ -5120,7 +5120,7 @@ else
# Adding the `sed 1q' prevents false positives on HP-UX, which says: # Adding the `sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored # nm: unknown option "B" ignored
case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
@@ -811,7 +810,7 @@ index dddddc7c444..c2502597953 100644
-LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions -LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
+LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions +LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions
diff --git a/libgcc/config/rs6000/crtrestvr.S b/libgcc/config/rs6000/crtrestvr.S diff --git a/libgcc/config/rs6000/crtrestvr.S b/libgcc/config/rs6000/crtrestvr.S
index 8761f612004..95cc245813b 100644 index e7b03f8a08b..c57bd054ff2 100644
--- a/libgcc/config/rs6000/crtrestvr.S --- a/libgcc/config/rs6000/crtrestvr.S
+++ b/libgcc/config/rs6000/crtrestvr.S +++ b/libgcc/config/rs6000/crtrestvr.S
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
@@ -829,7 +828,7 @@ index 8761f612004..95cc245813b 100644
#endif #endif
+#endif +#endif
diff --git a/libgcc/config/rs6000/crtsavevr.S b/libgcc/config/rs6000/crtsavevr.S diff --git a/libgcc/config/rs6000/crtsavevr.S b/libgcc/config/rs6000/crtsavevr.S
index 9d05c98c32d..1b7e1ca68b9 100644 index a8db1d1ee8e..7e2257f1ef2 100644
--- a/libgcc/config/rs6000/crtsavevr.S --- a/libgcc/config/rs6000/crtsavevr.S
+++ b/libgcc/config/rs6000/crtsavevr.S +++ b/libgcc/config/rs6000/crtsavevr.S
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
@@ -847,7 +846,7 @@ index 9d05c98c32d..1b7e1ca68b9 100644
#endif #endif
+#endif +#endif
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
index b9767cd1eee..362689c9f0b 100644 index 44820cb27c1..a8689e388f8 100644
--- a/libgcc/crtstuff.c --- a/libgcc/crtstuff.c
+++ b/libgcc/crtstuff.c +++ b/libgcc/crtstuff.c
@@ -326,7 +326,7 @@ register_tm_clones (void) @@ -326,7 +326,7 @@ register_tm_clones (void)
@@ -860,7 +859,7 @@ index b9767cd1eee..362689c9f0b 100644
in every shared-object; in a main program its value is zero. The in every shared-object; in a main program its value is zero. The
object should in any case be protected. This means the instance object should in any case be protected. This means the instance
diff --git a/libgcc/gthr.h b/libgcc/gthr.h diff --git a/libgcc/gthr.h b/libgcc/gthr.h
index 557417997f4..7c1c7c40ab9 100644 index 8cd29834228..473ea9b64a7 100644
--- a/libgcc/gthr.h --- a/libgcc/gthr.h
+++ b/libgcc/gthr.h +++ b/libgcc/gthr.h
@@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see @@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
@@ -873,59 +872,10 @@ index 557417997f4..7c1c7c40ab9 100644
#define GTHREAD_USE_WEAK 0 #define GTHREAD_USE_WEAK 0
#endif #endif
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 819a1d82876..e51ff5ec6ee 100755 index 6713e4504b1..e01cd713aac 100755
--- a/libstdc++-v3/configure --- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure +++ b/libstdc++-v3/configure
@@ -893,6 +893,7 @@ infodir @@ -5083,7 +5083,7 @@ else
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, We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */ incorrectly reject 9223372036854775807. */
@@ -934,7 +884,7 @@ index 819a1d82876..e51ff5ec6ee 100755
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1) && LARGE_OFF_T % 2147483647 == 1)
? 1 : -1]; ? 1 : -1];
@@ -5126,7 +5138,7 @@ else @@ -5129,7 +5129,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807, We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */ incorrectly reject 9223372036854775807. */
@@ -943,7 +893,7 @@ index 819a1d82876..e51ff5ec6ee 100755
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1) && LARGE_OFF_T % 2147483647 == 1)
? 1 : -1]; ? 1 : -1];
@@ -5150,7 +5162,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -5153,7 +5153,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807, We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */ incorrectly reject 9223372036854775807. */
@@ -952,7 +902,7 @@ index 819a1d82876..e51ff5ec6ee 100755
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1) && LARGE_OFF_T % 2147483647 == 1)
? 1 : -1]; ? 1 : -1];
@@ -5195,7 +5207,7 @@ else @@ -5198,7 +5198,7 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807, We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */ incorrectly reject 9223372036854775807. */
@@ -961,7 +911,7 @@ index 819a1d82876..e51ff5ec6ee 100755
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1) && LARGE_OFF_T % 2147483647 == 1)
? 1 : -1]; ? 1 : -1];
@@ -5219,7 +5231,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -5222,7 +5222,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807, We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */ incorrectly reject 9223372036854775807. */
@@ -970,79 +920,7 @@ index 819a1d82876..e51ff5ec6ee 100755
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1) && LARGE_OFF_T % 2147483647 == 1)
? 1 : -1]; ? 1 : -1];
@@ -12280,7 +12292,7 @@ else @@ -28775,6 +28775,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
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 16198 "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 16233 "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 16268 "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 16304 "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 16461 "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 16503 "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_MEMALIGN 1" >>confdefs.h
@@ -1051,11 +929,20 @@ index 819a1d82876..e51ff5ec6ee 100755
case "${target}" in case "${target}" in
*-rtems*) *-rtems*)
@@ -54145,7 +54147,7 @@ $as_echo "$glibcxx_cv_libbacktrace_atomics" >&6; }
CXXFLAGS='-O0 -S'
cat > conftest.$ac_ext << EOF
-#line 54148 "configure"
+#line 54150 "configure"
#include <stddef.h>
int main()
{
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index a6c01b29e94..a8fb1200c8b 100644 index f81dccdeef7..4f4b7b5f475 100644
--- a/libstdc++-v3/configure.ac --- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac
@@ -386,6 +386,7 @@ dnl # rather than hardcoding that information. @@ -387,6 +387,7 @@ dnl # rather than hardcoding that information.
fi fi
AC_DEFINE(HAVE_MEMALIGN) AC_DEFINE(HAVE_MEMALIGN)
@@ -1064,10 +951,10 @@ index a6c01b29e94..a8fb1200c8b 100644
case "${target}" in case "${target}" in
*-rtems*) *-rtems*)
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index 537774c2668..bdd357ff60d 100644 index e9e46139da2..8cc48b55c6b 100644
--- a/libstdc++-v3/include/Makefile.am --- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am +++ b/libstdc++-v3/include/Makefile.am
@@ -1436,6 +1436,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias} @@ -1466,6 +1466,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \ -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \ -e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \ -e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
@@ -1076,10 +963,10 @@ index 537774c2668..bdd357ff60d 100644
< $< > $@ < $< > $@
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 7b96b2207f8..61eb866ebe8 100644 index f3d2f58dbe4..64a4fecfb87 100644
--- a/libstdc++-v3/include/Makefile.in --- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in +++ b/libstdc++-v3/include/Makefile.in
@@ -1910,6 +1910,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias} @@ -1943,6 +1943,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \ -e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \ -e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \ -e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
@@ -1088,7 +975,7 @@ index 7b96b2207f8..61eb866ebe8 100644
< $< > $@ < $< > $@
diff --git a/libstdc++-v3/include/std/fstream b/libstdc++-v3/include/std/fstream diff --git a/libstdc++-v3/include/std/fstream b/libstdc++-v3/include/std/fstream
index 53e794162eb..08602c21949 100644 index c4e222b8fef..9d6b3ff1373 100644
--- a/libstdc++-v3/include/std/fstream --- a/libstdc++-v3/include/std/fstream
+++ b/libstdc++-v3/include/std/fstream +++ b/libstdc++-v3/include/std/fstream
@@ -53,7 +53,7 @@ @@ -53,7 +53,7 @@
@@ -1101,7 +988,7 @@ index 53e794162eb..08602c21949 100644
namespace std _GLIBCXX_VISIBILITY(default) namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/libsupc++/eh_alloc.cc b/libstdc++-v3/libsupc++/eh_alloc.cc diff --git a/libstdc++-v3/libsupc++/eh_alloc.cc b/libstdc++-v3/libsupc++/eh_alloc.cc
index 42ca2ea5116..04f75c43cf5 100644 index aab2aec7f66..374acbd121b 100644
--- a/libstdc++-v3/libsupc++/eh_alloc.cc --- a/libstdc++-v3/libsupc++/eh_alloc.cc
+++ b/libstdc++-v3/libsupc++/eh_alloc.cc +++ b/libstdc++-v3/libsupc++/eh_alloc.cc
@@ -143,6 +143,7 @@ namespace @@ -143,6 +143,7 @@ namespace
@@ -1129,7 +1016,7 @@ index 42ca2ea5116..04f75c43cf5 100644
{ {
__scoped_lock sentry(emergency_mutex); __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 diff --git a/libstdc++-v3/src/c++17/fs_ops.cc b/libstdc++-v3/src/c++17/fs_ops.cc
index 4f188153ae3..ea9d379e33a 100644 index 454962c7521..579e19f7d02 100644
--- a/libstdc++-v3/src/c++17/fs_ops.cc --- a/libstdc++-v3/src/c++17/fs_ops.cc
+++ b/libstdc++-v3/src/c++17/fs_ops.cc +++ b/libstdc++-v3/src/c++17/fs_ops.cc
@@ -1153,6 +1153,7 @@ fs::permissions(const path& p, perms prms, perm_options opts, @@ -1153,6 +1153,7 @@ fs::permissions(const path& p, perms prms, perm_options opts,
@@ -1149,10 +1036,10 @@ index 4f188153ae3..ea9d379e33a 100644
if (err) if (err)
diff --git a/libstdc++-v3/src/filesystem/ops-common.h b/libstdc++-v3/src/filesystem/ops-common.h diff --git a/libstdc++-v3/src/filesystem/ops-common.h b/libstdc++-v3/src/filesystem/ops-common.h
index 4feacfdb932..b8c49f49381 100644 index 304d5896d02..0ab7bd3b26c 100644
--- a/libstdc++-v3/src/filesystem/ops-common.h --- a/libstdc++-v3/src/filesystem/ops-common.h
+++ b/libstdc++-v3/src/filesystem/ops-common.h +++ b/libstdc++-v3/src/filesystem/ops-common.h
@@ -563,6 +563,7 @@ _GLIBCXX_BEGIN_NAMESPACE_FILESYSTEM @@ -560,6 +560,7 @@ _GLIBCXX_BEGIN_NAMESPACE_FILESYSTEM
return false; return false;
} }
@@ -1160,7 +1047,7 @@ index 4feacfdb932..b8c49f49381 100644
#if defined _GLIBCXX_USE_FCHMOD && ! defined _GLIBCXX_FILESYSTEM_IS_WINDOWS #if defined _GLIBCXX_USE_FCHMOD && ! defined _GLIBCXX_FILESYSTEM_IS_WINDOWS
if (::fchmod(out.fd, from_st->st_mode)) if (::fchmod(out.fd, from_st->st_mode))
#elif defined _GLIBCXX_USE_FCHMODAT && ! defined _GLIBCXX_FILESYSTEM_IS_WINDOWS #elif defined _GLIBCXX_USE_FCHMODAT && ! defined _GLIBCXX_FILESYSTEM_IS_WINDOWS
@@ -576,6 +577,7 @@ _GLIBCXX_BEGIN_NAMESPACE_FILESYSTEM @@ -573,6 +574,7 @@ _GLIBCXX_BEGIN_NAMESPACE_FILESYSTEM
ec.assign(errno, std::generic_category()); ec.assign(errno, std::generic_category());
return false; return false;
} }
@@ -1169,7 +1056,7 @@ index 4feacfdb932..b8c49f49381 100644
bool has_copied = false; bool has_copied = false;
diff --git a/libstdc++-v3/src/filesystem/ops.cc b/libstdc++-v3/src/filesystem/ops.cc diff --git a/libstdc++-v3/src/filesystem/ops.cc b/libstdc++-v3/src/filesystem/ops.cc
index 4e21e43b97a..d93c8985224 100644 index 80f83c049c7..5699c75e655 100644
--- a/libstdc++-v3/src/filesystem/ops.cc --- a/libstdc++-v3/src/filesystem/ops.cc
+++ b/libstdc++-v3/src/filesystem/ops.cc +++ b/libstdc++-v3/src/filesystem/ops.cc
@@ -987,6 +987,7 @@ fs::permissions(const path& p, perms prms, error_code& ec) noexcept @@ -987,6 +987,7 @@ fs::permissions(const path& p, perms prms, error_code& ec) noexcept
@@ -1189,10 +1076,10 @@ index 4e21e43b97a..d93c8985224 100644
if (err) if (err)
diff --git a/lto-plugin/configure b/lto-plugin/configure diff --git a/lto-plugin/configure b/lto-plugin/configure
index 28f5dd79cd7..a79f318a4d6 100755 index 2e37612e60b..e4fc628143f 100755
--- a/lto-plugin/configure --- a/lto-plugin/configure
+++ b/lto-plugin/configure +++ b/lto-plugin/configure
@@ -6469,7 +6469,7 @@ else @@ -6470,7 +6470,7 @@ else
# Adding the `sed 1q' prevents false positives on HP-UX, which says: # Adding the `sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored # nm: unknown option "B" ignored
case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in

File diff suppressed because one or more lines are too long

View File

@@ -7241,10 +7241,10 @@ index 000000000..5c5831cdf
+} +}
diff --git a/libgloss/libsysbase/flock.c b/libgloss/libsysbase/flock.c diff --git a/libgloss/libsysbase/flock.c b/libgloss/libsysbase/flock.c
new file mode 100644 new file mode 100644
index 000000000..8a66cd19f index 000000000..e9d2200d4
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/flock.c +++ b/libgloss/libsysbase/flock.c
@@ -0,0 +1,22 @@ @@ -0,0 +1,43 @@
+#include <config.h> +#include <config.h>
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -7267,6 +7267,28 @@ index 000000000..8a66cd19f
+ __lock_release_recursive(*(_LOCK_RECURSIVE_T*)&fp->_lock); + __lock_release_recursive(*(_LOCK_RECURSIVE_T*)&fp->_lock);
+} +}
+ +
+void flockfile(FILE *fp)
+{
+ if (!(fp->_flags & __SSTR)) {
+ __lock_acquire_recursive(fp->_lock);
+ }
+}
+
+void funlockfile(FILE *fp)
+{
+ if (!(fp->_flags & __SSTR)) {
+ __lock_release_recursive(fp->_lock);
+ }
+}
+
+int ftrylockfile(FILE *fp)
+{
+ if (!(fp->_flags & __SSTR)) {
+ return __lock_try_acquire_recursive(fp->_lock);
+ }
+ return 0;
+}
\ No newline at end of file
diff --git a/libgloss/libsysbase/fnmatch.c b/libgloss/libsysbase/fnmatch.c diff --git a/libgloss/libsysbase/fnmatch.c b/libgloss/libsysbase/fnmatch.c
new file mode 100644 new file mode 100644
index 000000000..893b662ab index 000000000..893b662ab
@@ -7966,10 +7988,10 @@ index 000000000..5e81c5d42
+#endif +#endif
diff --git a/libgloss/libsysbase/iosupport.c b/libgloss/libsysbase/iosupport.c diff --git a/libgloss/libsysbase/iosupport.c b/libgloss/libsysbase/iosupport.c
new file mode 100644 new file mode 100644
index 000000000..3fdf9749f index 000000000..d766b3a17
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/iosupport.c +++ b/libgloss/libsysbase/iosupport.c
@@ -0,0 +1,132 @@ @@ -0,0 +1,108 @@
+#include <stdlib.h> +#include <stdlib.h>
+#include <string.h> +#include <string.h>
+#include <ctype.h> +#include <ctype.h>
@@ -7994,34 +8016,10 @@ index 000000000..3fdf9749f
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
+const devoptab_t dotab_stdnull = { +const devoptab_t dotab_stdnull = {
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
+ "stdnull", // device name + .name = "stdnull",
+ 0, // size of file structure + .structSize = 0,
+ NULL, // device open + .write_r = null_write,
+ NULL, // device close + .dirStateSize = 0
+ null_write, // device write
+ NULL, // device read
+ NULL, // device seek
+ NULL, // device fstat
+ NULL, // device stat
+ NULL, // device link
+ NULL, // device unlink
+ NULL, // device chdir
+ NULL, // device rename
+ NULL, // device mkdir
+ 0, // dirStateSize
+ NULL, // device diropen_r
+ NULL, // device dirreset_r
+ NULL, // device dirnext_r
+ NULL, // device dirclose_r
+ NULL, // device statvfs_r
+ NULL, // device ftruncate_r
+ NULL, // device fsync_r
+ NULL, // deviceData
+ NULL, // chmod_r
+ NULL, // fchmod_r
+ NULL, // rmdir_r
+ NULL, // lstat_r
+ NULL, // utimes_r
+}; +};
+ +
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
@@ -11821,6 +11819,19 @@ index 000000000..380329d34
+ +
+#endif // _SYS_STATVFS_H +#endif // _SYS_STATVFS_H
\ No newline at end of file \ No newline at end of file
diff --git a/newlib/libc/include/sys/stdio.h b/newlib/libc/include/sys/stdio.h
index 91a274596..f264adb74 100644
--- a/newlib/libc/include/sys/stdio.h
+++ b/newlib/libc/include/sys/stdio.h
@@ -24,4 +24,8 @@
#endif
#endif
+void flockfile (FILE *fp);
+void funlockfile (FILE *fp);
+int ftrylockfile (FILE *fp);
+
#endif /* _NEWLIB_STDIO_H */
diff --git a/newlib/libc/include/sys/syslimits.h b/newlib/libc/include/sys/syslimits.h diff --git a/newlib/libc/include/sys/syslimits.h b/newlib/libc/include/sys/syslimits.h
index c872d2018..b3800187f 100644 index c872d2018..b3800187f 100644
--- a/newlib/libc/include/sys/syslimits.h --- a/newlib/libc/include/sys/syslimits.h
@@ -12067,7 +12078,7 @@ index 000000000..2aaca6080
+#endif // _dirent_h_ +#endif // _dirent_h_
diff --git a/newlib/libc/machine/aarch64/sys/lock.h b/newlib/libc/machine/aarch64/sys/lock.h diff --git a/newlib/libc/machine/aarch64/sys/lock.h b/newlib/libc/machine/aarch64/sys/lock.h
new file mode 100644 new file mode 100644
index 000000000..41803dd9d index 000000000..358f2ae56
--- /dev/null --- /dev/null
+++ b/newlib/libc/machine/aarch64/sys/lock.h +++ b/newlib/libc/machine/aarch64/sys/lock.h
@@ -0,0 +1,119 @@ @@ -0,0 +1,119 @@
@@ -12096,17 +12107,17 @@ index 000000000..41803dd9d
+extern "C" { +extern "C" {
+#endif +#endif
+ +
+static inline void __libc_lock_init(_LOCK_T *lock) { +static __inline void __libc_lock_init(_LOCK_T *lock) {
+ *lock = __LOCK_INITIALIZER; + *lock = __LOCK_INITIALIZER;
+} +}
+ +
+static inline void __libc_lock_close(_LOCK_T *lock ) {} +static __inline void __libc_lock_close(_LOCK_T *lock ) {}
+ +
+static inline void __libc_lock_init_recursive(_LOCK_RECURSIVE_T *lock) { +static __inline void __libc_lock_init_recursive(_LOCK_RECURSIVE_T *lock) {
+ *lock = __LOCK_INITIALIZER_RECURSIVE; + *lock = __LOCK_INITIALIZER_RECURSIVE;
+} +}
+ +
+static inline void __libc_lock_close_recursive(_LOCK_RECURSIVE_T *lock ) {} +static __inline void __libc_lock_close_recursive(_LOCK_RECURSIVE_T *lock ) {}
+ +
+extern void __libc_lock_acquire(_LOCK_T *lock); +extern void __libc_lock_acquire(_LOCK_T *lock);
+extern void __libc_lock_acquire_recursive(_LOCK_RECURSIVE_T *lock); +extern void __libc_lock_acquire_recursive(_LOCK_RECURSIVE_T *lock);
@@ -12118,10 +12129,10 @@ index 000000000..41803dd9d
+extern int __libc_lock_try_acquire_recursive(_LOCK_RECURSIVE_T *lock); +extern int __libc_lock_try_acquire_recursive(_LOCK_RECURSIVE_T *lock);
+ +
+/* Returns errno */ +/* Returns errno */
+static inline int __libc_cond_init(_COND_T *cond) { +static __inline int __libc_cond_init(_COND_T *cond) {
+ *cond = __COND_INITIALIZER; + *cond = __COND_INITIALIZER;
+} +}
+static inline void __libc_cond_close(_COND_T *cond ) {} +static __inline void __libc_cond_close(_COND_T *cond ) {}
+ +
+extern int __libc_cond_signal(_COND_T *cond); +extern int __libc_cond_signal(_COND_T *cond);
+extern int __libc_cond_broadcast(_COND_T *cond); +extern int __libc_cond_broadcast(_COND_T *cond);
@@ -12501,10 +12512,10 @@ index 000000000..3618eea85
+#endif // __SYS_LOCK_H__ +#endif // __SYS_LOCK_H__
diff --git a/newlib/libc/machine/powerpc/sys/stdio.h b/newlib/libc/machine/powerpc/sys/stdio.h diff --git a/newlib/libc/machine/powerpc/sys/stdio.h b/newlib/libc/machine/powerpc/sys/stdio.h
new file mode 100644 new file mode 100644
index 000000000..04ebd1ee0 index 000000000..ed88fef8a
--- /dev/null --- /dev/null
+++ b/newlib/libc/machine/powerpc/sys/stdio.h +++ b/newlib/libc/machine/powerpc/sys/stdio.h
@@ -0,0 +1,25 @@ @@ -0,0 +1,29 @@
+#ifndef _NEWLIB_STDIO_H +#ifndef _NEWLIB_STDIO_H
+#define _NEWLIB_STDIO_H +#define _NEWLIB_STDIO_H
+ +
@@ -12528,6 +12539,10 @@ index 000000000..04ebd1ee0
+# endif +# endif
+#endif /* __SINGLE_THREAD__ */ +#endif /* __SINGLE_THREAD__ */
+ +
+void flockfile (FILE *fp);
+void funlockfile (FILE *fp);
+int ftrylockfile (FILE *fp);
+
+#endif /* _NEWLIB_STDIO_H */ +#endif /* _NEWLIB_STDIO_H */
+ +
diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c
@@ -13284,7 +13299,7 @@ index 000000000..2aaca6080
+#endif // _dirent_h_ +#endif // _dirent_h_
diff --git a/newlib/libc/sys/arm/sys/lock.h b/newlib/libc/sys/arm/sys/lock.h diff --git a/newlib/libc/sys/arm/sys/lock.h b/newlib/libc/sys/arm/sys/lock.h
new file mode 100644 new file mode 100644
index 000000000..fd98c32d7 index 000000000..ccce683f1
--- /dev/null --- /dev/null
+++ b/newlib/libc/sys/arm/sys/lock.h +++ b/newlib/libc/sys/arm/sys/lock.h
@@ -0,0 +1,122 @@ @@ -0,0 +1,122 @@
@@ -13314,13 +13329,13 @@ index 000000000..fd98c32d7
+extern "C" { +extern "C" {
+#endif +#endif
+ +
+static inline void __libc_lock_init(_LOCK_T *lock) { +static __inline void __libc_lock_init(_LOCK_T *lock) {
+ *lock = __LOCK_INITIALIZER; + *lock = __LOCK_INITIALIZER;
+} +}
+ +
+static inline void __libc_lock_close(_LOCK_T *lock ) {} +static __inline void __libc_lock_close(_LOCK_T *lock ) {}
+ +
+static inline void __libc_lock_init_recursive(_LOCK_RECURSIVE_T *lock) { +static __inline void __libc_lock_init_recursive(_LOCK_RECURSIVE_T *lock) {
+ *lock = __LOCK_INITIALIZER_RECURSIVE; + *lock = __LOCK_INITIALIZER_RECURSIVE;
+} +}
+ +
@@ -13336,10 +13351,10 @@ index 000000000..fd98c32d7
+extern int __libc_lock_try_acquire_recursive(_LOCK_RECURSIVE_T *lock); +extern int __libc_lock_try_acquire_recursive(_LOCK_RECURSIVE_T *lock);
+ +
+/* Returns errno */ +/* Returns errno */
+static inline int __libc_cond_init(_COND_T *cond) { +static __inline int __libc_cond_init(_COND_T *cond) {
+ *cond = __COND_INITIALIZER; + *cond = __COND_INITIALIZER;
+} +}
+static inline void __libc_cond_close(_COND_T *cond ) {} +static __inline void __libc_cond_close(_COND_T *cond ) {}
+ +
+extern int __libc_cond_signal(_COND_T *cond); +extern int __libc_cond_signal(_COND_T *cond);
+extern int __libc_cond_broadcast(_COND_T *cond); +extern int __libc_cond_broadcast(_COND_T *cond);

View File

@@ -7241,10 +7241,10 @@ index 000000000..5c5831cdf
+} +}
diff --git a/libgloss/libsysbase/flock.c b/libgloss/libsysbase/flock.c diff --git a/libgloss/libsysbase/flock.c b/libgloss/libsysbase/flock.c
new file mode 100644 new file mode 100644
index 000000000..8a66cd19f index 000000000..e9d2200d4
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/flock.c +++ b/libgloss/libsysbase/flock.c
@@ -0,0 +1,22 @@ @@ -0,0 +1,43 @@
+#include <config.h> +#include <config.h>
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -7267,6 +7267,28 @@ index 000000000..8a66cd19f
+ __lock_release_recursive(*(_LOCK_RECURSIVE_T*)&fp->_lock); + __lock_release_recursive(*(_LOCK_RECURSIVE_T*)&fp->_lock);
+} +}
+ +
+void flockfile(FILE *fp)
+{
+ if (!(fp->_flags & __SSTR)) {
+ __lock_acquire_recursive(fp->_lock);
+ }
+}
+
+void funlockfile(FILE *fp)
+{
+ if (!(fp->_flags & __SSTR)) {
+ __lock_release_recursive(fp->_lock);
+ }
+}
+
+int ftrylockfile(FILE *fp)
+{
+ if (!(fp->_flags & __SSTR)) {
+ return __lock_try_acquire_recursive(fp->_lock);
+ }
+ return 0;
+}
\ No newline at end of file
diff --git a/libgloss/libsysbase/fnmatch.c b/libgloss/libsysbase/fnmatch.c diff --git a/libgloss/libsysbase/fnmatch.c b/libgloss/libsysbase/fnmatch.c
new file mode 100644 new file mode 100644
index 000000000..893b662ab index 000000000..893b662ab
@@ -7966,10 +7988,10 @@ index 000000000..5e81c5d42
+#endif +#endif
diff --git a/libgloss/libsysbase/iosupport.c b/libgloss/libsysbase/iosupport.c diff --git a/libgloss/libsysbase/iosupport.c b/libgloss/libsysbase/iosupport.c
new file mode 100644 new file mode 100644
index 000000000..3fdf9749f index 000000000..d766b3a17
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/iosupport.c +++ b/libgloss/libsysbase/iosupport.c
@@ -0,0 +1,132 @@ @@ -0,0 +1,108 @@
+#include <stdlib.h> +#include <stdlib.h>
+#include <string.h> +#include <string.h>
+#include <ctype.h> +#include <ctype.h>
@@ -7994,34 +8016,10 @@ index 000000000..3fdf9749f
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
+const devoptab_t dotab_stdnull = { +const devoptab_t dotab_stdnull = {
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
+ "stdnull", // device name + .name = "stdnull",
+ 0, // size of file structure + .structSize = 0,
+ NULL, // device open + .write_r = null_write,
+ NULL, // device close + .dirStateSize = 0
+ null_write, // device write
+ NULL, // device read
+ NULL, // device seek
+ NULL, // device fstat
+ NULL, // device stat
+ NULL, // device link
+ NULL, // device unlink
+ NULL, // device chdir
+ NULL, // device rename
+ NULL, // device mkdir
+ 0, // dirStateSize
+ NULL, // device diropen_r
+ NULL, // device dirreset_r
+ NULL, // device dirnext_r
+ NULL, // device dirclose_r
+ NULL, // device statvfs_r
+ NULL, // device ftruncate_r
+ NULL, // device fsync_r
+ NULL, // deviceData
+ NULL, // chmod_r
+ NULL, // fchmod_r
+ NULL, // rmdir_r
+ NULL, // lstat_r
+ NULL, // utimes_r
+}; +};
+ +
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
@@ -11821,6 +11819,19 @@ index 000000000..380329d34
+ +
+#endif // _SYS_STATVFS_H +#endif // _SYS_STATVFS_H
\ No newline at end of file \ No newline at end of file
diff --git a/newlib/libc/include/sys/stdio.h b/newlib/libc/include/sys/stdio.h
index 91a274596..f264adb74 100644
--- a/newlib/libc/include/sys/stdio.h
+++ b/newlib/libc/include/sys/stdio.h
@@ -24,4 +24,8 @@
#endif
#endif
+void flockfile (FILE *fp);
+void funlockfile (FILE *fp);
+int ftrylockfile (FILE *fp);
+
#endif /* _NEWLIB_STDIO_H */
diff --git a/newlib/libc/include/sys/syslimits.h b/newlib/libc/include/sys/syslimits.h diff --git a/newlib/libc/include/sys/syslimits.h b/newlib/libc/include/sys/syslimits.h
index c872d2018..b3800187f 100644 index c872d2018..b3800187f 100644
--- a/newlib/libc/include/sys/syslimits.h --- a/newlib/libc/include/sys/syslimits.h
@@ -12067,7 +12078,7 @@ index 000000000..2aaca6080
+#endif // _dirent_h_ +#endif // _dirent_h_
diff --git a/newlib/libc/machine/aarch64/sys/lock.h b/newlib/libc/machine/aarch64/sys/lock.h diff --git a/newlib/libc/machine/aarch64/sys/lock.h b/newlib/libc/machine/aarch64/sys/lock.h
new file mode 100644 new file mode 100644
index 000000000..41803dd9d index 000000000..358f2ae56
--- /dev/null --- /dev/null
+++ b/newlib/libc/machine/aarch64/sys/lock.h +++ b/newlib/libc/machine/aarch64/sys/lock.h
@@ -0,0 +1,119 @@ @@ -0,0 +1,119 @@
@@ -12096,17 +12107,17 @@ index 000000000..41803dd9d
+extern "C" { +extern "C" {
+#endif +#endif
+ +
+static inline void __libc_lock_init(_LOCK_T *lock) { +static __inline void __libc_lock_init(_LOCK_T *lock) {
+ *lock = __LOCK_INITIALIZER; + *lock = __LOCK_INITIALIZER;
+} +}
+ +
+static inline void __libc_lock_close(_LOCK_T *lock ) {} +static __inline void __libc_lock_close(_LOCK_T *lock ) {}
+ +
+static inline void __libc_lock_init_recursive(_LOCK_RECURSIVE_T *lock) { +static __inline void __libc_lock_init_recursive(_LOCK_RECURSIVE_T *lock) {
+ *lock = __LOCK_INITIALIZER_RECURSIVE; + *lock = __LOCK_INITIALIZER_RECURSIVE;
+} +}
+ +
+static inline void __libc_lock_close_recursive(_LOCK_RECURSIVE_T *lock ) {} +static __inline void __libc_lock_close_recursive(_LOCK_RECURSIVE_T *lock ) {}
+ +
+extern void __libc_lock_acquire(_LOCK_T *lock); +extern void __libc_lock_acquire(_LOCK_T *lock);
+extern void __libc_lock_acquire_recursive(_LOCK_RECURSIVE_T *lock); +extern void __libc_lock_acquire_recursive(_LOCK_RECURSIVE_T *lock);
@@ -12118,10 +12129,10 @@ index 000000000..41803dd9d
+extern int __libc_lock_try_acquire_recursive(_LOCK_RECURSIVE_T *lock); +extern int __libc_lock_try_acquire_recursive(_LOCK_RECURSIVE_T *lock);
+ +
+/* Returns errno */ +/* Returns errno */
+static inline int __libc_cond_init(_COND_T *cond) { +static __inline int __libc_cond_init(_COND_T *cond) {
+ *cond = __COND_INITIALIZER; + *cond = __COND_INITIALIZER;
+} +}
+static inline void __libc_cond_close(_COND_T *cond ) {} +static __inline void __libc_cond_close(_COND_T *cond ) {}
+ +
+extern int __libc_cond_signal(_COND_T *cond); +extern int __libc_cond_signal(_COND_T *cond);
+extern int __libc_cond_broadcast(_COND_T *cond); +extern int __libc_cond_broadcast(_COND_T *cond);
@@ -12374,7 +12385,7 @@ index 000000000..b3780c263
+#endif // _dirent_h_ +#endif // _dirent_h_
diff --git a/newlib/libc/machine/powerpc/sys/lock.h b/newlib/libc/machine/powerpc/sys/lock.h diff --git a/newlib/libc/machine/powerpc/sys/lock.h b/newlib/libc/machine/powerpc/sys/lock.h
new file mode 100644 new file mode 100644
index 000000000..f187a976a index 000000000..3618eea85
--- /dev/null --- /dev/null
+++ b/newlib/libc/machine/powerpc/sys/lock.h +++ b/newlib/libc/machine/powerpc/sys/lock.h
@@ -0,0 +1,121 @@ @@ -0,0 +1,121 @@
@@ -12403,11 +12414,11 @@ index 000000000..f187a976a
+extern "C" { +extern "C" {
+#endif +#endif
+ +
+static inline void __libc_lock_init(_LOCK_T *lock) { +static __inline void __libc_lock_init(_LOCK_T *lock) {
+ *lock = __LOCK_INITIALIZER; + *lock = __LOCK_INITIALIZER;
+} +}
+ +
+static inline void __libc_lock_init_recursive(_LOCK_RECURSIVE_T *lock) { +static __inline void __libc_lock_init_recursive(_LOCK_RECURSIVE_T *lock) {
+ *lock = __LOCK_INITIALIZER_RECURSIVE; + *lock = __LOCK_INITIALIZER_RECURSIVE;
+} +}
+ +
@@ -12427,7 +12438,7 @@ index 000000000..f187a976a
+extern int __libc_lock_try_acquire_recursive(_LOCK_RECURSIVE_T *lock); +extern int __libc_lock_try_acquire_recursive(_LOCK_RECURSIVE_T *lock);
+ +
+/* Returns errno */ +/* Returns errno */
+static inline int __libc_cond_init(_COND_T *cond) { +static __inline int __libc_cond_init(_COND_T *cond) {
+ *cond = __COND_INITIALIZER; + *cond = __COND_INITIALIZER;
+} +}
+ +
@@ -12501,10 +12512,10 @@ index 000000000..f187a976a
+#endif // __SYS_LOCK_H__ +#endif // __SYS_LOCK_H__
diff --git a/newlib/libc/machine/powerpc/sys/stdio.h b/newlib/libc/machine/powerpc/sys/stdio.h diff --git a/newlib/libc/machine/powerpc/sys/stdio.h b/newlib/libc/machine/powerpc/sys/stdio.h
new file mode 100644 new file mode 100644
index 000000000..04ebd1ee0 index 000000000..ed88fef8a
--- /dev/null --- /dev/null
+++ b/newlib/libc/machine/powerpc/sys/stdio.h +++ b/newlib/libc/machine/powerpc/sys/stdio.h
@@ -0,0 +1,25 @@ @@ -0,0 +1,29 @@
+#ifndef _NEWLIB_STDIO_H +#ifndef _NEWLIB_STDIO_H
+#define _NEWLIB_STDIO_H +#define _NEWLIB_STDIO_H
+ +
@@ -12528,6 +12539,10 @@ index 000000000..04ebd1ee0
+# endif +# endif
+#endif /* __SINGLE_THREAD__ */ +#endif /* __SINGLE_THREAD__ */
+ +
+void flockfile (FILE *fp);
+void funlockfile (FILE *fp);
+int ftrylockfile (FILE *fp);
+
+#endif /* _NEWLIB_STDIO_H */ +#endif /* _NEWLIB_STDIO_H */
+ +
diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c diff --git a/newlib/libc/stdio/fread.c b/newlib/libc/stdio/fread.c
@@ -13284,7 +13299,7 @@ index 000000000..2aaca6080
+#endif // _dirent_h_ +#endif // _dirent_h_
diff --git a/newlib/libc/sys/arm/sys/lock.h b/newlib/libc/sys/arm/sys/lock.h diff --git a/newlib/libc/sys/arm/sys/lock.h b/newlib/libc/sys/arm/sys/lock.h
new file mode 100644 new file mode 100644
index 000000000..fd98c32d7 index 000000000..9d9ffa3bb
--- /dev/null --- /dev/null
+++ b/newlib/libc/sys/arm/sys/lock.h +++ b/newlib/libc/sys/arm/sys/lock.h
@@ -0,0 +1,122 @@ @@ -0,0 +1,122 @@
@@ -13314,17 +13329,17 @@ index 000000000..fd98c32d7
+extern "C" { +extern "C" {
+#endif +#endif
+ +
+static inline void __libc_lock_init(_LOCK_T *lock) { +static __inline void __libc_lock_init(_LOCK_T *lock) {
+ *lock = __LOCK_INITIALIZER; + *lock = __LOCK_INITIALIZER;
+} +}
+ +
+static inline void __libc_lock_close(_LOCK_T *lock ) {} +static __inline void __libc_lock_close(_LOCK_T *lock ) {}
+ +
+static inline void __libc_lock_init_recursive(_LOCK_RECURSIVE_T *lock) { +static __inline void __libc_lock_init_recursive(_LOCK_RECURSIVE_T *lock) {
+ *lock = __LOCK_INITIALIZER_RECURSIVE; + *lock = __LOCK_INITIALIZER_RECURSIVE;
+} +}
+ +
+static inline void __libc_lock_close_recursive(_LOCK_RECURSIVE_T *lock ) {} +static __inline void __libc_lock_close_recursive(_LOCK_RECURSIVE_T *lock ) {}
+ +
+extern void __libc_lock_acquire(_LOCK_T *lock); +extern void __libc_lock_acquire(_LOCK_T *lock);
+extern void __libc_lock_acquire_recursive(_LOCK_RECURSIVE_T *lock); +extern void __libc_lock_acquire_recursive(_LOCK_RECURSIVE_T *lock);
@@ -13336,10 +13351,10 @@ index 000000000..fd98c32d7
+extern int __libc_lock_try_acquire_recursive(_LOCK_RECURSIVE_T *lock); +extern int __libc_lock_try_acquire_recursive(_LOCK_RECURSIVE_T *lock);
+ +
+/* Returns errno */ +/* Returns errno */
+static inline int __libc_cond_init(_COND_T *cond) { +static __inline int __libc_cond_init(_COND_T *cond) {
+ *cond = __COND_INITIALIZER; + *cond = __COND_INITIALIZER;
+} +}
+static inline void __libc_cond_close(_COND_T *cond ) {} +static __inline void __libc_cond_close(_COND_T *cond ) {}
+ +
+extern int __libc_cond_signal(_COND_T *cond); +extern int __libc_cond_signal(_COND_T *cond);
+extern int __libc_cond_broadcast(_COND_T *cond); +extern int __libc_cond_broadcast(_COND_T *cond);

View File

@@ -29,12 +29,13 @@ do
done done
case "$VERSION" in case "$VERSION" in
# devkitARM
"1" ) "1" )
BINUTILS_VER=2.45.1 BINUTILS_VER=2.46.0
GCC_VER=15.2.0 GCC_VER=16.1.0
NEWLIB_VER=4.5.0.20241231 NEWLIB_VER=4.6.0.20260123
BINUTILS_PKGREL=2 BINUTILS_PKGREL=1
GCC_PKGREL=6 GCC_PKGREL=1
NEWLIB_PKGREL=5 NEWLIB_PKGREL=5
basedir='dkarm-eabi' basedir='dkarm-eabi'
package=devkitARM package=devkitARM
@@ -45,14 +46,15 @@ case "$VERSION" in
_rules_ver=${DKARM_RULES_VER} _rules_ver=${DKARM_RULES_VER}
_crtls_ver=${DKARM_CRTLS_VER} _crtls_ver=${DKARM_CRTLS_VER}
;; ;;
# devkitPPC
"2" ) "2" )
BINUTILS_VER=2.45.1 BINUTILS_VER=2.46.0
GCC_VER=15.2.0 GCC_VER=16.1.0
MN_BINUTILS_VER=2.24 MN_BINUTILS_VER=2.24
NEWLIB_VER=4.6.0.20260123 NEWLIB_VER=4.6.0.20260123
BINUTILS_PKGREL=2 BINUTILS_PKGREL=1
GCC_PKGREL=7 GCC_PKGREL=1
NEWLIB_PKGREL=2 NEWLIB_PKGREL=4
basedir='dkppc' basedir='dkppc'
package=devkitPPC package=devkitPPC
target=powerpc-eabi target=powerpc-eabi
@@ -63,13 +65,14 @@ case "$VERSION" in
_rules_ver=${DKPPC_RULES_VER} _rules_ver=${DKPPC_RULES_VER}
_crtls_ver=${DKPPC_CRTLS_VER} _crtls_ver=${DKPPC_CRTLS_VER}
;; ;;
# devkitA64
"3" ) "3" )
GCC_VER=15.2.0 GCC_VER=16.1.0
BINUTILS_VER=2.45.1 BINUTILS_VER=2.46.0
NEWLIB_VER=4.5.0.20241231 NEWLIB_VER=4.6.0.20260123
BINUTILS_PKGREL=2 BINUTILS_PKGREL=1
GCC_PKGREL=3 GCC_PKGREL=1
NEWLIB_PKGREL=5 NEWLIB_PKGREL=4
basedir='dka64' basedir='dka64'
package=devkitA64 package=devkitA64
target=aarch64-none-elf target=aarch64-none-elf