Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14864332
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
View Options
diff --git a/src/compat/glibc_compat.cpp b/src/compat/glibc_compat.cpp
new file mode 100644
index 0000000000..5b73e6051a
--- /dev/null
+++ b/src/compat/glibc_compat.cpp
@@ -0,0 +1,19 @@
+#include "bitcoin-config.h"
+#include <cstddef>
+#include <sys/select.h>
+
+// Prior to GLIBC_2.14, memcpy was aliased to memmove.
+extern "C" void* memmove(void* a, const void* b, size_t c);
+extern "C" void* memcpy(void* a, const void* b, size_t c)
+{
+ return memmove(a, b, c);
+}
+
+extern "C" void __chk_fail (void) __attribute__((__noreturn__));
+extern "C" FDELT_TYPE __fdelt_warn(FDELT_TYPE a)
+{
+ if (a >= FD_SETSIZE)
+ __chk_fail ();
+ return a / __NFDBITS;
+}
+extern "C" FDELT_TYPE __fdelt_chk(FDELT_TYPE) __attribute__((weak, alias("__fdelt_warn")));
diff --git a/src/compat/glibcxx_compat.cpp b/src/compat/glibcxx_compat.cpp
new file mode 100644
index 0000000000..6e04f67459
--- /dev/null
+++ b/src/compat/glibcxx_compat.cpp
@@ -0,0 +1,80 @@
+#include <cstddef>
+#include <istream>
+#include <stdexcept>
+#include <typeinfo>
+
+#ifndef _GLIBCXX_USE_NOEXCEPT
+ #define _GLIBCXX_USE_NOEXCEPT throw()
+#endif
+
+namespace std {
+
+const char* bad_exception::what() const throw()
+{
+ return "std::bad_exception";
+}
+
+const char* bad_cast::what() const throw()
+{
+ return "std::bad_cast";
+}
+
+const char* bad_alloc::what() const throw()
+{
+ return "std::bad_alloc";
+}
+
+namespace __detail
+{
+struct _List_node_base
+{
+ void _M_hook(std::__detail::_List_node_base* const __position) throw () __attribute__((used))
+ {
+ _M_next = __position;
+ _M_prev = __position->_M_prev;
+ __position->_M_prev->_M_next = this;
+ __position->_M_prev = this;
+ }
+ void _M_unhook() __attribute__((used))
+ {
+ _List_node_base* const __next_node = _M_next;
+ _List_node_base* const __prev_node = _M_prev;
+ __prev_node->_M_next = __next_node;
+ __next_node->_M_prev = __prev_node;
+ }
+ _List_node_base* _M_next;
+ _List_node_base* _M_prev;
+};
+} // namespace detail
+
+template ostream& ostream::_M_insert(bool);
+template ostream& ostream::_M_insert(long);
+template ostream& ostream::_M_insert(double);
+template ostream& ostream::_M_insert(unsigned long);
+template ostream& ostream::_M_insert(const void*);
+template ostream& __ostream_insert(ostream&, const char*, streamsize);
+template istream& istream::_M_extract(long&);
+template istream& istream::_M_extract(unsigned short&);
+
+out_of_range::~out_of_range() _GLIBCXX_USE_NOEXCEPT { }
+
+// Used with permission.
+// See: https://github.com/madlib/madlib/commit/c3db418c0d34d6813608f2137fef1012ce03043d
+
+void
+ctype<char>::_M_widen_init() const {
+ char __tmp[sizeof(_M_widen)];
+ for (unsigned __i = 0; __i < sizeof(_M_widen); ++__i)
+ __tmp[__i] = __i;
+ do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen);
+
+ _M_widen_ok = 1;
+ // Set _M_widen_ok to 2 if memcpy can't be used.
+ for (unsigned __i = 0; __i < sizeof(_M_widen); ++__i)
+ if (__tmp[__i] != _M_widen[__i]) {
+ _M_widen_ok = 2;
+ break;
+ }
+}
+
+}// namespace std
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Wed, May 21, 18:50 (22 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5865726
Default Alt Text
(3 KB)
Attached To
rSTAGING Bitcoin ABC staging
Event Timeline
Log In to Comment