Compare commits

..

7 Commits

Author SHA1 Message Date
Dave Murphy
329ce986eb devkitA64: gcc 15.2.0 2025-12-27 14:48:13 +00:00
Dave Murphy
73d0dafa21 devkitA64: binutils 2.45.1 2025-12-26 19:53:33 +00:00
Dave Murphy
5fb027fd3b devkitPPC: enable positional arguments 2025-06-04 14:00:00 +01:00
Dave Murphy
b5cdec82b7 devkitA64: release 28 2025-05-25 19:02:18 +01:00
Dave Murphy
2d21601d71 devkitA64: newlib 4.5.0 2025-05-25 19:01:58 +01:00
Dave Murphy
c879ba7e62 devkitA64: gcc 15.1.0 2025-05-25 19:01:58 +01:00
Dave Murphy
b6613d5f5f devkitA64: binutils 2.44 2025-05-25 19:01:58 +01:00
8 changed files with 2114 additions and 352 deletions

View File

@@ -1,8 +1,8 @@
#!/usr/bin/env bash
#---------------------------------------------------------------------------------
# devkitARM release 66
# devkitPPC release 47
# devkitA64 release 27
# devkitPPC release 47.1
# devkitA64 release 29
#---------------------------------------------------------------------------------
if [ 0 -eq 1 ] ; then

View File

@@ -1,8 +1,8 @@
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index b89d3dda05d..1ad8a9c088d 100644
index 68190dbaa27..3413eaca5b3 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -2005,6 +2005,14 @@ struct output_elf_obj_tdata
@@ -2020,6 +2020,14 @@ struct output_elf_obj_tdata
asection *sec;
} package_metadata;
@@ -18,10 +18,10 @@ index b89d3dda05d..1ad8a9c088d 100644
bfd_size_type program_header_size;
diff --git a/bfd/elf.c b/bfd/elf.c
index f85f79e1e35..d27f05b92ae 100644
index dfa04c9268d..12b76d3ffb8 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -7166,6 +7166,14 @@ _bfd_elf_write_object_contents (bfd *abfd)
@@ -7223,6 +7223,14 @@ _bfd_elf_write_object_contents (bfd *abfd)
if (!bed->s->write_shdrs_and_ehdr (abfd))
return false;
@@ -37,10 +37,10 @@ index f85f79e1e35..d27f05b92ae 100644
if (t->o->build_id.after_write_object_contents != NULL
&& !(*t->o->build_id.after_write_object_contents) (abfd))
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 94c9a01069b..d39880b27c4 100644
index e86f0280c2a..debb627a00f 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -2441,6 +2441,12 @@ enum elf_aarch64_stub_type
@@ -2444,6 +2444,12 @@ enum elf_aarch64_stub_type
aarch64_stub_erratum_843419_veneer,
};
@@ -53,7 +53,7 @@ index 94c9a01069b..d39880b27c4 100644
struct elf_aarch64_stub_hash_entry
{
/* Base hash table entry structure. */
@@ -6969,11 +6975,13 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
@@ -6986,11 +6992,13 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
Elf_Internal_Sym *sym;
asection *sec;
struct elf_link_hash_entry *h;
@@ -67,7 +67,7 @@ index 94c9a01069b..d39880b27c4 100644
char *error_message = NULL;
r_symndx = ELFNN_R_SYM (rel->r_info);
@@ -7113,6 +7121,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
@@ -7130,6 +7138,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
h, &unresolved_reloc,
save_addend, &addend, sym);
@@ -78,7 +78,7 @@ index 94c9a01069b..d39880b27c4 100644
switch (elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type))
{
case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
@@ -7136,7 +7148,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
@@ -7153,7 +7165,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
need_relocs =
(!bfd_link_executable (info) || indx != 0) &&
(h == NULL
@@ -87,7 +87,7 @@ index 94c9a01069b..d39880b27c4 100644
|| h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7231,7 +7243,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
@@ -7248,7 +7260,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
need_relocs =
(!bfd_link_executable (info) || indx != 0) &&
(h == NULL
@@ -96,7 +96,7 @@ index 94c9a01069b..d39880b27c4 100644
|| h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7280,7 +7292,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
@@ -7297,7 +7309,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
bfd_vma off = symbol_tlsdesc_got_offset (input_bfd, h, r_symndx);
need_relocs = (h == NULL
@@ -105,7 +105,7 @@ index 94c9a01069b..d39880b27c4 100644
|| h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7606,6 +7618,23 @@ need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
@@ -7623,6 +7635,23 @@ need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
return false;
}
@@ -129,7 +129,7 @@ index 94c9a01069b..d39880b27c4 100644
/* Adjust a symbol defined by a dynamic object and referenced by a
regular object. The current definition is in some section of the
dynamic object, but we're not including those sections. We have to
@@ -8824,6 +8853,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8728,6 +8757,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
struct elf_aarch64_link_hash_table *htab;
struct elf_aarch64_link_hash_entry *eh;
struct elf_dyn_relocs *p;
@@ -137,7 +137,7 @@ index 94c9a01069b..d39880b27c4 100644
/* An example of a bfd_link_hash_indirect symbol is versioned
symbol. For example: __gxx_personality_v0(bfd_link_hash_indirect)
@@ -8843,6 +8873,10 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8747,6 +8777,10 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
info = (struct bfd_link_info *) inf;
htab = elf_aarch64_hash_table (info);
@@ -148,7 +148,7 @@ index 94c9a01069b..d39880b27c4 100644
/* Since STT_GNU_IFUNC symbol must go through PLT, we handle it
here if it is defined and referenced in a non-shared object. */
if (h->type == STT_GNU_IFUNC
@@ -8852,7 +8886,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8756,7 +8790,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
{
/* Make sure this symbol is output as a dynamic symbol.
Undefined weak syms won't yet be marked as dynamic. */
@@ -157,7 +157,7 @@ index 94c9a01069b..d39880b27c4 100644
&& h->root.type == bfd_link_hash_undefweak)
{
if (!bfd_elf_link_record_dynamic_symbol (info, h))
@@ -8886,6 +8920,11 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8790,6 +8824,11 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
of relaxing into these from the large model PLT entries. */
s->size += htab->plt_entry_size;
@@ -169,7 +169,7 @@ index 94c9a01069b..d39880b27c4 100644
/* We also need to make an entry in the .got.plt section, which
will be placed in the .got section by the linker script. */
htab->root.sgotplt->size += GOT_ENTRY_SIZE;
@@ -8914,6 +8953,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8818,6 +8857,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
htab->variant_pcs = 1;
}
@@ -177,7 +177,7 @@ index 94c9a01069b..d39880b27c4 100644
else
{
h->plt.offset = (bfd_vma) - 1;
@@ -8926,9 +8966,6 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8830,9 +8870,6 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
h->needs_plt = 0;
}
@@ -187,7 +187,7 @@ index 94c9a01069b..d39880b27c4 100644
if (h->got.refcount > 0)
{
bool dyn;
@@ -8940,7 +8977,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8844,7 +8881,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
/* Make sure this symbol is output as a dynamic symbol.
Undefined weak syms won't yet be marked as dynamic. */
@@ -196,7 +196,7 @@ index 94c9a01069b..d39880b27c4 100644
&& h->root.type == bfd_link_hash_undefweak)
{
if (!bfd_elf_link_record_dynamic_symbol (info, h))
@@ -8954,7 +8991,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8858,7 +8895,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
{
h->got.offset = htab->root.sgot->size;
htab->root.sgot->size += GOT_ENTRY_SIZE;
@@ -205,7 +205,7 @@ index 94c9a01069b..d39880b27c4 100644
|| h->root.type != bfd_link_hash_undefweak)
&& (bfd_link_pic (info)
|| WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h))
@@ -8990,7 +9027,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8894,7 +8931,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
}
indx = h && h->dynindx != -1 ? h->dynindx : 0;
@@ -214,7 +214,7 @@ index 94c9a01069b..d39880b27c4 100644
|| h->root.type != bfd_link_hash_undefweak)
&& (!bfd_link_executable (info)
|| indx != 0
@@ -9072,7 +9109,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8976,7 +9013,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
visibility. */
if (h->dyn_relocs != NULL && h->root.type == bfd_link_hash_undefweak)
{
@@ -223,7 +223,7 @@ index 94c9a01069b..d39880b27c4 100644
|| UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
h->dyn_relocs = NULL;
@@ -9092,7 +9129,9 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -8996,7 +9033,9 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
symbols which turn out to need copy relocs or are not
dynamic. */
@@ -234,7 +234,7 @@ index 94c9a01069b..d39880b27c4 100644
&& ((h->def_dynamic
&& !h->def_regular)
|| (htab->root.dynamic_sections_created
@@ -9103,6 +9142,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
@@ -9007,6 +9046,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
Undefined weak syms won't yet be marked as dynamic. */
if (h->dynindx == -1
&& !h->forced_local
@@ -242,7 +242,7 @@ index 94c9a01069b..d39880b27c4 100644
&& h->root.type == bfd_link_hash_undefweak
&& !bfd_elf_link_record_dynamic_symbol (info, h))
return false;
@@ -10058,8 +10098,17 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
@@ -9978,8 +10018,17 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
Elf_Internal_Sym *sym)
{
struct elf_aarch64_link_hash_table *htab;
@@ -260,7 +260,7 @@ index 94c9a01069b..d39880b27c4 100644
if (h->plt.offset != (bfd_vma) - 1)
{
asection *plt, *gotplt, *relplt;
@@ -10094,7 +10143,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
@@ -10014,7 +10063,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
abort ();
elfNN_aarch64_create_small_pltn_entry (h, htab, output_bfd, info);
@@ -269,7 +269,7 @@ index 94c9a01069b..d39880b27c4 100644
{
/* Mark the symbol as undefined, rather than as defined in
the .plt section. */
@@ -10116,7 +10165,8 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
@@ -10036,7 +10085,8 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
&& elf_aarch64_hash_entry (h)->got_type == GOT_NORMAL
/* Undefined weak symbol in static PIE resolves to 0 without
any dynamic relocations. */
@@ -279,7 +279,7 @@ index 94c9a01069b..d39880b27c4 100644
{
Elf_Internal_Rela rela;
bfd_byte *loc;
@@ -10766,6 +10816,9 @@ const struct elf_size_info elfNN_aarch64_size_info =
@@ -10704,6 +10754,9 @@ const struct elf_size_info elfNN_aarch64_size_info =
#define elf_backend_init_index_section \
_bfd_elf_init_2_index_sections
@@ -290,7 +290,7 @@ index 94c9a01069b..d39880b27c4 100644
elfNN_aarch64_finish_dynamic_sections
diff --git a/ld/emulparams/aarch64elf.sh b/ld/emulparams/aarch64elf.sh
index 72616b57691..42f708118fb 100644
index aa051c76a7a..073d3a47b65 100644
--- a/ld/emulparams/aarch64elf.sh
+++ b/ld/emulparams/aarch64elf.sh
@@ -1,4 +1,5 @@
@@ -300,7 +300,7 @@ index 72616b57691..42f708118fb 100644
ARCH=aarch64
MACHINE=
diff --git a/ld/emulparams/aarch64elf32.sh b/ld/emulparams/aarch64elf32.sh
index 45bf31a179a..02e0cad8699 100644
index 0565b7a066c..64821b1fc31 100644
--- a/ld/emulparams/aarch64elf32.sh
+++ b/ld/emulparams/aarch64elf32.sh
@@ -1,4 +1,5 @@
@@ -310,10 +310,10 @@ index 45bf31a179a..02e0cad8699 100644
ARCH="aarch64:ilp32"
MACHINE=
diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
index aa2859d4f73..c680dca8f86 100644
index 91d58d8fe5a..e1ac4a6b139 100644
--- a/ld/emultempl/aarch64elf.em
+++ b/ld/emultempl/aarch64elf.em
@@ -368,7 +368,7 @@ PARSE_AND_LIST_LONGOPTS='
@@ -489,7 +489,7 @@ PARSE_AND_LIST_LONGOPTS='
{ "no-apply-dynamic-relocs", no_argument, NULL, OPTION_NO_APPLY_DYNAMIC_RELOCS},
'
@@ -323,10 +323,10 @@ index aa2859d4f73..c680dca8f86 100644
" enum sizes\n"));
fprintf (file, _(" --no-wchar-size-warning Don'\''t warn about objects with incompatible\n"
diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
index 863657e12f5..672974df511 100644
index 431205fe644..ce288649513 100644
--- a/ld/emultempl/elf.em
+++ b/ld/emultempl/elf.em
@@ -813,6 +813,7 @@ EOF
@@ -814,6 +814,7 @@ EOF
fi
fragment <<EOF
{"build-id", optional_argument, NULL, OPTION_BUILD_ID},
@@ -334,7 +334,7 @@ index 863657e12f5..672974df511 100644
{"package-metadata", optional_argument, NULL, OPTION_PACKAGE_METADATA},
{"compress-debug-sections", required_argument, NULL, OPTION_COMPRESS_DEBUG},
{"rosegment", no_argument, NULL, OPTION_ROSEGMENT},
@@ -892,6 +893,18 @@ gld${EMULATION_NAME}_handle_option (int optc)
@@ -901,6 +902,18 @@ gld${EMULATION_NAME}_handle_option (int optc)
case OPTION_NO_ROSEGMENT:
link_info.one_rosegment = false;
break;
@@ -354,7 +354,7 @@ index 863657e12f5..672974df511 100644
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
diff --git a/ld/ldelf.c b/ld/ldelf.c
index 09691609fc0..5769b4aa0f9 100644
index f4f27fc3873..4028cbabdc7 100644
--- a/ld/ldelf.c
+++ b/ld/ldelf.c
@@ -55,6 +55,9 @@ const char *ldelf_emit_note_gnu_build_id;
@@ -367,7 +367,7 @@ index 09691609fc0..5769b4aa0f9 100644
/* These variables are required to pass information back and forth
between after_open and check_needed and stat_needed and vercheck. */
@@ -1209,8 +1212,93 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
@@ -1213,8 +1216,93 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
*save_input_bfd_tail = NULL;
}
@@ -382,7 +382,7 @@ index 09691609fc0..5769b4aa0f9 100644
+ 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))
@@ -413,7 +413,7 @@ index 09691609fc0..5769b4aa0f9 100644
+ 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
@@ -462,7 +462,7 @@ index 09691609fc0..5769b4aa0f9 100644
void
ldelf_before_plugin_all_symbols_read (int use_libpath, int native,
int is_linux, int is_freebsd,
@@ -1289,6 +1377,24 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
@@ -1291,6 +1379,24 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
}
}
@@ -488,7 +488,7 @@ index 09691609fc0..5769b4aa0f9 100644
/* Do not allow executable files to be used as inputs to the link. */
diff --git a/ld/ldelf.h b/ld/ldelf.h
index 239194772c4..68516dbf45e 100644
index e8b7c8c7eb8..0b76923d834 100644
--- a/ld/ldelf.h
+++ b/ld/ldelf.h
@@ -20,6 +20,7 @@
@@ -497,13 +497,13 @@ index 239194772c4..68516dbf45e 100644
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);
extern bool ldelf_load_symbols (lang_input_statement_type *);
diff --git a/ld/ldlex.h b/ld/ldlex.h
index defe3fcbbb9..30f31df990e 100644
index c8d61478c60..a5bb71b1dc5 100644
--- a/ld/ldlex.h
+++ b/ld/ldlex.h
@@ -186,6 +186,7 @@ enum option_values
@@ -188,6 +188,7 @@ enum option_values
/* Used by emultempl/elf.em, emultempl/pe.em and emultempl/pep.em. */
OPTION_BUILD_ID,
OPTION_EXCLUDE_LIBS,

View File

@@ -1,8 +1,8 @@
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 95c91ee02be..4711542eee5 100644
index 40b50dc969e..debd0f3d3b2 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1195,7 +1195,14 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
@@ -1192,7 +1192,14 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
tmake_file="${tmake_file} aarch64/t-aarch64"
case $target in
aarch64-*-elf*)
@@ -18,7 +18,7 @@ index 95c91ee02be..4711542eee5 100644
aarch64-*-fuchsia*)
tm_file="${tm_file} fuchsia.h"
diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h
index 5396da9b2d6..87235d680ad 100644
index 15cf1eb0389..aba0e9bbff9 100644
--- a/gcc/config/aarch64/aarch64-elf-raw.h
+++ b/gcc/config/aarch64/aarch64-elf-raw.h
@@ -22,6 +22,7 @@
@@ -30,10 +30,10 @@ index 5396da9b2d6..87235d680ad 100644
#define ENDFILE_SPEC \
" crtend%O%s crtn%O%s " \
diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h
index a05c0d3ded1..5551807e4c6 100644
index a6ca5cf016b..90470fd6c44 100644
--- a/gcc/config/aarch64/aarch64-opts.h
+++ b/gcc/config/aarch64/aarch64-opts.h
@@ -80,7 +80,8 @@ enum aarch64_tp_reg {
@@ -91,7 +91,8 @@ enum aarch64_tp_reg {
AARCH64_TPIDR_EL1 = 1,
AARCH64_TPIDR_EL2 = 2,
AARCH64_TPIDR_EL3 = 3,
@@ -44,10 +44,10 @@ index a05c0d3ded1..5551807e4c6 100644
/* SVE vector register sizes. */
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index 1beec94629d..90a9ec580f8 100644
index 433ec975d7e..d4c3835a15a 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -21060,8 +21060,24 @@ aarch64_load_tp (rtx target)
@@ -21378,8 +21378,24 @@ aarch64_load_tp (rtx target)
|| !register_operand (target, Pmode))
target = gen_reg_rtx (Pmode);
@@ -75,10 +75,10 @@ index 1beec94629d..90a9ec580f8 100644
}
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index 4fa1dfc7906..43a01fe3d56 100644
index e8bd8c73c12..4fc0d8f4ded 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -1377,6 +1377,10 @@ typedef struct
@@ -1436,6 +1436,10 @@ typedef struct
/* Check TLS Descriptors mechanism is selected. */
#define TARGET_TLS_DESC (aarch64_tls_dialect == TLS_DESCRIPTORS)
@@ -90,10 +90,10 @@ index 4fa1dfc7906..43a01fe3d56 100644
/* 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 dbde066f747..3e3198bf52f 100644
index 031e621c98a..0fcf0aa703f 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -7436,11 +7436,22 @@
@@ -7702,11 +7702,22 @@
(define_insn "aarch64_load_tp_hard"
[(set (match_operand:DI 0 "register_operand" "=r")
(unspec:DI [(const_int 0)] UNSPEC_TLS))]
@@ -118,10 +118,10 @@ index dbde066f747..3e3198bf52f 100644
;; instructions in the TLS stubs, in order to enable linker relaxation.
;; Therefore we treat the stubs as an atomic sequence.
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
index 6356c419399..a6907ed0a0b 100644
index f32d56d4ffa..7cf8d3ba3d4 100644
--- a/gcc/config/aarch64/aarch64.opt
+++ b/gcc/config/aarch64/aarch64.opt
@@ -128,6 +128,9 @@ Enum(tp_reg) String(tpidr_el3) Value(AARCH64_TPIDR_EL3)
@@ -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)
@@ -131,7 +131,7 @@ index 6356c419399..a6907ed0a0b 100644
mtp=
Target RejectNegative Joined Enum(tp_reg) Var(aarch64_tpidr_reg) Init(AARCH64_TPIDR_EL0) Save
Specify the thread pointer register.
@@ -329,7 +332,7 @@ TargetVariable
@@ -338,7 +341,7 @@ TargetVariable
long aarch64_stack_protector_guard_offset = 0
moutline-atomics
@@ -141,10 +141,10 @@ index 6356c419399..a6907ed0a0b 100644
-param=aarch64-vect-compare-costs=
diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64
index 78713558e7d..76c0914d8ce 100644
index 59571948479..f50c37d8b3c 100644
--- a/gcc/config/aarch64/t-aarch64
+++ b/gcc/config/aarch64/t-aarch64
@@ -208,8 +208,10 @@ aarch64-ldp-fusion.o: $(srcdir)/config/aarch64/aarch64-ldp-fusion.cc \
@@ -198,8 +198,10 @@ aarch64-ldp-fusion.o: $(srcdir)/config/aarch64/aarch64-ldp-fusion.cc \
$(srcdir)/config/aarch64/aarch64-ldp-fusion.cc
comma=,
@@ -238,26 +238,25 @@ index 00000000000..ab7b466aa71
@@ -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 42563982e42..923dc198a7e 100644
index e083f49f3da..1b81e7e88ce 100644
--- a/gcc/config/i386/host-mingw32.cc
+++ b/gcc/config/i386/host-mingw32.cc
@@ -93,7 +93,10 @@ mingw32_gt_pch_get_address (size_t size, int)
for NT system dlls is in 0x70000000 to 0x78000000 range.
@@ -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 728332b8153..47fc03eb8c8 100644
index 4fd87f2c4a1..6af06f7b032 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -881,6 +881,11 @@ proper position among the other output files. */
@@ -888,6 +888,11 @@ proper position among the other output files. */
#endif
#endif
@@ -269,7 +268,7 @@ index 728332b8153..47fc03eb8c8 100644
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */
#ifndef STARTFILE_SPEC
#define STARTFILE_SPEC \
@@ -1208,6 +1213,7 @@ static const char *link_spec = LINK_SPEC;
@@ -1215,6 +1220,7 @@ static const char *link_spec = LINK_SPEC;
static const char *lib_spec = LIB_SPEC;
static const char *link_gomp_spec = "";
static const char *libgcc_spec = LIBGCC_SPEC;
@@ -277,7 +276,7 @@ index 728332b8153..47fc03eb8c8 100644
static const char *endfile_spec = ENDFILE_SPEC;
static const char *startfile_spec = STARTFILE_SPEC;
static const char *linker_name_spec = LINKER_NAME;
@@ -1720,6 +1726,7 @@ static struct spec_list static_specs[] =
@@ -1727,6 +1733,7 @@ static struct spec_list static_specs[] =
INIT_STATIC_SPEC ("lib", &lib_spec),
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
@@ -299,7 +298,7 @@ index ea689a353c8..98f9d9b21b7 100755
;;
*)
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
index 38d3859a73c..f97358d9787 100644
index b9767cd1eee..362689c9f0b 100644
--- a/libgcc/crtstuff.c
+++ b/libgcc/crtstuff.c
@@ -326,7 +326,7 @@ register_tm_clones (void)
@@ -312,7 +311,7 @@ index 38d3859a73c..f97358d9787 100644
in every shared-object; in a main program its value is zero. The
object should in any case be protected. This means the instance
diff --git a/libgcc/gthr.h b/libgcc/gthr.h
index 33c2d8ff630..2a0a9c1e87e 100644
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
@@ -325,10 +324,10 @@ index 33c2d8ff630..2a0a9c1e87e 100644
#define GTHREAD_USE_WEAK 0
#endif
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index 422a0f4bd0a..ee09ada9170 100644
index 537774c2668..76da4f35b96 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -1429,6 +1429,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
@@ -1436,6 +1436,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
@@ -337,10 +336,10 @@ index 422a0f4bd0a..ee09ada9170 100644
< $< > $@
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 9fd4ab4848c..beea48941a3 100644
index 7b96b2207f8..817de242772 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -1903,6 +1903,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
@@ -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' \

File diff suppressed because one or more lines are too long

View File

@@ -62,7 +62,7 @@ then
--enable-lto \
--disable-tm-clone-registry \
--disable-__cxa_atexit \
--with-bugurl="https://github.com/devkitPro/buildscripts/issues" --with-pkgversion="devkitA64 release 27" \
--with-bugurl="https://github.com/devkitPro/buildscripts/issues" --with-pkgversion="devkitA64 release 29" \
$CROSS_PARAMS \
$CROSS_GCC_PARAMS \
$EXTRA_GCC_PARAMS \
@@ -145,5 +145,3 @@ then
$MAKE install || { echo "Error installing gcc stage2"; exit 1; }
touch installed-stage2
fi
rm -fr $prefix/$target/sys-include

View File

@@ -11023,7 +11023,7 @@ index f25db3b0a..8e1626550 100644
for i in $(srcdir)/libc/sys/$(sys_dir)/sys/*.h; do \
if [ -f $$i ]; then \
diff --git a/newlib/configure.host b/newlib/configure.host
index ff2e51275..7ef23d5f6 100644
index ff2e51275..dfa957d55 100644
--- a/newlib/configure.host
+++ b/newlib/configure.host
@@ -646,6 +646,14 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
@@ -11041,14 +11041,15 @@ index ff2e51275..7ef23d5f6 100644
arm*-*-pe)
syscall_dir=syscalls
newlib_cflags="${newlib_cflags} -DHAVE_SYSCONF_PAGESIZE"
@@ -818,7 +826,13 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
@@ -818,7 +826,14 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
;;
- powerpc*-*-eabi* | \
+ powerpc*-*-eabi*)
+ default_newlib_io_c99_formats="yes"
+ default_newlib_io_c99_formats="yes"
+ default_newlib_io_long_long="yes"
+ default_newlib_io_pos_args="yes"
+ newlib_cflags="${newlib_cflags} -DHAVE_ASSERT_FUNC -DABORT_PROVIDED -DCUSTOM_MALLOC_LOCK -D__DYNAMIC_REENT__ -DGETREENT_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -D__DEFAULT_UTF8__"
+ newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections"
+ syscall_dir=syscalls
@@ -11960,7 +11961,7 @@ index d8dfdbd82..a85b5a99b 100644
return 0;
}
diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c
index feb1fab56..7a59eb21f 100644
index feb1fab56..99ec9c458 100644
--- a/newlib/libc/stdio/vfprintf.c
+++ b/newlib/libc/stdio/vfprintf.c
@@ -108,6 +108,8 @@ Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
@@ -11972,7 +11973,28 @@ index feb1fab56..7a59eb21f 100644
#if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)vfprintf.c 5.50 (Berkeley) 12/16/92";*/
static char *rcsid = "$Id$";
@@ -1188,7 +1190,7 @@ reswitch: switch (ch) {
@@ -548,12 +550,19 @@ _VFPRINTF_R (struct _reent *data,
#endif
/* Macros to support positional arguments */
+
+#if _ARCH_PPC
+#define __VALIST_PTR(arg) ((va_list *)(arg))
+#else
+#define __VALIST_PTR(arg) (&(arg))
+#endif
+
#ifndef _NO_POS_ARGS
# define GET_ARG(n, ap, type) \
(is_pos_arg \
? (n < numargs \
? args[n].val_##type \
- : get_arg (data, n, fmt_anchor, &ap, &numargs, args, \
+ : get_arg (data, n, fmt_anchor, __VALIST_PTR(ap), &numargs, args, \
arg_type, &saved_fmt)->val_##type) \
: (arg_index++ < numargs \
? args[n].val_##type \
@@ -1188,7 +1197,7 @@ reswitch: switch (ch) {
string:
#endif
sign = '\0';
@@ -11981,7 +12003,7 @@ index feb1fab56..7a59eb21f 100644
/* Behavior is undefined if the user passed a
NULL string when precision is not 0.
However, if we are not optimizing for size,
@@ -1198,7 +1200,7 @@ string:
@@ -1198,7 +1207,7 @@ string:
size = ((unsigned) prec > 6U) ? 6 : prec;
}
else
@@ -11991,7 +12013,7 @@ index feb1fab56..7a59eb21f 100644
if (ch == 'S' || (flags & LONGINT)) {
mbstate_t ps;
diff --git a/newlib/libc/stdio/vfscanf.c b/newlib/libc/stdio/vfscanf.c
index 71e2c3e22..bd2d635ed 100644
index 71e2c3e22..960c41608 100644
--- a/newlib/libc/stdio/vfscanf.c
+++ b/newlib/libc/stdio/vfscanf.c
@@ -74,6 +74,8 @@ These are GNU extensions.
@@ -12003,8 +12025,28 @@ index 71e2c3e22..bd2d635ed 100644
#include <_ansi.h>
#include <reent.h>
#include <newlib.h>
@@ -572,12 +574,18 @@ __SVFSCANF_R (struct _reent *rptr,
{10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
/* Macro to support positional arguments */
+#if _ARCH_PPC
+#define __VALIST_PTR(arg) ((va_list *)(arg))
+#else
+#define __VALIST_PTR(arg) (&(arg))
+#endif
+
#ifndef _NO_POS_ARGS
# define GET_ARG(n, ap, type) \
((type) (is_pos_arg \
? (n < numargs \
? args[n] \
- : get_arg (n, &ap, &numargs, args)) \
+ : get_arg (n, __VALIST_PTR(ap), &numargs, args)) \
: (arg_index++ < numargs \
? args[n] \
: (numargs < MAX_POS_ARGS \
diff --git a/newlib/libc/stdio/vfwprintf.c b/newlib/libc/stdio/vfwprintf.c
index 5a5c36829..3eaca0ce6 100644
index 5a5c36829..3ecba7bd4 100644
--- a/newlib/libc/stdio/vfwprintf.c
+++ b/newlib/libc/stdio/vfwprintf.c
@@ -92,6 +92,9 @@ SEEALSO
@@ -12017,8 +12059,28 @@ index 5a5c36829..3eaca0ce6 100644
#include <newlib.h>
#ifdef INTEGER_ONLY
@@ -538,11 +541,18 @@ _VFWPRINTF_R (struct _reent *data,
/* Macros to support positional arguments */
#ifndef _NO_POS_ARGS
+
+#if _ARCH_PPC
+#define __VALIST_PTR(arg) ((va_list *)(arg))
+#else
+#define __VALIST_PTR(arg) (&(arg))
+#endif
+
# define GET_ARG(n, ap, type) \
(is_pos_arg \
? (n < numargs \
? args[n].val_##type \
- : get_arg (data, n, fmt_anchor, &ap, &numargs, args, \
+ : get_arg (data, n, fmt_anchor, __VALIST_PTR(ap), &numargs, args, \
arg_type, &saved_fmt)->val_##type) \
: (arg_index++ < numargs \
? args[n].val_##type \
diff --git a/newlib/libc/stdio/vfwscanf.c b/newlib/libc/stdio/vfwscanf.c
index d2f91dde2..de80cc0c0 100644
index d2f91dde2..7c44f29fb 100644
--- a/newlib/libc/stdio/vfwscanf.c
+++ b/newlib/libc/stdio/vfwscanf.c
@@ -74,6 +74,9 @@ PORTABILITY
@@ -12031,6 +12093,26 @@ index d2f91dde2..de80cc0c0 100644
#include <_ansi.h>
#include <reent.h>
#include <newlib.h>
@@ -479,11 +482,18 @@ __SVFWSCANF_R (struct _reent *rptr,
/* Macro to support positional arguments */
#ifndef _NO_POS_ARGS
+
+#if _ARCH_PPC
+#define __VALIST_PTR(arg) ((va_list *)(arg))
+#else
+#define __VALIST_PTR(arg) (&(arg))
+#endif
+
# define GET_ARG(n, ap, type) \
((type) (is_pos_arg \
? (n < numargs \
? args[n] \
- : get_arg (n, &ap, &numargs, args)) \
+ : get_arg (n, __VALIST_PTR(ap), &numargs, args)) \
: (arg_index++ < numargs \
? args[n] \
: (numargs < MAX_POS_ARGS \
diff --git a/newlib/libc/stdlib/__call_atexit.c b/newlib/libc/stdlib/__call_atexit.c
index 710440389..985e720bf 100644
--- a/newlib/libc/stdlib/__call_atexit.c

View File

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

View File

@@ -49,9 +49,9 @@ case "$VERSION" in
toolchain=DEVKITPPC
;;
"3" )
GCC_VER=14.2.0
BINUTILS_VER=2.43.1
NEWLIB_VER=4.4.0.20231231
GCC_VER=15.2.0
BINUTILS_VER=2.45.1
NEWLIB_VER=4.5.0.20241231
basedir='dka64'
package=devkitA64
target=aarch64-none-elf