mirror of
https://github.com/devkitPro/buildscripts.git
synced 2026-08-21 01:44:16 -05:00
Compare commits
80 Commits
devkitARM_
...
devkitARM_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
24164cca86 | ||
|
|
d6434abd04 | ||
|
|
55eb881d09 | ||
|
|
3a70b58ce2 | ||
|
|
3fedda9d74 | ||
|
|
7e4aed9985 | ||
|
|
1b09b3a824 | ||
|
|
a133b4d622 | ||
|
|
f1428f47e8 | ||
|
|
1a3f555292 | ||
|
|
6ea8070246 | ||
|
|
57928f194f | ||
|
|
6628e681e2 | ||
|
|
72ca8f813f | ||
|
|
ce700b701d | ||
|
|
8b3fb07490 | ||
|
|
5599e42c8c | ||
|
|
57b7f68921 | ||
|
|
88bd526925 | ||
|
|
d3d636cb54 | ||
|
|
78eb432d11 | ||
|
|
aa76a0ea46 | ||
|
|
2429e9ee7d | ||
|
|
f0b081246c | ||
|
|
a280f18794 | ||
|
|
c012acf8d8 | ||
|
|
19217fdc51 | ||
|
|
aad3392808 | ||
|
|
7b0a333842 | ||
|
|
41922724cb | ||
|
|
2422223439 | ||
|
|
23afd9959c | ||
|
|
03bc549c5c | ||
|
|
5ae950ae8b | ||
|
|
c62e968c1e | ||
|
|
ee693ddac0 | ||
|
|
ff5a6b07d3 | ||
|
|
80f5db66de | ||
|
|
4ef6c0321a | ||
|
|
b4e8b963f3 | ||
|
|
dbd33d2312 | ||
|
|
3f5312c34a | ||
|
|
1ac48f5437 | ||
|
|
9d8f579c1c | ||
|
|
de681b1691 | ||
|
|
dfb3d82a96 | ||
|
|
7318227e11 | ||
|
|
c04144a5cf | ||
|
|
c5f34ab49b | ||
|
|
eb428eb450 | ||
|
|
032100b82e | ||
|
|
d051cd518b | ||
|
|
5daf9f7bd1 | ||
|
|
f06196c43c | ||
|
|
5926a76d64 | ||
|
|
12a06c469f | ||
|
|
67729ec64c | ||
|
|
d0a05636ab | ||
|
|
7d1a2ac929 | ||
|
|
9332465b06 | ||
|
|
3b8a45ed5b | ||
|
|
cc0e589e56 | ||
|
|
06e7ade19c | ||
|
|
dec683a0ed | ||
|
|
4319248cf8 | ||
|
|
80a329157a | ||
|
|
c8273a1082 | ||
|
|
4defc0f22b | ||
|
|
d158002ce3 | ||
|
|
62b6ba1484 | ||
|
|
e3dca6f33f | ||
|
|
db4e394ab8 | ||
|
|
8f6a2cf470 | ||
|
|
3429d8162f | ||
|
|
a048d2e89c | ||
|
|
94cabdf12a | ||
|
|
6a2cfec336 | ||
|
|
7b03d726b6 | ||
|
|
9df0987259 | ||
|
|
923724a397 |
@@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# devkitARM release 60
|
# devkitARM release 66
|
||||||
# devkitPPC release 41
|
# devkitPPC release 46.1
|
||||||
# devkitA64 release 21
|
# devkitA64 release 27
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
if [ 0 -eq 1 ] ; then
|
if [ 0 -eq 1 ] ; then
|
||||||
@@ -27,15 +27,27 @@ echo
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
DKARM_RULES_VER=1.2.1
|
DKARM_RULES_VER=1.6.1
|
||||||
DKARM_CRTLS_VER=1.1.1
|
DKARM_CRTLS_VER=1.2.7
|
||||||
|
|
||||||
DKPPC_RULES_VER=1.1.0
|
DKPPC_RULES_VER=1.2.1
|
||||||
|
|
||||||
DKA64_RULES_VER=1.0.1
|
DKA64_RULES_VER=1.1.1
|
||||||
|
|
||||||
OSXMIN=${OSXMIN:-10.9}
|
OSXMIN=${OSXMIN:-10.9}
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# find proper patch
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
if [ -z "$PATCH" -a -x "$(which gpatch)" ]; then PATCH=$(which gpatch); fi
|
||||||
|
if [ -z "$PATCH" -a -x "$(which patch)" ]; then PATCH=$(which patch); fi
|
||||||
|
if [ -z "$PATCH" ]; then
|
||||||
|
echo no patch found
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo use $PATCH as patch
|
||||||
|
export PATCH
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
function extract_and_patch {
|
function extract_and_patch {
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
@@ -46,7 +58,7 @@ function extract_and_patch {
|
|||||||
fi
|
fi
|
||||||
if [[ ! -f patched-$1-$2 && -f $patchdir/$1-$2.patch ]]; then
|
if [[ ! -f patched-$1-$2 && -f $patchdir/$1-$2.patch ]]; then
|
||||||
echo "patching $1-$2"
|
echo "patching $1-$2"
|
||||||
patch -p1 -d $1-$2 -i $patchdir/$1-$2.patch || { echo "Error patching $1"; exit 1; }
|
$PATCH -p1 -d $1-$2 -i $patchdir/$1-$2.patch || { echo "Error patching $1"; exit 1; }
|
||||||
touch patched-$1-$2
|
touch patched-$1-$2
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -72,20 +84,18 @@ fi
|
|||||||
. ./select_toolchain.sh
|
. ./select_toolchain.sh
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# Get preferred installation directory and set paths to the sources
|
# Legacy versions of these scripts allowed the selection of a prefix which is
|
||||||
|
# no longer supported. Since adopting pacman and providing precompiled binaries
|
||||||
|
# of "portlibs" everything we distribute is intended to work within opt/devkitpro
|
||||||
|
#
|
||||||
|
# Rather than attempting to repackage our work for exotic linux distributions it
|
||||||
|
# would be much better for everyone concerned if efforts were made to provide
|
||||||
|
# pacman and whatever support is necessary to allow the binaries we distribute to
|
||||||
|
# work as expected.
|
||||||
|
#
|
||||||
|
# See https://github.com/devkitPro/pacman and https://devkitpro.org/wiki/devkitPro_pacman
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
INSTALLDIR=/opt/devkitpro
|
||||||
if [ ! -z "$BUILD_DKPRO_INSTALLDIR" ] ; then
|
|
||||||
INSTALLDIR="$BUILD_DKPRO_INSTALLDIR"
|
|
||||||
else
|
|
||||||
echo
|
|
||||||
echo "Please enter the directory where you would like '$package' to be installed:"
|
|
||||||
echo "for mingw/msys you must use <drive>:/<install path> or you will have include path problems"
|
|
||||||
echo "this is the top level directory for devkitpro, i.e. e:/devkitPro"
|
|
||||||
|
|
||||||
read -e INSTALLDIR
|
|
||||||
echo
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ ! -z "$INSTALLDIR" ] && mkdir -p $INSTALLDIR && touch $INSTALLDIR/nonexistantfile && rm $INSTALLDIR/nonexistantfile || exit 1;
|
[ ! -z "$INSTALLDIR" ] && mkdir -p $INSTALLDIR && touch $INSTALLDIR/nonexistantfile && rm $INSTALLDIR/nonexistantfile || exit 1;
|
||||||
|
|
||||||
|
|||||||
@@ -13,12 +13,6 @@
|
|||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
BUILD_DKPRO_PACKAGE=0
|
BUILD_DKPRO_PACKAGE=0
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# Toolchain installation directory, comment if not specified
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
#BUILD_DKPRO_INSTALLDIR=/opt/devkitpro
|
|
||||||
#BUILD_DKPRO_INSTALLDIR=c:/devkitPro
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# Path to previously downloaded source packages, comment if not specified
|
# Path to previously downloaded source packages, comment if not specified
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
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 5741c60264..fb5d9d069c 100644
|
index b89d3dda05d..1ad8a9c088d 100644
|
||||||
--- a/bfd/elf-bfd.h
|
--- a/bfd/elf-bfd.h
|
||||||
+++ b/bfd/elf-bfd.h
|
+++ b/bfd/elf-bfd.h
|
||||||
@@ -1789,6 +1789,14 @@ struct output_elf_obj_tdata
|
@@ -2005,6 +2005,14 @@ struct output_elf_obj_tdata
|
||||||
asection *sec;
|
asection *sec;
|
||||||
} build_id;
|
} package_metadata;
|
||||||
|
|
||||||
+ /* Data for .nx-module-name. */
|
+ /* Data for .nx-module-name. */
|
||||||
+ struct
|
+ struct
|
||||||
+ {
|
+ {
|
||||||
+ bfd_boolean (*after_write_object_contents) (bfd *);
|
+ bool (*after_write_object_contents) (bfd *);
|
||||||
+ const char *name;
|
+ const char *name;
|
||||||
+ asection *sec;
|
+ asection *sec;
|
||||||
+ } nx_module_name;
|
+ } nx_module_name;
|
||||||
@@ -18,29 +18,29 @@ index 5741c60264..fb5d9d069c 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 eb3e1828e9..bc6bb48804 100644
|
index f85f79e1e35..d27f05b92ae 100644
|
||||||
--- a/bfd/elf.c
|
--- a/bfd/elf.c
|
||||||
+++ b/bfd/elf.c
|
+++ b/bfd/elf.c
|
||||||
@@ -6514,6 +6514,14 @@ _bfd_elf_write_object_contents (bfd *abfd)
|
@@ -7166,6 +7166,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;
|
||||||
|
|
||||||
+ /* Write out the NX module name. */
|
+ /* Write out the NX module name. */
|
||||||
+ if (t->o->nx_module_name.after_write_object_contents != NULL)
|
+ if (t->o->nx_module_name.after_write_object_contents != NULL)
|
||||||
+ {
|
+ {
|
||||||
+ failed = !(*t->o->nx_module_name.after_write_object_contents) (abfd);
|
+ failed = !(*t->o->nx_module_name.after_write_object_contents) (abfd);
|
||||||
+ if (failed)
|
+ if (failed)
|
||||||
+ return FALSE;
|
+ return false;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
/* This is last since write_shdrs_and_ehdr can touch i_shdrp[0]. */
|
/* This is last since write_shdrs_and_ehdr can touch i_shdrp[0]. */
|
||||||
if (t->o->build_id.after_write_object_contents != NULL)
|
if (t->o->build_id.after_write_object_contents != NULL
|
||||||
return (*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 faa27611d4..888af6bcd8 100644
|
index 94c9a01069b..d39880b27c4 100644
|
||||||
--- a/bfd/elfnn-aarch64.c
|
--- a/bfd/elfnn-aarch64.c
|
||||||
+++ b/bfd/elfnn-aarch64.c
|
+++ b/bfd/elfnn-aarch64.c
|
||||||
@@ -2341,6 +2341,12 @@ enum elf_aarch64_stub_type
|
@@ -2441,6 +2441,12 @@ enum elf_aarch64_stub_type
|
||||||
aarch64_stub_erratum_843419_veneer,
|
aarch64_stub_erratum_843419_veneer,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ index faa27611d4..888af6bcd8 100644
|
|||||||
struct elf_aarch64_stub_hash_entry
|
struct elf_aarch64_stub_hash_entry
|
||||||
{
|
{
|
||||||
/* Base hash table entry structure. */
|
/* Base hash table entry structure. */
|
||||||
@@ -6436,11 +6442,13 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
@@ -6969,11 +6975,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;
|
||||||
@@ -62,12 +62,12 @@ index faa27611d4..888af6bcd8 100644
|
|||||||
bfd_reloc_status_type r;
|
bfd_reloc_status_type r;
|
||||||
arelent bfd_reloc;
|
arelent bfd_reloc;
|
||||||
char sym_type;
|
char sym_type;
|
||||||
bfd_boolean unresolved_reloc = FALSE;
|
bool unresolved_reloc = false;
|
||||||
+ bfd_boolean resolved_to_zero = FALSE;
|
+ bool resolved_to_zero = false;
|
||||||
char *error_message = NULL;
|
char *error_message = NULL;
|
||||||
|
|
||||||
r_symndx = ELFNN_R_SYM (rel->r_info);
|
r_symndx = ELFNN_R_SYM (rel->r_info);
|
||||||
@@ -6576,6 +6584,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
@@ -7113,6 +7121,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 faa27611d4..888af6bcd8 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:
|
||||||
@@ -6599,7 +6611,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
@@ -7136,7 +7148,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 faa27611d4..888af6bcd8 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);
|
||||||
@@ -6694,7 +6706,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
@@ -7231,7 +7243,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 faa27611d4..888af6bcd8 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);
|
||||||
@@ -6743,7 +6755,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
|
@@ -7280,7 +7292,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,17 +105,14 @@ index faa27611d4..888af6bcd8 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);
|
||||||
@@ -7086,6 +7098,26 @@ need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
|
@@ -7606,6 +7618,23 @@ need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
+/* Remove undefined weak symbol from the dynamic symbol table if it
|
+/* Remove undefined weak symbol from the dynamic symbol table if it
|
||||||
+ is resolved to 0. */
|
+ is resolved to 0. */
|
||||||
+
|
+
|
||||||
+extern bfd_boolean
|
+static bool
|
||||||
+elfNN_aarch64_elf_fixup_symbol (struct bfd_link_info *, struct elf_link_hash_entry *);
|
|
||||||
+
|
|
||||||
+bfd_boolean
|
|
||||||
+elfNN_aarch64_elf_fixup_symbol (struct bfd_link_info *info,
|
+elfNN_aarch64_elf_fixup_symbol (struct bfd_link_info *info,
|
||||||
+ struct elf_link_hash_entry *h)
|
+ struct elf_link_hash_entry *h)
|
||||||
+{
|
+{
|
||||||
@@ -126,21 +123,21 @@ index faa27611d4..888af6bcd8 100644
|
|||||||
+ _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
|
+ _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
|
||||||
+ h->dynstr_index);
|
+ h->dynstr_index);
|
||||||
+ }
|
+ }
|
||||||
+ return TRUE;
|
+ return true;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
/* 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
|
||||||
@@ -8286,6 +8318,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
@@ -8824,6 +8853,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;
|
||||||
+ bfd_boolean resolved_to_zero;
|
+ bool resolved_to_zero;
|
||||||
|
|
||||||
/* 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)
|
||||||
@@ -8305,6 +8338,10 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
@@ -8843,6 +8873,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);
|
||||||
|
|
||||||
@@ -151,7 +148,7 @@ index faa27611d4..888af6bcd8 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
|
||||||
@@ -8314,7 +8351,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
@@ -8852,7 +8886,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. */
|
||||||
@@ -160,9 +157,9 @@ index faa27611d4..888af6bcd8 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))
|
||||||
@@ -8348,6 +8385,11 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
@@ -8886,6 +8920,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 += PLT_SMALL_ENTRY_SIZE;
|
s->size += htab->plt_entry_size;
|
||||||
|
|
||||||
+ /* There should be no PLT relocations against resolved undefined
|
+ /* There should be no PLT relocations against resolved undefined
|
||||||
+ weak symbols in the executable. */
|
+ weak symbols in the executable. */
|
||||||
@@ -172,15 +169,15 @@ index faa27611d4..888af6bcd8 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;
|
||||||
@@ -8370,6 +8412,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
@@ -8914,6 +8953,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||||
|
htab->variant_pcs = 1;
|
||||||
|
|
||||||
htab->root.srelplt->reloc_count++;
|
|
||||||
}
|
}
|
||||||
+ }
|
+ }
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
h->plt.offset = (bfd_vma) - 1;
|
h->plt.offset = (bfd_vma) - 1;
|
||||||
@@ -8382,9 +8425,6 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
@@ -8926,9 +8966,6 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||||
h->needs_plt = 0;
|
h->needs_plt = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,8 +186,8 @@ index faa27611d4..888af6bcd8 100644
|
|||||||
-
|
-
|
||||||
if (h->got.refcount > 0)
|
if (h->got.refcount > 0)
|
||||||
{
|
{
|
||||||
bfd_boolean dyn;
|
bool dyn;
|
||||||
@@ -8396,7 +8436,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
@@ -8940,7 +8977,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. */
|
||||||
@@ -199,7 +196,7 @@ index faa27611d4..888af6bcd8 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))
|
||||||
@@ -8410,7 +8450,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
@@ -8954,7 +8991,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;
|
||||||
@@ -208,7 +205,7 @@ index faa27611d4..888af6bcd8 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))
|
||||||
@@ -8446,7 +8486,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
@@ -8990,7 +9027,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;
|
||||||
@@ -217,16 +214,16 @@ index faa27611d4..888af6bcd8 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
|
||||||
@@ -8512,7 +8552,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
@@ -9072,7 +9109,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||||
visibility. */
|
visibility. */
|
||||||
if (eh->dyn_relocs != NULL && h->root.type == bfd_link_hash_undefweak)
|
if (h->dyn_relocs != NULL && h->root.type == bfd_link_hash_undefweak)
|
||||||
{
|
{
|
||||||
- if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
|
- if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
|
||||||
+ if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT || resolved_to_zero
|
+ if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT || resolved_to_zero
|
||||||
|| UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
|
|| UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
|
||||||
eh->dyn_relocs = NULL;
|
h->dyn_relocs = NULL;
|
||||||
|
|
||||||
@@ -8532,7 +8572,9 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
@@ -9092,7 +9129,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. */
|
||||||
|
|
||||||
@@ -237,20 +234,20 @@ index faa27611d4..888af6bcd8 100644
|
|||||||
&& ((h->def_dynamic
|
&& ((h->def_dynamic
|
||||||
&& !h->def_regular)
|
&& !h->def_regular)
|
||||||
|| (htab->root.dynamic_sections_created
|
|| (htab->root.dynamic_sections_created
|
||||||
@@ -8543,6 +8585,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
@@ -9103,6 +9142,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
|
||||||
+ && !resolved_to_zero
|
+ && !resolved_to_zero
|
||||||
&& 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;
|
||||||
@@ -9163,8 +9206,17 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
|
@@ -10058,8 +10098,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;
|
||||||
+ struct elf_aarch64_link_hash_entry *eh;
|
+ struct elf_aarch64_link_hash_entry *eh;
|
||||||
+ bfd_boolean local_undefweak;
|
+ bool local_undefweak;
|
||||||
htab = elf_aarch64_hash_table (info);
|
htab = elf_aarch64_hash_table (info);
|
||||||
|
|
||||||
+ eh = (struct elf_aarch64_link_hash_entry *) h;
|
+ eh = (struct elf_aarch64_link_hash_entry *) h;
|
||||||
@@ -263,8 +260,8 @@ index faa27611d4..888af6bcd8 100644
|
|||||||
if (h->plt.offset != (bfd_vma) - 1)
|
if (h->plt.offset != (bfd_vma) - 1)
|
||||||
{
|
{
|
||||||
asection *plt, *gotplt, *relplt;
|
asection *plt, *gotplt, *relplt;
|
||||||
@@ -9199,7 +9251,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
|
@@ -10094,7 +10143,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
|
||||||
return FALSE;
|
abort ();
|
||||||
|
|
||||||
elfNN_aarch64_create_small_pltn_entry (h, htab, output_bfd, info);
|
elfNN_aarch64_create_small_pltn_entry (h, htab, output_bfd, info);
|
||||||
- if (!h->def_regular)
|
- if (!h->def_regular)
|
||||||
@@ -272,12 +269,8 @@ index faa27611d4..888af6bcd8 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. */
|
||||||
@@ -9218,10 +9270,11 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
|
@@ -10116,7 +10165,8 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
|
||||||
}
|
&& elf_aarch64_hash_entry (h)->got_type == GOT_NORMAL
|
||||||
|
|
||||||
if (h->got.offset != (bfd_vma) - 1
|
|
||||||
- && 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. */
|
||||||
- && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
|
- && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
|
||||||
@@ -286,7 +279,7 @@ index faa27611d4..888af6bcd8 100644
|
|||||||
{
|
{
|
||||||
Elf_Internal_Rela rela;
|
Elf_Internal_Rela rela;
|
||||||
bfd_byte *loc;
|
bfd_byte *loc;
|
||||||
@@ -9715,6 +9768,9 @@ const struct elf_size_info elfNN_aarch64_size_info =
|
@@ -10766,6 +10816,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
|
||||||
|
|
||||||
@@ -296,90 +289,31 @@ index faa27611d4..888af6bcd8 100644
|
|||||||
#define elf_backend_finish_dynamic_sections \
|
#define elf_backend_finish_dynamic_sections \
|
||||||
elfNN_aarch64_finish_dynamic_sections
|
elfNN_aarch64_finish_dynamic_sections
|
||||||
|
|
||||||
diff --git a/ld/Makefile.am b/ld/Makefile.am
|
|
||||||
index c2c798b4fe..a0073d27fe 100644
|
|
||||||
--- a/ld/Makefile.am
|
|
||||||
+++ b/ld/Makefile.am
|
|
||||||
@@ -1509,19 +1509,23 @@ ens32knbsd.c: $(srcdir)/emulparams/ns32knbsd.sh \
|
|
||||||
$(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
|
|
||||||
|
|
||||||
eaarch64elf.c: $(srcdir)/emulparams/aarch64elf.sh \
|
|
||||||
- $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
|
|
||||||
+ $(srcdir)/emulparams/dynamic_undefined_weak.sh \
|
|
||||||
+ $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em ldemul-list.h \
|
|
||||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
|
||||||
|
|
||||||
eaarch64elf32.c: $(srcdir)/emulparams/aarch64elf32.sh \
|
|
||||||
- $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
|
|
||||||
+ $(srcdir)/emulparams/dynamic_undefined_weak.sh \
|
|
||||||
+ $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em ldemul-list.h \
|
|
||||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
|
||||||
|
|
||||||
eaarch64elfb.c: $(srcdir)/emulparams/aarch64elfb.sh $(srcdir)/emulparams/aarch64elf.sh \
|
|
||||||
- $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
|
|
||||||
+ $(srcdir)/emulparams/dynamic_undefined_weak.sh \
|
|
||||||
+ $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em ldemul-list.h \
|
|
||||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
|
||||||
|
|
||||||
eaarch64elf32b.c: $(srcdir)/emulparams/aarch64elf32b.sh $(srcdir)/emulparams/aarch64elf32.sh \
|
|
||||||
- $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
|
|
||||||
+ $(srcdir)/emulparams/dynamic_undefined_weak.sh \
|
|
||||||
+ $(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em ldemul-list.h \
|
|
||||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
|
||||||
|
|
||||||
eaarch64cloudabi.c: $(srcdir)/emulparams/aarch64cloudabi.sh \
|
|
||||||
diff --git a/ld/Makefile.in b/ld/Makefile.in
|
|
||||||
index fc687fc516..7d85865d92 100644
|
|
||||||
--- a/ld/Makefile.in
|
|
||||||
+++ b/ld/Makefile.in
|
|
||||||
@@ -3114,18 +3114,22 @@ ens32knbsd.c: $(srcdir)/emulparams/ns32knbsd.sh \
|
|
||||||
|
|
||||||
eaarch64elf.c: $(srcdir)/emulparams/aarch64elf.sh \
|
|
||||||
$(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
|
|
||||||
+ $(srcdir)/emulparams/dynamic_undefined_weak.sh \
|
|
||||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
|
||||||
|
|
||||||
eaarch64elf32.c: $(srcdir)/emulparams/aarch64elf32.sh \
|
|
||||||
$(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
|
|
||||||
+ $(srcdir)/emulparams/dynamic_undefined_weak.sh \
|
|
||||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
|
||||||
|
|
||||||
eaarch64elfb.c: $(srcdir)/emulparams/aarch64elfb.sh $(srcdir)/emulparams/aarch64elf.sh \
|
|
||||||
$(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
|
|
||||||
+ $(srcdir)/emulparams/dynamic_undefined_weak.sh \
|
|
||||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
|
||||||
|
|
||||||
eaarch64elf32b.c: $(srcdir)/emulparams/aarch64elf32b.sh $(srcdir)/emulparams/aarch64elf32.sh \
|
|
||||||
$(ELF_DEPS) $(srcdir)/emultempl/aarch64elf.em \
|
|
||||||
+ $(srcdir)/emulparams/dynamic_undefined_weak.sh \
|
|
||||||
$(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
|
|
||||||
|
|
||||||
eaarch64cloudabi.c: $(srcdir)/emulparams/aarch64cloudabi.sh \
|
|
||||||
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 4a59342722..2aa1ec7712 100644
|
index 72616b57691..42f708118fb 100644
|
||||||
--- a/ld/emulparams/aarch64elf.sh
|
--- a/ld/emulparams/aarch64elf.sh
|
||||||
+++ b/ld/emulparams/aarch64elf.sh
|
+++ b/ld/emulparams/aarch64elf.sh
|
||||||
@@ -1,3 +1,5 @@
|
@@ -1,4 +1,5 @@
|
||||||
+. ${srcdir}/emulparams/dynamic_undefined_weak.sh
|
source_sh ${srcdir}/emulparams/dt-relr.sh
|
||||||
+
|
+source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
|
||||||
|
|
||||||
ARCH=aarch64
|
ARCH=aarch64
|
||||||
MACHINE=
|
MACHINE=
|
||||||
NOP=0x1f2003d5
|
|
||||||
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 38bcd4bbb0..da0f411feb 100644
|
index 45bf31a179a..02e0cad8699 100644
|
||||||
--- a/ld/emulparams/aarch64elf32.sh
|
--- a/ld/emulparams/aarch64elf32.sh
|
||||||
+++ b/ld/emulparams/aarch64elf32.sh
|
+++ b/ld/emulparams/aarch64elf32.sh
|
||||||
@@ -1,3 +1,5 @@
|
@@ -1,4 +1,5 @@
|
||||||
+. ${srcdir}/emulparams/dynamic_undefined_weak.sh
|
source_sh ${srcdir}/emulparams/dt-relr.sh
|
||||||
+
|
+source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
|
||||||
|
|
||||||
ARCH="aarch64:ilp32"
|
ARCH="aarch64:ilp32"
|
||||||
MACHINE=
|
MACHINE=
|
||||||
NOP=0x1f2003d5
|
|
||||||
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 45e40b510c..916ef2086a 100644
|
index aa2859d4f73..c680dca8f86 100644
|
||||||
--- a/ld/emultempl/aarch64elf.em
|
--- a/ld/emultempl/aarch64elf.em
|
||||||
+++ b/ld/emultempl/aarch64elf.em
|
+++ b/ld/emultempl/aarch64elf.em
|
||||||
@@ -380,7 +380,7 @@ PARSE_AND_LIST_LONGOPTS='
|
@@ -368,7 +368,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},
|
||||||
'
|
'
|
||||||
|
|
||||||
@@ -388,25 +322,57 @@ index 45e40b510c..916ef2086a 100644
|
|||||||
fprintf (file, _(" --no-enum-size-warning Don'\''t warn about objects with incompatible\n"
|
fprintf (file, _(" --no-enum-size-warning Don'\''t warn about objects with incompatible\n"
|
||||||
" 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/elf32.em b/ld/emultempl/elf32.em
|
diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
|
||||||
index f4f7ad6b4e..8428a54697 100644
|
index 863657e12f5..672974df511 100644
|
||||||
--- a/ld/emultempl/elf32.em
|
--- a/ld/emultempl/elf.em
|
||||||
+++ b/ld/emultempl/elf32.em
|
+++ b/ld/emultempl/elf.em
|
||||||
@@ -192,6 +192,9 @@ static char *depaudit; /* colon (typically) separated list of libs */
|
@@ -813,6 +813,7 @@ EOF
|
||||||
/* Style of .note.gnu.build-id section. */
|
fi
|
||||||
static const char *emit_note_gnu_build_id;
|
fragment <<EOF
|
||||||
|
{"build-id", optional_argument, NULL, OPTION_BUILD_ID},
|
||||||
|
+ {"nx-module-name", optional_argument, NULL, OPTION_NX_MODULE_NAME},
|
||||||
|
{"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)
|
||||||
|
case OPTION_NO_ROSEGMENT:
|
||||||
|
link_info.one_rosegment = false;
|
||||||
|
break;
|
||||||
|
+
|
||||||
|
+ case OPTION_NX_MODULE_NAME:
|
||||||
|
+ if (ldelf_emit_nx_module_name != NULL)
|
||||||
|
+ {
|
||||||
|
+ free ((char *) ldelf_emit_nx_module_name);
|
||||||
|
+ ldelf_emit_nx_module_name = NULL;
|
||||||
|
+ }
|
||||||
|
+ if (optarg == NULL)
|
||||||
|
+ optarg = "";
|
||||||
|
+ ldelf_emit_nx_module_name = xstrdup (optarg);
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
||||||
|
diff --git a/ld/ldelf.c b/ld/ldelf.c
|
||||||
|
index 09691609fc0..5769b4aa0f9 100644
|
||||||
|
--- a/ld/ldelf.c
|
||||||
|
+++ b/ld/ldelf.c
|
||||||
|
@@ -55,6 +55,9 @@ const char *ldelf_emit_note_gnu_build_id;
|
||||||
|
/* Content of .note.package section. */
|
||||||
|
const char *ldelf_emit_note_fdo_package_metadata;
|
||||||
|
|
||||||
+/* NX module name. */
|
+/* NX module name. */
|
||||||
+static const char *emit_nx_module_name;
|
+const char *ldelf_emit_nx_module_name;
|
||||||
+
|
+
|
||||||
/* On Linux, it's possible to have different versions of the same
|
/* These variables are required to pass information back and forth
|
||||||
shared library linked against different versions of libc. The
|
between after_open and check_needed and stat_needed and vercheck. */
|
||||||
dynamic linker somehow tags which libc version to use in
|
|
||||||
@@ -1217,6 +1220,92 @@ setup_build_id (bfd *ibfd)
|
@@ -1209,8 +1212,93 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
|
||||||
return FALSE;
|
*save_input_bfd_tail = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static bfd_boolean
|
-/* This is called before calling plugin 'all symbols read' hook. */
|
||||||
|
+static bool
|
||||||
+write_nx_module_name (bfd *abfd)
|
+write_nx_module_name (bfd *abfd)
|
||||||
+{
|
+{
|
||||||
+ struct elf_obj_tdata *t = elf_tdata (abfd);
|
+ struct elf_obj_tdata *t = elf_tdata (abfd);
|
||||||
@@ -416,14 +382,14 @@ index f4f7ad6b4e..8428a54697 100644
|
|||||||
+ unsigned char *contents;
|
+ unsigned char *contents;
|
||||||
+ bfd_size_type size;
|
+ bfd_size_type size;
|
||||||
+ file_ptr position;
|
+ file_ptr position;
|
||||||
+
|
|
||||||
+ name = t->o->nx_module_name.name;
|
+ name = t->o->nx_module_name.name;
|
||||||
+ asec = t->o->nx_module_name.sec;
|
+ asec = t->o->nx_module_name.sec;
|
||||||
+ if (bfd_is_abs_section (asec->output_section))
|
+ if (bfd_is_abs_section (asec->output_section))
|
||||||
+ {
|
+ {
|
||||||
+ einfo (_("%P: warning: .nx-module-name section discarded,"
|
+ einfo (_("%P: warning: .nx-module-name section discarded,"
|
||||||
+ " --build-id ignored\n"));
|
+ " --build-id ignored\n"));
|
||||||
+ return TRUE;
|
+ return true;
|
||||||
+ }
|
+ }
|
||||||
+ i_shdr = &elf_section_data (asec->output_section)->this_hdr;
|
+ i_shdr = &elf_section_data (asec->output_section)->this_hdr;
|
||||||
+
|
+
|
||||||
@@ -445,26 +411,26 @@ index f4f7ad6b4e..8428a54697 100644
|
|||||||
+ position = i_shdr->sh_offset + asec->output_offset;
|
+ position = i_shdr->sh_offset + asec->output_offset;
|
||||||
+
|
+
|
||||||
+ return (bfd_seek (abfd, position, SEEK_SET) == 0
|
+ return (bfd_seek (abfd, position, SEEK_SET) == 0
|
||||||
+ && bfd_bwrite (contents, size, abfd) == size);
|
+ && bfd_write (contents, size, abfd) == size);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/* Make .nx-module-name section, and set up elf_tdata->nx_module_name. */
|
+/* Make .nx-module-name section, and set up elf_tdata->nx_module_name. */
|
||||||
+
|
+
|
||||||
+static bfd_boolean
|
+static bool
|
||||||
+setup_nx_module_name (bfd *ibfd, bfd *obfd)
|
+setup_nx_module_name (bfd *ibfd, bfd *obfd)
|
||||||
+{
|
+{
|
||||||
+ asection *s;
|
+ asection *s;
|
||||||
+ bfd_size_type size;
|
+ bfd_size_type size;
|
||||||
+ flagword flags;
|
+ flagword flags;
|
||||||
+
|
+
|
||||||
+ if (emit_nx_module_name[0] == '\0')
|
+ if (ldelf_emit_nx_module_name[0] == '\0')
|
||||||
+ {
|
+ {
|
||||||
+ /* Extract the basename of the output bfd and use it as the module name. */
|
+ /* Extract the basename of the output bfd and use it as the module name. */
|
||||||
+ char *dot_pos;
|
+ char *dot_pos;
|
||||||
+ free ((char *) emit_nx_module_name);
|
+ free ((char *) ldelf_emit_nx_module_name);
|
||||||
+ emit_nx_module_name = (char *) lbasename (bfd_get_filename (obfd));
|
+ ldelf_emit_nx_module_name = (char *) lbasename (bfd_get_filename (obfd));
|
||||||
+ emit_nx_module_name = xstrdup (emit_nx_module_name);
|
+ ldelf_emit_nx_module_name = xstrdup (ldelf_emit_nx_module_name);
|
||||||
+ dot_pos = strrchr (emit_nx_module_name, '.');
|
+ dot_pos = strrchr (ldelf_emit_nx_module_name, '.');
|
||||||
+ if (dot_pos != NULL)
|
+ if (dot_pos != NULL)
|
||||||
+ {
|
+ {
|
||||||
+ /* Remove extension. */
|
+ /* Remove extension. */
|
||||||
@@ -472,34 +438,35 @@ index f4f7ad6b4e..8428a54697 100644
|
|||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ size = 8 + strlen(emit_nx_module_name) + 1; /* extra null terminator for AMS */
|
+ size = 8 + strlen(ldelf_emit_nx_module_name) + 1; /* extra null terminator for AMS */
|
||||||
+ flags = (SEC_ALLOC | SEC_LOAD | SEC_IN_MEMORY
|
+ flags = (SEC_ALLOC | SEC_LOAD | SEC_IN_MEMORY
|
||||||
+ | SEC_LINKER_CREATED | SEC_READONLY | SEC_DATA);
|
+ | SEC_LINKER_CREATED | SEC_READONLY | SEC_DATA);
|
||||||
+ s = bfd_make_section_with_flags (ibfd, ".nx-module-name", flags);
|
+ s = bfd_make_section_with_flags (ibfd, ".nx-module-name", flags);
|
||||||
+ if (s != NULL && bfd_set_section_alignment (ibfd, s, 4))
|
+ if (s != NULL && bfd_set_section_alignment (s, 4))
|
||||||
+ {
|
+ {
|
||||||
+ struct elf_obj_tdata *t = elf_tdata (link_info.output_bfd);
|
+ struct elf_obj_tdata *t = elf_tdata (link_info.output_bfd);
|
||||||
+ t->o->nx_module_name.after_write_object_contents = &write_nx_module_name;
|
+ t->o->nx_module_name.after_write_object_contents = &write_nx_module_name;
|
||||||
+ t->o->nx_module_name.name = emit_nx_module_name;
|
+ t->o->nx_module_name.name = ldelf_emit_nx_module_name;
|
||||||
+ t->o->nx_module_name.sec = s;
|
+ t->o->nx_module_name.sec = s;
|
||||||
+ elf_section_type (s) = SHT_PROGBITS;
|
+ elf_section_type (s) = SHT_PROGBITS;
|
||||||
+ s->size = size;
|
+ s->size = size;
|
||||||
+ return TRUE;
|
+ return true;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ einfo (_("%P: warning: cannot create .nx-module-name section,"
|
+ einfo (_("%P: warning: cannot create .nx-module-name section,"
|
||||||
+ " --nx-module-name ignored\n"));
|
+ " --nx-module-name ignored\n"));
|
||||||
+ return FALSE;
|
+ return false;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
/* This is called after all the input files have been opened. */
|
+/* This is called before calling plugin 'all symbols read' hook. */
|
||||||
|
void
|
||||||
static void
|
ldelf_before_plugin_all_symbols_read (int use_libpath, int native,
|
||||||
@@ -1267,6 +1356,24 @@ gld${EMULATION_NAME}_after_open (void)
|
int is_linux, int is_freebsd,
|
||||||
|
@@ -1289,6 +1377,24 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (emit_nx_module_name != NULL)
|
+ if (ldelf_emit_nx_module_name != NULL)
|
||||||
+ {
|
+ {
|
||||||
+ /* Find an ELF input. */
|
+ /* Find an ELF input. */
|
||||||
+ for (abfd = link_info.input_bfds;
|
+ for (abfd = link_info.input_bfds;
|
||||||
@@ -512,93 +479,35 @@ index f4f7ad6b4e..8428a54697 100644
|
|||||||
+ /* If there are no ELF input files do not try to create a .nx-module-name section. */
|
+ /* If there are no ELF input files do not try to create a .nx-module-name section. */
|
||||||
+ if (abfd == NULL || !setup_nx_module_name (abfd, link_info.output_bfd))
|
+ if (abfd == NULL || !setup_nx_module_name (abfd, link_info.output_bfd))
|
||||||
+ {
|
+ {
|
||||||
+ free ((char *) emit_nx_module_name);
|
+ free ((char *) ldelf_emit_nx_module_name);
|
||||||
+ emit_nx_module_name = NULL;
|
+ ldelf_emit_nx_module_name = NULL;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
get_elf_backend_data (link_info.output_bfd)->setup_gnu_properties (&link_info);
|
get_elf_backend_data (link_info.output_bfd)->setup_gnu_properties (&link_info);
|
||||||
|
|
||||||
if (bfd_link_relocatable (&link_info))
|
/* Do not allow executable files to be used as inputs to the link. */
|
||||||
@@ -2720,6 +2827,7 @@ enum elf_options
|
diff --git a/ld/ldelf.h b/ld/ldelf.h
|
||||||
OPTION_EXCLUDE_LIBS,
|
index 239194772c4..68516dbf45e 100644
|
||||||
OPTION_HASH_STYLE,
|
--- a/ld/ldelf.h
|
||||||
|
+++ b/ld/ldelf.h
|
||||||
|
@@ -20,6 +20,7 @@
|
||||||
|
|
||||||
|
extern const char *ldelf_emit_note_gnu_build_id;
|
||||||
|
extern const char *ldelf_emit_note_fdo_package_metadata;
|
||||||
|
+extern const char *ldelf_emit_nx_module_name;
|
||||||
|
|
||||||
|
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
|
||||||
|
--- a/ld/ldlex.h
|
||||||
|
+++ b/ld/ldlex.h
|
||||||
|
@@ -186,6 +186,7 @@ enum option_values
|
||||||
|
/* Used by emultempl/elf.em, emultempl/pe.em and emultempl/pep.em. */
|
||||||
OPTION_BUILD_ID,
|
OPTION_BUILD_ID,
|
||||||
|
OPTION_EXCLUDE_LIBS,
|
||||||
+ OPTION_NX_MODULE_NAME,
|
+ OPTION_NX_MODULE_NAME,
|
||||||
OPTION_AUDIT,
|
/* Used by emulparams/elf32mcore.sh, emultempl/beos.em, emultempl/pe.em
|
||||||
OPTION_COMPRESS_DEBUG
|
and emultempl/pep.em. */
|
||||||
};
|
OPTION_BASE_FILE,
|
||||||
@@ -2750,6 +2858,7 @@ EOF
|
|
||||||
fi
|
|
||||||
fragment <<EOF
|
|
||||||
{"build-id", optional_argument, NULL, OPTION_BUILD_ID},
|
|
||||||
+ {"nx-module-name", optional_argument, NULL, OPTION_NX_MODULE_NAME},
|
|
||||||
{"compress-debug-sections", required_argument, NULL, OPTION_COMPRESS_DEBUG},
|
|
||||||
EOF
|
|
||||||
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
||||||
@@ -2814,6 +2923,16 @@ gld${EMULATION_NAME}_handle_option (int optc)
|
|
||||||
einfo (_("%F%P: invalid --compress-debug-sections option: \`%s'\n"),
|
|
||||||
optarg);
|
|
||||||
break;
|
|
||||||
+ case OPTION_NX_MODULE_NAME:
|
|
||||||
+ if (emit_nx_module_name != NULL)
|
|
||||||
+ {
|
|
||||||
+ free ((char *) emit_nx_module_name);
|
|
||||||
+ emit_nx_module_name = NULL;
|
|
||||||
+ }
|
|
||||||
+ if (optarg == NULL)
|
|
||||||
+ optarg = "";
|
|
||||||
+ emit_nx_module_name = xstrdup (optarg);
|
|
||||||
+ break;
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
|
|
||||||
diff --git a/ld/ldgram.y b/ld/ldgram.y
|
|
||||||
index c3eadeb392..59ab143526 100644
|
|
||||||
--- a/ld/ldgram.y
|
|
||||||
+++ b/ld/ldgram.y
|
|
||||||
@@ -819,6 +819,7 @@ origin_spec:
|
|
||||||
ORIGIN '=' mustbe_exp
|
|
||||||
{
|
|
||||||
region->origin_exp = $3;
|
|
||||||
+ region->current = region->origin;
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
diff --git a/ld/ldlang.c b/ld/ldlang.c
|
|
||||||
index 33f6bda292..7161f4210a 100644
|
|
||||||
--- a/ld/ldlang.c
|
|
||||||
+++ b/ld/ldlang.c
|
|
||||||
@@ -7381,9 +7381,6 @@ lang_process (void)
|
|
||||||
current_target = default_target;
|
|
||||||
lang_statement_iteration++;
|
|
||||||
open_input_bfds (statement_list.head, OPEN_BFD_NORMAL);
|
|
||||||
- /* open_input_bfds also handles assignments, so we can give values
|
|
||||||
- to symbolic origin/length now. */
|
|
||||||
- lang_do_memory_regions ();
|
|
||||||
|
|
||||||
#ifdef ENABLE_PLUGINS
|
|
||||||
if (link_info.lto_plugin_active)
|
|
||||||
@@ -7526,6 +7523,8 @@ lang_process (void)
|
|
||||||
/* PR 13683: We must rerun the assignments prior to running garbage
|
|
||||||
collection in order to make sure that all symbol aliases are resolved. */
|
|
||||||
lang_do_assignments (lang_mark_phase_enum);
|
|
||||||
+
|
|
||||||
+ lang_do_memory_regions();
|
|
||||||
expld.phase = lang_first_phase_enum;
|
|
||||||
|
|
||||||
/* Size up the common data. */
|
|
||||||
@@ -7610,11 +7609,8 @@ lang_process (void)
|
|
||||||
/* Fix any __start, __stop, .startof. or .sizeof. symbols. */
|
|
||||||
lang_finalize_start_stop ();
|
|
||||||
|
|
||||||
- /* Do all the assignments again, to report errors. Assignment
|
|
||||||
- statements are processed multiple times, updating symbols; In
|
|
||||||
- open_input_bfds, lang_do_assignments, and lang_size_sections.
|
|
||||||
- Since lang_relax_sections calls lang_do_assignments, symbols are
|
|
||||||
- also updated in ldemul_after_allocation. */
|
|
||||||
+ /* Do all the assignments, now that we know the final resting places
|
|
||||||
+ of all the symbols. */
|
|
||||||
lang_do_assignments (lang_final_phase_enum);
|
|
||||||
|
|
||||||
ldemul_finish ();
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/gcc/config.gcc b/gcc/config.gcc
|
diff --git a/gcc/config.gcc b/gcc/config.gcc
|
||||||
index c5064dd3766..decfa78fb7b 100644
|
index 95c91ee02be..4711542eee5 100644
|
||||||
--- a/gcc/config.gcc
|
--- a/gcc/config.gcc
|
||||||
+++ b/gcc/config.gcc
|
+++ b/gcc/config.gcc
|
||||||
@@ -1093,7 +1093,14 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
|
@@ -1195,7 +1195,14 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
|
||||||
tmake_file="${tmake_file} aarch64/t-aarch64"
|
tmake_file="${tmake_file} aarch64/t-aarch64"
|
||||||
case $target in
|
case $target in
|
||||||
aarch64-*-elf*)
|
aarch64-*-elf*)
|
||||||
@@ -18,7 +18,7 @@ index c5064dd3766..decfa78fb7b 100644
|
|||||||
aarch64-*-fuchsia*)
|
aarch64-*-fuchsia*)
|
||||||
tm_file="${tm_file} fuchsia.h"
|
tm_file="${tm_file} fuchsia.h"
|
||||||
diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h
|
diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h
|
||||||
index d4d820a9d54..ed5dd440846 100644
|
index 5396da9b2d6..87235d680ad 100644
|
||||||
--- a/gcc/config/aarch64/aarch64-elf-raw.h
|
--- a/gcc/config/aarch64/aarch64-elf-raw.h
|
||||||
+++ b/gcc/config/aarch64/aarch64-elf-raw.h
|
+++ b/gcc/config/aarch64/aarch64-elf-raw.h
|
||||||
@@ -22,6 +22,7 @@
|
@@ -22,6 +22,7 @@
|
||||||
@@ -30,27 +30,24 @@ index d4d820a9d54..ed5dd440846 100644
|
|||||||
#define ENDFILE_SPEC \
|
#define ENDFILE_SPEC \
|
||||||
" crtend%O%s crtn%O%s " \
|
" crtend%O%s crtn%O%s " \
|
||||||
diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h
|
diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h
|
||||||
index 93572fe8330..9327c52a819 100644
|
index a05c0d3ded1..5551807e4c6 100644
|
||||||
--- a/gcc/config/aarch64/aarch64-opts.h
|
--- a/gcc/config/aarch64/aarch64-opts.h
|
||||||
+++ b/gcc/config/aarch64/aarch64-opts.h
|
+++ b/gcc/config/aarch64/aarch64-opts.h
|
||||||
@@ -48,6 +48,12 @@ enum aarch64_tls_type {
|
@@ -80,7 +80,8 @@ enum aarch64_tp_reg {
|
||||||
TLS_DESCRIPTORS
|
AARCH64_TPIDR_EL1 = 1,
|
||||||
|
AARCH64_TPIDR_EL2 = 2,
|
||||||
|
AARCH64_TPIDR_EL3 = 3,
|
||||||
|
- AARCH64_TPIDRRO_EL0 = 4
|
||||||
|
+ AARCH64_TPIDRRO_EL0 = 4,
|
||||||
|
+ AARCH64_TP_SOFT = 5
|
||||||
};
|
};
|
||||||
|
|
||||||
+/* Which thread pointer access sequence to use. */
|
/* SVE vector register sizes. */
|
||||||
+enum aarch64_tp_type {
|
|
||||||
+ TP_HARD,
|
|
||||||
+ TP_SOFT
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
/* The code model defines the address generation strategy.
|
|
||||||
Most have a PIC and non-PIC variant. */
|
|
||||||
enum aarch64_code_model {
|
|
||||||
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
|
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
|
||||||
index 5c9e7791a12..718db155d57 100644
|
index 1beec94629d..90a9ec580f8 100644
|
||||||
--- a/gcc/config/aarch64/aarch64.cc
|
--- a/gcc/config/aarch64/aarch64.cc
|
||||||
+++ b/gcc/config/aarch64/aarch64.cc
|
+++ b/gcc/config/aarch64/aarch64.cc
|
||||||
@@ -19413,8 +19413,24 @@ aarch64_load_tp (rtx target)
|
@@ -21060,8 +21060,24 @@ aarch64_load_tp (rtx target)
|
||||||
|| !register_operand (target, Pmode))
|
|| !register_operand (target, Pmode))
|
||||||
target = gen_reg_rtx (Pmode);
|
target = gen_reg_rtx (Pmode);
|
||||||
|
|
||||||
@@ -78,41 +75,31 @@ index 5c9e7791a12..718db155d57 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
|
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
|
||||||
index 359b6e8561f..f5b596fc312 100644
|
index 4fa1dfc7906..43a01fe3d56 100644
|
||||||
--- a/gcc/config/aarch64/aarch64.h
|
--- a/gcc/config/aarch64/aarch64.h
|
||||||
+++ b/gcc/config/aarch64/aarch64.h
|
+++ b/gcc/config/aarch64/aarch64.h
|
||||||
@@ -1245,6 +1245,10 @@ typedef struct
|
@@ -1377,6 +1377,10 @@ typedef struct
|
||||||
/* Check TLS Descriptors mechanism is selected. */
|
/* Check TLS Descriptors mechanism is selected. */
|
||||||
#define TARGET_TLS_DESC (aarch64_tls_dialect == TLS_DESCRIPTORS)
|
#define TARGET_TLS_DESC (aarch64_tls_dialect == TLS_DESCRIPTORS)
|
||||||
|
|
||||||
+/* Check selected thread pointer access sequence to use. */
|
+/* Check selected thread pointer access sequence to use. */
|
||||||
+#define TARGET_HARD_TP (target_thread_pointer == TP_HARD)
|
+#define TARGET_HARD_TP (aarch64_tpidr_reg != AARCH64_TP_SOFT)
|
||||||
+#define TARGET_SOFT_TP (target_thread_pointer == TP_SOFT)
|
+#define TARGET_SOFT_TP (aarch64_tpidr_reg == AARCH64_TP_SOFT)
|
||||||
+
|
+
|
||||||
extern enum aarch64_code_model aarch64_cmodel;
|
extern enum aarch64_code_model aarch64_cmodel;
|
||||||
|
|
||||||
/* When using the tiny addressing model conditional and unconditional branches
|
/* When using the tiny addressing model conditional and unconditional branches
|
||||||
@@ -1290,7 +1294,7 @@ extern const char *aarch64_rewrite_mcpu (int argc, const char **argv);
|
|
||||||
#define MCPU_TO_MARCH_SPEC_FUNCTIONS \
|
|
||||||
{ "rewrite_mcpu", aarch64_rewrite_mcpu },
|
|
||||||
|
|
||||||
-#if defined(__aarch64__)
|
|
||||||
+#if 0 // defined(__aarch64__)
|
|
||||||
extern const char *host_detect_local_cpu (int argc, const char **argv);
|
|
||||||
#define HAVE_LOCAL_CPU_DETECT
|
|
||||||
# define EXTRA_SPEC_FUNCTIONS \
|
|
||||||
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
|
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
|
||||||
index 34b8059b45b..4debacf3cb9 100644
|
index dbde066f747..3e3198bf52f 100644
|
||||||
--- a/gcc/config/aarch64/aarch64.md
|
--- a/gcc/config/aarch64/aarch64.md
|
||||||
+++ b/gcc/config/aarch64/aarch64.md
|
+++ b/gcc/config/aarch64/aarch64.md
|
||||||
@@ -6906,11 +6906,22 @@
|
@@ -7436,11 +7436,22 @@
|
||||||
(define_insn "aarch64_load_tp_hard"
|
(define_insn "aarch64_load_tp_hard"
|
||||||
[(set (match_operand:DI 0 "register_operand" "=r")
|
[(set (match_operand:DI 0 "register_operand" "=r")
|
||||||
(unspec:DI [(const_int 0)] UNSPEC_TLS))]
|
(unspec:DI [(const_int 0)] UNSPEC_TLS))]
|
||||||
- ""
|
- ""
|
||||||
- "mrs\\t%0, tpidr_el0"
|
|
||||||
+ "TARGET_HARD_TP"
|
+ "TARGET_HARD_TP"
|
||||||
+ "mrs\\t%0, tpidr_el0\\t// aarch64_load_tp_hard"
|
"* return aarch64_output_load_tp (operands[0]);"
|
||||||
[(set_attr "type" "mrs")]
|
[(set_attr "type" "mrs")]
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -131,32 +118,20 @@ index 34b8059b45b..4debacf3cb9 100644
|
|||||||
;; instructions in the TLS stubs, in order to enable linker relaxation.
|
;; instructions in the TLS stubs, in order to enable linker relaxation.
|
||||||
;; Therefore we treat the stubs as an atomic sequence.
|
;; Therefore we treat the stubs as an atomic sequence.
|
||||||
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
|
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
|
||||||
index 92220b26ee2..68abc1764f6 100644
|
index 6356c419399..a6907ed0a0b 100644
|
||||||
--- a/gcc/config/aarch64/aarch64.opt
|
--- a/gcc/config/aarch64/aarch64.opt
|
||||||
+++ b/gcc/config/aarch64/aarch64.opt
|
+++ b/gcc/config/aarch64/aarch64.opt
|
||||||
@@ -122,6 +122,21 @@ Enum(aarch64_tls_size) String(32) Value(32)
|
@@ -128,6 +128,9 @@ Enum(tp_reg) String(tpidr_el3) Value(AARCH64_TPIDR_EL3)
|
||||||
EnumValue
|
EnumValue
|
||||||
Enum(aarch64_tls_size) String(48) Value(48)
|
Enum(tp_reg) String(tpidrro_el0) Value(AARCH64_TPIDRRO_EL0)
|
||||||
|
|
||||||
+mtp=
|
|
||||||
+Target RejectNegative Joined Enum(aarch64_tp_type) Var(target_thread_pointer) Init(TP_HARD)
|
|
||||||
+Specify how to access the thread pointer.
|
|
||||||
+
|
|
||||||
+Enum
|
|
||||||
+Name(aarch64_tp_type) Type(enum aarch64_tp_type)
|
|
||||||
+Valid arguments to -mtp=:
|
|
||||||
+
|
|
||||||
+EnumValue
|
+EnumValue
|
||||||
+Enum(aarch64_tp_type) String(hard) Value(TP_HARD)
|
+Enum(tp_reg) String(soft) Value(AARCH64_TP_SOFT)
|
||||||
+
|
+
|
||||||
+EnumValue
|
mtp=
|
||||||
+Enum(aarch64_tp_type) String(soft) Value(TP_SOFT)
|
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
|
||||||
march=
|
|
||||||
Target RejectNegative Negative(march=) ToLower Joined Var(aarch64_arch_string)
|
|
||||||
Use features of architecture ARCH.
|
|
||||||
@@ -260,7 +275,7 @@ TargetVariable
|
|
||||||
long aarch64_stack_protector_guard_offset = 0
|
long aarch64_stack_protector_guard_offset = 0
|
||||||
|
|
||||||
moutline-atomics
|
moutline-atomics
|
||||||
@@ -164,13 +139,13 @@ index 92220b26ee2..68abc1764f6 100644
|
|||||||
+Target Var(aarch64_flag_outline_atomics) Save
|
+Target Var(aarch64_flag_outline_atomics) Save
|
||||||
Generate local calls to out-of-line atomic operations.
|
Generate local calls to out-of-line atomic operations.
|
||||||
|
|
||||||
-param=aarch64-sve-compare-costs=
|
-param=aarch64-vect-compare-costs=
|
||||||
diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64
|
diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64
|
||||||
index ba74abc0a43..5202ec05d0b 100644
|
index 78713558e7d..76c0914d8ce 100644
|
||||||
--- a/gcc/config/aarch64/t-aarch64
|
--- a/gcc/config/aarch64/t-aarch64
|
||||||
+++ b/gcc/config/aarch64/t-aarch64
|
+++ b/gcc/config/aarch64/t-aarch64
|
||||||
@@ -177,8 +177,10 @@ aarch64-cc-fusion.o: $(srcdir)/config/aarch64/aarch64-cc-fusion.cc \
|
@@ -208,8 +208,10 @@ aarch64-ldp-fusion.o: $(srcdir)/config/aarch64/aarch64-ldp-fusion.cc \
|
||||||
$(srcdir)/config/aarch64/aarch64-cc-fusion.cc
|
$(srcdir)/config/aarch64/aarch64-ldp-fusion.cc
|
||||||
|
|
||||||
comma=,
|
comma=,
|
||||||
-MULTILIB_OPTIONS = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst $(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG))))
|
-MULTILIB_OPTIONS = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst $(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG))))
|
||||||
@@ -255,27 +230,34 @@ index 00000000000..9acbbf9d27c
|
|||||||
+Driver
|
+Driver
|
||||||
+
|
+
|
||||||
+; This comment is to ensure we retain the blank line above.
|
+; 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
|
diff --git a/gcc/config/i386/host-mingw32.cc b/gcc/config/i386/host-mingw32.cc
|
||||||
index 3b0d83ffc60..6e063b6ccd0 100644
|
index 42563982e42..923dc198a7e 100644
|
||||||
--- a/gcc/config/i386/host-mingw32.cc
|
--- a/gcc/config/i386/host-mingw32.cc
|
||||||
+++ b/gcc/config/i386/host-mingw32.cc
|
+++ b/gcc/config/i386/host-mingw32.cc
|
||||||
@@ -45,7 +45,11 @@ static size_t mingw32_gt_pch_alloc_granularity (void);
|
@@ -93,7 +93,10 @@ mingw32_gt_pch_get_address (size_t size, int)
|
||||||
static inline void w32_error(const char*, const char*, int, const char*);
|
for NT system dlls is in 0x70000000 to 0x78000000 range.
|
||||||
|
If we allocate at bottom we need to reserve the address as early
|
||||||
/* FIXME: Is this big enough? */
|
as possible and at the same point in each invocation. */
|
||||||
|
-
|
||||||
|
+
|
||||||
+#if __MINGW64__
|
+#if __MINGW64__
|
||||||
+static const size_t pch_VA_max_size = UINT64_C(64 * 1024 * 1024 * 1024);
|
+ size = UINT64_C(64 * 1024 * 1024 * 1024);
|
||||||
+#else
|
|
||||||
static const size_t pch_VA_max_size = 128 * 1024 * 1024;
|
|
||||||
+#endif
|
+#endif
|
||||||
|
res = VirtualAlloc (NULL, size,
|
||||||
/* Granularity for reserving address space. */
|
MEM_RESERVE | MEM_TOP_DOWN,
|
||||||
static size_t va_granularity = 0x10000;
|
PAGE_NOACCESS);
|
||||||
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
|
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
|
||||||
index bb07cc244e3..eff31f5093d 100644
|
index 728332b8153..47fc03eb8c8 100644
|
||||||
--- a/gcc/gcc.cc
|
--- a/gcc/gcc.cc
|
||||||
+++ b/gcc/gcc.cc
|
+++ b/gcc/gcc.cc
|
||||||
@@ -860,6 +860,11 @@ proper position among the other output files. */
|
@@ -881,6 +881,11 @@ proper position among the other output files. */
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -287,7 +269,7 @@ index bb07cc244e3..eff31f5093d 100644
|
|||||||
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */
|
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */
|
||||||
#ifndef STARTFILE_SPEC
|
#ifndef STARTFILE_SPEC
|
||||||
#define STARTFILE_SPEC \
|
#define STARTFILE_SPEC \
|
||||||
@@ -1204,6 +1209,7 @@ static const char *link_spec = LINK_SPEC;
|
@@ -1208,6 +1213,7 @@ static const char *link_spec = LINK_SPEC;
|
||||||
static const char *lib_spec = LIB_SPEC;
|
static const char *lib_spec = LIB_SPEC;
|
||||||
static const char *link_gomp_spec = "";
|
static const char *link_gomp_spec = "";
|
||||||
static const char *libgcc_spec = LIBGCC_SPEC;
|
static const char *libgcc_spec = LIBGCC_SPEC;
|
||||||
@@ -295,7 +277,7 @@ index bb07cc244e3..eff31f5093d 100644
|
|||||||
static const char *endfile_spec = ENDFILE_SPEC;
|
static const char *endfile_spec = ENDFILE_SPEC;
|
||||||
static const char *startfile_spec = STARTFILE_SPEC;
|
static const char *startfile_spec = STARTFILE_SPEC;
|
||||||
static const char *linker_name_spec = LINKER_NAME;
|
static const char *linker_name_spec = LINKER_NAME;
|
||||||
@@ -1709,6 +1715,7 @@ static struct spec_list static_specs[] =
|
@@ -1720,6 +1726,7 @@ static struct spec_list static_specs[] =
|
||||||
INIT_STATIC_SPEC ("lib", &lib_spec),
|
INIT_STATIC_SPEC ("lib", &lib_spec),
|
||||||
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
|
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
|
||||||
INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
|
INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
|
||||||
@@ -303,11 +285,24 @@ index bb07cc244e3..eff31f5093d 100644
|
|||||||
INIT_STATIC_SPEC ("startfile", &startfile_spec),
|
INIT_STATIC_SPEC ("startfile", &startfile_spec),
|
||||||
INIT_STATIC_SPEC ("cross_compile", &cross_compile),
|
INIT_STATIC_SPEC ("cross_compile", &cross_compile),
|
||||||
INIT_STATIC_SPEC ("version", &compiler_version),
|
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/crtstuff.c b/libgcc/crtstuff.c
|
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
|
||||||
index b98b86a5a88..3f62b3616d2 100644
|
index 38d3859a73c..f97358d9787 100644
|
||||||
--- a/libgcc/crtstuff.c
|
--- a/libgcc/crtstuff.c
|
||||||
+++ b/libgcc/crtstuff.c
|
+++ b/libgcc/crtstuff.c
|
||||||
@@ -325,7 +325,7 @@ register_tm_clones (void)
|
@@ -326,7 +326,7 @@ register_tm_clones (void)
|
||||||
|
|
||||||
#ifdef OBJECT_FORMAT_ELF
|
#ifdef OBJECT_FORMAT_ELF
|
||||||
|
|
||||||
@@ -317,7 +312,7 @@ index b98b86a5a88..3f62b3616d2 100644
|
|||||||
in every shared-object; in a main program its value is zero. The
|
in every shared-object; in a main program its value is zero. The
|
||||||
object should in any case be protected. This means the instance
|
object should in any case be protected. This means the instance
|
||||||
diff --git a/libgcc/gthr.h b/libgcc/gthr.h
|
diff --git a/libgcc/gthr.h b/libgcc/gthr.h
|
||||||
index 7943c94f6d1..6d23362f7f0 100644
|
index 33c2d8ff630..2a0a9c1e87e 100644
|
||||||
--- a/libgcc/gthr.h
|
--- a/libgcc/gthr.h
|
||||||
+++ b/libgcc/gthr.h
|
+++ b/libgcc/gthr.h
|
||||||
@@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
@@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
@@ -330,10 +325,10 @@ index 7943c94f6d1..6d23362f7f0 100644
|
|||||||
#define GTHREAD_USE_WEAK 0
|
#define GTHREAD_USE_WEAK 0
|
||||||
#endif
|
#endif
|
||||||
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
|
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
|
||||||
index 7708f4cf6c5..d3f484a5623 100644
|
index 422a0f4bd0a..ee09ada9170 100644
|
||||||
--- a/libstdc++-v3/include/Makefile.am
|
--- a/libstdc++-v3/include/Makefile.am
|
||||||
+++ b/libstdc++-v3/include/Makefile.am
|
+++ b/libstdc++-v3/include/Makefile.am
|
||||||
@@ -1366,6 +1366,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
@@ -1429,6 +1429,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
||||||
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
|
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
|
||||||
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
|
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
|
||||||
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
|
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
|
||||||
@@ -342,10 +337,10 @@ index 7708f4cf6c5..d3f484a5623 100644
|
|||||||
< $< > $@
|
< $< > $@
|
||||||
|
|
||||||
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
|
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
|
||||||
index 7023c2de23e..d150a616d13 100644
|
index 9fd4ab4848c..beea48941a3 100644
|
||||||
--- a/libstdc++-v3/include/Makefile.in
|
--- a/libstdc++-v3/include/Makefile.in
|
||||||
+++ b/libstdc++-v3/include/Makefile.in
|
+++ b/libstdc++-v3/include/Makefile.in
|
||||||
@@ -1857,6 +1857,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
@@ -1903,6 +1903,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
||||||
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
|
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
|
||||||
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
|
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
|
||||||
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
|
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
|
||||||
@@ -353,3 +348,16 @@ index 7023c2de23e..d150a616d13 100644
|
|||||||
-e 's,^#include "\(.*\)",#include <bits/\1>,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
|
||||||
|
;;
|
||||||
|
*)
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -12,4 +12,4 @@ cd $BUILDDIR
|
|||||||
|
|
||||||
tar -xvf $SRCDIR/devkita64-rules-$DKA64_RULES_VER.tar.gz
|
tar -xvf $SRCDIR/devkita64-rules-$DKA64_RULES_VER.tar.gz
|
||||||
cd devkita64-rules-$DKA64_RULES_VER
|
cd devkita64-rules-$DKA64_RULES_VER
|
||||||
make install
|
$MAKE install
|
||||||
|
|||||||
@@ -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 21" \
|
--with-bugurl="https://github.com/devkitPro/buildscripts/issues" --with-pkgversion="devkitA64 release 27" \
|
||||||
$CROSS_PARAMS \
|
$CROSS_PARAMS \
|
||||||
$CROSS_GCC_PARAMS \
|
$CROSS_GCC_PARAMS \
|
||||||
$EXTRA_GCC_PARAMS \
|
$EXTRA_GCC_PARAMS \
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
diff --git a/gcc/config.gcc b/gcc/config.gcc
|
diff --git a/gcc/config.gcc b/gcc/config.gcc
|
||||||
index c5064dd3766..b244608f001 100644
|
index 40b50dc969e..16b1224f3ec 100644
|
||||||
--- a/gcc/config.gcc
|
--- a/gcc/config.gcc
|
||||||
+++ b/gcc/config.gcc
|
+++ b/gcc/config.gcc
|
||||||
@@ -1366,6 +1366,11 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
|
@@ -1508,6 +1508,11 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
|
||||||
tm_file="$tm_file newlib-stdint.h"
|
tm_file="$tm_file newlib-stdint.h"
|
||||||
tmake_file="${tmake_file} arm/t-bpabi"
|
tmake_file="${tmake_file} arm/t-bpabi"
|
||||||
use_gcc_stdint=wrap
|
use_gcc_stdint=wrap
|
||||||
@@ -15,10 +15,10 @@ index c5064dd3766..b244608f001 100644
|
|||||||
arm*-*-fuchsia*)
|
arm*-*-fuchsia*)
|
||||||
tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
|
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
|
diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
|
||||||
index 0d3082b569f..15be7fc47b3 100644
|
index 1939d55b9fd..62d425cb596 100644
|
||||||
--- a/gcc/config/arm/arm-cpus.in
|
--- a/gcc/config/arm/arm-cpus.in
|
||||||
+++ b/gcc/config/arm/arm-cpus.in
|
+++ b/gcc/config/arm/arm-cpus.in
|
||||||
@@ -412,7 +412,7 @@ begin arch armv6k
|
@@ -416,7 +416,7 @@ begin arch armv6k
|
||||||
tune for mpcore
|
tune for mpcore
|
||||||
tune flags CO_PROC
|
tune flags CO_PROC
|
||||||
base 6K
|
base 6K
|
||||||
@@ -28,7 +28,7 @@ index 0d3082b569f..15be7fc47b3 100644
|
|||||||
optalias vfpv2 fp
|
optalias vfpv2 fp
|
||||||
option nofp remove ALL_FP
|
option nofp remove ALL_FP
|
||||||
diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf
|
diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf
|
||||||
index 1459afea921..72e1d20861d 100644
|
index fdfdf9c580b..add129f0a62 100644
|
||||||
--- a/gcc/config/arm/t-arm-elf
|
--- a/gcc/config/arm/t-arm-elf
|
||||||
+++ b/gcc/config/arm/t-arm-elf
|
+++ b/gcc/config/arm/t-arm-elf
|
||||||
@@ -16,120 +16,22 @@
|
@@ -16,120 +16,22 @@
|
||||||
@@ -165,7 +165,7 @@ index 1459afea921..72e1d20861d 100644
|
|||||||
-MULTILIB_REUSE += mthumb/mfpu.auto/march.armv7+fp/mfloat-abi.hard=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
|
+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
|
diff --git a/gcc/config/arm/unknown-elf.h b/gcc/config/arm/unknown-elf.h
|
||||||
index bfb294beaa3..7e2e1c7bbbe 100644
|
index ab3918283d8..c14a1955cad 100644
|
||||||
--- a/gcc/config/arm/unknown-elf.h
|
--- a/gcc/config/arm/unknown-elf.h
|
||||||
+++ b/gcc/config/arm/unknown-elf.h
|
+++ b/gcc/config/arm/unknown-elf.h
|
||||||
@@ -29,7 +29,7 @@
|
@@ -29,7 +29,7 @@
|
||||||
@@ -252,27 +252,33 @@ index 00000000000..9acbbf9d27c
|
|||||||
+Driver
|
+Driver
|
||||||
+
|
+
|
||||||
+; This comment is to ensure we retain the blank line above.
|
+; 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
|
diff --git a/gcc/config/i386/host-mingw32.cc b/gcc/config/i386/host-mingw32.cc
|
||||||
index 3b0d83ffc60..6e063b6ccd0 100644
|
index e083f49f3da..1b81e7e88ce 100644
|
||||||
--- a/gcc/config/i386/host-mingw32.cc
|
--- a/gcc/config/i386/host-mingw32.cc
|
||||||
+++ b/gcc/config/i386/host-mingw32.cc
|
+++ b/gcc/config/i386/host-mingw32.cc
|
||||||
@@ -45,7 +45,11 @@ static size_t mingw32_gt_pch_alloc_granularity (void);
|
@@ -94,6 +94,10 @@ mingw32_gt_pch_get_address (size_t size, int)
|
||||||
static inline void w32_error(const char*, const char*, int, const char*);
|
If we allocate at bottom we need to reserve the address as early
|
||||||
|
as possible and at the same point in each invocation. */
|
||||||
|
|
||||||
/* FIXME: Is this big enough? */
|
|
||||||
+#if __MINGW64__
|
+#if __MINGW64__
|
||||||
+static const size_t pch_VA_max_size = UINT64_C(64 * 1024 * 1024 * 1024);
|
+ size = UINT64_C(64 * 1024 * 1024 * 1024);
|
||||||
+#else
|
|
||||||
static const size_t pch_VA_max_size = 128 * 1024 * 1024;
|
|
||||||
+#endif
|
+#endif
|
||||||
|
+
|
||||||
/* Granularity for reserving address space. */
|
res = VirtualAlloc (NULL, size,
|
||||||
static size_t va_granularity = 0x10000;
|
MEM_RESERVE | MEM_TOP_DOWN,
|
||||||
|
PAGE_NOACCESS);
|
||||||
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
|
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
|
||||||
index bb07cc244e3..eff31f5093d 100644
|
index 4fd87f2c4a1..6af06f7b032 100644
|
||||||
--- a/gcc/gcc.cc
|
--- a/gcc/gcc.cc
|
||||||
+++ b/gcc/gcc.cc
|
+++ b/gcc/gcc.cc
|
||||||
@@ -860,6 +860,11 @@ proper position among the other output files. */
|
@@ -888,6 +888,11 @@ proper position among the other output files. */
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -284,7 +290,7 @@ index bb07cc244e3..eff31f5093d 100644
|
|||||||
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */
|
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */
|
||||||
#ifndef STARTFILE_SPEC
|
#ifndef STARTFILE_SPEC
|
||||||
#define STARTFILE_SPEC \
|
#define STARTFILE_SPEC \
|
||||||
@@ -1204,6 +1209,7 @@ static const char *link_spec = LINK_SPEC;
|
@@ -1215,6 +1220,7 @@ static const char *link_spec = LINK_SPEC;
|
||||||
static const char *lib_spec = LIB_SPEC;
|
static const char *lib_spec = LIB_SPEC;
|
||||||
static const char *link_gomp_spec = "";
|
static const char *link_gomp_spec = "";
|
||||||
static const char *libgcc_spec = LIBGCC_SPEC;
|
static const char *libgcc_spec = LIBGCC_SPEC;
|
||||||
@@ -292,7 +298,7 @@ index bb07cc244e3..eff31f5093d 100644
|
|||||||
static const char *endfile_spec = ENDFILE_SPEC;
|
static const char *endfile_spec = ENDFILE_SPEC;
|
||||||
static const char *startfile_spec = STARTFILE_SPEC;
|
static const char *startfile_spec = STARTFILE_SPEC;
|
||||||
static const char *linker_name_spec = LINKER_NAME;
|
static const char *linker_name_spec = LINKER_NAME;
|
||||||
@@ -1709,6 +1715,7 @@ static struct spec_list static_specs[] =
|
@@ -1727,6 +1733,7 @@ static struct spec_list static_specs[] =
|
||||||
INIT_STATIC_SPEC ("lib", &lib_spec),
|
INIT_STATIC_SPEC ("lib", &lib_spec),
|
||||||
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
|
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
|
||||||
INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
|
INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
|
||||||
@@ -300,6 +306,19 @@ index bb07cc244e3..eff31f5093d 100644
|
|||||||
INIT_STATIC_SPEC ("startfile", &startfile_spec),
|
INIT_STATIC_SPEC ("startfile", &startfile_spec),
|
||||||
INIT_STATIC_SPEC ("cross_compile", &cross_compile),
|
INIT_STATIC_SPEC ("cross_compile", &cross_compile),
|
||||||
INIT_STATIC_SPEC ("version", &compiler_version),
|
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
|
diff --git a/libgcc/config/arm/t-bpabi b/libgcc/config/arm/t-bpabi
|
||||||
index dddddc7c444..c2502597953 100644
|
index dddddc7c444..c2502597953 100644
|
||||||
--- a/libgcc/config/arm/t-bpabi
|
--- a/libgcc/config/arm/t-bpabi
|
||||||
@@ -311,10 +330,10 @@ index dddddc7c444..c2502597953 100644
|
|||||||
-LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
|
-LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
|
||||||
+LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions
|
+LIB2_DIVMOD_EXCEPTION_FLAGS := -fno-exceptions
|
||||||
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
|
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
|
||||||
index b98b86a5a88..3f62b3616d2 100644
|
index b9767cd1eee..362689c9f0b 100644
|
||||||
--- a/libgcc/crtstuff.c
|
--- a/libgcc/crtstuff.c
|
||||||
+++ b/libgcc/crtstuff.c
|
+++ b/libgcc/crtstuff.c
|
||||||
@@ -325,7 +325,7 @@ register_tm_clones (void)
|
@@ -326,7 +326,7 @@ register_tm_clones (void)
|
||||||
|
|
||||||
#ifdef OBJECT_FORMAT_ELF
|
#ifdef OBJECT_FORMAT_ELF
|
||||||
|
|
||||||
@@ -324,7 +343,7 @@ index b98b86a5a88..3f62b3616d2 100644
|
|||||||
in every shared-object; in a main program its value is zero. The
|
in every shared-object; in a main program its value is zero. The
|
||||||
object should in any case be protected. This means the instance
|
object should in any case be protected. This means the instance
|
||||||
diff --git a/libgcc/gthr.h b/libgcc/gthr.h
|
diff --git a/libgcc/gthr.h b/libgcc/gthr.h
|
||||||
index 7943c94f6d1..1edc5360f6a 100644
|
index 557417997f4..cb223aa43fc 100644
|
||||||
--- a/libgcc/gthr.h
|
--- a/libgcc/gthr.h
|
||||||
+++ b/libgcc/gthr.h
|
+++ b/libgcc/gthr.h
|
||||||
@@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
@@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
@@ -332,15 +351,206 @@ index 7943c94f6d1..1edc5360f6a 100644
|
|||||||
For static libraries it might would work, but as we need to deal
|
For static libraries it might would work, but as we need to deal
|
||||||
with shared versions too, we disable it for mingw-targets. */
|
with shared versions too, we disable it for mingw-targets. */
|
||||||
-#ifdef __MINGW32__
|
-#ifdef __MINGW32__
|
||||||
+#ifdef __MINGW32__ || defined(__DEVKITARM__)
|
+#if defined( __MINGW32__) || defined(__DEVKITARM__)
|
||||||
#undef GTHREAD_USE_WEAK
|
#undef GTHREAD_USE_WEAK
|
||||||
#define GTHREAD_USE_WEAK 0
|
#define GTHREAD_USE_WEAK 0
|
||||||
#endif
|
#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
|
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
|
||||||
index 7708f4cf6c5..01743392303 100644
|
index 537774c2668..b15e28d2371 100644
|
||||||
--- a/libstdc++-v3/include/Makefile.am
|
--- a/libstdc++-v3/include/Makefile.am
|
||||||
+++ b/libstdc++-v3/include/Makefile.am
|
+++ b/libstdc++-v3/include/Makefile.am
|
||||||
@@ -1366,6 +1366,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
@@ -1436,6 +1436,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
||||||
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
|
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
|
||||||
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
|
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
|
||||||
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
|
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
|
||||||
@@ -349,7 +559,7 @@ index 7708f4cf6c5..01743392303 100644
|
|||||||
< $< > $@
|
< $< > $@
|
||||||
|
|
||||||
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
|
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
|
||||||
index 7023c2de23e..33bec80c2ce 100644
|
index 7b96b2207f8..80f0effec92 100644
|
||||||
--- a/libstdc++-v3/include/Makefile.in
|
--- a/libstdc++-v3/include/Makefile.in
|
||||||
+++ b/libstdc++-v3/include/Makefile.in
|
+++ b/libstdc++-v3/include/Makefile.in
|
||||||
@@ -336,6 +336,7 @@ prefix = @prefix@
|
@@ -336,6 +336,7 @@ prefix = @prefix@
|
||||||
@@ -360,7 +570,7 @@ index 7023c2de23e..33bec80c2ce 100644
|
|||||||
sbindir = @sbindir@
|
sbindir = @sbindir@
|
||||||
sharedstatedir = @sharedstatedir@
|
sharedstatedir = @sharedstatedir@
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
@@ -1857,6 +1858,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
|
@@ -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/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
|
||||||
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
|
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
|
||||||
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
|
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
|
||||||
@@ -368,3 +578,16 @@ index 7023c2de23e..33bec80c2ce 100644
|
|||||||
-e 's,^#include "\(.*\)",#include <bits/\1>,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
|
||||||
|
;;
|
||||||
|
*)
|
||||||
14520
dkarm-eabi/patches/newlib-4.5.0.20241231.patch
Normal file
14520
dkarm-eabi/patches/newlib-4.5.0.20241231.patch
Normal file
File diff suppressed because one or more lines are too long
@@ -13,7 +13,7 @@ cd $BUILDDIR
|
|||||||
|
|
||||||
tar -xvf $SRCDIR/devkitarm-rules-$DKARM_RULES_VER.tar.gz
|
tar -xvf $SRCDIR/devkitarm-rules-$DKARM_RULES_VER.tar.gz
|
||||||
cd devkitarm-rules-$DKARM_RULES_VER
|
cd devkitarm-rules-$DKARM_RULES_VER
|
||||||
make install
|
$MAKE install
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# Install and build the crt0 files
|
# Install and build the crt0 files
|
||||||
@@ -22,5 +22,5 @@ cd $BUILDDIR
|
|||||||
|
|
||||||
tar -xvf $SRCDIR/devkitarm-crtls-$DKARM_CRTLS_VER.tar.gz
|
tar -xvf $SRCDIR/devkitarm-crtls-$DKARM_CRTLS_VER.tar.gz
|
||||||
cd devkitarm-crtls-$DKARM_CRTLS_VER
|
cd devkitarm-crtls-$DKARM_CRTLS_VER
|
||||||
make install
|
$MAKE install
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ cd $target/binutils
|
|||||||
|
|
||||||
if [ ! -f configured-binutils ]
|
if [ ! -f configured-binutils ]
|
||||||
then
|
then
|
||||||
CPPFLAGS="$cppflags $CPPFLAGS" LDFLAGS=$ldflags ../../binutils-$BINUTILS_VER/configure \
|
CPPFLAGS="$cppflags $CPPFLAGS" LDFLAGS="$ldflags $LDFLAGS" ../../binutils-$BINUTILS_VER/configure \
|
||||||
--prefix=$prefix --target=$target --disable-nls --disable-werror \
|
--prefix=$prefix --target=$target --disable-nls --disable-werror \
|
||||||
--enable-lto --enable-plugins \
|
--enable-lto --enable-plugins \
|
||||||
--enable-poison-system-directories \
|
--enable-poison-system-directories \
|
||||||
@@ -41,7 +41,7 @@ cd $target/gcc
|
|||||||
if [ ! -f configured-gcc ]
|
if [ ! -f configured-gcc ]
|
||||||
then
|
then
|
||||||
CPPFLAGS="$cppflags $CPPFLAGS" \
|
CPPFLAGS="$cppflags $CPPFLAGS" \
|
||||||
LDFLAGS="$ldflags" \
|
LDFLAGS="$ldflags $LDFLAGS" \
|
||||||
CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
|
CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
|
||||||
CXXFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
|
CXXFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
|
||||||
LDFLAGS_FOR_TARGET="" \
|
LDFLAGS_FOR_TARGET="" \
|
||||||
@@ -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 60" \
|
--with-bugurl="http://wiki.devkitpro.org/index.php/Bug_Reports" --with-pkgversion="devkitARM release 66" \
|
||||||
$CROSS_PARAMS \
|
$CROSS_PARAMS \
|
||||||
$CROSS_GCC_PARAMS \
|
$CROSS_GCC_PARAMS \
|
||||||
$EXTRA_GCC_PARAMS \
|
$EXTRA_GCC_PARAMS \
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
diff -NBaur binutils-2.37/libiberty/rust-demangle.c binutils-2.37-new/libiberty/rust-demangle.c
|
|
||||||
--- binutils-2.37/libiberty/rust-demangle.c 2021-07-15 15:19:46.000000000 +0100
|
|
||||||
+++ binutils-2.37-new/libiberty/rust-demangle.c 2022-01-01 22:02:21.860422023 +0000
|
|
||||||
@@ -75,10 +75,10 @@
|
|
||||||
int version;
|
|
||||||
|
|
||||||
/* Recursion depth. */
|
|
||||||
- uint recursion;
|
|
||||||
+ unsigned recursion;
|
|
||||||
/* Maximum number of times demangle_path may be called recursively. */
|
|
||||||
#define RUST_MAX_RECURSION_COUNT 1024
|
|
||||||
-#define RUST_NO_RECURSION_LIMIT ((uint) -1)
|
|
||||||
+#define RUST_NO_RECURSION_LIMIT ((unsigned) -1)
|
|
||||||
|
|
||||||
uint64_t bound_lifetime_depth;
|
|
||||||
};
|
|
||||||
diff -NBaur binutils-2.37/opcodes/ppc-opc.c binutils-2.37-new/opcodes/ppc-opc.c
|
|
||||||
--- binutils-2.37/opcodes/ppc-opc.c 2021-07-08 12:37:21.000000000 +0100
|
|
||||||
+++ binutils-2.37-new/opcodes/ppc-opc.c 2022-01-01 22:02:04.409141184 +0000
|
|
||||||
@@ -4302,7 +4302,7 @@
|
|
||||||
#define MFDEC2 (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
|
|
||||||
| PPC_OPCODE_TITAN)
|
|
||||||
#define BOOKE PPC_OPCODE_BOOKE
|
|
||||||
-#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
|
|
||||||
+#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_EFS
|
|
||||||
#define PPCE300 PPC_OPCODE_E300
|
|
||||||
#define PPCSPE PPC_OPCODE_SPE
|
|
||||||
#define PPCSPE2 PPC_OPCODE_SPE2
|
|
||||||
26
dkppc/patches/binutils-2.43.1.patch
Normal file
26
dkppc/patches/binutils-2.43.1.patch
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
diff --git a/ld/emulparams/elf32ppccommon.sh b/ld/emulparams/elf32ppccommon.sh
|
||||||
|
index da892988f5d..6b8efb9bbdb 100644
|
||||||
|
--- a/ld/emulparams/elf32ppccommon.sh
|
||||||
|
+++ b/ld/emulparams/elf32ppccommon.sh
|
||||||
|
@@ -23,7 +23,7 @@ else
|
||||||
|
unset SBSS_START_SYMBOLS
|
||||||
|
unset SBSS_END_SYMBOLS
|
||||||
|
fi
|
||||||
|
-OTHER_END_SYMBOLS="${CREATE_SHLIB+PROVIDE (}__end = .${CREATE_SHLIB+)};"
|
||||||
|
+OTHER_END_SYMBOLS="${CREATE_SHLIB+PROVIDE (}__end = .${CREATE_SHLIB+)};${CREATE_SHLIB+PROVIDE (}__end__ = .${CREATE_SHLIB+)};"
|
||||||
|
OTHER_RELRO_SECTIONS="
|
||||||
|
.fixup ${RELOCATING-0} : { *(.fixup) }
|
||||||
|
.got1 ${RELOCATING-0} : { *(.got1) }
|
||||||
|
diff --git a/opcodes/ppc-opc.c b/opcodes/ppc-opc.c
|
||||||
|
index e55bfe846cd..f160e290bce 100644
|
||||||
|
--- a/opcodes/ppc-opc.c
|
||||||
|
+++ b/opcodes/ppc-opc.c
|
||||||
|
@@ -4988,7 +4988,7 @@ const unsigned int num_powerpc_operands = ARRAY_SIZE (powerpc_operands);
|
||||||
|
#define MFDEC2 (PPC_OPCODE_PPC | PPC_OPCODE_601 | PPC_OPCODE_BOOKE \
|
||||||
|
| PPC_OPCODE_TITAN)
|
||||||
|
#define BOOKE PPC_OPCODE_BOOKE
|
||||||
|
-#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_PPCPS | PPC_OPCODE_EFS
|
||||||
|
+#define NO371 PPC_OPCODE_BOOKE | PPC_OPCODE_EFS
|
||||||
|
#define PPCE300 PPC_OPCODE_E300
|
||||||
|
#define PPCSPE PPC_OPCODE_SPE
|
||||||
|
#define PPCSPE2 PPC_OPCODE_SPE2
|
||||||
@@ -1,860 +0,0 @@
|
|||||||
diff -NBaur gcc-12.1.0/config/gthr.m4 gcc-12.1.0-dkppc/config/gthr.m4
|
|
||||||
--- gcc-12.1.0/config/gthr.m4 2022-05-06 08:30:56.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/config/gthr.m4 2022-05-06 19:17:44.784777075 +0100
|
|
||||||
@@ -13,6 +13,7 @@
|
|
||||||
case $1 in
|
|
||||||
aix) thread_header=config/rs6000/gthr-aix.h ;;
|
|
||||||
dce) thread_header=config/pa/gthr-dce.h ;;
|
|
||||||
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
|
|
||||||
gcn) thread_header=config/gcn/gthr-gcn.h ;;
|
|
||||||
lynx) thread_header=config/gthr-lynx.h ;;
|
|
||||||
mipssde) thread_header=config/mips/gthr-mipssde.h ;;
|
|
||||||
diff -NBaur gcc-12.1.0/gcc/config/i386/host-mingw32.cc gcc-12.1.0-dkppc/gcc/config/i386/host-mingw32.cc
|
|
||||||
--- gcc-12.1.0/gcc/config/i386/host-mingw32.cc 2022-05-06 08:30:56.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/gcc/config/i386/host-mingw32.cc 2022-05-06 19:17:44.784777075 +0100
|
|
||||||
@@ -45,7 +45,11 @@
|
|
||||||
static inline void w32_error(const char*, const char*, int, const char*);
|
|
||||||
|
|
||||||
/* FIXME: Is this big enough? */
|
|
||||||
+#if __MINGW64__
|
|
||||||
+static const size_t pch_VA_max_size = UINT64_C(64 * 1024 * 1024 * 1024);
|
|
||||||
+#else
|
|
||||||
static const size_t pch_VA_max_size = 128 * 1024 * 1024;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
/* Granularity for reserving address space. */
|
|
||||||
static size_t va_granularity = 0x10000;
|
|
||||||
diff -NBaur gcc-12.1.0/gcc/config/newlib-stdint.h gcc-12.1.0-dkppc/gcc/config/newlib-stdint.h
|
|
||||||
--- gcc-12.1.0/gcc/config/newlib-stdint.h 2022-05-06 08:30:57.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/gcc/config/newlib-stdint.h 2022-05-06 19:17:44.784777075 +0100
|
|
||||||
@@ -25,7 +25,7 @@
|
|
||||||
/* newlib uses 32-bit long in certain cases for all non-SPU
|
|
||||||
targets. */
|
|
||||||
#ifndef STDINT_LONG32
|
|
||||||
-#define STDINT_LONG32 (LONG_TYPE_SIZE == 32)
|
|
||||||
+#define STDINT_LONG32 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define SIG_ATOMIC_TYPE "int"
|
|
||||||
diff -NBaur gcc-12.1.0/gcc/config/rs6000/rs6000.h gcc-12.1.0-dkppc/gcc/config/rs6000/rs6000.h
|
|
||||||
--- gcc-12.1.0/gcc/config/rs6000/rs6000.h 2022-05-06 08:30:57.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/gcc/config/rs6000/rs6000.h 2022-05-06 19:22:10.793624730 +0100
|
|
||||||
@@ -196,6 +196,7 @@
|
|
||||||
/* -mcpu=native handling only makes sense with compiler running on
|
|
||||||
an PowerPC chip. If changing this condition, also change
|
|
||||||
the condition in driver-rs6000.cc. */
|
|
||||||
+#if 0
|
|
||||||
#if defined(__powerpc__) || defined(__POWERPC__) || defined(_AIX)
|
|
||||||
/* In driver-rs6000.cc. */
|
|
||||||
extern const char *host_detect_local_cpu (int argc, const char **argv);
|
|
||||||
@@ -207,6 +208,8 @@
|
|
||||||
#else
|
|
||||||
#define ASM_CPU_NATIVE_SPEC "%(asm_default)"
|
|
||||||
#endif
|
|
||||||
+#endif
|
|
||||||
+#define ASM_CPU_NATIVE_SPEC "%(asm_default)"
|
|
||||||
|
|
||||||
#ifndef CC1_CPU_SPEC
|
|
||||||
#ifdef HAVE_LOCAL_CPU_DETECT
|
|
||||||
diff -NBaur gcc-12.1.0/gcc/config/rs6000/sysv4.h gcc-12.1.0-dkppc/gcc/config/rs6000/sysv4.h
|
|
||||||
--- gcc-12.1.0/gcc/config/rs6000/sysv4.h 2022-05-06 08:30:57.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/gcc/config/rs6000/sysv4.h 2022-05-06 19:17:44.784777075 +0100
|
|
||||||
@@ -589,7 +589,11 @@
|
|
||||||
|
|
||||||
/* Default starting address if specified. */
|
|
||||||
#define LINK_START_SPEC "\
|
|
||||||
-%{mads : %(link_start_ads) ; \
|
|
||||||
+%{mgcn|mogc : %(link_start_ogc) ; \
|
|
||||||
+ mvgc : %(link_start_vgc) ; \
|
|
||||||
+ mgcbios : %(link_start_gcb) ; \
|
|
||||||
+ mrvl : %(link_start_rvl) ; \
|
|
||||||
+ mads : %(link_start_ads) ; \
|
|
||||||
myellowknife : %(link_start_yellowknife) ; \
|
|
||||||
mmvme : %(link_start_mvme) ; \
|
|
||||||
msim : %(link_start_sim) ; \
|
|
||||||
@@ -620,7 +624,8 @@
|
|
||||||
|
|
||||||
/* Any specific OS flags. */
|
|
||||||
#define LINK_OS_SPEC "\
|
|
||||||
-%{mads : %(link_os_ads) ; \
|
|
||||||
+%{mgcn|mogc|mvgc|mgcbios|mrvl : %(link_os_ogc) ; \
|
|
||||||
+ mads : %(link_os_ads) ; \
|
|
||||||
myellowknife : %(link_os_yellowknife) ; \
|
|
||||||
mmvme : %(link_os_mvme) ; \
|
|
||||||
msim : %(link_os_sim) ; \
|
|
||||||
@@ -635,7 +640,10 @@
|
|
||||||
/* Override rs6000.h definition. */
|
|
||||||
#undef CPP_SPEC
|
|
||||||
#define CPP_SPEC "%{posix: -D_POSIX_SOURCE} \
|
|
||||||
-%{mads : %(cpp_os_ads) ; \
|
|
||||||
+%{mgcn : %(cpp_os_gcn) ; \
|
|
||||||
+ mogc|mvgc|mgcbios : %(cpp_os_ogc) ; \
|
|
||||||
+ mrvl : %(cpp_os_rvl) ; \
|
|
||||||
+ mads : %(cpp_os_ads) ; \
|
|
||||||
myellowknife : %(cpp_os_yellowknife) ; \
|
|
||||||
mmvme : %(cpp_os_mvme) ; \
|
|
||||||
msim : %(cpp_os_sim) ; \
|
|
||||||
@@ -649,7 +657,10 @@
|
|
||||||
|
|
||||||
#undef STARTFILE_SPEC
|
|
||||||
#define STARTFILE_SPEC "\
|
|
||||||
-%{mads : %(startfile_ads) ; \
|
|
||||||
+%{mgcn : %(startfile_gcn) ; \
|
|
||||||
+ mogc|mvgc|mgcbios : %(startfile_ogc) ; \
|
|
||||||
+ mrvl : %(startfile_ogc) ; \
|
|
||||||
+ mads : %(startfile_ads) ; \
|
|
||||||
myellowknife : %(startfile_yellowknife) ; \
|
|
||||||
mmvme : %(startfile_mvme) ; \
|
|
||||||
msim : %(startfile_sim) ; \
|
|
||||||
@@ -663,7 +674,8 @@
|
|
||||||
|
|
||||||
#undef LIB_SPEC
|
|
||||||
#define LIB_SPEC "\
|
|
||||||
-%{mads : %(lib_ads) ; \
|
|
||||||
+%{mgcn|mogc|mvgc|mgcbios|mrvl : %(lib_ogc) ; \
|
|
||||||
+ mads : %(lib_ads) ; \
|
|
||||||
myellowknife : %(lib_yellowknife) ; \
|
|
||||||
mmvme : %(lib_mvme) ; \
|
|
||||||
msim : %(lib_sim) ; \
|
|
||||||
@@ -673,11 +685,12 @@
|
|
||||||
mcall-openbsd: %(lib_openbsd) ; \
|
|
||||||
: %(lib_default) }"
|
|
||||||
|
|
||||||
-#define LIB_DEFAULT_SPEC "-lc"
|
|
||||||
+#define LIB_DEFAULT_SPEC "--start-group -lsysbase -lc --end-group"
|
|
||||||
|
|
||||||
#undef ENDFILE_SPEC
|
|
||||||
#define ENDFILE_SPEC "\
|
|
||||||
-%{mads : %(endfile_ads) ; \
|
|
||||||
+%{mgcn|mogc|mvgc|mgcbios|mrvl : %(endfile_ogc) ; \
|
|
||||||
+ mads : %(endfile_ads) ; \
|
|
||||||
myellowknife : %(endfile_yellowknife) ; \
|
|
||||||
mmvme : %(endfile_mvme) ; \
|
|
||||||
msim : %(endfile_sim) ; \
|
|
||||||
@@ -693,16 +706,27 @@
|
|
||||||
|
|
||||||
/* Motorola ADS support. */
|
|
||||||
#define LIB_ADS_SPEC "--start-group -lads -lc --end-group"
|
|
||||||
+#define LIB_OGC_SPEC "--start-group -lsysbase -lc --end-group"
|
|
||||||
|
|
||||||
#define STARTFILE_ADS_SPEC "ecrti.o%s crt0.o%s crtbegin.o%s"
|
|
||||||
+#define STARTFILE_OGC_SPEC "ecrti.o%s crtbegin.o%s crtmain.o%s"
|
|
||||||
|
|
||||||
#define ENDFILE_ADS_SPEC "crtend.o%s ecrtn.o%s"
|
|
||||||
+#define ENDFILE_OGC_SPEC "crtend.o%s ecrtn.o%s"
|
|
||||||
|
|
||||||
#define LINK_START_ADS_SPEC "-T ads.ld%s"
|
|
||||||
+#define LINK_START_OGC_SPEC "-T ogc.ld%s"
|
|
||||||
+#define LINK_START_RVL_SPEC "-T rvl.ld%s"
|
|
||||||
+#define LINK_START_VGC_SPEC "-T vgcogc.ld%s"
|
|
||||||
+#define LINK_START_GCB_SPEC "-T gcbogc.ld%s"
|
|
||||||
|
|
||||||
#define LINK_OS_ADS_SPEC ""
|
|
||||||
+#define LINK_OS_OGC_SPEC "--gc-sections"
|
|
||||||
|
|
||||||
#define CPP_OS_ADS_SPEC ""
|
|
||||||
+#define CPP_OS_GCN_SPEC "-D__gamecube__ -ffunction-sections -fdata-sections"
|
|
||||||
+#define CPP_OS_OGC_SPEC "-D__gamecube__ -DHW_DOL -ffunction-sections -fdata-sections"
|
|
||||||
+#define CPP_OS_RVL_SPEC "-D__wii__ -DHW_RVL -ffunction-sections -fdata-sections"
|
|
||||||
|
|
||||||
/* Motorola Yellowknife support. */
|
|
||||||
#define LIB_YELLOWKNIFE_SPEC "--start-group -lyk -lc --end-group"
|
|
||||||
@@ -850,6 +874,7 @@
|
|
||||||
#undef SUBTARGET_EXTRA_SPECS
|
|
||||||
#define SUBTARGET_EXTRA_SPECS \
|
|
||||||
{ "crtsavres_default", CRTSAVRES_DEFAULT_SPEC }, \
|
|
||||||
+ { "lib_ogc", LIB_OGC_SPEC }, \
|
|
||||||
{ "lib_ads", LIB_ADS_SPEC }, \
|
|
||||||
{ "lib_yellowknife", LIB_YELLOWKNIFE_SPEC }, \
|
|
||||||
{ "lib_mvme", LIB_MVME_SPEC }, \
|
|
||||||
@@ -859,6 +884,7 @@
|
|
||||||
{ "lib_netbsd", LIB_NETBSD_SPEC }, \
|
|
||||||
{ "lib_openbsd", LIB_OPENBSD_SPEC }, \
|
|
||||||
{ "lib_default", LIB_DEFAULT_SPEC }, \
|
|
||||||
+ { "startfile_ogc", STARTFILE_OGC_SPEC }, \
|
|
||||||
{ "startfile_ads", STARTFILE_ADS_SPEC }, \
|
|
||||||
{ "startfile_yellowknife", STARTFILE_YELLOWKNIFE_SPEC }, \
|
|
||||||
{ "startfile_mvme", STARTFILE_MVME_SPEC }, \
|
|
||||||
@@ -868,6 +894,7 @@
|
|
||||||
{ "startfile_netbsd", STARTFILE_NETBSD_SPEC }, \
|
|
||||||
{ "startfile_openbsd", STARTFILE_OPENBSD_SPEC }, \
|
|
||||||
{ "startfile_default", STARTFILE_DEFAULT_SPEC }, \
|
|
||||||
+ { "endfile_ogc", ENDFILE_OGC_SPEC }, \
|
|
||||||
{ "endfile_ads", ENDFILE_ADS_SPEC }, \
|
|
||||||
{ "endfile_yellowknife", ENDFILE_YELLOWKNIFE_SPEC }, \
|
|
||||||
{ "endfile_mvme", ENDFILE_MVME_SPEC }, \
|
|
||||||
@@ -879,7 +906,11 @@
|
|
||||||
{ "endfile_default", ENDFILE_DEFAULT_SPEC }, \
|
|
||||||
{ "link_shlib", LINK_SHLIB_SPEC }, \
|
|
||||||
{ "link_start", LINK_START_SPEC }, \
|
|
||||||
+ { "link_start_vgc", LINK_START_VGC_SPEC }, \
|
|
||||||
+ { "link_start_gcb", LINK_START_GCB_SPEC }, \
|
|
||||||
+ { "link_start_rvl", LINK_START_RVL_SPEC }, \
|
|
||||||
{ "link_start_ads", LINK_START_ADS_SPEC }, \
|
|
||||||
+ { "link_start_ogc", LINK_START_OGC_SPEC }, \
|
|
||||||
{ "link_start_yellowknife", LINK_START_YELLOWKNIFE_SPEC }, \
|
|
||||||
{ "link_start_mvme", LINK_START_MVME_SPEC }, \
|
|
||||||
{ "link_start_sim", LINK_START_SIM_SPEC }, \
|
|
||||||
@@ -889,6 +920,7 @@
|
|
||||||
{ "link_start_openbsd", LINK_START_OPENBSD_SPEC }, \
|
|
||||||
{ "link_start_default", LINK_START_DEFAULT_SPEC }, \
|
|
||||||
{ "link_os", LINK_OS_SPEC }, \
|
|
||||||
+ { "link_os_ogc", LINK_OS_OGC_SPEC }, \
|
|
||||||
{ "link_os_ads", LINK_OS_ADS_SPEC }, \
|
|
||||||
{ "link_os_yellowknife", LINK_OS_YELLOWKNIFE_SPEC }, \
|
|
||||||
{ "link_os_mvme", LINK_OS_MVME_SPEC }, \
|
|
||||||
@@ -900,6 +932,9 @@
|
|
||||||
{ "link_os_default", LINK_OS_DEFAULT_SPEC }, \
|
|
||||||
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
|
|
||||||
{ "link_secure_plt", LINK_SECURE_PLT_SPEC }, \
|
|
||||||
+ { "cpp_os_gcn", CPP_OS_GCN_SPEC }, \
|
|
||||||
+ { "cpp_os_ogc", CPP_OS_OGC_SPEC }, \
|
|
||||||
+ { "cpp_os_rvl", CPP_OS_RVL_SPEC }, \
|
|
||||||
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \
|
|
||||||
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
|
|
||||||
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
|
|
||||||
diff -NBaur gcc-12.1.0/gcc/config/rs6000/sysv4.opt gcc-12.1.0-dkppc/gcc/config/rs6000/sysv4.opt
|
|
||||||
--- gcc-12.1.0/gcc/config/rs6000/sysv4.opt 2022-05-06 08:30:57.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/gcc/config/rs6000/sysv4.opt 2022-05-06 19:17:44.784777075 +0100
|
|
||||||
@@ -124,6 +124,26 @@
|
|
||||||
Target RejectNegative
|
|
||||||
Link with libads.a, libc.a and crt0.o.
|
|
||||||
|
|
||||||
+mgcn
|
|
||||||
+Target RejectNegative
|
|
||||||
+Link with libsysbase.a and libc.a, use ogc linker script
|
|
||||||
+
|
|
||||||
+mogc
|
|
||||||
+Target RejectNegative
|
|
||||||
+Link with libsysbase.a and libc.a, use ogc linker script
|
|
||||||
+
|
|
||||||
+mgcbios
|
|
||||||
+Target RejectNegative
|
|
||||||
+Link with libsysbase.a and libc.a, use gcbogc linker script
|
|
||||||
+
|
|
||||||
+mvgc
|
|
||||||
+Target RejectNegative
|
|
||||||
+Link with libsysbase.a and libc.a, use gcbogc linker script
|
|
||||||
+
|
|
||||||
+mrvl
|
|
||||||
+Target RejectNegative
|
|
||||||
+Link with libsysbase.a and libc.a, use rvl linker script
|
|
||||||
+
|
|
||||||
myellowknife
|
|
||||||
Target RejectNegative
|
|
||||||
Link with libyk.a, libc.a and crt0.o.
|
|
||||||
diff -NBaur gcc-12.1.0/gcc/configure gcc-12.1.0-dkppc/gcc/configure
|
|
||||||
--- gcc-12.1.0/gcc/configure 2022-05-06 08:30:57.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/gcc/configure 2022-05-06 19:17:44.788859483 +0100
|
|
||||||
@@ -12884,7 +12884,7 @@
|
|
||||||
# default
|
|
||||||
target_thread_file='single'
|
|
||||||
;;
|
|
||||||
- aix | dce | lynx | mipssde | posix | rtems | \
|
|
||||||
+ aix | dce | dkp | lynx | mipssde | posix | rtems | \
|
|
||||||
single | tpf | vxworks | win32)
|
|
||||||
target_thread_file=${enable_threads}
|
|
||||||
;;
|
|
||||||
diff -NBaur gcc-12.1.0/gcc/configure.ac gcc-12.1.0-dkppc/gcc/configure.ac
|
|
||||||
--- gcc-12.1.0/gcc/configure.ac 2022-05-06 08:30:57.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/gcc/configure.ac 2022-05-06 19:17:44.788859483 +0100
|
|
||||||
@@ -1994,7 +1994,7 @@
|
|
||||||
# default
|
|
||||||
target_thread_file='single'
|
|
||||||
;;
|
|
||||||
- aix | dce | lynx | mipssde | posix | rtems | \
|
|
||||||
+ aix | dce | dkp | lynx | mipssde | posix | rtems | \
|
|
||||||
single | tpf | vxworks | win32)
|
|
||||||
target_thread_file=${enable_threads}
|
|
||||||
;;
|
|
||||||
diff -NBaur gcc-12.1.0/libgcc/config/rs6000/crtrestvr.S gcc-12.1.0-dkppc/libgcc/config/rs6000/crtrestvr.S
|
|
||||||
--- gcc-12.1.0/libgcc/config/rs6000/crtrestvr.S 2022-05-06 08:30:59.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/libgcc/config/rs6000/crtrestvr.S 2022-05-06 19:17:44.792941894 +0100
|
|
||||||
@@ -24,7 +24,7 @@
|
|
||||||
|
|
||||||
/* On PowerPC64 Linux, these functions are provided by the linker. */
|
|
||||||
#ifndef __powerpc64__
|
|
||||||
-
|
|
||||||
+#if 0
|
|
||||||
#undef __ALTIVEC__
|
|
||||||
#define __ALTIVEC__ 1
|
|
||||||
#include "ppc-asm.h"
|
|
||||||
@@ -86,3 +86,4 @@
|
|
||||||
CFI_ENDPROC
|
|
||||||
|
|
||||||
#endif
|
|
||||||
+#endif
|
|
||||||
diff -NBaur gcc-12.1.0/libgcc/config/rs6000/crtsavevr.S gcc-12.1.0-dkppc/libgcc/config/rs6000/crtsavevr.S
|
|
||||||
--- gcc-12.1.0/libgcc/config/rs6000/crtsavevr.S 2022-05-06 08:30:59.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/libgcc/config/rs6000/crtsavevr.S 2022-05-06 19:17:44.792941894 +0100
|
|
||||||
@@ -24,7 +24,7 @@
|
|
||||||
|
|
||||||
/* On PowerPC64 Linux, these functions are provided by the linker. */
|
|
||||||
#ifndef __powerpc64__
|
|
||||||
-
|
|
||||||
+#if 0
|
|
||||||
#undef __ALTIVEC__
|
|
||||||
#define __ALTIVEC__ 1
|
|
||||||
#include "ppc-asm.h"
|
|
||||||
@@ -86,3 +86,4 @@
|
|
||||||
CFI_ENDPROC
|
|
||||||
|
|
||||||
#endif
|
|
||||||
+#endif
|
|
||||||
diff -NBaur gcc-12.1.0/libgcc/config/rs6000/gthr-dkp.c gcc-12.1.0-dkppc/libgcc/config/rs6000/gthr-dkp.c
|
|
||||||
--- gcc-12.1.0/libgcc/config/rs6000/gthr-dkp.c 1970-01-01 01:00:00.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/libgcc/config/rs6000/gthr-dkp.c 2022-05-06 19:17:44.792941894 +0100
|
|
||||||
@@ -0,0 +1,319 @@
|
|
||||||
+/* Threads compatibility routines for libgcc2 and libobjc. */
|
|
||||||
+/* Compile this one with gcc. */
|
|
||||||
+/* Copyright (C) 1997-2016 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/>. */
|
|
||||||
+
|
|
||||||
+#define _BUILDING_LIBGCC
|
|
||||||
+#include "gthr-dkp.h"
|
|
||||||
+#include <stddef.h>
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_active_p (void)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(active)) {
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_active();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
|
|
||||||
+ void *__args)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(create)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_create(__threadid, __func, __args);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_join (__gthread_t __threadid, void **__value_ptr)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(join)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_join(__threadid, __value_ptr);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_detach (__gthread_t __threadid)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(detach)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_detach(__threadid);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_equal (__gthread_t __t1, __gthread_t __t2)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(equal)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_equal(__t1, __t2);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+__gthread_t
|
|
||||||
+__gthread_self (void)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(self)) {
|
|
||||||
+ __gthread_t result = { 0 };
|
|
||||||
+ return result;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_self();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_yield (void)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(yield)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_yield();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_once (__gthread_once_t *__once, void (*__func) (void))
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(once)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_once(__once, __func);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *))
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(key_create)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_key_create(__key, __dtor);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_key_delete (__gthread_key_t __key)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(key_delete)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_key_delete(__key);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void *
|
|
||||||
+__gthread_getspecific (__gthread_key_t __key)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(getspecific)) {
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_getspecific(__key);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_setspecific (__gthread_key_t __key, const void *__ptr)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(setspecific)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_setspecific(__key, __ptr);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+__gthread_mutex_init_function (__gthread_mutex_t *__mutex)
|
|
||||||
+{
|
|
||||||
+ if (__has_gthr_impl(mutex_init_function)) {
|
|
||||||
+ __gthr_impl_mutex_init_function(__mutex);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_mutex_destroy (__gthread_mutex_t *__mutex)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(mutex_destroy)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_mutex_destroy(__mutex);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_mutex_lock (__gthread_mutex_t *__mutex)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(mutex_lock)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_mutex_lock(__mutex);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_mutex_trylock (__gthread_mutex_t *__mutex)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(mutex_trylock)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_mutex_trylock(__mutex);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_mutex_unlock (__gthread_mutex_t *__mutex)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(mutex_unlock)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_mutex_unlock(__mutex);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(recursive_mutex_init_function)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_recursive_mutex_init_function(__mutex);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(recursive_mutex_lock)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_recursive_mutex_lock(__mutex);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(recursive_mutex_trylock)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_recursive_mutex_trylock(__mutex);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(recursive_mutex_unlock)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_recursive_mutex_unlock(__mutex);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(recursive_mutex_destroy)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_recursive_mutex_destroy(__mutex);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+__gthread_cond_init_function (__gthread_cond_t *__cond)
|
|
||||||
+{
|
|
||||||
+ if (__has_gthr_impl(cond_init_function)) {
|
|
||||||
+ __gthr_impl_cond_init_function(__cond);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_cond_broadcast (__gthread_cond_t *__cond)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(cond_broadcast)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_cond_broadcast(__cond);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_cond_signal (__gthread_cond_t *__cond)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(cond_signal)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_cond_signal(__cond);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(cond_wait)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_cond_wait(__cond, __mutex);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
|
|
||||||
+ const __gthread_time_t *__abs_timeout)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(cond_timedwait)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_cond_timedwait(__cond, __mutex, __abs_timeout);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_cond_wait_recursive (__gthread_cond_t *__cond,
|
|
||||||
+ __gthread_recursive_mutex_t *__mutex)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(cond_wait_recursive)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_cond_wait_recursive(__cond, __mutex);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_cond_destroy (__gthread_cond_t* __cond)
|
|
||||||
+{
|
|
||||||
+ if (!__has_gthr_impl(cond_destroy)) {
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return __gthr_impl_cond_destroy(__cond);
|
|
||||||
+}
|
|
||||||
diff -NBaur gcc-12.1.0/libgcc/config/rs6000/gthr-dkp.h gcc-12.1.0-dkppc/libgcc/config/rs6000/gthr-dkp.h
|
|
||||||
--- gcc-12.1.0/libgcc/config/rs6000/gthr-dkp.h 1970-01-01 01:00:00.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/libgcc/config/rs6000/gthr-dkp.h 2022-05-06 19:17:44.792941894 +0100
|
|
||||||
@@ -0,0 +1,187 @@
|
|
||||||
+/* Threads compatibility routines for libgcc2 and libobjc. */
|
|
||||||
+/* Compile this one with gcc. */
|
|
||||||
+/* Copyright (C) 1997-2016 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/>. */
|
|
||||||
+
|
|
||||||
+#ifndef _GLIBCXX_GCC_GTHR_DKP_H
|
|
||||||
+#define _GLIBCXX_GCC_GTHR_DKP_H
|
|
||||||
+
|
|
||||||
+#define __GTHREADS 1
|
|
||||||
+#define __GTHREADS_CXX0X 1
|
|
||||||
+
|
|
||||||
+#ifdef __cplusplus
|
|
||||||
+extern "C" {
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+typedef void * __gthread_t;
|
|
||||||
+typedef struct { int padding[7]; } __gthread_cond_t;
|
|
||||||
+typedef struct { int padding; } __gthread_key_t;
|
|
||||||
+typedef struct { int padding[11]; } __gthread_mutex_t;
|
|
||||||
+typedef struct { int padding; } __gthread_once_t;
|
|
||||||
+typedef struct { int padding[11]; } __gthread_recursive_mutex_t;
|
|
||||||
+typedef struct timespec __gthread_time_t;
|
|
||||||
+
|
|
||||||
+#define __GTHREAD_HAS_COND 1
|
|
||||||
+#define _GTHREAD_USE_MUTEX_TIMEDLOCK 0
|
|
||||||
+
|
|
||||||
+#define __GTHREAD_ONCE_INIT { 0 }
|
|
||||||
+#define __GTHREAD_TIME_INIT { 0, 0 }
|
|
||||||
+
|
|
||||||
+#define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function
|
|
||||||
+#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function
|
|
||||||
+#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function
|
|
||||||
+
|
|
||||||
+#ifdef _BUILDING_LIBGCC
|
|
||||||
+#define __GTHR_IMPL(_name) __attribute__((weak)) __gthr_impl_##_name
|
|
||||||
+#define __has_gthr_impl(_name) (&__gthr_impl_##_name)
|
|
||||||
+#else
|
|
||||||
+#define __GTHR_IMPL(_name) __gthr_impl_##_name
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+int __GTHR_IMPL(active) (void);
|
|
||||||
+int __GTHR_IMPL(create) (__gthread_t *__threadid, void *(*__func) (void*), void *__args);
|
|
||||||
+int __GTHR_IMPL(join) (__gthread_t __threadid, void **__value_ptr);
|
|
||||||
+int __GTHR_IMPL(detach) (__gthread_t __threadid);
|
|
||||||
+int __GTHR_IMPL(equal) (__gthread_t __t1, __gthread_t __t2);
|
|
||||||
+__gthread_t __GTHR_IMPL(self) (void);
|
|
||||||
+int __GTHR_IMPL(yield) (void);
|
|
||||||
+int __GTHR_IMPL(once) (__gthread_once_t *__once, void (*__func) (void));
|
|
||||||
+int __GTHR_IMPL(key_create) (__gthread_key_t *__key, void (*__dtor) (void *));
|
|
||||||
+int __GTHR_IMPL(key_delete) (__gthread_key_t __key);
|
|
||||||
+void * __GTHR_IMPL(getspecific) (__gthread_key_t __key);
|
|
||||||
+int __GTHR_IMPL(setspecific) (__gthread_key_t __key, const void *__ptr);
|
|
||||||
+void __GTHR_IMPL(mutex_init_function) (__gthread_mutex_t *__mutex);
|
|
||||||
+int __GTHR_IMPL(mutex_destroy) (__gthread_mutex_t *__mutex);
|
|
||||||
+int __GTHR_IMPL(mutex_lock) (__gthread_mutex_t *__mutex);
|
|
||||||
+int __GTHR_IMPL(mutex_trylock) (__gthread_mutex_t *__mutex);
|
|
||||||
+int __GTHR_IMPL(mutex_unlock) (__gthread_mutex_t *__mutex);
|
|
||||||
+int __GTHR_IMPL(recursive_mutex_init_function) (__gthread_recursive_mutex_t *__mutex);
|
|
||||||
+int __GTHR_IMPL(recursive_mutex_lock) (__gthread_recursive_mutex_t *__mutex);
|
|
||||||
+int __GTHR_IMPL(recursive_mutex_trylock) (__gthread_recursive_mutex_t *__mutex);
|
|
||||||
+int __GTHR_IMPL(recursive_mutex_unlock) (__gthread_recursive_mutex_t *__mutex);
|
|
||||||
+int __GTHR_IMPL(recursive_mutex_destroy) (__gthread_recursive_mutex_t *__mutex);
|
|
||||||
+void __GTHR_IMPL(cond_init_function) (__gthread_cond_t *__cond);
|
|
||||||
+int __GTHR_IMPL(cond_broadcast) (__gthread_cond_t *__cond);
|
|
||||||
+int __GTHR_IMPL(cond_signal) (__gthread_cond_t *__cond);
|
|
||||||
+int __GTHR_IMPL(cond_wait) (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex);
|
|
||||||
+int __GTHR_IMPL(cond_timedwait) (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
|
|
||||||
+ const __gthread_time_t *__abs_timeout);
|
|
||||||
+int __GTHR_IMPL(cond_wait_recursive) (__gthread_cond_t *__cond,
|
|
||||||
+ __gthread_recursive_mutex_t *__mutex);
|
|
||||||
+int __GTHR_IMPL(cond_destroy) (__gthread_cond_t* __cond);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_active_p (void);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_create (__gthread_t *__threadid, void *(*__func) (void*),
|
|
||||||
+ void *__args);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_join (__gthread_t __threadid, void **__value_ptr);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_detach (__gthread_t __threadid);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_equal (__gthread_t __t1, __gthread_t __t2);
|
|
||||||
+
|
|
||||||
+__gthread_t
|
|
||||||
+__gthread_self (void);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_yield (void);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_once (__gthread_once_t *__once, void (*__func) (void));
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *));
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_key_delete (__gthread_key_t __key);
|
|
||||||
+
|
|
||||||
+void *
|
|
||||||
+__gthread_getspecific (__gthread_key_t __key);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_setspecific (__gthread_key_t __key, const void *__ptr);
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+__gthread_mutex_init_function (__gthread_mutex_t *__mutex);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_mutex_destroy (__gthread_mutex_t *__mutex);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_mutex_lock (__gthread_mutex_t *__mutex);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_mutex_trylock (__gthread_mutex_t *__mutex);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_mutex_unlock (__gthread_mutex_t *__mutex);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex);
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+__gthread_cond_init_function (__gthread_cond_t *__cond);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_cond_broadcast (__gthread_cond_t *__cond);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_cond_signal (__gthread_cond_t *__cond);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex,
|
|
||||||
+ const __gthread_time_t *__abs_timeout);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_cond_wait_recursive (__gthread_cond_t *__cond,
|
|
||||||
+ __gthread_recursive_mutex_t *__mutex);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+__gthread_cond_destroy (__gthread_cond_t* __cond);
|
|
||||||
+
|
|
||||||
+#ifdef __cplusplus
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#endif /* ! _GLIBCXX_GCC_GTHR_DKP_H */
|
|
||||||
diff -NBaur gcc-12.1.0/libgcc/config/rs6000/t-ppccomm gcc-12.1.0-dkppc/libgcc/config/rs6000/t-ppccomm
|
|
||||||
--- gcc-12.1.0/libgcc/config/rs6000/t-ppccomm 2022-05-06 08:30:59.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/libgcc/config/rs6000/t-ppccomm 2022-05-06 19:17:44.792941894 +0100
|
|
||||||
@@ -1,4 +1,5 @@
|
|
||||||
LIB2ADD += $(srcdir)/config/rs6000/ibm-ldouble.c \
|
|
||||||
+ $(srcdir)/config/rs6000/gthr-dkp.c \
|
|
||||||
$(srcdir)/config/rs6000/tramp.S
|
|
||||||
|
|
||||||
# This can't end up in shared libgcc
|
|
||||||
diff -NBaur gcc-12.1.0/libgcc/configure gcc-12.1.0-dkppc/libgcc/configure
|
|
||||||
--- gcc-12.1.0/libgcc/configure 2022-05-06 08:30:59.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/libgcc/configure 2022-05-06 19:17:44.792941894 +0100
|
|
||||||
@@ -5689,6 +5689,7 @@
|
|
||||||
case $target_thread_file in
|
|
||||||
aix) thread_header=config/rs6000/gthr-aix.h ;;
|
|
||||||
dce) thread_header=config/pa/gthr-dce.h ;;
|
|
||||||
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
|
|
||||||
gcn) thread_header=config/gcn/gthr-gcn.h ;;
|
|
||||||
lynx) thread_header=config/gthr-lynx.h ;;
|
|
||||||
mipssde) thread_header=config/mips/gthr-mipssde.h ;;
|
|
||||||
diff -NBaur gcc-12.1.0/libgcc/crtstuff.c gcc-12.1.0-dkppc/libgcc/crtstuff.c
|
|
||||||
--- gcc-12.1.0/libgcc/crtstuff.c 2022-05-06 08:30:59.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/libgcc/crtstuff.c 2022-05-06 19:17:44.792941894 +0100
|
|
||||||
@@ -325,7 +325,7 @@
|
|
||||||
|
|
||||||
#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 -NBaur gcc-12.1.0/libstdc++-v3/configure gcc-12.1.0-dkppc/libstdc++-v3/configure
|
|
||||||
--- gcc-12.1.0/libstdc++-v3/configure 2022-05-06 08:31:00.000000000 +0100
|
|
||||||
+++ gcc-12.1.0-dkppc/libstdc++-v3/configure 2022-05-06 19:17:44.801106712 +0100
|
|
||||||
@@ -15765,6 +15765,7 @@
|
|
||||||
case $target_thread_file in
|
|
||||||
aix) thread_header=config/rs6000/gthr-aix.h ;;
|
|
||||||
dce) thread_header=config/pa/gthr-dce.h ;;
|
|
||||||
+ dkp) thread_header=config/rs6000/gthr-dkp.h ;;
|
|
||||||
gcn) thread_header=config/gcn/gthr-gcn.h ;;
|
|
||||||
lynx) thread_header=config/gthr-lynx.h ;;
|
|
||||||
mipssde) thread_header=config/mips/gthr-mipssde.h ;;
|
|
||||||
1474
dkppc/patches/gcc-14.2.0.patch
Normal file
1474
dkppc/patches/gcc-14.2.0.patch
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -13,4 +13,4 @@ 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
|
||||||
|
|||||||
@@ -76,6 +76,8 @@ cd $BUILDDIR
|
|||||||
mkdir -p $target/gcc
|
mkdir -p $target/gcc
|
||||||
cd $target/gcc
|
cd $target/gcc
|
||||||
|
|
||||||
|
export gcc_cv_libc_provides_ssp=yes
|
||||||
|
|
||||||
if [ ! -f configured-gcc ]
|
if [ ! -f configured-gcc ]
|
||||||
then
|
then
|
||||||
CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
|
CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
|
||||||
@@ -93,12 +95,13 @@ then
|
|||||||
--enable-libstdcxx-filesystem-ts \
|
--enable-libstdcxx-filesystem-ts \
|
||||||
--disable-tm-clone-registry \
|
--disable-tm-clone-registry \
|
||||||
--disable-__cxa_atexit \
|
--disable-__cxa_atexit \
|
||||||
|
--disable-libssp \
|
||||||
--enable-cxx-flags='-ffunction-sections -fdata-sections' \
|
--enable-cxx-flags='-ffunction-sections -fdata-sections' \
|
||||||
--target=$target \
|
--target=$target \
|
||||||
--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 41" \
|
--with-bugurl="https://github.com/devkitpro/buildscripts/issues" --with-pkgversion="devkitPPC release 46.1" \
|
||||||
$CROSS_PARAMS \
|
$CROSS_PARAMS \
|
||||||
$CROSS_GCC_PARAMS \
|
$CROSS_GCC_PARAMS \
|
||||||
$EXTRA_GCC_PARAMS \
|
$EXTRA_GCC_PARAMS \
|
||||||
@@ -136,11 +139,12 @@ unset CXX
|
|||||||
|
|
||||||
if [ ! -f configured-newlib ]
|
if [ ! -f configured-newlib ]
|
||||||
then
|
then
|
||||||
CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections" \
|
CFLAGS_FOR_TARGET="-O2 -ffunction-sections -fdata-sections -DCUSTOM_MALLOC_LOCK" \
|
||||||
../../newlib-$NEWLIB_VER/configure \
|
../../newlib-$NEWLIB_VER/configure \
|
||||||
--target=$target \
|
--target=$target \
|
||||||
--prefix=$prefix \
|
--prefix=$prefix \
|
||||||
--enable-newlib-mb \
|
--enable-newlib-mb \
|
||||||
|
--enable-newlib-register-fini \
|
||||||
|| { echo "Error configuring newlib"; exit 1; }
|
|| { echo "Error configuring newlib"; exit 1; }
|
||||||
touch configured-newlib
|
touch configured-newlib
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -30,28 +30,28 @@ done
|
|||||||
|
|
||||||
case "$VERSION" in
|
case "$VERSION" in
|
||||||
"1" )
|
"1" )
|
||||||
GCC_VER=12.2.0
|
GCC_VER=15.1.0
|
||||||
BINUTILS_VER=2.40
|
BINUTILS_VER=2.44
|
||||||
NEWLIB_VER=4.3.0.20230120
|
NEWLIB_VER=4.5.0.20241231
|
||||||
basedir='dkarm-eabi'
|
basedir='dkarm-eabi'
|
||||||
package=devkitARM
|
package=devkitARM
|
||||||
target=arm-none-eabi
|
target=arm-none-eabi
|
||||||
toolchain=DEVKITARM
|
toolchain=DEVKITARM
|
||||||
;;
|
;;
|
||||||
"2" )
|
"2" )
|
||||||
GCC_VER=12.1.0
|
GCC_VER=14.2.0
|
||||||
BINUTILS_VER=2.37
|
BINUTILS_VER=2.43.1
|
||||||
MN_BINUTILS_VER=2.24
|
MN_BINUTILS_VER=2.24
|
||||||
NEWLIB_VER=4.2.0.20211231
|
NEWLIB_VER=4.4.0.20231231
|
||||||
basedir='dkppc'
|
basedir='dkppc'
|
||||||
package=devkitPPC
|
package=devkitPPC
|
||||||
target=powerpc-eabi
|
target=powerpc-eabi
|
||||||
toolchain=DEVKITPPC
|
toolchain=DEVKITPPC
|
||||||
;;
|
;;
|
||||||
"3" )
|
"3" )
|
||||||
GCC_VER=12.2.0
|
GCC_VER=14.2.0
|
||||||
BINUTILS_VER=2.32
|
BINUTILS_VER=2.43.1
|
||||||
NEWLIB_VER=4.3.0.20230120
|
NEWLIB_VER=4.4.0.20231231
|
||||||
basedir='dka64'
|
basedir='dka64'
|
||||||
package=devkitA64
|
package=devkitA64
|
||||||
target=aarch64-none-elf
|
target=aarch64-none-elf
|
||||||
|
|||||||
Reference in New Issue
Block a user