mirror of
https://github.com/devkitPro/buildscripts.git
synced 2026-08-21 01:44:16 -05:00
Compare commits
8 Commits
devkitA64_
...
devkitARM_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d87636f62 | ||
|
|
b8319d6d2a | ||
|
|
74e2c3ebc4 | ||
|
|
1118d68a97 | ||
|
|
5c0124ec01 | ||
|
|
329ce986eb | ||
|
|
73d0dafa21 | ||
|
|
5fb027fd3b |
@@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# devkitARM release 66
|
# devkitARM release 67
|
||||||
# devkitPPC release 47
|
# devkitPPC release 48
|
||||||
# devkitA64 release 28
|
# devkitA64 release 29
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
if [ 0 -eq 1 ] ; then
|
if [ 0 -eq 1 ] ; then
|
||||||
@@ -31,6 +31,7 @@ DKARM_RULES_VER=1.6.1
|
|||||||
DKARM_CRTLS_VER=1.2.7
|
DKARM_CRTLS_VER=1.2.7
|
||||||
|
|
||||||
DKPPC_RULES_VER=1.2.1
|
DKPPC_RULES_VER=1.2.1
|
||||||
|
DKPPC_CRTLS_VER=1.0.0
|
||||||
|
|
||||||
DKA64_RULES_VER=1.1.1
|
DKA64_RULES_VER=1.1.1
|
||||||
|
|
||||||
@@ -195,7 +196,7 @@ if [ "$BUILD_DKPRO_SKIP_CRTLS" != "1" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $VERSION -eq 2 ]; then
|
if [ $VERSION -eq 2 ]; then
|
||||||
archives="devkitppc-rules-$DKPPC_RULES_VER.tar.gz $archives"
|
archives="devkitppc-crtls-$DKPPC_CRTLS_VER.tar.gz devkitppc-rules-$DKPPC_RULES_VER.tar.gz $archives"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $VERSION -eq 3 ]; then
|
if [ $VERSION -eq 3 ]; then
|
||||||
|
|||||||
@@ -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,
|
||||||
@@ -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
|
|
||||||
|
|||||||
593
dkarm-eabi/patches/gcc-15.2.0.patch
Normal file
593
dkarm-eabi/patches/gcc-15.2.0.patch
Normal file
@@ -0,0 +1,593 @@
|
|||||||
|
diff --git a/gcc/config.gcc b/gcc/config.gcc
|
||||||
|
index 087aaa7be37..63b52b3571b 100644
|
||||||
|
--- a/gcc/config.gcc
|
||||||
|
+++ b/gcc/config.gcc
|
||||||
|
@@ -1508,6 +1508,11 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
|
||||||
|
tm_file="$tm_file newlib-stdint.h"
|
||||||
|
tmake_file="${tmake_file} arm/t-bpabi"
|
||||||
|
use_gcc_stdint=wrap
|
||||||
|
+ tm_file="${tm_file} devkitpro.h"
|
||||||
|
+ extra_options="${extra_options} devkitpro.opt"
|
||||||
|
+ case ${enable_threads} in
|
||||||
|
+ "" | yes | posix) thread_file='posix' ;;
|
||||||
|
+ esac
|
||||||
|
;;
|
||||||
|
arm*-*-fuchsia*)
|
||||||
|
tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
|
||||||
|
diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
|
||||||
|
index 1939d55b9fd..62d425cb596 100644
|
||||||
|
--- a/gcc/config/arm/arm-cpus.in
|
||||||
|
+++ b/gcc/config/arm/arm-cpus.in
|
||||||
|
@@ -416,7 +416,7 @@ begin arch armv6k
|
||||||
|
tune for mpcore
|
||||||
|
tune flags CO_PROC
|
||||||
|
base 6K
|
||||||
|
- isa ARMv6k
|
||||||
|
+ isa ARMv6k VFPv2 FP_DBL
|
||||||
|
option fp add VFPv2 FP_DBL
|
||||||
|
optalias vfpv2 fp
|
||||||
|
option nofp remove ALL_FP
|
||||||
|
diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf
|
||||||
|
index fdfdf9c580b..add129f0a62 100644
|
||||||
|
--- a/gcc/config/arm/t-arm-elf
|
||||||
|
+++ b/gcc/config/arm/t-arm-elf
|
||||||
|
@@ -16,120 +16,22 @@
|
||||||
|
# along with GCC; see the file COPYING3. If not see
|
||||||
|
# <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
-# Build a very basic set of libraries that should cater for most cases.
|
||||||
|
-
|
||||||
|
-# Single-precision floating-point is NOT supported; we don't build a
|
||||||
|
-# suitable library for that. Use the rm-profile config in that case.
|
||||||
|
-
|
||||||
|
-# PART 1 - Useful groups of options
|
||||||
|
-
|
||||||
|
-dp_fpus := vfp vfpv2 vfpv3 vfpv3-fp16 vfpv3-d16 vfpv3-d16-fp16 \
|
||||||
|
- neon neon-vfpv3 neon-fp16 vfpv4 neon-vfpv4 vfpv4-d16 \
|
||||||
|
- fpv5-d16 fp-armv8 neon-fp-armv8 crypto-neon-fp-armv8 \
|
||||||
|
- vfp3
|
||||||
|
-
|
||||||
|
-sp_fpus := vfpv3xd vfpv3xd-fp16 fpv4-sp-d16 fpv5-sp-d16
|
||||||
|
-
|
||||||
|
-v7a_fps := vfpv3 vfpv3-fp16 vfpv4 simd neon-fp16 neon-vfpv4
|
||||||
|
-v7ve_fps := vfpv3-d16 vfpv3 vfpv3-d16-fp16 vfpv3-fp16 vfpv4 neon \
|
||||||
|
- neon-fp16 simd
|
||||||
|
-
|
||||||
|
-# Not all these permutations exist for all architecture variants, but
|
||||||
|
-# it seems to work ok.
|
||||||
|
-v8_fps := simd fp16 crypto fp16+crypto dotprod fp16fml
|
||||||
|
-
|
||||||
|
-v9_fps := simd fp16 crypto fp16+crypto dotprod fp16fml
|
||||||
|
-
|
||||||
|
-# We don't do anything special with these. Pre-v4t probably doesn't work.
|
||||||
|
-all_early_nofp := armv4 armv4t armv5t
|
||||||
|
-
|
||||||
|
-all_early_arch := armv5tej armv6 armv6j armv6k armv6z armv6kz \
|
||||||
|
- armv6zk armv6t2 iwmmxt iwmmxt2
|
||||||
|
-
|
||||||
|
-all_v7_a_r := armv7-a armv7ve armv7-r
|
||||||
|
-
|
||||||
|
-all_v8_archs := armv8-a armv8-a+crc armv8.1-a armv8.2-a armv8.3-a armv8.4-a \
|
||||||
|
- armv8.5-a armv8.6-a
|
||||||
|
-
|
||||||
|
-all_v9_archs := armv9-a
|
||||||
|
-
|
||||||
|
-# No floating point variants, require thumb1 softfp
|
||||||
|
-all_nofp_t := armv6-m armv6s-m armv8-m.base
|
||||||
|
-
|
||||||
|
-all_nofp_t2 := armv7-m
|
||||||
|
-
|
||||||
|
-all_sp_only := armv7e-m armv8-m.main
|
||||||
|
-
|
||||||
|
-MULTILIB_OPTIONS =
|
||||||
|
-MULTILIB_DIRNAMES =
|
||||||
|
+MULTILIB_OPTIONS = mthumb mbig-endian march=armv6k march=armv6s-m mfloat-abi=hard mfloat-abi=soft
|
||||||
|
+MULTILIB_DIRNAMES = thumb be armv6k v6-m fpu nofp
|
||||||
|
MULTILIB_EXCEPTIONS =
|
||||||
|
MULTILIB_MATCHES =
|
||||||
|
-MULTILIB_REUSE =
|
||||||
|
-
|
||||||
|
-# PART 2 - multilib build rules
|
||||||
|
-
|
||||||
|
-MULTILIB_OPTIONS += marm/mthumb
|
||||||
|
-MULTILIB_DIRNAMES += arm thumb
|
||||||
|
-
|
||||||
|
-MULTILIB_OPTIONS += mfpu=auto
|
||||||
|
-MULTILIB_DIRNAMES += autofp
|
||||||
|
-
|
||||||
|
-MULTILIB_OPTIONS += march=armv5te+fp/march=armv7+fp
|
||||||
|
-MULTILIB_DIRNAMES += v5te v7
|
||||||
|
-
|
||||||
|
-MULTILIB_OPTIONS += mfloat-abi=hard
|
||||||
|
-MULTILIB_DIRNAMES += fpu
|
||||||
|
-
|
||||||
|
-# Build a total of 4 library variants (base options plus the following):
|
||||||
|
-MULTILIB_REQUIRED += mthumb
|
||||||
|
-MULTILIB_REQUIRED += marm/mfpu=auto/march=armv5te+fp/mfloat-abi=hard
|
||||||
|
-MULTILIB_REQUIRED += mthumb/mfpu=auto/march=armv7+fp/mfloat-abi=hard
|
||||||
|
-
|
||||||
|
-# PART 3 - Match rules
|
||||||
|
-
|
||||||
|
-# Map all supported FPUs onto mfpu=auto
|
||||||
|
-MULTILIB_MATCHES += $(foreach FPU, $(dp_fpus), \
|
||||||
|
- mfpu?auto=mfpu?$(FPU))
|
||||||
|
-
|
||||||
|
-MULTILIB_MATCHES += march?armv5te+fp=march?armv5te
|
||||||
|
-
|
||||||
|
-MULTILIB_MATCHES += $(foreach ARCH, $(all_early_arch), \
|
||||||
|
- march?armv5te+fp=march?$(ARCH) \
|
||||||
|
- march?armv5te+fp=march?$(ARCH)+fp)
|
||||||
|
-
|
||||||
|
-MULTILIB_MATCHES += march?armv7+fp=march?armv7
|
||||||
|
-
|
||||||
|
-MULTILIB_MATCHES += $(foreach FPARCH, $(v7a_fps), \
|
||||||
|
- march?armv7+fp=march?armv7-a+$(FPARCH))
|
||||||
|
-
|
||||||
|
-MULTILIB_MATCHES += $(foreach FPARCH, $(v7ve_fps), \
|
||||||
|
- march?armv7+fp=march?armv7ve+$(FPARCH))
|
||||||
|
-
|
||||||
|
-MULTILIB_MATCHES += $(foreach ARCH, $(all_v7_a_r), \
|
||||||
|
- march?armv7+fp=march?$(ARCH) \
|
||||||
|
- march?armv7+fp=march?$(ARCH)+fp)
|
||||||
|
|
||||||
|
-MULTILIB_MATCHES += $(foreach ARCH, $(all_v8_archs), \
|
||||||
|
- march?armv7+fp=march?$(ARCH) \
|
||||||
|
- $(foreach FPARCH, $(v8_fps), \
|
||||||
|
- march?armv7+fp=march?$(ARCH)+$(FPARCH)))
|
||||||
|
+MULTILIB_REQUIRED = mthumb mbig-endian mthumb/mbig-endian march=armv6k/mfloat-abi=hard mthumb/march=armv6s-m/mfloat-abi=soft
|
||||||
|
|
||||||
|
-MULTILIB_MATCHES += $(foreach ARCH, $(all_v9_archs), \
|
||||||
|
- march?armv7+fp=march?$(ARCH) \
|
||||||
|
- $(foreach FPARCH, $(v9_fps), \
|
||||||
|
- march?armv7+fp=march?$(ARCH)+$(FPARCH)))
|
||||||
|
|
||||||
|
-MULTILIB_MATCHES += $(foreach ARCH, armv7e-m armv8-m.mainline, \
|
||||||
|
- march?armv7+fp=march?$(ARCH)+fp.dp)
|
||||||
|
+MULTILIB_MATCHES += march?armv6k=mtune?mpcore
|
||||||
|
+MULTILIB_MATCHES += march?armv6k=mcpu?mpcore
|
||||||
|
|
||||||
|
-# PART 4 - Reuse rules
|
||||||
|
+MULTILIB_MATCHES += march?armv6s-m=mcpu?cortex-m0
|
||||||
|
+MULTILIB_MATCHES += march?armv6s-m=mtune?cortex-m0
|
||||||
|
+MULTILIB_MATCHES += march?armv6s-m=mcpu?cortex-m0plus
|
||||||
|
+MULTILIB_MATCHES += march?armv6s-m=mtune?cortex-m0plus
|
||||||
|
+MULTILIB_MATCHES += march?armv6s-m=mcpu?cortex-m1
|
||||||
|
+MULTILIB_MATCHES += march?armv6s-m=mtune?cortex-m1
|
||||||
|
|
||||||
|
-MULTILIB_REUSE += mthumb=mthumb/mfpu.auto
|
||||||
|
-MULTILIB_REUSE += mthumb=mthumb/mfpu.auto/march.armv5te+fp
|
||||||
|
-MULTILIB_REUSE += mthumb=mthumb/march.armv5te+fp
|
||||||
|
-MULTILIB_REUSE += marm/mfpu.auto/march.armv5te+fp/mfloat-abi.hard=marm/march.armv5te+fp/mfloat-abi.hard
|
||||||
|
-MULTILIB_REUSE += marm/mfpu.auto/march.armv5te+fp/mfloat-abi.hard=march.armv5te+fp/mfloat-abi.hard
|
||||||
|
-MULTILIB_REUSE += marm/mfpu.auto/march.armv5te+fp/mfloat-abi.hard=mfpu.auto/march.armv5te+fp/mfloat-abi.hard
|
||||||
|
-MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=mthumb/march.armv7+fp/mfloat-abi.hard
|
||||||
|
-MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=mfpu.auto/march.armv7+fp/mfloat-abi.hard
|
||||||
|
-MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=march.armv7+fp/mfloat-abi.hard
|
||||||
|
+MULTILIB_REUSE = mthumb/march.armv6s-m/mfloat-abi.soft=mthumb/march.armv6s-m
|
||||||
|
diff --git a/gcc/config/arm/unknown-elf.h b/gcc/config/arm/unknown-elf.h
|
||||||
|
index ab3918283d8..c14a1955cad 100644
|
||||||
|
--- a/gcc/config/arm/unknown-elf.h
|
||||||
|
+++ b/gcc/config/arm/unknown-elf.h
|
||||||
|
@@ -29,7 +29,7 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Now we define the strings used to build the spec file. */
|
||||||
|
-#define UNKNOWN_ELF_STARTFILE_SPEC " crti%O%s crtbegin%O%s crt0%O%s"
|
||||||
|
+#define UNKNOWN_ELF_STARTFILE_SPEC " crti%O%s crtbegin%O%s"
|
||||||
|
|
||||||
|
#undef STARTFILE_SPEC
|
||||||
|
#define STARTFILE_SPEC \
|
||||||
|
@@ -93,4 +93,5 @@
|
||||||
|
udivmoddi4, which will depend on the exception unwind routines,
|
||||||
|
which will depend on abort, which is defined in libc. */
|
||||||
|
#undef LINK_GCC_C_SEQUENCE_SPEC
|
||||||
|
-#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %{!nolibc:%L} --end-group"
|
||||||
|
+#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L %(libgloss) --end-group"
|
||||||
|
+
|
||||||
|
diff --git a/gcc/config/devkitpro.h b/gcc/config/devkitpro.h
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..180a9ea8553
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/config/devkitpro.h
|
||||||
|
@@ -0,0 +1,27 @@
|
||||||
|
+/* Definitions for devkitPro toolchains.
|
||||||
|
+ Copyright (C) 2016-2018 Free Software Foundation, Inc.
|
||||||
|
+ This file is part of GCC.
|
||||||
|
+ GCC is free software; you can redistribute it and/or modify it
|
||||||
|
+ under the terms of the GNU General Public License as published
|
||||||
|
+ by the Free Software Foundation; either version 3, or (at your
|
||||||
|
+ option) any later version.
|
||||||
|
+ GCC is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||||
|
+ License for more details.
|
||||||
|
+ Under Section 7 of GPL version 3, you are granted additional
|
||||||
|
+ permissions described in the GCC Runtime Library Exception, version
|
||||||
|
+ 3.1, as published by the Free Software Foundation.
|
||||||
|
+ You should have received a copy of the GNU General Public License and
|
||||||
|
+ a copy of the GCC Runtime Library Exception along with this program;
|
||||||
|
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
+ <http://www.gnu.org/licenses/>. */
|
||||||
|
+
|
||||||
|
+#undef TARGET_OS_CPP_BUILTINS
|
||||||
|
+#define TARGET_OS_CPP_BUILTINS() \
|
||||||
|
+ do { \
|
||||||
|
+ builtin_define ("__DEVKITPRO__"); \
|
||||||
|
+ builtin_define ("__DEVKITARM__"); \
|
||||||
|
+ } while (0)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
diff --git a/gcc/config/devkitpro.opt b/gcc/config/devkitpro.opt
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..9acbbf9d27c
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/config/devkitpro.opt
|
||||||
|
@@ -0,0 +1,29 @@
|
||||||
|
+; Options for devkitPro toolchains.
|
||||||
|
+
|
||||||
|
+; Copyright (C) 2011-2018 Free Software Foundation, Inc.
|
||||||
|
+;
|
||||||
|
+; This file is part of GCC.
|
||||||
|
+;
|
||||||
|
+; GCC is free software; you can redistribute it and/or modify it under
|
||||||
|
+; the terms of the GNU General Public License as published by the Free
|
||||||
|
+; Software Foundation; either version 3, or (at your option) any later
|
||||||
|
+; version.
|
||||||
|
+;
|
||||||
|
+; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
+; WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
+; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
+; for more details.
|
||||||
|
+;
|
||||||
|
+; You should have received a copy of the GNU General Public License
|
||||||
|
+; along with GCC; see the file COPYING3. If not see
|
||||||
|
+; <http://www.gnu.org/licenses/>.
|
||||||
|
+
|
||||||
|
+; See the GCC internals manual (options.texi) for a description of
|
||||||
|
+; this file's format.
|
||||||
|
+
|
||||||
|
+; Please try to keep this file in ASCII collating order.
|
||||||
|
+
|
||||||
|
+pthread
|
||||||
|
+Driver
|
||||||
|
+
|
||||||
|
+; This comment is to ensure we retain the blank line above.
|
||||||
|
diff --git a/gcc/config/devkitpro.opt.urls b/gcc/config/devkitpro.opt.urls
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000000..ab7b466aa71
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gcc/config/devkitpro.opt.urls
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+; Autogenerated by regenerate-opt-urls.py from gcc/config/devkitpro.opt and generated HTML
|
||||||
|
diff --git a/gcc/config/i386/host-mingw32.cc b/gcc/config/i386/host-mingw32.cc
|
||||||
|
index e083f49f3da..1b81e7e88ce 100644
|
||||||
|
--- a/gcc/config/i386/host-mingw32.cc
|
||||||
|
+++ b/gcc/config/i386/host-mingw32.cc
|
||||||
|
@@ -94,6 +94,10 @@ mingw32_gt_pch_get_address (size_t size, int)
|
||||||
|
If we allocate at bottom we need to reserve the address as early
|
||||||
|
as possible and at the same point in each invocation. */
|
||||||
|
|
||||||
|
+#if __MINGW64__
|
||||||
|
+ size = UINT64_C(64 * 1024 * 1024 * 1024);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
res = VirtualAlloc (NULL, size,
|
||||||
|
MEM_RESERVE | MEM_TOP_DOWN,
|
||||||
|
PAGE_NOACCESS);
|
||||||
|
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
|
||||||
|
index 4fd87f2c4a1..6af06f7b032 100644
|
||||||
|
--- a/gcc/gcc.cc
|
||||||
|
+++ b/gcc/gcc.cc
|
||||||
|
@@ -888,6 +888,11 @@ proper position among the other output files. */
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifndef LIBGLOSS_SPEC
|
||||||
|
+# define LIBGLOSS_SPEC "-lsysbase"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+
|
||||||
|
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */
|
||||||
|
#ifndef STARTFILE_SPEC
|
||||||
|
#define STARTFILE_SPEC \
|
||||||
|
@@ -1215,6 +1220,7 @@ static const char *link_spec = LINK_SPEC;
|
||||||
|
static const char *lib_spec = LIB_SPEC;
|
||||||
|
static const char *link_gomp_spec = "";
|
||||||
|
static const char *libgcc_spec = LIBGCC_SPEC;
|
||||||
|
+static const char *libgloss_spec = LIBGLOSS_SPEC;
|
||||||
|
static const char *endfile_spec = ENDFILE_SPEC;
|
||||||
|
static const char *startfile_spec = STARTFILE_SPEC;
|
||||||
|
static const char *linker_name_spec = LINKER_NAME;
|
||||||
|
@@ -1727,6 +1733,7 @@ static struct spec_list static_specs[] =
|
||||||
|
INIT_STATIC_SPEC ("lib", &lib_spec),
|
||||||
|
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
|
||||||
|
INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
|
||||||
|
+ INIT_STATIC_SPEC ("libgloss", &libgloss_spec),
|
||||||
|
INIT_STATIC_SPEC ("startfile", &startfile_spec),
|
||||||
|
INIT_STATIC_SPEC ("cross_compile", &cross_compile),
|
||||||
|
INIT_STATIC_SPEC ("version", &compiler_version),
|
||||||
|
diff --git a/libcc1/configure b/libcc1/configure
|
||||||
|
index ea689a353c8..98f9d9b21b7 100755
|
||||||
|
--- a/libcc1/configure
|
||||||
|
+++ b/libcc1/configure
|
||||||
|
@@ -5119,7 +5119,7 @@ else
|
||||||
|
# Adding the `sed 1q' prevents false positives on HP-UX, which says:
|
||||||
|
# nm: unknown option "B" ignored
|
||||||
|
case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
|
||||||
|
- *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
|
||||||
|
+ $tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
diff --git a/libgcc/config/arm/t-bpabi b/libgcc/config/arm/t-bpabi
|
||||||
|
index dddddc7c444..c2502597953 100644
|
||||||
|
--- a/libgcc/config/arm/t-bpabi
|
||||||
|
+++ b/libgcc/config/arm/t-bpabi
|
||||||
|
@@ -17,4 +17,4 @@ SHLIB_MAPFILES += $(srcdir)/config/arm/libgcc-bpabi.ver
|
||||||
|
# On ARM, specifying -fnon-call-exceptions will needlessly pull in
|
||||||
|
# the unwinder in simple programs which use 64-bit division. Omitting
|
||||||
|
# the option is safe.
|
||||||
|
-LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
|
||||||
|
+LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions
|
||||||
|
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
|
||||||
|
index b9767cd1eee..362689c9f0b 100644
|
||||||
|
--- a/libgcc/crtstuff.c
|
||||||
|
+++ b/libgcc/crtstuff.c
|
||||||
|
@@ -326,7 +326,7 @@ register_tm_clones (void)
|
||||||
|
|
||||||
|
#ifdef OBJECT_FORMAT_ELF
|
||||||
|
|
||||||
|
-#if DEFAULT_USE_CXA_ATEXIT
|
||||||
|
+#if 1 /* DEFAULT_USE_CXA_ATEXIT */
|
||||||
|
/* Declare the __dso_handle variable. It should have a unique value
|
||||||
|
in every shared-object; in a main program its value is zero. The
|
||||||
|
object should in any case be protected. This means the instance
|
||||||
|
diff --git a/libgcc/gthr.h b/libgcc/gthr.h
|
||||||
|
index 557417997f4..cb223aa43fc 100644
|
||||||
|
--- a/libgcc/gthr.h
|
||||||
|
+++ b/libgcc/gthr.h
|
||||||
|
@@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
/* The pe-coff weak support isn't fully compatible to ELF's weak.
|
||||||
|
For static libraries it might would work, but as we need to deal
|
||||||
|
with shared versions too, we disable it for mingw-targets. */
|
||||||
|
-#ifdef __MINGW32__
|
||||||
|
+#if defined( __MINGW32__) || defined(__DEVKITARM__)
|
||||||
|
#undef GTHREAD_USE_WEAK
|
||||||
|
#define GTHREAD_USE_WEAK 0
|
||||||
|
#endif
|
||||||
|
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
|
||||||
|
index 819a1d82876..d81e6057c5b 100755
|
||||||
|
--- a/libstdc++-v3/configure
|
||||||
|
+++ b/libstdc++-v3/configure
|
||||||
|
@@ -893,6 +893,7 @@ infodir
|
||||||
|
docdir
|
||||||
|
oldincludedir
|
||||||
|
includedir
|
||||||
|
+runstatedir
|
||||||
|
localstatedir
|
||||||
|
sharedstatedir
|
||||||
|
sysconfdir
|
||||||
|
@@ -1027,6 +1028,7 @@ datadir='${datarootdir}'
|
||||||
|
sysconfdir='${prefix}/etc'
|
||||||
|
sharedstatedir='${prefix}/com'
|
||||||
|
localstatedir='${prefix}/var'
|
||||||
|
+runstatedir='${localstatedir}/run'
|
||||||
|
includedir='${prefix}/include'
|
||||||
|
oldincludedir='/usr/include'
|
||||||
|
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
|
||||||
|
@@ -1279,6 +1281,15 @@ do
|
||||||
|
| -silent | --silent | --silen | --sile | --sil)
|
||||||
|
silent=yes ;;
|
||||||
|
|
||||||
|
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
|
||||||
|
+ | --runstate | --runstat | --runsta | --runst | --runs \
|
||||||
|
+ | --run | --ru | --r)
|
||||||
|
+ ac_prev=runstatedir ;;
|
||||||
|
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
|
||||||
|
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
|
||||||
|
+ | --run=* | --ru=* | --r=*)
|
||||||
|
+ runstatedir=$ac_optarg ;;
|
||||||
|
+
|
||||||
|
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
|
||||||
|
ac_prev=sbindir ;;
|
||||||
|
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
|
||||||
|
@@ -1416,7 +1427,7 @@ fi
|
||||||
|
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
|
||||||
|
datadir sysconfdir sharedstatedir localstatedir includedir \
|
||||||
|
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
|
||||||
|
- libdir localedir mandir
|
||||||
|
+ libdir localedir mandir runstatedir
|
||||||
|
do
|
||||||
|
eval ac_val=\$$ac_var
|
||||||
|
# Remove trailing slashes.
|
||||||
|
@@ -1569,6 +1580,7 @@ Fine tuning of the installation directories:
|
||||||
|
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
|
||||||
|
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
|
||||||
|
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
|
||||||
|
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
|
||||||
|
--libdir=DIR object code libraries [EPREFIX/lib]
|
||||||
|
--includedir=DIR C header files [PREFIX/include]
|
||||||
|
--oldincludedir=DIR C header files for non-gcc [/usr/include]
|
||||||
|
@@ -5080,7 +5092,7 @@ else
|
||||||
|
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
|
since some C++ compilers masquerading as C compilers
|
||||||
|
incorrectly reject 9223372036854775807. */
|
||||||
|
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
|
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
||||||
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||||
|
&& LARGE_OFF_T % 2147483647 == 1)
|
||||||
|
? 1 : -1];
|
||||||
|
@@ -5126,7 +5138,7 @@ else
|
||||||
|
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
|
since some C++ compilers masquerading as C compilers
|
||||||
|
incorrectly reject 9223372036854775807. */
|
||||||
|
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
|
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
||||||
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||||
|
&& LARGE_OFF_T % 2147483647 == 1)
|
||||||
|
? 1 : -1];
|
||||||
|
@@ -5150,7 +5162,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
|
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
|
since some C++ compilers masquerading as C compilers
|
||||||
|
incorrectly reject 9223372036854775807. */
|
||||||
|
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
|
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
||||||
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||||
|
&& LARGE_OFF_T % 2147483647 == 1)
|
||||||
|
? 1 : -1];
|
||||||
|
@@ -5195,7 +5207,7 @@ else
|
||||||
|
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
|
since some C++ compilers masquerading as C compilers
|
||||||
|
incorrectly reject 9223372036854775807. */
|
||||||
|
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
|
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
||||||
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||||
|
&& LARGE_OFF_T % 2147483647 == 1)
|
||||||
|
? 1 : -1];
|
||||||
|
@@ -5219,7 +5231,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
|
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
|
since some C++ compilers masquerading as C compilers
|
||||||
|
incorrectly reject 9223372036854775807. */
|
||||||
|
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
|
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
|
||||||
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||||
|
&& LARGE_OFF_T % 2147483647 == 1)
|
||||||
|
? 1 : -1];
|
||||||
|
@@ -12280,7 +12292,7 @@ else
|
||||||
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
|
lt_status=$lt_dlunknown
|
||||||
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
|
-#line 12283 "configure"
|
||||||
|
+#line 12295 "configure"
|
||||||
|
#include "confdefs.h"
|
||||||
|
|
||||||
|
#if HAVE_DLFCN_H
|
||||||
|
@@ -12386,7 +12398,7 @@ else
|
||||||
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
|
lt_status=$lt_dlunknown
|
||||||
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
|
-#line 12389 "configure"
|
||||||
|
+#line 12401 "configure"
|
||||||
|
#include "confdefs.h"
|
||||||
|
|
||||||
|
#if HAVE_DLFCN_H
|
||||||
|
@@ -16182,7 +16194,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; }
|
||||||
|
# Fake what AC_TRY_COMPILE does.
|
||||||
|
|
||||||
|
cat > conftest.$ac_ext << EOF
|
||||||
|
-#line 16185 "configure"
|
||||||
|
+#line 16197 "configure"
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
typedef bool atomic_type;
|
||||||
|
@@ -16217,7 +16229,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; }
|
||||||
|
rm -f conftest*
|
||||||
|
|
||||||
|
cat > conftest.$ac_ext << EOF
|
||||||
|
-#line 16220 "configure"
|
||||||
|
+#line 16232 "configure"
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
typedef short atomic_type;
|
||||||
|
@@ -16252,7 +16264,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; }
|
||||||
|
rm -f conftest*
|
||||||
|
|
||||||
|
cat > conftest.$ac_ext << EOF
|
||||||
|
-#line 16255 "configure"
|
||||||
|
+#line 16267 "configure"
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
// NB: _Atomic_word not necessarily int.
|
||||||
|
@@ -16288,7 +16300,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
|
||||||
|
rm -f conftest*
|
||||||
|
|
||||||
|
cat > conftest.$ac_ext << EOF
|
||||||
|
-#line 16291 "configure"
|
||||||
|
+#line 16303 "configure"
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
typedef long long atomic_type;
|
||||||
|
@@ -16445,7 +16457,7 @@ $as_echo "mutex" >&6; }
|
||||||
|
# unnecessary for this test.
|
||||||
|
|
||||||
|
cat > conftest.$ac_ext << EOF
|
||||||
|
-#line 16448 "configure"
|
||||||
|
+#line 16460 "configure"
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
_Decimal32 d1;
|
||||||
|
@@ -16487,7 +16499,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
|
||||||
|
# unnecessary for this test.
|
||||||
|
|
||||||
|
cat > conftest.$ac_ext << EOF
|
||||||
|
-#line 16490 "configure"
|
||||||
|
+#line 16502 "configure"
|
||||||
|
template<typename T1, typename T2>
|
||||||
|
struct same
|
||||||
|
{ typedef T2 type; };
|
||||||
|
@@ -28602,6 +28614,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
|
|
||||||
|
$as_echo "#define HAVE_MEMALIGN 1" >>confdefs.h
|
||||||
|
|
||||||
|
+ $as_echo "#define HAVE_ALIGNED_ALLOC 1" >>confdefs.h
|
||||||
|
+
|
||||||
|
|
||||||
|
case "${target}" in
|
||||||
|
*-rtems*)
|
||||||
|
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
|
||||||
|
index a6c01b29e94..a8fb1200c8b 100644
|
||||||
|
--- a/libstdc++-v3/configure.ac
|
||||||
|
+++ b/libstdc++-v3/configure.ac
|
||||||
|
@@ -386,6 +386,7 @@ dnl # rather than hardcoding that information.
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_DEFINE(HAVE_MEMALIGN)
|
||||||
|
+ AC_DEFINE(HAVE_ALIGNED_ALLOC)
|
||||||
|
|
||||||
|
case "${target}" in
|
||||||
|
*-rtems*)
|
||||||
|
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
|
||||||
|
index 537774c2668..b15e28d2371 100644
|
||||||
|
--- a/libstdc++-v3/include/Makefile.am
|
||||||
|
+++ b/libstdc++-v3/include/Makefile.am
|
||||||
|
@@ -1436,6 +1436,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
||||||
|
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
|
||||||
|
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
|
||||||
|
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
|
||||||
|
+ -e 's/_GLIBCXX___DEVKITARM_GLIBCXX___/__DEVKITARM__/g' \
|
||||||
|
-e 's,^#include "\(.*\)",#include <bits/\1>,g' \
|
||||||
|
< $< > $@
|
||||||
|
|
||||||
|
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
|
||||||
|
index 7b96b2207f8..80f0effec92 100644
|
||||||
|
--- a/libstdc++-v3/include/Makefile.in
|
||||||
|
+++ b/libstdc++-v3/include/Makefile.in
|
||||||
|
@@ -336,6 +336,7 @@ prefix = @prefix@
|
||||||
|
program_transform_name = @program_transform_name@
|
||||||
|
psdir = @psdir@
|
||||||
|
python_mod_dir = @python_mod_dir@
|
||||||
|
+runstatedir = @runstatedir@
|
||||||
|
sbindir = @sbindir@
|
||||||
|
sharedstatedir = @sharedstatedir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
@@ -1910,6 +1911,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
||||||
|
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
|
||||||
|
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
|
||||||
|
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
|
||||||
|
+ -e 's/_GLIBCXX___DEVKITARM_GLIBCXX___/__DEVKITARM__/g' \
|
||||||
|
-e 's,^#include "\(.*\)",#include <bits/\1>,g' \
|
||||||
|
< $< > $@
|
||||||
|
|
||||||
|
diff --git a/lto-plugin/configure b/lto-plugin/configure
|
||||||
|
index 28f5dd79cd7..a79f318a4d6 100755
|
||||||
|
--- a/lto-plugin/configure
|
||||||
|
+++ b/lto-plugin/configure
|
||||||
|
@@ -6469,7 +6469,7 @@ else
|
||||||
|
# Adding the `sed 1q' prevents false positives on HP-UX, which says:
|
||||||
|
# nm: unknown option "B" ignored
|
||||||
|
case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
|
||||||
|
- *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
|
||||||
|
+ $tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
@@ -66,7 +66,7 @@ then
|
|||||||
--with-system-zlib \
|
--with-system-zlib \
|
||||||
--disable-tm-clone-registry \
|
--disable-tm-clone-registry \
|
||||||
--disable-__cxa_atexit \
|
--disable-__cxa_atexit \
|
||||||
--with-bugurl="http://wiki.devkitpro.org/index.php/Bug_Reports" --with-pkgversion="devkitARM release 66" \
|
--with-bugurl="https://devkitpro.org" --with-pkgversion="devkitARM release 67" \
|
||||||
$CROSS_PARAMS \
|
$CROSS_PARAMS \
|
||||||
$CROSS_GCC_PARAMS \
|
$CROSS_GCC_PARAMS \
|
||||||
$EXTRA_GCC_PARAMS \
|
$EXTRA_GCC_PARAMS \
|
||||||
|
|||||||
@@ -1,303 +0,0 @@
|
|||||||
/* Default linker script, for normal executables */
|
|
||||||
OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
|
|
||||||
"elf32-powerpc")
|
|
||||||
OUTPUT_ARCH(powerpc:common)
|
|
||||||
ENTRY(_start)
|
|
||||||
SEARCH_DIR("/powerpc/powerpc-eabi-elf/lib");
|
|
||||||
/* Do we need any of these for elf?
|
|
||||||
__DYNAMIC = 0; */
|
|
||||||
PROVIDE (__stack = 0x817F0000);
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
|
|
||||||
/* DOL header (from TITANIK's GC docs)
|
|
||||||
*/
|
|
||||||
. = 0x80003000;
|
|
||||||
|
|
||||||
.header :
|
|
||||||
{
|
|
||||||
file_start = .;
|
|
||||||
/* 0000-001B Text[0..6] sections File Positions */
|
|
||||||
LONG(text_file_start);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
|
|
||||||
/* 001C-0047 Data[0..10] sections File Positions */
|
|
||||||
LONG(data_file_start);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
|
|
||||||
/* 0048-0063 Text[0..6] sections Mem Address */
|
|
||||||
LONG(text_mem_start);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
|
|
||||||
/* 0064-008F Data[0..10] sections Mem Address */
|
|
||||||
LONG(data_mem_start);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
|
|
||||||
/* 0090-00AB Text[0..6] sections Sizes */
|
|
||||||
LONG(text_mem_size);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
|
|
||||||
/* 00AC-00D7 Data[0..10] sections Sizes */
|
|
||||||
LONG(data_mem_size);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
LONG(0);
|
|
||||||
|
|
||||||
/* 00D8 BSS Mem address
|
|
||||||
* 00DC BSS Size */
|
|
||||||
LONG(bss_mem_start);
|
|
||||||
LONG(bss_mem_size);
|
|
||||||
|
|
||||||
/* 00E0 Entry Point */
|
|
||||||
LONG(ABSOLUTE(_start));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
. = file_start + 0x100;
|
|
||||||
|
|
||||||
text_mem_start = .;
|
|
||||||
|
|
||||||
.init :
|
|
||||||
{
|
|
||||||
KEEP (*(.init))
|
|
||||||
} =0
|
|
||||||
/* Read-only sections, merged into text segment: */
|
|
||||||
.interp : { *(.interp) }
|
|
||||||
.hash : { *(.hash) }
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
.dynstr : { *(.dynstr) }
|
|
||||||
.gnu.version : { *(.gnu.version) }
|
|
||||||
.gnu.version_d : { *(.gnu.version_d) }
|
|
||||||
.gnu.version_r : { *(.gnu.version_r) }
|
|
||||||
.rel.init : { *(.rel.init) }
|
|
||||||
.rela.init : { *(.rela.init) }
|
|
||||||
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
|
|
||||||
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
|
||||||
.rel.fini : { *(.rel.fini) }
|
|
||||||
.rela.fini : { *(.rela.fini) }
|
|
||||||
.rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
|
|
||||||
.rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
|
|
||||||
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
|
|
||||||
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
|
||||||
.rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
|
|
||||||
.rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
|
|
||||||
.rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
|
|
||||||
.rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
|
|
||||||
.rel.ctors : { *(.rel.ctors) }
|
|
||||||
.rela.ctors : { *(.rela.ctors) }
|
|
||||||
.rel.dtors : { *(.rel.dtors) }
|
|
||||||
.rela.dtors : { *(.rela.dtors) }
|
|
||||||
.rel.got : { *(.rel.got) }
|
|
||||||
.rela.got : { *(.rela.got) }
|
|
||||||
.rela.got1 : { *(.rela.got1) }
|
|
||||||
.rela.got2 : { *(.rela.got2) }
|
|
||||||
.rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
|
|
||||||
.rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
|
|
||||||
.rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
|
|
||||||
.rela.sbss : { *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) }
|
|
||||||
.rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
|
|
||||||
.rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
|
|
||||||
.rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
|
|
||||||
.rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
|
|
||||||
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
|
|
||||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
|
|
||||||
.rel.plt : { *(.rel.plt) }
|
|
||||||
.rela.plt : { *(.rela.plt) }
|
|
||||||
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
*(.text .stub .text.* .gnu.linkonce.t.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
} =0
|
|
||||||
.fini :
|
|
||||||
{
|
|
||||||
KEEP (*(.fini))
|
|
||||||
} =0
|
|
||||||
PROVIDE (__etext = .);
|
|
||||||
PROVIDE (_etext = .);
|
|
||||||
PROVIDE (etext = .);
|
|
||||||
. = ALIGN(32);
|
|
||||||
text_mem_size = . - text_mem_start;
|
|
||||||
data_mem_start = .;
|
|
||||||
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
|
|
||||||
.rodata1 : { *(.rodata1) }
|
|
||||||
.sdata2 : { *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) }
|
|
||||||
.sbss2 : { *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) }
|
|
||||||
.eh_frame_hdr : { *(.eh_frame_hdr) }
|
|
||||||
. = ALIGN(32);
|
|
||||||
/* Ensure the __preinit_array_start label is properly aligned. We
|
|
||||||
could instead move the label definition inside the section, but
|
|
||||||
the linker would then create the section even if it turns out to
|
|
||||||
be empty, which isn't pretty. */
|
|
||||||
. = ALIGN(32 / 8);
|
|
||||||
PROVIDE (__preinit_array_start = .);
|
|
||||||
.preinit_array : { *(.preinit_array) }
|
|
||||||
PROVIDE (__preinit_array_end = .);
|
|
||||||
PROVIDE (__init_array_start = .);
|
|
||||||
.init_array : { *(.init_array) }
|
|
||||||
PROVIDE (__init_array_end = .);
|
|
||||||
PROVIDE (__fini_array_start = .);
|
|
||||||
.fini_array : { *(.fini_array) }
|
|
||||||
PROVIDE (__fini_array_end = .);
|
|
||||||
.data :
|
|
||||||
{
|
|
||||||
*(.data .data.* .gnu.linkonce.d.*)
|
|
||||||
SORT(CONSTRUCTORS)
|
|
||||||
}
|
|
||||||
.data1 : { *(.data1) }
|
|
||||||
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
|
||||||
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
|
||||||
.eh_frame : { KEEP (*(.eh_frame)) }
|
|
||||||
.gcc_except_table : { *(.gcc_except_table) }
|
|
||||||
.fixup : { *(.fixup) }
|
|
||||||
.got1 : { *(.got1) }
|
|
||||||
.got2 : { *(.got2) }
|
|
||||||
.dynamic : { *(.dynamic) }
|
|
||||||
.ctors :
|
|
||||||
{
|
|
||||||
/* gcc uses crtbegin.o to find the start of
|
|
||||||
the constructors, so we make sure it is
|
|
||||||
first. Because this is a wildcard, it
|
|
||||||
doesn't matter if the user does not
|
|
||||||
actually link against crtbegin.o; the
|
|
||||||
linker won't look for a file to match a
|
|
||||||
wildcard. The wildcard also means that it
|
|
||||||
doesn't matter which directory crtbegin.o
|
|
||||||
is in. */
|
|
||||||
KEEP (*crtbegin*.o(.ctors))
|
|
||||||
/* We don't want to include the .ctor section from
|
|
||||||
from the crtend.o file until after the sorted ctors.
|
|
||||||
The .ctor section from the crtend file contains the
|
|
||||||
end of ctors marker and it must be last */
|
|
||||||
KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
|
|
||||||
KEEP (*(SORT(.ctors.*)))
|
|
||||||
KEEP (*(.ctors))
|
|
||||||
}
|
|
||||||
.dtors :
|
|
||||||
{
|
|
||||||
KEEP (*crtbegin*.o(.dtors))
|
|
||||||
KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
|
|
||||||
KEEP (*(SORT(.dtors.*)))
|
|
||||||
KEEP (*(.dtors))
|
|
||||||
}
|
|
||||||
.jcr : { KEEP (*(.jcr)) }
|
|
||||||
.got : { *(.got.plt) *(.got) }
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
.sdata :
|
|
||||||
{
|
|
||||||
*(.sdata .sdata.* .gnu.linkonce.s.*)
|
|
||||||
}
|
|
||||||
_edata = .;
|
|
||||||
PROVIDE (edata = .);
|
|
||||||
|
|
||||||
data_mem_size = . - data_mem_start;
|
|
||||||
bss_mem_start = .;
|
|
||||||
|
|
||||||
__bss_start = .;
|
|
||||||
.sbss :
|
|
||||||
{
|
|
||||||
PROVIDE (__sbss_start = .);
|
|
||||||
PROVIDE (___sbss_start = .);
|
|
||||||
*(.dynsbss)
|
|
||||||
*(.sbss .sbss.* .gnu.linkonce.sb.*)
|
|
||||||
*(.scommon)
|
|
||||||
PROVIDE (__sbss_end = .);
|
|
||||||
PROVIDE (___sbss_end = .);
|
|
||||||
}
|
|
||||||
.plt : { *(.plt) }
|
|
||||||
.bss :
|
|
||||||
{
|
|
||||||
*(.dynbss)
|
|
||||||
*(.bss .bss.* .gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
. = ALIGN(32 / 8);
|
|
||||||
}
|
|
||||||
. = ALIGN(32 / 8);
|
|
||||||
bss_mem_size = . - bss_mem_start;
|
|
||||||
text_file_start = text_mem_start - file_start;
|
|
||||||
data_file_start = data_mem_start - file_start;
|
|
||||||
|
|
||||||
|
|
||||||
_end = .;
|
|
||||||
__end = .;
|
|
||||||
PROVIDE (end = .);
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
}
|
|
||||||
@@ -1,283 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linkscript for GC
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc");
|
|
||||||
OUTPUT_ARCH(powerpc:common);
|
|
||||||
EXTERN(_start);
|
|
||||||
ENTRY(_start);
|
|
||||||
|
|
||||||
PHDRS
|
|
||||||
{
|
|
||||||
stub PT_LOAD FLAGS(5);
|
|
||||||
text PT_LOAD FLAGS(5);
|
|
||||||
data PT_LOAD FLAGS(6);
|
|
||||||
bss PT_LOAD;
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
/* default base address */
|
|
||||||
/* use -Wl,--section-start,.init=0xADDRESS to change */
|
|
||||||
. = 0x80003100;
|
|
||||||
|
|
||||||
/* Program */
|
|
||||||
.init :
|
|
||||||
{
|
|
||||||
KEEP (*crt0.o(*.init))
|
|
||||||
KEEP (*(.init))
|
|
||||||
} :text = 0
|
|
||||||
.plt : { *(.plt) }
|
|
||||||
.interp : { *(.interp) }
|
|
||||||
.hash : { *(.hash) }
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
.dynstr : { *(.dynstr) }
|
|
||||||
.gnu.version : { *(.gnu.version) }
|
|
||||||
.gnu.version_d : { *(.gnu.version_d) }
|
|
||||||
.gnu.version_r : { *(.gnu.version_r) }
|
|
||||||
.rel.init : { *(.rel.init) }
|
|
||||||
.rela.init : { *(.rela.init) }
|
|
||||||
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
|
|
||||||
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
|
||||||
.rel.fini : { *(.rel.fini) }
|
|
||||||
.rela.fini : { *(.rela.fini) }
|
|
||||||
.rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
|
|
||||||
.rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
|
|
||||||
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
|
|
||||||
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
|
||||||
.rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
|
|
||||||
.rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
|
|
||||||
.rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
|
|
||||||
.rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
|
|
||||||
.rel.ctors : { *(.rel.ctors) }
|
|
||||||
.rela.ctors : { *(.rela.ctors) }
|
|
||||||
.rel.dtors : { *(.rel.dtors) }
|
|
||||||
.rela.dtors : { *(.rela.dtors) }
|
|
||||||
.rel.got : { *(.rel.got) }
|
|
||||||
.rela.got : { *(.rela.got) }
|
|
||||||
.rela.got1 : { *(.rela.got1) }
|
|
||||||
.rela.got2 : { *(.rela.got2) }
|
|
||||||
.rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
|
|
||||||
.rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
|
|
||||||
.rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
|
|
||||||
.rela.sbss : { *(.rela.sbss .rela.sbss.* .rel.gnu.linkonce.sb.*) }
|
|
||||||
.rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
|
|
||||||
.rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
|
|
||||||
.rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
|
|
||||||
.rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
|
|
||||||
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
|
|
||||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
|
|
||||||
.rel.plt : { *(.rel.plt) }
|
|
||||||
.rela.plt : { *(.rela.plt) }
|
|
||||||
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
*(.text)
|
|
||||||
*(.text.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.gnu.linkonce.t.*)
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
} = 0
|
|
||||||
|
|
||||||
.fini :
|
|
||||||
{
|
|
||||||
KEEP (*(.fini))
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
} = 0
|
|
||||||
|
|
||||||
PROVIDE (__etext = .);
|
|
||||||
PROVIDE (_etext = .);
|
|
||||||
PROVIDE (etext = .);
|
|
||||||
|
|
||||||
.rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) } :data
|
|
||||||
.rodata1 : { *(.rodata1) }
|
|
||||||
.sdata2 : {
|
|
||||||
PROVIDE(_SDA2_BASE_ = . );
|
|
||||||
*(.sdata2) *(.sdata2.*)
|
|
||||||
*(.gnu.linkonce.s2.*)
|
|
||||||
}
|
|
||||||
.sbss2 : { *(.sbss2) *(.sbss2.*) *(.gnu.linkonce.sb2.*) }
|
|
||||||
/* Adjust the address for the data segment. We want to adjust up to
|
|
||||||
the same address within the page on the next page up. */
|
|
||||||
/* Ensure the __preinit_array_start label is properly aligned. We
|
|
||||||
could instead move the label definition inside the section, but
|
|
||||||
the linker would then create the section even if it turns out to
|
|
||||||
be empty, which isn't pretty. */
|
|
||||||
. = ALIGN(32 / 8);
|
|
||||||
PROVIDE (__preinit_array_start = .);
|
|
||||||
.preinit_array : { *(.preinit_array) }
|
|
||||||
PROVIDE (__preinit_array_end = .);
|
|
||||||
PROVIDE (__init_array_start = .);
|
|
||||||
.init_array : { *(.init_array) }
|
|
||||||
PROVIDE (__init_array_end = .);
|
|
||||||
PROVIDE (__fini_array_start = .);
|
|
||||||
.fini_array : { *(.fini_array) }
|
|
||||||
PROVIDE (__fini_array_end = .);
|
|
||||||
.data :
|
|
||||||
{
|
|
||||||
*(.data)
|
|
||||||
*(.data.*)
|
|
||||||
*(.gnu.linkonce.d.*)
|
|
||||||
SORT(CONSTRUCTORS)
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
}
|
|
||||||
|
|
||||||
.data1 : { *(.data1) }
|
|
||||||
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
|
||||||
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
|
||||||
.eh_frame : { KEEP (*(.eh_frame)) }
|
|
||||||
.gcc_except_table : { *(.gcc_except_table) }
|
|
||||||
.fixup : { *(.fixup) }
|
|
||||||
.got1 : { *(.got1) }
|
|
||||||
.got2 : { *(.got2) }
|
|
||||||
.dynamic : { *(.dynamic) }
|
|
||||||
|
|
||||||
.ctors :
|
|
||||||
{
|
|
||||||
/* gcc uses crtbegin.o to find the start of
|
|
||||||
the constructors, so we make sure it is
|
|
||||||
first. Because this is a wildcard, it
|
|
||||||
doesn't matter if the user does not
|
|
||||||
actually link against crtbegin.o; the
|
|
||||||
linker won't look for a file to match a
|
|
||||||
wildcard. The wildcard also means that it
|
|
||||||
doesn't matter which directory crtbegin.o
|
|
||||||
is in. */
|
|
||||||
|
|
||||||
KEEP (*crtbegin.o(.ctors))
|
|
||||||
|
|
||||||
/* We don't want to include the .ctor section from
|
|
||||||
from the crtend.o file until after the sorted ctors.
|
|
||||||
The .ctor section from the crtend file contains the
|
|
||||||
end of ctors marker and it must be last */
|
|
||||||
|
|
||||||
KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
|
|
||||||
KEEP (*(SORT(.ctors.*)))
|
|
||||||
KEEP (*(.ctors))
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
}
|
|
||||||
|
|
||||||
.dtors :
|
|
||||||
{
|
|
||||||
KEEP (*crtbegin.o(.dtors))
|
|
||||||
KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
|
|
||||||
KEEP (*(SORT(.dtors.*)))
|
|
||||||
KEEP (*(.dtors))
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
}
|
|
||||||
|
|
||||||
.jcr : { KEEP (*(.jcr)) }
|
|
||||||
.got : { *(.got.plt) *(.got) }
|
|
||||||
|
|
||||||
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
|
|
||||||
.sdata :
|
|
||||||
{
|
|
||||||
PROVIDE(_SDA_BASE_ = . );
|
|
||||||
*(.sdata)
|
|
||||||
*(.sdata.*)
|
|
||||||
*(.gnu.linkonce.s.*)
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
}
|
|
||||||
|
|
||||||
_edata = .;
|
|
||||||
PROVIDE (edata = .);
|
|
||||||
|
|
||||||
.sbss :
|
|
||||||
{
|
|
||||||
__sbss_start = .;
|
|
||||||
PROVIDE (__sbss_start = .);
|
|
||||||
PROVIDE (___sbss_start = .);
|
|
||||||
*(.dynsbss)
|
|
||||||
*(.sbss)
|
|
||||||
*(.sbss.*)
|
|
||||||
*(.gnu.linkonce.sb.*)
|
|
||||||
*(.scommon)
|
|
||||||
PROVIDE (__sbss_end = .);
|
|
||||||
PROVIDE (___sbss_end = .);
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
__sbss_end = .;
|
|
||||||
} :bss
|
|
||||||
|
|
||||||
.bss :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
PROVIDE (__bss_start = .);
|
|
||||||
*(.dynbss)
|
|
||||||
*(.bss)
|
|
||||||
*(.bss.*)
|
|
||||||
*(.gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
|
|
||||||
. = ALIGN(32);
|
|
||||||
|
|
||||||
PROVIDE (__bss_end = .);
|
|
||||||
__bss_end = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
_end = .;
|
|
||||||
PROVIDE(end = .);
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
/* These must appear regardless of . */
|
|
||||||
}
|
|
||||||
|
|
||||||
__isIPL = 0;
|
|
||||||
__stack_addr = (__bss_start + SIZEOF(.bss) + 0x20000 + 7) & (-8);
|
|
||||||
__stack_end = (__bss_start + SIZEOF(.bss));
|
|
||||||
__intrstack_addr = (__stack_addr + 0x4000);
|
|
||||||
__intrstack_end = (__stack_addr);
|
|
||||||
__Arena1Lo = (__intrstack_addr + 31) & (-32);
|
|
||||||
__Arena1Hi = (0x817FEFF0);
|
|
||||||
|
|
||||||
__gxregs = (__Arena1Hi + 31) & (-32);
|
|
||||||
/* for backward compatibility with old crt0 */
|
|
||||||
PROVIDE (__stack = (0x817FEFF0));
|
|
||||||
|
|
||||||
PROVIDE(__isIPL = __isIPL);
|
|
||||||
PROVIDE(__stack_addr = __stack_addr);
|
|
||||||
PROVIDE(__stack_end = __stack_end);
|
|
||||||
PROVIDE(__intrstack_addr = __intrstack_addr);
|
|
||||||
PROVIDE(__intrstack_end = __intrstack_end);
|
|
||||||
PROVIDE(__Arena1Lo = __Arena1Lo);
|
|
||||||
PROVIDE(__Arena1Hi = __Arena1Hi);
|
|
||||||
PROVIDE(__gxregs = __gxregs);
|
|
||||||
@@ -1,304 +0,0 @@
|
|||||||
/*
|
|
||||||
* Linkscript for Wii
|
|
||||||
*/
|
|
||||||
|
|
||||||
OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc");
|
|
||||||
OUTPUT_ARCH(powerpc:common);
|
|
||||||
EXTERN(_start);
|
|
||||||
ENTRY(_start);
|
|
||||||
|
|
||||||
PHDRS
|
|
||||||
{
|
|
||||||
stub PT_LOAD FLAGS(5);
|
|
||||||
text PT_LOAD FLAGS(5);
|
|
||||||
data PT_LOAD FLAGS(6);
|
|
||||||
bss1 PT_LOAD;
|
|
||||||
bss2 PT_LOAD;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
/* stub is loaded at physical address 0x00003400 (though both 0x80003400 and 0x00003400 are equivalent for IOS) */
|
|
||||||
/* This can also be used to load an arbitrary standalone stub at an arbitrary address in memory, for any purpose */
|
|
||||||
/* Use -Wl,--section-start,.stub=0xADDRESS to change */
|
|
||||||
. = 0x00003400;
|
|
||||||
|
|
||||||
.stub :
|
|
||||||
{
|
|
||||||
KEEP(*(.stub))
|
|
||||||
} :stub = 0
|
|
||||||
|
|
||||||
/* default base address */
|
|
||||||
/* use -Wl,--section-start,.init=0xADDRESS to change */
|
|
||||||
. = 0x80004000;
|
|
||||||
|
|
||||||
/* Program */
|
|
||||||
.init :
|
|
||||||
{
|
|
||||||
KEEP (*crt0.o(*.init))
|
|
||||||
KEEP (*(.init))
|
|
||||||
} :text = 0
|
|
||||||
.plt : { *(.plt) }
|
|
||||||
.interp : { *(.interp) }
|
|
||||||
.hash : { *(.hash) }
|
|
||||||
.dynsym : { *(.dynsym) }
|
|
||||||
.dynstr : { *(.dynstr) }
|
|
||||||
.gnu.version : { *(.gnu.version) }
|
|
||||||
.gnu.version_d : { *(.gnu.version_d) }
|
|
||||||
.gnu.version_r : { *(.gnu.version_r) }
|
|
||||||
.rel.init : { *(.rel.init) }
|
|
||||||
.rela.init : { *(.rela.init) }
|
|
||||||
.rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
|
|
||||||
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
|
||||||
.rel.fini : { *(.rel.fini) }
|
|
||||||
.rela.fini : { *(.rela.fini) }
|
|
||||||
.rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
|
|
||||||
.rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
|
|
||||||
.rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
|
|
||||||
.rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
|
|
||||||
.rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
|
|
||||||
.rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
|
|
||||||
.rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
|
|
||||||
.rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
|
|
||||||
.rel.ctors : { *(.rel.ctors) }
|
|
||||||
.rela.ctors : { *(.rela.ctors) }
|
|
||||||
.rel.dtors : { *(.rel.dtors) }
|
|
||||||
.rela.dtors : { *(.rela.dtors) }
|
|
||||||
.rel.got : { *(.rel.got) }
|
|
||||||
.rela.got : { *(.rela.got) }
|
|
||||||
.rela.got1 : { *(.rela.got1) }
|
|
||||||
.rela.got2 : { *(.rela.got2) }
|
|
||||||
.rel.sdata : { *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) }
|
|
||||||
.rela.sdata : { *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) }
|
|
||||||
.rel.sbss : { *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) }
|
|
||||||
.rela.sbss : { *(.rela.sbss .rela.sbss.* .rel.gnu.linkonce.sb.*) }
|
|
||||||
.rel.sdata2 : { *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) }
|
|
||||||
.rela.sdata2 : { *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) }
|
|
||||||
.rel.sbss2 : { *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) }
|
|
||||||
.rela.sbss2 : { *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) }
|
|
||||||
.rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
|
|
||||||
.rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
|
|
||||||
.rel.plt : { *(.rel.plt) }
|
|
||||||
.rela.plt : { *(.rela.plt) }
|
|
||||||
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
*(.text)
|
|
||||||
*(.text.*)
|
|
||||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.gnu.linkonce.t.*)
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
} = 0
|
|
||||||
|
|
||||||
.fini :
|
|
||||||
{
|
|
||||||
KEEP (*(.fini))
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
} = 0
|
|
||||||
|
|
||||||
PROVIDE (__etext = .);
|
|
||||||
PROVIDE (_etext = .);
|
|
||||||
PROVIDE (etext = .);
|
|
||||||
|
|
||||||
.rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r.*) } :data
|
|
||||||
.rodata1 : { *(.rodata1) }
|
|
||||||
.sdata2 : {
|
|
||||||
PROVIDE(_SDA2_BASE_ = .);
|
|
||||||
*(.sdata2)
|
|
||||||
*(.sdata2.*)
|
|
||||||
*(.gnu.linkonce.s2.*)
|
|
||||||
}
|
|
||||||
.sbss2 : { *(.sbss2) *(.sbss2.*) *(.gnu.linkonce.sb2.*) }
|
|
||||||
/* Adjust the address for the data segment. We want to adjust up to
|
|
||||||
the same address within the page on the next page up. */
|
|
||||||
/* Ensure the __preinit_array_start label is properly aligned. We
|
|
||||||
could instead move the label definition inside the section, but
|
|
||||||
the linker would then create the section even if it turns out to
|
|
||||||
be empty, which isn't pretty. */
|
|
||||||
. = ALIGN(32 / 8);
|
|
||||||
PROVIDE (__preinit_array_start = .);
|
|
||||||
.preinit_array : { *(.preinit_array) }
|
|
||||||
PROVIDE (__preinit_array_end = .);
|
|
||||||
PROVIDE (__init_array_start = .);
|
|
||||||
.init_array : { *(.init_array) }
|
|
||||||
PROVIDE (__init_array_end = .);
|
|
||||||
PROVIDE (__fini_array_start = .);
|
|
||||||
.fini_array : { *(.fini_array) }
|
|
||||||
PROVIDE (__fini_array_end = .);
|
|
||||||
.data :
|
|
||||||
{
|
|
||||||
*(.data)
|
|
||||||
*(.data.*)
|
|
||||||
*(.gnu.linkonce.d.*)
|
|
||||||
SORT(CONSTRUCTORS)
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
}
|
|
||||||
|
|
||||||
.data1 : { *(.data1) }
|
|
||||||
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
|
|
||||||
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
|
|
||||||
.eh_frame : { KEEP (*(.eh_frame)) }
|
|
||||||
.gcc_except_table : { *(.gcc_except_table) }
|
|
||||||
.fixup : { *(.fixup) }
|
|
||||||
.got1 : { *(.got1) }
|
|
||||||
.got2 : { *(.got2) }
|
|
||||||
.dynamic : { *(.dynamic) }
|
|
||||||
|
|
||||||
.ctors :
|
|
||||||
{
|
|
||||||
/* gcc uses crtbegin.o to find the start of
|
|
||||||
the constructors, so we make sure it is
|
|
||||||
first. Because this is a wildcard, it
|
|
||||||
doesn't matter if the user does not
|
|
||||||
actually link against crtbegin.o; the
|
|
||||||
linker won't look for a file to match a
|
|
||||||
wildcard. The wildcard also means that it
|
|
||||||
doesn't matter which directory crtbegin.o
|
|
||||||
is in. */
|
|
||||||
|
|
||||||
KEEP (*crtbegin.o(.ctors))
|
|
||||||
|
|
||||||
/* We don't want to include the .ctor section from
|
|
||||||
from the crtend.o file until after the sorted ctors.
|
|
||||||
The .ctor section from the crtend file contains the
|
|
||||||
end of ctors marker and it must be last */
|
|
||||||
|
|
||||||
KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
|
|
||||||
KEEP (*(SORT(.ctors.*)))
|
|
||||||
KEEP (*(.ctors))
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
}
|
|
||||||
|
|
||||||
.dtors :
|
|
||||||
{
|
|
||||||
KEEP (*crtbegin.o(.dtors))
|
|
||||||
KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
|
|
||||||
KEEP (*(SORT(.dtors.*)))
|
|
||||||
KEEP (*(.dtors))
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
}
|
|
||||||
|
|
||||||
.jcr : { KEEP (*(.jcr)) }
|
|
||||||
.got : { *(.got.plt) *(.got) }
|
|
||||||
|
|
||||||
|
|
||||||
/* We want the small data sections together, so single-instruction offsets
|
|
||||||
can access them all, and initialized data all before uninitialized, so
|
|
||||||
we can shorten the on-disk segment size. */
|
|
||||||
|
|
||||||
.sdata :
|
|
||||||
{
|
|
||||||
PROVIDE(_SDA_BASE_ = .);
|
|
||||||
*(.sdata)
|
|
||||||
*(.sdata.*)
|
|
||||||
*(.gnu.linkonce.s.*)
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
}
|
|
||||||
|
|
||||||
_edata = .;
|
|
||||||
PROVIDE (edata = .);
|
|
||||||
|
|
||||||
.sbss :
|
|
||||||
{
|
|
||||||
__sbss_start = .;
|
|
||||||
PROVIDE (__sbss_start = .);
|
|
||||||
PROVIDE (___sbss_start = .);
|
|
||||||
*(.dynsbss)
|
|
||||||
*(.sbss)
|
|
||||||
*(.sbss.*)
|
|
||||||
*(.gnu.linkonce.sb.*)
|
|
||||||
*(.scommon)
|
|
||||||
PROVIDE (__sbss_end = .);
|
|
||||||
PROVIDE (___sbss_end = .);
|
|
||||||
. = ALIGN(32); /* REQUIRED. LD is flaky without it. */
|
|
||||||
__sbss_end = .;
|
|
||||||
} :bss1
|
|
||||||
|
|
||||||
.bss :
|
|
||||||
{
|
|
||||||
__bss_start = .;
|
|
||||||
PROVIDE (__bss_start = .);
|
|
||||||
*(.dynbss)
|
|
||||||
*(.bss)
|
|
||||||
*(.bss.*)
|
|
||||||
*(.gnu.linkonce.b.*)
|
|
||||||
*(COMMON)
|
|
||||||
/* Align here to ensure that the .bss section occupies space up to
|
|
||||||
_end. Align after .bss to ensure correct alignment even if the
|
|
||||||
.bss section disappears because there are no input sections. */
|
|
||||||
|
|
||||||
. = ALIGN(32);
|
|
||||||
|
|
||||||
PROVIDE (__bss_end = .);
|
|
||||||
__bss_end = .;
|
|
||||||
} :bss2
|
|
||||||
|
|
||||||
_end = .;
|
|
||||||
PROVIDE(end = .);
|
|
||||||
/* Stabs debugging sections. */
|
|
||||||
.stab 0 : { *(.stab) }
|
|
||||||
.stabstr 0 : { *(.stabstr) }
|
|
||||||
.stab.excl 0 : { *(.stab.excl) }
|
|
||||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
||||||
.stab.index 0 : { *(.stab.index) }
|
|
||||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
||||||
.comment 0 : { *(.comment) }
|
|
||||||
/* DWARF debug sections.
|
|
||||||
Symbols in the DWARF debugging sections are relative to the beginning
|
|
||||||
of the section so we begin them at 0. */
|
|
||||||
/* DWARF 1 */
|
|
||||||
.debug 0 : { *(.debug) }
|
|
||||||
.line 0 : { *(.line) }
|
|
||||||
/* GNU DWARF 1 extensions */
|
|
||||||
.debug_srcinfo 0 : { *(.debug_srcinfo) }
|
|
||||||
.debug_sfnames 0 : { *(.debug_sfnames) }
|
|
||||||
/* DWARF 1.1 and DWARF 2 */
|
|
||||||
.debug_aranges 0 : { *(.debug_aranges) }
|
|
||||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
||||||
/* DWARF 2 */
|
|
||||||
.debug_info 0 : { *(.debug_info) }
|
|
||||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
||||||
.debug_line 0 : { *(.debug_line) }
|
|
||||||
.debug_frame 0 : { *(.debug_frame) }
|
|
||||||
.debug_str 0 : { *(.debug_str) }
|
|
||||||
.debug_loc 0 : { *(.debug_loc) }
|
|
||||||
.debug_macinfo 0 : { *(.debug_macinfo) }
|
|
||||||
/* SGI/MIPS DWARF 2 extensions */
|
|
||||||
.debug_weaknames 0 : { *(.debug_weaknames) }
|
|
||||||
.debug_funcnames 0 : { *(.debug_funcnames) }
|
|
||||||
.debug_typenames 0 : { *(.debug_typenames) }
|
|
||||||
.debug_varnames 0 : { *(.debug_varnames) }
|
|
||||||
/* These must appear regardless of . */
|
|
||||||
}
|
|
||||||
|
|
||||||
__isIPL = 0;
|
|
||||||
__stack_addr = (__bss_start + SIZEOF(.bss) + 0x20000 + 7) & (-8);
|
|
||||||
__stack_end = (__bss_start + SIZEOF(.bss));
|
|
||||||
__intrstack_addr = (__stack_addr + 0x4000);
|
|
||||||
__intrstack_end = (__stack_addr);
|
|
||||||
__Arena1Lo = (__intrstack_addr + 31) & (-32);
|
|
||||||
__Arena1Hi = (0x817FEFF0);
|
|
||||||
__Arena2Lo = (0x90002000);
|
|
||||||
__Arena2Hi = (0x933E0000);
|
|
||||||
|
|
||||||
__gxregs = (__Arena1Hi + 31) & (-32);
|
|
||||||
__ipcbufferLo = (0x933e0000);
|
|
||||||
__ipcbufferHi = (0x93400000);
|
|
||||||
|
|
||||||
/* for backward compatibility with old crt0 */
|
|
||||||
PROVIDE (__stack = (0x817FEFF0));
|
|
||||||
|
|
||||||
PROVIDE(__isIPL = __isIPL);
|
|
||||||
PROVIDE(__stack_addr = __stack_addr);
|
|
||||||
PROVIDE(__stack_end = __stack_end);
|
|
||||||
PROVIDE(__intrstack_addr = __intrstack_addr);
|
|
||||||
PROVIDE(__intrstack_end = __intrstack_end);
|
|
||||||
PROVIDE(__Arena1Lo = __Arena1Lo);
|
|
||||||
PROVIDE(__Arena1Hi = __Arena1Hi);
|
|
||||||
PROVIDE(__Arena2Lo = __Arena2Lo);
|
|
||||||
PROVIDE(__Arena2Hi = __Arena2Hi);
|
|
||||||
PROVIDE(__ipcbufferLo = __ipcbufferLo);
|
|
||||||
PROVIDE(__ipcbufferHi = __ipcbufferHi);
|
|
||||||
PROVIDE(__gxregs = __gxregs);
|
|
||||||
@@ -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,14 +11041,15 @@ 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"
|
||||||
;;
|
;;
|
||||||
- powerpc*-*-eabi* | \
|
- powerpc*-*-eabi* | \
|
||||||
+ 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
|
||||||
|
|||||||
@@ -14,3 +14,12 @@ cd $BUILDDIR
|
|||||||
tar -xvf $SRCDIR/devkitppc-rules-$DKPPC_RULES_VER.tar.gz
|
tar -xvf $SRCDIR/devkitppc-rules-$DKPPC_RULES_VER.tar.gz
|
||||||
cd devkitppc-rules-$DKPPC_RULES_VER
|
cd devkitppc-rules-$DKPPC_RULES_VER
|
||||||
$MAKE install
|
$MAKE install
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# Install the linkscripts
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
cd $BUILDDIR
|
||||||
|
|
||||||
|
tar -xvf $SRCDIR/devkitppc-crtls-$DKPPC_CRTLS_VER.tar.gz
|
||||||
|
cd devkitppc-crtls-$DKPPC_CRTLS_VER
|
||||||
|
$MAKE install
|
||||||
|
|||||||
@@ -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 48" \
|
||||||
$CROSS_PARAMS \
|
$CROSS_PARAMS \
|
||||||
$CROSS_GCC_PARAMS \
|
$CROSS_GCC_PARAMS \
|
||||||
$EXTRA_GCC_PARAMS \
|
$EXTRA_GCC_PARAMS \
|
||||||
@@ -183,13 +183,4 @@ then
|
|||||||
touch installed-stage2
|
touch installed-stage2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -fr $prefix/$target/sys-include
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# Install and build the gamecube crt and libogc
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
echo "installing linkscripts ..."
|
|
||||||
cp $BUILDSCRIPTDIR/dkppc/crtls/*.ld $prefix/$target/lib/
|
|
||||||
|
|
||||||
cd $BUILDDIR
|
cd $BUILDDIR
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ done
|
|||||||
|
|
||||||
case "$VERSION" in
|
case "$VERSION" in
|
||||||
"1" )
|
"1" )
|
||||||
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='dkarm-eabi'
|
basedir='dkarm-eabi'
|
||||||
package=devkitARM
|
package=devkitARM
|
||||||
@@ -39,8 +39,8 @@ case "$VERSION" in
|
|||||||
toolchain=DEVKITARM
|
toolchain=DEVKITARM
|
||||||
;;
|
;;
|
||||||
"2" )
|
"2" )
|
||||||
GCC_VER=15.1.0
|
GCC_VER=15.2.0
|
||||||
BINUTILS_VER=2.44
|
BINUTILS_VER=2.45.1
|
||||||
MN_BINUTILS_VER=2.24
|
MN_BINUTILS_VER=2.24
|
||||||
NEWLIB_VER=4.5.0.20241231
|
NEWLIB_VER=4.5.0.20241231
|
||||||
basedir='dkppc'
|
basedir='dkppc'
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user