aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Hsieh <andrewhsieh@google.com>2012-12-12 17:09:03 +0800
committerAndrew Hsieh <andrewhsieh@google.com>2012-12-12 17:09:03 +0800
commite42abc641966570528522d61ba625e926e979ac7 (patch)
treecae2241a1d73a7fc6474c514b9748aab1f91f9d4
parent7609f724df8ca390935f63243fa72e1de39d00c6 (diff)
downloadtoolchain_gcc-e42abc641966570528522d61ba625e926e979ac7.tar.gz
toolchain_gcc-e42abc641966570528522d61ba625e926e979ac7.tar.bz2
toolchain_gcc-e42abc641966570528522d61ba625e926e979ac7.zip
Fix ARM GCC 4.6/4.7 fail to links code using 64-bit atomic built-in
For ARM w/o dmb a helper function is called for 64-bit atomic built-in, which call __write when helper version is too old. Change to call write instead for Android. See http://code.google.com/p/android/issues/detail?id=41297 Change-Id: I98218576c5223628c0c76870623788f07675f6e5
-rw-r--r--gcc-4.6/gcc/config/arm/linux-atomic-64bit.c4
-rw-r--r--gcc-4.7/libgcc/config/arm/linux-atomic-64bit.c4
2 files changed, 8 insertions, 0 deletions
diff --git a/gcc-4.6/gcc/config/arm/linux-atomic-64bit.c b/gcc-4.6/gcc/config/arm/linux-atomic-64bit.c
index af94c7f4a..90e2ac0e3 100644
--- a/gcc-4.6/gcc/config/arm/linux-atomic-64bit.c
+++ b/gcc-4.6/gcc/config/arm/linux-atomic-64bit.c
@@ -56,7 +56,11 @@ static void __check_for_sync8_kernelhelper (void)
for the user - I'm not sure I can rely on much else being
available at this point, so do the same as generic-morestack.c
write () and abort (). */
+#if !defined(__ANDROID__)
__write (2 /* stderr. */, err, sizeof (err));
+#else
+ write (2 /* stderr. */, err, sizeof (err));
+#endif
abort ();
}
};
diff --git a/gcc-4.7/libgcc/config/arm/linux-atomic-64bit.c b/gcc-4.7/libgcc/config/arm/linux-atomic-64bit.c
index af94c7f4a..90e2ac0e3 100644
--- a/gcc-4.7/libgcc/config/arm/linux-atomic-64bit.c
+++ b/gcc-4.7/libgcc/config/arm/linux-atomic-64bit.c
@@ -56,7 +56,11 @@ static void __check_for_sync8_kernelhelper (void)
for the user - I'm not sure I can rely on much else being
available at this point, so do the same as generic-morestack.c
write () and abort (). */
+#if !defined(__ANDROID__)
__write (2 /* stderr. */, err, sizeof (err));
+#else
+ write (2 /* stderr. */, err, sizeof (err));
+#endif
abort ();
}
};