summaryrefslogtreecommitdiff
path: root/ppc-amigaos/recipes/patches/gcc/0008-Added-libstc-support-for-AmigaOS.p
diff options
context:
space:
mode:
Diffstat (limited to 'ppc-amigaos/recipes/patches/gcc/0008-Added-libstc-support-for-AmigaOS.p')
-rw-r--r--ppc-amigaos/recipes/patches/gcc/0008-Added-libstc-support-for-AmigaOS.p624
1 files changed, 624 insertions, 0 deletions
diff --git a/ppc-amigaos/recipes/patches/gcc/0008-Added-libstc-support-for-AmigaOS.p b/ppc-amigaos/recipes/patches/gcc/0008-Added-libstc-support-for-AmigaOS.p
new file mode 100644
index 0000000..7285812
--- /dev/null
+++ b/ppc-amigaos/recipes/patches/gcc/0008-Added-libstc-support-for-AmigaOS.p
@@ -0,0 +1,624 @@
+From 385667d2ba86a86f1d44651999d293a797650f30 Mon Sep 17 00:00:00 2001
+From: Sebastian Bauer <mail@sebastianbauer.info>
+Date: Fri, 22 Jan 2016 20:04:50 +0100
+Subject: [PATCH 8/9] Added libstc++ support for AmigaOS.
+
+---
+ libstdc++-v3/config/os/amigaos/ctype_base.h | 59 +++++++
+ .../config/os/amigaos/ctype_configure_char.cc | 99 ++++++++++++
+ libstdc++-v3/config/os/amigaos/ctype_inline.h | 173 ++++++++++++++++++++
+ libstdc++-v3/config/os/amigaos/error_constants.h | 178 +++++++++++++++++++++
+ libstdc++-v3/config/os/amigaos/os_defines.h | 43 +++++
+ libstdc++-v3/configure.host | 3 +
+ 6 files changed, 555 insertions(+)
+ create mode 100644 libstdc++-v3/config/os/amigaos/ctype_base.h
+ create mode 100644 libstdc++-v3/config/os/amigaos/ctype_configure_char.cc
+ create mode 100644 libstdc++-v3/config/os/amigaos/ctype_inline.h
+ create mode 100644 libstdc++-v3/config/os/amigaos/error_constants.h
+ create mode 100644 libstdc++-v3/config/os/amigaos/os_defines.h
+
+diff --git a/libstdc++-v3/config/os/amigaos/ctype_base.h b/libstdc++-v3/config/os/amigaos/ctype_base.h
+new file mode 100644
+index 0000000000000000000000000000000000000000..260b6142b6fc6a11a1e5f0bf7820b592d09f285e
+--- /dev/null
++++ b/libstdc++-v3/config/os/amigaos/ctype_base.h
+@@ -0,0 +1,59 @@
++// Locale support -*- C++ -*-
++
++// Copyright (C) 1997-2015 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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.
++
++// This library 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/>.
++
++//
++// ISO C++ 14882: 22.1 Locales
++//
++
++// Default information, may not be appropriate for specific host.
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++ /// @brief Base class for ctype.
++ struct ctype_base
++ {
++ // Non-standard typedefs.
++ typedef const int* __to_type;
++
++ // NB: Offsets into ctype<char>::_M_table force a particular size
++ // on the mask type. Because of this, we don't use an enum.
++ typedef unsigned int mask;
++ static const mask upper = 1 << 0;
++ static const mask lower = 1 << 1;
++ static const mask alpha = 1 << 2;
++ static const mask digit = 1 << 3;
++ static const mask xdigit = 1 << 4;
++ static const mask space = 1 << 5;
++ static const mask print = 1 << 6;
++ static const mask graph = (1 << 2) | (1 << 3) | (1 << 9); // alnum|punct
++ static const mask cntrl = 1 << 8;
++ static const mask punct = 1 << 9;
++ static const mask alnum = (1 << 2) | (1 << 3); // alpha|digit
++ static const mask blank = 1 << 10;
++ };
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+diff --git a/libstdc++-v3/config/os/amigaos/ctype_configure_char.cc b/libstdc++-v3/config/os/amigaos/ctype_configure_char.cc
+new file mode 100644
+index 0000000000000000000000000000000000000000..e6f4895aee78da54bc6b1e01df00816206361c41
+--- /dev/null
++++ b/libstdc++-v3/config/os/amigaos/ctype_configure_char.cc
+@@ -0,0 +1,99 @@
++// Locale support -*- C++ -*-
++
++// Copyright (C) 2011-2015 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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.
++
++// This library 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/>.
++
++/** @file ctype_configure_char.cc */
++
++//
++// ISO C++ 14882: 22.1 Locales
++//
++
++#include <locale>
++#include <cstdlib>
++#include <cstring>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++// Information as gleaned from /usr/include/ctype.h
++
++ const ctype_base::mask*
++ ctype<char>::classic_table() throw()
++ { return 0; }
++
++ ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
++ size_t __refs)
++ : facet(__refs), _M_del(__table != 0 && __del),
++ _M_toupper(NULL), _M_tolower(NULL),
++ _M_table(__table ? __table : classic_table())
++ {
++ memset(_M_widen, 0, sizeof(_M_widen));
++ _M_widen_ok = 0;
++ memset(_M_narrow, 0, sizeof(_M_narrow));
++ _M_narrow_ok = 0;
++ }
++
++ ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
++ : facet(__refs), _M_del(__table != 0 && __del),
++ _M_toupper(NULL), _M_tolower(NULL),
++ _M_table(__table ? __table : classic_table())
++ {
++ memset(_M_widen, 0, sizeof(_M_widen));
++ _M_widen_ok = 0;
++ memset(_M_narrow, 0, sizeof(_M_narrow));
++ _M_narrow_ok = 0;
++ }
++
++ char
++ ctype<char>::do_toupper(char __c) const
++ { return ::toupper((int) __c); }
++
++ const char*
++ ctype<char>::do_toupper(char* __low, const char* __high) const
++ {
++ while (__low < __high)
++ {
++ *__low = ::toupper((int) *__low);
++ ++__low;
++ }
++ return __high;
++ }
++
++ char
++ ctype<char>::do_tolower(char __c) const
++ { return ::tolower((int) __c); }
++
++ const char*
++ ctype<char>::do_tolower(char* __low, const char* __high) const
++ {
++ while (__low < __high)
++ {
++ *__low = ::tolower((int) *__low);
++ ++__low;
++ }
++ return __high;
++ }
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+diff --git a/libstdc++-v3/config/os/amigaos/ctype_inline.h b/libstdc++-v3/config/os/amigaos/ctype_inline.h
+new file mode 100644
+index 0000000000000000000000000000000000000000..cfa0146ae6b70623c2fe63b864ceef7bce0d5fe0
+--- /dev/null
++++ b/libstdc++-v3/config/os/amigaos/ctype_inline.h
+@@ -0,0 +1,173 @@
++// Locale support -*- C++ -*-
++
++// Copyright (C) 2000-2015 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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.
++
++// This library 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/>.
++
++/** @file bits/ctype_inline.h
++ * This is an internal header file, included by other library headers.
++ * Do not attempt to use it directly. @headername{locale}
++ */
++
++//
++// ISO C++ 14882: 22.1 Locales
++//
++
++// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
++// functions go in ctype.cc
++
++// The following definitions are portable, but insanely slow. If one
++// cares at all about performance, then specialized ctype
++// functionality should be added for the native os in question: see
++// the config/os/bits/ctype_*.h files.
++
++// Constructing a synthetic "C" table should be seriously considered...
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++ bool
++ ctype<char>::
++ is(mask __m, char __c) const
++ {
++ if (_M_table)
++ return _M_table[static_cast<unsigned char>(__c)] & __m;
++ else
++ {
++ bool __ret = false;
++ const size_t __bitmasksize = 15;
++ size_t __bitcur = 0; // Lowest bitmask in ctype_base == 0
++ for (; __bitcur <= __bitmasksize; ++__bitcur)
++ {
++ const mask __bit = static_cast<mask>(1 << __bitcur);
++ if (__m & __bit)
++ {
++ bool __testis;
++ switch (__bit)
++ {
++ case space:
++ __testis = isspace(__c);
++ break;
++ case print:
++ __testis = isprint(__c);
++ break;
++ case cntrl:
++ __testis = iscntrl(__c);
++ break;
++ case upper:
++ __testis = isupper(__c);
++ break;
++ case lower:
++ __testis = islower(__c);
++ break;
++ case alpha:
++ __testis = isalpha(__c);
++ break;
++ case digit:
++ __testis = isdigit(__c);
++ break;
++ case punct:
++ __testis = ispunct(__c);
++ break;
++ case xdigit:
++ __testis = isxdigit(__c);
++ break;
++ case alnum:
++ __testis = isalnum(__c);
++ break;
++ case graph:
++ __testis = isgraph(__c);
++ break;
++#ifdef _GLIBCXX_USE_C99_CTYPE_TR1
++ case blank:
++ __testis = isblank(__c);
++ break;
++#endif
++ default:
++ __testis = false;
++ break;
++ }
++ __ret |= __testis;
++ }
++ }
++ return __ret;
++ }
++ }
++
++ const char*
++ ctype<char>::
++ is(const char* __low, const char* __high, mask* __vec) const
++ {
++ if (_M_table)
++ while (__low < __high)
++ *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
++ else
++ {
++ // Highest bitmask in ctype_base == 11.
++ const size_t __bitmasksize = 15;
++ for (;__low < __high; ++__vec, ++__low)
++ {
++ mask __m = 0;
++ // Lowest bitmask in ctype_base == 0
++ size_t __i = 0;
++ for (;__i <= __bitmasksize; ++__i)
++ {
++ const mask __bit = static_cast<mask>(1 << __i);
++ if (this->is(__bit, *__low))
++ __m |= __bit;
++ }
++ *__vec = __m;
++ }
++ }
++ return __high;
++ }
++
++ const char*
++ ctype<char>::
++ scan_is(mask __m, const char* __low, const char* __high) const
++ {
++ if (_M_table)
++ while (__low < __high
++ && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
++ ++__low;
++ else
++ while (__low < __high && !this->is(__m, *__low))
++ ++__low;
++ return __low;
++ }
++
++ const char*
++ ctype<char>::
++ scan_not(mask __m, const char* __low, const char* __high) const
++ {
++ if (_M_table)
++ while (__low < __high
++ && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
++ ++__low;
++ else
++ while (__low < __high && this->is(__m, *__low) != 0)
++ ++__low;
++ return __low;
++ }
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
+diff --git a/libstdc++-v3/config/os/amigaos/error_constants.h b/libstdc++-v3/config/os/amigaos/error_constants.h
+new file mode 100644
+index 0000000000000000000000000000000000000000..74492cf61c875eac28cb8a86d5bfdb3b8807aa16
+--- /dev/null
++++ b/libstdc++-v3/config/os/amigaos/error_constants.h
+@@ -0,0 +1,178 @@
++// Specific definitions for generic platforms -*- C++ -*-
++
++// Copyright (C) 2007-2015 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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.
++
++// This library 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/>.
++
++/** @file bits/error_constants.h
++ * This is an internal header file, included by other library headers.
++ * Do not attempt to use it directly. @headername{system_error}
++ */
++
++#ifndef _GLIBCXX_ERROR_CONSTANTS
++#define _GLIBCXX_ERROR_CONSTANTS 1
++
++#include <bits/c++config.h>
++#include <cerrno>
++
++namespace std _GLIBCXX_VISIBILITY(default)
++{
++_GLIBCXX_BEGIN_NAMESPACE_VERSION
++
++ enum class errc
++ {
++ address_family_not_supported = EAFNOSUPPORT,
++ address_in_use = EADDRINUSE,
++ address_not_available = EADDRNOTAVAIL,
++ already_connected = EISCONN,
++ argument_list_too_long = E2BIG,
++ argument_out_of_domain = EDOM,
++ bad_address = EFAULT,
++ bad_file_descriptor = EBADF,
++
++#ifdef _GLIBCXX_HAVE_EBADMSG
++ bad_message = EBADMSG,
++#endif
++
++ broken_pipe = EPIPE,
++ connection_aborted = ECONNABORTED,
++ connection_already_in_progress = EALREADY,
++ connection_refused = ECONNREFUSED,
++ connection_reset = ECONNRESET,
++ cross_device_link = EXDEV,
++ destination_address_required = EDESTADDRREQ,
++ device_or_resource_busy = EBUSY,
++ directory_not_empty = ENOTEMPTY,
++ executable_format_error = ENOEXEC,
++ file_exists = EEXIST,
++ file_too_large = EFBIG,
++ filename_too_long = ENAMETOOLONG,
++ function_not_supported = ENOSYS,
++ host_unreachable = EHOSTUNREACH,
++
++#ifdef _GLIBCXX_HAVE_EIDRM
++ identifier_removed = EIDRM,
++#endif
++
++ illegal_byte_sequence = EILSEQ,
++ inappropriate_io_control_operation = ENOTTY,
++ interrupted = EINTR,
++ invalid_argument = EINVAL,
++ invalid_seek = ESPIPE,
++ io_error = EIO,
++ is_a_directory = EISDIR,
++ message_size = EMSGSIZE,
++ network_down = ENETDOWN,
++ network_reset = ENETRESET,
++ network_unreachable = ENETUNREACH,
++ no_buffer_space = ENOBUFS,
++ no_child_process = ECHILD,
++
++#ifdef _GLIBCXX_HAVE_ENOLINK
++ no_link = ENOLINK,
++#endif
++
++ no_lock_available = ENOLCK,
++
++#ifdef _GLIBCXX_HAVE_ENODATA
++ no_message_available = ENODATA,
++#endif
++
++ no_message = ENOMSG,
++ no_protocol_option = ENOPROTOOPT,
++ no_space_on_device = ENOSPC,
++
++#ifdef _GLIBCXX_HAVE_ENOSR
++ no_stream_resources = ENOSR,
++#endif
++
++ no_such_device_or_address = ENXIO,
++ no_such_device = ENODEV,
++ no_such_file_or_directory = ENOENT,
++ no_such_process = ESRCH,
++ not_a_directory = ENOTDIR,
++ not_a_socket = ENOTSOCK,
++
++#ifdef _GLIBCXX_HAVE_ENOSTR
++ not_a_stream = ENOSTR,
++#endif
++
++ not_connected = ENOTCONN,
++ not_enough_memory = ENOMEM,
++
++#ifdef _GLIBCXX_HAVE_ENOTSUP
++ not_supported = ENOTSUP,
++#endif
++
++#ifdef _GLIBCXX_HAVE_ECANCELED
++ operation_canceled = ECANCELED,
++#endif
++
++ operation_in_progress = EINPROGRESS,
++ operation_not_permitted = EPERM,
++ operation_not_supported = EOPNOTSUPP,
++ operation_would_block = EWOULDBLOCK,
++
++#ifdef _GLIBCXX_HAVE_EOWNERDEAD
++ owner_dead = EOWNERDEAD,
++#endif
++
++ permission_denied = EACCES,
++
++#ifdef _GLIBCXX_HAVE_EPROTO
++ protocol_error = EPROTO,
++#endif
++
++ protocol_not_supported = EPROTONOSUPPORT,
++ read_only_file_system = EROFS,
++ resource_deadlock_would_occur = EDEADLK,
++ resource_unavailable_try_again = EAGAIN,
++ result_out_of_range = ERANGE,
++
++#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE
++ state_not_recoverable = ENOTRECOVERABLE,
++#endif
++
++#ifdef _GLIBCXX_HAVE_ETIME
++ stream_timeout = ETIME,
++#endif
++
++#ifdef _GLIBCXX_HAVE_ETXTBSY
++ text_file_busy = ETXTBSY,
++#endif
++
++ timed_out = ETIMEDOUT,
++ too_many_files_open_in_system = ENFILE,
++ too_many_files_open = EMFILE,
++ too_many_links = EMLINK,
++ too_many_symbolic_link_levels = ELOOP,
++
++#ifdef _GLIBCXX_HAVE_EOVERFLOW
++ value_too_large = EOVERFLOW,
++#endif
++
++ wrong_protocol_type = EPROTOTYPE
++ };
++
++_GLIBCXX_END_NAMESPACE_VERSION
++} // namespace
++
++#endif
+diff --git a/libstdc++-v3/config/os/amigaos/os_defines.h b/libstdc++-v3/config/os/amigaos/os_defines.h
+new file mode 100644
+index 0000000000000000000000000000000000000000..346f063958cd7e80ebf97be4acee0bdf391cb811
+--- /dev/null
++++ b/libstdc++-v3/config/os/amigaos/os_defines.h
+@@ -0,0 +1,43 @@
++// Specific definitions for AmigaOS -*- C++ -*-
++
++// Copyright (C) 2000-2015 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library. This library 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.
++
++// This library 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/>.
++
++/** @file bits/os_defines.h
++ * This is an internal header file, included by other library headers.
++ * Do not attempt to use it directly. @headername{iosfwd}
++ */
++
++#ifndef _GLIBCXX_OS_DEFINES
++#define _GLIBCXX_OS_DEFINES 1
++
++// System-specific #define, typedefs, corrections, etc, go here. This
++// file will come before all others.
++
++// No ioctl() on AmigaOS
++#define _GLIBCXX_NO_IOCTL 1
++
++#ifdef __NEWLIB__
++#define _GLIBCXX_USE_C99_STDINT_TR1 1
++#endif
++
++#endif
+diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
+index 0b366eafaae8cfa0abd09128bd8ac16b9f775c7c..e54afbc0c30a4b0a40949d9ed78f64661224c253 100644
+--- a/libstdc++-v3/configure.host
++++ b/libstdc++-v3/configure.host
+@@ -223,12 +223,15 @@ case "${host_os}" in
+ atomicity_dir="os/aix"
+ ;;
+ aix*)
+ os_include_dir="os/generic"
+ atomicity_dir="cpu/generic"
+ ;;
++ amigaos*)
++ os_include_dir="os/amigaos"
++ ;;
+ bsd*)
+ # Plain BSD attempts to share FreeBSD files.
+ os_include_dir="os/bsd/freebsd"
+ ;;
+ cygwin*)
+ os_include_dir="os/newlib"
+--
+1.9.1
+