mirror of
https://github.com/devkitPro/buildscripts.git
synced 2026-08-21 09:54:03 -05:00
Compare commits
10 Commits
devkitPPC_
...
devkitPPC_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
74e2c3ebc4 | ||
|
|
1118d68a97 | ||
|
|
5c0124ec01 | ||
|
|
329ce986eb | ||
|
|
73d0dafa21 | ||
|
|
5fb027fd3b | ||
|
|
b5cdec82b7 | ||
|
|
2d21601d71 | ||
|
|
c879ba7e62 | ||
|
|
b6613d5f5f |
@@ -1,8 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
#---------------------------------------------------------------------------------
|
||||
# devkitARM release 66
|
||||
# devkitPPC release 47
|
||||
# devkitA64 release 27
|
||||
# devkitPPC release 48
|
||||
# devkitA64 release 29
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
if [ 0 -eq 1 ] ; then
|
||||
@@ -31,6 +31,7 @@ DKARM_RULES_VER=1.6.1
|
||||
DKARM_CRTLS_VER=1.2.7
|
||||
|
||||
DKPPC_RULES_VER=1.2.1
|
||||
DKPPC_CRTLS_VER=1.0.0
|
||||
|
||||
DKA64_RULES_VER=1.1.1
|
||||
|
||||
@@ -195,7 +196,7 @@ if [ "$BUILD_DKPRO_SKIP_CRTLS" != "1" ]; then
|
||||
fi
|
||||
|
||||
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
|
||||
|
||||
if [ $VERSION -eq 3 ]; then
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
|
||||
index b89d3dda05d..1ad8a9c088d 100644
|
||||
index 68190dbaa27..3413eaca5b3 100644
|
||||
--- a/bfd/elf-bfd.h
|
||||
+++ b/bfd/elf-bfd.h
|
||||
@@ -2005,6 +2005,14 @@ struct output_elf_obj_tdata
|
||||
@@ -2020,6 +2020,14 @@ struct output_elf_obj_tdata
|
||||
asection *sec;
|
||||
} package_metadata;
|
||||
|
||||
@@ -18,10 +18,10 @@ index b89d3dda05d..1ad8a9c088d 100644
|
||||
bfd_size_type program_header_size;
|
||||
|
||||
diff --git a/bfd/elf.c b/bfd/elf.c
|
||||
index f85f79e1e35..d27f05b92ae 100644
|
||||
index dfa04c9268d..12b76d3ffb8 100644
|
||||
--- a/bfd/elf.c
|
||||
+++ b/bfd/elf.c
|
||||
@@ -7166,6 +7166,14 @@ _bfd_elf_write_object_contents (bfd *abfd)
|
||||
@@ -7223,6 +7223,14 @@ _bfd_elf_write_object_contents (bfd *abfd)
|
||||
if (!bed->s->write_shdrs_and_ehdr (abfd))
|
||||
return false;
|
||||
|
||||
@@ -37,10 +37,10 @@ index f85f79e1e35..d27f05b92ae 100644
|
||||
if (t->o->build_id.after_write_object_contents != NULL
|
||||
&& !(*t->o->build_id.after_write_object_contents) (abfd))
|
||||
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
|
||||
index 94c9a01069b..d39880b27c4 100644
|
||||
index e86f0280c2a..debb627a00f 100644
|
||||
--- a/bfd/elfnn-aarch64.c
|
||||
+++ b/bfd/elfnn-aarch64.c
|
||||
@@ -2441,6 +2441,12 @@ enum elf_aarch64_stub_type
|
||||
@@ -2444,6 +2444,12 @@ enum elf_aarch64_stub_type
|
||||
aarch64_stub_erratum_843419_veneer,
|
||||
};
|
||||
|
||||
@@ -53,7 +53,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
struct elf_aarch64_stub_hash_entry
|
||||
{
|
||||
/* Base hash table entry structure. */
|
||||
@@ -6969,11 +6975,13 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
||||
@@ -6986,11 +6992,13 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
||||
Elf_Internal_Sym *sym;
|
||||
asection *sec;
|
||||
struct elf_link_hash_entry *h;
|
||||
@@ -67,7 +67,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
char *error_message = NULL;
|
||||
|
||||
r_symndx = ELFNN_R_SYM (rel->r_info);
|
||||
@@ -7113,6 +7121,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
||||
@@ -7130,6 +7138,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
||||
h, &unresolved_reloc,
|
||||
save_addend, &addend, sym);
|
||||
|
||||
@@ -78,7 +78,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
switch (elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type))
|
||||
{
|
||||
case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
|
||||
@@ -7136,7 +7148,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
||||
@@ -7153,7 +7165,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
||||
need_relocs =
|
||||
(!bfd_link_executable (info) || indx != 0) &&
|
||||
(h == NULL
|
||||
@@ -87,7 +87,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
|| h->root.type != bfd_link_hash_undefweak);
|
||||
|
||||
BFD_ASSERT (globals->root.srelgot != NULL);
|
||||
@@ -7231,7 +7243,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
||||
@@ -7248,7 +7260,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
||||
need_relocs =
|
||||
(!bfd_link_executable (info) || indx != 0) &&
|
||||
(h == NULL
|
||||
@@ -96,7 +96,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
|| h->root.type != bfd_link_hash_undefweak);
|
||||
|
||||
BFD_ASSERT (globals->root.srelgot != NULL);
|
||||
@@ -7280,7 +7292,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
||||
@@ -7297,7 +7309,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
||||
bfd_vma off = symbol_tlsdesc_got_offset (input_bfd, h, r_symndx);
|
||||
|
||||
need_relocs = (h == NULL
|
||||
@@ -105,7 +105,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
|| h->root.type != bfd_link_hash_undefweak);
|
||||
|
||||
BFD_ASSERT (globals->root.srelgot != NULL);
|
||||
@@ -7606,6 +7618,23 @@ need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
|
||||
@@ -7623,6 +7635,23 @@ need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
/* Adjust a symbol defined by a dynamic object and referenced by a
|
||||
regular object. The current definition is in some section of the
|
||||
dynamic object, but we're not including those sections. We have to
|
||||
@@ -8824,6 +8853,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
@@ -8728,6 +8757,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
struct elf_aarch64_link_hash_table *htab;
|
||||
struct elf_aarch64_link_hash_entry *eh;
|
||||
struct elf_dyn_relocs *p;
|
||||
@@ -137,7 +137,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
|
||||
/* An example of a bfd_link_hash_indirect symbol is versioned
|
||||
symbol. For example: __gxx_personality_v0(bfd_link_hash_indirect)
|
||||
@@ -8843,6 +8873,10 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
@@ -8747,6 +8777,10 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
info = (struct bfd_link_info *) inf;
|
||||
htab = elf_aarch64_hash_table (info);
|
||||
|
||||
@@ -148,7 +148,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
/* Since STT_GNU_IFUNC symbol must go through PLT, we handle it
|
||||
here if it is defined and referenced in a non-shared object. */
|
||||
if (h->type == STT_GNU_IFUNC
|
||||
@@ -8852,7 +8886,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
@@ -8756,7 +8790,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
{
|
||||
/* Make sure this symbol is output as a dynamic symbol.
|
||||
Undefined weak syms won't yet be marked as dynamic. */
|
||||
@@ -157,7 +157,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
&& h->root.type == bfd_link_hash_undefweak)
|
||||
{
|
||||
if (!bfd_elf_link_record_dynamic_symbol (info, h))
|
||||
@@ -8886,6 +8920,11 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
@@ -8790,6 +8824,11 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
of relaxing into these from the large model PLT entries. */
|
||||
s->size += htab->plt_entry_size;
|
||||
|
||||
@@ -169,7 +169,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
/* We also need to make an entry in the .got.plt section, which
|
||||
will be placed in the .got section by the linker script. */
|
||||
htab->root.sgotplt->size += GOT_ENTRY_SIZE;
|
||||
@@ -8914,6 +8953,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
@@ -8818,6 +8857,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
htab->variant_pcs = 1;
|
||||
|
||||
}
|
||||
@@ -177,7 +177,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
else
|
||||
{
|
||||
h->plt.offset = (bfd_vma) - 1;
|
||||
@@ -8926,9 +8966,6 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
@@ -8830,9 +8870,6 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
h->needs_plt = 0;
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
if (h->got.refcount > 0)
|
||||
{
|
||||
bool dyn;
|
||||
@@ -8940,7 +8977,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
@@ -8844,7 +8881,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
|
||||
/* Make sure this symbol is output as a dynamic symbol.
|
||||
Undefined weak syms won't yet be marked as dynamic. */
|
||||
@@ -196,7 +196,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
&& h->root.type == bfd_link_hash_undefweak)
|
||||
{
|
||||
if (!bfd_elf_link_record_dynamic_symbol (info, h))
|
||||
@@ -8954,7 +8991,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
@@ -8858,7 +8895,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
{
|
||||
h->got.offset = htab->root.sgot->size;
|
||||
htab->root.sgot->size += GOT_ENTRY_SIZE;
|
||||
@@ -205,7 +205,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
|| h->root.type != bfd_link_hash_undefweak)
|
||||
&& (bfd_link_pic (info)
|
||||
|| WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h))
|
||||
@@ -8990,7 +9027,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
@@ -8894,7 +8931,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
}
|
||||
|
||||
indx = h && h->dynindx != -1 ? h->dynindx : 0;
|
||||
@@ -214,7 +214,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
|| h->root.type != bfd_link_hash_undefweak)
|
||||
&& (!bfd_link_executable (info)
|
||||
|| indx != 0
|
||||
@@ -9072,7 +9109,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
@@ -8976,7 +9013,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
visibility. */
|
||||
if (h->dyn_relocs != NULL && h->root.type == bfd_link_hash_undefweak)
|
||||
{
|
||||
@@ -223,7 +223,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
|| UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
|
||||
h->dyn_relocs = NULL;
|
||||
|
||||
@@ -9092,7 +9129,9 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
@@ -8996,7 +9033,9 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
symbols which turn out to need copy relocs or are not
|
||||
dynamic. */
|
||||
|
||||
@@ -234,7 +234,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
&& ((h->def_dynamic
|
||||
&& !h->def_regular)
|
||||
|| (htab->root.dynamic_sections_created
|
||||
@@ -9103,6 +9142,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
@@ -9007,6 +9046,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||
Undefined weak syms won't yet be marked as dynamic. */
|
||||
if (h->dynindx == -1
|
||||
&& !h->forced_local
|
||||
@@ -242,7 +242,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
&& h->root.type == bfd_link_hash_undefweak
|
||||
&& !bfd_elf_link_record_dynamic_symbol (info, h))
|
||||
return false;
|
||||
@@ -10058,8 +10098,17 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
|
||||
@@ -9978,8 +10018,17 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
|
||||
Elf_Internal_Sym *sym)
|
||||
{
|
||||
struct elf_aarch64_link_hash_table *htab;
|
||||
@@ -260,7 +260,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
if (h->plt.offset != (bfd_vma) - 1)
|
||||
{
|
||||
asection *plt, *gotplt, *relplt;
|
||||
@@ -10094,7 +10143,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
|
||||
@@ -10014,7 +10063,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
|
||||
abort ();
|
||||
|
||||
elfNN_aarch64_create_small_pltn_entry (h, htab, output_bfd, info);
|
||||
@@ -269,7 +269,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
{
|
||||
/* Mark the symbol as undefined, rather than as defined in
|
||||
the .plt section. */
|
||||
@@ -10116,7 +10165,8 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
|
||||
@@ -10036,7 +10085,8 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
|
||||
&& elf_aarch64_hash_entry (h)->got_type == GOT_NORMAL
|
||||
/* Undefined weak symbol in static PIE resolves to 0 without
|
||||
any dynamic relocations. */
|
||||
@@ -279,7 +279,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
{
|
||||
Elf_Internal_Rela rela;
|
||||
bfd_byte *loc;
|
||||
@@ -10766,6 +10816,9 @@ const struct elf_size_info elfNN_aarch64_size_info =
|
||||
@@ -10704,6 +10754,9 @@ const struct elf_size_info elfNN_aarch64_size_info =
|
||||
#define elf_backend_init_index_section \
|
||||
_bfd_elf_init_2_index_sections
|
||||
|
||||
@@ -290,7 +290,7 @@ index 94c9a01069b..d39880b27c4 100644
|
||||
elfNN_aarch64_finish_dynamic_sections
|
||||
|
||||
diff --git a/ld/emulparams/aarch64elf.sh b/ld/emulparams/aarch64elf.sh
|
||||
index 72616b57691..42f708118fb 100644
|
||||
index aa051c76a7a..073d3a47b65 100644
|
||||
--- a/ld/emulparams/aarch64elf.sh
|
||||
+++ b/ld/emulparams/aarch64elf.sh
|
||||
@@ -1,4 +1,5 @@
|
||||
@@ -300,7 +300,7 @@ index 72616b57691..42f708118fb 100644
|
||||
ARCH=aarch64
|
||||
MACHINE=
|
||||
diff --git a/ld/emulparams/aarch64elf32.sh b/ld/emulparams/aarch64elf32.sh
|
||||
index 45bf31a179a..02e0cad8699 100644
|
||||
index 0565b7a066c..64821b1fc31 100644
|
||||
--- a/ld/emulparams/aarch64elf32.sh
|
||||
+++ b/ld/emulparams/aarch64elf32.sh
|
||||
@@ -1,4 +1,5 @@
|
||||
@@ -310,10 +310,10 @@ index 45bf31a179a..02e0cad8699 100644
|
||||
ARCH="aarch64:ilp32"
|
||||
MACHINE=
|
||||
diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
|
||||
index aa2859d4f73..c680dca8f86 100644
|
||||
index 91d58d8fe5a..e1ac4a6b139 100644
|
||||
--- a/ld/emultempl/aarch64elf.em
|
||||
+++ b/ld/emultempl/aarch64elf.em
|
||||
@@ -368,7 +368,7 @@ PARSE_AND_LIST_LONGOPTS='
|
||||
@@ -489,7 +489,7 @@ PARSE_AND_LIST_LONGOPTS='
|
||||
{ "no-apply-dynamic-relocs", no_argument, NULL, OPTION_NO_APPLY_DYNAMIC_RELOCS},
|
||||
'
|
||||
|
||||
@@ -323,10 +323,10 @@ index aa2859d4f73..c680dca8f86 100644
|
||||
" enum sizes\n"));
|
||||
fprintf (file, _(" --no-wchar-size-warning Don'\''t warn about objects with incompatible\n"
|
||||
diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
|
||||
index 863657e12f5..672974df511 100644
|
||||
index 431205fe644..ce288649513 100644
|
||||
--- a/ld/emultempl/elf.em
|
||||
+++ b/ld/emultempl/elf.em
|
||||
@@ -813,6 +813,7 @@ EOF
|
||||
@@ -814,6 +814,7 @@ EOF
|
||||
fi
|
||||
fragment <<EOF
|
||||
{"build-id", optional_argument, NULL, OPTION_BUILD_ID},
|
||||
@@ -334,7 +334,7 @@ index 863657e12f5..672974df511 100644
|
||||
{"package-metadata", optional_argument, NULL, OPTION_PACKAGE_METADATA},
|
||||
{"compress-debug-sections", required_argument, NULL, OPTION_COMPRESS_DEBUG},
|
||||
{"rosegment", no_argument, NULL, OPTION_ROSEGMENT},
|
||||
@@ -892,6 +893,18 @@ gld${EMULATION_NAME}_handle_option (int optc)
|
||||
@@ -901,6 +902,18 @@ gld${EMULATION_NAME}_handle_option (int optc)
|
||||
case OPTION_NO_ROSEGMENT:
|
||||
link_info.one_rosegment = false;
|
||||
break;
|
||||
@@ -354,7 +354,7 @@ index 863657e12f5..672974df511 100644
|
||||
|
||||
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
||||
diff --git a/ld/ldelf.c b/ld/ldelf.c
|
||||
index 09691609fc0..5769b4aa0f9 100644
|
||||
index f4f27fc3873..4028cbabdc7 100644
|
||||
--- a/ld/ldelf.c
|
||||
+++ b/ld/ldelf.c
|
||||
@@ -55,6 +55,9 @@ const char *ldelf_emit_note_gnu_build_id;
|
||||
@@ -367,7 +367,7 @@ index 09691609fc0..5769b4aa0f9 100644
|
||||
/* These variables are required to pass information back and forth
|
||||
between after_open and check_needed and stat_needed and vercheck. */
|
||||
|
||||
@@ -1209,8 +1212,93 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
|
||||
@@ -1213,8 +1216,93 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
|
||||
*save_input_bfd_tail = NULL;
|
||||
}
|
||||
|
||||
@@ -382,7 +382,7 @@ index 09691609fc0..5769b4aa0f9 100644
|
||||
+ unsigned char *contents;
|
||||
+ bfd_size_type size;
|
||||
+ file_ptr position;
|
||||
|
||||
+
|
||||
+ name = t->o->nx_module_name.name;
|
||||
+ asec = t->o->nx_module_name.sec;
|
||||
+ if (bfd_is_abs_section (asec->output_section))
|
||||
@@ -413,7 +413,7 @@ index 09691609fc0..5769b4aa0f9 100644
|
||||
+ return (bfd_seek (abfd, position, SEEK_SET) == 0
|
||||
+ && bfd_write (contents, size, abfd) == size);
|
||||
+}
|
||||
+
|
||||
|
||||
+/* Make .nx-module-name section, and set up elf_tdata->nx_module_name. */
|
||||
+
|
||||
+static bool
|
||||
@@ -462,7 +462,7 @@ index 09691609fc0..5769b4aa0f9 100644
|
||||
void
|
||||
ldelf_before_plugin_all_symbols_read (int use_libpath, int native,
|
||||
int is_linux, int is_freebsd,
|
||||
@@ -1289,6 +1377,24 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
|
||||
@@ -1291,6 +1379,24 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -488,7 +488,7 @@ index 09691609fc0..5769b4aa0f9 100644
|
||||
|
||||
/* Do not allow executable files to be used as inputs to the link. */
|
||||
diff --git a/ld/ldelf.h b/ld/ldelf.h
|
||||
index 239194772c4..68516dbf45e 100644
|
||||
index e8b7c8c7eb8..0b76923d834 100644
|
||||
--- a/ld/ldelf.h
|
||||
+++ b/ld/ldelf.h
|
||||
@@ -20,6 +20,7 @@
|
||||
@@ -497,13 +497,13 @@ index 239194772c4..68516dbf45e 100644
|
||||
extern const char *ldelf_emit_note_fdo_package_metadata;
|
||||
+extern const char *ldelf_emit_nx_module_name;
|
||||
|
||||
extern void ldelf_finish (void);
|
||||
extern void ldelf_after_parse (void);
|
||||
extern bool ldelf_load_symbols (lang_input_statement_type *);
|
||||
diff --git a/ld/ldlex.h b/ld/ldlex.h
|
||||
index defe3fcbbb9..30f31df990e 100644
|
||||
index c8d61478c60..a5bb71b1dc5 100644
|
||||
--- a/ld/ldlex.h
|
||||
+++ b/ld/ldlex.h
|
||||
@@ -186,6 +186,7 @@ enum option_values
|
||||
@@ -188,6 +188,7 @@ enum option_values
|
||||
/* Used by emultempl/elf.em, emultempl/pe.em and emultempl/pep.em. */
|
||||
OPTION_BUILD_ID,
|
||||
OPTION_EXCLUDE_LIBS,
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/gcc/config.gcc b/gcc/config.gcc
|
||||
index 95c91ee02be..4711542eee5 100644
|
||||
index 40b50dc969e..debd0f3d3b2 100644
|
||||
--- a/gcc/config.gcc
|
||||
+++ b/gcc/config.gcc
|
||||
@@ -1195,7 +1195,14 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
|
||||
@@ -1192,7 +1192,14 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
|
||||
tmake_file="${tmake_file} aarch64/t-aarch64"
|
||||
case $target in
|
||||
aarch64-*-elf*)
|
||||
@@ -18,7 +18,7 @@ index 95c91ee02be..4711542eee5 100644
|
||||
aarch64-*-fuchsia*)
|
||||
tm_file="${tm_file} fuchsia.h"
|
||||
diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h
|
||||
index 5396da9b2d6..87235d680ad 100644
|
||||
index 15cf1eb0389..aba0e9bbff9 100644
|
||||
--- a/gcc/config/aarch64/aarch64-elf-raw.h
|
||||
+++ b/gcc/config/aarch64/aarch64-elf-raw.h
|
||||
@@ -22,6 +22,7 @@
|
||||
@@ -30,10 +30,10 @@ index 5396da9b2d6..87235d680ad 100644
|
||||
#define ENDFILE_SPEC \
|
||||
" crtend%O%s crtn%O%s " \
|
||||
diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h
|
||||
index a05c0d3ded1..5551807e4c6 100644
|
||||
index a6ca5cf016b..90470fd6c44 100644
|
||||
--- a/gcc/config/aarch64/aarch64-opts.h
|
||||
+++ b/gcc/config/aarch64/aarch64-opts.h
|
||||
@@ -80,7 +80,8 @@ enum aarch64_tp_reg {
|
||||
@@ -91,7 +91,8 @@ enum aarch64_tp_reg {
|
||||
AARCH64_TPIDR_EL1 = 1,
|
||||
AARCH64_TPIDR_EL2 = 2,
|
||||
AARCH64_TPIDR_EL3 = 3,
|
||||
@@ -44,10 +44,10 @@ index a05c0d3ded1..5551807e4c6 100644
|
||||
|
||||
/* SVE vector register sizes. */
|
||||
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
|
||||
index 1beec94629d..90a9ec580f8 100644
|
||||
index 433ec975d7e..d4c3835a15a 100644
|
||||
--- a/gcc/config/aarch64/aarch64.cc
|
||||
+++ b/gcc/config/aarch64/aarch64.cc
|
||||
@@ -21060,8 +21060,24 @@ aarch64_load_tp (rtx target)
|
||||
@@ -21378,8 +21378,24 @@ aarch64_load_tp (rtx target)
|
||||
|| !register_operand (target, Pmode))
|
||||
target = gen_reg_rtx (Pmode);
|
||||
|
||||
@@ -75,10 +75,10 @@ index 1beec94629d..90a9ec580f8 100644
|
||||
}
|
||||
|
||||
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
|
||||
index 4fa1dfc7906..43a01fe3d56 100644
|
||||
index e8bd8c73c12..4fc0d8f4ded 100644
|
||||
--- a/gcc/config/aarch64/aarch64.h
|
||||
+++ b/gcc/config/aarch64/aarch64.h
|
||||
@@ -1377,6 +1377,10 @@ typedef struct
|
||||
@@ -1436,6 +1436,10 @@ typedef struct
|
||||
/* Check TLS Descriptors mechanism is selected. */
|
||||
#define TARGET_TLS_DESC (aarch64_tls_dialect == TLS_DESCRIPTORS)
|
||||
|
||||
@@ -90,10 +90,10 @@ index 4fa1dfc7906..43a01fe3d56 100644
|
||||
|
||||
/* When using the tiny addressing model conditional and unconditional branches
|
||||
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
|
||||
index dbde066f747..3e3198bf52f 100644
|
||||
index 031e621c98a..0fcf0aa703f 100644
|
||||
--- a/gcc/config/aarch64/aarch64.md
|
||||
+++ b/gcc/config/aarch64/aarch64.md
|
||||
@@ -7436,11 +7436,22 @@
|
||||
@@ -7702,11 +7702,22 @@
|
||||
(define_insn "aarch64_load_tp_hard"
|
||||
[(set (match_operand:DI 0 "register_operand" "=r")
|
||||
(unspec:DI [(const_int 0)] UNSPEC_TLS))]
|
||||
@@ -118,10 +118,10 @@ index dbde066f747..3e3198bf52f 100644
|
||||
;; instructions in the TLS stubs, in order to enable linker relaxation.
|
||||
;; Therefore we treat the stubs as an atomic sequence.
|
||||
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
|
||||
index 6356c419399..a6907ed0a0b 100644
|
||||
index f32d56d4ffa..7cf8d3ba3d4 100644
|
||||
--- a/gcc/config/aarch64/aarch64.opt
|
||||
+++ b/gcc/config/aarch64/aarch64.opt
|
||||
@@ -128,6 +128,9 @@ Enum(tp_reg) String(tpidr_el3) Value(AARCH64_TPIDR_EL3)
|
||||
@@ -137,6 +137,9 @@ Enum(tp_reg) String(tpidr_el3) Value(AARCH64_TPIDR_EL3)
|
||||
EnumValue
|
||||
Enum(tp_reg) String(tpidrro_el0) Value(AARCH64_TPIDRRO_EL0)
|
||||
|
||||
@@ -131,7 +131,7 @@ index 6356c419399..a6907ed0a0b 100644
|
||||
mtp=
|
||||
Target RejectNegative Joined Enum(tp_reg) Var(aarch64_tpidr_reg) Init(AARCH64_TPIDR_EL0) Save
|
||||
Specify the thread pointer register.
|
||||
@@ -329,7 +332,7 @@ TargetVariable
|
||||
@@ -338,7 +341,7 @@ TargetVariable
|
||||
long aarch64_stack_protector_guard_offset = 0
|
||||
|
||||
moutline-atomics
|
||||
@@ -141,10 +141,10 @@ index 6356c419399..a6907ed0a0b 100644
|
||||
|
||||
-param=aarch64-vect-compare-costs=
|
||||
diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64
|
||||
index 78713558e7d..76c0914d8ce 100644
|
||||
index 59571948479..f50c37d8b3c 100644
|
||||
--- a/gcc/config/aarch64/t-aarch64
|
||||
+++ b/gcc/config/aarch64/t-aarch64
|
||||
@@ -208,8 +208,10 @@ aarch64-ldp-fusion.o: $(srcdir)/config/aarch64/aarch64-ldp-fusion.cc \
|
||||
@@ -198,8 +198,10 @@ aarch64-ldp-fusion.o: $(srcdir)/config/aarch64/aarch64-ldp-fusion.cc \
|
||||
$(srcdir)/config/aarch64/aarch64-ldp-fusion.cc
|
||||
|
||||
comma=,
|
||||
@@ -238,26 +238,25 @@ index 00000000000..ab7b466aa71
|
||||
@@ -0,0 +1 @@
|
||||
+; Autogenerated by regenerate-opt-urls.py from gcc/config/devkitpro.opt and generated HTML
|
||||
diff --git a/gcc/config/i386/host-mingw32.cc b/gcc/config/i386/host-mingw32.cc
|
||||
index 42563982e42..923dc198a7e 100644
|
||||
index e083f49f3da..1b81e7e88ce 100644
|
||||
--- a/gcc/config/i386/host-mingw32.cc
|
||||
+++ b/gcc/config/i386/host-mingw32.cc
|
||||
@@ -93,7 +93,10 @@ mingw32_gt_pch_get_address (size_t size, int)
|
||||
for NT system dlls is in 0x70000000 to 0x78000000 range.
|
||||
@@ -94,6 +94,10 @@ mingw32_gt_pch_get_address (size_t size, int)
|
||||
If we allocate at bottom we need to reserve the address as early
|
||||
as possible and at the same point in each invocation. */
|
||||
-
|
||||
+
|
||||
|
||||
+#if __MINGW64__
|
||||
+ size = UINT64_C(64 * 1024 * 1024 * 1024);
|
||||
+#endif
|
||||
+
|
||||
res = VirtualAlloc (NULL, size,
|
||||
MEM_RESERVE | MEM_TOP_DOWN,
|
||||
PAGE_NOACCESS);
|
||||
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
|
||||
index 728332b8153..47fc03eb8c8 100644
|
||||
index 4fd87f2c4a1..6af06f7b032 100644
|
||||
--- a/gcc/gcc.cc
|
||||
+++ b/gcc/gcc.cc
|
||||
@@ -881,6 +881,11 @@ proper position among the other output files. */
|
||||
@@ -888,6 +888,11 @@ proper position among the other output files. */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -269,7 +268,7 @@ index 728332b8153..47fc03eb8c8 100644
|
||||
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */
|
||||
#ifndef STARTFILE_SPEC
|
||||
#define STARTFILE_SPEC \
|
||||
@@ -1208,6 +1213,7 @@ static const char *link_spec = LINK_SPEC;
|
||||
@@ -1215,6 +1220,7 @@ static const char *link_spec = LINK_SPEC;
|
||||
static const char *lib_spec = LIB_SPEC;
|
||||
static const char *link_gomp_spec = "";
|
||||
static const char *libgcc_spec = LIBGCC_SPEC;
|
||||
@@ -277,7 +276,7 @@ index 728332b8153..47fc03eb8c8 100644
|
||||
static const char *endfile_spec = ENDFILE_SPEC;
|
||||
static const char *startfile_spec = STARTFILE_SPEC;
|
||||
static const char *linker_name_spec = LINKER_NAME;
|
||||
@@ -1720,6 +1726,7 @@ static struct spec_list static_specs[] =
|
||||
@@ -1727,6 +1733,7 @@ static struct spec_list static_specs[] =
|
||||
INIT_STATIC_SPEC ("lib", &lib_spec),
|
||||
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
|
||||
INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
|
||||
@@ -299,7 +298,7 @@ index ea689a353c8..98f9d9b21b7 100755
|
||||
;;
|
||||
*)
|
||||
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
|
||||
index 38d3859a73c..f97358d9787 100644
|
||||
index b9767cd1eee..362689c9f0b 100644
|
||||
--- a/libgcc/crtstuff.c
|
||||
+++ b/libgcc/crtstuff.c
|
||||
@@ -326,7 +326,7 @@ register_tm_clones (void)
|
||||
@@ -312,7 +311,7 @@ index 38d3859a73c..f97358d9787 100644
|
||||
in every shared-object; in a main program its value is zero. The
|
||||
object should in any case be protected. This means the instance
|
||||
diff --git a/libgcc/gthr.h b/libgcc/gthr.h
|
||||
index 33c2d8ff630..2a0a9c1e87e 100644
|
||||
index 557417997f4..1269ece007f 100644
|
||||
--- a/libgcc/gthr.h
|
||||
+++ b/libgcc/gthr.h
|
||||
@@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
@@ -325,10 +324,10 @@ index 33c2d8ff630..2a0a9c1e87e 100644
|
||||
#define GTHREAD_USE_WEAK 0
|
||||
#endif
|
||||
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
|
||||
index 422a0f4bd0a..ee09ada9170 100644
|
||||
index 537774c2668..76da4f35b96 100644
|
||||
--- a/libstdc++-v3/include/Makefile.am
|
||||
+++ b/libstdc++-v3/include/Makefile.am
|
||||
@@ -1429,6 +1429,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
||||
@@ -1436,6 +1436,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
||||
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
|
||||
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
|
||||
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
|
||||
@@ -337,10 +336,10 @@ index 422a0f4bd0a..ee09ada9170 100644
|
||||
< $< > $@
|
||||
|
||||
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
|
||||
index 9fd4ab4848c..beea48941a3 100644
|
||||
index 7b96b2207f8..817de242772 100644
|
||||
--- a/libstdc++-v3/include/Makefile.in
|
||||
+++ b/libstdc++-v3/include/Makefile.in
|
||||
@@ -1903,6 +1903,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
||||
@@ -1910,6 +1910,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
||||
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
|
||||
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
|
||||
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
|
||||
File diff suppressed because one or more lines are too long
@@ -62,7 +62,7 @@ then
|
||||
--enable-lto \
|
||||
--disable-tm-clone-registry \
|
||||
--disable-__cxa_atexit \
|
||||
--with-bugurl="https://github.com/devkitPro/buildscripts/issues" --with-pkgversion="devkitA64 release 27" \
|
||||
--with-bugurl="https://github.com/devkitPro/buildscripts/issues" --with-pkgversion="devkitA64 release 29" \
|
||||
$CROSS_PARAMS \
|
||||
$CROSS_GCC_PARAMS \
|
||||
$EXTRA_GCC_PARAMS \
|
||||
@@ -145,5 +145,3 @@ then
|
||||
$MAKE install || { echo "Error installing gcc stage2"; exit 1; }
|
||||
touch installed-stage2
|
||||
fi
|
||||
|
||||
rm -fr $prefix/$target/sys-include
|
||||
|
||||
@@ -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 \
|
||||
if [ -f $$i ]; then \
|
||||
diff --git a/newlib/configure.host b/newlib/configure.host
|
||||
index ff2e51275..7ef23d5f6 100644
|
||||
index ff2e51275..dfa957d55 100644
|
||||
--- a/newlib/configure.host
|
||||
+++ b/newlib/configure.host
|
||||
@@ -646,6 +646,14 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
|
||||
@@ -11041,7 +11041,7 @@ index ff2e51275..7ef23d5f6 100644
|
||||
arm*-*-pe)
|
||||
syscall_dir=syscalls
|
||||
newlib_cflags="${newlib_cflags} -DHAVE_SYSCONF_PAGESIZE"
|
||||
@@ -818,7 +826,13 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
|
||||
@@ -818,7 +826,14 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
|
||||
default_newlib_io_long_long="yes"
|
||||
newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
|
||||
;;
|
||||
@@ -11049,6 +11049,7 @@ index ff2e51275..7ef23d5f6 100644
|
||||
+ powerpc*-*-eabi*)
|
||||
+ default_newlib_io_c99_formats="yes"
|
||||
+ default_newlib_io_long_long="yes"
|
||||
+ default_newlib_io_pos_args="yes"
|
||||
+ newlib_cflags="${newlib_cflags} -DHAVE_ASSERT_FUNC -DABORT_PROVIDED -DCUSTOM_MALLOC_LOCK -D__DYNAMIC_REENT__ -DGETREENT_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -D__DEFAULT_UTF8__"
|
||||
+ newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections"
|
||||
+ syscall_dir=syscalls
|
||||
@@ -11960,7 +11961,7 @@ index d8dfdbd82..a85b5a99b 100644
|
||||
return 0;
|
||||
}
|
||||
diff --git a/newlib/libc/stdio/vfprintf.c b/newlib/libc/stdio/vfprintf.c
|
||||
index feb1fab56..7a59eb21f 100644
|
||||
index feb1fab56..99ec9c458 100644
|
||||
--- a/newlib/libc/stdio/vfprintf.c
|
||||
+++ b/newlib/libc/stdio/vfprintf.c
|
||||
@@ -108,6 +108,8 @@ Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>,
|
||||
@@ -11972,7 +11973,28 @@ index feb1fab56..7a59eb21f 100644
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
/*static char *sccsid = "from: @(#)vfprintf.c 5.50 (Berkeley) 12/16/92";*/
|
||||
static char *rcsid = "$Id$";
|
||||
@@ -1188,7 +1190,7 @@ reswitch: switch (ch) {
|
||||
@@ -548,12 +550,19 @@ _VFPRINTF_R (struct _reent *data,
|
||||
#endif
|
||||
|
||||
/* Macros to support positional arguments */
|
||||
+
|
||||
+#if _ARCH_PPC
|
||||
+#define __VALIST_PTR(arg) ((va_list *)(arg))
|
||||
+#else
|
||||
+#define __VALIST_PTR(arg) (&(arg))
|
||||
+#endif
|
||||
+
|
||||
#ifndef _NO_POS_ARGS
|
||||
# define GET_ARG(n, ap, type) \
|
||||
(is_pos_arg \
|
||||
? (n < numargs \
|
||||
? args[n].val_##type \
|
||||
- : get_arg (data, n, fmt_anchor, &ap, &numargs, args, \
|
||||
+ : get_arg (data, n, fmt_anchor, __VALIST_PTR(ap), &numargs, args, \
|
||||
arg_type, &saved_fmt)->val_##type) \
|
||||
: (arg_index++ < numargs \
|
||||
? args[n].val_##type \
|
||||
@@ -1188,7 +1197,7 @@ reswitch: switch (ch) {
|
||||
string:
|
||||
#endif
|
||||
sign = '\0';
|
||||
@@ -11981,7 +12003,7 @@ index feb1fab56..7a59eb21f 100644
|
||||
/* Behavior is undefined if the user passed a
|
||||
NULL string when precision is not 0.
|
||||
However, if we are not optimizing for size,
|
||||
@@ -1198,7 +1200,7 @@ string:
|
||||
@@ -1198,7 +1207,7 @@ string:
|
||||
size = ((unsigned) prec > 6U) ? 6 : prec;
|
||||
}
|
||||
else
|
||||
@@ -11991,7 +12013,7 @@ index feb1fab56..7a59eb21f 100644
|
||||
if (ch == 'S' || (flags & LONGINT)) {
|
||||
mbstate_t ps;
|
||||
diff --git a/newlib/libc/stdio/vfscanf.c b/newlib/libc/stdio/vfscanf.c
|
||||
index 71e2c3e22..bd2d635ed 100644
|
||||
index 71e2c3e22..960c41608 100644
|
||||
--- a/newlib/libc/stdio/vfscanf.c
|
||||
+++ b/newlib/libc/stdio/vfscanf.c
|
||||
@@ -74,6 +74,8 @@ These are GNU extensions.
|
||||
@@ -12003,8 +12025,28 @@ index 71e2c3e22..bd2d635ed 100644
|
||||
#include <_ansi.h>
|
||||
#include <reent.h>
|
||||
#include <newlib.h>
|
||||
@@ -572,12 +574,18 @@ __SVFSCANF_R (struct _reent *rptr,
|
||||
{10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
|
||||
|
||||
/* Macro to support positional arguments */
|
||||
+#if _ARCH_PPC
|
||||
+#define __VALIST_PTR(arg) ((va_list *)(arg))
|
||||
+#else
|
||||
+#define __VALIST_PTR(arg) (&(arg))
|
||||
+#endif
|
||||
+
|
||||
#ifndef _NO_POS_ARGS
|
||||
# define GET_ARG(n, ap, type) \
|
||||
((type) (is_pos_arg \
|
||||
? (n < numargs \
|
||||
? args[n] \
|
||||
- : get_arg (n, &ap, &numargs, args)) \
|
||||
+ : get_arg (n, __VALIST_PTR(ap), &numargs, args)) \
|
||||
: (arg_index++ < numargs \
|
||||
? args[n] \
|
||||
: (numargs < MAX_POS_ARGS \
|
||||
diff --git a/newlib/libc/stdio/vfwprintf.c b/newlib/libc/stdio/vfwprintf.c
|
||||
index 5a5c36829..3eaca0ce6 100644
|
||||
index 5a5c36829..3ecba7bd4 100644
|
||||
--- a/newlib/libc/stdio/vfwprintf.c
|
||||
+++ b/newlib/libc/stdio/vfwprintf.c
|
||||
@@ -92,6 +92,9 @@ SEEALSO
|
||||
@@ -12017,8 +12059,28 @@ index 5a5c36829..3eaca0ce6 100644
|
||||
#include <newlib.h>
|
||||
|
||||
#ifdef INTEGER_ONLY
|
||||
@@ -538,11 +541,18 @@ _VFWPRINTF_R (struct _reent *data,
|
||||
|
||||
/* Macros to support positional arguments */
|
||||
#ifndef _NO_POS_ARGS
|
||||
+
|
||||
+#if _ARCH_PPC
|
||||
+#define __VALIST_PTR(arg) ((va_list *)(arg))
|
||||
+#else
|
||||
+#define __VALIST_PTR(arg) (&(arg))
|
||||
+#endif
|
||||
+
|
||||
# define GET_ARG(n, ap, type) \
|
||||
(is_pos_arg \
|
||||
? (n < numargs \
|
||||
? args[n].val_##type \
|
||||
- : get_arg (data, n, fmt_anchor, &ap, &numargs, args, \
|
||||
+ : get_arg (data, n, fmt_anchor, __VALIST_PTR(ap), &numargs, args, \
|
||||
arg_type, &saved_fmt)->val_##type) \
|
||||
: (arg_index++ < numargs \
|
||||
? args[n].val_##type \
|
||||
diff --git a/newlib/libc/stdio/vfwscanf.c b/newlib/libc/stdio/vfwscanf.c
|
||||
index d2f91dde2..de80cc0c0 100644
|
||||
index d2f91dde2..7c44f29fb 100644
|
||||
--- a/newlib/libc/stdio/vfwscanf.c
|
||||
+++ b/newlib/libc/stdio/vfwscanf.c
|
||||
@@ -74,6 +74,9 @@ PORTABILITY
|
||||
@@ -12031,6 +12093,26 @@ index d2f91dde2..de80cc0c0 100644
|
||||
#include <_ansi.h>
|
||||
#include <reent.h>
|
||||
#include <newlib.h>
|
||||
@@ -479,11 +482,18 @@ __SVFWSCANF_R (struct _reent *rptr,
|
||||
|
||||
/* Macro to support positional arguments */
|
||||
#ifndef _NO_POS_ARGS
|
||||
+
|
||||
+#if _ARCH_PPC
|
||||
+#define __VALIST_PTR(arg) ((va_list *)(arg))
|
||||
+#else
|
||||
+#define __VALIST_PTR(arg) (&(arg))
|
||||
+#endif
|
||||
+
|
||||
# define GET_ARG(n, ap, type) \
|
||||
((type) (is_pos_arg \
|
||||
? (n < numargs \
|
||||
? args[n] \
|
||||
- : get_arg (n, &ap, &numargs, args)) \
|
||||
+ : get_arg (n, __VALIST_PTR(ap), &numargs, args)) \
|
||||
: (arg_index++ < numargs \
|
||||
? args[n] \
|
||||
: (numargs < MAX_POS_ARGS \
|
||||
diff --git a/newlib/libc/stdlib/__call_atexit.c b/newlib/libc/stdlib/__call_atexit.c
|
||||
index 710440389..985e720bf 100644
|
||||
--- a/newlib/libc/stdlib/__call_atexit.c
|
||||
|
||||
@@ -14,3 +14,12 @@ cd $BUILDDIR
|
||||
tar -xvf $SRCDIR/devkitppc-rules-$DKPPC_RULES_VER.tar.gz
|
||||
cd devkitppc-rules-$DKPPC_RULES_VER
|
||||
$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-headers=../../newlib-$NEWLIB_VER/newlib/libc/include \
|
||||
--prefix=$prefix \
|
||||
--with-bugurl="https://github.com/devkitpro/buildscripts/issues" --with-pkgversion="devkitPPC release 47" \
|
||||
--with-bugurl="https://github.com/devkitpro/buildscripts/issues" --with-pkgversion="devkitPPC release 48" \
|
||||
$CROSS_PARAMS \
|
||||
$CROSS_GCC_PARAMS \
|
||||
$EXTRA_GCC_PARAMS \
|
||||
@@ -183,13 +183,4 @@ then
|
||||
touch installed-stage2
|
||||
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
|
||||
|
||||
@@ -39,8 +39,8 @@ case "$VERSION" in
|
||||
toolchain=DEVKITARM
|
||||
;;
|
||||
"2" )
|
||||
GCC_VER=15.1.0
|
||||
BINUTILS_VER=2.44
|
||||
GCC_VER=15.2.0
|
||||
BINUTILS_VER=2.45.1
|
||||
MN_BINUTILS_VER=2.24
|
||||
NEWLIB_VER=4.5.0.20241231
|
||||
basedir='dkppc'
|
||||
@@ -49,9 +49,9 @@ case "$VERSION" in
|
||||
toolchain=DEVKITPPC
|
||||
;;
|
||||
"3" )
|
||||
GCC_VER=14.2.0
|
||||
BINUTILS_VER=2.43.1
|
||||
NEWLIB_VER=4.4.0.20231231
|
||||
GCC_VER=15.2.0
|
||||
BINUTILS_VER=2.45.1
|
||||
NEWLIB_VER=4.5.0.20241231
|
||||
basedir='dka64'
|
||||
package=devkitA64
|
||||
target=aarch64-none-elf
|
||||
|
||||
Reference in New Issue
Block a user