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
This commit is contained in:
mmel 2017-05-09 12:14:00 +00:00
parent f62996a7a4
commit 510638eaa7
4 changed files with 31 additions and 5 deletions

View File

@ -81,3 +81,11 @@ GCC_3.5 {
# GNU-specific entry point.
__gnu_unwind_frame
}
%exclude {
_Unwind_Backtrace
}
GCC_4.3.0 {
_Unwind_Backtrace
}

View File

@ -133,4 +133,22 @@ UNWIND_WRAPPER _Unwind_Resume_or_Rethrow 1
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@GCC_3.3
#endif /* ndef __symbian__ */

View File

@ -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

View File

@ -68,10 +68,10 @@ options USB_DEBUG # Enable usb debug support code
# 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