aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Waldemar Brodkorb <wbx@openadk.org>2016-08-19 22:25:12 +0200
committerGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2016-08-20 11:47:46 +0200
commit0d8a05c38e58b4c9240e882e0184bc10ec4f6eb4 (patch)
tree8923ed096c55f2378bef1ed6bb6104624e6f74a3
parent548657513d3d935e74aed2cfbc6d56ba0804736d (diff)
downloadbuildroot-0d8a05c38e58b4c9240e882e0184bc10ec4f6eb4.tar.gz
buildroot-0d8a05c38e58b4c9240e882e0184bc10ec4f6eb4.tar.bz2
bfin: fix issues with internal toolchain, re-enable C++ support
The three patches allow to compile applications using TLS emulation from libgcc or C++ applications. The patches 892-libgcc-mkmap-symver-support-skip_underscore.patch and 893-libgcc-config-bfin-use-the-generic-linker-version-in.patch fixes how libgcc is generated, by making the necessary libgcc symbols declared "GLOBAL", and therefore visible outside of libgcc. This fixes a large number of undefined reference issues (for either C++ applications or applications using TLS emulation). This was reported as gcc PR74748. The patch 894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch allows to build DWARF in FDPIC mode. This patch replaces the older 892-disable-dwarf-bfin.patch, as instead of disabling DWARF support, it fixes it. This was reported as gcc PR68468. In order to get C++ working without unresolved symbols, we also need to disable symbol versioning (--disable-symvers). This is a remaining issue in gcc which will be investigated at a later point. Since this commit fixes C++ support in Blackfin, it re-enables the selection of C++ support for this architecture. Fixes: (alsa-lib emutls) http://autobuild.buildroot.net/results/8544ce58d75820666579db93a25ca5656a8efa8e/ (cairo emutls) http://autobuild.buildroot.net/results/88b02a5dd5408318941ccbfcea0a9cbaa331500a/ (audiofile c++) http://autobuild.buildroot.net/results/394e530c5dcd9ccb590eb151aeaadb37d11e0e39/ (assimp c++) http://autobuild.buildroot.net/results/01f4be126c2d786a5ad7f220c2cf60539888a480/ (bellagio c++) http://autobuild.buildroot.net/results/ada/ada44228bf13ec05382275bd6571396f5ba2b1f7/ Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> Tested-by: Waldemar Brodkorb <wbx@openadk.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-rw-r--r--package/gcc/6.1.0/892-disable-dwarf-bfin.patch24
-rw-r--r--package/gcc/6.1.0/892-libgcc-mkmap-symver-support-skip_underscore.patch74
-rw-r--r--package/gcc/6.1.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch1962
-rw-r--r--package/gcc/6.1.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch73
-rw-r--r--package/gcc/Config.in.host3
-rw-r--r--package/gcc/gcc-final/gcc-final.mk4
6 files changed, 2113 insertions, 27 deletions
diff --git a/package/gcc/6.1.0/892-disable-dwarf-bfin.patch b/package/gcc/6.1.0/892-disable-dwarf-bfin.patch
deleted file mode 100644
index ebd31a1855..0000000000
--- a/package/gcc/6.1.0/892-disable-dwarf-bfin.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Dwarf support does not compile on Blackfin
-
-Reported upstream:
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68468
-
-Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
-
-diff -Nur gcc-6.1.0.orig/libgcc/config.host gcc-6.1.0/libgcc/config.host
---- gcc-6.1.0.orig/libgcc/config.host 2016-02-26 21:02:28.000000000 +0100
-+++ gcc-6.1.0/libgcc/config.host 2016-05-12 19:26:30.973350274 +0200
-@@ -230,6 +230,13 @@
- ;;
- esac
- ;;
-+bfin-*-*linux*)
-+ tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
-+ extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
-+ if test x$enable_vtable_verify = xyes; then
-+ extra_parts="$extra_parts vtv_start.o vtv_end.o vtv_start_preinit.o vtv_end_preinit.o"
-+ fi
-+ ;;
- *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
- tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
- extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
diff --git a/package/gcc/6.1.0/892-libgcc-mkmap-symver-support-skip_underscore.patch b/package/gcc/6.1.0/892-libgcc-mkmap-symver-support-skip_underscore.patch
new file mode 100644
index 0000000000..1f779ed6f4
--- /dev/null
+++ b/package/gcc/6.1.0/892-libgcc-mkmap-symver-support-skip_underscore.patch
@@ -0,0 +1,74 @@
+From ae9c3e354440c4a0f105a9eabfb2f77be085ebc1 Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Thu, 18 Aug 2016 17:59:16 +0200
+Subject: [PATCH] libgcc/mkmap-symver: support skip_underscore
+
+Some platforms, such as Blackfin, have a special prefix for assembly
+symbols as opposed to C symbols. For this reason, a function named
+"foo()" in C will in fact be visible as a symbol called "_foo" in the
+ELF binary.
+
+The current linker version script logic in libgcc doesn't take into
+account this situation properly. The Blackfin specific
+libgcc/config/bfin/libgcc-glibc.ver has an additional "_" in front of
+every symbol so that it matches the output of "nm" (which gets parsed to
+produce the final linker version script). But due to this additional
+"_", ld no longer matches with the symbols since "ld" does the matching
+with the original symbol name, not the one prefixed with "_".
+
+Due to this, none of the symbols in libgcc/config/bfin/libgcc-glibc.ver
+are actually matched with symbols in libgcc. This causes all libgcc
+symbols to be left as "LOCAL", which causes lots of "undefined
+reference" whenever some C or C++ code that calls a function of libgcc
+is compiled.
+
+To address this, this commit introduces a "skip_underscore" variable to
+the mkmap-symver script. It tells mkmap-symver to ignore the leading
+underscore from the "nm" output.
+
+Note that this new argument is different from the existing
+"leading_underscore" argument, which *adds* an additional underscore to
+the generated linker version script.
+
+Having this functionality paves the way to using the generic linker
+version information for Blackfin, instead of using a custom one.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ libgcc/ChangeLog | 5 +++++
+ libgcc/mkmap-symver.awk | 6 +++++-
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
+index 6559564..129e43f 100644
+--- a/libgcc/ChangeLog
++++ b/libgcc/ChangeLog
+@@ -1,3 +1,8 @@
++2016-08-19 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
++
++ PR gcc/74748
++ * libgcc/mkmap-symver.awk: add support for skip_underscore
++
+ 2016-04-27 Release Manager
+
+ * GCC 6.1.0 released.
+diff --git a/libgcc/mkmap-symver.awk b/libgcc/mkmap-symver.awk
+index 266832a..30bb179 100644
+--- a/libgcc/mkmap-symver.awk
++++ b/libgcc/mkmap-symver.awk
+@@ -47,7 +47,11 @@ state == "nm" && ($1 == "U" || $2 == "U") {
+
+ state == "nm" && NF == 3 {
+ split ($3, s, "@")
+- def[s[1]] = 1;
++ if (skip_underscore)
++ symname = substr(s[1], 2);
++ else
++ symname = s[1];
++ def[symname] = 1;
+ sawsymbol = 1;
+ next;
+ }
+--
+2.7.4
+
diff --git a/package/gcc/6.1.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch b/package/gcc/6.1.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch
new file mode 100644
index 0000000000..8db50b589f
--- /dev/null
+++ b/package/gcc/6.1.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch
@@ -0,0 +1,1962 @@
+From 56d606931716de30a89a40dc69a9282c1b4e2880 Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Thu, 18 Aug 2016 18:04:06 +0200
+Subject: [PATCH] libgcc/config/bfin: use the generic linker version
+ information
+
+This commit makes the Blackfin platform use the generic linker version
+information, rather than a completely duplicated file, specific for the
+Blackfin architecture.
+
+This is made possible using the newly introduced skip_underscore
+variable of the mkmap-symver script.
+
+This also allows to get a correct linker version file, with symbol names
+matching the ones found in libgcc. Thanks to this, the necessary symbols
+are marked "GLOBAL" instead of "LOCAL", which makes them visible at link
+time, and solves a large number of "undefined reference"
+issues. Indeed, the Blackfin specific linker version script had an extra
+underscore in front of all symbols, which meant none of them matched the
+symbols in libgcc, and therefore all libgcc symbols were marked as
+"LOCAL", making them invisible for linking.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ libgcc/ChangeLog | 6 +
+ libgcc/config/bfin/libgcc-glibc.ver | 1894 +----------------------------------
+ libgcc/config/bfin/t-linux | 3 +-
+ 3 files changed, 10 insertions(+), 1893 deletions(-)
+
+diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
+index 129e43f..36c0194 100644
+--- a/libgcc/ChangeLog
++++ b/libgcc/ChangeLog
+@@ -1,6 +1,12 @@
+ 2016-08-19 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+ PR gcc/74748
++ * libgcc/config/bfin/libgcc-glibc.ver, libgcc/config/bfin/t-linux:
++ use generic linker version information on Blackfin.
++
++2016-08-19 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
++
++ PR gcc/74748
+ * libgcc/mkmap-symver.awk: add support for skip_underscore
+
+ 2016-04-27 Release Manager
+diff --git a/libgcc/config/bfin/libgcc-glibc.ver b/libgcc/config/bfin/libgcc-glibc.ver
+index b1bd2df..2af3df7 100644
+--- a/libgcc/config/bfin/libgcc-glibc.ver
++++ b/libgcc/config/bfin/libgcc-glibc.ver
+@@ -16,1898 +16,8 @@
+ # along with GCC; see the file COPYING3. If not see
+ # <http://www.gnu.org/licenses/>.
+
+-GCC_3.0 {
+- # libgcc1 integer symbols
+- ___absvsi2
+- ___addvsi3
+- ___ashlsi3
+- ___ashrsi3
+- ___divsi3
+- ___lshrsi3
+- ___modsi3
+- ___mulsi3
+- ___mulvsi3
+- ___negvsi2
+- ___subvsi3
+- ___udivsi3
+- ___umodsi3
+-
+- # libgcc1 floating point symbols
+- ___addsf3
+- ___adddf3
+- ___addxf3
+- ___addtf3
+- ___divsf3
+- ___divdf3
+- ___divxf3
+- ___divtf3
+- ___eqsf2
+- ___eqdf2
+- ___eqxf2
+- ___eqtf2
+- ___extenddfxf2
+- ___extenddftf2
+- ___extendsfdf2
+- ___extendsfxf2
+- ___extendsftf2
+- ___fixsfsi
+- ___fixdfsi
+- ___fixxfsi
+- ___fixtfsi
+- ___floatsisf
+- ___floatsidf
+- ___floatsixf
+- ___floatsitf
+- ___gesf2
+- ___gedf2
+- ___gexf2
+- ___getf2
+- ___gtsf2
+- ___gtdf2
+- ___gtxf2
+- ___gttf2
+- ___lesf2
+- ___ledf2
+- ___lexf2
+- ___letf2
+- ___ltsf2
+- ___ltdf2
+- ___ltxf2
+- ___lttf2
+- ___mulsf3
+- ___muldf3
+- ___mulxf3
+- ___multf3
+- ___negsf2
+- ___negdf2
+- ___negxf2
+- ___negtf2
+- ___nesf2
+- ___nedf2
+- ___nexf2
+- ___netf2
+- ___subsf3
+- ___subdf3
+- ___subxf3
+- ___subtf3
+- ___truncdfsf2
+- ___truncxfsf2
+- ___trunctfsf2
+- ___truncxfdf2
+- ___trunctfdf2
+-
+- # libgcc2 DImode arithmetic (for 32-bit targets).
+- ___absvdi2
+- ___addvdi3
+- ___ashldi3
+- ___ashrdi3
+- ___cmpdi2
+- ___divdi3
+- ___ffsdi2
+- ___fixdfdi
+- ___fixsfdi
+- ___fixtfdi
+- ___fixxfdi
+- ___fixunsdfdi
+- ___fixunsdfsi
+- ___fixunssfsi
+- ___fixunssfdi
+- ___fixunstfdi
+- ___fixunstfsi
+- ___fixunsxfdi
+- ___fixunsxfsi
+- ___floatdidf
+- ___floatdisf
+- ___floatdixf
+- ___floatditf
+- ___lshrdi3
+- ___moddi3
+- ___muldi3
+- ___mulvdi3
+- ___negdi2
+- ___negvdi2
+- ___subvdi3
+- ___ucmpdi2
+- ___udivdi3
+- ___udivmoddi4
+- ___umoddi3
+-
+- # libgcc2 TImode arithmetic (for 64-bit targets).
+- ___ashlti3
+- ___ashrti3
+- ___cmpti2
+- ___divti3
+- ___ffsti2
+- ___fixdfti
+- ___fixsfti
+- ___fixtfti
+- ___fixxfti
+- ___lshrti3
+- ___modti3
+- ___multi3
+- ___negti2
+- ___ucmpti2
+- ___udivmodti4
+- ___udivti3
+- ___umodti3
+- ___fixunsdfti
+- ___fixunssfti
+- ___fixunstfti
+- ___fixunsxfti
+- ___floattidf
+- ___floattisf
+- ___floattixf
+- ___floattitf
+-
+- # Used to deal with trampoline initialization on some platforms
+- ___clear_cache
+-
+- # EH symbols
+- __Unwind_DeleteException
+- __Unwind_Find_FDE
+- __Unwind_ForcedUnwind
+- __Unwind_GetGR
+- __Unwind_GetIP
+- __Unwind_GetLanguageSpecificData
+- __Unwind_GetRegionStart
+- __Unwind_GetTextRelBase
+- __Unwind_GetDataRelBase
+- __Unwind_RaiseException
+- __Unwind_Resume
+- __Unwind_SetGR
+- __Unwind_SetIP
+- ___deregister_frame
+- ___deregister_frame_info
+- ___deregister_frame_info_bases
+- ___register_frame
+- ___register_frame_info
+- ___register_frame_info_bases
+- ___register_frame_info_table
+- ___register_frame_info_table_bases
+- ___register_frame_table
+-
+- # SjLj EH symbols
+- __Unwind_SjLj_Register
+- __Unwind_SjLj_Unregister
+- __Unwind_SjLj_RaiseException
+- __Unwind_SjLj_ForcedUnwind
+- __Unwind_SjLj_Resume
+-}
+-
+-%inherit GCC_3.3 GCC_3.0
+-GCC_3.3 {
+- __Unwind_FindEnclosingFunction
+- __Unwind_GetCFA
+- __Unwind_Backtrace
+- __Unwind_Resume_or_Rethrow
+- __Unwind_SjLj_Resume_or_Rethrow
+-}
+-
+-%inherit GCC_3.3.1 GCC_3.3
+-GCC_3.3.1 {
+- ___gcc_personality_sj0
+- ___gcc_personality_v0
+-}
+-
+-%inherit GCC_3.3.2 GCC_3.3.1
+-GCC_3.3.2 {
+-}
+-%inherit GCC_3.3.4 GCC_3.3.2
+-GCC_3.3.4 {
+- ___unorddf2
+- ___unordsf2
+-}
+-
+-%inherit GCC_3.4 GCC_3.3.4
+-GCC_3.4 {
+- # bit scanning and counting built-ins
+- ___clzsi2
+- ___clzdi2
+- ___clzti2
+- ___ctzsi2
+- ___ctzdi2
+- ___ctzti2
+- ___popcountsi2
+- ___popcountdi2
+- ___popcountti2
+- ___paritysi2
+- ___paritydi2
+- ___parityti2
+-}
+-
+-%inherit GCC_3.4.2 GCC_3.4
+-GCC_3.4.2 {
+- # Used to deal with trampoline initialization on some platforms
+- ___enable_execute_stack
+- ___trampoline_setup
+-}
+-
+-%inherit GCC_3.4.4 GCC_3.4.2
+-GCC_3.4.4 {
+- # libgcc2 TImode arithmetic (for 64-bit targets).
+- ___absvti2
+- ___addvti3
+- ___mulvti3
+- ___negvti2
+- ___subvti3
+-}
+-
+-%inherit GCC_4.0.0 GCC_3.4.4
+-GCC_4.0.0 {
+- # libgcc2 __builtin_powi helpers.
+- ___powisf2
+- ___powidf2
+- ___powixf2
+- ___powitf2
+-
+- # c99 compliant complex arithmetic
+- ___divsc3
+- ___divdc3
+- ___divxc3
+- ___divtc3
+- ___mulsc3
+- ___muldc3
+- ___mulxc3
+- ___multc3
+-}
+-
+ %inherit GCC_4.1.0 GCC_4.0.0
+ GCC_4.1.0 {
+- ___smulsi3_highpart
+- ___umulsi3_highpart
+-}
+-
+-%inherit GCC_4.2.0 GCC_4.1.0
+-GCC_4.2.0 {
+- # unsigned-to-floating conversions
+- ___floatunsisf
+- ___floatunsidf
+- ___floatunsixf
+- ___floatunsitf
+- ___floatundidf
+- ___floatundisf
+- ___floatundixf
+- ___floatunditf
+- ___floatuntidf
+- ___floatuntisf
+- ___floatuntixf
+- ___floatuntitf
+- __Unwind_GetIPInfo
+-}
+-
+-%inherit GCC_4.3.0 GCC_4.2.0
+-GCC_4.3.0 {
+- # byte swapping routines
+- ___bswapsi2
+- ___bswapdi2
+- ___emutls_get_address
+- ___emutls_register_common
+- ___ffssi2
+- ___extendxftf2
+- ___trunctfxf2
+-
+- # fixed-point routines
+- ___addqq3
+- ___addhq3
+- ___addsq3
+- ___adddq3
+- ___addtq3
+- ___adduqq3
+- ___adduhq3
+- ___addusq3
+- ___addudq3
+- ___addutq3
+- ___addha3
+- ___addsa3
+- ___addda3
+- ___addta3
+- ___adduha3
+- ___addusa3
+- ___adduda3
+- ___adduta3
+- ___ssaddqq3
+- ___ssaddhq3
+- ___ssaddsq3
+- ___ssadddq3
+- ___ssaddtq3
+- ___ssaddha3
+- ___ssaddsa3
+- ___ssaddda3
+- ___ssaddta3
+- ___usadduqq3
+- ___usadduhq3
+- ___usaddusq3
+- ___usaddudq3
+- ___usaddutq3
+- ___usadduha3
+- ___usaddusa3
+- ___usadduda3
+- ___usadduta3
+- ___subqq3
+- ___subhq3
+- ___subsq3
+- ___subdq3
+- ___subtq3
+- ___subuqq3
+- ___subuhq3
+- ___subusq3
+- ___subudq3
+- ___subutq3
+- ___subha3
+- ___subsa3
+- ___subda3
+- ___subta3
+- ___subuha3
+- ___subusa3
+- ___subuda3
+- ___subuta3
+- ___sssubqq3
+- ___sssubhq3
+- ___sssubsq3
+- ___sssubdq3
+- ___sssubtq3
+- ___sssubha3
+- ___sssubsa3
+- ___sssubda3
+- ___sssubta3
+- ___ussubuqq3
+- ___ussubuhq3
+- ___ussubusq3
+- ___ussubudq3
+- ___ussubutq3
+- ___ussubuha3
+- ___ussubusa3
+- ___ussubuda3
+- ___ussubuta3
+- ___mulqq3
+- ___mulhq3
+- ___mulsq3
+- ___muldq3
+- ___multq3
+- ___muluqq3
+- ___muluhq3
+- ___mulusq3
+- ___muludq3
+- ___mulutq3
+- ___mulha3
+- ___mulsa3
+- ___mulda3
+- ___multa3
+- ___muluha3
+- ___mulusa3
+- ___muluda3
+- ___muluta3
+- ___ssmulqq3
+- ___ssmulhq3
+- ___ssmulsq3
+- ___ssmuldq3
+- ___ssmultq3
+- ___ssmulha3
+- ___ssmulsa3
+- ___ssmulda3
+- ___ssmulta3
+- ___usmuluqq3
+- ___usmuluhq3
+- ___usmulusq3
+- ___usmuludq3
+- ___usmulutq3
+- ___usmuluha3
+- ___usmulusa3
+- ___usmuluda3
+- ___usmuluta3
+- ___divqq3
+- ___divhq3
+- ___divsq3
+- ___divdq3
+- ___divtq3
+- ___divha3
+- ___divsa3
+- ___divda3
+- ___divta3
+- ___udivuqq3
+- ___udivuhq3
+- ___udivusq3
+- ___udivudq3
+- ___udivutq3
+- ___udivuha3
+- ___udivusa3
+- ___udivuda3
+- ___udivuta3
+- ___ssdivqq3
+- ___ssdivhq3
+- ___ssdivsq3
+- ___ssdivdq3
+- ___ssdivtq3
+- ___ssdivha3
+- ___ssdivsa3
+- ___ssdivda3
+- ___ssdivta3
+- ___usdivuqq3
+- ___usdivuhq3
+- ___usdivusq3
+- ___usdivudq3
+- ___usdivutq3
+- ___usdivuha3
+- ___usdivusa3
+- ___usdivuda3
+- ___usdivuta3
+- ___negqq2
+- ___neghq2
+- ___negsq2
+- ___negdq2
+- ___negtq2
+- ___neguqq2
+- ___neguhq2
+- ___negusq2
+- ___negudq2
+- ___negutq2
+- ___negha2
+- ___negsa2
+- ___negda2
+- ___negta2
+- ___neguha2
+- ___negusa2
+- ___neguda2
+- ___neguta2
+- ___ssnegqq2
+- ___ssneghq2
+- ___ssnegsq2
+- ___ssnegdq2
+- ___ssnegtq2
+- ___ssnegha2
+- ___ssnegsa2
+- ___ssnegda2
+- ___ssnegta2
+- ___usneguqq2
+- ___usneguhq2
+- ___usnegusq2
+- ___usnegudq2
+- ___usnegutq2
+- ___usneguha2
+- ___usnegusa2
+- ___usneguda2
+- ___usneguta2
+- ___ashlqq3
+- ___ashlhq3
+- ___ashlsq3
+- ___ashldq3
+- ___ashltq3
+- ___ashluqq3
+- ___ashluhq3
+- ___ashlusq3
+- ___ashludq3
+- ___ashlutq3
+- ___ashlha3
+- ___ashlsa3
+- ___ashlda3
+- ___ashlta3
+- ___ashluha3
+- ___ashlusa3
+- ___ashluda3
+- ___ashluta3
+- ___ashrqq3
+- ___ashrhq3
+- ___ashrsq3
+- ___ashrdq3
+- ___ashrtq3
+- ___ashrha3
+- ___ashrsa3
+- ___ashrda3
+- ___ashrta3
+- ___lshruqq3
+- ___lshruhq3
+- ___lshrusq3
+- ___lshrudq3
+- ___lshrutq3
+- ___lshruha3
+- ___lshrusa3
+- ___lshruda3
+- ___lshruta3
+- ___ssashlqq3
+- ___ssashlhq3
+- ___ssashlsq3
+- ___ssashldq3
+- ___ssashltq3
+- ___ssashlha3
+- ___ssashlsa3
+- ___ssashlda3
+- ___ssashlta3
+- ___usashluqq3
+- ___usashluhq3
+- ___usashlusq3
+- ___usashludq3
+- ___usashlutq3
+- ___usashluha3
+- ___usashlusa3
+- ___usashluda3
+- ___usashluta3
+- ___cmpqq2
+- ___cmphq2
+- ___cmpsq2
+- ___cmpdq2
+- ___cmptq2
+- ___cmpuqq2
+- ___cmpuhq2
+- ___cmpusq2
+- ___cmpudq2
+- ___cmputq2
+- ___cmpha2
+- ___cmpsa2
+- ___cmpda2
+- ___cmpta2
+- ___cmpuha2
+- ___cmpusa2
+- ___cmpuda2
+- ___cmputa2
+- ___fractqqhq2
+- ___fractqqsq2
+- ___fractqqdq2
+- ___fractqqtq2
+- ___fractqqha
+- ___fractqqsa
+- ___fractqqda
+- ___fractqqta
+- ___fractqquqq
+- ___fractqquhq
+- ___fractqqusq
+- ___fractqqudq
+- ___fractqqutq
+- ___fractqquha
+- ___fractqqusa
+- ___fractqquda
+- ___fractqquta
+- ___fractqqqi
+- ___fractqqhi
+- ___fractqqsi
+- ___fractqqdi
+- ___fractqqti
+- ___fractqqsf
+- ___fractqqdf
+- ___fracthqqq2
+- ___fracthqsq2
+- ___fracthqdq2
+- ___fracthqtq2
+- ___fracthqha
+- ___fracthqsa
+- ___fracthqda
+- ___fracthqta
+- ___fracthquqq
+- ___fracthquhq
+- ___fracthqusq
+- ___fracthqudq
+- ___fracthqutq
+- ___fracthquha
+- ___fracthqusa
+- ___fracthquda
+- ___fracthquta
+- ___fracthqqi
+- ___fracthqhi
+- ___fracthqsi
+- ___fracthqdi
+- ___fracthqti
+- ___fracthqsf
+- ___fracthqdf
+- ___fractsqqq2
+- ___fractsqhq2
+- ___fractsqdq2
+- ___fractsqtq2
+- ___fractsqha
+- ___fractsqsa
+- ___fractsqda
+- ___fractsqta
+- ___fractsquqq
+- ___fractsquhq
+- ___fractsqusq
+- ___fractsqudq
+- ___fractsqutq
+- ___fractsquha
+- ___fractsqusa
+- ___fractsquda
+- ___fractsquta
+- ___fractsqqi
+- ___fractsqhi
+- ___fractsqsi
+- ___fractsqdi
+- ___fractsqti
+- ___fractsqsf
+- ___fractsqdf
+- ___fractdqqq2
+- ___fractdqhq2
+- ___fractdqsq2
+- ___fractdqtq2
+- ___fractdqha
+- ___fractdqsa
+- ___fractdqda
+- ___fractdqta
+- ___fractdquqq
+- ___fractdquhq
+- ___fractdqusq
+- ___fractdqudq
+- ___fractdqutq
+- ___fractdquha
+- ___fractdqusa
+- ___fractdquda
+- ___fractdquta
+- ___fractdqqi
+- ___fractdqhi
+- ___fractdqsi
+- ___fractdqdi
+- ___fractdqti
+- ___fractdqsf
+- ___fractdqdf
+- ___fracttqqq2
+- ___fracttqhq2
+- ___fracttqsq2
+- ___fracttqdq2
+- ___fracttqha
+- ___fracttqsa
+- ___fracttqda
+- ___fracttqta
+- ___fracttquqq
+- ___fracttquhq
+- ___fracttqusq
+- ___fracttqudq
+- ___fracttqutq
+- ___fracttquha
+- ___fracttqusa
+- ___fracttquda
+- ___fracttquta
+- ___fracttqqi
+- ___fracttqhi
+- ___fracttqsi
+- ___fracttqdi
+- ___fracttqti
+- ___fracttqsf
+- ___fracttqdf
+- ___fracthaqq
+- ___fracthahq
+- ___fracthasq
+- ___fracthadq
+- ___fracthatq
+- ___fracthasa2
+- ___fracthada2
+- ___fracthata2
+- ___fracthauqq
+- ___fracthauhq
+- ___fracthausq
+- ___fracthaudq
+- ___fracthautq
+- ___fracthauha
+- ___fracthausa
+- ___fracthauda
+- ___fracthauta
+- ___fracthaqi
+- ___fracthahi
+- ___fracthasi
+- ___fracthadi
+- ___fracthati
+- ___fracthasf
+- ___fracthadf
+- ___fractsaqq
+- ___fractsahq
+- ___fractsasq
+- ___fractsadq
+- ___fractsatq
+- ___fractsaha2
+- ___fractsada2
+- ___fractsata2
+- ___fractsauqq
+- ___fractsauhq
+- ___fractsausq
+- ___fractsaudq
+- ___fractsautq
+- ___fractsauha
+- ___fractsausa
+- ___fractsauda
+- ___fractsauta
+- ___fractsaqi
+- ___fractsahi
+- ___fractsasi
+- ___fractsadi
+- ___fractsati
+- ___fractsasf
+- ___fractsadf
+- ___fractdaqq
+- ___fractdahq
+- ___fractdasq
+- ___fractdadq
+- ___fractdatq
+- ___fractdaha2
+- ___fractdasa2
+- ___fractdata2
+- ___fractdauqq
+- ___fractdauhq
+- ___fractdausq
+- ___fractdaudq
+- ___fractdautq
+- ___fractdauha
+- ___fractdausa
+- ___fractdauda
+- ___fractdauta
+- ___fractdaqi
+- ___fractdahi
+- ___fractdasi
+- ___fractdadi
+- ___fractdati
+- ___fractdasf
+- ___fractdadf
+- ___fracttaqq
+- ___fracttahq
+- ___fracttasq
+- ___fracttadq
+- ___fracttatq
+- ___fracttaha2
+- ___fracttasa2
+- ___fracttada2
+- ___fracttauqq
+- ___fracttauhq
+- ___fracttausq
+- ___fracttaudq
+- ___fracttautq
+- ___fracttauha
+- ___fracttausa
+- ___fracttauda
+- ___fracttauta
+- ___fracttaqi
+- ___fracttahi
+- ___fracttasi
+- ___fracttadi
+- ___fracttati
+- ___fracttasf
+- ___fracttadf
+- ___fractuqqqq
+- ___fractuqqhq
+- ___fractuqqsq
+- ___fractuqqdq
+- ___fractuqqtq
+- ___fractuqqha
+- ___fractuqqsa
+- ___fractuqqda
+- ___fractuqqta
+- ___fractuqquhq2
+- ___fractuqqusq2
+- ___fractuqqudq2
+- ___fractuqqutq2
+- ___fractuqquha
+- ___fractuqqusa
+- ___fractuqquda
+- ___fractuqquta
+- ___fractuqqqi
+- ___fractuqqhi
+- ___fractuqqsi
+- ___fractuqqdi
+- ___fractuqqti
+- ___fractuqqsf
+- ___fractuqqdf
+- ___fractuhqqq
+- ___fractuhqhq
+- ___fractuhqsq
+- ___fractuhqdq
+- ___fractuhqtq
+- ___fractuhqha
+- ___fractuhqsa
+- ___fractuhqda
+- ___fractuhqta
+- ___fractuhquqq2
+- ___fractuhqusq2
+- ___fractuhqudq2
+- ___fractuhqutq2
+- ___fractuhquha
+- ___fractuhqusa
+- ___fractuhquda
+- ___fractuhquta
+- ___fractuhqqi
+- ___fractuhqhi
+- ___fractuhqsi
+- ___fractuhqdi
+- ___fractuhqti
+- ___fractuhqsf
+- ___fractuhqdf
+- ___fractusqqq
+- ___fractusqhq
+- ___fractusqsq
+- ___fractusqdq
+- ___fractusqtq
+- ___fractusqha
+- ___fractusqsa
+- ___fractusqda
+- ___fractusqta
+- ___fractusquqq2
+- ___fractusquhq2
+- ___fractusqudq2
+- ___fractusqutq2
+- ___fractusquha
+- ___fractusqusa
+- ___fractusquda
+- ___fractusquta
+- ___fractusqqi
+- ___fractusqhi
+- ___fractusqsi
+- ___fractusqdi
+- ___fractusqti
+- ___fractusqsf
+- ___fractusqdf
+- ___fractudqqq
+- ___fractudqhq
+- ___fractudqsq
+- ___fractudqdq
+- ___fractudqtq
+- ___fractudqha
+- ___fractudqsa
+- ___fractudqda
+- ___fractudqta
+- ___fractudquqq2
+- ___fractudquhq2
+- ___fractudqusq2
+- ___fractudqutq2
+- ___fractudquha
+- ___fractudqusa
+- ___fractudquda
+- ___fractudquta
+- ___fractudqqi
+- ___fractudqhi
+- ___fractudqsi
+- ___fractudqdi
+- ___fractudqti
+- ___fractudqsf
+- ___fractudqdf
+- ___fractutqqq
+- ___fractutqhq
+- ___fractutqsq
+- ___fractutqdq
+- ___fractutqtq
+- ___fractutqha
+- ___fractutqsa
+- ___fractutqda
+- ___fractutqta
+- ___fractutquqq2
+- ___fractutquhq2
+- ___fractutqusq2
+- ___fractutqudq2
+- ___fractutquha
+- ___fractutqusa
+- ___fractutquda
+- ___fractutquta
+- ___fractutqqi
+- ___fractutqhi
+- ___fractutqsi
+- ___fractutqdi
+- ___fractutqti
+- ___fractutqsf
+- ___fractutqdf
+- ___fractuhaqq
+- ___fractuhahq
+- ___fractuhasq
+- ___fractuhadq
+- ___fractuhatq
+- ___fractuhaha
+- ___fractuhasa
+- ___fractuhada
+- ___fractuhata
+- ___fractuhauqq
+- ___fractuhauhq
+- ___fractuhausq
+- ___fractuhaudq
+- ___fractuhautq
+- ___fractuhausa2
+- ___fractuhauda2
+- ___fractuhauta2
+- ___fractuhaqi
+- ___fractuhahi
+- ___fractuhasi
+- ___fractuhadi
+- ___fractuhati
+- ___fractuhasf
+- ___fractuhadf
+- ___fractusaqq
+- ___fractusahq
+- ___fractusasq
+- ___fractusadq
+- ___fractusatq
+- ___fractusaha
+- ___fractusasa
+- ___fractusada
+- ___fractusata
+- ___fractusauqq
+- ___fractusauhq
+- ___fractusausq
+- ___fractusaudq
+- ___fractusautq
+- ___fractusauha2
+- ___fractusauda2
+- ___fractusauta2
+- ___fractusaqi
+- ___fractusahi
+- ___fractusasi
+- ___fractusadi
+- ___fractusati
+- ___fractusasf
+- ___fractusadf
+- ___fractudaqq
+- ___fractudahq
+- ___fractudasq
+- ___fractudadq
+- ___fractudatq
+- ___fractudaha
+- ___fractudasa
+- ___fractudada
+- ___fractudata
+- ___fractudauqq
+- ___fractudauhq
+- ___fractudausq
+- ___fractudaudq
+- ___fractudautq
+- ___fractudauha2
+- ___fractudausa2
+- ___fractudauta2
+- ___fractudaqi
+- ___fractudahi
+- ___fractudasi
+- ___fractudadi
+- ___fractudati
+- ___fractudasf
+- ___fractudadf
+- ___fractutaqq
+- ___fractutahq
+- ___fractutasq
+- ___fractutadq
+- ___fractutatq
+- ___fractutaha
+- ___fractutasa
+- ___fractutada
+- ___fractutata
+- ___fractutauqq
+- ___fractutauhq
+- ___fractutausq
+- ___fractutaudq
+- ___fractutautq
+- ___fractutauha2
+- ___fractutausa2
+- ___fractutauda2
+- ___fractutaqi
+- ___fractutahi
+- ___fractutasi
+- ___fractutadi
+- ___fractutati
+- ___fractutasf
+- ___fractutadf
+- ___fractqiqq
+- ___fractqihq
+- ___fractqisq
+- ___fractqidq
+- ___fractqitq
+- ___fractqiha
+- ___fractqisa
+- ___fractqida
+- ___fractqita
+- ___fractqiuqq
+- ___fractqiuhq
+- ___fractqiusq
+- ___fractqiudq
+- ___fractqiutq
+- ___fractqiuha
+- ___fractqiusa
+- ___fractqiuda
+- ___fractqiuta
+- ___fracthiqq
+- ___fracthihq
+- ___fracthisq
+- ___fracthidq
+- ___fracthitq
+- ___fracthiha
+- ___fracthisa
+- ___fracthida
+- ___fracthita
+- ___fracthiuqq
+- ___fracthiuhq
+- ___fracthiusq
+- ___fracthiudq
+- ___fracthiutq
+- ___fracthiuha
+- ___fracthiusa
+- ___fracthiuda
+- ___fracthiuta
+- ___fractsiqq
+- ___fractsihq
+- ___fractsisq
+- ___fractsidq
+- ___fractsitq
+- ___fractsiha
+- ___fractsisa
+- ___fractsida
+- ___fractsita
+- ___fractsiuqq
+- ___fractsiuhq
+- ___fractsiusq
+- ___fractsiudq
+- ___fractsiutq
+- ___fractsiuha
+- ___fractsiusa
+- ___fractsiuda
+- ___fractsiuta
+- ___fractdiqq
+- ___fractdihq
+- ___fractdisq
+- ___fractdidq
+- ___fractditq
+- ___fractdiha
+- ___fractdisa
+- ___fractdida
+- ___fractdita
+- ___fractdiuqq
+- ___fractdiuhq
+- ___fractdiusq
+- ___fractdiudq
+- ___fractdiutq
+- ___fractdiuha
+- ___fractdiusa
+- ___fractdiuda
+- ___fractdiuta
+- ___fracttiqq
+- ___fracttihq
+- ___fracttisq
+- ___fracttidq
+- ___fracttitq
+- ___fracttiha
+- ___fracttisa
+- ___fracttida
+- ___fracttita
+- ___fracttiuqq
+- ___fracttiuhq
+- ___fracttiusq
+- ___fracttiudq
+- ___fracttiutq
+- ___fracttiuha
+- ___fracttiusa
+- ___fracttiuda
+- ___fracttiuta
+- ___fractsfqq
+- ___fractsfhq
+- ___fractsfsq
+- ___fractsfdq
+- ___fractsftq
+- ___fractsfha
+- ___fractsfsa
+- ___fractsfda
+- ___fractsfta
+- ___fractsfuqq
+- ___fractsfuhq
+- ___fractsfusq
+- ___fractsfudq
+- ___fractsfutq
+- ___fractsfuha
+- ___fractsfusa
+- ___fractsfuda
+- ___fractsfuta
+- ___fractdfqq
+- ___fractdfhq
+- ___fractdfsq
+- ___fractdfdq
+- ___fractdftq
+- ___fractdfha
+- ___fractdfsa
+- ___fractdfda
+- ___fractdfta
+- ___fractdfuqq
+- ___fractdfuhq
+- ___fractdfusq
+- ___fractdfudq
+- ___fractdfutq
+- ___fractdfuha
+- ___fractdfusa
+- ___fractdfuda
+- ___fractdfuta
+- ___satfractqqhq2
+- ___satfractqqsq2
+- ___satfractqqdq2
+- ___satfractqqtq2
+- ___satfractqqha
+- ___satfractqqsa
+- ___satfractqqda
+- ___satfractqqta
+- ___satfractqquqq
+- ___satfractqquhq
+- ___satfractqqusq
+- ___satfractqqudq
+- ___satfractqqutq
+- ___satfractqquha
+- ___satfractqqusa
+- ___satfractqquda
+- ___satfractqquta
+- ___satfracthqqq2
+- ___satfracthqsq2
+- ___satfracthqdq2
+- ___satfracthqtq2
+- ___satfracthqha
+- ___satfracthqsa
+- ___satfracthqda
+- ___satfracthqta
+- ___satfracthquqq
+- ___satfracthquhq
+- ___satfracthqusq
+- ___satfracthqudq
+- ___satfracthqutq
+- ___satfracthquha
+- ___satfracthqusa
+- ___satfracthquda
+- ___satfracthquta
+- ___satfractsqqq2
+- ___satfractsqhq2
+- ___satfractsqdq2
+- ___satfractsqtq2
+- ___satfractsqha
+- ___satfractsqsa
+- ___satfractsqda
+- ___satfractsqta
+- ___satfractsquqq
+- ___satfractsquhq
+- ___satfractsqusq
+- ___satfractsqudq
+- ___satfractsqutq
+- ___satfractsquha
+- ___satfractsqusa
+- ___satfractsquda
+- ___satfractsquta
+- ___satfractdqqq2
+- ___satfractdqhq2
+- ___satfractdqsq2
+- ___satfractdqtq2
+- ___satfractdqha
+- ___satfractdqsa
+- ___satfractdqda
+- ___satfractdqta
+- ___satfractdquqq
+- ___satfractdquhq
+- ___satfractdqusq
+- ___satfractdqudq
+- ___satfractdqutq
+- ___satfractdquha
+- ___satfractdqusa
+- ___satfractdquda
+- ___satfractdquta
+- ___satfracttqqq2
+- ___satfracttqhq2
+- ___satfracttqsq2
+- ___satfracttqdq2
+- ___satfracttqha
+- ___satfracttqsa
+- ___satfracttqda
+- ___satfracttqta
+- ___satfracttquqq
+- ___satfracttquhq
+- ___satfracttqusq
+- ___satfracttqudq
+- ___satfracttqutq
+- ___satfracttquha
+- ___satfracttqusa
+- ___satfracttquda
+- ___satfracttquta
+- ___satfracthaqq
+- ___satfracthahq
+- ___satfracthasq
+- ___satfracthadq
+- ___satfracthatq
+- ___satfracthasa2
+- ___satfracthada2
+- ___satfracthata2
+- ___satfracthauqq
+- ___satfracthauhq
+- ___satfracthausq
+- ___satfracthaudq
+- ___satfracthautq
+- ___satfracthauha
+- ___satfracthausa
+- ___satfracthauda
+- ___satfracthauta
+- ___satfractsaqq
+- ___satfractsahq
+- ___satfractsasq
+- ___satfractsadq
+- ___satfractsatq
+- ___satfractsaha2
+- ___satfractsada2
+- ___satfractsata2
+- ___satfractsauqq
+- ___satfractsauhq
+- ___satfractsausq
+- ___satfractsaudq
+- ___satfractsautq
+- ___satfractsauha
+- ___satfractsausa
+- ___satfractsauda
+- ___satfractsauta
+- ___satfractdaqq
+- ___satfractdahq
+- ___satfractdasq
+- ___satfractdadq
+- ___satfractdatq
+- ___satfractdaha2
+- ___satfractdasa2
+- ___satfractdata2
+- ___satfractdauqq
+- ___satfractdauhq
+- ___satfractdausq
+- ___satfractdaudq
+- ___satfractdautq
+- ___satfractdauha
+- ___satfractdausa
+- ___satfractdauda
+- ___satfractdauta
+- ___satfracttaqq
+- ___satfracttahq
+- ___satfracttasq
+- ___satfracttadq
+- ___satfracttatq
+- ___satfracttaha2
+- ___satfracttasa2
+- ___satfracttada2
+- ___satfracttauqq
+- ___satfracttauhq
+- ___satfracttausq
+- ___satfracttaudq
+- ___satfracttautq
+- ___satfracttauha
+- ___satfracttausa
+- ___satfracttauda
+- ___satfracttauta
+- ___satfractuqqqq
+- ___satfractuqqhq
+- ___satfractuqqsq
+- ___satfractuqqdq
+- ___satfractuqqtq
+- ___satfractuqqha
+- ___satfractuqqsa
+- ___satfractuqqda
+- ___satfractuqqta
+- ___satfractuqquhq2
+- ___satfractuqqusq2
+- ___satfractuqqudq2
+- ___satfractuqqutq2
+- ___satfractuqquha
+- ___satfractuqqusa
+- ___satfractuqquda
+- ___satfractuqquta
+- ___satfractuhqqq
+- ___satfractuhqhq
+- ___satfractuhqsq
+- ___satfractuhqdq
+- ___satfractuhqtq
+- ___satfractuhqha
+- ___satfractuhqsa
+- ___satfractuhqda
+- ___satfractuhqta
+- ___satfractuhquqq2
+- ___satfractuhqusq2
+- ___satfractuhqudq2
+- ___satfractuhqutq2
+- ___satfractuhquha
+- ___satfractuhqusa
+- ___satfractuhquda
+- ___satfractuhquta
+- ___satfractusqqq
+- ___satfractusqhq
+- ___satfractusqsq
+- ___satfractusqdq
+- ___satfractusqtq
+- ___satfractusqha
+- ___satfractusqsa
+- ___satfractusqda
+- ___satfractusqta
+- ___satfractusquqq2
+- ___satfractusquhq2
+- ___satfractusqudq2
+- ___satfractusqutq2
+- ___satfractusquha
+- ___satfractusqusa
+- ___satfractusquda
+- ___satfractusquta
+- ___satfractudqqq
+- ___satfractudqhq
+- ___satfractudqsq
+- ___satfractudqdq
+- ___satfractudqtq
+- ___satfractudqha
+- ___satfractudqsa
+- ___satfractudqda
+- ___satfractudqta
+- ___satfractudquqq2
+- ___satfractudquhq2
+- ___satfractudqusq2
+- ___satfractudqutq2
+- ___satfractudquha
+- ___satfractudqusa
+- ___satfractudquda
+- ___satfractudquta
+- ___satfractutqqq
+- ___satfractutqhq
+- ___satfractutqsq
+- ___satfractutqdq
+- ___satfractutqtq
+- ___satfractutqha
+- ___satfractutqsa
+- ___satfractutqda
+- ___satfractutqta
+- ___satfractutquqq2
+- ___satfractutquhq2
+- ___satfractutqusq2
+- ___satfractutqudq2
+- ___satfractutquha
+- ___satfractutqusa
+- ___satfractutquda
+- ___satfractutquta
+- ___satfractuhaqq
+- ___satfractuhahq
+- ___satfractuhasq
+- ___satfractuhadq
+- ___satfractuhatq
+- ___satfractuhaha
+- ___satfractuhasa
+- ___satfractuhada
+- ___satfractuhata
+- ___satfractuhauqq
+- ___satfractuhauhq
+- ___satfractuhausq
+- ___satfractuhaudq
+- ___satfractuhautq
+- ___satfractuhausa2
+- ___satfractuhauda2
+- ___satfractuhauta2
+- ___satfractusaqq
+- ___satfractusahq
+- ___satfractusasq
+- ___satfractusadq
+- ___satfractusatq
+- ___satfractusaha
+- ___satfractusasa
+- ___satfractusada
+- ___satfractusata
+- ___satfractusauqq
+- ___satfractusauhq
+- ___satfractusausq
+- ___satfractusaudq
+- ___satfractusautq
+- ___satfractusauha2
+- ___satfractusauda2
+- ___satfractusauta2
+- ___satfractudaqq
+- ___satfractudahq
+- ___satfractudasq
+- ___satfractudadq
+- ___satfractudatq
+- ___satfractudaha
+- ___satfractudasa
+- ___satfractudada
+- ___satfractudata
+- ___satfractudauqq
+- ___satfractudauhq
+- ___satfractudausq
+- ___satfractudaudq
+- ___satfractudautq
+- ___satfractudauha2
+- ___satfractudausa2
+- ___satfractudauta2
+- ___satfractutaqq
+- ___satfractutahq
+- ___satfractutasq
+- ___satfractutadq
+- ___satfractutatq
+- ___satfractutaha
+- ___satfractutasa
+- ___satfractutada
+- ___satfractutata
+- ___satfractutauqq
+- ___satfractutauhq
+- ___satfractutausq
+- ___satfractutaudq
+- ___satfractutautq
+- ___satfractutauha2
+- ___satfractutausa2
+- ___satfractutauda2
+- ___satfractqiqq
+- ___satfractqihq
+- ___satfractqisq
+- ___satfractqidq
+- ___satfractqitq
+- ___satfractqiha
+- ___satfractqisa
+- ___satfractqida
+- ___satfractqita
+- ___satfractqiuqq
+- ___satfractqiuhq
+- ___satfractqiusq
+- ___satfractqiudq
+- ___satfractqiutq
+- ___satfractqiuha
+- ___satfractqiusa
+- ___satfractqiuda
+- ___satfractqiuta
+- ___satfracthiqq
+- ___satfracthihq
+- ___satfracthisq
+- ___satfracthidq
+- ___satfracthitq
+- ___satfracthiha
+- ___satfracthisa
+- ___satfracthida
+- ___satfracthita
+- ___satfracthiuqq
+- ___satfracthiuhq
+- ___satfracthiusq
+- ___satfracthiudq
+- ___satfracthiutq
+- ___satfracthiuha
+- ___satfracthiusa
+- ___satfracthiuda
+- ___satfracthiuta
+- ___satfractsiqq
+- ___satfractsihq
+- ___satfractsisq
+- ___satfractsidq
+- ___satfractsitq
+- ___satfractsiha
+- ___satfractsisa
+- ___satfractsida
+- ___satfractsita
+- ___satfractsiuqq
+- ___satfractsiuhq
+- ___satfractsiusq
+- ___satfractsiudq
+- ___satfractsiutq
+- ___satfractsiuha
+- ___satfractsiusa
+- ___satfractsiuda
+- ___satfractsiuta
+- ___satfractdiqq
+- ___satfractdihq
+- ___satfractdisq
+- ___satfractdidq
+- ___satfractditq
+- ___satfractdiha
+- ___satfractdisa
+- ___satfractdida
+- ___satfractdita
+- ___satfractdiuqq
+- ___satfractdiuhq
+- ___satfractdiusq
+- ___satfractdiudq
+- ___satfractdiutq
+- ___satfractdiuha
+- ___satfractdiusa
+- ___satfractdiuda
+- ___satfractdiuta
+- ___satfracttiqq
+- ___satfracttihq
+- ___satfracttisq
+- ___satfracttidq
+- ___satfracttitq
+- ___satfracttiha
+- ___satfracttisa
+- ___satfracttida
+- ___satfracttita
+- ___satfracttiuqq
+- ___satfracttiuhq
+- ___satfracttiusq
+- ___satfracttiudq
+- ___satfracttiutq
+- ___satfracttiuha
+- ___satfracttiusa
+- ___satfracttiuda
+- ___satfracttiuta
+- ___satfractsfqq
+- ___satfractsfhq
+- ___satfractsfsq
+- ___satfractsfdq
+- ___satfractsftq
+- ___satfractsfha
+- ___satfractsfsa
+- ___satfractsfda
+- ___satfractsfta
+- ___satfractsfuqq
+- ___satfractsfuhq
+- ___satfractsfusq
+- ___satfractsfudq
+- ___satfractsfutq
+- ___satfractsfuha
+- ___satfractsfusa
+- ___satfractsfuda
+- ___satfractsfuta
+- ___satfractdfqq
+- ___satfractdfhq
+- ___satfractdfsq
+- ___satfractdfdq
+- ___satfractdftq
+- ___satfractdfha
+- ___satfractdfsa
+- ___satfractdfda
+- ___satfractdfta
+- ___satfractdfuqq
+- ___satfractdfuhq
+- ___satfractdfusq
+- ___satfractdfudq
+- ___satfractdfutq
+- ___satfractdfuha
+- ___satfractdfusa
+- ___satfractdfuda
+- ___satfractdfuta
+- ___fractunsqqqi
+- ___fractunsqqhi
+- ___fractunsqqsi
+- ___fractunsqqdi
+- ___fractunsqqti
+- ___fractunshqqi
+- ___fractunshqhi
+- ___fractunshqsi
+- ___fractunshqdi
+- ___fractunshqti
+- ___fractunssqqi
+- ___fractunssqhi
+- ___fractunssqsi
+- ___fractunssqdi
+- ___fractunssqti
+- ___fractunsdqqi
+- ___fractunsdqhi
+- ___fractunsdqsi
+- ___fractunsdqdi
+- ___fractunsdqti
+- ___fractunstqqi
+- ___fractunstqhi
+- ___fractunstqsi
+- ___fractunstqdi
+- ___fractunstqti
+- ___fractunshaqi
+- ___fractunshahi
+- ___fractunshasi
+- ___fractunshadi
+- ___fractunshati
+- ___fractunssaqi
+- ___fractunssahi
+- ___fractunssasi
+- ___fractunssadi
+- ___fractunssati
+- ___fractunsdaqi
+- ___fractunsdahi
+- ___fractunsdasi
+- ___fractunsdadi
+- ___fractunsdati
+- ___fractunstaqi
+- ___fractunstahi
+- ___fractunstasi
+- ___fractunstadi
+- ___fractunstati
+- ___fractunsuqqqi
+- ___fractunsuqqhi
+- ___fractunsuqqsi
+- ___fractunsuqqdi
+- ___fractunsuqqti
+- ___fractunsuhqqi
+- ___fractunsuhqhi
+- ___fractunsuhqsi
+- ___fractunsuhqdi
+- ___fractunsuhqti
+- ___fractunsusqqi
+- ___fractunsusqhi
+- ___fractunsusqsi
+- ___fractunsusqdi
+- ___fractunsusqti
+- ___fractunsudqqi
+- ___fractunsudqhi
+- ___fractunsudqsi
+- ___fractunsudqdi
+- ___fractunsudqti
+- ___fractunsutqqi
+- ___fractunsutqhi
+- ___fractunsutqsi
+- ___fractunsutqdi
+- ___fractunsutqti
+- ___fractunsuhaqi
+- ___fractunsuhahi
+- ___fractunsuhasi
+- ___fractunsuhadi
+- ___fractunsuhati
+- ___fractunsusaqi
+- ___fractunsusahi
+- ___fractunsusasi
+- ___fractunsusadi
+- ___fractunsusati
+- ___fractunsudaqi
+- ___fractunsudahi
+- ___fractunsudasi
+- ___fractunsudadi
+- ___fractunsudati
+- ___fractunsutaqi
+- ___fractunsutahi
+- ___fractunsutasi
+- ___fractunsutadi
+- ___fractunsutati
+- ___fractunsqiqq
+- ___fractunsqihq
+- ___fractunsqisq
+- ___fractunsqidq
+- ___fractunsqitq
+- ___fractunsqiha
+- ___fractunsqisa
+- ___fractunsqida
+- ___fractunsqita
+- ___fractunsqiuqq
+- ___fractunsqiuhq
+- ___fractunsqiusq
+- ___fractunsqiudq
+- ___fractunsqiutq
+- ___fractunsqiuha
+- ___fractunsqiusa
+- ___fractunsqiuda
+- ___fractunsqiuta
+- ___fractunshiqq
+- ___fractunshihq
+- ___fractunshisq
+- ___fractunshidq
+- ___fractunshitq
+- ___fractunshiha
+- ___fractunshisa
+- ___fractunshida
+- ___fractunshita
+- ___fractunshiuqq
+- ___fractunshiuhq
+- ___fractunshiusq
+- ___fractunshiudq
+- ___fractunshiutq
+- ___fractunshiuha
+- ___fractunshiusa
+- ___fractunshiuda
+- ___fractunshiuta
+- ___fractunssiqq
+- ___fractunssihq
+- ___fractunssisq
+- ___fractunssidq
+- ___fractunssitq
+- ___fractunssiha
+- ___fractunssisa
+- ___fractunssida
+- ___fractunssita
+- ___fractunssiuqq
+- ___fractunssiuhq
+- ___fractunssiusq
+- ___fractunssiudq
+- ___fractunssiutq
+- ___fractunssiuha
+- ___fractunssiusa
+- ___fractunssiuda
+- ___fractunssiuta
+- ___fractunsdiqq
+- ___fractunsdihq
+- ___fractunsdisq
+- ___fractunsdidq
+- ___fractunsditq
+- ___fractunsdiha
+- ___fractunsdisa
+- ___fractunsdida
+- ___fractunsdita
+- ___fractunsdiuqq
+- ___fractunsdiuhq
+- ___fractunsdiusq
+- ___fractunsdiudq
+- ___fractunsdiutq
+- ___fractunsdiuha
+- ___fractunsdiusa
+- ___fractunsdiuda
+- ___fractunsdiuta
+- ___fractunstiqq
+- ___fractunstihq
+- ___fractunstisq
+- ___fractunstidq
+- ___fractunstitq
+- ___fractunstiha
+- ___fractunstisa
+- ___fractunstida
+- ___fractunstita
+- ___fractunstiuqq
+- ___fractunstiuhq
+- ___fractunstiusq
+- ___fractunstiudq
+- ___fractunstiutq
+- ___fractunstiuha
+- ___fractunstiusa
+- ___fractunstiuda
+- ___fractunstiuta
+- ___satfractunsqiqq
+- ___satfractunsqihq
+- ___satfractunsqisq
+- ___satfractunsqidq
+- ___satfractunsqitq
+- ___satfractunsqiha
+- ___satfractunsqisa
+- ___satfractunsqida
+- ___satfractunsqita
+- ___satfractunsqiuqq
+- ___satfractunsqiuhq
+- ___satfractunsqiusq
+- ___satfractunsqiudq
+- ___satfractunsqiutq
+- ___satfractunsqiuha
+- ___satfractunsqiusa
+- ___satfractunsqiuda
+- ___satfractunsqiuta
+- ___satfractunshiqq
+- ___satfractunshihq
+- ___satfractunshisq
+- ___satfractunshidq
+- ___satfractunshitq
+- ___satfractunshiha
+- ___satfractunshisa
+- ___satfractunshida
+- ___satfractunshita
+- ___satfractunshiuqq
+- ___satfractunshiuhq
+- ___satfractunshiusq
+- ___satfractunshiudq
+- ___satfractunshiutq
+- ___satfractunshiuha
+- ___satfractunshiusa
+- ___satfractunshiuda
+- ___satfractunshiuta
+- ___satfractunssiqq
+- ___satfractunssihq
+- ___satfractunssisq
+- ___satfractunssidq
+- ___satfractunssitq
+- ___satfractunssiha
+- ___satfractunssisa
+- ___satfractunssida
+- ___satfractunssita
+- ___satfractunssiuqq
+- ___satfractunssiuhq
+- ___satfractunssiusq
+- ___satfractunssiudq
+- ___satfractunssiutq
+- ___satfractunssiuha
+- ___satfractunssiusa
+- ___satfractunssiuda
+- ___satfractunssiuta
+- ___satfractunsdiqq
+- ___satfractunsdihq
+- ___satfractunsdisq
+- ___satfractunsdidq
+- ___satfractunsditq
+- ___satfractunsdiha
+- ___satfractunsdisa
+- ___satfractunsdida
+- ___satfractunsdita
+- ___satfractunsdiuqq
+- ___satfractunsdiuhq
+- ___satfractunsdiusq
+- ___satfractunsdiudq
+- ___satfractunsdiutq
+- ___satfractunsdiuha
+- ___satfractunsdiusa
+- ___satfractunsdiuda
+- ___satfractunsdiuta
+- ___satfractunstiqq
+- ___satfractunstihq
+- ___satfractunstisq
+- ___satfractunstidq
+- ___satfractunstitq
+- ___satfractunstiha
+- ___satfractunstisa
+- ___satfractunstida
+- ___satfractunstita
+- ___satfractunstiuqq
+- ___satfractunstiuhq
+- ___satfractunstiusq
+- ___satfractunstiudq
+- ___satfractunstiutq
+- ___satfractunstiuha
+- ___satfractunstiusa
+- ___satfractunstiuda
+- ___satfractunstiuta
+-}
+-
+-%inherit GCC_4.4.0 GCC_4.3.0
+-GCC_4.4.0 {
+- ___sync_fetch_and_add_1
+- ___sync_fetch_and_sub_1
+- ___sync_fetch_and_or_1
+- ___sync_fetch_and_and_1
+- ___sync_fetch_and_xor_1
+- ___sync_fetch_and_nand_1
+- ___sync_add_and_fetch_1
+- ___sync_sub_and_fetch_1
+- ___sync_or_and_fetch_1
+- ___sync_and_and_fetch_1
+- ___sync_xor_and_fetch_1
+- ___sync_nand_and_fetch_1
+- ___sync_bool_compare_and_swap_1
+- ___sync_val_compare_and_swap_1
+- ___sync_lock_test_and_set_1
+-
+- ___sync_fetch_and_add_2
+- ___sync_fetch_and_sub_2
+- ___sync_fetch_and_or_2
+- ___sync_fetch_and_and_2
+- ___sync_fetch_and_xor_2
+- ___sync_fetch_and_nand_2
+- ___sync_add_and_fetch_2
+- ___sync_sub_and_fetch_2
+- ___sync_or_and_fetch_2
+- ___sync_and_and_fetch_2
+- ___sync_xor_and_fetch_2
+- ___sync_nand_and_fetch_2
+- ___sync_bool_compare_and_swap_2
+- ___sync_val_compare_and_swap_2
+- ___sync_lock_test_and_set_2
+-
+- ___sync_fetch_and_add_4
+- ___sync_fetch_and_sub_4
+- ___sync_fetch_and_or_4
+- ___sync_fetch_and_and_4
+- ___sync_fetch_and_xor_4
+- ___sync_fetch_and_nand_4
+- ___sync_add_and_fetch_4
+- ___sync_sub_and_fetch_4
+- ___sync_or_and_fetch_4
+- ___sync_and_and_fetch_4
+- ___sync_xor_and_fetch_4
+- ___sync_nand_and_fetch_4
+- ___sync_bool_compare_and_swap_4
+- ___sync_val_compare_and_swap_4
+- ___sync_lock_test_and_set_4
+-
+- ___sync_fetch_and_add_8
+- ___sync_fetch_and_sub_8
+- ___sync_fetch_and_or_8
+- ___sync_fetch_and_and_8
+- ___sync_fetch_and_xor_8
+- ___sync_fetch_and_nand_8
+- ___sync_add_and_fetch_8
+- ___sync_sub_and_fetch_8
+- ___sync_or_and_fetch_8
+- ___sync_and_and_fetch_8
+- ___sync_xor_and_fetch_8
+- ___sync_nand_and_fetch_8
+- ___sync_bool_compare_and_swap_8
+- ___sync_val_compare_and_swap_8
+- ___sync_lock_test_and_set_8
+-
+- ___sync_fetch_and_add_16
+- ___sync_fetch_and_sub_16
+- ___sync_fetch_and_or_16
+- ___sync_fetch_and_and_16
+- ___sync_fetch_and_xor_16
+- ___sync_fetch_and_nand_16
+- ___sync_add_and_fetch_16
+- ___sync_sub_and_fetch_16
+- ___sync_or_and_fetch_16
+- ___sync_and_and_fetch_16
+- ___sync_xor_and_fetch_16
+- ___sync_nand_and_fetch_16
+- ___sync_bool_compare_and_swap_16
+- ___sync_val_compare_and_swap_16
+- ___sync_lock_test_and_set_16
+-
+- ___sync_synchronize
+-}
+-
+-%inherit GCC_4.5.0 GCC_4.4.0
+-GCC_4.5.0 {
+- ___unordxf2
+- ___unordtf2
++ __smulsi3_highpart
++ __umulsi3_highpart
+ }
+diff --git a/libgcc/config/bfin/t-linux b/libgcc/config/bfin/t-linux
+index 1c42e48..8898157 100644
+--- a/libgcc/config/bfin/t-linux
++++ b/libgcc/config/bfin/t-linux
+@@ -1 +1,2 @@
+-SHLIB_MAPFILES = $(srcdir)/config/bfin/libgcc-glibc.ver
++SHLIB_MAPFILES += $(srcdir)/config/bfin/libgcc-glibc.ver
++SHLIB_MKMAP_OPTS = -v skip_underscore=1
+--
+2.7.4
+
diff --git a/package/gcc/6.1.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch b/package/gcc/6.1.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch
new file mode 100644
index 0000000000..cf3f2b8595
--- /dev/null
+++ b/package/gcc/6.1.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch
@@ -0,0 +1,73 @@
+From 9d9f97ca5d1ceba66677bf406c9b31027dc1f22e Mon Sep 17 00:00:00 2001
+From: Waldemar Brodkorb <wbx@openadk.org>
+Date: Fri, 19 Aug 2016 13:54:46 +0200
+Subject: [PATCH] libgcc: fix DWARF compilation with FDPIC targets
+
+The build of unwind-dw2-fde-dip.c currently fails for FDPIC targets with
+the following error:
+
+libgcc/unwind-dw2-fde-dip.c:167:31: error: storage size of 'load_base' isn't known
+ struct elf32_fdpic_loadaddr load_base;
+
+This patch addresses that by defining load_base with the appropriate
+type on FDPIC targets. It has been tested on FRV and Blackfin.
+
+Fixes PR gcc/68468.
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ libgcc/ChangeLog | 5 +++++
+ libgcc/unwind-dw2-fde-dip.c | 8 ++++++--
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
+index 36c0194..2e78d20 100644
+--- a/libgcc/ChangeLog
++++ b/libgcc/ChangeLog
+@@ -1,3 +1,8 @@
++2016-08-19 Waldemar Brodkorb <wbx@openadk.org>
++
++ PR gcc/68468
++ * libgcc/unwind-dw2-fde-dip.c: fix build on FDPIC targets.
++
+ 2016-08-19 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+ PR gcc/74748
+diff --git a/libgcc/unwind-dw2-fde-dip.c b/libgcc/unwind-dw2-fde-dip.c
+index f7a1c3f..801bce8 100644
+--- a/libgcc/unwind-dw2-fde-dip.c
++++ b/libgcc/unwind-dw2-fde-dip.c
+@@ -124,7 +124,11 @@ static struct frame_hdr_cache_element
+ {
+ _Unwind_Ptr pc_low;
+ _Unwind_Ptr pc_high;
++#if defined __FRV_FDPIC__ || defined __BFIN_FDPIC__
++ struct elf32_fdpic_loadaddr load_base;
++#else
+ _Unwind_Ptr load_base;
++#endif
+ const ElfW(Phdr) *p_eh_frame_hdr;
+ const ElfW(Phdr) *p_dynamic;
+ struct frame_hdr_cache_element *link;
+@@ -163,7 +167,7 @@ _Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr)
+ struct unw_eh_callback_data *data = (struct unw_eh_callback_data *) ptr;
+ const ElfW(Phdr) *phdr, *p_eh_frame_hdr, *p_dynamic;
+ long n, match;
+-#ifdef __FRV_FDPIC__
++#if defined __FRV_FDPIC__ || defined __BFIN_FDPIC__
+ struct elf32_fdpic_loadaddr load_base;
+ #else
+ _Unwind_Ptr load_base;
+@@ -347,7 +351,7 @@ _Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr)
+ break;
+ }
+ }
+-# elif defined __FRV_FDPIC__ && defined __linux__
++# elif (defined __FRV_FDPIC__ || defined __BFIN_FDPIC__) && defined __linux__
+ data->dbase = load_base.got_value;
+ # else
+ # error What is DW_EH_PE_datarel base on this platform?
+--
+2.7.4
+
diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
index 8b2b00a12b..6ab7f00896 100644
--- a/package/gcc/Config.in.host
+++ b/package/gcc/Config.in.host
@@ -120,9 +120,6 @@ config BR2_EXTRA_GCC_CONFIG_OPTIONS
config BR2_TOOLCHAIN_BUILDROOT_CXX
bool "Enable C++ support"
select BR2_INSTALL_LIBSTDCPP
- # C++ support currently broken for Blackfin, under
- # investigation.
- depends on !BR2_bfin
help
Enable this option if you want your toolchain to support the
C++ language and you want C++ libraries to be installed on
diff --git a/package/gcc/gcc-final/gcc-final.mk b/package/gcc/gcc-final/gcc-final.mk
index 284d34cb1e..eea2f74bd7 100644
--- a/package/gcc/gcc-final/gcc-final.mk
+++ b/package/gcc/gcc-final/gcc-final.mk
@@ -74,6 +74,10 @@ HOST_GCC_FINAL_CONF_OPTS += "--with-multilib-list=m4a,m4a-nofpu"
HOST_GCC_FINAL_GCC_LIB_DIR = $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/lib/!m4*
endif
+ifeq ($(BR2_bfin),y)
+HOST_GCC_FINAL_CONF_OPTS += --disable-symvers
+endif
+
# Disable shared libs like libstdc++ if we do static since it confuses linking
ifeq ($(BR2_STATIC_LIBS),y)
HOST_GCC_FINAL_CONF_OPTS += --disable-shared