diff --git a/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.a b/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.a
new file mode 100644
index 0000000..89f558c
--- /dev/null
+++ b/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.a
Binary files differ
diff --git a/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.so b/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.so
new file mode 100755
index 0000000..359fa12
--- /dev/null
+++ b/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.so
Binary files differ
diff --git a/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.so.6 b/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.so.6
new file mode 100755
index 0000000..359fa12
--- /dev/null
+++ b/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.so.6
Binary files differ
diff --git a/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.so.6.0.19 b/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.so.6.0.19
new file mode 100755
index 0000000..359fa12
--- /dev/null
+++ b/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.so.6.0.19
Binary files differ
diff --git a/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.so.6.0.19-gdb.py b/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.so.6.0.19-gdb.py
new file mode 100644
index 0000000..664097a
--- /dev/null
+++ b/arm-linux-gnueabihf/sys-root/usr/lib/libstdc++.so.6.0.19-gdb.py
@@ -0,0 +1,60 @@
+# -*- python -*-
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import sys
+import gdb
+import os
+import os.path
+
+pythondir = '/opt/toolchains/stbgcc-4.8-1.0/share/gcc-4.8.4/python'
+libdir = '/opt/toolchains/stbgcc-4.8-1.0/arm-linux-gnueabihf/lib'
+
+# This file might be loaded when there is no current objfile.  This
+# can happen if the user loads it manually.  In this case we don't
+# update sys.path; instead we just hope the user managed to do that
+# beforehand.
+if gdb.current_objfile () is not None:
+    # Update module path.  We want to find the relative path from libdir
+    # to pythondir, and then we want to apply that relative path to the
+    # directory holding the objfile with which this file is associated.
+    # This preserves relocatability of the gcc tree.
+
+    # Do a simple normalization that removes duplicate separators.
+    pythondir = os.path.normpath (pythondir)
+    libdir = os.path.normpath (libdir)
+
+    prefix = os.path.commonprefix ([libdir, pythondir])
+    # In some bizarre configuration we might have found a match in the
+    # middle of a directory name.
+    if prefix[-1] != '/':
+        prefix = os.path.dirname (prefix) + '/'
+
+    # Strip off the prefix.
+    pythondir = pythondir[len (prefix):]
+    libdir = libdir[len (prefix):]
+
+    # Compute the ".."s needed to get from libdir to the prefix.
+    dotdots = ('..' + os.sep) * len (libdir.split (os.sep))
+
+    objfile = gdb.current_objfile ().filename
+    dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir)
+
+    if not dir_ in sys.path:
+        sys.path.insert(0, dir_)
+
+# Load the pretty-printers.
+from libstdcxx.v6.printers import register_libstdcxx_printers
+register_libstdcxx_printers (gdb.current_objfile ())
