Compare commits

..

3 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
7 changed files with 135 additions and 55 deletions

View File

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

View File

@@ -1,8 +1,8 @@
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index c89327fdc9c..b46689a21c1 100644 index 68190dbaa27..3413eaca5b3 100644
--- a/bfd/elf-bfd.h --- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h
@@ -2008,6 +2008,14 @@ struct output_elf_obj_tdata @@ -2020,6 +2020,14 @@ struct output_elf_obj_tdata
asection *sec; asection *sec;
} package_metadata; } package_metadata;
@@ -18,10 +18,10 @@ index c89327fdc9c..b46689a21c1 100644
bfd_size_type program_header_size; bfd_size_type program_header_size;
diff --git a/bfd/elf.c b/bfd/elf.c diff --git a/bfd/elf.c b/bfd/elf.c
index 1f2b82bfe92..7e9964a15f4 100644 index dfa04c9268d..12b76d3ffb8 100644
--- a/bfd/elf.c --- a/bfd/elf.c
+++ b/bfd/elf.c +++ b/bfd/elf.c
@@ -7189,6 +7189,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)) if (!bed->s->write_shdrs_and_ehdr (abfd))
return false; return false;
@@ -37,10 +37,10 @@ index 1f2b82bfe92..7e9964a15f4 100644
if (t->o->build_id.after_write_object_contents != NULL if (t->o->build_id.after_write_object_contents != NULL
&& !(*t->o->build_id.after_write_object_contents) (abfd)) && !(*t->o->build_id.after_write_object_contents) (abfd))
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 65182f49070..3ba294ad940 100644 index e86f0280c2a..debb627a00f 100644
--- a/bfd/elfnn-aarch64.c --- a/bfd/elfnn-aarch64.c
+++ b/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, aarch64_stub_erratum_843419_veneer,
}; };
@@ -53,7 +53,7 @@ index 65182f49070..3ba294ad940 100644
struct elf_aarch64_stub_hash_entry struct elf_aarch64_stub_hash_entry
{ {
/* Base hash table entry structure. */ /* Base hash table entry structure. */
@@ -6977,11 +6983,13 @@ elfNN_aarch64_relocate_section (bfd *output_bfd, @@ -6986,11 +6992,13 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
Elf_Internal_Sym *sym; Elf_Internal_Sym *sym;
asection *sec; asection *sec;
struct elf_link_hash_entry *h; struct elf_link_hash_entry *h;
@@ -67,7 +67,7 @@ index 65182f49070..3ba294ad940 100644
char *error_message = NULL; char *error_message = NULL;
r_symndx = ELFNN_R_SYM (rel->r_info); r_symndx = ELFNN_R_SYM (rel->r_info);
@@ -7121,6 +7129,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd, @@ -7130,6 +7138,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
h, &unresolved_reloc, h, &unresolved_reloc,
save_addend, &addend, sym); save_addend, &addend, sym);
@@ -78,7 +78,7 @@ index 65182f49070..3ba294ad940 100644
switch (elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type)) switch (elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type))
{ {
case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC: case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
@@ -7144,7 +7156,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd, @@ -7153,7 +7165,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
need_relocs = need_relocs =
(!bfd_link_executable (info) || indx != 0) && (!bfd_link_executable (info) || indx != 0) &&
(h == NULL (h == NULL
@@ -87,7 +87,7 @@ index 65182f49070..3ba294ad940 100644
|| h->root.type != bfd_link_hash_undefweak); || h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL); BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7239,7 +7251,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd, @@ -7248,7 +7260,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
need_relocs = need_relocs =
(!bfd_link_executable (info) || indx != 0) && (!bfd_link_executable (info) || indx != 0) &&
(h == NULL (h == NULL
@@ -96,7 +96,7 @@ index 65182f49070..3ba294ad940 100644
|| h->root.type != bfd_link_hash_undefweak); || h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL); BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7288,7 +7300,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); bfd_vma off = symbol_tlsdesc_got_offset (input_bfd, h, r_symndx);
need_relocs = (h == NULL need_relocs = (h == NULL
@@ -105,7 +105,7 @@ index 65182f49070..3ba294ad940 100644
|| h->root.type != bfd_link_hash_undefweak); || h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL); BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7614,6 +7626,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; return false;
} }
@@ -129,7 +129,7 @@ index 65182f49070..3ba294ad940 100644
/* Adjust a symbol defined by a dynamic object and referenced by a /* Adjust a symbol defined by a dynamic object and referenced by a
regular object. The current definition is in some section of the regular object. The current definition is in some section of the
dynamic object, but we're not including those sections. We have to dynamic object, but we're not including those sections. We have to
@@ -8720,6 +8749,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_table *htab;
struct elf_aarch64_link_hash_entry *eh; struct elf_aarch64_link_hash_entry *eh;
struct elf_dyn_relocs *p; struct elf_dyn_relocs *p;
@@ -137,7 +137,7 @@ index 65182f49070..3ba294ad940 100644
/* An example of a bfd_link_hash_indirect symbol is versioned /* An example of a bfd_link_hash_indirect symbol is versioned
symbol. For example: __gxx_personality_v0(bfd_link_hash_indirect) symbol. For example: __gxx_personality_v0(bfd_link_hash_indirect)
@@ -8739,6 +8769,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; info = (struct bfd_link_info *) inf;
htab = elf_aarch64_hash_table (info); htab = elf_aarch64_hash_table (info);
@@ -148,7 +148,7 @@ index 65182f49070..3ba294ad940 100644
/* Since STT_GNU_IFUNC symbol must go through PLT, we handle it /* Since STT_GNU_IFUNC symbol must go through PLT, we handle it
here if it is defined and referenced in a non-shared object. */ here if it is defined and referenced in a non-shared object. */
if (h->type == STT_GNU_IFUNC if (h->type == STT_GNU_IFUNC
@@ -8748,7 +8782,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. /* Make sure this symbol is output as a dynamic symbol.
Undefined weak syms won't yet be marked as dynamic. */ Undefined weak syms won't yet be marked as dynamic. */
@@ -157,7 +157,7 @@ index 65182f49070..3ba294ad940 100644
&& h->root.type == bfd_link_hash_undefweak) && h->root.type == bfd_link_hash_undefweak)
{ {
if (!bfd_elf_link_record_dynamic_symbol (info, h)) if (!bfd_elf_link_record_dynamic_symbol (info, h))
@@ -8782,6 +8816,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. */ of relaxing into these from the large model PLT entries. */
s->size += htab->plt_entry_size; s->size += htab->plt_entry_size;
@@ -169,7 +169,7 @@ index 65182f49070..3ba294ad940 100644
/* We also need to make an entry in the .got.plt section, which /* We also need to make an entry in the .got.plt section, which
will be placed in the .got section by the linker script. */ will be placed in the .got section by the linker script. */
htab->root.sgotplt->size += GOT_ENTRY_SIZE; htab->root.sgotplt->size += GOT_ENTRY_SIZE;
@@ -8810,6 +8849,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; htab->variant_pcs = 1;
} }
@@ -177,7 +177,7 @@ index 65182f49070..3ba294ad940 100644
else else
{ {
h->plt.offset = (bfd_vma) - 1; h->plt.offset = (bfd_vma) - 1;
@@ -8822,9 +8862,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; h->needs_plt = 0;
} }
@@ -187,7 +187,7 @@ index 65182f49070..3ba294ad940 100644
if (h->got.refcount > 0) if (h->got.refcount > 0)
{ {
bool dyn; bool dyn;
@@ -8836,7 +8873,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. /* Make sure this symbol is output as a dynamic symbol.
Undefined weak syms won't yet be marked as dynamic. */ Undefined weak syms won't yet be marked as dynamic. */
@@ -196,7 +196,7 @@ index 65182f49070..3ba294ad940 100644
&& h->root.type == bfd_link_hash_undefweak) && h->root.type == bfd_link_hash_undefweak)
{ {
if (!bfd_elf_link_record_dynamic_symbol (info, h)) if (!bfd_elf_link_record_dynamic_symbol (info, h))
@@ -8850,7 +8887,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; h->got.offset = htab->root.sgot->size;
htab->root.sgot->size += GOT_ENTRY_SIZE; htab->root.sgot->size += GOT_ENTRY_SIZE;
@@ -205,7 +205,7 @@ index 65182f49070..3ba294ad940 100644
|| h->root.type != bfd_link_hash_undefweak) || h->root.type != bfd_link_hash_undefweak)
&& (bfd_link_pic (info) && (bfd_link_pic (info)
|| WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)) || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h))
@@ -8886,7 +8923,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; indx = h && h->dynindx != -1 ? h->dynindx : 0;
@@ -214,7 +214,7 @@ index 65182f49070..3ba294ad940 100644
|| h->root.type != bfd_link_hash_undefweak) || h->root.type != bfd_link_hash_undefweak)
&& (!bfd_link_executable (info) && (!bfd_link_executable (info)
|| indx != 0 || indx != 0
@@ -8968,7 +9005,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. */ visibility. */
if (h->dyn_relocs != NULL && h->root.type == bfd_link_hash_undefweak) if (h->dyn_relocs != NULL && h->root.type == bfd_link_hash_undefweak)
{ {
@@ -223,7 +223,7 @@ index 65182f49070..3ba294ad940 100644
|| UNDEFWEAK_NO_DYNAMIC_RELOC (info, h)) || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
h->dyn_relocs = NULL; h->dyn_relocs = NULL;
@@ -8988,7 +9025,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 symbols which turn out to need copy relocs or are not
dynamic. */ dynamic. */
@@ -234,7 +234,7 @@ index 65182f49070..3ba294ad940 100644
&& ((h->def_dynamic && ((h->def_dynamic
&& !h->def_regular) && !h->def_regular)
|| (htab->root.dynamic_sections_created || (htab->root.dynamic_sections_created
@@ -8999,6 +9038,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. */ Undefined weak syms won't yet be marked as dynamic. */
if (h->dynindx == -1 if (h->dynindx == -1
&& !h->forced_local && !h->forced_local
@@ -242,7 +242,7 @@ index 65182f49070..3ba294ad940 100644
&& h->root.type == bfd_link_hash_undefweak && h->root.type == bfd_link_hash_undefweak
&& !bfd_elf_link_record_dynamic_symbol (info, h)) && !bfd_elf_link_record_dynamic_symbol (info, h))
return false; return false;
@@ -9954,8 +9994,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) Elf_Internal_Sym *sym)
{ {
struct elf_aarch64_link_hash_table *htab; struct elf_aarch64_link_hash_table *htab;
@@ -260,7 +260,7 @@ index 65182f49070..3ba294ad940 100644
if (h->plt.offset != (bfd_vma) - 1) if (h->plt.offset != (bfd_vma) - 1)
{ {
asection *plt, *gotplt, *relplt; asection *plt, *gotplt, *relplt;
@@ -9990,7 +10039,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd, @@ -10014,7 +10063,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
abort (); abort ();
elfNN_aarch64_create_small_pltn_entry (h, htab, output_bfd, info); elfNN_aarch64_create_small_pltn_entry (h, htab, output_bfd, info);
@@ -269,7 +269,7 @@ index 65182f49070..3ba294ad940 100644
{ {
/* Mark the symbol as undefined, rather than as defined in /* Mark the symbol as undefined, rather than as defined in
the .plt section. */ the .plt section. */
@@ -10012,7 +10061,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 && elf_aarch64_hash_entry (h)->got_type == GOT_NORMAL
/* Undefined weak symbol in static PIE resolves to 0 without /* Undefined weak symbol in static PIE resolves to 0 without
any dynamic relocations. */ any dynamic relocations. */
@@ -279,7 +279,7 @@ index 65182f49070..3ba294ad940 100644
{ {
Elf_Internal_Rela rela; Elf_Internal_Rela rela;
bfd_byte *loc; bfd_byte *loc;
@@ -10680,6 +10730,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 \ #define elf_backend_init_index_section \
_bfd_elf_init_2_index_sections _bfd_elf_init_2_index_sections
@@ -290,7 +290,7 @@ index 65182f49070..3ba294ad940 100644
elfNN_aarch64_finish_dynamic_sections elfNN_aarch64_finish_dynamic_sections
diff --git a/ld/emulparams/aarch64elf.sh b/ld/emulparams/aarch64elf.sh 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 --- a/ld/emulparams/aarch64elf.sh
+++ b/ld/emulparams/aarch64elf.sh +++ b/ld/emulparams/aarch64elf.sh
@@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
@@ -300,7 +300,7 @@ index 72616b57691..42f708118fb 100644
ARCH=aarch64 ARCH=aarch64
MACHINE= MACHINE=
diff --git a/ld/emulparams/aarch64elf32.sh b/ld/emulparams/aarch64elf32.sh 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 --- a/ld/emulparams/aarch64elf32.sh
+++ b/ld/emulparams/aarch64elf32.sh +++ b/ld/emulparams/aarch64elf32.sh
@@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
@@ -310,10 +310,10 @@ index 45bf31a179a..02e0cad8699 100644
ARCH="aarch64:ilp32" ARCH="aarch64:ilp32"
MACHINE= MACHINE=
diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
index 7791aabf16d..a1486617099 100644 index 91d58d8fe5a..e1ac4a6b139 100644
--- a/ld/emultempl/aarch64elf.em --- a/ld/emultempl/aarch64elf.em
+++ b/ld/emultempl/aarch64elf.em +++ b/ld/emultempl/aarch64elf.em
@@ -458,7 +458,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}, { "no-apply-dynamic-relocs", no_argument, NULL, OPTION_NO_APPLY_DYNAMIC_RELOCS},
' '
@@ -323,7 +323,7 @@ index 7791aabf16d..a1486617099 100644
" enum sizes\n")); " enum sizes\n"));
fprintf (file, _(" --no-wchar-size-warning Don'\''t warn about objects with incompatible\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 diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
index 777f7204038..895f9ce59e6 100644 index 431205fe644..ce288649513 100644
--- a/ld/emultempl/elf.em --- a/ld/emultempl/elf.em
+++ b/ld/emultempl/elf.em +++ b/ld/emultempl/elf.em
@@ -814,6 +814,7 @@ EOF @@ -814,6 +814,7 @@ EOF
@@ -354,7 +354,7 @@ index 777f7204038..895f9ce59e6 100644
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
diff --git a/ld/ldelf.c b/ld/ldelf.c diff --git a/ld/ldelf.c b/ld/ldelf.c
index 4a1aa044e70..24025b0c5a6 100644 index f4f27fc3873..4028cbabdc7 100644
--- a/ld/ldelf.c --- a/ld/ldelf.c
+++ b/ld/ldelf.c +++ b/ld/ldelf.c
@@ -55,6 +55,9 @@ const char *ldelf_emit_note_gnu_build_id; @@ -55,6 +55,9 @@ const char *ldelf_emit_note_gnu_build_id;
@@ -462,7 +462,7 @@ index 4a1aa044e70..24025b0c5a6 100644
void void
ldelf_before_plugin_all_symbols_read (int use_libpath, int native, ldelf_before_plugin_all_symbols_read (int use_libpath, int native,
int is_linux, int is_freebsd, int is_linux, int is_freebsd,
@@ -1293,6 +1381,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 4a1aa044e70..24025b0c5a6 100644
/* Do not allow executable files to be used as inputs to the link. */ /* Do not allow executable files to be used as inputs to the link. */
diff --git a/ld/ldelf.h b/ld/ldelf.h diff --git a/ld/ldelf.h b/ld/ldelf.h
index a6498cf2758..b69da549175 100644 index e8b7c8c7eb8..0b76923d834 100644
--- a/ld/ldelf.h --- a/ld/ldelf.h
+++ b/ld/ldelf.h +++ b/ld/ldelf.h
@@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
@@ -500,10 +500,10 @@ index a6498cf2758..b69da549175 100644
extern void ldelf_finish (void); extern void ldelf_finish (void);
extern void ldelf_after_parse (void); extern void ldelf_after_parse (void);
diff --git a/ld/ldlex.h b/ld/ldlex.h diff --git a/ld/ldlex.h b/ld/ldlex.h
index b8b7d6b6829..3c9ee8d8742 100644 index c8d61478c60..a5bb71b1dc5 100644
--- a/ld/ldlex.h --- a/ld/ldlex.h
+++ b/ld/ldlex.h +++ b/ld/ldlex.h
@@ -187,6 +187,7 @@ enum option_values @@ -188,6 +188,7 @@ enum option_values
/* Used by emultempl/elf.em, emultempl/pe.em and emultempl/pep.em. */ /* Used by emultempl/elf.em, emultempl/pe.em and emultempl/pep.em. */
OPTION_BUILD_ID, OPTION_BUILD_ID,
OPTION_EXCLUDE_LIBS, OPTION_EXCLUDE_LIBS,

View File

@@ -62,7 +62,7 @@ then
--enable-lto \ --enable-lto \
--disable-tm-clone-registry \ --disable-tm-clone-registry \
--disable-__cxa_atexit \ --disable-__cxa_atexit \
--with-bugurl="https://github.com/devkitPro/buildscripts/issues" --with-pkgversion="devkitA64 release 28" \ --with-bugurl="https://github.com/devkitPro/buildscripts/issues" --with-pkgversion="devkitA64 release 29" \
$CROSS_PARAMS \ $CROSS_PARAMS \
$CROSS_GCC_PARAMS \ $CROSS_GCC_PARAMS \
$EXTRA_GCC_PARAMS \ $EXTRA_GCC_PARAMS \
@@ -145,5 +145,3 @@ then
$MAKE install || { echo "Error installing gcc stage2"; exit 1; } $MAKE install || { echo "Error installing gcc stage2"; exit 1; }
touch installed-stage2 touch installed-stage2
fi 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 \ for i in $(srcdir)/libc/sys/$(sys_dir)/sys/*.h; do \
if [ -f $$i ]; then \ if [ -f $$i ]; then \
diff --git a/newlib/configure.host b/newlib/configure.host diff --git a/newlib/configure.host b/newlib/configure.host
index ff2e51275..7ef23d5f6 100644 index ff2e51275..dfa957d55 100644
--- a/newlib/configure.host --- a/newlib/configure.host
+++ b/newlib/configure.host +++ b/newlib/configure.host
@@ -646,6 +646,14 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID @@ -646,6 +646,14 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
@@ -11041,7 +11041,7 @@ index ff2e51275..7ef23d5f6 100644
arm*-*-pe) arm*-*-pe)
syscall_dir=syscalls syscall_dir=syscalls
newlib_cflags="${newlib_cflags} -DHAVE_SYSCONF_PAGESIZE" 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" default_newlib_io_long_long="yes"
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES" newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
;; ;;
@@ -11049,6 +11049,7 @@ index ff2e51275..7ef23d5f6 100644
+ 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_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} -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" + newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections"
+ syscall_dir=syscalls + syscall_dir=syscalls
@@ -11960,7 +11961,7 @@ index d8dfdbd82..a85b5a99b 100644
return 0; return 0;
} }
diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c
index feb1fab56..7a59eb21f 100644 index feb1fab56..99ec9c458 100644
--- a/newlib/libc/stdio/vfprintf.c --- a/newlib/libc/stdio/vfprintf.c
+++ b/newlib/libc/stdio/vfprintf.c +++ b/newlib/libc/stdio/vfprintf.c
@@ -108,6 +108,8 @@ Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>, @@ -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) #if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)vfprintf.c 5.50 (Berkeley) 12/16/92";*/ /*static char *sccsid = "from: @(#)vfprintf.c 5.50 (Berkeley) 12/16/92";*/
static char *rcsid = "$Id$"; static char *rcsid = "$Id$";
@@ -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: string:
#endif #endif
sign = '\0'; sign = '\0';
@@ -11981,7 +12003,7 @@ index feb1fab56..7a59eb21f 100644
/* Behavior is undefined if the user passed a /* Behavior is undefined if the user passed a
NULL string when precision is not 0. NULL string when precision is not 0.
However, if we are not optimizing for size, However, if we are not optimizing for size,
@@ -1198,7 +1200,7 @@ string: @@ -1198,7 +1207,7 @@ string:
size = ((unsigned) prec > 6U) ? 6 : prec; size = ((unsigned) prec > 6U) ? 6 : prec;
} }
else else
@@ -11991,7 +12013,7 @@ index feb1fab56..7a59eb21f 100644
if (ch == 'S' || (flags & LONGINT)) { if (ch == 'S' || (flags & LONGINT)) {
mbstate_t ps; mbstate_t ps;
diff --git a/newlib/libc/stdio/vfscanf.c b/newlib/libc/stdio/vfscanf.c diff --git a/newlib/libc/stdio/vfscanf.c b/newlib/libc/stdio/vfscanf.c
index 71e2c3e22..bd2d635ed 100644 index 71e2c3e22..960c41608 100644
--- a/newlib/libc/stdio/vfscanf.c --- a/newlib/libc/stdio/vfscanf.c
+++ b/newlib/libc/stdio/vfscanf.c +++ b/newlib/libc/stdio/vfscanf.c
@@ -74,6 +74,8 @@ These are GNU extensions. @@ -74,6 +74,8 @@ These are GNU extensions.
@@ -12003,8 +12025,28 @@ index 71e2c3e22..bd2d635ed 100644
#include <_ansi.h> #include <_ansi.h>
#include <reent.h> #include <reent.h>
#include <newlib.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 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 --- a/newlib/libc/stdio/vfwprintf.c
+++ b/newlib/libc/stdio/vfwprintf.c +++ b/newlib/libc/stdio/vfwprintf.c
@@ -92,6 +92,9 @@ SEEALSO @@ -92,6 +92,9 @@ SEEALSO
@@ -12017,8 +12059,28 @@ index 5a5c36829..3eaca0ce6 100644
#include <newlib.h> #include <newlib.h>
#ifdef INTEGER_ONLY #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 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 --- a/newlib/libc/stdio/vfwscanf.c
+++ b/newlib/libc/stdio/vfwscanf.c +++ b/newlib/libc/stdio/vfwscanf.c
@@ -74,6 +74,9 @@ PORTABILITY @@ -74,6 +74,9 @@ PORTABILITY
@@ -12031,6 +12093,26 @@ index d2f91dde2..de80cc0c0 100644
#include <_ansi.h> #include <_ansi.h>
#include <reent.h> #include <reent.h>
#include <newlib.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 diff --git a/newlib/libc/stdlib/__call_atexit.c b/newlib/libc/stdlib/__call_atexit.c
index 710440389..985e720bf 100644 index 710440389..985e720bf 100644
--- a/newlib/libc/stdlib/__call_atexit.c --- a/newlib/libc/stdlib/__call_atexit.c

View File

@@ -101,7 +101,7 @@ then
--with-newlib \ --with-newlib \
--with-headers=../../newlib-$NEWLIB_VER/newlib/libc/include \ --with-headers=../../newlib-$NEWLIB_VER/newlib/libc/include \
--prefix=$prefix \ --prefix=$prefix \
--with-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_PARAMS \
$CROSS_GCC_PARAMS \ $CROSS_GCC_PARAMS \
$EXTRA_GCC_PARAMS \ $EXTRA_GCC_PARAMS \

View File

@@ -49,8 +49,8 @@ case "$VERSION" in
toolchain=DEVKITPPC toolchain=DEVKITPPC
;; ;;
"3" ) "3" )
GCC_VER=15.1.0 GCC_VER=15.2.0
BINUTILS_VER=2.44 BINUTILS_VER=2.45.1
NEWLIB_VER=4.5.0.20241231 NEWLIB_VER=4.5.0.20241231
basedir='dka64' basedir='dka64'
package=devkitA64 package=devkitA64