Compare commits

..

4 Commits

Author SHA1 Message Date
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
6 changed files with 2018 additions and 336 deletions

View File

@@ -2,7 +2,7 @@
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# devkitARM release 66 # devkitARM release 66
# devkitPPC release 47 # devkitPPC release 47
# devkitA64 release 27 # devkitA64 release 28
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
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 b89d3dda05d..1ad8a9c088d 100644 index c89327fdc9c..b46689a21c1 100644
--- a/bfd/elf-bfd.h --- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h
@@ -2005,6 +2005,14 @@ struct output_elf_obj_tdata @@ -2008,6 +2008,14 @@ struct output_elf_obj_tdata
asection *sec; asection *sec;
} package_metadata; } package_metadata;
@@ -18,10 +18,10 @@ index b89d3dda05d..1ad8a9c088d 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 f85f79e1e35..d27f05b92ae 100644 index 1f2b82bfe92..7e9964a15f4 100644
--- a/bfd/elf.c --- a/bfd/elf.c
+++ b/bfd/elf.c +++ b/bfd/elf.c
@@ -7166,6 +7166,14 @@ _bfd_elf_write_object_contents (bfd *abfd) @@ -7189,6 +7189,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,7 +37,7 @@ index f85f79e1e35..d27f05b92ae 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 94c9a01069b..d39880b27c4 100644 index 65182f49070..3ba294ad940 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 @@ -2441,6 +2441,12 @@ enum elf_aarch64_stub_type
@@ -53,7 +53,7 @@ index 94c9a01069b..d39880b27c4 100644
struct elf_aarch64_stub_hash_entry struct elf_aarch64_stub_hash_entry
{ {
/* Base hash table entry structure. */ /* Base hash table entry structure. */
@@ -6969,11 +6975,13 @@ elfNN_aarch64_relocate_section (bfd *output_bfd, @@ -6977,11 +6983,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 94c9a01069b..d39880b27c4 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);
@@ -7113,6 +7121,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd, @@ -7121,6 +7129,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 94c9a01069b..d39880b27c4 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:
@@ -7136,7 +7148,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd, @@ -7144,7 +7156,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 94c9a01069b..d39880b27c4 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);
@@ -7231,7 +7243,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd, @@ -7239,7 +7251,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 94c9a01069b..d39880b27c4 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);
@@ -7280,7 +7292,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd, @@ -7288,7 +7300,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 94c9a01069b..d39880b27c4 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);
@@ -7606,6 +7618,23 @@ need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh) @@ -7614,6 +7626,23 @@ need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
return false; return false;
} }
@@ -129,7 +129,7 @@ index 94c9a01069b..d39880b27c4 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
@@ -8824,6 +8853,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) @@ -8720,6 +8749,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 94c9a01069b..d39880b27c4 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)
@@ -8843,6 +8873,10 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) @@ -8739,6 +8769,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 94c9a01069b..d39880b27c4 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
@@ -8852,7 +8886,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) @@ -8748,7 +8782,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 94c9a01069b..d39880b27c4 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))
@@ -8886,6 +8920,11 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) @@ -8782,6 +8816,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 94c9a01069b..d39880b27c4 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;
@@ -8914,6 +8953,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) @@ -8810,6 +8849,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 94c9a01069b..d39880b27c4 100644
else else
{ {
h->plt.offset = (bfd_vma) - 1; h->plt.offset = (bfd_vma) - 1;
@@ -8926,9 +8966,6 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) @@ -8822,9 +8862,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 94c9a01069b..d39880b27c4 100644
if (h->got.refcount > 0) if (h->got.refcount > 0)
{ {
bool dyn; bool dyn;
@@ -8940,7 +8977,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) @@ -8836,7 +8873,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 94c9a01069b..d39880b27c4 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))
@@ -8954,7 +8991,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) @@ -8850,7 +8887,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 94c9a01069b..d39880b27c4 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))
@@ -8990,7 +9027,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) @@ -8886,7 +8923,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 94c9a01069b..d39880b27c4 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
@@ -9072,7 +9109,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) @@ -8968,7 +9005,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 94c9a01069b..d39880b27c4 100644
|| UNDEFWEAK_NO_DYNAMIC_RELOC (info, h)) || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
h->dyn_relocs = NULL; h->dyn_relocs = NULL;
@@ -9092,7 +9129,9 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) @@ -8988,7 +9025,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 94c9a01069b..d39880b27c4 100644
&& ((h->def_dynamic && ((h->def_dynamic
&& !h->def_regular) && !h->def_regular)
|| (htab->root.dynamic_sections_created || (htab->root.dynamic_sections_created
@@ -9103,6 +9142,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) @@ -8999,6 +9038,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 94c9a01069b..d39880b27c4 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;
@@ -10058,8 +10098,17 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd, @@ -9954,8 +9994,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 94c9a01069b..d39880b27c4 100644
if (h->plt.offset != (bfd_vma) - 1) if (h->plt.offset != (bfd_vma) - 1)
{ {
asection *plt, *gotplt, *relplt; asection *plt, *gotplt, *relplt;
@@ -10094,7 +10143,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd, @@ -9990,7 +10039,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 94c9a01069b..d39880b27c4 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. */
@@ -10116,7 +10165,8 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd, @@ -10012,7 +10061,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 94c9a01069b..d39880b27c4 100644
{ {
Elf_Internal_Rela rela; Elf_Internal_Rela rela;
bfd_byte *loc; bfd_byte *loc;
@@ -10766,6 +10816,9 @@ const struct elf_size_info elfNN_aarch64_size_info = @@ -10680,6 +10730,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
@@ -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 aa2859d4f73..c680dca8f86 100644 index 7791aabf16d..a1486617099 100644
--- a/ld/emultempl/aarch64elf.em --- a/ld/emultempl/aarch64elf.em
+++ b/ld/emultempl/aarch64elf.em +++ b/ld/emultempl/aarch64elf.em
@@ -368,7 +368,7 @@ PARSE_AND_LIST_LONGOPTS=' @@ -458,7 +458,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,10 +323,10 @@ index aa2859d4f73..c680dca8f86 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 863657e12f5..672974df511 100644 index 777f7204038..895f9ce59e6 100644
--- a/ld/emultempl/elf.em --- a/ld/emultempl/elf.em
+++ b/ld/emultempl/elf.em +++ b/ld/emultempl/elf.em
@@ -813,6 +813,7 @@ EOF @@ -814,6 +814,7 @@ EOF
fi fi
fragment <<EOF fragment <<EOF
{"build-id", optional_argument, NULL, OPTION_BUILD_ID}, {"build-id", optional_argument, NULL, OPTION_BUILD_ID},
@@ -334,7 +334,7 @@ index 863657e12f5..672974df511 100644
{"package-metadata", optional_argument, NULL, OPTION_PACKAGE_METADATA}, {"package-metadata", optional_argument, NULL, OPTION_PACKAGE_METADATA},
{"compress-debug-sections", required_argument, NULL, OPTION_COMPRESS_DEBUG}, {"compress-debug-sections", required_argument, NULL, OPTION_COMPRESS_DEBUG},
{"rosegment", no_argument, NULL, OPTION_ROSEGMENT}, {"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: case OPTION_NO_ROSEGMENT:
link_info.one_rosegment = false; link_info.one_rosegment = false;
break; break;
@@ -354,7 +354,7 @@ index 863657e12f5..672974df511 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 09691609fc0..5769b4aa0f9 100644 index 4a1aa044e70..24025b0c5a6 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;
@@ -367,7 +367,7 @@ index 09691609fc0..5769b4aa0f9 100644
/* These variables are required to pass information back and forth /* These variables are required to pass information back and forth
between after_open and check_needed and stat_needed and vercheck. */ 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; *save_input_bfd_tail = NULL;
} }
@@ -382,7 +382,7 @@ index 09691609fc0..5769b4aa0f9 100644
+ unsigned char *contents; + unsigned char *contents;
+ bfd_size_type size; + bfd_size_type size;
+ file_ptr position; + file_ptr position;
+
+ name = t->o->nx_module_name.name; + name = t->o->nx_module_name.name;
+ asec = t->o->nx_module_name.sec; + asec = t->o->nx_module_name.sec;
+ if (bfd_is_abs_section (asec->output_section)) + if (bfd_is_abs_section (asec->output_section))
@@ -413,7 +413,7 @@ index 09691609fc0..5769b4aa0f9 100644
+ return (bfd_seek (abfd, position, SEEK_SET) == 0 + return (bfd_seek (abfd, position, SEEK_SET) == 0
+ && bfd_write (contents, size, abfd) == size); + && bfd_write (contents, size, abfd) == size);
+} +}
+
+/* Make .nx-module-name section, and set up elf_tdata->nx_module_name. */ +/* Make .nx-module-name section, and set up elf_tdata->nx_module_name. */
+ +
+static bool +static bool
@@ -462,7 +462,7 @@ index 09691609fc0..5769b4aa0f9 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,
@@ -1289,6 +1377,24 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd, @@ -1293,6 +1381,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. */ /* 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 239194772c4..68516dbf45e 100644 index a6498cf2758..b69da549175 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 @@
@@ -497,13 +497,13 @@ index 239194772c4..68516dbf45e 100644
extern const char *ldelf_emit_note_fdo_package_metadata; extern const char *ldelf_emit_note_fdo_package_metadata;
+extern const char *ldelf_emit_nx_module_name; +extern const char *ldelf_emit_nx_module_name;
extern void ldelf_finish (void);
extern void ldelf_after_parse (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 diff --git a/ld/ldlex.h b/ld/ldlex.h
index defe3fcbbb9..30f31df990e 100644 index b8b7d6b6829..3c9ee8d8742 100644
--- a/ld/ldlex.h --- a/ld/ldlex.h
+++ b/ld/ldlex.h +++ b/ld/ldlex.h
@@ -186,6 +186,7 @@ enum option_values @@ -187,6 +187,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

@@ -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 95c91ee02be..4711542eee5 100644 index 40b50dc969e..debd0f3d3b2 100644
--- a/gcc/config.gcc --- a/gcc/config.gcc
+++ b/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" tmake_file="${tmake_file} aarch64/t-aarch64"
case $target in case $target in
aarch64-*-elf*) aarch64-*-elf*)
@@ -18,7 +18,7 @@ index 95c91ee02be..4711542eee5 100644
aarch64-*-fuchsia*) aarch64-*-fuchsia*)
tm_file="${tm_file} fuchsia.h" tm_file="${tm_file} fuchsia.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 5396da9b2d6..87235d680ad 100644 index 15cf1eb0389..aba0e9bbff9 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 @@
@@ -30,10 +30,10 @@ index 5396da9b2d6..87235d680ad 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 a05c0d3ded1..5551807e4c6 100644 index a6ca5cf016b..90470fd6c44 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
@@ -80,7 +80,8 @@ enum aarch64_tp_reg { @@ -91,7 +91,8 @@ enum aarch64_tp_reg {
AARCH64_TPIDR_EL1 = 1, AARCH64_TPIDR_EL1 = 1,
AARCH64_TPIDR_EL2 = 2, AARCH64_TPIDR_EL2 = 2,
AARCH64_TPIDR_EL3 = 3, AARCH64_TPIDR_EL3 = 3,
@@ -44,10 +44,10 @@ index a05c0d3ded1..5551807e4c6 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 1beec94629d..90a9ec580f8 100644 index 433ec975d7e..d4c3835a15a 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
@@ -21060,8 +21060,24 @@ aarch64_load_tp (rtx target) @@ -21378,8 +21378,24 @@ aarch64_load_tp (rtx target)
|| !register_operand (target, Pmode)) || !register_operand (target, Pmode))
target = gen_reg_rtx (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 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 --- a/gcc/config/aarch64/aarch64.h
+++ b/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. */ /* Check TLS Descriptors mechanism is selected. */
#define TARGET_TLS_DESC (aarch64_tls_dialect == TLS_DESCRIPTORS) #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 /* 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 dbde066f747..3e3198bf52f 100644 index 031e621c98a..0fcf0aa703f 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
@@ -7436,11 +7436,22 @@ @@ -7702,11 +7702,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))]
@@ -118,10 +118,10 @@ index dbde066f747..3e3198bf52f 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 6356c419399..a6907ed0a0b 100644 index f32d56d4ffa..7cf8d3ba3d4 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
@@ -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 EnumValue
Enum(tp_reg) String(tpidrro_el0) Value(AARCH64_TPIDRRO_EL0) Enum(tp_reg) String(tpidrro_el0) Value(AARCH64_TPIDRRO_EL0)
@@ -131,7 +131,7 @@ index 6356c419399..a6907ed0a0b 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.
@@ -329,7 +332,7 @@ TargetVariable @@ -338,7 +341,7 @@ TargetVariable
long aarch64_stack_protector_guard_offset = 0 long aarch64_stack_protector_guard_offset = 0
moutline-atomics moutline-atomics
@@ -141,10 +141,10 @@ index 6356c419399..a6907ed0a0b 100644
-param=aarch64-vect-compare-costs= -param=aarch64-vect-compare-costs=
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 78713558e7d..76c0914d8ce 100644 index 59571948479..f50c37d8b3c 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
@@ -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 $(srcdir)/config/aarch64/aarch64-ldp-fusion.cc
comma=, comma=,
@@ -238,26 +238,25 @@ 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 42563982e42..923dc198a7e 100644 index e083f49f3da..1b81e7e88ce 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
@@ -93,7 +93,10 @@ mingw32_gt_pch_get_address (size_t size, int) @@ -94,6 +94,10 @@ mingw32_gt_pch_get_address (size_t size, int)
for NT system dlls is in 0x70000000 to 0x78000000 range.
If we allocate at bottom we need to reserve the address as early If we allocate at bottom we need to reserve the address as early
as possible and at the same point in each invocation. */ as possible and at the same point in each invocation. */
-
+
+#if __MINGW64__ +#if __MINGW64__
+ size = UINT64_C(64 * 1024 * 1024 * 1024); + size = UINT64_C(64 * 1024 * 1024 * 1024);
+#endif +#endif
+
res = VirtualAlloc (NULL, size, res = VirtualAlloc (NULL, size,
MEM_RESERVE | MEM_TOP_DOWN, MEM_RESERVE | MEM_TOP_DOWN,
PAGE_NOACCESS); PAGE_NOACCESS);
diff --git a/gcc/gcc.cc b/gcc/gcc.cc diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index 728332b8153..47fc03eb8c8 100644 index 4fd87f2c4a1..6af06f7b032 100644
--- a/gcc/gcc.cc --- a/gcc/gcc.cc
+++ b/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
#endif #endif
@@ -269,7 +268,7 @@ index 728332b8153..47fc03eb8c8 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 \
@@ -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 *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;
@@ -277,7 +276,7 @@ index 728332b8153..47fc03eb8c8 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;
@@ -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 ("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),
@@ -299,7 +298,7 @@ index ea689a353c8..98f9d9b21b7 100755
;; ;;
*) *)
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
index 38d3859a73c..f97358d9787 100644 index b9767cd1eee..362689c9f0b 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)
@@ -312,7 +311,7 @@ index 38d3859a73c..f97358d9787 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 33c2d8ff630..2a0a9c1e87e 100644 index 557417997f4..1269ece007f 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
@@ -325,10 +324,10 @@ index 33c2d8ff630..2a0a9c1e87e 100644
#define GTHREAD_USE_WEAK 0 #define GTHREAD_USE_WEAK 0
#endif #endif
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 422a0f4bd0a..ee09ada9170 100644 index 537774c2668..76da4f35b96 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
@@ -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/\(${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' \
@@ -337,10 +336,10 @@ index 422a0f4bd0a..ee09ada9170 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 9fd4ab4848c..beea48941a3 100644 index 7b96b2207f8..817de242772 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
@@ -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/\(${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' \

File diff suppressed because one or more lines are too long

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 27" \ --with-bugurl="https://github.com/devkitPro/buildscripts/issues" --with-pkgversion="devkitA64 release 28" \
$CROSS_PARAMS \ $CROSS_PARAMS \
$CROSS_GCC_PARAMS \ $CROSS_GCC_PARAMS \
$EXTRA_GCC_PARAMS \ $EXTRA_GCC_PARAMS \

View File

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