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