mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-21 05:43:09 +00:00
71 lines
1.8 KiB
Diff
71 lines
1.8 KiB
Diff
|
From c39479f4ab4d372b518957871e1f205a03e7c3d6 Mon Sep 17 00:00:00 2001
|
||
|
From: Andrew Hsieh <andrewhsieh@google.com>
|
||
|
Date: Wed, 18 Mar 2015 10:57:24 +0800
|
||
|
Subject: [PATCH] Fix darwin build
|
||
|
|
||
|
1. In Drawin PTHREAD_ONCE_INIT is {0x30B1BCBA, {0}} and the GCC < 4.4
|
||
|
doesn't support ended initializer list
|
||
|
2. wcsncasecmp doesn't exist in MacSDK10.6.x
|
||
|
|
||
|
Change-Id: I69204a72f853f5263dffedc448379d75ed4eca2e
|
||
|
---
|
||
|
bfd/peXXigen.c | 22 ++++++++++++++++++++++
|
||
|
gold/gold-threads.cc | 15 ++++++++++++---
|
||
|
2 files changed, 34 insertions(+), 3 deletions(-)
|
||
|
|
||
|
--- a/bfd/peXXigen.c
|
||
|
+++ b/bfd/peXXigen.c
|
||
|
@@ -3609,6 +3609,28 @@
|
||
|
}
|
||
|
#endif /* HAVE_WCHAR_H and not Cygwin/Mingw */
|
||
|
|
||
|
+#if defined __APPLE__ && __DARWIN_C_LEVEL < 200809L
|
||
|
+/* wcsncasecmp isn't always defined in Mac SDK */
|
||
|
+static int
|
||
|
+wcsncasecmp(const wchar_t *s1, const wchar_t *s2, size_t n)
|
||
|
+{
|
||
|
+ wchar_t c1, c2;
|
||
|
+
|
||
|
+ if (n == 0)
|
||
|
+ return (0);
|
||
|
+ for (; *s1; s1++, s2++)
|
||
|
+ {
|
||
|
+ c1 = towlower(*s1);
|
||
|
+ c2 = towlower(*s2);
|
||
|
+ if (c1 != c2)
|
||
|
+ return ((int)c1 - c2);
|
||
|
+ if (--n == 0)
|
||
|
+ return (0);
|
||
|
+ }
|
||
|
+ return (-*s2);
|
||
|
+}
|
||
|
+#endif
|
||
|
+
|
||
|
/* Perform a comparison of two entries. */
|
||
|
static signed int
|
||
|
rsrc_cmp (bfd_boolean is_name, rsrc_entry * a, rsrc_entry * b)
|
||
|
--- a/gold/gold-threads.cc
|
||
|
+++ b/gold/gold-threads.cc
|
||
|
@@ -284,9 +284,18 @@
|
||
|
class Once_initialize
|
||
|
{
|
||
|
public:
|
||
|
- Once_initialize()
|
||
|
- : once_(PTHREAD_ONCE_INIT)
|
||
|
- { }
|
||
|
+ Once_initialize()
|
||
|
+#if !defined(__APPLE__)
|
||
|
+ : once_(PTHREAD_ONCE_INIT)
|
||
|
+ { }
|
||
|
+#else
|
||
|
+// In Drawin PTHREAD_ONCE_INIT is {0x30B1BCBA, {0}} and the GCC < 4.4 doesn't support
|
||
|
+// extended initializer list as above */
|
||
|
+ {
|
||
|
+ pthread_once_t once_2 = PTHREAD_ONCE_INIT;
|
||
|
+ once_ = once_2;
|
||
|
+ }
|
||
|
+#endif
|
||
|
|
||
|
// Return a pointer to the pthread_once_t variable.
|
||
|
pthread_once_t*
|