svn commit: r318024 - in head: contrib/gcc contrib/gcc/config/arm sys/arm/conf
Michal Meloun
mmel at FreeBSD.org
Tue May 9 12:14:02 UTC 2017
Author: mmel
Date: Tue May 9 12:14:00 2017
New Revision: 318024
URL: https://svnweb.freebsd.org/changeset/base/318024
Log:
Fix _Unwind_Backtrace symbol version for ARM.
In real GNU libgcc, _Unwind_Backtrace is published with GCC_3.3 version
for all architectures but ARM. For ARM it's publishes with GCC_4.3.0
version.
This exception is not implement in your version of libggc, thus we
export _Unwind_Backtrace with bad version. To maintain backward
compatibility, publish _Unwind_Backtrace twice, once as compatible
symbol with GCC_3.3 version, and once as default symbol with
GCC_4.3.0 version.
While I'm in, fix typo in GCC_4.2.0 to GCC_4.3.0 inheritance declaration.
MFC after: 2 weeks
Modified:
head/contrib/gcc/config/arm/libgcc-bpabi.ver
head/contrib/gcc/config/arm/libunwind-arm.S
head/contrib/gcc/libgcc-std.ver
head/sys/arm/conf/std.armv6
Modified: head/contrib/gcc/config/arm/libgcc-bpabi.ver
==============================================================================
--- head/contrib/gcc/config/arm/libgcc-bpabi.ver Tue May 9 12:08:54 2017 (r318023)
+++ head/contrib/gcc/config/arm/libgcc-bpabi.ver Tue May 9 12:14:00 2017 (r318024)
@@ -81,3 +81,11 @@ GCC_3.5 {
# GNU-specific entry point.
__gnu_unwind_frame
}
+
+%exclude {
+ _Unwind_Backtrace
+}
+
+GCC_4.3.0 {
+ _Unwind_Backtrace
+}
Modified: head/contrib/gcc/config/arm/libunwind-arm.S
==============================================================================
--- head/contrib/gcc/config/arm/libunwind-arm.S Tue May 9 12:08:54 2017 (r318023)
+++ head/contrib/gcc/config/arm/libunwind-arm.S Tue May 9 12:14:00 2017 (r318024)
@@ -133,4 +133,22 @@ UNWIND_WRAPPER _Unwind_Resume_or_Rethrow
UNWIND_WRAPPER _Unwind_ForcedUnwind 3
UNWIND_WRAPPER _Unwind_Backtrace 2
+/*
+ * Originally, we incorrectly export _Unwind_Backtrace symbol
+ * with GCC_3.3 version, but real GCC libgcc export it as GCC_4.3.0.
+ * To maintain backward compatibility, export it with both versions where
+ * GCC_4.3.0 is default one.
+ *
+ * The workaround is complicated by next two issues:
+ * - old GNU ld cannot handle two (or more) symbol versions
+ * targeting same function.
+ * - the .weakref crashes clang 4.0
+ */
+ .globl SYM(_Unwind_Backtrace33)
+ TYPE(_Unwind_Backtrace33)
+SYM(_Unwind_Backtrace33):
+ b _Unwind_Backtrace
+
+ .symver SYM(_Unwind_Backtrace33),_Unwind_Backtrace at GCC_3.3
+
#endif /* ndef __symbian__ */
Modified: head/contrib/gcc/libgcc-std.ver
==============================================================================
--- head/contrib/gcc/libgcc-std.ver Tue May 9 12:08:54 2017 (r318023)
+++ head/contrib/gcc/libgcc-std.ver Tue May 9 12:14:00 2017 (r318024)
@@ -275,7 +275,7 @@ GCC_4.2.0 {
_Unwind_GetIPInfo
}
-%inherit GCC_4.3 GCC_4.2.0
+%inherit GCC_4.3.0 GCC_4.2.0
GCC_4.3.0 {
# byte swapping routines
__bswapsi2
Modified: head/sys/arm/conf/std.armv6
==============================================================================
--- head/sys/arm/conf/std.armv6 Tue May 9 12:08:54 2017 (r318023)
+++ head/sys/arm/conf/std.armv6 Tue May 9 12:14:00 2017 (r318024)
@@ -68,10 +68,10 @@ options USB_DEBUG # Enable usb debug s
# Optional extras, never enabled by default:
#options BOOTVERBOSE
#options DEBUG # May result in extreme spewage
-#options KTR
-#options KTR_COMPILE=KTR_ALL
-#options KTR_ENTRIES=16384
-#options KTR_MASK=(KTR_SPARE2)
+options KTR
+options KTR_COMPILE=KTR_ALL
+options KTR_ENTRIES=163840
+options KTR_MASK=(KTR_SPARE3)
#options KTR_VERBOSE=0
#options USB_REQ_DEBUG
#options USB_VERBOSE
More information about the svn-src-head
mailing list