Compare commits

...

18 Commits

Author SHA1 Message Date
Dave Murphy
8b3fb07490 devkitA64: add relr defines 2024-08-30 11:54:06 +01:00
Dave Murphy
5599e42c8c devkitA64: update gcc to 14.2.0 2024-08-30 11:54:06 +01:00
Dave Murphy
57b7f68921 devkitA64: update binutils to 2.43.1 2024-08-30 11:54:06 +01:00
Jaeden Amero
88bd526925 Prefer using GNU Patch
The patches we use do not apply with BSD Patch. Attempt to find GNU
Patch and use that instead of the default 'patch' program. The patches
appear to apply fine as no errors are returned when we run patch.
However, files like libsysbase/dummy.c aren't created and we see the
following error:

    gmake[2]: Entering directory '.devkitARM/arm-none-eabi/newlib/arm-none-eabi/libgloss' /usr/local/bin/gmake  all-recursive
    gmake[3]: Entering directory '.devkitARM/arm-none-eabi/newlib/arm-none-eabi/libgloss'
    Making all in .
    gmake[4]: Entering directory '.devkitARM/arm-none-eabi/newlib/arm-none-eabi/libgloss'
      MAKEINFO ../../../../newlib-4.4.0.20231231/libgloss/doc/porting.info
      gmake[4]: *** No rule to make target 'libsysbase/dummy.c', needed by 'libsysbase/dummy.o'.  Stop.

By switching to GNU Patch, our patches properly apply and the build
succeeds.
2024-07-07 18:56:47 +01:00
Jaeden Amero
d3d636cb54 crtls: Use exported make
Without this, when building on platforms where 'make' is not GNU Make,
building crtls will fail. The Makefiles used to build crtls depend on
GNU Make and will not work on e.g. BSD Make.
2024-07-07 18:56:47 +01:00
Dave Murphy
78eb432d11 devkitA64: update version 2024-06-16 11:47:58 +01:00
Dave Murphy
aa76a0ea46 devkitA64: make read/write posix compliant 2024-06-16 11:47:13 +01:00
Dave Murphy
2429e9ee7d gcc 2024-05-26 18:33:40 +01:00
Dave Murphy
f0b081246c devkitA64: use latest newlib patches 2024-05-26 17:25:22 +01:00
Dave Murphy
a280f18794 devkitA64: update gcc to 14.1.0 2024-05-26 17:25:15 +01:00
Dave Murphy
c012acf8d8 macOS fix 2024-05-16 22:57:12 +01:00
Dave Murphy
19217fdc51 update devkitarm rules/crtls versions 2024-05-11 19:55:02 +01:00
Dave Murphy
aad3392808 devkitARM: binutils 2.42 2024-05-11 19:09:58 +01:00
Dave Murphy
7b0a333842 devkitARM: remove stale patches 2024-05-11 19:09:58 +01:00
Dave Murphy
41922724cb devkitARM: use LDFLAGS from environment 2024-05-11 19:09:57 +01:00
Dave Murphy
2422223439 devkitARM: gcc 14.1.0 2024-05-11 19:09:50 +01:00
Dave Murphy
23afd9959c devkitARM: latest newlib patches 2024-05-04 21:04:10 +01:00
Dave Murphy
03bc549c5c devkitARM: gcc 14.1 release candidate 2024-05-04 21:03:49 +01:00
13 changed files with 1770 additions and 289 deletions

View File

@@ -1,8 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
# devkitARM release 63 # devkitARM release 64
# devkitPPC release 45.2 # devkitPPC release 45.2
# devkitA64 release 25.1 # devkitA64 release 27
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
if [ 0 -eq 1 ] ; then if [ 0 -eq 1 ] ; then
@@ -27,8 +27,8 @@ echo
DKARM_RULES_VER=1.5.0 DKARM_RULES_VER=1.5.1
DKARM_CRTLS_VER=1.2.2 DKARM_CRTLS_VER=1.2.5
DKPPC_RULES_VER=1.2.1 DKPPC_RULES_VER=1.2.1
@@ -36,6 +36,18 @@ 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
} }

View File

@@ -0,0 +1,513 @@
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index b89d3dda05d..1ad8a9c088d 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -2005,6 +2005,14 @@ struct output_elf_obj_tdata
asection *sec;
} package_metadata;
+ /* Data for .nx-module-name. */
+ struct
+ {
+ bool (*after_write_object_contents) (bfd *);
+ const char *name;
+ asection *sec;
+ } nx_module_name;
+
/* Records the result of `get_program_header_size'. */
bfd_size_type program_header_size;
diff --git a/bfd/elf.c b/bfd/elf.c
index f85f79e1e35..d27f05b92ae 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -7166,6 +7166,14 @@ _bfd_elf_write_object_contents (bfd *abfd)
if (!bed->s->write_shdrs_and_ehdr (abfd))
return false;
+ /* Write out the NX module name. */
+ if (t->o->nx_module_name.after_write_object_contents != NULL)
+ {
+ failed = !(*t->o->nx_module_name.after_write_object_contents) (abfd);
+ if (failed)
+ return false;
+ }
+
/* This is last since write_shdrs_and_ehdr can touch i_shdrp[0]. */
if (t->o->build_id.after_write_object_contents != NULL
&& !(*t->o->build_id.after_write_object_contents) (abfd))
diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 94c9a01069b..d39880b27c4 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -2441,6 +2441,12 @@ enum elf_aarch64_stub_type
aarch64_stub_erratum_843419_veneer,
};
+/* Is an undefined weak symbol resolved to 0 ? */
+#define UNDEFINED_WEAK_RESOLVED_TO_ZERO(INFO, EH) \
+ ((EH)->root.root.type == bfd_link_hash_undefweak \
+ && bfd_link_executable (INFO) \
+ && !(INFO)->dynamic_undefined_weak)
+
struct elf_aarch64_stub_hash_entry
{
/* Base hash table entry structure. */
@@ -6969,11 +6975,13 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
Elf_Internal_Sym *sym;
asection *sec;
struct elf_link_hash_entry *h;
+ struct elf_aarch64_link_hash_entry *eh;
bfd_vma relocation;
bfd_reloc_status_type r;
arelent bfd_reloc;
char sym_type;
bool unresolved_reloc = false;
+ bool resolved_to_zero = false;
char *error_message = NULL;
r_symndx = ELFNN_R_SYM (rel->r_info);
@@ -7113,6 +7121,10 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
h, &unresolved_reloc,
save_addend, &addend, sym);
+ eh = (struct elf_aarch64_link_hash_entry *) h;
+ resolved_to_zero = (eh != NULL
+ && UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh));
+
switch (elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type))
{
case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
@@ -7136,7 +7148,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
need_relocs =
(!bfd_link_executable (info) || indx != 0) &&
(h == NULL
- || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+ || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT && !resolved_to_zero)
|| h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7231,7 +7243,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
need_relocs =
(!bfd_link_executable (info) || indx != 0) &&
(h == NULL
- || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+ || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT && !resolved_to_zero)
|| h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7280,7 +7292,7 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
bfd_vma off = symbol_tlsdesc_got_offset (input_bfd, h, r_symndx);
need_relocs = (h == NULL
- || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+ || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT && !resolved_to_zero)
|| h->root.type != bfd_link_hash_undefweak);
BFD_ASSERT (globals->root.srelgot != NULL);
@@ -7606,6 +7618,23 @@ need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
return false;
}
+/* Remove undefined weak symbol from the dynamic symbol table if it
+ is resolved to 0. */
+
+static bool
+elfNN_aarch64_elf_fixup_symbol (struct bfd_link_info *info,
+ struct elf_link_hash_entry *h)
+{
+ if (h->dynindx != -1
+ && UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, elf_aarch64_hash_entry (h)))
+ {
+ h->dynindx = -1;
+ _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
+ h->dynstr_index);
+ }
+ return true;
+}
+
/* Adjust a symbol defined by a dynamic object and referenced by a
regular object. The current definition is in some section of the
dynamic object, but we're not including those sections. We have to
@@ -8824,6 +8853,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
struct elf_aarch64_link_hash_table *htab;
struct elf_aarch64_link_hash_entry *eh;
struct elf_dyn_relocs *p;
+ bool resolved_to_zero;
/* An example of a bfd_link_hash_indirect symbol is versioned
symbol. For example: __gxx_personality_v0(bfd_link_hash_indirect)
@@ -8843,6 +8873,10 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
info = (struct bfd_link_info *) inf;
htab = elf_aarch64_hash_table (info);
+ eh = (struct elf_aarch64_link_hash_entry *) h;
+ eh->tlsdesc_got_jump_table_offset = (bfd_vma) - 1;
+ resolved_to_zero = UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh);
+
/* Since STT_GNU_IFUNC symbol must go through PLT, we handle it
here if it is defined and referenced in a non-shared object. */
if (h->type == STT_GNU_IFUNC
@@ -8852,7 +8886,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
{
/* Make sure this symbol is output as a dynamic symbol.
Undefined weak syms won't yet be marked as dynamic. */
- if (h->dynindx == -1 && !h->forced_local
+ if (h->dynindx == -1 && !h->forced_local && !resolved_to_zero
&& h->root.type == bfd_link_hash_undefweak)
{
if (!bfd_elf_link_record_dynamic_symbol (info, h))
@@ -8886,6 +8920,11 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
of relaxing into these from the large model PLT entries. */
s->size += htab->plt_entry_size;
+ /* There should be no PLT relocations against resolved undefined
+ weak symbols in the executable. */
+ if (!resolved_to_zero)
+ {
+
/* We also need to make an entry in the .got.plt section, which
will be placed in the .got section by the linker script. */
htab->root.sgotplt->size += GOT_ENTRY_SIZE;
@@ -8914,6 +8953,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
htab->variant_pcs = 1;
}
+ }
else
{
h->plt.offset = (bfd_vma) - 1;
@@ -8926,9 +8966,6 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
h->needs_plt = 0;
}
- eh = (struct elf_aarch64_link_hash_entry *) h;
- eh->tlsdesc_got_jump_table_offset = (bfd_vma) - 1;
-
if (h->got.refcount > 0)
{
bool dyn;
@@ -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.
Undefined weak syms won't yet be marked as dynamic. */
- if (dyn && h->dynindx == -1 && !h->forced_local
+ if (dyn && h->dynindx == -1 && !h->forced_local && !resolved_to_zero
&& h->root.type == bfd_link_hash_undefweak)
{
if (!bfd_elf_link_record_dynamic_symbol (info, h))
@@ -8954,7 +8991,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
{
h->got.offset = htab->root.sgot->size;
htab->root.sgot->size += GOT_ENTRY_SIZE;
- if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+ if (((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT && !resolved_to_zero)
|| h->root.type != bfd_link_hash_undefweak)
&& (bfd_link_pic (info)
|| WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h))
@@ -8990,7 +9027,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
}
indx = h && h->dynindx != -1 ? h->dynindx : 0;
- if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+ if (((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT && !resolved_to_zero)
|| h->root.type != bfd_link_hash_undefweak)
&& (!bfd_link_executable (info)
|| indx != 0
@@ -9072,7 +9109,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
visibility. */
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 || resolved_to_zero
|| UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
h->dyn_relocs = NULL;
@@ -9092,7 +9129,9 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
symbols which turn out to need copy relocs or are not
dynamic. */
- if (!h->non_got_ref
+ if (!(h->non_got_ref
+ || (h->root.type == bfd_link_hash_undefweak
+ && !resolved_to_zero))
&& ((h->def_dynamic
&& !h->def_regular)
|| (htab->root.dynamic_sections_created
@@ -9103,6 +9142,7 @@ elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
Undefined weak syms won't yet be marked as dynamic. */
if (h->dynindx == -1
&& !h->forced_local
+ && !resolved_to_zero
&& h->root.type == bfd_link_hash_undefweak
&& !bfd_elf_link_record_dynamic_symbol (info, h))
return false;
@@ -10058,8 +10098,17 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
Elf_Internal_Sym *sym)
{
struct elf_aarch64_link_hash_table *htab;
+ struct elf_aarch64_link_hash_entry *eh;
+ bool local_undefweak;
htab = elf_aarch64_hash_table (info);
+ eh = (struct elf_aarch64_link_hash_entry *) h;
+
+ /* We keep PLT/GOT entries without dynamic PLT/GOT relocations for
+ resolved undefined weak symbols in executable so that their
+ references have value 0 at run-time. */
+ local_undefweak = UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh);
+
if (h->plt.offset != (bfd_vma) - 1)
{
asection *plt, *gotplt, *relplt;
@@ -10094,7 +10143,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
abort ();
elfNN_aarch64_create_small_pltn_entry (h, htab, output_bfd, info);
- if (!h->def_regular)
+ if (!local_undefweak && !h->def_regular)
{
/* Mark the symbol as undefined, rather than as defined in
the .plt section. */
@@ -10116,7 +10165,8 @@ elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
&& elf_aarch64_hash_entry (h)->got_type == GOT_NORMAL
/* Undefined weak symbol in static PIE resolves to 0 without
any dynamic relocations. */
- && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
+ && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h)
+ && !local_undefweak)
{
Elf_Internal_Rela rela;
bfd_byte *loc;
@@ -10766,6 +10816,9 @@ const struct elf_size_info elfNN_aarch64_size_info =
#define elf_backend_init_index_section \
_bfd_elf_init_2_index_sections
+#define elf_backend_fixup_symbol \
+ elfNN_aarch64_elf_fixup_symbol
+
#define elf_backend_finish_dynamic_sections \
elfNN_aarch64_finish_dynamic_sections
diff --git a/ld/emulparams/aarch64elf.sh b/ld/emulparams/aarch64elf.sh
index 72616b57691..42f708118fb 100644
--- a/ld/emulparams/aarch64elf.sh
+++ b/ld/emulparams/aarch64elf.sh
@@ -1,4 +1,5 @@
source_sh ${srcdir}/emulparams/dt-relr.sh
+source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
ARCH=aarch64
MACHINE=
diff --git a/ld/emulparams/aarch64elf32.sh b/ld/emulparams/aarch64elf32.sh
index 45bf31a179a..02e0cad8699 100644
--- a/ld/emulparams/aarch64elf32.sh
+++ b/ld/emulparams/aarch64elf32.sh
@@ -1,4 +1,5 @@
source_sh ${srcdir}/emulparams/dt-relr.sh
+source_sh ${srcdir}/emulparams/dynamic_undefined_weak.sh
ARCH="aarch64:ilp32"
MACHINE=
diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em
index aa2859d4f73..c680dca8f86 100644
--- a/ld/emultempl/aarch64elf.em
+++ b/ld/emultempl/aarch64elf.em
@@ -368,7 +368,7 @@ PARSE_AND_LIST_LONGOPTS='
{ "no-apply-dynamic-relocs", no_argument, NULL, OPTION_NO_APPLY_DYNAMIC_RELOCS},
'
-PARSE_AND_LIST_OPTIONS='
+PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}'
fprintf (file, _(" --no-enum-size-warning Don'\''t warn about objects with incompatible\n"
" enum sizes\n"));
fprintf (file, _(" --no-wchar-size-warning Don'\''t warn about objects with incompatible\n"
diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em
index 863657e12f5..672974df511 100644
--- a/ld/emultempl/elf.em
+++ b/ld/emultempl/elf.em
@@ -813,6 +813,7 @@ EOF
fi
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. */
+const char *ldelf_emit_nx_module_name;
+
/* These variables are required to pass information back and forth
between after_open and check_needed and stat_needed and vercheck. */
@@ -1209,8 +1212,93 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab,
*save_input_bfd_tail = NULL;
}
-/* This is called before calling plugin 'all symbols read' hook. */
+static bool
+write_nx_module_name (bfd *abfd)
+{
+ struct elf_obj_tdata *t = elf_tdata (abfd);
+ const char *name;
+ asection *asec;
+ Elf_Internal_Shdr *i_shdr;
+ unsigned char *contents;
+ bfd_size_type size;
+ file_ptr position;
+ name = t->o->nx_module_name.name;
+ asec = t->o->nx_module_name.sec;
+ if (bfd_is_abs_section (asec->output_section))
+ {
+ einfo (_("%P: warning: .nx-module-name section discarded,"
+ " --build-id ignored\n"));
+ return true;
+ }
+ i_shdr = &elf_section_data (asec->output_section)->this_hdr;
+
+ if (i_shdr->contents == NULL)
+ {
+ if (asec->contents == NULL)
+ asec->contents = (unsigned char *) xmalloc (asec->size);
+ contents = asec->contents;
+ }
+ else
+ contents = i_shdr->contents + asec->output_offset;
+
+ size = asec->size;
+ bfd_h_put_32 (abfd, 0, &contents[0]);
+ bfd_h_put_32 (abfd, size - 9, &contents[4]);
+ memcpy (&contents[8], name, size - 9);
+ contents[size - 1] = 0; /* ensure null termination for AMS */
+
+ position = i_shdr->sh_offset + asec->output_offset;
+
+ return (bfd_seek (abfd, position, SEEK_SET) == 0
+ && bfd_write (contents, size, abfd) == size);
+}
+
+/* Make .nx-module-name section, and set up elf_tdata->nx_module_name. */
+
+static bool
+setup_nx_module_name (bfd *ibfd, bfd *obfd)
+{
+ asection *s;
+ bfd_size_type size;
+ flagword flags;
+
+ if (ldelf_emit_nx_module_name[0] == '\0')
+ {
+ /* Extract the basename of the output bfd and use it as the module name. */
+ char *dot_pos;
+ free ((char *) ldelf_emit_nx_module_name);
+ ldelf_emit_nx_module_name = (char *) lbasename (bfd_get_filename (obfd));
+ ldelf_emit_nx_module_name = xstrdup (ldelf_emit_nx_module_name);
+ dot_pos = strrchr (ldelf_emit_nx_module_name, '.');
+ if (dot_pos != NULL)
+ {
+ /* Remove extension. */
+ *dot_pos = 0;
+ }
+ }
+
+ size = 8 + strlen(ldelf_emit_nx_module_name) + 1; /* extra null terminator for AMS */
+ flags = (SEC_ALLOC | SEC_LOAD | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED | SEC_READONLY | SEC_DATA);
+ s = bfd_make_section_with_flags (ibfd, ".nx-module-name", flags);
+ if (s != NULL && bfd_set_section_alignment (s, 4))
+ {
+ 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.name = ldelf_emit_nx_module_name;
+ t->o->nx_module_name.sec = s;
+ elf_section_type (s) = SHT_PROGBITS;
+ s->size = size;
+ return true;
+ }
+
+ einfo (_("%P: warning: cannot create .nx-module-name section,"
+ " --nx-module-name ignored\n"));
+ return false;
+}
+
+/* This is called before calling plugin 'all symbols read' hook. */
void
ldelf_before_plugin_all_symbols_read (int use_libpath, int native,
int is_linux, int is_freebsd,
@@ -1289,6 +1377,24 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd,
}
}
+ if (ldelf_emit_nx_module_name != NULL)
+ {
+ /* Find an ELF input. */
+ for (abfd = link_info.input_bfds;
+ abfd != (bfd *) NULL; abfd = abfd->link.next)
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
+ && bfd_count_sections (abfd) != 0
+ && !((lang_input_statement_type *) abfd->usrdata)->flags.just_syms)
+ break;
+
+ /* 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))
+ {
+ free ((char *) ldelf_emit_nx_module_name);
+ ldelf_emit_nx_module_name = NULL;
+ }
+ }
+
get_elf_backend_data (link_info.output_bfd)->setup_gnu_properties (&link_info);
/* Do not allow executable files to be used as inputs to the link. */
diff --git a/ld/ldelf.h b/ld/ldelf.h
index 239194772c4..68516dbf45e 100644
--- 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_EXCLUDE_LIBS,
+ OPTION_NX_MODULE_NAME,
/* Used by emulparams/elf32mcore.sh, emultempl/beos.em, emultempl/pe.em
and emultempl/pep.em. */
OPTION_BASE_FILE,

View File

@@ -1,8 +1,8 @@
diff --git a/gcc/config.gcc b/gcc/config.gcc diff --git a/gcc/config.gcc b/gcc/config.gcc
index 648b3dc2110..ed605b28956 100644 index 95c91ee02be..4711542eee5 100644
--- a/gcc/config.gcc --- a/gcc/config.gcc
+++ b/gcc/config.gcc +++ b/gcc/config.gcc
@@ -1132,7 +1132,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 648b3dc2110..ed605b28956 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 ec45f23fa41..a208eabd806 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 ec45f23fa41..a208eabd806 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 a9f3e2715ca..0c7304e1d81 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
@@ -52,6 +52,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 f5db5379543..f582e5a7543 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
@@ -19550,8 +19550,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,32 +75,31 @@ index f5db5379543..f582e5a7543 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 73b09e20508..ad62b5080cc 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
@@ -1154,6 +1154,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
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 36d0bb3f718..cfa2f7efc7f 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
@@ -7068,11 +7068,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")]
) )
@@ -122,32 +118,20 @@ index 36d0bb3f718..cfa2f7efc7f 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 1d7967db9c0..17870f18b8b 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
@@ -128,6 +128,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.
@@ -266,7 +281,7 @@ TargetVariable
long aarch64_stack_protector_guard_offset = 0 long aarch64_stack_protector_guard_offset = 0
moutline-atomics moutline-atomics
@@ -155,13 +139,13 @@ index 1d7967db9c0..17870f18b8b 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 a9a244ab6d6..a29f2772d63 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))))
@@ -246,8 +230,15 @@ 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 acff6138d63..8dc91b75f93 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
@@ -93,7 +93,10 @@ mingw32_gt_pch_get_address (size_t size, int) @@ -93,7 +93,10 @@ mingw32_gt_pch_get_address (size_t size, int)
@@ -263,10 +254,10 @@ index acff6138d63..8dc91b75f93 100644
MEM_RESERVE | MEM_TOP_DOWN, MEM_RESERVE | MEM_TOP_DOWN,
PAGE_NOACCESS); PAGE_NOACCESS);
diff --git a/gcc/gcc.cc b/gcc/gcc.cc diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index 16bb07f2cdc..22a181a3a1c 100644 index 728332b8153..47fc03eb8c8 100644
--- a/gcc/gcc.cc --- a/gcc/gcc.cc
+++ b/gcc/gcc.cc +++ b/gcc/gcc.cc
@@ -868,6 +868,11 @@ proper position among the other output files. */ @@ -881,6 +881,11 @@ proper position among the other output files. */
#endif #endif
#endif #endif
@@ -278,7 +269,7 @@ index 16bb07f2cdc..22a181a3a1c 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 \
@@ -1191,6 +1196,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;
@@ -286,7 +277,7 @@ index 16bb07f2cdc..22a181a3a1c 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;
@@ -1701,6 +1707,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),
@@ -294,8 +285,21 @@ index 16bb07f2cdc..22a181a3a1c 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 93ff5b81dc5..20c0fe89a28 100644 index 38d3859a73c..f97358d9787 100644
--- a/libgcc/crtstuff.c --- a/libgcc/crtstuff.c
+++ b/libgcc/crtstuff.c +++ b/libgcc/crtstuff.c
@@ -326,7 +326,7 @@ register_tm_clones (void) @@ -326,7 +326,7 @@ register_tm_clones (void)
@@ -308,7 +312,7 @@ index 93ff5b81dc5..20c0fe89a28 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 1989c0c86ed..f1c49b2d4b1 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
@@ -321,10 +325,10 @@ index 1989c0c86ed..f1c49b2d4b1 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 a880e8ee227..c58249f986c 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
@@ -1417,6 +1417,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' \
@@ -333,10 +337,10 @@ index a880e8ee227..c58249f986c 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 0ff875b280b..37820c57a0a 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
@@ -1891,6 +1891,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' \
@@ -344,3 +348,16 @@ index 0ff875b280b..37820c57a0a 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
;;
*)

View File

@@ -0,0 +1,363 @@
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 95c91ee02be..4711542eee5 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1195,7 +1195,14 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
tmake_file="${tmake_file} aarch64/t-aarch64"
case $target in
aarch64-*-elf*)
+ default_use_cxa_atexit=yes
use_gcc_stdint=wrap
+ tm_file="${tm_file} devkitpro.h"
+ tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
+ extra_options="${extra_options} devkitpro.opt"
+ case ${enable_threads} in
+ "" | yes | posix) thread_file='posix' ;;
+ esac
;;
aarch64-*-fuchsia*)
tm_file="${tm_file} fuchsia.h"
diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h
index 5396da9b2d6..87235d680ad 100644
--- a/gcc/config/aarch64/aarch64-elf-raw.h
+++ b/gcc/config/aarch64/aarch64-elf-raw.h
@@ -22,6 +22,7 @@
#ifndef GCC_AARCH64_ELF_RAW_H
#define GCC_AARCH64_ELF_RAW_H
+#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L %(libgloss) --end-group"
#define STARTFILE_SPEC " crti%O%s crtbegin%O%s crt0%O%s"
#define ENDFILE_SPEC \
" crtend%O%s crtn%O%s " \
diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h
index a05c0d3ded1..5551807e4c6 100644
--- a/gcc/config/aarch64/aarch64-opts.h
+++ b/gcc/config/aarch64/aarch64-opts.h
@@ -80,7 +80,8 @@ enum aarch64_tp_reg {
AARCH64_TPIDR_EL1 = 1,
AARCH64_TPIDR_EL2 = 2,
AARCH64_TPIDR_EL3 = 3,
- AARCH64_TPIDRRO_EL0 = 4
+ AARCH64_TPIDRRO_EL0 = 4,
+ AARCH64_TP_SOFT = 5
};
/* SVE vector register sizes. */
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index 1beec94629d..90a9ec580f8 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -21060,8 +21060,24 @@ aarch64_load_tp (rtx target)
|| !register_operand (target, Pmode))
target = gen_reg_rtx (Pmode);
- /* Can return in any reg. */
- emit_insn (gen_aarch64_load_tp_hard (target));
+ if (TARGET_HARD_TP)
+ {
+ /* Can return in any reg. */
+ emit_insn (gen_aarch64_load_tp_hard (target));
+ }
+ else
+ {
+ /* Always returned in r0. Immediately copy the result into a pseudo,
+ otherwise other uses of r0 (e.g. setting up function arguments) may
+ clobber the value. */
+
+ rtx tmp;
+
+ emit_insn (gen_aarch64_load_tp_soft ());
+
+ tmp = gen_rtx_REG (DImode, R0_REGNUM);
+ emit_move_insn (target, tmp);
+ }
return target;
}
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index 4fa1dfc7906..43a01fe3d56 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -1377,6 +1377,10 @@ typedef struct
/* Check TLS Descriptors mechanism is selected. */
#define TARGET_TLS_DESC (aarch64_tls_dialect == TLS_DESCRIPTORS)
+/* Check selected thread pointer access sequence to use. */
+#define TARGET_HARD_TP (aarch64_tpidr_reg != AARCH64_TP_SOFT)
+#define TARGET_SOFT_TP (aarch64_tpidr_reg == AARCH64_TP_SOFT)
+
extern enum aarch64_code_model aarch64_cmodel;
/* When using the tiny addressing model conditional and unconditional branches
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index dbde066f747..3e3198bf52f 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -7436,11 +7436,22 @@
(define_insn "aarch64_load_tp_hard"
[(set (match_operand:DI 0 "register_operand" "=r")
(unspec:DI [(const_int 0)] UNSPEC_TLS))]
- ""
+ "TARGET_HARD_TP"
"* return aarch64_output_load_tp (operands[0]);"
[(set_attr "type" "mrs")]
)
+(define_insn "aarch64_load_tp_soft"
+ [(set (reg:DI 0) (unspec:DI [(const_int 0)] UNSPEC_TLS))
+ (clobber (reg:DI IP0_REGNUM))
+ (clobber (reg:DI IP1_REGNUM))
+ (clobber (reg:DI LR_REGNUM))
+ (clobber (reg:CC CC_REGNUM))]
+ "TARGET_SOFT_TP"
+ "bl\\t__aarch64_read_tp\\t// aarch64_load_tp_soft"
+ [(set_attr "type" "branch")]
+)
+
;; The TLS ABI specifically requires that the compiler does not schedule
;; instructions in the TLS stubs, in order to enable linker relaxation.
;; Therefore we treat the stubs as an atomic sequence.
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
index 6356c419399..a6907ed0a0b 100644
--- a/gcc/config/aarch64/aarch64.opt
+++ b/gcc/config/aarch64/aarch64.opt
@@ -128,6 +128,9 @@ Enum(tp_reg) String(tpidr_el3) Value(AARCH64_TPIDR_EL3)
EnumValue
Enum(tp_reg) String(tpidrro_el0) Value(AARCH64_TPIDRRO_EL0)
+EnumValue
+Enum(tp_reg) String(soft) Value(AARCH64_TP_SOFT)
+
mtp=
Target RejectNegative Joined Enum(tp_reg) Var(aarch64_tpidr_reg) Init(AARCH64_TPIDR_EL0) Save
Specify the thread pointer register.
@@ -329,7 +332,7 @@ TargetVariable
long aarch64_stack_protector_guard_offset = 0
moutline-atomics
-Target Var(aarch64_flag_outline_atomics) Init(2) Save
+Target Var(aarch64_flag_outline_atomics) Save
Generate local calls to out-of-line atomic operations.
-param=aarch64-vect-compare-costs=
diff --git a/gcc/config/aarch64/t-aarch64 b/gcc/config/aarch64/t-aarch64
index 78713558e7d..76c0914d8ce 100644
--- a/gcc/config/aarch64/t-aarch64
+++ b/gcc/config/aarch64/t-aarch64
@@ -208,8 +208,10 @@ aarch64-ldp-fusion.o: $(srcdir)/config/aarch64/aarch64-ldp-fusion.cc \
$(srcdir)/config/aarch64/aarch64-ldp-fusion.cc
comma=,
-MULTILIB_OPTIONS = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst $(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG))))
-MULTILIB_DIRNAMES = $(subst $(comma), ,$(TM_MULTILIB_CONFIG))
+MULTILIB_OPTIONS = mcmodel=large fPIC
+MULTILIB_DIRNAMES = large pic
+MULTILIB_REQUIRED = mcmodel=large fPIC
+MULTILIB_MATCHES = fPIC=fpic fPIC=fpie fPIC=fPIE
insn-conditions.md: s-check-sve-md
s-check-sve-md: $(srcdir)/config/aarch64/check-sve-md.awk \
diff --git a/gcc/config/devkitpro.h b/gcc/config/devkitpro.h
new file mode 100644
index 00000000000..a25459e4352
--- /dev/null
+++ b/gcc/config/devkitpro.h
@@ -0,0 +1,32 @@
+/* Definitions for devkitPro toolchains.
+ Copyright (C) 2016-2018 Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ Under Section 7 of GPL version 3, you are granted additional
+ permissions described in the GCC Runtime Library Exception, version
+ 3.1, as published by the Free Software Foundation.
+
+ You should have received a copy of the GNU General Public License and
+ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() \
+ do { \
+ builtin_define ("__DEVKITA64__"); \
+ builtin_define ("__DEVKITPRO__"); \
+ } while (0)
+
+
diff --git a/gcc/config/devkitpro.opt b/gcc/config/devkitpro.opt
new file mode 100644
index 00000000000..9acbbf9d27c
--- /dev/null
+++ b/gcc/config/devkitpro.opt
@@ -0,0 +1,29 @@
+; Options for devkitPro toolchains.
+
+; Copyright (C) 2011-2018 Free Software Foundation, Inc.
+;
+; This file is part of GCC.
+;
+; GCC is free software; you can redistribute it and/or modify it under
+; the terms of the GNU General Public License as published by the Free
+; Software Foundation; either version 3, or (at your option) any later
+; version.
+;
+; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+; WARRANTY; without even the implied warranty of MERCHANTABILITY or
+; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+; for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with GCC; see the file COPYING3. If not see
+; <http://www.gnu.org/licenses/>.
+
+; See the GCC internals manual (options.texi) for a description of
+; this file's format.
+
+; Please try to keep this file in ASCII collating order.
+
+pthread
+Driver
+
+; This comment is to ensure we retain the blank line above.
diff --git a/gcc/config/devkitpro.opt.urls b/gcc/config/devkitpro.opt.urls
new file mode 100644
index 00000000000..ab7b466aa71
--- /dev/null
+++ b/gcc/config/devkitpro.opt.urls
@@ -0,0 +1 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/devkitpro.opt and generated HTML
diff --git a/gcc/config/i386/host-mingw32.cc b/gcc/config/i386/host-mingw32.cc
index 42563982e42..923dc198a7e 100644
--- a/gcc/config/i386/host-mingw32.cc
+++ b/gcc/config/i386/host-mingw32.cc
@@ -93,7 +93,10 @@ mingw32_gt_pch_get_address (size_t size, int)
for NT system dlls is in 0x70000000 to 0x78000000 range.
If we allocate at bottom we need to reserve the address as early
as possible and at the same point in each invocation. */
-
+
+#if __MINGW64__
+ size = UINT64_C(64 * 1024 * 1024 * 1024);
+#endif
res = VirtualAlloc (NULL, size,
MEM_RESERVE | MEM_TOP_DOWN,
PAGE_NOACCESS);
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index 728332b8153..47fc03eb8c8 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -881,6 +881,11 @@ proper position among the other output files. */
#endif
#endif
+#ifndef LIBGLOSS_SPEC
+# define LIBGLOSS_SPEC "-lsysbase"
+#endif
+
+
/* config.h can define STARTFILE_SPEC to override the default crt0 files. */
#ifndef STARTFILE_SPEC
#define STARTFILE_SPEC \
@@ -1208,6 +1213,7 @@ static const char *link_spec = LINK_SPEC;
static const char *lib_spec = LIB_SPEC;
static const char *link_gomp_spec = "";
static const char *libgcc_spec = LIBGCC_SPEC;
+static const char *libgloss_spec = LIBGLOSS_SPEC;
static const char *endfile_spec = ENDFILE_SPEC;
static const char *startfile_spec = STARTFILE_SPEC;
static const char *linker_name_spec = LINKER_NAME;
@@ -1720,6 +1726,7 @@ static struct spec_list static_specs[] =
INIT_STATIC_SPEC ("lib", &lib_spec),
INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec),
INIT_STATIC_SPEC ("libgcc", &libgcc_spec),
+ INIT_STATIC_SPEC ("libgloss", &libgloss_spec),
INIT_STATIC_SPEC ("startfile", &startfile_spec),
INIT_STATIC_SPEC ("cross_compile", &cross_compile),
INIT_STATIC_SPEC ("version", &compiler_version),
diff --git a/libcc1/configure b/libcc1/configure
index ea689a353c8..98f9d9b21b7 100755
--- a/libcc1/configure
+++ b/libcc1/configure
@@ -5119,7 +5119,7 @@ else
# Adding the `sed 1q' prevents false positives on HP-UX, which says:
# nm: unknown option "B" ignored
case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
- *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
+ $tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
break
;;
*)
diff --git a/libgcc/crtstuff.c b/libgcc/crtstuff.c
index 38d3859a73c..f97358d9787 100644
--- a/libgcc/crtstuff.c
+++ b/libgcc/crtstuff.c
@@ -326,7 +326,7 @@ register_tm_clones (void)
#ifdef OBJECT_FORMAT_ELF
-#if DEFAULT_USE_CXA_ATEXIT
+#if 1 /* DEFAULT_USE_CXA_ATEXIT */
/* Declare the __dso_handle variable. It should have a unique value
in every shared-object; in a main program its value is zero. The
object should in any case be protected. This means the instance
diff --git a/libgcc/gthr.h b/libgcc/gthr.h
index 33c2d8ff630..2a0a9c1e87e 100644
--- a/libgcc/gthr.h
+++ b/libgcc/gthr.h
@@ -136,7 +136,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* The pe-coff weak support isn't fully compatible to ELF's weak.
For static libraries it might would work, but as we need to deal
with shared versions too, we disable it for mingw-targets. */
-#ifdef __MINGW32__
+#if defined(__MINGW32__) || defined(__DEVKITA64__)
#undef GTHREAD_USE_WEAK
#define GTHREAD_USE_WEAK 0
#endif
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index 422a0f4bd0a..ee09ada9170 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -1429,6 +1429,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
+ -e 's/_GLIBCXX___DEVKITA64_GLIBCXX___/__DEVKITA64__/g' \
-e 's,^#include "\(.*\)",#include <bits/\1>,g' \
< $< > $@
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 9fd4ab4848c..beea48941a3 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -1903,6 +1903,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias}
-e '/^#/s/\(${uppercase}${uppercase}*\)/_GLIBCXX_\1/g' \
-e 's/_GLIBCXX_SUPPORTS_WEAK/__GXX_WEAK__/g' \
-e 's/_GLIBCXX___MINGW32_GLIBCXX___/__MINGW32__/g' \
+ -e 's/_GLIBCXX___DEVKITA64_GLIBCXX___/__DEVKITA64__/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
;;
*)

View File

@@ -13,7 +13,7 @@ index 0d4460b58..0eab54b65 100644
include lm32/Makefile.inc include lm32/Makefile.inc
endif endif
diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in
index fd845cf5f..5f80b89ab 100644 index fd845cf5f..0a6ff43fb 100644
--- a/libgloss/Makefile.in --- a/libgloss/Makefile.in
+++ b/libgloss/Makefile.in +++ b/libgloss/Makefile.in
@@ -173,25 +173,28 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @@ -173,25 +173,28 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3)
@@ -104,7 +104,7 @@ index fd845cf5f..5f80b89ab 100644
$(top_srcdir)/m68k/acinclude.m4 \ $(top_srcdir)/m68k/acinclude.m4 \
$(top_srcdir)/mcore/acinclude.m4 \ $(top_srcdir)/mcore/acinclude.m4 \
$(top_srcdir)/mips/acinclude.m4 \ $(top_srcdir)/mips/acinclude.m4 \
@@ -459,6 +463,69 @@ libobjs_a_LIBADD = @@ -459,6 +463,70 @@ libobjs_a_LIBADD =
am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \
$(am__objects_5) $(am__objects_6) $(am__objects_7) $(am__objects_5) $(am__objects_6) $(am__objects_7)
libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS)
@@ -118,6 +118,7 @@ index fd845cf5f..5f80b89ab 100644
+libsysbase_libsysbase_a_LIBADD = +libsysbase_libsysbase_a_LIBADD =
+@CONFIG_LIBSYSBASE_TRUE@am_libsysbase_libsysbase_a_OBJECTS = libsysbase/libsysbase_libsysbase_a-_exit.$(OBJEXT) \ +@CONFIG_LIBSYSBASE_TRUE@am_libsysbase_libsysbase_a_OBJECTS = libsysbase/libsysbase_libsysbase_a-_exit.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-abort.$(OBJEXT) \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-abort.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-assert.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-build_argv.$(OBJEXT) \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-build_argv.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-chdir.$(OBJEXT) \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-chdir.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-chmod.$(OBJEXT) \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-chmod.$(OBJEXT) \
@@ -174,7 +175,7 @@ index fd845cf5f..5f80b89ab 100644
lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS)
lm32_libgloss_a_LIBADD = lm32_libgloss_a_LIBADD =
@CONFIG_LM32_TRUE@am_lm32_libgloss_a_OBJECTS = lm32/isatty.$(OBJEXT) \ @CONFIG_LM32_TRUE@am_lm32_libgloss_a_OBJECTS = lm32/isatty.$(OBJEXT) \
@@ -668,7 +735,8 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ @@ -668,7 +736,8 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \
$(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \
$(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \ $(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \
$(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \
@@ -184,7 +185,7 @@ index fd845cf5f..5f80b89ab 100644
$(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \
$(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \
$(xtensa_libgloss_a_SOURCES) \ $(xtensa_libgloss_a_SOURCES) \
@@ -761,7 +829,7 @@ ETAGS = etags @@ -761,7 +830,7 @@ ETAGS = etags
CTAGS = ctags CTAGS = ctags
CSCOPE = cscope CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS) DIST_SUBDIRS = $(SUBDIRS)
@@ -193,7 +194,7 @@ index fd845cf5f..5f80b89ab 100644
AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ AARCH64_OBJTYPE = @AARCH64_OBJTYPE@
ACLOCAL = @ACLOCAL@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
@@ -779,7 +847,7 @@ CCASFLAGS = @CCASFLAGS@ @@ -779,7 +848,7 @@ CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@ CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
CPP = @CPP@ CPP = @CPP@
@@ -202,7 +203,7 @@ index fd845cf5f..5f80b89ab 100644
CYGPATH_W = @CYGPATH_W@ CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@ DEFS = @DEFS@
DEPDIR = @DEPDIR@ DEPDIR = @DEPDIR@
@@ -874,6 +942,7 @@ pdfdir = @pdfdir@ @@ -874,6 +943,7 @@ pdfdir = @pdfdir@
prefix = @prefix@ prefix = @prefix@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
psdir = @psdir@ psdir = @psdir@
@@ -210,7 +211,7 @@ index fd845cf5f..5f80b89ab 100644
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@ srcdir = @srcdir@
@@ -899,14 +968,14 @@ multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) @@ -899,14 +969,14 @@ multilibtooldir = $(tooldir)/lib$(MULTISUBDIR)
multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \
$(am__append_8) $(am__append_13) $(am__append_15) \ $(am__append_8) $(am__append_13) $(am__append_15) \
$(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_18) $(am__append_22) $(am__append_23) \
@@ -230,7 +231,7 @@ index fd845cf5f..5f80b89ab 100644
includetooldir = $(tooldir)/include includetooldir = $(tooldir)/include
includetool_DATA = $(am__append_16) includetool_DATA = $(am__append_16)
includesystooldir = $(tooldir)/include/sys includesystooldir = $(tooldir)/include/sys
@@ -917,7 +986,7 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include @@ -917,7 +987,7 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include
# to install (e.g. our crt0.o objects). # to install (e.g. our crt0.o objects).
noinst_LIBRARIES = libobjs.a noinst_LIBRARIES = libobjs.a
libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_25) \ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_25) \
@@ -239,7 +240,7 @@ index fd845cf5f..5f80b89ab 100644
FLAGS_TO_PASS = \ FLAGS_TO_PASS = \
"CC=$(CC)" \ "CC=$(CC)" \
"CFLAGS=$(CFLAGS)" \ "CFLAGS=$(CFLAGS)" \
@@ -1098,6 +1167,65 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @@ -1098,6 +1168,66 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
@CONFIG_LIBNOSYS_TRUE@ libnosys/getentropy.c \ @CONFIG_LIBNOSYS_TRUE@ libnosys/getentropy.c \
@CONFIG_LIBNOSYS_TRUE@ libnosys/_exit.c @CONFIG_LIBNOSYS_TRUE@ libnosys/_exit.c
@@ -250,6 +251,7 @@ index fd845cf5f..5f80b89ab 100644
+@CONFIG_LIBSYSBASE_TRUE@libsysbase_libsysbase_a_SOURCES = \ +@CONFIG_LIBSYSBASE_TRUE@libsysbase_libsysbase_a_SOURCES = \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/_exit.c \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/_exit.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/abort.c \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/abort.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/assert.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/build_argv.c \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/build_argv.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/chdir.c \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/chdir.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/chmod.c \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/chmod.c \
@@ -305,7 +307,7 @@ index fd845cf5f..5f80b89ab 100644
@CONFIG_LM32_TRUE@lm32_libgloss_a_SOURCES = \ @CONFIG_LM32_TRUE@lm32_libgloss_a_SOURCES = \
@CONFIG_LM32_TRUE@ lm32/isatty.c \ @CONFIG_LM32_TRUE@ lm32/isatty.c \
@CONFIG_LM32_TRUE@ lm32/scall.S @CONFIG_LM32_TRUE@ lm32/scall.S
@@ -1203,19 +1331,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @@ -1203,19 +1333,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \
@@ -331,7 +333,7 @@ index fd845cf5f..5f80b89ab 100644
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c
@@ -1228,7 +1356,7 @@ all: config.h @@ -1228,7 +1358,7 @@ all: config.h
.SUFFIXES: .S .c .dvi .o .obj .ps .SUFFIXES: .S .c .dvi .o .obj .ps
am--refresh: Makefile am--refresh: Makefile
@: @:
@@ -340,7 +342,7 @@ index fd845cf5f..5f80b89ab 100644
@for dep in $?; do \ @for dep in $?; do \
case '$(am__configure_deps)' in \ case '$(am__configure_deps)' in \
*$$dep*) \ *$$dep*) \
@@ -1250,7 +1378,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @@ -1250,7 +1380,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac; esac;
@@ -349,7 +351,7 @@ index fd845cf5f..5f80b89ab 100644
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck $(SHELL) ./config.status --recheck
@@ -1730,6 +1858,183 @@ libobjs.a: $(libobjs_a_OBJECTS) $(libobjs_a_DEPENDENCIES) $(EXTRA_libobjs_a_DEPE @@ -1730,6 +1860,186 @@ libobjs.a: $(libobjs_a_OBJECTS) $(libobjs_a_DEPENDENCIES) $(EXTRA_libobjs_a_DEPE
$(AM_V_at)-rm -f libobjs.a $(AM_V_at)-rm -f libobjs.a
$(AM_V_AR)$(libobjs_a_AR) libobjs.a $(libobjs_a_OBJECTS) $(libobjs_a_LIBADD) $(AM_V_AR)$(libobjs_a_AR) libobjs.a $(libobjs_a_OBJECTS) $(libobjs_a_LIBADD)
$(AM_V_at)$(RANLIB) libobjs.a $(AM_V_at)$(RANLIB) libobjs.a
@@ -372,6 +374,9 @@ index fd845cf5f..5f80b89ab 100644
+libsysbase/libsysbase_libsysbase_a-abort.$(OBJEXT): \ +libsysbase/libsysbase_libsysbase_a-abort.$(OBJEXT): \
+ libsysbase/$(am__dirstamp) \ + libsysbase/$(am__dirstamp) \
+ libsysbase/$(DEPDIR)/$(am__dirstamp) + libsysbase/$(DEPDIR)/$(am__dirstamp)
+libsysbase/libsysbase_libsysbase_a-assert.$(OBJEXT): \
+ libsysbase/$(am__dirstamp) \
+ libsysbase/$(DEPDIR)/$(am__dirstamp)
+libsysbase/libsysbase_libsysbase_a-build_argv.$(OBJEXT): \ +libsysbase/libsysbase_libsysbase_a-build_argv.$(OBJEXT): \
+ libsysbase/$(am__dirstamp) \ + libsysbase/$(am__dirstamp) \
+ libsysbase/$(DEPDIR)/$(am__dirstamp) + libsysbase/$(DEPDIR)/$(am__dirstamp)
@@ -533,7 +538,7 @@ index fd845cf5f..5f80b89ab 100644
lm32/isatty.$(OBJEXT): lm32/$(am__dirstamp) \ lm32/isatty.$(OBJEXT): lm32/$(am__dirstamp) \
lm32/$(DEPDIR)/$(am__dirstamp) lm32/$(DEPDIR)/$(am__dirstamp)
lm32/scall.$(OBJEXT): lm32/$(am__dirstamp) \ lm32/scall.$(OBJEXT): lm32/$(am__dirstamp) \
@@ -2113,6 +2418,7 @@ mostlyclean-compile: @@ -2113,6 +2423,7 @@ mostlyclean-compile:
-rm -f d30v/*.$(OBJEXT) -rm -f d30v/*.$(OBJEXT)
-rm -f iq2000/*.$(OBJEXT) -rm -f iq2000/*.$(OBJEXT)
-rm -f libnosys/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT)
@@ -541,13 +546,14 @@ index fd845cf5f..5f80b89ab 100644
-rm -f lm32/*.$(OBJEXT) -rm -f lm32/*.$(OBJEXT)
-rm -f nios2/*.$(OBJEXT) -rm -f nios2/*.$(OBJEXT)
-rm -f riscv/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT)
@@ -2238,6 +2544,60 @@ distclean-compile: @@ -2238,6 +2549,61 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/unlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/unlink.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/wait.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/wait.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/dummy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/dummy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-_exit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-abort.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-abort.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-chdir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-chdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-chmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-chmod.Po@am__quote@
@@ -602,7 +608,7 @@ index fd845cf5f..5f80b89ab 100644
@AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/crt0.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/isatty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/isatty.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/scall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/scall.Po@am__quote@
@@ -3082,6 +3442,748 @@ csky/csky_libsemi_a-getpid.obj: csky/getpid.c @@ -3082,6 +3448,762 @@ csky/csky_libsemi_a-getpid.obj: csky/getpid.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-getpid.obj `if test -f 'csky/getpid.c'; then $(CYGPATH_W) 'csky/getpid.c'; else $(CYGPATH_W) '$(srcdir)/csky/getpid.c'; fi` @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-getpid.obj `if test -f 'csky/getpid.c'; then $(CYGPATH_W) 'csky/getpid.c'; else $(CYGPATH_W) '$(srcdir)/csky/getpid.c'; fi`
@@ -634,6 +640,20 @@ index fd845cf5f..5f80b89ab 100644
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-abort.obj `if test -f 'libsysbase/abort.c'; then $(CYGPATH_W) 'libsysbase/abort.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/abort.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-abort.obj `if test -f 'libsysbase/abort.c'; then $(CYGPATH_W) 'libsysbase/abort.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/abort.c'; fi`
+ +
+libsysbase/libsysbase_libsysbase_a-assert.o: libsysbase/assert.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-assert.o -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo -c -o libsysbase/libsysbase_libsysbase_a-assert.o `test -f 'libsysbase/assert.c' || echo '$(srcdir)/'`libsysbase/assert.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libsysbase/assert.c' object='libsysbase/libsysbase_libsysbase_a-assert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-assert.o `test -f 'libsysbase/assert.c' || echo '$(srcdir)/'`libsysbase/assert.c
+
+libsysbase/libsysbase_libsysbase_a-assert.obj: libsysbase/assert.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-assert.obj -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo -c -o libsysbase/libsysbase_libsysbase_a-assert.obj `if test -f 'libsysbase/assert.c'; then $(CYGPATH_W) 'libsysbase/assert.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/assert.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libsysbase/assert.c' object='libsysbase/libsysbase_libsysbase_a-assert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-assert.obj `if test -f 'libsysbase/assert.c'; then $(CYGPATH_W) 'libsysbase/assert.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/assert.c'; fi`
+
+libsysbase/libsysbase_libsysbase_a-build_argv.o: libsysbase/build_argv.c +libsysbase/libsysbase_libsysbase_a-build_argv.o: libsysbase/build_argv.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-build_argv.o -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Tpo -c -o libsysbase/libsysbase_libsysbase_a-build_argv.o `test -f 'libsysbase/build_argv.c' || echo '$(srcdir)/'`libsysbase/build_argv.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-build_argv.o -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Tpo -c -o libsysbase/libsysbase_libsysbase_a-build_argv.o `test -f 'libsysbase/build_argv.c' || echo '$(srcdir)/'`libsysbase/build_argv.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Po +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Po
@@ -1351,7 +1371,7 @@ index fd845cf5f..5f80b89ab 100644
nios2/nios2_libnios2_a-io-close.o: nios2/io-close.c nios2/nios2_libnios2_a-io-close.o: nios2/io-close.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-close.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo -c -o nios2/nios2_libnios2_a-io-close.o `test -f 'nios2/io-close.c' || echo '$(srcdir)/'`nios2/io-close.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-close.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo -c -o nios2/nios2_libnios2_a-io-close.o `test -f 'nios2/io-close.c' || echo '$(srcdir)/'`nios2/io-close.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po
@@ -5103,6 +6205,8 @@ distclean-generic: @@ -5103,6 +6225,8 @@ distclean-generic:
-rm -f iq2000/$(am__dirstamp) -rm -f iq2000/$(am__dirstamp)
-rm -f libnosys/$(DEPDIR)/$(am__dirstamp) -rm -f libnosys/$(DEPDIR)/$(am__dirstamp)
-rm -f libnosys/$(am__dirstamp) -rm -f libnosys/$(am__dirstamp)
@@ -1360,7 +1380,7 @@ index fd845cf5f..5f80b89ab 100644
-rm -f lm32/$(DEPDIR)/$(am__dirstamp) -rm -f lm32/$(DEPDIR)/$(am__dirstamp)
-rm -f lm32/$(am__dirstamp) -rm -f lm32/$(am__dirstamp)
-rm -f nios2/$(DEPDIR)/$(am__dirstamp) -rm -f nios2/$(DEPDIR)/$(am__dirstamp)
@@ -5129,7 +6233,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ @@ -5129,7 +6253,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \
distclean: distclean-recursive distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -1369,7 +1389,7 @@ index fd845cf5f..5f80b89ab 100644
-rm -f Makefile -rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \ distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-local distclean-tags distclean-hdr distclean-local distclean-tags
@@ -5272,7 +6376,7 @@ installcheck-am: @@ -5272,7 +6396,7 @@ installcheck-am:
maintainer-clean: maintainer-clean-recursive maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache -rm -rf $(top_srcdir)/autom4te.cache
@@ -1544,10 +1564,10 @@ index 268d86c51..1b918a61e 100644
m4_include([mips/acinclude.m4]) m4_include([mips/acinclude.m4])
diff --git a/libgloss/libsysbase/Makefile.inc b/libgloss/libsysbase/Makefile.inc diff --git a/libgloss/libsysbase/Makefile.inc b/libgloss/libsysbase/Makefile.inc
new file mode 100644 new file mode 100644
index 000000000..123a1dedf index 000000000..bb3c45c32
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/Makefile.inc +++ b/libgloss/libsysbase/Makefile.inc
@@ -0,0 +1,66 @@ @@ -0,0 +1,67 @@
+multilibtool_DATA += %D%/sysbase.specs +multilibtool_DATA += %D%/sysbase.specs
+ +
+multilibtool_LIBRARIES += %D%/libpthread.a +multilibtool_LIBRARIES += %D%/libpthread.a
@@ -1563,6 +1583,7 @@ index 000000000..123a1dedf
+%C%_libsysbase_a_SOURCES = \ +%C%_libsysbase_a_SOURCES = \
+ %D%/_exit.c \ + %D%/_exit.c \
+ %D%/abort.c \ + %D%/abort.c \
+ %D%/assert.c \
+ %D%/build_argv.c \ + %D%/build_argv.c \
+ %D%/chdir.c \ + %D%/chdir.c \
+ %D%/chmod.c \ + %D%/chmod.c \
@@ -1638,16 +1659,23 @@ index 000000000..a45723f84
+} +}
diff --git a/libgloss/libsysbase/abort.c b/libgloss/libsysbase/abort.c diff --git a/libgloss/libsysbase/abort.c b/libgloss/libsysbase/abort.c
new file mode 100644 new file mode 100644
index 000000000..9272e22c9 index 000000000..9074c8fa2
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/abort.c +++ b/libgloss/libsysbase/abort.c
@@ -0,0 +1,8 @@ @@ -0,0 +1,15 @@
+#include <stdlib.h> +#include <stdlib.h>
+#include <unistd.h> +#include <unistd.h>
+#include <sys/iosupport.h>
+ +
+void abort(void) { +void abort(void) {
+ write (2, "Abort called.\n", sizeof("Abort called.\n")-1); + do {
+
+ if ( __has_syscall(abort) ) {
+ __syscall_abort();
+ } else {
+ _exit (1); + _exit (1);
+ }
+ } while(1);
+} +}
+ +
diff --git a/libgloss/libsysbase/acconfig.h b/libgloss/libsysbase/acconfig.h diff --git a/libgloss/libsysbase/acconfig.h b/libgloss/libsysbase/acconfig.h
@@ -1718,6 +1746,29 @@ index 000000000..7b0d7b4d6
+ z8k-*-*) ;; + z8k-*-*) ;;
+ *) AC_DEFINE(MISSING_SYSCALL_NAMES, 1, [Missing syscall names]) ;; + *) AC_DEFINE(MISSING_SYSCALL_NAMES, 1, [Missing syscall names]) ;;
+esac +esac
diff --git a/libgloss/libsysbase/assert.c b/libgloss/libsysbase/assert.c
new file mode 100644
index 000000000..faa74b866
--- /dev/null
+++ b/libgloss/libsysbase/assert.c
@@ -0,0 +1,17 @@
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/iosupport.h>
+
+void
+__assert_func (const char *file,
+ int line,
+ const char *func,
+ const char *failedexpr)
+{
+ if ( __has_syscall(assert_func) ) {
+ __syscall_assert_func(file, line, func, failedexpr);
+ }
+ abort();
+ /* NOTREACHED */
+}
diff --git a/libgloss/libsysbase/build_argv.c b/libgloss/libsysbase/build_argv.c diff --git a/libgloss/libsysbase/build_argv.c b/libgloss/libsysbase/build_argv.c
new file mode 100644 new file mode 100644
index 000000000..0697f53d2 index 000000000..0697f53d2
@@ -6465,10 +6516,10 @@ index 000000000..d15eab89d
+ +
diff --git a/libgloss/libsysbase/dirent.c b/libgloss/libsysbase/dirent.c diff --git a/libgloss/libsysbase/dirent.c b/libgloss/libsysbase/dirent.c
new file mode 100644 new file mode 100644
index 000000000..482d2f814 index 000000000..4dfeabd71
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/dirent.c +++ b/libgloss/libsysbase/dirent.c
@@ -0,0 +1,257 @@ @@ -0,0 +1,241 @@
+#include <malloc.h> +#include <malloc.h>
+#include <errno.h> +#include <errno.h>
+#include <string.h> +#include <string.h>
@@ -6608,47 +6659,13 @@ index 000000000..482d2f814
+ return res; + return res;
+} +}
+ +
+
+struct dirent* readdir (DIR *dirp) {
+ struct stat st;
+ char filename[NAME_MAX+1];
+ int res;
+ int olderrno = errno;
+
+ if (!dirp) {
+ errno = EBADF;
+ return NULL;
+ }
+
+ res = __dirnext (dirp->dirData, filename, &st);
+
+ if (res < 0) {
+ if (errno == ENOENT) {
+ // errno == ENONENT set by dirnext means it's end of directory
+ // But readdir should not touch errno in case of dir end
+ errno = olderrno;
+ }
+ return NULL;
+ }
+
+ // We've moved forward in the directory
+ dirp->position += 1;
+
+ if (strnlen(filename, sizeof(filename)) >= sizeof(dirp->fileData.d_name)) {
+ errno = EOVERFLOW;
+ return NULL;
+ }
+
+ strncpy (dirp->fileData.d_name, filename, sizeof(dirp->fileData.d_name));
+ dirp->fileData.d_ino = st.st_ino;
+ dirp->fileData.d_type = IFTODT(st.st_mode);
+
+ return &(dirp->fileData);
+}
+
+
+int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result) { +int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result) {
+ struct stat st; +#ifdef _DIRENT_HAVE_D_STAT
+ struct stat *st = &dirp->fileData.d_stat;
+#else
+ struct stat tmpstat;
+ struct stat *st = &tmpstat;
+#endif
+ char filename[NAME_MAX+1]; + char filename[NAME_MAX+1];
+ int res; + int res;
+ +
@@ -6656,7 +6673,11 @@ index 000000000..482d2f814
+ return EBADF; + return EBADF;
+ } + }
+ +
+ res = __dirnext (dirp->dirData, filename, &st); + if (!result) {
+ return EFAULT;
+ }
+
+ res = __dirnext (dirp->dirData, filename, st);
+ +
+ if (res < 0) { + if (res < 0) {
+ res = errno; + res = errno;
@@ -6665,6 +6686,7 @@ index 000000000..482d2f814
+ // errno == ENONENT set by dirnext means it's end of directory + // errno == ENONENT set by dirnext means it's end of directory
+ // But readdir should not touch errno in case of dir end + // But readdir should not touch errno in case of dir end
+ res = 0; + res = 0;
+ errno = 0;
+ } + }
+ return res; + return res;
+ } + }
@@ -6678,13 +6700,26 @@ index 000000000..482d2f814
+ } + }
+ +
+ strncpy (entry->d_name, filename, sizeof(entry->d_name)); + strncpy (entry->d_name, filename, sizeof(entry->d_name));
+ entry->d_ino = st.st_ino; + entry->d_ino = st->st_ino;
+ entry->d_type = IFTODT(st.st_mode); + entry->d_type = IFTODT(st->st_mode);
+ +
+ *result = entry; + *result = entry;
+ return 0; + return 0;
+} +}
+ +
+struct dirent* readdir (DIR *dirp) {
+
+ struct dirent *entry = &dirp->fileData;
+
+ int res = readdir_r(dirp, entry, &entry);
+
+ if (res !=0) {
+ errno = res;
+ return NULL;
+ }
+
+ return entry;
+}
+ +
+void rewinddir (DIR *dirp) { +void rewinddir (DIR *dirp) {
+ if (!dirp) { + if (!dirp) {
@@ -7058,7 +7093,7 @@ index 000000000..2bada9736
+} +}
diff --git a/libgloss/libsysbase/fpathconf.c b/libgloss/libsysbase/fpathconf.c diff --git a/libgloss/libsysbase/fpathconf.c b/libgloss/libsysbase/fpathconf.c
new file mode 100644 new file mode 100644
index 000000000..453f64870 index 000000000..9cba92a72
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/fpathconf.c +++ b/libgloss/libsysbase/fpathconf.c
@@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
@@ -7078,7 +7113,7 @@ index 000000000..453f64870
+ struct _reent *r = _REENT; + struct _reent *r = _REENT;
+ +
+ if ( NULL == handle ) { + if ( NULL == handle ) {
+ errno = EINVAL; + errno = EBADF;
+ return ret; + return ret;
+ } + }
+ +
@@ -7094,10 +7129,10 @@ index 000000000..453f64870
+} +}
diff --git a/libgloss/libsysbase/fstat.c b/libgloss/libsysbase/fstat.c diff --git a/libgloss/libsysbase/fstat.c b/libgloss/libsysbase/fstat.c
new file mode 100644 new file mode 100644
index 000000000..32267b828 index 000000000..94924d802
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/fstat.c +++ b/libgloss/libsysbase/fstat.c
@@ -0,0 +1,32 @@ @@ -0,0 +1,35 @@
+#include "config.h" +#include "config.h"
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -7117,7 +7152,10 @@ index 000000000..32267b828
+ if(fileDesc!=-1) { + if(fileDesc!=-1) {
+ handle = __get_handle(fileDesc); + handle = __get_handle(fileDesc);
+ +
+ if ( NULL == handle ) return ret; + if ( NULL == handle ) {
+ errno = EBADF;
+ return ret;
+ }
+ +
+ dev = handle->device; + dev = handle->device;
+ +
@@ -7132,7 +7170,7 @@ index 000000000..32267b828
+} +}
diff --git a/libgloss/libsysbase/fsync.c b/libgloss/libsysbase/fsync.c diff --git a/libgloss/libsysbase/fsync.c b/libgloss/libsysbase/fsync.c
new file mode 100644 new file mode 100644
index 000000000..fb06cb6d1 index 000000000..e63e3762b
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/fsync.c +++ b/libgloss/libsysbase/fsync.c
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
@@ -7156,7 +7194,7 @@ index 000000000..fb06cb6d1
+ handle = __get_handle(fileDesc); + handle = __get_handle(fileDesc);
+ +
+ if ( NULL == handle ) { + if ( NULL == handle ) {
+ errno = EINVAL; + errno = EBADF;
+ return ret; + return ret;
+ } + }
+ +
@@ -7172,7 +7210,7 @@ index 000000000..fb06cb6d1
+} +}
diff --git a/libgloss/libsysbase/ftruncate.c b/libgloss/libsysbase/ftruncate.c diff --git a/libgloss/libsysbase/ftruncate.c b/libgloss/libsysbase/ftruncate.c
new file mode 100644 new file mode 100644
index 000000000..0cd7d0fc4 index 000000000..94b4a3761
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/ftruncate.c +++ b/libgloss/libsysbase/ftruncate.c
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
@@ -7196,7 +7234,7 @@ index 000000000..0cd7d0fc4
+ handle = __get_handle(fileDesc); + handle = __get_handle(fileDesc);
+ +
+ if ( NULL == handle ) { + if ( NULL == handle ) {
+ r->_errno = EINVAL; + r->_errno=EBADF;
+ return ret; + return ret;
+ } + }
+ +
@@ -7741,10 +7779,10 @@ index 000000000..d7a988359
+ +
diff --git a/libgloss/libsysbase/lseek.c b/libgloss/libsysbase/lseek.c diff --git a/libgloss/libsysbase/lseek.c b/libgloss/libsysbase/lseek.c
new file mode 100644 new file mode 100644
index 000000000..39ef385b1 index 000000000..c5568e338
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/lseek.c +++ b/libgloss/libsysbase/lseek.c
@@ -0,0 +1,35 @@ @@ -0,0 +1,38 @@
+#include "config.h" +#include "config.h"
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -7766,7 +7804,10 @@ index 000000000..39ef385b1
+ +
+ handle = __get_handle(fileDesc); + handle = __get_handle(fileDesc);
+ +
+ if ( NULL == handle ) return ret; + if ( NULL == handle ) {
+ r->_errno=EBADF;
+ return ret;
+ }
+ +
+ dev = handle->device; + dev = handle->device;
+ +
@@ -9039,10 +9080,10 @@ index 000000000..ff84cd355
+} +}
diff --git a/libgloss/libsysbase/read.c b/libgloss/libsysbase/read.c diff --git a/libgloss/libsysbase/read.c b/libgloss/libsysbase/read.c
new file mode 100644 new file mode 100644
index 000000000..9c548d830 index 000000000..30505c7b6
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/read.c +++ b/libgloss/libsysbase/read.c
@@ -0,0 +1,32 @@ @@ -0,0 +1,35 @@
+#include "config.h" +#include "config.h"
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -9062,7 +9103,10 @@ index 000000000..9c548d830
+ if(fileDesc!=-1) { + if(fileDesc!=-1) {
+ handle = __get_handle(fileDesc); + handle = __get_handle(fileDesc);
+ +
+ if ( NULL == handle ) return ret; + if ( NULL == handle ) {
+ r->_errno=EBADF;
+ return ret;
+ }
+ +
+ dev = handle->device; + dev = handle->device;
+ +
@@ -10068,10 +10112,10 @@ index 000000000..2c2998250
+#endif /* __WARNING_H__ */ +#endif /* __WARNING_H__ */
diff --git a/libgloss/libsysbase/write.c b/libgloss/libsysbase/write.c diff --git a/libgloss/libsysbase/write.c b/libgloss/libsysbase/write.c
new file mode 100644 new file mode 100644
index 000000000..04198e854 index 000000000..baf0d6ae5
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/write.c +++ b/libgloss/libsysbase/write.c
@@ -0,0 +1,31 @@ @@ -0,0 +1,34 @@
+#include "config.h" +#include "config.h"
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -10091,7 +10135,10 @@ index 000000000..04198e854
+ if(fileDesc!=-1) { + if(fileDesc!=-1) {
+ handle = __get_handle(fileDesc); + handle = __get_handle(fileDesc);
+ +
+ if ( NULL == handle ) return ret; + if ( NULL == handle ) {
+ r->_errno=EBADF;
+ return ret;
+ }
+ +
+ dev = handle->device; + dev = handle->device;
+ +
@@ -10168,11 +10215,12 @@ index ef5038e68..32a1d5e0b 100644
.stab 0 : { *(.stab) } .stab 0 : { *(.stab) }
diff --git a/libgloss/rs6000/crtmain.c b/libgloss/rs6000/crtmain.c diff --git a/libgloss/rs6000/crtmain.c b/libgloss/rs6000/crtmain.c
new file mode 100644 new file mode 100644
index 000000000..bd25d775d index 000000000..f4f11fa28
--- /dev/null --- /dev/null
+++ b/libgloss/rs6000/crtmain.c +++ b/libgloss/rs6000/crtmain.c
@@ -0,0 +1,18 @@ @@ -0,0 +1,20 @@
+#include <unistd.h> +#include <unistd.h>
+#include <stdlib.h>
+ +
+struct __argv { +struct __argv {
+ int argvMagic; //!< argv magic number, set to 0x5f617267 ('_arg') if valid + int argvMagic; //!< argv magic number, set to 0x5f617267 ('_arg') if valid
@@ -10185,11 +10233,26 @@ index 000000000..bd25d775d
+extern struct __argv *__system_argv; +extern struct __argv *__system_argv;
+void __init(); +void __init();
+void SYS_PreMain(); +void SYS_PreMain();
+int main(int argc, char **argv);
+ +
+void __crtmain() { +void __crtmain() {
+ SYS_PreMain(); + SYS_PreMain();
+ exit ( main(__system_argv->argc,__system_argv->argv) ); + exit ( main(__system_argv->argc,__system_argv->argv) );
+} +}
diff --git a/libgloss/rs6000/mbx-print.c b/libgloss/rs6000/mbx-print.c
index 64472ee68..8474dd7d5 100644
--- a/libgloss/rs6000/mbx-print.c
+++ b/libgloss/rs6000/mbx-print.c
@@ -16,6 +16,9 @@
/*
* print -- do a raw print of a string
*/
+
+#include <unistd.h>
+
void
print (ptr)
char *ptr;
diff --git a/libgloss/rs6000/mbx.ld b/libgloss/rs6000/mbx.ld diff --git a/libgloss/rs6000/mbx.ld b/libgloss/rs6000/mbx.ld
index cedf4e867..99d849e90 100644 index cedf4e867..99d849e90 100644
--- a/libgloss/rs6000/mbx.ld --- a/libgloss/rs6000/mbx.ld
@@ -10202,6 +10265,73 @@ index cedf4e867..99d849e90 100644
/* These are needed for ELF backends which have not yet been /* These are needed for ELF backends which have not yet been
converted to the new style linker. */ converted to the new style linker. */
.stab 0 : { *(.stab) } .stab 0 : { *(.stab) }
diff --git a/libgloss/rs6000/mvme-print.c b/libgloss/rs6000/mvme-print.c
index 8d195424e..7f0877bd5 100644
--- a/libgloss/rs6000/mvme-print.c
+++ b/libgloss/rs6000/mvme-print.c
@@ -17,6 +17,10 @@
* write -- write some bytes to the output device.
*/
+void __pcrlf(void);
+void __outln(char *ptr, char *q);
+void __outstr(char *ptr, char *q);
+
int
write (fd, ptr, len)
int fd;
diff --git a/libgloss/rs6000/sim-abort.c b/libgloss/rs6000/sim-abort.c
index e1b59cf19..faeb93153 100644
--- a/libgloss/rs6000/sim-abort.c
+++ b/libgloss/rs6000/sim-abort.c
@@ -14,6 +14,9 @@
* they apply.
*/
+#include <unistd.h>
+#include <stdlib.h>
+
void abort(void)
{
write (2, "Abort called.\n", sizeof("Abort called.\n")-1);
diff --git a/libgloss/rs6000/sim-inbyte.c b/libgloss/rs6000/sim-inbyte.c
index 787b68976..44b273dff 100644
--- a/libgloss/rs6000/sim-inbyte.c
+++ b/libgloss/rs6000/sim-inbyte.c
@@ -14,6 +14,8 @@
* they apply.
*/
+#include <unistd.h>
+
int
inbyte ()
{
diff --git a/libgloss/rs6000/sim-print.c b/libgloss/rs6000/sim-print.c
index c0b9adced..e74bbfa04 100644
--- a/libgloss/rs6000/sim-print.c
+++ b/libgloss/rs6000/sim-print.c
@@ -16,6 +16,8 @@
/*
* print -- do a raw print of a string
*/
+#include <unistd.h>
+
void
print (ptr)
char *ptr;
diff --git a/libgloss/rs6000/sim-sbrk.c b/libgloss/rs6000/sim-sbrk.c
index 5c8bd6522..a536c663e 100644
--- a/libgloss/rs6000/sim-sbrk.c
+++ b/libgloss/rs6000/sim-sbrk.c
@@ -16,6 +16,7 @@
extern char _end[];
static char *curbrk = _end;
+int brk(char *curbrk);
char *
sbrk (incr)
diff --git a/libgloss/rs6000/xilinx.ld b/libgloss/rs6000/xilinx.ld diff --git a/libgloss/rs6000/xilinx.ld b/libgloss/rs6000/xilinx.ld
index 75b2a12b6..40a4a1e4b 100644 index 75b2a12b6..40a4a1e4b 100644
--- a/libgloss/rs6000/xilinx.ld --- a/libgloss/rs6000/xilinx.ld
@@ -10501,7 +10631,7 @@ index 9a32646ab..e5df29f36 100644
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/powerpc/libc_a-vfprintf.o -MD -MP -MF libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Tpo -c -o libc/machine/powerpc/libc_a-vfprintf.o `test -f 'libc/machine/powerpc/vfprintf.c' || echo '$(srcdir)/'`libc/machine/powerpc/vfprintf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/powerpc/libc_a-vfprintf.o -MD -MP -MF libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Tpo -c -o libc/machine/powerpc/libc_a-vfprintf.o `test -f 'libc/machine/powerpc/vfprintf.c' || echo '$(srcdir)/'`libc/machine/powerpc/vfprintf.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Tpo libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Po @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Tpo libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Po
diff --git a/newlib/configure.host b/newlib/configure.host diff --git a/newlib/configure.host b/newlib/configure.host
index 386183466..cc5e33ad7 100644 index 386183466..b8b021100 100644
--- a/newlib/configure.host --- a/newlib/configure.host
+++ b/newlib/configure.host +++ b/newlib/configure.host
@@ -630,13 +630,25 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID @@ -630,13 +630,25 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
@@ -10538,7 +10668,7 @@ index 386183466..cc5e33ad7 100644
+ powerpc*-*-eabi*) + powerpc*-*-eabi*)
+ default_newlib_io_c99_formats="yes" + default_newlib_io_c99_formats="yes"
+ default_newlib_io_long_long="yes" + default_newlib_io_long_long="yes"
+ newlib_cflags="${newlib_cflags} -DCUSTOM_MALLOC_LOCK -D__DYNAMIC_REENT__ -DGETREENT_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -D__DEFAULT_UTF8__" + newlib_cflags="${newlib_cflags} -DHAVE_ASSERT_FUNC -DABORT_PROVIDED -DCUSTOM_MALLOC_LOCK -D__DYNAMIC_REENT__ -DGETREENT_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -D__DEFAULT_UTF8__"
+ newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections" + newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections"
+ syscall_dir=syscalls + syscall_dir=syscalls
+ ;; + ;;
@@ -10571,6 +10701,35 @@ index 5c293c83d..0dbfcd7ee 100644
/* Under Cygwin, wchar_t (or its extension wint_t) is Unicode */ /* Under Cygwin, wchar_t (or its extension wint_t) is Unicode */
#define _jp2uc(c) (c) #define _jp2uc(c) (c)
#define _jp2uc_l(c, l) (c) #define _jp2uc_l(c, l) (c)
diff --git a/newlib/libc/include/elf.h b/newlib/libc/include/elf.h
index 79d3b974b..673f3391a 100644
--- a/newlib/libc/include/elf.h
+++ b/newlib/libc/include/elf.h
@@ -580,6 +580,11 @@ typedef struct {
+typedef Elf32_Word Elf32_Relr;
+typedef Elf64_Xword Elf64_Relr;
+
+
+
#define ELF32_R_SYM(val) ((val) >> 8)
#define ELF32_R_TYPE(val) ((val) & 0xff)
#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff))
@@ -747,7 +752,11 @@ typedef struct {
#define DT_ENCODING 32
#define DT_PREINIT_ARRAY 32
#define DT_PREINIT_ARRAYSZ 33
-#define DT_NUM 34
+#define DT_SYMTAB_SHNDX 34
+#define DT_RELRSZ 35
+#define DT_RELR 36
+#define DT_RELRENT 37
+#define DT_NUM 38
#define DT_LOOS 0x6000000d
#define DT_HIOS 0x6ffff000
#define DT_LOPROC 0x70000000
diff --git a/newlib/libc/include/fnmatch.h b/newlib/libc/include/fnmatch.h diff --git a/newlib/libc/include/fnmatch.h b/newlib/libc/include/fnmatch.h
index a94e923a4..9171e98aa 100644 index a94e923a4..9171e98aa 100644
--- a/newlib/libc/include/fnmatch.h --- a/newlib/libc/include/fnmatch.h
@@ -10658,6 +10817,19 @@ index b1dd2a7c4..16e29c037 100644
extern void *_sbrk_r (struct _reent *, ptrdiff_t); extern void *_sbrk_r (struct _reent *, ptrdiff_t);
extern int _stat_r (struct _reent *, const char *, struct stat *); extern int _stat_r (struct _reent *, const char *, struct stat *);
extern _CLOCK_T_ _times_r (struct _reent *, struct tms *); extern _CLOCK_T_ _times_r (struct _reent *, struct tms *);
diff --git a/newlib/libc/include/regex.h b/newlib/libc/include/regex.h
index fa3e26879..4da1a374e 100644
--- a/newlib/libc/include/regex.h
+++ b/newlib/libc/include/regex.h
@@ -96,7 +96,7 @@ __BEGIN_DECLS
int regcomp(regex_t *__restrict, const char *__restrict, int);
size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t);
int regexec(const regex_t *__restrict, const char *__restrict,
- size_t, regmatch_t [__restrict], int);
+ size_t, regmatch_t [__restrict_arr], int);
void regfree(regex_t *);
__END_DECLS
diff --git a/newlib/libc/include/semaphore.h b/newlib/libc/include/semaphore.h diff --git a/newlib/libc/include/semaphore.h b/newlib/libc/include/semaphore.h
new file mode 100755 new file mode 100755
index 000000000..4afb0e419 index 000000000..4afb0e419
@@ -10922,27 +11094,34 @@ index f810b008f..ca7e11dc7 100644
+ +
#endif /* !_SYS__TIMESPEC_H_ */ #endif /* !_SYS__TIMESPEC_H_ */
diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h
index 5dcc77a80..6930a751d 100644 index 5dcc77a80..10a992c21 100644
--- a/newlib/libc/include/sys/config.h --- a/newlib/libc/include/sys/config.h
+++ b/newlib/libc/include/sys/config.h +++ b/newlib/libc/include/sys/config.h
@@ -4,8 +4,19 @@ @@ -4,8 +4,26 @@
#include <machine/ieeefp.h> /* floating point macros */ #include <machine/ieeefp.h> /* floating point macros */
#include <sys/features.h> /* POSIX defs */ #include <sys/features.h> /* POSIX defs */
-#ifdef __aarch64__ -#ifdef __aarch64__
+#ifdef __DEVKITARM__ +#ifdef __DEVKITARM__
+#define __DYNAMIC_REENT__ +#define __DYNAMIC_REENT__
+#define MALLOC_ALIGNMENT_THRESHOLD 32
+#endif +#endif
+ +
+#ifdef __DEVKITA64__ +#ifdef __DEVKITA64__
#define MALLOC_ALIGNMENT 16 #define MALLOC_ALIGNMENT 16
+#define MALLOC_ALIGNMENT_THRESHOLD 32
+#define __DYNAMIC_REENT__ +#define __DYNAMIC_REENT__
+#endif +#endif
+ +
+#ifdef __DEVKITPPC__ +#ifdef __DEVKITPPC__
+#define MALLOC_ALIGNMENT_THRESHOLD 64
+#define __BUFSIZ__ 32768 +#define __BUFSIZ__ 32768
+#define MALLOC_ALIGNMENT 64
+#define __DYNAMIC_REENT__ +#define __DYNAMIC_REENT__
+#endif
+
+#ifdef __DEVKITPRO__
+#define _READ_WRITE_RETURN_TYPE _ssize_t
+#define _READ_WRITE_BUFSIZE_TYPE size_t
#endif #endif
#ifdef __AMDGCN__ #ifdef __AMDGCN__
@@ -10970,10 +11149,10 @@ index a7d4bc52d..a04f13544 100644
#ifdef __rtems__ #ifdef __rtems__
diff --git a/newlib/libc/include/sys/iosupport.h b/newlib/libc/include/sys/iosupport.h diff --git a/newlib/libc/include/sys/iosupport.h b/newlib/libc/include/sys/iosupport.h
new file mode 100644 new file mode 100644
index 000000000..335014a4b index 000000000..b81214720
--- /dev/null --- /dev/null
+++ b/newlib/libc/include/sys/iosupport.h +++ b/newlib/libc/include/sys/iosupport.h
@@ -0,0 +1,140 @@ @@ -0,0 +1,142 @@
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
+#ifndef __iosupp_h__ +#ifndef __iosupp_h__
+#define __iosupp_h__ +#define __iosupp_h__
@@ -11060,6 +11239,8 @@ index 000000000..335014a4b
+#define __SYSCALL(_name) __syscall_##_name +#define __SYSCALL(_name) __syscall_##_name
+#endif +#endif
+ +
+void __SYSCALL(abort) (void);
+void __SYSCALL(assert_func) (const char *file, int line, const char *func, const char *failedexpr);
+void __SYSCALL(exit) ( int rc ); +void __SYSCALL(exit) ( int rc );
+int __SYSCALL(gettod_r) (struct _reent *ptr, struct timeval *tp, struct timezone *tz); +int __SYSCALL(gettod_r) (struct _reent *ptr, struct timeval *tp, struct timezone *tz);
+void __SYSCALL(lock_init) (_LOCK_T *lock); +void __SYSCALL(lock_init) (_LOCK_T *lock);
@@ -11701,17 +11882,19 @@ index 000000000..a7d63da51
+#endif // _MACHINE__TYPES_H +#endif // _MACHINE__TYPES_H
diff --git a/newlib/libc/machine/powerpc/sys/dirent.h b/newlib/libc/machine/powerpc/sys/dirent.h diff --git a/newlib/libc/machine/powerpc/sys/dirent.h b/newlib/libc/machine/powerpc/sys/dirent.h
new file mode 100644 new file mode 100644
index 000000000..2aaca6080 index 000000000..b3780c263
--- /dev/null --- /dev/null
+++ b/newlib/libc/machine/powerpc/sys/dirent.h +++ b/newlib/libc/machine/powerpc/sys/dirent.h
@@ -0,0 +1,58 @@ @@ -0,0 +1,61 @@
+#ifndef _dirent_h_ +#ifndef _dirent_h_
+#define _dirent_h_ +#define _dirent_h_
+ +
+#define _DIRENT_HAVE_D_TYPE +#define _DIRENT_HAVE_D_TYPE
+#define _DIRENT_HAVE_D_STAT
+ +
+#include <sys/iosupport.h> +#include <sys/iosupport.h>
+#include <sys/types.h> +#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/syslimits.h> +#include <sys/syslimits.h>
+ +
+#define DT_UNKNOWN 0 +#define DT_UNKNOWN 0
@@ -11730,6 +11913,7 @@ index 000000000..2aaca6080
+ +
+struct dirent { +struct dirent {
+ ino_t d_ino; + ino_t d_ino;
+ struct stat d_stat;
+ unsigned char d_type; + unsigned char d_type;
+ char d_name[NAME_MAX+1]; + char d_name[NAME_MAX+1];
+}; +};
@@ -11983,6 +12167,30 @@ index 63c0618f1..dd3801900 100644
#define _STDIO_WITH_THREAD_CANCELLATION_SUPPORT #define _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
#endif #endif
diff --git a/newlib/libc/stdio/makebuf.c b/newlib/libc/stdio/makebuf.c
index b9c75bbf8..bc65acc2a 100644
--- a/newlib/libc/stdio/makebuf.c
+++ b/newlib/libc/stdio/makebuf.c
@@ -19,6 +19,7 @@
#include <_ansi.h>
#include <stdio.h>
#include <stdlib.h>
+#include <malloc.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/unistd.h>
@@ -50,7 +51,11 @@ __smakebuf_r (struct _reent *ptr,
return;
}
flags = __swhatbuf_r (ptr, fp, &size, &couldbetty);
+#ifdef MALLOC_ALIGNMENT_THRESHOLD
+ if ((p = _memalign_r (ptr, MALLOC_ALIGNMENT_THRESHOLD, size)) == NULL)
+#else
if ((p = _malloc_r (ptr, size)) == NULL)
+#endif
{
if (!(fp->_flags & __SSTR))
{
diff --git a/newlib/libc/stdio/remove.c b/newlib/libc/stdio/remove.c diff --git a/newlib/libc/stdio/remove.c b/newlib/libc/stdio/remove.c
index d8dfdbd82..a85b5a99b 100644 index d8dfdbd82..a85b5a99b 100644
--- a/newlib/libc/stdio/remove.c --- a/newlib/libc/stdio/remove.c
@@ -12151,6 +12359,24 @@ index 9b7bd518b..f0e33bbc1 100644
/* /*
* Exit, flushing stdio buffers if necessary. * Exit, flushing stdio buffers if necessary.
*/ */
diff --git a/newlib/libc/stdlib/malloc.c b/newlib/libc/stdlib/malloc.c
index f5ac29208..7d016a653 100644
--- a/newlib/libc/stdlib/malloc.c
+++ b/newlib/libc/stdlib/malloc.c
@@ -161,7 +161,12 @@ Supporting OS subroutines required: <<sbrk>>. */
void *
malloc (size_t nbytes) /* get a block */
{
- return _malloc_r (_REENT, nbytes);
+#ifdef MALLOC_ALIGNMENT_THRESHOLD
+ if (nbytes >= MALLOC_ALIGNMENT_THRESHOLD)
+ return _memalign_r (_REENT, MALLOC_ALIGNMENT_THRESHOLD, nbytes);
+ else
+#endif
+ return _malloc_r (_REENT, nbytes);
}
void
diff --git a/newlib/libc/stdlib/mlock.c b/newlib/libc/stdlib/mlock.c diff --git a/newlib/libc/stdlib/mlock.c b/newlib/libc/stdlib/mlock.c
index 23aa10173..ba88eb9fb 100644 index 23aa10173..ba88eb9fb 100644
--- a/newlib/libc/stdlib/mlock.c --- a/newlib/libc/stdlib/mlock.c

View File

@@ -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

View File

@@ -1,4 +1,4 @@
#!/bin/sh #!/bin/sh
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
@@ -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 25.1" \ --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 \

View File

@@ -1,8 +1,8 @@
diff --git a/gcc/config.gcc b/gcc/config.gcc diff --git a/gcc/config.gcc b/gcc/config.gcc
index 6fd1594480a..92b82426f50 100644 index 95c91ee02be..19f003c7952 100644
--- a/gcc/config.gcc --- a/gcc/config.gcc
+++ b/gcc/config.gcc +++ b/gcc/config.gcc
@@ -1412,6 +1412,11 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*) @@ -1482,6 +1482,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,7 +15,7 @@ index 6fd1594480a..92b82426f50 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 f1fa3fa174c..2bb894b5b2d 100644 index 451b15fe9f9..c9efaf21c8c 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
@@ -416,7 +416,7 @@ begin arch armv6k @@ -416,7 +416,7 @@ begin arch armv6k
@@ -28,7 +28,7 @@ index f1fa3fa174c..2bb894b5b2d 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 f7fc1460d1c..055f9d62385 100644 index aa64e50edeb..99cc8199ec5 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 f7fc1460d1c..055f9d62385 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 397ac3f68b9..b9a388f19be 100644 index 6b313042f20..7b39702224a 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,11 +252,18 @@ 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/gcc.cc b/gcc/gcc.cc diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index 16bb07f2cdc..22a181a3a1c 100644 index 728332b8153..47fc03eb8c8 100644
--- a/gcc/gcc.cc --- a/gcc/gcc.cc
+++ b/gcc/gcc.cc +++ b/gcc/gcc.cc
@@ -868,6 +868,11 @@ proper position among the other output files. */ @@ -881,6 +881,11 @@ proper position among the other output files. */
#endif #endif
#endif #endif
@@ -268,7 +275,7 @@ index 16bb07f2cdc..22a181a3a1c 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 \
@@ -1191,6 +1196,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;
@@ -276,7 +283,7 @@ index 16bb07f2cdc..22a181a3a1c 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;
@@ -1701,6 +1707,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),
@@ -284,6 +291,19 @@ index 16bb07f2cdc..22a181a3a1c 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
@@ -295,7 +315,7 @@ 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 93ff5b81dc5..20c0fe89a28 100644 index 38d3859a73c..f97358d9787 100644
--- a/libgcc/crtstuff.c --- a/libgcc/crtstuff.c
+++ b/libgcc/crtstuff.c +++ b/libgcc/crtstuff.c
@@ -326,7 +326,7 @@ register_tm_clones (void) @@ -326,7 +326,7 @@ register_tm_clones (void)
@@ -308,7 +328,7 @@ index 93ff5b81dc5..20c0fe89a28 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 1989c0c86ed..dc3220cdf3c 100644 index 33c2d8ff630..e23c2a7990f 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
@@ -320,11 +340,202 @@ index 1989c0c86ed..dc3220cdf3c 100644
#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 21abaeb0778..0ef23891978 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;
@@ -16444,7 +16456,7 @@ $as_echo "mutex" >&6; }
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 16447 "configure"
+#line 16459 "configure"
int main()
{
_Decimal32 d1;
@@ -16486,7 +16498,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 16489 "configure"
+#line 16501 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
@@ -28575,6 +28587,8 @@ _ACEOF
$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 37396bd6ebb..1dadf658c08 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -378,6 +378,7 @@ dnl # rather than hardcoding that information.
AC_DEFINE(HAVE_ICONV)
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 a880e8ee227..2050e2e4ccf 100644 index 422a0f4bd0a..42185df9517 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
@@ -1417,6 +1417,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' \
@@ -333,7 +544,7 @@ index a880e8ee227..2050e2e4ccf 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 0ff875b280b..7d270fc3a83 100644 index 9fd4ab4848c..0b7ba4021ee 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@
@@ -344,7 +555,7 @@ index 0ff875b280b..7d270fc3a83 100644
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@ srcdir = @srcdir@
@@ -1891,6 +1892,7 @@ ${host_builddir}/gthr.h: ${toplevel_srcdir}/libgcc/gthr.h stamp-${host_alias} @@ -1903,6 +1904,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' \
@@ -352,3 +563,16 @@ index 0ff875b280b..7d270fc3a83 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
;;
*)

View File

@@ -13,7 +13,7 @@ index 0d4460b58..0eab54b65 100644
include lm32/Makefile.inc include lm32/Makefile.inc
endif endif
diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in diff --git a/libgloss/Makefile.in b/libgloss/Makefile.in
index fd845cf5f..5f80b89ab 100644 index fd845cf5f..0a6ff43fb 100644
--- a/libgloss/Makefile.in --- a/libgloss/Makefile.in
+++ b/libgloss/Makefile.in +++ b/libgloss/Makefile.in
@@ -173,25 +173,28 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) @@ -173,25 +173,28 @@ check_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3)
@@ -104,7 +104,7 @@ index fd845cf5f..5f80b89ab 100644
$(top_srcdir)/m68k/acinclude.m4 \ $(top_srcdir)/m68k/acinclude.m4 \
$(top_srcdir)/mcore/acinclude.m4 \ $(top_srcdir)/mcore/acinclude.m4 \
$(top_srcdir)/mips/acinclude.m4 \ $(top_srcdir)/mips/acinclude.m4 \
@@ -459,6 +463,69 @@ libobjs_a_LIBADD = @@ -459,6 +463,70 @@ libobjs_a_LIBADD =
am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \ am_libobjs_a_OBJECTS = $(am__objects_3) $(am__objects_4) \
$(am__objects_5) $(am__objects_6) $(am__objects_7) $(am__objects_5) $(am__objects_6) $(am__objects_7)
libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS) libobjs_a_OBJECTS = $(am_libobjs_a_OBJECTS)
@@ -118,6 +118,7 @@ index fd845cf5f..5f80b89ab 100644
+libsysbase_libsysbase_a_LIBADD = +libsysbase_libsysbase_a_LIBADD =
+@CONFIG_LIBSYSBASE_TRUE@am_libsysbase_libsysbase_a_OBJECTS = libsysbase/libsysbase_libsysbase_a-_exit.$(OBJEXT) \ +@CONFIG_LIBSYSBASE_TRUE@am_libsysbase_libsysbase_a_OBJECTS = libsysbase/libsysbase_libsysbase_a-_exit.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-abort.$(OBJEXT) \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-abort.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-assert.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-build_argv.$(OBJEXT) \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-build_argv.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-chdir.$(OBJEXT) \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-chdir.$(OBJEXT) \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-chmod.$(OBJEXT) \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/libsysbase_libsysbase_a-chmod.$(OBJEXT) \
@@ -174,7 +175,7 @@ index fd845cf5f..5f80b89ab 100644
lm32_libgloss_a_AR = $(AR) $(ARFLAGS) lm32_libgloss_a_AR = $(AR) $(ARFLAGS)
lm32_libgloss_a_LIBADD = lm32_libgloss_a_LIBADD =
@CONFIG_LM32_TRUE@am_lm32_libgloss_a_OBJECTS = lm32/isatty.$(OBJEXT) \ @CONFIG_LM32_TRUE@am_lm32_libgloss_a_OBJECTS = lm32/isatty.$(OBJEXT) \
@@ -668,7 +735,8 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \ @@ -668,7 +736,8 @@ SOURCES = $(aarch64_librdimon_a_SOURCES) $(arc_libnsim_a_SOURCES) \
$(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \ $(bfin_libbfinbsp_a_SOURCES) $(bfin_libsim_a_SOURCES) \
$(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \ $(csky_libsemi_a_SOURCES) $(d30v_libsim_a_SOURCES) \
$(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \ $(iq2000_libeval_a_SOURCES) $(libnosys_libnosys_a_SOURCES) \
@@ -184,7 +185,7 @@ index fd845cf5f..5f80b89ab 100644
$(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \ $(nios2_libnios2_a_SOURCES) $(riscv_libgloss_a_SOURCES) \
$(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \ $(riscv_libsemihost_a_SOURCES) $(riscv_libsim_a_SOURCES) \
$(xtensa_libgloss_a_SOURCES) \ $(xtensa_libgloss_a_SOURCES) \
@@ -761,7 +829,7 @@ ETAGS = etags @@ -761,7 +830,7 @@ ETAGS = etags
CTAGS = ctags CTAGS = ctags
CSCOPE = cscope CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS) DIST_SUBDIRS = $(SUBDIRS)
@@ -193,7 +194,7 @@ index fd845cf5f..5f80b89ab 100644
AARCH64_OBJTYPE = @AARCH64_OBJTYPE@ AARCH64_OBJTYPE = @AARCH64_OBJTYPE@
ACLOCAL = @ACLOCAL@ ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
@@ -779,7 +847,7 @@ CCASFLAGS = @CCASFLAGS@ @@ -779,7 +848,7 @@ CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@ CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
CPP = @CPP@ CPP = @CPP@
@@ -202,7 +203,7 @@ index fd845cf5f..5f80b89ab 100644
CYGPATH_W = @CYGPATH_W@ CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@ DEFS = @DEFS@
DEPDIR = @DEPDIR@ DEPDIR = @DEPDIR@
@@ -874,6 +942,7 @@ pdfdir = @pdfdir@ @@ -874,6 +943,7 @@ pdfdir = @pdfdir@
prefix = @prefix@ prefix = @prefix@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
psdir = @psdir@ psdir = @psdir@
@@ -210,7 +211,7 @@ index fd845cf5f..5f80b89ab 100644
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@ srcdir = @srcdir@
@@ -899,14 +968,14 @@ multilibtooldir = $(tooldir)/lib$(MULTISUBDIR) @@ -899,14 +969,14 @@ multilibtooldir = $(tooldir)/lib$(MULTISUBDIR)
multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \ multilibtool_DATA = $(am__append_3) $(am__append_6) $(am__append_7) \
$(am__append_8) $(am__append_13) $(am__append_15) \ $(am__append_8) $(am__append_13) $(am__append_15) \
$(am__append_18) $(am__append_22) $(am__append_23) \ $(am__append_18) $(am__append_22) $(am__append_23) \
@@ -230,7 +231,7 @@ index fd845cf5f..5f80b89ab 100644
includetooldir = $(tooldir)/include includetooldir = $(tooldir)/include
includetool_DATA = $(am__append_16) includetool_DATA = $(am__append_16)
includesystooldir = $(tooldir)/include/sys includesystooldir = $(tooldir)/include/sys
@@ -917,7 +986,7 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include @@ -917,7 +987,7 @@ AM_CPPFLAGS = -idirafter $(srcroot)/include
# to install (e.g. our crt0.o objects). # to install (e.g. our crt0.o objects).
noinst_LIBRARIES = libobjs.a noinst_LIBRARIES = libobjs.a
libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_25) \ libobjs_a_SOURCES = $(am__append_14) $(am__append_19) $(am__append_25) \
@@ -239,7 +240,7 @@ index fd845cf5f..5f80b89ab 100644
FLAGS_TO_PASS = \ FLAGS_TO_PASS = \
"CC=$(CC)" \ "CC=$(CC)" \
"CFLAGS=$(CFLAGS)" \ "CFLAGS=$(CFLAGS)" \
@@ -1098,6 +1167,65 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @@ -1098,6 +1168,66 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
@CONFIG_LIBNOSYS_TRUE@ libnosys/getentropy.c \ @CONFIG_LIBNOSYS_TRUE@ libnosys/getentropy.c \
@CONFIG_LIBNOSYS_TRUE@ libnosys/_exit.c @CONFIG_LIBNOSYS_TRUE@ libnosys/_exit.c
@@ -250,6 +251,7 @@ index fd845cf5f..5f80b89ab 100644
+@CONFIG_LIBSYSBASE_TRUE@libsysbase_libsysbase_a_SOURCES = \ +@CONFIG_LIBSYSBASE_TRUE@libsysbase_libsysbase_a_SOURCES = \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/_exit.c \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/_exit.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/abort.c \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/abort.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/assert.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/build_argv.c \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/build_argv.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/chdir.c \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/chdir.c \
+@CONFIG_LIBSYSBASE_TRUE@ libsysbase/chmod.c \ +@CONFIG_LIBSYSBASE_TRUE@ libsysbase/chmod.c \
@@ -305,7 +307,7 @@ index fd845cf5f..5f80b89ab 100644
@CONFIG_LM32_TRUE@lm32_libgloss_a_SOURCES = \ @CONFIG_LM32_TRUE@lm32_libgloss_a_SOURCES = \
@CONFIG_LM32_TRUE@ lm32/isatty.c \ @CONFIG_LM32_TRUE@ lm32/isatty.c \
@CONFIG_LM32_TRUE@ lm32/scall.S @CONFIG_LM32_TRUE@ lm32/scall.S
@@ -1203,19 +1331,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex @@ -1203,19 +1333,19 @@ TEXINFO_TEX = ../texinfo/texinfo.tex
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libgloss_a_SOURCES = xtensa/sleep.S \
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c \
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/window-vectors.S \
@@ -331,7 +333,7 @@ index fd845cf5f..5f80b89ab 100644
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \ @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@xtensa_libsys_openocd_a_SOURCES = \
@CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c @CONFIG_XTENSA_TRUE@@HAVE_XTENSA_BOARD_ESP_TRUE@ xtensa/syscalls.c
@@ -1228,7 +1356,7 @@ all: config.h @@ -1228,7 +1358,7 @@ all: config.h
.SUFFIXES: .S .c .dvi .o .obj .ps .SUFFIXES: .S .c .dvi .o .obj .ps
am--refresh: Makefile am--refresh: Makefile
@: @:
@@ -340,7 +342,7 @@ index fd845cf5f..5f80b89ab 100644
@for dep in $?; do \ @for dep in $?; do \
case '$(am__configure_deps)' in \ case '$(am__configure_deps)' in \
*$$dep*) \ *$$dep*) \
@@ -1250,7 +1378,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @@ -1250,7 +1380,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac; esac;
@@ -349,7 +351,7 @@ index fd845cf5f..5f80b89ab 100644
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck $(SHELL) ./config.status --recheck
@@ -1730,6 +1858,183 @@ libobjs.a: $(libobjs_a_OBJECTS) $(libobjs_a_DEPENDENCIES) $(EXTRA_libobjs_a_DEPE @@ -1730,6 +1860,186 @@ libobjs.a: $(libobjs_a_OBJECTS) $(libobjs_a_DEPENDENCIES) $(EXTRA_libobjs_a_DEPE
$(AM_V_at)-rm -f libobjs.a $(AM_V_at)-rm -f libobjs.a
$(AM_V_AR)$(libobjs_a_AR) libobjs.a $(libobjs_a_OBJECTS) $(libobjs_a_LIBADD) $(AM_V_AR)$(libobjs_a_AR) libobjs.a $(libobjs_a_OBJECTS) $(libobjs_a_LIBADD)
$(AM_V_at)$(RANLIB) libobjs.a $(AM_V_at)$(RANLIB) libobjs.a
@@ -372,6 +374,9 @@ index fd845cf5f..5f80b89ab 100644
+libsysbase/libsysbase_libsysbase_a-abort.$(OBJEXT): \ +libsysbase/libsysbase_libsysbase_a-abort.$(OBJEXT): \
+ libsysbase/$(am__dirstamp) \ + libsysbase/$(am__dirstamp) \
+ libsysbase/$(DEPDIR)/$(am__dirstamp) + libsysbase/$(DEPDIR)/$(am__dirstamp)
+libsysbase/libsysbase_libsysbase_a-assert.$(OBJEXT): \
+ libsysbase/$(am__dirstamp) \
+ libsysbase/$(DEPDIR)/$(am__dirstamp)
+libsysbase/libsysbase_libsysbase_a-build_argv.$(OBJEXT): \ +libsysbase/libsysbase_libsysbase_a-build_argv.$(OBJEXT): \
+ libsysbase/$(am__dirstamp) \ + libsysbase/$(am__dirstamp) \
+ libsysbase/$(DEPDIR)/$(am__dirstamp) + libsysbase/$(DEPDIR)/$(am__dirstamp)
@@ -533,7 +538,7 @@ index fd845cf5f..5f80b89ab 100644
lm32/isatty.$(OBJEXT): lm32/$(am__dirstamp) \ lm32/isatty.$(OBJEXT): lm32/$(am__dirstamp) \
lm32/$(DEPDIR)/$(am__dirstamp) lm32/$(DEPDIR)/$(am__dirstamp)
lm32/scall.$(OBJEXT): lm32/$(am__dirstamp) \ lm32/scall.$(OBJEXT): lm32/$(am__dirstamp) \
@@ -2113,6 +2418,7 @@ mostlyclean-compile: @@ -2113,6 +2423,7 @@ mostlyclean-compile:
-rm -f d30v/*.$(OBJEXT) -rm -f d30v/*.$(OBJEXT)
-rm -f iq2000/*.$(OBJEXT) -rm -f iq2000/*.$(OBJEXT)
-rm -f libnosys/*.$(OBJEXT) -rm -f libnosys/*.$(OBJEXT)
@@ -541,13 +546,14 @@ index fd845cf5f..5f80b89ab 100644
-rm -f lm32/*.$(OBJEXT) -rm -f lm32/*.$(OBJEXT)
-rm -f nios2/*.$(OBJEXT) -rm -f nios2/*.$(OBJEXT)
-rm -f riscv/*.$(OBJEXT) -rm -f riscv/*.$(OBJEXT)
@@ -2238,6 +2544,60 @@ distclean-compile: @@ -2238,6 +2549,61 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/unlink.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/unlink.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/wait.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/wait.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libnosys/$(DEPDIR)/write.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/dummy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/dummy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-_exit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-_exit.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-abort.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-abort.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-chdir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-chdir.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-chmod.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-chmod.Po@am__quote@
@@ -602,7 +608,7 @@ index fd845cf5f..5f80b89ab 100644
@AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/crt0.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/crt0.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/isatty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/isatty.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/scall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lm32/$(DEPDIR)/scall.Po@am__quote@
@@ -3082,6 +3442,748 @@ csky/csky_libsemi_a-getpid.obj: csky/getpid.c @@ -3082,6 +3448,762 @@ csky/csky_libsemi_a-getpid.obj: csky/getpid.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-getpid.obj `if test -f 'csky/getpid.c'; then $(CYGPATH_W) 'csky/getpid.c'; else $(CYGPATH_W) '$(srcdir)/csky/getpid.c'; fi` @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(csky_libsemi_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o csky/csky_libsemi_a-getpid.obj `if test -f 'csky/getpid.c'; then $(CYGPATH_W) 'csky/getpid.c'; else $(CYGPATH_W) '$(srcdir)/csky/getpid.c'; fi`
@@ -634,6 +640,20 @@ index fd845cf5f..5f80b89ab 100644
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-abort.obj `if test -f 'libsysbase/abort.c'; then $(CYGPATH_W) 'libsysbase/abort.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/abort.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-abort.obj `if test -f 'libsysbase/abort.c'; then $(CYGPATH_W) 'libsysbase/abort.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/abort.c'; fi`
+ +
+libsysbase/libsysbase_libsysbase_a-assert.o: libsysbase/assert.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-assert.o -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo -c -o libsysbase/libsysbase_libsysbase_a-assert.o `test -f 'libsysbase/assert.c' || echo '$(srcdir)/'`libsysbase/assert.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libsysbase/assert.c' object='libsysbase/libsysbase_libsysbase_a-assert.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-assert.o `test -f 'libsysbase/assert.c' || echo '$(srcdir)/'`libsysbase/assert.c
+
+libsysbase/libsysbase_libsysbase_a-assert.obj: libsysbase/assert.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-assert.obj -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo -c -o libsysbase/libsysbase_libsysbase_a-assert.obj `if test -f 'libsysbase/assert.c'; then $(CYGPATH_W) 'libsysbase/assert.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/assert.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-assert.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libsysbase/assert.c' object='libsysbase/libsysbase_libsysbase_a-assert.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libsysbase/libsysbase_libsysbase_a-assert.obj `if test -f 'libsysbase/assert.c'; then $(CYGPATH_W) 'libsysbase/assert.c'; else $(CYGPATH_W) '$(srcdir)/libsysbase/assert.c'; fi`
+
+libsysbase/libsysbase_libsysbase_a-build_argv.o: libsysbase/build_argv.c +libsysbase/libsysbase_libsysbase_a-build_argv.o: libsysbase/build_argv.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-build_argv.o -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Tpo -c -o libsysbase/libsysbase_libsysbase_a-build_argv.o `test -f 'libsysbase/build_argv.c' || echo '$(srcdir)/'`libsysbase/build_argv.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libsysbase_libsysbase_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libsysbase/libsysbase_libsysbase_a-build_argv.o -MD -MP -MF libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Tpo -c -o libsysbase/libsysbase_libsysbase_a-build_argv.o `test -f 'libsysbase/build_argv.c' || echo '$(srcdir)/'`libsysbase/build_argv.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Po +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Tpo libsysbase/$(DEPDIR)/libsysbase_libsysbase_a-build_argv.Po
@@ -1351,7 +1371,7 @@ index fd845cf5f..5f80b89ab 100644
nios2/nios2_libnios2_a-io-close.o: nios2/io-close.c nios2/nios2_libnios2_a-io-close.o: nios2/io-close.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-close.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo -c -o nios2/nios2_libnios2_a-io-close.o `test -f 'nios2/io-close.c' || echo '$(srcdir)/'`nios2/io-close.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(nios2_libnios2_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT nios2/nios2_libnios2_a-io-close.o -MD -MP -MF nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo -c -o nios2/nios2_libnios2_a-io-close.o `test -f 'nios2/io-close.c' || echo '$(srcdir)/'`nios2/io-close.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Tpo nios2/$(DEPDIR)/nios2_libnios2_a-io-close.Po
@@ -5103,6 +6205,8 @@ distclean-generic: @@ -5103,6 +6225,8 @@ distclean-generic:
-rm -f iq2000/$(am__dirstamp) -rm -f iq2000/$(am__dirstamp)
-rm -f libnosys/$(DEPDIR)/$(am__dirstamp) -rm -f libnosys/$(DEPDIR)/$(am__dirstamp)
-rm -f libnosys/$(am__dirstamp) -rm -f libnosys/$(am__dirstamp)
@@ -1360,7 +1380,7 @@ index fd845cf5f..5f80b89ab 100644
-rm -f lm32/$(DEPDIR)/$(am__dirstamp) -rm -f lm32/$(DEPDIR)/$(am__dirstamp)
-rm -f lm32/$(am__dirstamp) -rm -f lm32/$(am__dirstamp)
-rm -f nios2/$(DEPDIR)/$(am__dirstamp) -rm -f nios2/$(DEPDIR)/$(am__dirstamp)
@@ -5129,7 +6233,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \ @@ -5129,7 +6253,7 @@ clean-am: clean-aminfo clean-binPROGRAMS clean-checkPROGRAMS \
distclean: distclean-recursive distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -1369,7 +1389,7 @@ index fd845cf5f..5f80b89ab 100644
-rm -f Makefile -rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \ distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-local distclean-tags distclean-hdr distclean-local distclean-tags
@@ -5272,7 +6376,7 @@ installcheck-am: @@ -5272,7 +6396,7 @@ installcheck-am:
maintainer-clean: maintainer-clean-recursive maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache -rm -rf $(top_srcdir)/autom4te.cache
@@ -1544,10 +1564,10 @@ index 268d86c51..1b918a61e 100644
m4_include([mips/acinclude.m4]) m4_include([mips/acinclude.m4])
diff --git a/libgloss/libsysbase/Makefile.inc b/libgloss/libsysbase/Makefile.inc diff --git a/libgloss/libsysbase/Makefile.inc b/libgloss/libsysbase/Makefile.inc
new file mode 100644 new file mode 100644
index 000000000..123a1dedf index 000000000..bb3c45c32
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/Makefile.inc +++ b/libgloss/libsysbase/Makefile.inc
@@ -0,0 +1,66 @@ @@ -0,0 +1,67 @@
+multilibtool_DATA += %D%/sysbase.specs +multilibtool_DATA += %D%/sysbase.specs
+ +
+multilibtool_LIBRARIES += %D%/libpthread.a +multilibtool_LIBRARIES += %D%/libpthread.a
@@ -1563,6 +1583,7 @@ index 000000000..123a1dedf
+%C%_libsysbase_a_SOURCES = \ +%C%_libsysbase_a_SOURCES = \
+ %D%/_exit.c \ + %D%/_exit.c \
+ %D%/abort.c \ + %D%/abort.c \
+ %D%/assert.c \
+ %D%/build_argv.c \ + %D%/build_argv.c \
+ %D%/chdir.c \ + %D%/chdir.c \
+ %D%/chmod.c \ + %D%/chmod.c \
@@ -1638,16 +1659,23 @@ index 000000000..a45723f84
+} +}
diff --git a/libgloss/libsysbase/abort.c b/libgloss/libsysbase/abort.c diff --git a/libgloss/libsysbase/abort.c b/libgloss/libsysbase/abort.c
new file mode 100644 new file mode 100644
index 000000000..9272e22c9 index 000000000..9074c8fa2
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/abort.c +++ b/libgloss/libsysbase/abort.c
@@ -0,0 +1,8 @@ @@ -0,0 +1,15 @@
+#include <stdlib.h> +#include <stdlib.h>
+#include <unistd.h> +#include <unistd.h>
+#include <sys/iosupport.h>
+ +
+void abort(void) { +void abort(void) {
+ write (2, "Abort called.\n", sizeof("Abort called.\n")-1); + do {
+
+ if ( __has_syscall(abort) ) {
+ __syscall_abort();
+ } else {
+ _exit (1); + _exit (1);
+ }
+ } while(1);
+} +}
+ +
diff --git a/libgloss/libsysbase/acconfig.h b/libgloss/libsysbase/acconfig.h diff --git a/libgloss/libsysbase/acconfig.h b/libgloss/libsysbase/acconfig.h
@@ -1718,6 +1746,29 @@ index 000000000..7b0d7b4d6
+ z8k-*-*) ;; + z8k-*-*) ;;
+ *) AC_DEFINE(MISSING_SYSCALL_NAMES, 1, [Missing syscall names]) ;; + *) AC_DEFINE(MISSING_SYSCALL_NAMES, 1, [Missing syscall names]) ;;
+esac +esac
diff --git a/libgloss/libsysbase/assert.c b/libgloss/libsysbase/assert.c
new file mode 100644
index 000000000..faa74b866
--- /dev/null
+++ b/libgloss/libsysbase/assert.c
@@ -0,0 +1,17 @@
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/iosupport.h>
+
+void
+__assert_func (const char *file,
+ int line,
+ const char *func,
+ const char *failedexpr)
+{
+ if ( __has_syscall(assert_func) ) {
+ __syscall_assert_func(file, line, func, failedexpr);
+ }
+ abort();
+ /* NOTREACHED */
+}
diff --git a/libgloss/libsysbase/build_argv.c b/libgloss/libsysbase/build_argv.c diff --git a/libgloss/libsysbase/build_argv.c b/libgloss/libsysbase/build_argv.c
new file mode 100644 new file mode 100644
index 000000000..0697f53d2 index 000000000..0697f53d2
@@ -6465,10 +6516,10 @@ index 000000000..d15eab89d
+ +
diff --git a/libgloss/libsysbase/dirent.c b/libgloss/libsysbase/dirent.c diff --git a/libgloss/libsysbase/dirent.c b/libgloss/libsysbase/dirent.c
new file mode 100644 new file mode 100644
index 000000000..482d2f814 index 000000000..4dfeabd71
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/dirent.c +++ b/libgloss/libsysbase/dirent.c
@@ -0,0 +1,257 @@ @@ -0,0 +1,241 @@
+#include <malloc.h> +#include <malloc.h>
+#include <errno.h> +#include <errno.h>
+#include <string.h> +#include <string.h>
@@ -6608,47 +6659,13 @@ index 000000000..482d2f814
+ return res; + return res;
+} +}
+ +
+
+struct dirent* readdir (DIR *dirp) {
+ struct stat st;
+ char filename[NAME_MAX+1];
+ int res;
+ int olderrno = errno;
+
+ if (!dirp) {
+ errno = EBADF;
+ return NULL;
+ }
+
+ res = __dirnext (dirp->dirData, filename, &st);
+
+ if (res < 0) {
+ if (errno == ENOENT) {
+ // errno == ENONENT set by dirnext means it's end of directory
+ // But readdir should not touch errno in case of dir end
+ errno = olderrno;
+ }
+ return NULL;
+ }
+
+ // We've moved forward in the directory
+ dirp->position += 1;
+
+ if (strnlen(filename, sizeof(filename)) >= sizeof(dirp->fileData.d_name)) {
+ errno = EOVERFLOW;
+ return NULL;
+ }
+
+ strncpy (dirp->fileData.d_name, filename, sizeof(dirp->fileData.d_name));
+ dirp->fileData.d_ino = st.st_ino;
+ dirp->fileData.d_type = IFTODT(st.st_mode);
+
+ return &(dirp->fileData);
+}
+
+
+int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result) { +int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result) {
+ struct stat st; +#ifdef _DIRENT_HAVE_D_STAT
+ struct stat *st = &dirp->fileData.d_stat;
+#else
+ struct stat tmpstat;
+ struct stat *st = &tmpstat;
+#endif
+ char filename[NAME_MAX+1]; + char filename[NAME_MAX+1];
+ int res; + int res;
+ +
@@ -6656,7 +6673,11 @@ index 000000000..482d2f814
+ return EBADF; + return EBADF;
+ } + }
+ +
+ res = __dirnext (dirp->dirData, filename, &st); + if (!result) {
+ return EFAULT;
+ }
+
+ res = __dirnext (dirp->dirData, filename, st);
+ +
+ if (res < 0) { + if (res < 0) {
+ res = errno; + res = errno;
@@ -6665,6 +6686,7 @@ index 000000000..482d2f814
+ // errno == ENONENT set by dirnext means it's end of directory + // errno == ENONENT set by dirnext means it's end of directory
+ // But readdir should not touch errno in case of dir end + // But readdir should not touch errno in case of dir end
+ res = 0; + res = 0;
+ errno = 0;
+ } + }
+ return res; + return res;
+ } + }
@@ -6678,13 +6700,26 @@ index 000000000..482d2f814
+ } + }
+ +
+ strncpy (entry->d_name, filename, sizeof(entry->d_name)); + strncpy (entry->d_name, filename, sizeof(entry->d_name));
+ entry->d_ino = st.st_ino; + entry->d_ino = st->st_ino;
+ entry->d_type = IFTODT(st.st_mode); + entry->d_type = IFTODT(st->st_mode);
+ +
+ *result = entry; + *result = entry;
+ return 0; + return 0;
+} +}
+ +
+struct dirent* readdir (DIR *dirp) {
+
+ struct dirent *entry = &dirp->fileData;
+
+ int res = readdir_r(dirp, entry, &entry);
+
+ if (res !=0) {
+ errno = res;
+ return NULL;
+ }
+
+ return entry;
+}
+ +
+void rewinddir (DIR *dirp) { +void rewinddir (DIR *dirp) {
+ if (!dirp) { + if (!dirp) {
@@ -7058,7 +7093,7 @@ index 000000000..2bada9736
+} +}
diff --git a/libgloss/libsysbase/fpathconf.c b/libgloss/libsysbase/fpathconf.c diff --git a/libgloss/libsysbase/fpathconf.c b/libgloss/libsysbase/fpathconf.c
new file mode 100644 new file mode 100644
index 000000000..453f64870 index 000000000..9cba92a72
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/fpathconf.c +++ b/libgloss/libsysbase/fpathconf.c
@@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
@@ -7078,7 +7113,7 @@ index 000000000..453f64870
+ struct _reent *r = _REENT; + struct _reent *r = _REENT;
+ +
+ if ( NULL == handle ) { + if ( NULL == handle ) {
+ errno = EINVAL; + errno = EBADF;
+ return ret; + return ret;
+ } + }
+ +
@@ -7094,10 +7129,10 @@ index 000000000..453f64870
+} +}
diff --git a/libgloss/libsysbase/fstat.c b/libgloss/libsysbase/fstat.c diff --git a/libgloss/libsysbase/fstat.c b/libgloss/libsysbase/fstat.c
new file mode 100644 new file mode 100644
index 000000000..32267b828 index 000000000..94924d802
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/fstat.c +++ b/libgloss/libsysbase/fstat.c
@@ -0,0 +1,32 @@ @@ -0,0 +1,35 @@
+#include "config.h" +#include "config.h"
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -7117,7 +7152,10 @@ index 000000000..32267b828
+ if(fileDesc!=-1) { + if(fileDesc!=-1) {
+ handle = __get_handle(fileDesc); + handle = __get_handle(fileDesc);
+ +
+ if ( NULL == handle ) return ret; + if ( NULL == handle ) {
+ errno = EBADF;
+ return ret;
+ }
+ +
+ dev = handle->device; + dev = handle->device;
+ +
@@ -7132,7 +7170,7 @@ index 000000000..32267b828
+} +}
diff --git a/libgloss/libsysbase/fsync.c b/libgloss/libsysbase/fsync.c diff --git a/libgloss/libsysbase/fsync.c b/libgloss/libsysbase/fsync.c
new file mode 100644 new file mode 100644
index 000000000..fb06cb6d1 index 000000000..e63e3762b
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/fsync.c +++ b/libgloss/libsysbase/fsync.c
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
@@ -7156,7 +7194,7 @@ index 000000000..fb06cb6d1
+ handle = __get_handle(fileDesc); + handle = __get_handle(fileDesc);
+ +
+ if ( NULL == handle ) { + if ( NULL == handle ) {
+ errno = EINVAL; + errno = EBADF;
+ return ret; + return ret;
+ } + }
+ +
@@ -7172,7 +7210,7 @@ index 000000000..fb06cb6d1
+} +}
diff --git a/libgloss/libsysbase/ftruncate.c b/libgloss/libsysbase/ftruncate.c diff --git a/libgloss/libsysbase/ftruncate.c b/libgloss/libsysbase/ftruncate.c
new file mode 100644 new file mode 100644
index 000000000..0cd7d0fc4 index 000000000..94b4a3761
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/ftruncate.c +++ b/libgloss/libsysbase/ftruncate.c
@@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
@@ -7196,7 +7234,7 @@ index 000000000..0cd7d0fc4
+ handle = __get_handle(fileDesc); + handle = __get_handle(fileDesc);
+ +
+ if ( NULL == handle ) { + if ( NULL == handle ) {
+ r->_errno = EINVAL; + r->_errno=EBADF;
+ return ret; + return ret;
+ } + }
+ +
@@ -7741,10 +7779,10 @@ index 000000000..d7a988359
+ +
diff --git a/libgloss/libsysbase/lseek.c b/libgloss/libsysbase/lseek.c diff --git a/libgloss/libsysbase/lseek.c b/libgloss/libsysbase/lseek.c
new file mode 100644 new file mode 100644
index 000000000..39ef385b1 index 000000000..c5568e338
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/lseek.c +++ b/libgloss/libsysbase/lseek.c
@@ -0,0 +1,35 @@ @@ -0,0 +1,38 @@
+#include "config.h" +#include "config.h"
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -7766,7 +7804,10 @@ index 000000000..39ef385b1
+ +
+ handle = __get_handle(fileDesc); + handle = __get_handle(fileDesc);
+ +
+ if ( NULL == handle ) return ret; + if ( NULL == handle ) {
+ r->_errno=EBADF;
+ return ret;
+ }
+ +
+ dev = handle->device; + dev = handle->device;
+ +
@@ -9039,10 +9080,10 @@ index 000000000..ff84cd355
+} +}
diff --git a/libgloss/libsysbase/read.c b/libgloss/libsysbase/read.c diff --git a/libgloss/libsysbase/read.c b/libgloss/libsysbase/read.c
new file mode 100644 new file mode 100644
index 000000000..9c548d830 index 000000000..30505c7b6
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/read.c +++ b/libgloss/libsysbase/read.c
@@ -0,0 +1,32 @@ @@ -0,0 +1,35 @@
+#include "config.h" +#include "config.h"
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -9062,7 +9103,10 @@ index 000000000..9c548d830
+ if(fileDesc!=-1) { + if(fileDesc!=-1) {
+ handle = __get_handle(fileDesc); + handle = __get_handle(fileDesc);
+ +
+ if ( NULL == handle ) return ret; + if ( NULL == handle ) {
+ r->_errno=EBADF;
+ return ret;
+ }
+ +
+ dev = handle->device; + dev = handle->device;
+ +
@@ -10068,10 +10112,10 @@ index 000000000..2c2998250
+#endif /* __WARNING_H__ */ +#endif /* __WARNING_H__ */
diff --git a/libgloss/libsysbase/write.c b/libgloss/libsysbase/write.c diff --git a/libgloss/libsysbase/write.c b/libgloss/libsysbase/write.c
new file mode 100644 new file mode 100644
index 000000000..04198e854 index 000000000..baf0d6ae5
--- /dev/null --- /dev/null
+++ b/libgloss/libsysbase/write.c +++ b/libgloss/libsysbase/write.c
@@ -0,0 +1,31 @@ @@ -0,0 +1,34 @@
+#include "config.h" +#include "config.h"
+#include <_ansi.h> +#include <_ansi.h>
+#include <_syslist.h> +#include <_syslist.h>
@@ -10091,7 +10135,10 @@ index 000000000..04198e854
+ if(fileDesc!=-1) { + if(fileDesc!=-1) {
+ handle = __get_handle(fileDesc); + handle = __get_handle(fileDesc);
+ +
+ if ( NULL == handle ) return ret; + if ( NULL == handle ) {
+ r->_errno=EBADF;
+ return ret;
+ }
+ +
+ dev = handle->device; + dev = handle->device;
+ +
@@ -10501,7 +10548,7 @@ index 9a32646ab..e5df29f36 100644
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/powerpc/libc_a-vfprintf.o -MD -MP -MF libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Tpo -c -o libc/machine/powerpc/libc_a-vfprintf.o `test -f 'libc/machine/powerpc/vfprintf.c' || echo '$(srcdir)/'`libc/machine/powerpc/vfprintf.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libc_a_CPPFLAGS) $(CPPFLAGS) $(libc_a_CFLAGS) $(CFLAGS) -MT libc/machine/powerpc/libc_a-vfprintf.o -MD -MP -MF libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Tpo -c -o libc/machine/powerpc/libc_a-vfprintf.o `test -f 'libc/machine/powerpc/vfprintf.c' || echo '$(srcdir)/'`libc/machine/powerpc/vfprintf.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Tpo libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Po @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Tpo libc/machine/powerpc/$(DEPDIR)/libc_a-vfprintf.Po
diff --git a/newlib/configure.host b/newlib/configure.host diff --git a/newlib/configure.host b/newlib/configure.host
index 386183466..cc5e33ad7 100644 index 386183466..b8b021100 100644
--- a/newlib/configure.host --- a/newlib/configure.host
+++ b/newlib/configure.host +++ b/newlib/configure.host
@@ -630,13 +630,25 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID @@ -630,13 +630,25 @@ newlib_cflags="${newlib_cflags} -DCLOCK_PROVIDED -DMALLOC_PROVIDED -DEXIT_PROVID
@@ -10538,7 +10585,7 @@ index 386183466..cc5e33ad7 100644
+ powerpc*-*-eabi*) + powerpc*-*-eabi*)
+ default_newlib_io_c99_formats="yes" + default_newlib_io_c99_formats="yes"
+ default_newlib_io_long_long="yes" + default_newlib_io_long_long="yes"
+ newlib_cflags="${newlib_cflags} -DCUSTOM_MALLOC_LOCK -D__DYNAMIC_REENT__ -DGETREENT_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -D__DEFAULT_UTF8__" + newlib_cflags="${newlib_cflags} -DHAVE_ASSERT_FUNC -DABORT_PROVIDED -DCUSTOM_MALLOC_LOCK -D__DYNAMIC_REENT__ -DGETREENT_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -D__DEFAULT_UTF8__"
+ newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections" + newlib_cflags="${newlib_cflags} -ffunction-sections -fdata-sections"
+ syscall_dir=syscalls + syscall_dir=syscalls
+ ;; + ;;
@@ -10658,6 +10705,19 @@ index b1dd2a7c4..16e29c037 100644
extern void *_sbrk_r (struct _reent *, ptrdiff_t); extern void *_sbrk_r (struct _reent *, ptrdiff_t);
extern int _stat_r (struct _reent *, const char *, struct stat *); extern int _stat_r (struct _reent *, const char *, struct stat *);
extern _CLOCK_T_ _times_r (struct _reent *, struct tms *); extern _CLOCK_T_ _times_r (struct _reent *, struct tms *);
diff --git a/newlib/libc/include/regex.h b/newlib/libc/include/regex.h
index fa3e26879..4da1a374e 100644
--- a/newlib/libc/include/regex.h
+++ b/newlib/libc/include/regex.h
@@ -96,7 +96,7 @@ __BEGIN_DECLS
int regcomp(regex_t *__restrict, const char *__restrict, int);
size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t);
int regexec(const regex_t *__restrict, const char *__restrict,
- size_t, regmatch_t [__restrict], int);
+ size_t, regmatch_t [__restrict_arr], int);
void regfree(regex_t *);
__END_DECLS
diff --git a/newlib/libc/include/semaphore.h b/newlib/libc/include/semaphore.h diff --git a/newlib/libc/include/semaphore.h b/newlib/libc/include/semaphore.h
new file mode 100755 new file mode 100755
index 000000000..4afb0e419 index 000000000..4afb0e419
@@ -10922,26 +10982,28 @@ index f810b008f..ca7e11dc7 100644
+ +
#endif /* !_SYS__TIMESPEC_H_ */ #endif /* !_SYS__TIMESPEC_H_ */
diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h
index 5dcc77a80..6930a751d 100644 index 5dcc77a80..fdf232649 100644
--- a/newlib/libc/include/sys/config.h --- a/newlib/libc/include/sys/config.h
+++ b/newlib/libc/include/sys/config.h +++ b/newlib/libc/include/sys/config.h
@@ -4,8 +4,19 @@ @@ -4,8 +4,21 @@
#include <machine/ieeefp.h> /* floating point macros */ #include <machine/ieeefp.h> /* floating point macros */
#include <sys/features.h> /* POSIX defs */ #include <sys/features.h> /* POSIX defs */
-#ifdef __aarch64__ -#ifdef __aarch64__
+#ifdef __DEVKITARM__ +#ifdef __DEVKITARM__
+#define __DYNAMIC_REENT__ +#define __DYNAMIC_REENT__
+#define MALLOC_ALIGNMENT_THRESHOLD 32
+#endif +#endif
+ +
+#ifdef __DEVKITA64__ +#ifdef __DEVKITA64__
#define MALLOC_ALIGNMENT 16 #define MALLOC_ALIGNMENT 16
+#define MALLOC_ALIGNMENT_THRESHOLD 32
+#define __DYNAMIC_REENT__ +#define __DYNAMIC_REENT__
+#endif +#endif
+ +
+#ifdef __DEVKITPPC__ +#ifdef __DEVKITPPC__
+#define MALLOC_ALIGNMENT_THRESHOLD 64
+#define __BUFSIZ__ 32768 +#define __BUFSIZ__ 32768
+#define MALLOC_ALIGNMENT 64
+#define __DYNAMIC_REENT__ +#define __DYNAMIC_REENT__
#endif #endif
@@ -10970,10 +11032,10 @@ index a7d4bc52d..a04f13544 100644
#ifdef __rtems__ #ifdef __rtems__
diff --git a/newlib/libc/include/sys/iosupport.h b/newlib/libc/include/sys/iosupport.h diff --git a/newlib/libc/include/sys/iosupport.h b/newlib/libc/include/sys/iosupport.h
new file mode 100644 new file mode 100644
index 000000000..335014a4b index 000000000..b81214720
--- /dev/null --- /dev/null
+++ b/newlib/libc/include/sys/iosupport.h +++ b/newlib/libc/include/sys/iosupport.h
@@ -0,0 +1,140 @@ @@ -0,0 +1,142 @@
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
+#ifndef __iosupp_h__ +#ifndef __iosupp_h__
+#define __iosupp_h__ +#define __iosupp_h__
@@ -11060,6 +11122,8 @@ index 000000000..335014a4b
+#define __SYSCALL(_name) __syscall_##_name +#define __SYSCALL(_name) __syscall_##_name
+#endif +#endif
+ +
+void __SYSCALL(abort) (void);
+void __SYSCALL(assert_func) (const char *file, int line, const char *func, const char *failedexpr);
+void __SYSCALL(exit) ( int rc ); +void __SYSCALL(exit) ( int rc );
+int __SYSCALL(gettod_r) (struct _reent *ptr, struct timeval *tp, struct timezone *tz); +int __SYSCALL(gettod_r) (struct _reent *ptr, struct timeval *tp, struct timezone *tz);
+void __SYSCALL(lock_init) (_LOCK_T *lock); +void __SYSCALL(lock_init) (_LOCK_T *lock);
@@ -11114,6 +11178,23 @@ index 000000000..335014a4b
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
+#endif // __iosupp_h__ +#endif // __iosupp_h__
+//--------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------
diff --git a/newlib/libc/include/sys/mkdev.h b/newlib/libc/include/sys/mkdev.h
new file mode 100644
index 000000000..a6f860158
--- /dev/null
+++ b/newlib/libc/include/sys/mkdev.h
@@ -0,0 +1,11 @@
+#ifndef __SYS_MKDEV_H__
+#define __SYS_MKDEV_H__
+
+#define MINORBITS 20
+#define MINORMASK ((1U << MINORBITS) - 1)
+
+#define major(dev) ((unsigned int) ((dev) >> MINORBITS))
+#define minor(dev) ((unsigned int) ((dev) & MINORMASK))
+#define mkdev(ma,mi) (((ma) << MINORBITS) | (mi))
+
+#endif
diff --git a/newlib/libc/include/sys/param.h b/newlib/libc/include/sys/param.h diff --git a/newlib/libc/include/sys/param.h b/newlib/libc/include/sys/param.h
index 9a6f115a6..142e71d35 100644 index 9a6f115a6..142e71d35 100644
--- a/newlib/libc/include/sys/param.h --- a/newlib/libc/include/sys/param.h
@@ -11684,17 +11765,19 @@ index 000000000..a7d63da51
+#endif // _MACHINE__TYPES_H +#endif // _MACHINE__TYPES_H
diff --git a/newlib/libc/machine/powerpc/sys/dirent.h b/newlib/libc/machine/powerpc/sys/dirent.h diff --git a/newlib/libc/machine/powerpc/sys/dirent.h b/newlib/libc/machine/powerpc/sys/dirent.h
new file mode 100644 new file mode 100644
index 000000000..2aaca6080 index 000000000..b3780c263
--- /dev/null --- /dev/null
+++ b/newlib/libc/machine/powerpc/sys/dirent.h +++ b/newlib/libc/machine/powerpc/sys/dirent.h
@@ -0,0 +1,58 @@ @@ -0,0 +1,61 @@
+#ifndef _dirent_h_ +#ifndef _dirent_h_
+#define _dirent_h_ +#define _dirent_h_
+ +
+#define _DIRENT_HAVE_D_TYPE +#define _DIRENT_HAVE_D_TYPE
+#define _DIRENT_HAVE_D_STAT
+ +
+#include <sys/iosupport.h> +#include <sys/iosupport.h>
+#include <sys/types.h> +#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/syslimits.h> +#include <sys/syslimits.h>
+ +
+#define DT_UNKNOWN 0 +#define DT_UNKNOWN 0
@@ -11713,6 +11796,7 @@ index 000000000..2aaca6080
+ +
+struct dirent { +struct dirent {
+ ino_t d_ino; + ino_t d_ino;
+ struct stat d_stat;
+ unsigned char d_type; + unsigned char d_type;
+ char d_name[NAME_MAX+1]; + char d_name[NAME_MAX+1];
+}; +};
@@ -11966,6 +12050,30 @@ index 63c0618f1..dd3801900 100644
#define _STDIO_WITH_THREAD_CANCELLATION_SUPPORT #define _STDIO_WITH_THREAD_CANCELLATION_SUPPORT
#endif #endif
diff --git a/newlib/libc/stdio/makebuf.c b/newlib/libc/stdio/makebuf.c
index b9c75bbf8..bc65acc2a 100644
--- a/newlib/libc/stdio/makebuf.c
+++ b/newlib/libc/stdio/makebuf.c
@@ -19,6 +19,7 @@
#include <_ansi.h>
#include <stdio.h>
#include <stdlib.h>
+#include <malloc.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/unistd.h>
@@ -50,7 +51,11 @@ __smakebuf_r (struct _reent *ptr,
return;
}
flags = __swhatbuf_r (ptr, fp, &size, &couldbetty);
+#ifdef MALLOC_ALIGNMENT_THRESHOLD
+ if ((p = _memalign_r (ptr, MALLOC_ALIGNMENT_THRESHOLD, size)) == NULL)
+#else
if ((p = _malloc_r (ptr, size)) == NULL)
+#endif
{
if (!(fp->_flags & __SSTR))
{
diff --git a/newlib/libc/stdio/remove.c b/newlib/libc/stdio/remove.c diff --git a/newlib/libc/stdio/remove.c b/newlib/libc/stdio/remove.c
index d8dfdbd82..a85b5a99b 100644 index d8dfdbd82..a85b5a99b 100644
--- a/newlib/libc/stdio/remove.c --- a/newlib/libc/stdio/remove.c
@@ -12134,6 +12242,24 @@ index 9b7bd518b..f0e33bbc1 100644
/* /*
* Exit, flushing stdio buffers if necessary. * Exit, flushing stdio buffers if necessary.
*/ */
diff --git a/newlib/libc/stdlib/malloc.c b/newlib/libc/stdlib/malloc.c
index f5ac29208..7d016a653 100644
--- a/newlib/libc/stdlib/malloc.c
+++ b/newlib/libc/stdlib/malloc.c
@@ -161,7 +161,12 @@ Supporting OS subroutines required: <<sbrk>>. */
void *
malloc (size_t nbytes) /* get a block */
{
- return _malloc_r (_REENT, nbytes);
+#ifdef MALLOC_ALIGNMENT_THRESHOLD
+ if (nbytes >= MALLOC_ALIGNMENT_THRESHOLD)
+ return _memalign_r (_REENT, MALLOC_ALIGNMENT_THRESHOLD, nbytes);
+ else
+#endif
+ return _malloc_r (_REENT, nbytes);
}
void
diff --git a/newlib/libc/stdlib/mlock.c b/newlib/libc/stdlib/mlock.c diff --git a/newlib/libc/stdlib/mlock.c b/newlib/libc/stdlib/mlock.c
index 23aa10173..ba88eb9fb 100644 index 23aa10173..ba88eb9fb 100644
--- a/newlib/libc/stdlib/mlock.c --- a/newlib/libc/stdlib/mlock.c

View File

@@ -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

View File

@@ -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 63" \ --with-bugurl="http://wiki.devkitpro.org/index.php/Bug_Reports" --with-pkgversion="devkitARM release 64" \
$CROSS_PARAMS \ $CROSS_PARAMS \
$CROSS_GCC_PARAMS \ $CROSS_GCC_PARAMS \
$EXTRA_GCC_PARAMS \ $EXTRA_GCC_PARAMS \

View File

@@ -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

View File

@@ -30,8 +30,8 @@ done
case "$VERSION" in case "$VERSION" in
"1" ) "1" )
GCC_VER=13.2.0 GCC_VER=14.1.0
BINUTILS_VER=2.41 BINUTILS_VER=2.42
NEWLIB_VER=4.4.0.20231231 NEWLIB_VER=4.4.0.20231231
basedir='dkarm-eabi' basedir='dkarm-eabi'
package=devkitARM package=devkitARM
@@ -49,8 +49,8 @@ case "$VERSION" in
toolchain=DEVKITPPC toolchain=DEVKITPPC
;; ;;
"3" ) "3" )
GCC_VER=13.2.0 GCC_VER=14.2.0
BINUTILS_VER=2.42 BINUTILS_VER=2.43.1
NEWLIB_VER=4.4.0.20231231 NEWLIB_VER=4.4.0.20231231
basedir='dka64' basedir='dka64'
package=devkitA64 package=devkitA64