summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRong Xu <xur@google.com>2014-11-03 14:03:32 -0800
committerRong Xu <xur@google.com>2014-11-05 16:09:37 -0800
commitb02d1e61bf15ce439a94a6ababb79ad8a6ddee3a (patch)
treefc16bd786fa33a542b000f29427b6b9e573d2645
parente22e34fbd9f173a44f9aa541edd2fe992dbba283 (diff)
downloadarm-linux-androideabi-4.9-b02d1e61bf15ce439a94a6ababb79ad8a6ddee3a.tar.gz
[linux-x86] Refresh gcc prebuilts for arm
Refresh gcc 4.9 prebuilts for arm. This new prebuilts: (1) provide corex-a53 erranum 835769 workaround, (2) fix a few compiler bugs. Change-Id: I26e36b9187ff53427f7cbf2fb55c22e155f6f06c
-rw-r--r--SOURCES53
-rw-r--r--arm-linux-androideabi/lib/armv7-a/hard/libatomic.abin186930 -> 183854 bytes
-rw-r--r--arm-linux-androideabi/lib/armv7-a/hard/libgomp.abin465396 -> 463264 bytes
-rw-r--r--arm-linux-androideabi/lib/armv7-a/libatomic.abin186682 -> 183534 bytes
-rw-r--r--arm-linux-androideabi/lib/armv7-a/libgomp.abin465272 -> 463152 bytes
-rw-r--r--arm-linux-androideabi/lib/armv7-a/thumb/hard/libatomic.abin185726 -> 182606 bytes
-rw-r--r--arm-linux-androideabi/lib/armv7-a/thumb/hard/libgomp.abin459000 -> 456888 bytes
-rw-r--r--arm-linux-androideabi/lib/armv7-a/thumb/libatomic.abin185366 -> 182258 bytes
-rw-r--r--arm-linux-androideabi/lib/armv7-a/thumb/libgomp.abin458916 -> 456784 bytes
-rw-r--r--arm-linux-androideabi/lib/libatomic.abin252042 -> 248038 bytes
-rw-r--r--arm-linux-androideabi/lib/libgomp.abin467524 -> 465400 bytes
-rw-r--r--arm-linux-androideabi/lib/thumb/libatomic.abin253630 -> 249618 bytes
-rw-r--r--arm-linux-androideabi/lib/thumb/libgomp.abin459752 -> 457636 bytes
-rwxr-xr-xbin/arm-linux-androideabi-addr2linebin707960 -> 707160 bytes
-rwxr-xr-xbin/arm-linux-androideabi-arbin736160 -> 735392 bytes
-rwxr-xr-xbin/arm-linux-androideabi-asbin1293152 -> 1291808 bytes
-rwxr-xr-xbin/arm-linux-androideabi-c++filtbin705880 -> 705080 bytes
-rwxr-xr-xbin/arm-linux-androideabi-cppbin780808 -> 780808 bytes
-rwxr-xr-xbin/arm-linux-androideabi-dwpbin2712360 -> 2708488 bytes
-rwxr-xr-xbin/arm-linux-androideabi-elfeditbin27944 -> 27944 bytes
-rwxr-xr-xbin/arm-linux-androideabi-g++bin781160 -> 780808 bytes
-rwxr-xr-xbin/arm-linux-androideabi-gccbin780808 -> 780808 bytes
-rwxr-xr-xbin/arm-linux-androideabi-gcc-4.9.x-googlebin780808 -> 780808 bytes
-rwxr-xr-xbin/arm-linux-androideabi-gcovbin422024 -> 421960 bytes
-rwxr-xr-xbin/arm-linux-androideabi-gcov-toolbin450696 -> 450696 bytes
-rwxr-xr-xbin/arm-linux-androideabi-gdbbin4211256 -> 4320536 bytes
-rwxr-xr-xbin/arm-linux-androideabi-gprofbin776728 -> 772632 bytes
-rwxr-xr-xbin/arm-linux-androideabi-ld.bfdbin1190464 -> 1190464 bytes
-rwxr-xr-xbin/arm-linux-androideabi-ld.goldbin3868056 -> 3868056 bytes
-rwxr-xr-xbin/arm-linux-androideabi-nmbin719032 -> 718840 bytes
-rwxr-xr-xbin/arm-linux-androideabi-objcopybin892664 -> 891768 bytes
-rwxr-xr-xbin/arm-linux-androideabi-objdumpbin1127640 -> 1123576 bytes
-rwxr-xr-xbin/arm-linux-androideabi-ranlibbin736192 -> 735392 bytes
-rwxr-xr-xbin/arm-linux-androideabi-readelfbin416616 -> 416552 bytes
-rwxr-xr-xbin/arm-linux-androideabi-sizebin708824 -> 708056 bytes
-rwxr-xr-xbin/arm-linux-androideabi-stringsbin707736 -> 706936 bytes
-rwxr-xr-xbin/arm-linux-androideabi-stripbin892696 -> 891800 bytes
-rw-r--r--include/gdb/jit-reader.h2
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbegin.obin2584 -> 2584 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbeginS.obin2800 -> 2800 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbeginT.obin2584 -> 2584 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbegin.obin2588 -> 2588 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbeginS.obin2804 -> 2804 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbeginT.obin2588 -> 2588 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/libgcc.abin6358266 -> 6280490 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/libgcov.abin319028 -> 316824 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/libgcc.abin6355462 -> 6277686 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/libgcov.abin318964 -> 316760 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbegin.obin2460 -> 2460 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbeginS.obin2668 -> 2668 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbeginT.obin2460 -> 2460 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbegin.obin2464 -> 2464 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbeginS.obin2672 -> 2672 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbeginT.obin2464 -> 2464 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/libgcc.abin6359542 -> 6282134 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/libgcov.abin313008 -> 310800 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/libgcc.abin6354322 -> 6279206 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/libgcov.abin313140 -> 310936 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/crtbegin.obin2580 -> 2580 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/crtbeginS.obin2796 -> 2796 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/crtbeginT.obin2580 -> 2580 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/libgcc.abin6335246 -> 6257674 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/libgcov.abin318324 -> 316128 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbegin.obin2472 -> 2472 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbeginS.obin2680 -> 2680 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbeginT.obin2472 -> 2472 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/libgcc.abin6346014 -> 6270686 bytes
-rw-r--r--lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/libgcov.abin313684 -> 311488 bytes
-rw-r--r--lib/libarm-linux-android-sim.abin371454 -> 371598 bytes
-rwxr-xr-xlibexec/gcc/arm-linux-androideabi/4.9.x-google/cc1bin16259928 -> 16250904 bytes
-rwxr-xr-xlibexec/gcc/arm-linux-androideabi/4.9.x-google/cc1plusbin17393176 -> 17382616 bytes
-rwxr-xr-xlibexec/gcc/arm-linux-androideabi/4.9.x-google/collect2bin442632 -> 442632 bytes
-rwxr-xr-xlibexec/gcc/arm-linux-androideabi/4.9.x-google/libfunction_reordering_plugin.so.0.0.0bin43840 -> 43744 bytes
-rwxr-xr-xlibexec/gcc/arm-linux-androideabi/4.9.x-google/liblto_plugin.so.0.0.0bin87712 -> 87680 bytes
-rwxr-xr-xlibexec/gcc/arm-linux-androideabi/4.9.x-google/lto-wrapperbin635048 -> 635048 bytes
-rwxr-xr-xlibexec/gcc/arm-linux-androideabi/4.9.x-google/lto1bin15521016 -> 15512824 bytes
-rwxr-xr-xlibexec/gcc/arm-linux-androideabi/4.9.x-google/plugin/gengtypebin576880 -> 576944 bytes
-rw-r--r--share/gdb/python/gdb/FrameDecorator.py302
-rw-r--r--share/gdb/python/gdb/FrameIterator.py51
-rw-r--r--share/gdb/python/gdb/__init__.py4
-rw-r--r--share/gdb/python/gdb/command/__init__.py2
-rw-r--r--share/gdb/python/gdb/command/bound_registers.py45
-rw-r--r--share/gdb/python/gdb/command/explore.py2
-rw-r--r--share/gdb/python/gdb/command/frame_filters.py467
-rw-r--r--share/gdb/python/gdb/command/pretty_printers.py2
-rw-r--r--share/gdb/python/gdb/command/prompt.py2
-rw-r--r--share/gdb/python/gdb/command/type_printers.py2
-rw-r--r--share/gdb/python/gdb/frames.py228
-rw-r--r--share/gdb/python/gdb/function/__init__.py2
-rw-r--r--share/gdb/python/gdb/function/strfns.py2
-rw-r--r--share/gdb/python/gdb/printing.py2
-rw-r--r--share/gdb/python/gdb/prompt.py2
-rw-r--r--share/gdb/python/gdb/types.py2
-rw-r--r--share/gdb/syscalls/amd64-linux.xml2
-rw-r--r--share/gdb/syscalls/arm-linux.xml398
-rw-r--r--share/gdb/syscalls/gdb-syscalls.dtd2
-rw-r--r--share/gdb/syscalls/i386-linux.xml2
-rw-r--r--share/gdb/syscalls/mips-n32-linux.xml2
-rw-r--r--share/gdb/syscalls/mips-n64-linux.xml2
-rw-r--r--share/gdb/syscalls/mips-o32-linux.xml2
-rw-r--r--share/gdb/syscalls/ppc-linux.xml2
-rw-r--r--share/gdb/syscalls/ppc64-linux.xml2
-rw-r--r--share/gdb/syscalls/sparc-linux.xml2
-rw-r--r--share/gdb/syscalls/sparc64-linux.xml2
-rw-r--r--share/gdb/system-gdbinit/elinos.py91
-rw-r--r--share/gdb/system-gdbinit/wrs-linux.py25
106 files changed, 1684 insertions, 22 deletions
diff --git a/SOURCES b/SOURCES
new file mode 100644
index 0000000..2d9b19e
--- /dev/null
+++ b/SOURCES
@@ -0,0 +1,53 @@
+Using built-in specs.
+COLLECT_GCC=bin/arm-linux-androideabi-gcc
+COLLECT_LTO_WRAPPER=/usr/local/google/home/xur/work/AOSP_CP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/../libexec/gcc/arm-linux-androideabi/4.9.x-google/lto-wrapper
+Target: arm-linux-androideabi
+Configured with: /tmp/AOSP-toolchain/build/../gcc/gcc-4.9/configure --prefix=/tmp/ndk-xur/build/toolchain/prefix --target=arm-linux-androideabi --host=x86_64-linux-gnu --build=x86_64-linux-gnu --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/tmp/ndk-xur/build/toolchain/temp-install --with-mpfr=/tmp/ndk-xur/build/toolchain/temp-install --with-mpc=/tmp/ndk-xur/build/toolchain/temp-install --with-cloog=/tmp/ndk-xur/build/toolchain/temp-install --with-isl=/tmp/ndk-xur/build/toolchain/temp-install --with-ppl=/tmp/ndk-xur/build/toolchain/temp-install --disable-ppl-version-check --disable-cloog-version-check --disable-isl-version-check --enable-cloog-backend=isl --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --disable-tls --disable-libitm --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --enable-initfini-array --disable-nls --prefix=/tmp/ndk-xur/build/toolchain/prefix --with-sysroot=/tmp/ndk-xur/build/toolchain/prefix/sysroot --with-binutils-version=2.24 --with-mpfr-version=3.1.1 --with-mpc-version=1.0.1 --with-gmp-version=5.0.5 --with-gcc-version=4.9 --with-gdb-version=7.7 --with-gxx-include-dir=/tmp/ndk-xur/build/toolchain/prefix/include/c++/4.9 --with-bugurl=http://source.android.com/source/report-bugs.html --disable-bootstrap --disable-libquadmath --enable-plugins --enable-libgomp --disable-libsanitizer --enable-gold --enable-graphite=yes --with-cloog-version=0.18.0 --with-isl-version=0.11.1 --enable-eh-frame-hdr-for-static --with-arch=armv5te --program-transform-name='s&^&arm-linux-androideabi-&' --enable-gold=default
+Thread model: posix
+gcc version 4.9.x-google 20140827 (prerelease) (GCC)
+
+gcc:
+commit ba21122c63b06a70b620c8990c517b87198ad05b
+Author: Rong Xu <xur@google.com>
+
+ [4.9] Restore recog state after finding pre-madd instruction.
+ This patch backports svn r216853 from upsteam gcc-4.9 branch that
+ fixed a bug introduced in fixing cortex a53 erratum 835769.
+
+binutils:
+commit c8e1636493f7d40bb0ba37501e9a6f67cd062a31
+Author: Rong Xu <xur@google.com>
+
+ [2.24] Cortex-A53 erratum 835769 linker workaround
+
+gdb:
+commit 4d4fc852868e03aa125d19ec0ad7e7fbc157c81c
+Merge: 500f3b2 668248d
+Author: Andrew Hsieh <andrewhsieh@google.com>
+
+ Merge "Add MIPS R6 support."
+
+gmp:
+commit e6b9669dafc6a5f83c80b4b4176359b78bccdc90
+Author: David 'Digit' Turner <digit@google.com>
+
+ Add gmp-5.0.5.tar.bz2
+
+mpfr:
+commit bfcf1bfa38469208aaad8873cd4c68781061d90f
+Author: Andrew Hsieh <andrewhsieh@google.com>
+
+ add mpfr-3.1.1.tar.bz2
+
+build:
+commit 75542e77b565c2af968e48c1b12b32f343d913ae
+Author: Andrew Hsieh <andrewhsieh@google.com>
+
+ Fix binutils-2.24 detection
+
+expat:
+commit 40172a0ae9d40a068f1e1a48ffcf6a1ccf765ed5
+Author: Jing Yu <jingyu@google.com>
+
+ expat package for building gdb-7.3
+
diff --git a/arm-linux-androideabi/lib/armv7-a/hard/libatomic.a b/arm-linux-androideabi/lib/armv7-a/hard/libatomic.a
index 1d38efe..b4b53ed 100644
--- a/arm-linux-androideabi/lib/armv7-a/hard/libatomic.a
+++ b/arm-linux-androideabi/lib/armv7-a/hard/libatomic.a
Binary files differ
diff --git a/arm-linux-androideabi/lib/armv7-a/hard/libgomp.a b/arm-linux-androideabi/lib/armv7-a/hard/libgomp.a
index 3978f63..7f28153 100644
--- a/arm-linux-androideabi/lib/armv7-a/hard/libgomp.a
+++ b/arm-linux-androideabi/lib/armv7-a/hard/libgomp.a
Binary files differ
diff --git a/arm-linux-androideabi/lib/armv7-a/libatomic.a b/arm-linux-androideabi/lib/armv7-a/libatomic.a
index cff305d..29501b5 100644
--- a/arm-linux-androideabi/lib/armv7-a/libatomic.a
+++ b/arm-linux-androideabi/lib/armv7-a/libatomic.a
Binary files differ
diff --git a/arm-linux-androideabi/lib/armv7-a/libgomp.a b/arm-linux-androideabi/lib/armv7-a/libgomp.a
index 449462a..9c4bf52 100644
--- a/arm-linux-androideabi/lib/armv7-a/libgomp.a
+++ b/arm-linux-androideabi/lib/armv7-a/libgomp.a
Binary files differ
diff --git a/arm-linux-androideabi/lib/armv7-a/thumb/hard/libatomic.a b/arm-linux-androideabi/lib/armv7-a/thumb/hard/libatomic.a
index eba8869..2d7ff4e 100644
--- a/arm-linux-androideabi/lib/armv7-a/thumb/hard/libatomic.a
+++ b/arm-linux-androideabi/lib/armv7-a/thumb/hard/libatomic.a
Binary files differ
diff --git a/arm-linux-androideabi/lib/armv7-a/thumb/hard/libgomp.a b/arm-linux-androideabi/lib/armv7-a/thumb/hard/libgomp.a
index 6dbab06..b2cea0d 100644
--- a/arm-linux-androideabi/lib/armv7-a/thumb/hard/libgomp.a
+++ b/arm-linux-androideabi/lib/armv7-a/thumb/hard/libgomp.a
Binary files differ
diff --git a/arm-linux-androideabi/lib/armv7-a/thumb/libatomic.a b/arm-linux-androideabi/lib/armv7-a/thumb/libatomic.a
index f4eae27..bc95f9f 100644
--- a/arm-linux-androideabi/lib/armv7-a/thumb/libatomic.a
+++ b/arm-linux-androideabi/lib/armv7-a/thumb/libatomic.a
Binary files differ
diff --git a/arm-linux-androideabi/lib/armv7-a/thumb/libgomp.a b/arm-linux-androideabi/lib/armv7-a/thumb/libgomp.a
index efc2811..ae5d239 100644
--- a/arm-linux-androideabi/lib/armv7-a/thumb/libgomp.a
+++ b/arm-linux-androideabi/lib/armv7-a/thumb/libgomp.a
Binary files differ
diff --git a/arm-linux-androideabi/lib/libatomic.a b/arm-linux-androideabi/lib/libatomic.a
index d4a7e40..dcc5a9d 100644
--- a/arm-linux-androideabi/lib/libatomic.a
+++ b/arm-linux-androideabi/lib/libatomic.a
Binary files differ
diff --git a/arm-linux-androideabi/lib/libgomp.a b/arm-linux-androideabi/lib/libgomp.a
index fb61f19..ad79628 100644
--- a/arm-linux-androideabi/lib/libgomp.a
+++ b/arm-linux-androideabi/lib/libgomp.a
Binary files differ
diff --git a/arm-linux-androideabi/lib/thumb/libatomic.a b/arm-linux-androideabi/lib/thumb/libatomic.a
index a65d96c..d3341a8 100644
--- a/arm-linux-androideabi/lib/thumb/libatomic.a
+++ b/arm-linux-androideabi/lib/thumb/libatomic.a
Binary files differ
diff --git a/arm-linux-androideabi/lib/thumb/libgomp.a b/arm-linux-androideabi/lib/thumb/libgomp.a
index 0f43f02..0b56e5a 100644
--- a/arm-linux-androideabi/lib/thumb/libgomp.a
+++ b/arm-linux-androideabi/lib/thumb/libgomp.a
Binary files differ
diff --git a/bin/arm-linux-androideabi-addr2line b/bin/arm-linux-androideabi-addr2line
index e10ac55..cfb2a4c 100755
--- a/bin/arm-linux-androideabi-addr2line
+++ b/bin/arm-linux-androideabi-addr2line
Binary files differ
diff --git a/bin/arm-linux-androideabi-ar b/bin/arm-linux-androideabi-ar
index f63d4a9..b3f8eae 100755
--- a/bin/arm-linux-androideabi-ar
+++ b/bin/arm-linux-androideabi-ar
Binary files differ
diff --git a/bin/arm-linux-androideabi-as b/bin/arm-linux-androideabi-as
index 55a80f4..069f232 100755
--- a/bin/arm-linux-androideabi-as
+++ b/bin/arm-linux-androideabi-as
Binary files differ
diff --git a/bin/arm-linux-androideabi-c++filt b/bin/arm-linux-androideabi-c++filt
index e335886..2b27e73 100755
--- a/bin/arm-linux-androideabi-c++filt
+++ b/bin/arm-linux-androideabi-c++filt
Binary files differ
diff --git a/bin/arm-linux-androideabi-cpp b/bin/arm-linux-androideabi-cpp
index c4649af..9977df9 100755
--- a/bin/arm-linux-androideabi-cpp
+++ b/bin/arm-linux-androideabi-cpp
Binary files differ
diff --git a/bin/arm-linux-androideabi-dwp b/bin/arm-linux-androideabi-dwp
index 00343b3..d1b4cd5 100755
--- a/bin/arm-linux-androideabi-dwp
+++ b/bin/arm-linux-androideabi-dwp
Binary files differ
diff --git a/bin/arm-linux-androideabi-elfedit b/bin/arm-linux-androideabi-elfedit
index 8eedeab..349664b 100755
--- a/bin/arm-linux-androideabi-elfedit
+++ b/bin/arm-linux-androideabi-elfedit
Binary files differ
diff --git a/bin/arm-linux-androideabi-g++ b/bin/arm-linux-androideabi-g++
index 4234417..7665326 100755
--- a/bin/arm-linux-androideabi-g++
+++ b/bin/arm-linux-androideabi-g++
Binary files differ
diff --git a/bin/arm-linux-androideabi-gcc b/bin/arm-linux-androideabi-gcc
index c97bf9f..cefef43 100755
--- a/bin/arm-linux-androideabi-gcc
+++ b/bin/arm-linux-androideabi-gcc
Binary files differ
diff --git a/bin/arm-linux-androideabi-gcc-4.9.x-google b/bin/arm-linux-androideabi-gcc-4.9.x-google
index c97bf9f..cefef43 100755
--- a/bin/arm-linux-androideabi-gcc-4.9.x-google
+++ b/bin/arm-linux-androideabi-gcc-4.9.x-google
Binary files differ
diff --git a/bin/arm-linux-androideabi-gcov b/bin/arm-linux-androideabi-gcov
index 0dfd176..2cad5fd 100755
--- a/bin/arm-linux-androideabi-gcov
+++ b/bin/arm-linux-androideabi-gcov
Binary files differ
diff --git a/bin/arm-linux-androideabi-gcov-tool b/bin/arm-linux-androideabi-gcov-tool
index 862a03d..f0da92f 100755
--- a/bin/arm-linux-androideabi-gcov-tool
+++ b/bin/arm-linux-androideabi-gcov-tool
Binary files differ
diff --git a/bin/arm-linux-androideabi-gdb b/bin/arm-linux-androideabi-gdb
index 451e0f8..c8b2021 100755
--- a/bin/arm-linux-androideabi-gdb
+++ b/bin/arm-linux-androideabi-gdb
Binary files differ
diff --git a/bin/arm-linux-androideabi-gprof b/bin/arm-linux-androideabi-gprof
index 71b04d0..09d5651 100755
--- a/bin/arm-linux-androideabi-gprof
+++ b/bin/arm-linux-androideabi-gprof
Binary files differ
diff --git a/bin/arm-linux-androideabi-ld.bfd b/bin/arm-linux-androideabi-ld.bfd
index 9b0ca49..5697ffb 100755
--- a/bin/arm-linux-androideabi-ld.bfd
+++ b/bin/arm-linux-androideabi-ld.bfd
Binary files differ
diff --git a/bin/arm-linux-androideabi-ld.gold b/bin/arm-linux-androideabi-ld.gold
index b475f1f..5cf5a72 100755
--- a/bin/arm-linux-androideabi-ld.gold
+++ b/bin/arm-linux-androideabi-ld.gold
Binary files differ
diff --git a/bin/arm-linux-androideabi-nm b/bin/arm-linux-androideabi-nm
index 74efd8e..a838196 100755
--- a/bin/arm-linux-androideabi-nm
+++ b/bin/arm-linux-androideabi-nm
Binary files differ
diff --git a/bin/arm-linux-androideabi-objcopy b/bin/arm-linux-androideabi-objcopy
index 7ceec7e..5f01a62 100755
--- a/bin/arm-linux-androideabi-objcopy
+++ b/bin/arm-linux-androideabi-objcopy
Binary files differ
diff --git a/bin/arm-linux-androideabi-objdump b/bin/arm-linux-androideabi-objdump
index 9ebbbec..81561c8 100755
--- a/bin/arm-linux-androideabi-objdump
+++ b/bin/arm-linux-androideabi-objdump
Binary files differ
diff --git a/bin/arm-linux-androideabi-ranlib b/bin/arm-linux-androideabi-ranlib
index e6ad4cc..4d9cd3b 100755
--- a/bin/arm-linux-androideabi-ranlib
+++ b/bin/arm-linux-androideabi-ranlib
Binary files differ
diff --git a/bin/arm-linux-androideabi-readelf b/bin/arm-linux-androideabi-readelf
index 968f52a..33f8662 100755
--- a/bin/arm-linux-androideabi-readelf
+++ b/bin/arm-linux-androideabi-readelf
Binary files differ
diff --git a/bin/arm-linux-androideabi-size b/bin/arm-linux-androideabi-size
index 2eddf00..fb17ff6 100755
--- a/bin/arm-linux-androideabi-size
+++ b/bin/arm-linux-androideabi-size
Binary files differ
diff --git a/bin/arm-linux-androideabi-strings b/bin/arm-linux-androideabi-strings
index 7be47c6..2258d17 100755
--- a/bin/arm-linux-androideabi-strings
+++ b/bin/arm-linux-androideabi-strings
Binary files differ
diff --git a/bin/arm-linux-androideabi-strip b/bin/arm-linux-androideabi-strip
index cbb9fea..a0277b2 100755
--- a/bin/arm-linux-androideabi-strip
+++ b/bin/arm-linux-androideabi-strip
Binary files differ
diff --git a/include/gdb/jit-reader.h b/include/gdb/jit-reader.h
index 7cff81a..e9599a2 100644
--- a/include/gdb/jit-reader.h
+++ b/include/gdb/jit-reader.h
@@ -1,6 +1,6 @@
/* JIT declarations for GDB, the GNU Debugger.
- Copyright (C) 2011-2013 Free Software Foundation, Inc.
+ Copyright (C) 2011-2014 Free Software Foundation, Inc.
This file is part of GDB.
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbegin.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbegin.o
index 3a122ac..c96be3c 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbegin.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbegin.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbeginS.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbeginS.o
index 285a463..1bd23a7 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbeginS.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbeginS.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbeginT.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbeginT.o
index 3a122ac..c96be3c 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbeginT.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/crtbeginT.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbegin.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbegin.o
index 0157718..f116956 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbegin.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbegin.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbeginS.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbeginS.o
index 6bbdcfb..337ed54 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbeginS.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbeginS.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbeginT.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbeginT.o
index 0157718..f116956 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbeginT.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/crtbeginT.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/libgcc.a b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/libgcc.a
index c430f1e..c971dbb 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/libgcc.a
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/libgcc.a
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/libgcov.a b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/libgcov.a
index 3bf4e16..92885c6 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/libgcov.a
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/hard/libgcov.a
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/libgcc.a b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/libgcc.a
index 9f5b644..d5263e0 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/libgcc.a
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/libgcc.a
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/libgcov.a b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/libgcov.a
index 9f08a52..b54d58c 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/libgcov.a
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/libgcov.a
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbegin.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbegin.o
index 7b721f3..e5e2b70 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbegin.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbegin.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbeginS.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbeginS.o
index a2edda6..489bfe1 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbeginS.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbeginS.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbeginT.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbeginT.o
index 7b721f3..e5e2b70 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbeginT.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/crtbeginT.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbegin.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbegin.o
index 85e43a2..6ab4767 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbegin.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbegin.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbeginS.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbeginS.o
index c7e3fba..fb007e5 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbeginS.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbeginS.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbeginT.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbeginT.o
index 85e43a2..6ab4767 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbeginT.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/crtbeginT.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/libgcc.a b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/libgcc.a
index 1200890..e402797 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/libgcc.a
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/libgcc.a
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/libgcov.a b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/libgcov.a
index 9353146..0aa0063 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/libgcov.a
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/hard/libgcov.a
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/libgcc.a b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/libgcc.a
index c897efc..995839f 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/libgcc.a
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/libgcc.a
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/libgcov.a b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/libgcov.a
index 55e7cea..7740325 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/libgcov.a
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/armv7-a/thumb/libgcov.a
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/crtbegin.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/crtbegin.o
index 70e314f..ae3cdaf 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/crtbegin.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/crtbegin.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/crtbeginS.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/crtbeginS.o
index adceac9..30f2354 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/crtbeginS.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/crtbeginS.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/crtbeginT.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/crtbeginT.o
index 70e314f..ae3cdaf 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/crtbeginT.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/crtbeginT.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/libgcc.a b/lib/gcc/arm-linux-androideabi/4.9.x-google/libgcc.a
index 1d48aef..465615b 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/libgcc.a
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/libgcc.a
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/libgcov.a b/lib/gcc/arm-linux-androideabi/4.9.x-google/libgcov.a
index 6753695..f9893a7 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/libgcov.a
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/libgcov.a
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbegin.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbegin.o
index 7e34f33..25c4630 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbegin.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbegin.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbeginS.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbeginS.o
index 15c6854..a8ac9f9 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbeginS.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbeginS.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbeginT.o b/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbeginT.o
index 7e34f33..25c4630 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbeginT.o
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/crtbeginT.o
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/libgcc.a b/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/libgcc.a
index 3e14f32..e09414e 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/libgcc.a
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/libgcc.a
Binary files differ
diff --git a/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/libgcov.a b/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/libgcov.a
index 908719a..0ddf64e 100644
--- a/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/libgcov.a
+++ b/lib/gcc/arm-linux-androideabi/4.9.x-google/thumb/libgcov.a
Binary files differ
diff --git a/lib/libarm-linux-android-sim.a b/lib/libarm-linux-android-sim.a
index 6eb2635..e004616 100644
--- a/lib/libarm-linux-android-sim.a
+++ b/lib/libarm-linux-android-sim.a
Binary files differ
diff --git a/libexec/gcc/arm-linux-androideabi/4.9.x-google/cc1 b/libexec/gcc/arm-linux-androideabi/4.9.x-google/cc1
index d858335..1cd364a 100755
--- a/libexec/gcc/arm-linux-androideabi/4.9.x-google/cc1
+++ b/libexec/gcc/arm-linux-androideabi/4.9.x-google/cc1
Binary files differ
diff --git a/libexec/gcc/arm-linux-androideabi/4.9.x-google/cc1plus b/libexec/gcc/arm-linux-androideabi/4.9.x-google/cc1plus
index 9128fa4..5cb7b10 100755
--- a/libexec/gcc/arm-linux-androideabi/4.9.x-google/cc1plus
+++ b/libexec/gcc/arm-linux-androideabi/4.9.x-google/cc1plus
Binary files differ
diff --git a/libexec/gcc/arm-linux-androideabi/4.9.x-google/collect2 b/libexec/gcc/arm-linux-androideabi/4.9.x-google/collect2
index f0d007d..f7ec966 100755
--- a/libexec/gcc/arm-linux-androideabi/4.9.x-google/collect2
+++ b/libexec/gcc/arm-linux-androideabi/4.9.x-google/collect2
Binary files differ
diff --git a/libexec/gcc/arm-linux-androideabi/4.9.x-google/libfunction_reordering_plugin.so.0.0.0 b/libexec/gcc/arm-linux-androideabi/4.9.x-google/libfunction_reordering_plugin.so.0.0.0
index 1f2391a..b518b9f 100755
--- a/libexec/gcc/arm-linux-androideabi/4.9.x-google/libfunction_reordering_plugin.so.0.0.0
+++ b/libexec/gcc/arm-linux-androideabi/4.9.x-google/libfunction_reordering_plugin.so.0.0.0
Binary files differ
diff --git a/libexec/gcc/arm-linux-androideabi/4.9.x-google/liblto_plugin.so.0.0.0 b/libexec/gcc/arm-linux-androideabi/4.9.x-google/liblto_plugin.so.0.0.0
index 20b5cfa..6143c15 100755
--- a/libexec/gcc/arm-linux-androideabi/4.9.x-google/liblto_plugin.so.0.0.0
+++ b/libexec/gcc/arm-linux-androideabi/4.9.x-google/liblto_plugin.so.0.0.0
Binary files differ
diff --git a/libexec/gcc/arm-linux-androideabi/4.9.x-google/lto-wrapper b/libexec/gcc/arm-linux-androideabi/4.9.x-google/lto-wrapper
index fa53c66..cc29c4c 100755
--- a/libexec/gcc/arm-linux-androideabi/4.9.x-google/lto-wrapper
+++ b/libexec/gcc/arm-linux-androideabi/4.9.x-google/lto-wrapper
Binary files differ
diff --git a/libexec/gcc/arm-linux-androideabi/4.9.x-google/lto1 b/libexec/gcc/arm-linux-androideabi/4.9.x-google/lto1
index 13740ea..b2060e5 100755
--- a/libexec/gcc/arm-linux-androideabi/4.9.x-google/lto1
+++ b/libexec/gcc/arm-linux-androideabi/4.9.x-google/lto1
Binary files differ
diff --git a/libexec/gcc/arm-linux-androideabi/4.9.x-google/plugin/gengtype b/libexec/gcc/arm-linux-androideabi/4.9.x-google/plugin/gengtype
index 5b20dc9..6e5352a 100755
--- a/libexec/gcc/arm-linux-androideabi/4.9.x-google/plugin/gengtype
+++ b/libexec/gcc/arm-linux-androideabi/4.9.x-google/plugin/gengtype
Binary files differ
diff --git a/share/gdb/python/gdb/FrameDecorator.py b/share/gdb/python/gdb/FrameDecorator.py
new file mode 100644
index 0000000..1bbc5ab
--- /dev/null
+++ b/share/gdb/python/gdb/FrameDecorator.py
@@ -0,0 +1,302 @@
+# Copyright (C) 2013-2014 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 gdb
+
+# This small code snippet deals with problem of strings in Python 2.x
+# and Python 3.x. Python 2.x has str and unicode classes which are
+# sub-classes of basestring. In Python 3.x all strings are encoded
+# and basestring has been removed.
+try:
+ basestring
+except NameError:
+ basestring = str
+
+class FrameDecorator(object):
+ """Basic implementation of a Frame Decorator"""
+
+ """ This base frame decorator decorates a frame or another frame
+ decorator, and provides convenience methods. If this object is
+ wrapping a frame decorator, defer to that wrapped object's method
+ if it has one. This allows for frame decorators that have
+ sub-classed FrameDecorator object, but also wrap other frame
+ decorators on the same frame to correctly execute.
+
+ E.g
+
+ If the result of frame filters running means we have one gdb.Frame
+ wrapped by multiple frame decorators, all sub-classed from
+ FrameDecorator, the resulting hierarchy will be:
+
+ Decorator1
+ -- (wraps) Decorator2
+ -- (wraps) FrameDecorator
+ -- (wraps) gdb.Frame
+
+ In this case we have two frame decorators, both of which are
+ sub-classed from FrameDecorator. If Decorator1 just overrides the
+ 'function' method, then all of the other methods are carried out
+ by the super-class FrameDecorator. But Decorator2 may have
+ overriden other methods, so FrameDecorator will look at the
+ 'base' parameter and defer to that class's methods. And so on,
+ down the chain."""
+
+ # 'base' can refer to a gdb.Frame or another frame decorator. In
+ # the latter case, the child class will have called the super
+ # method and _base will be an object conforming to the Frame Filter
+ # class.
+ def __init__(self, base):
+ self._base = base
+
+ @staticmethod
+ def _is_limited_frame(frame):
+ """Internal utility to determine if the frame is special or
+ limited."""
+ sal = frame.find_sal()
+
+ if (not sal.symtab or not sal.symtab.filename
+ or frame.type() == gdb.DUMMY_FRAME
+ or frame.type() == gdb.SIGTRAMP_FRAME):
+
+ return True
+
+ return False
+
+ def elided(self):
+ """Return any elided frames that this class might be
+ wrapping, or None."""
+ if hasattr(self._base, "elided"):
+ return self._base.elided()
+
+ return None
+
+ def function(self):
+ """ Return the name of the frame's function or an address of
+ the function of the frame. First determine if this is a
+ special frame. If not, try to determine filename from GDB's
+ frame internal function API. Finally, if a name cannot be
+ determined return the address. If this function returns an
+ address, GDB will attempt to determine the function name from
+ its internal minimal symbols store (for example, for inferiors
+ without debug-info)."""
+
+ # Both gdb.Frame, and FrameDecorator have a method called
+ # "function", so determine which object this is.
+ if not isinstance(self._base, gdb.Frame):
+ if hasattr(self._base, "function"):
+ # If it is not a gdb.Frame, and there is already a
+ # "function" method, use that.
+ return self._base.function()
+
+ frame = self.inferior_frame()
+
+ if frame.type() == gdb.DUMMY_FRAME:
+ return "<function called from gdb>"
+ elif frame.type() == gdb.SIGTRAMP_FRAME:
+ return "<signal handler called>"
+
+ func = frame.function()
+
+ # If we cannot determine the function name, return the
+ # address. If GDB detects an integer value from this function
+ # it will attempt to find the function name from minimal
+ # symbols via its own internal functions.
+ if func == None:
+ pc = frame.pc()
+ return pc
+
+ return str(func)
+
+ def address(self):
+ """ Return the address of the frame's pc"""
+
+ if hasattr(self._base, "address"):
+ return self._base.address()
+
+ frame = self.inferior_frame()
+ return frame.pc()
+
+ def filename(self):
+ """ Return the filename associated with this frame, detecting
+ and returning the appropriate library name is this is a shared
+ library."""
+
+ if hasattr(self._base, "filename"):
+ return self._base.filename()
+
+ frame = self.inferior_frame()
+ sal = frame.find_sal()
+ if not sal.symtab or not sal.symtab.filename:
+ pc = frame.pc()
+ return gdb.solib_name(pc)
+ else:
+ return sal.symtab.filename
+
+ def frame_args(self):
+ """ Return an iterable of frame arguments for this frame, if
+ any. The iterable object contains objects conforming with the
+ Symbol/Value interface. If there are no frame arguments, or
+ if this frame is deemed to be a special case, return None."""
+
+ if hasattr(self._base, "frame_args"):
+ return self._base.frame_args()
+
+ frame = self.inferior_frame()
+ if self._is_limited_frame(frame):
+ return None
+
+ args = FrameVars(frame)
+ return args.fetch_frame_args()
+
+ def frame_locals(self):
+ """ Return an iterable of local variables for this frame, if
+ any. The iterable object contains objects conforming with the
+ Symbol/Value interface. If there are no frame locals, or if
+ this frame is deemed to be a special case, return None."""
+
+ if hasattr(self._base, "frame_locals"):
+ return self._base.frame_locals()
+
+ frame = self.inferior_frame()
+ if self._is_limited_frame(frame):
+ return None
+
+ args = FrameVars(frame)
+ return args.fetch_frame_locals()
+
+ def line(self):
+ """ Return line number information associated with the frame's
+ pc. If symbol table/line information does not exist, or if
+ this frame is deemed to be a special case, return None"""
+
+ if hasattr(self._base, "line"):
+ return self._base.line()
+
+ frame = self.inferior_frame()
+ if self._is_limited_frame(frame):
+ return None
+
+ sal = frame.find_sal()
+ if (sal):
+ return sal.line
+ else:
+ return None
+
+ def inferior_frame(self):
+ """ Return the gdb.Frame underpinning this frame decorator."""
+
+ # If 'base' is a frame decorator, we want to call its inferior
+ # frame method. If '_base' is a gdb.Frame, just return that.
+ if hasattr(self._base, "inferior_frame"):
+ return self._base.inferior_frame()
+ return self._base
+
+class SymValueWrapper(object):
+ """A container class conforming to the Symbol/Value interface
+ which holds frame locals or frame arguments."""
+ def __init__(self, symbol, value):
+ self.sym = symbol
+ self.val = value
+
+ def value(self):
+ """ Return the value associated with this symbol, or None"""
+ return self.val
+
+ def symbol(self):
+ """ Return the symbol, or Python text, associated with this
+ symbol, or None"""
+ return self.sym
+
+class FrameVars(object):
+
+ """Utility class to fetch and store frame local variables, or
+ frame arguments."""
+
+ def __init__(self, frame):
+ self.frame = frame
+ self.symbol_class = {
+ gdb.SYMBOL_LOC_STATIC: True,
+ gdb.SYMBOL_LOC_REGISTER: True,
+ gdb.SYMBOL_LOC_ARG: True,
+ gdb.SYMBOL_LOC_REF_ARG: True,
+ gdb.SYMBOL_LOC_LOCAL: True,
+ gdb.SYMBOL_LOC_REGPARM_ADDR: True,
+ gdb.SYMBOL_LOC_COMPUTED: True
+ }
+
+ def fetch_b(self, sym):
+ """ Local utility method to determine if according to Symbol
+ type whether it should be included in the iterator. Not all
+ symbols are fetched, and only symbols that return
+ True from this method should be fetched."""
+
+ # SYM may be a string instead of a symbol in the case of
+ # synthetic local arguments or locals. If that is the case,
+ # always fetch.
+ if isinstance(sym, basestring):
+ return True
+
+ sym_type = sym.addr_class
+
+ return self.symbol_class.get(sym_type, False)
+
+ def fetch_frame_locals(self):
+ """Public utility method to fetch frame local variables for
+ the stored frame. Frame arguments are not fetched. If there
+ are no frame local variables, return an empty list."""
+ lvars = []
+
+ try:
+ block = self.frame.block()
+ except RuntimeError:
+ block = None
+
+ while block != None:
+ if block.is_global or block.is_static:
+ break
+ for sym in block:
+ if sym.is_argument:
+ continue;
+ if self.fetch_b(sym):
+ lvars.append(SymValueWrapper(sym, None))
+
+ block = block.superblock
+
+ return lvars
+
+ def fetch_frame_args(self):
+ """Public utility method to fetch frame arguments for the
+ stored frame. Frame arguments are the only type fetched. If
+ there are no frame argument variables, return an empty list."""
+
+ args = []
+
+ try:
+ block = self.frame.block()
+ except RuntimeError:
+ block = None
+
+ while block != None:
+ if block.function != None:
+ break
+ block = block.superblock
+
+ if block != None:
+ for sym in block:
+ if not sym.is_argument:
+ continue;
+ args.append(SymValueWrapper(sym, None))
+
+ return args
diff --git a/share/gdb/python/gdb/FrameIterator.py b/share/gdb/python/gdb/FrameIterator.py
new file mode 100644
index 0000000..c99a91e
--- /dev/null
+++ b/share/gdb/python/gdb/FrameIterator.py
@@ -0,0 +1,51 @@
+# Copyright (C) 2013-2014 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 gdb
+import itertools
+
+class FrameIterator(object):
+ """A gdb.Frame iterator. Iterates over gdb.Frames or objects that
+ conform to that interface."""
+
+ def __init__(self, frame_obj):
+ """Initialize a FrameIterator.
+
+ Arguments:
+ frame_obj the starting frame."""
+
+ super(FrameIterator, self).__init__()
+ self.frame = frame_obj
+
+ def __iter__(self):
+ return self
+
+ def next(self):
+ """next implementation.
+
+ Returns:
+ The next oldest frame."""
+
+ result = self.frame
+ if result is None:
+ raise StopIteration
+ self.frame = result.older()
+ return result
+
+ # Python 3.x requires __next__(self) while Python 2.x requires
+ # next(self). Define next(self), and for Python 3.x create this
+ # wrapper.
+ def __next__(self):
+ return self.next()
diff --git a/share/gdb/python/gdb/__init__.py b/share/gdb/python/gdb/__init__.py
index 6311583..95a76c2 100644
--- a/share/gdb/python/gdb/__init__.py
+++ b/share/gdb/python/gdb/__init__.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2013 Free Software Foundation, Inc.
+# Copyright (C) 2010-2014 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
@@ -67,6 +67,8 @@ pretty_printers = []
# Initial type printers.
type_printers = []
+# Initial frame filters.
+frame_filters = {}
# Convenience variable to GDB's python directory
PYTHONDIR = os.path.dirname(os.path.dirname(__file__))
diff --git a/share/gdb/python/gdb/command/__init__.py b/share/gdb/python/gdb/command/__init__.py
index 21eaef8..ca768c8 100644
--- a/share/gdb/python/gdb/command/__init__.py
+++ b/share/gdb/python/gdb/command/__init__.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2010-2013 Free Software Foundation, Inc.
+# Copyright (C) 2010-2014 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
diff --git a/share/gdb/python/gdb/command/bound_registers.py b/share/gdb/python/gdb/command/bound_registers.py
new file mode 100644
index 0000000..24d4c45
--- /dev/null
+++ b/share/gdb/python/gdb/command/bound_registers.py
@@ -0,0 +1,45 @@
+# Pretty-printer utilities.
+# Copyright (C) 2013-2014 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 gdb.printing
+
+class BoundPrinter:
+ """Adds size field to a _rawbound128 type."""
+
+ def __init__ (self, val):
+ self.val = val
+
+ def to_string (self):
+ upper = self.val["ubound"]
+ lower = self.val["lbound"]
+ size = (long) ((upper) - (lower))
+ if size > -1:
+ size = size + 1
+ result = '{lbound = %s, ubound = %s} : size %s' % (lower, upper, size)
+ return result
+
+# There are two pattern matching used: first one is related to a library
+# second is related to the type. Since we are displaying a register all
+# libraries are accepted. Type to be processed is the same present
+# in the xml file.
+
+def build_pretty_printer ():
+ pp = gdb.printing.RegexpCollectionPrettyPrinter (".*")
+ pp.add_printer ('bound', '^__gdb_builtin_type_bound128', BoundPrinter)
+ return pp
+
+gdb.printing.register_pretty_printer (gdb.current_objfile (),
+ build_pretty_printer ())
diff --git a/share/gdb/python/gdb/command/explore.py b/share/gdb/python/gdb/command/explore.py
index dd77875..fd79de3 100644
--- a/share/gdb/python/gdb/command/explore.py
+++ b/share/gdb/python/gdb/command/explore.py
@@ -1,5 +1,5 @@
# GDB 'explore' command.
-# Copyright (C) 2012-2013 Free Software Foundation, Inc.
+# Copyright (C) 2012-2014 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
diff --git a/share/gdb/python/gdb/command/frame_filters.py b/share/gdb/python/gdb/command/frame_filters.py
new file mode 100644
index 0000000..450c5bf
--- /dev/null
+++ b/share/gdb/python/gdb/command/frame_filters.py
@@ -0,0 +1,467 @@
+# Frame-filter commands.
+# Copyright (C) 2013-2014 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/>.
+
+"""GDB commands for working with frame-filters."""
+
+import sys
+import gdb
+import copy
+from gdb.FrameIterator import FrameIterator
+from gdb.FrameDecorator import FrameDecorator
+import gdb.frames
+import itertools
+
+# GDB Commands.
+class SetFilterPrefixCmd(gdb.Command):
+ """Prefix command for 'set' frame-filter related operations."""
+
+ def __init__(self):
+ super(SetFilterPrefixCmd, self).__init__("set frame-filter",
+ gdb.COMMAND_OBSCURE,
+ gdb.COMPLETE_NONE, True)
+
+class ShowFilterPrefixCmd(gdb.Command):
+ """Prefix command for 'show' frame-filter related operations."""
+ def __init__(self):
+ super(ShowFilterPrefixCmd, self).__init__("show frame-filter",
+ gdb.COMMAND_OBSCURE,
+ gdb.COMPLETE_NONE, True)
+class InfoFrameFilter(gdb.Command):
+ """List all registered Python frame-filters.
+
+ Usage: info frame-filters
+ """
+
+ def __init__(self):
+ super(InfoFrameFilter, self).__init__("info frame-filter",
+ gdb.COMMAND_DATA)
+ @staticmethod
+ def enabled_string(state):
+ """Return "Yes" if filter is enabled, otherwise "No"."""
+ if state:
+ return "Yes"
+ else:
+ return "No"
+
+ def list_frame_filters(self, frame_filters):
+ """ Internal worker function to list and print frame filters
+ in a dictionary.
+
+ Arguments:
+ frame_filters: The name of the dictionary, as
+ specified by GDB user commands.
+ """
+
+ sorted_frame_filters = sorted(frame_filters.items(),
+ key=lambda i: gdb.frames.get_priority(i[1]),
+ reverse=True)
+
+ if len(sorted_frame_filters) == 0:
+ print(" No frame filters registered.")
+ else:
+ print(" Priority Enabled Name")
+ for frame_filter in sorted_frame_filters:
+ name = frame_filter[0]
+ try:
+ priority = '{:<8}'.format(
+ str(gdb.frames.get_priority(frame_filter[1])))
+ enabled = '{:<7}'.format(
+ self.enabled_string(gdb.frames.get_enabled(frame_filter[1])))
+ except Exception:
+ e = sys.exc_info()[1]
+ print(" Error printing filter '"+name+"': "+str(e))
+ else:
+ print(" %s %s %s" % (priority, enabled, name))
+
+ def print_list(self, title, filter_list, blank_line):
+ print(title)
+ self.list_frame_filters(filter_list)
+ if blank_line:
+ print("")
+
+ def invoke(self, arg, from_tty):
+ self.print_list("global frame-filters:", gdb.frame_filters, True)
+
+ cp = gdb.current_progspace()
+ self.print_list("progspace %s frame-filters:" % cp.filename,
+ cp.frame_filters, True)
+
+ for objfile in gdb.objfiles():
+ self.print_list("objfile %s frame-filters:" % objfile.filename,
+ objfile.frame_filters, False)
+
+# Internal enable/disable functions.
+
+def _enable_parse_arg(cmd_name, arg):
+ """ Internal worker function to take an argument from
+ enable/disable and return a tuple of arguments.
+
+ Arguments:
+ cmd_name: Name of the command invoking this function.
+ args: The argument as a string.
+
+ Returns:
+ A tuple containing the dictionary, and the argument, or just
+ the dictionary in the case of "all".
+ """
+
+ argv = gdb.string_to_argv(arg);
+ argc = len(argv)
+ if argv[0] == "all" and argc > 1:
+ raise gdb.GdbError(cmd_name + ": with 'all' " \
+ "you may not specify a filter.")
+ else:
+ if argv[0] != "all" and argc != 2:
+ raise gdb.GdbError(cmd_name + " takes exactly two arguments.")
+
+ return argv
+
+def _do_enable_frame_filter(command_tuple, flag):
+ """Worker for enabling/disabling frame_filters.
+
+ Arguments:
+ command_type: A tuple with the first element being the
+ frame filter dictionary, and the second being
+ the frame filter name.
+ flag: True for Enable, False for Disable.
+ """
+
+ list_op = command_tuple[0]
+ op_list = gdb.frames.return_list(list_op)
+
+ if list_op == "all":
+ for item in op_list:
+ gdb.frames.set_enabled(item, flag)
+ else:
+ frame_filter = command_tuple[1]
+ try:
+ ff = op_list[frame_filter]
+ except KeyError:
+ msg = "frame-filter '" + str(name) + "' not found."
+ raise gdb.GdbError(msg)
+
+ gdb.frames.set_enabled(ff, flag)
+
+def _complete_frame_filter_list(text, word, all_flag):
+ """Worker for frame filter dictionary name completion.
+
+ Arguments:
+ text: The full text of the command line.
+ word: The most recent word of the command line.
+ all_flag: Whether to include the word "all" in completion.
+
+ Returns:
+ A list of suggested frame filter dictionary name completions
+ from text/word analysis. This list can be empty when there
+ are no suggestions for completion.
+ """
+ if all_flag == True:
+ filter_locations = ["all", "global", "progspace"]
+ else:
+ filter_locations = ["global", "progspace"]
+ for objfile in gdb.objfiles():
+ filter_locations.append(objfile.filename)
+
+ # If the user just asked for completions with no completion
+ # hints, just return all the frame filter dictionaries we know
+ # about.
+ if (text == ""):
+ return filter_locations
+
+ # Otherwise filter on what we know.
+ flist = filter(lambda x,y=text:x.startswith(y), filter_locations)
+
+ # If we only have one completion, complete it and return it.
+ if len(flist) == 1:
+ flist[0] = flist[0][len(text)-len(word):]
+
+ # Otherwise, return an empty list, or a list of frame filter
+ # dictionaries that the previous filter operation returned.
+ return flist
+
+def _complete_frame_filter_name(word, printer_dict):
+ """Worker for frame filter name completion.
+
+ Arguments:
+
+ word: The most recent word of the command line.
+
+ printer_dict: The frame filter dictionary to search for frame
+ filter name completions.
+
+ Returns: A list of suggested frame filter name completions
+ from word analysis of the frame filter dictionary. This list
+ can be empty when there are no suggestions for completion.
+ """
+
+ printer_keys = printer_dict.keys()
+ if (word == ""):
+ return printer_keys
+
+ flist = filter(lambda x,y=word:x.startswith(y), printer_keys)
+ return flist
+
+class EnableFrameFilter(gdb.Command):
+ """GDB command to disable the specified frame-filter.
+
+ Usage: enable frame-filter enable DICTIONARY [NAME]
+
+ DICTIONARY is the name of the frame filter dictionary on which to
+ operate. If dictionary is set to "all", perform operations on all
+ dictionaries. Named dictionaries are: "global" for the global
+ frame filter dictionary, "progspace" for the program space's frame
+ filter dictionary. If either all, or the two named dictionaries
+ are not specified, the dictionary name is assumed to be the name
+ of the object-file name.
+
+ NAME matches the name of the frame-filter to operate on. If
+ DICTIONARY is "all", NAME is ignored.
+ """
+ def __init__(self):
+ super(EnableFrameFilter, self).__init__("enable frame-filter",
+ gdb.COMMAND_DATA)
+ def complete(self, text, word):
+ """Completion function for both frame filter dictionary, and
+ frame filter name."""
+ if text.count(" ") == 0:
+ return _complete_frame_filter_list(text, word, True)
+ else:
+ printer_list = gdb.frames.return_list(text.split()[0].rstrip())
+ return _complete_frame_filter_name(word, printer_list)
+
+ def invoke(self, arg, from_tty):
+ command_tuple = _enable_parse_arg("enable frame-filter", arg)
+ _do_enable_frame_filter(command_tuple, True)
+
+
+class DisableFrameFilter(gdb.Command):
+ """GDB command to disable the specified frame-filter.
+
+ Usage: disable frame-filter disable DICTIONARY [NAME]
+
+ DICTIONARY is the name of the frame filter dictionary on which to
+ operate. If dictionary is set to "all", perform operations on all
+ dictionaries. Named dictionaries are: "global" for the global
+ frame filter dictionary, "progspace" for the program space's frame
+ filter dictionary. If either all, or the two named dictionaries
+ are not specified, the dictionary name is assumed to be the name
+ of the object-file name.
+
+ NAME matches the name of the frame-filter to operate on. If
+ DICTIONARY is "all", NAME is ignored.
+ """
+ def __init__(self):
+ super(DisableFrameFilter, self).__init__("disable frame-filter",
+ gdb.COMMAND_DATA)
+
+ def complete(self, text, word):
+ """Completion function for both frame filter dictionary, and
+ frame filter name."""
+ if text.count(" ") == 0:
+ return _complete_frame_filter_list(text, word, True)
+ else:
+ printer_list = gdb.frames.return_list(text.split()[0].rstrip())
+ return _complete_frame_filter_name(word, printer_list)
+
+ def invoke(self, arg, from_tty):
+ command_tuple = _enable_parse_arg("disable frame-filter", arg)
+ _do_enable_frame_filter(command_tuple, False)
+
+class SetFrameFilterPriority(gdb.Command):
+ """GDB command to set the priority of the specified frame-filter.
+
+ Usage: set frame-filter priority DICTIONARY NAME PRIORITY
+
+ DICTIONARY is the name of the frame filter dictionary on which to
+ operate. Named dictionaries are: "global" for the global frame
+ filter dictionary, "progspace" for the program space's framefilter
+ dictionary. If either of these two are not specified, the
+ dictionary name is assumed to be the name of the object-file name.
+
+ NAME matches the name of the frame filter to operate on.
+
+ PRIORITY is the an integer to assign the new priority to the frame
+ filter.
+ """
+
+ def __init__(self):
+ super(SetFrameFilterPriority, self).__init__("set frame-filter " \
+ "priority",
+ gdb.COMMAND_DATA)
+
+ def _parse_pri_arg(self, arg):
+ """Internal worker to parse a priority from a tuple.
+
+ Arguments:
+ arg: Tuple which contains the arguments from the command.
+
+ Returns:
+ A tuple containing the dictionary, name and priority from
+ the arguments.
+
+ Raises:
+ gdb.GdbError: An error parsing the arguments.
+ """
+
+ argv = gdb.string_to_argv(arg);
+ argc = len(argv)
+ if argc != 3:
+ print("set frame-filter priority " \
+ "takes exactly three arguments.")
+ return None
+
+ return argv
+
+ def _set_filter_priority(self, command_tuple):
+ """Internal worker for setting priority of frame-filters, by
+ parsing a tuple and calling _set_priority with the parsed
+ tuple.
+
+ Arguments:
+ command_tuple: Tuple which contains the arguments from the
+ command.
+ """
+
+ list_op = command_tuple[0]
+ frame_filter = command_tuple[1]
+
+ # GDB returns arguments as a string, so convert priority to
+ # a number.
+ priority = int(command_tuple[2])
+
+ op_list = gdb.frames.return_list(list_op)
+
+ try:
+ ff = op_list[frame_filter]
+ except KeyError:
+ msg = "frame-filter '" + str(name) + "' not found."
+ raise gdb.GdbError(msg)
+
+ gdb.frames.set_priority(ff, priority)
+
+ def complete(self, text, word):
+ """Completion function for both frame filter dictionary, and
+ frame filter name."""
+ if text.count(" ") == 0:
+ return _complete_frame_filter_list(text, word, False)
+ else:
+ printer_list = gdb.frames.return_list(text.split()[0].rstrip())
+ return _complete_frame_filter_name(word, printer_list)
+
+ def invoke(self, arg, from_tty):
+ command_tuple = self._parse_pri_arg(arg)
+ if command_tuple != None:
+ self._set_filter_priority(command_tuple)
+
+class ShowFrameFilterPriority(gdb.Command):
+ """GDB command to show the priority of the specified frame-filter.
+
+ Usage: show frame-filter priority DICTIONARY NAME
+
+ DICTIONARY is the name of the frame filter dictionary on which to
+ operate. Named dictionaries are: "global" for the global frame
+ filter dictionary, "progspace" for the program space's framefilter
+ dictionary. If either of these two are not specified, the
+ dictionary name is assumed to be the name of the object-file name.
+
+ NAME matches the name of the frame-filter to operate on.
+ """
+
+ def __init__(self):
+ super(ShowFrameFilterPriority, self).__init__("show frame-filter " \
+ "priority",
+ gdb.COMMAND_DATA)
+
+ def _parse_pri_arg(self, arg):
+ """Internal worker to parse a dictionary and name from a
+ tuple.
+
+ Arguments:
+ arg: Tuple which contains the arguments from the command.
+
+ Returns:
+ A tuple containing the dictionary, and frame filter name.
+
+ Raises:
+ gdb.GdbError: An error parsing the arguments.
+ """
+
+ argv = gdb.string_to_argv(arg);
+ argc = len(argv)
+ if argc != 2:
+ print("show frame-filter priority " \
+ "takes exactly two arguments.")
+ return None
+
+ return argv
+
+ def get_filter_priority(self, frame_filters, name):
+ """Worker for retrieving the priority of frame_filters.
+
+ Arguments:
+ frame_filters: Name of frame filter dictionary.
+ name: object to select printers.
+
+ Returns:
+ The priority of the frame filter.
+
+ Raises:
+ gdb.GdbError: A frame filter cannot be found.
+ """
+
+ op_list = gdb.frames.return_list(frame_filters)
+
+ try:
+ ff = op_list[name]
+ except KeyError:
+ msg = "frame-filter '" + str(name) + "' not found."
+ raise gdb.GdbError(msg)
+
+ return gdb.frames.get_priority(ff)
+
+ def complete(self, text, word):
+ """Completion function for both frame filter dictionary, and
+ frame filter name."""
+
+ if text.count(" ") == 0:
+ return _complete_frame_filter_list(text, word, False)
+ else:
+ printer_list = frame._return_list(text.split()[0].rstrip())
+ return _complete_frame_filter_name(word, printer_list)
+
+ def invoke(self, arg, from_tty):
+ command_tuple = self._parse_pri_arg(arg)
+ if command_tuple == None:
+ return
+ filter_name = command_tuple[1]
+ list_name = command_tuple[0]
+ try:
+ priority = self.get_filter_priority(list_name, filter_name);
+ except Exception:
+ e = sys.exc_info()[1]
+ print("Error printing filter priority for '"+name+"':"+str(e))
+ else:
+ print("Priority of filter '" + filter_name + "' in list '" \
+ + list_name + "' is: " + str(priority))
+
+# Register commands
+SetFilterPrefixCmd()
+ShowFilterPrefixCmd()
+InfoFrameFilter()
+EnableFrameFilter()
+DisableFrameFilter()
+SetFrameFilterPriority()
+ShowFrameFilterPriority()
diff --git a/share/gdb/python/gdb/command/pretty_printers.py b/share/gdb/python/gdb/command/pretty_printers.py
index 7b03e3a..a9027b3 100644
--- a/share/gdb/python/gdb/command/pretty_printers.py
+++ b/share/gdb/python/gdb/command/pretty_printers.py
@@ -1,5 +1,5 @@
# Pretty-printer commands.
-# Copyright (C) 2010-2013 Free Software Foundation, Inc.
+# Copyright (C) 2010-2014 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
diff --git a/share/gdb/python/gdb/command/prompt.py b/share/gdb/python/gdb/command/prompt.py
index 394e40c..e7dc3da 100644
--- a/share/gdb/python/gdb/command/prompt.py
+++ b/share/gdb/python/gdb/command/prompt.py
@@ -1,5 +1,5 @@
# Extended prompt.
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+# Copyright (C) 2011-2014 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
diff --git a/share/gdb/python/gdb/command/type_printers.py b/share/gdb/python/gdb/command/type_printers.py
index 81f2ea1..9376be8 100644
--- a/share/gdb/python/gdb/command/type_printers.py
+++ b/share/gdb/python/gdb/command/type_printers.py
@@ -1,5 +1,5 @@
# Type printer commands.
-# Copyright (C) 2010-2013 Free Software Foundation, Inc.
+# Copyright (C) 2010-2014 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
diff --git a/share/gdb/python/gdb/frames.py b/share/gdb/python/gdb/frames.py
new file mode 100644
index 0000000..19172e7
--- /dev/null
+++ b/share/gdb/python/gdb/frames.py
@@ -0,0 +1,228 @@
+# Frame-filter commands.
+# Copyright (C) 2013-2014 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/>.
+
+"""Internal functions for working with frame-filters."""
+
+import gdb
+from gdb.FrameIterator import FrameIterator
+from gdb.FrameDecorator import FrameDecorator
+import itertools
+import collections
+
+def get_priority(filter_item):
+ """ Internal worker function to return the frame-filter's priority
+ from a frame filter object. This is a fail free function as it is
+ used in sorting and filtering. If a badly implemented frame
+ filter does not implement the priority attribute, return zero
+ (otherwise sorting/filtering will fail and prevent other frame
+ filters from executing).
+
+ Arguments:
+ filter_item: An object conforming to the frame filter
+ interface.
+
+ Returns:
+ The priority of the frame filter from the "priority"
+ attribute, or zero.
+ """
+ # Do not fail here, as the sort will fail. If a filter has not
+ # (incorrectly) set a priority, set it to zero.
+ return getattr(filter_item, "priority", 0)
+
+def set_priority(filter_item, priority):
+ """ Internal worker function to set the frame-filter's priority.
+
+ Arguments:
+ filter_item: An object conforming to the frame filter
+ interface.
+ priority: The priority to assign as an integer.
+ """
+
+ filter_item.priority = priority
+
+def get_enabled(filter_item):
+ """ Internal worker function to return a filter's enabled state
+ from a frame filter object. This is a fail free function as it is
+ used in sorting and filtering. If a badly implemented frame
+ filter does not implement the enabled attribute, return False
+ (otherwise sorting/filtering will fail and prevent other frame
+ filters from executing).
+
+ Arguments:
+ filter_item: An object conforming to the frame filter
+ interface.
+
+ Returns:
+ The enabled state of the frame filter from the "enabled"
+ attribute, or False.
+ """
+
+ # If the filter class is badly implemented when called from the
+ # Python filter command, do not cease filter operations, just set
+ # enabled to False.
+ return getattr(filter_item, "enabled", False)
+
+def set_enabled(filter_item, state):
+ """ Internal Worker function to set the frame-filter's enabled
+ state.
+
+ Arguments:
+ filter_item: An object conforming to the frame filter
+ interface.
+ state: True or False, depending on desired state.
+ """
+
+ filter_item.enabled = state
+
+def return_list(name):
+ """ Internal Worker function to return the frame filter
+ dictionary, depending on the name supplied as an argument. If the
+ name is not "all", "global" or "progspace", it is assumed to name
+ an object-file.
+
+ Arguments:
+ name: The name of the list, as specified by GDB user commands.
+
+ Returns:
+ A dictionary object for a single specified dictionary, or a
+ list containing all the items for "all"
+
+ Raises:
+ gdb.GdbError: A dictionary of that name cannot be found.
+ """
+
+ # If all dictionaries are wanted in the case of "all" we
+ # cannot return a combined dictionary as keys() may clash in
+ # between different dictionaries. As we just want all the frame
+ # filters to enable/disable them all, just return the combined
+ # items() as a chained iterator of dictionary values.
+ if name == "all":
+ glob = gdb.frame_filters.values()
+ prog = gdb.current_progspace().frame_filters.values()
+ return_iter = itertools.chain(glob, prog)
+ for objfile in gdb.objfiles():
+ return_iter = itertools.chain(return_iter, objfile.frame_filters.values())
+
+ return return_iter
+
+ if name == "global":
+ return gdb.frame_filters
+ else:
+ if name == "progspace":
+ cp = gdb.current_progspace()
+ return cp.frame_filters
+ else:
+ for objfile in gdb.objfiles():
+ if name == objfile.filename:
+ return objfile.frame_filters
+
+ msg = "Cannot find frame-filter dictionary for '" + name + "'"
+ raise gdb.GdbError(msg)
+
+def _sort_list():
+ """ Internal Worker function to merge all known frame-filter
+ lists, prune any filters with the state set to "disabled", and
+ sort the list on the frame-filter's "priority" attribute.
+
+ Returns:
+ sorted_list: A sorted, pruned list of frame filters to
+ execute.
+ """
+
+ all_filters = return_list("all")
+ sorted_frame_filters = sorted(all_filters, key = get_priority,
+ reverse = True)
+
+ sorted_frame_filters = filter(get_enabled,
+ sorted_frame_filters)
+
+ return sorted_frame_filters
+
+def execute_frame_filters(frame, frame_low, frame_high):
+ """ Internal function called from GDB that will execute the chain
+ of frame filters. Each filter is executed in priority order.
+ After the execution completes, slice the iterator to frame_low -
+ frame_high range.
+
+ Arguments:
+ frame: The initial frame.
+
+ frame_low: The low range of the slice. If this is a negative
+ integer then it indicates a backward slice (ie bt -4) which
+ counts backward from the last frame in the backtrace.
+
+ frame_high: The high range of the slice. If this is -1 then
+ it indicates all frames until the end of the stack from
+ frame_low.
+
+ Returns:
+ frame_iterator: The sliced iterator after all frame
+ filters have had a change to execute, or None if no frame
+ filters are registered.
+ """
+
+ # Get a sorted list of frame filters.
+ sorted_list = list(_sort_list())
+
+ # Check to see if there are any frame-filters. If not, just
+ # return None and let default backtrace printing occur.
+ if len(sorted_list) == 0:
+ return None
+
+ frame_iterator = FrameIterator(frame)
+
+ # Apply a basic frame decorator to all gdb.Frames. This unifies
+ # the interface. Python 3.x moved the itertools.imap
+ # functionality to map(), so check if it is available.
+ if hasattr(itertools,"imap"):
+ frame_iterator = itertools.imap(FrameDecorator, frame_iterator)
+ else:
+ frame_iterator = map(FrameDecorator, frame_iterator)
+
+ for ff in sorted_list:
+ frame_iterator = ff.filter(frame_iterator)
+
+ # Slicing
+
+ # Is this a slice from the end of the backtrace, ie bt -2?
+ if frame_low < 0:
+ count = 0
+ slice_length = abs(frame_low)
+ # We cannot use MAXLEN argument for deque as it is 2.6 onwards
+ # and some GDB versions might be < 2.6.
+ sliced = collections.deque()
+
+ for frame_item in frame_iterator:
+ if count >= slice_length:
+ sliced.popleft();
+ count = count + 1
+ sliced.append(frame_item)
+
+ return iter(sliced)
+
+ # -1 for frame_high means until the end of the backtrace. Set to
+ # None if that is the case, to indicate to itertools.islice to
+ # slice to the end of the iterator.
+ if frame_high == -1:
+ frame_high = None
+ else:
+ # As frames start from 0, add one to frame_high so islice
+ # correctly finds the end
+ frame_high = frame_high + 1;
+
+ sliced = itertools.islice(frame_iterator, frame_low, frame_high)
+
+ return sliced
diff --git a/share/gdb/python/gdb/function/__init__.py b/share/gdb/python/gdb/function/__init__.py
index 755bff9..bcfadc3 100644
--- a/share/gdb/python/gdb/function/__init__.py
+++ b/share/gdb/python/gdb/function/__init__.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2013 Free Software Foundation, Inc.
+# Copyright (C) 2012-2014 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
diff --git a/share/gdb/python/gdb/function/strfns.py b/share/gdb/python/gdb/function/strfns.py
index efdf950..9e2ed79 100644
--- a/share/gdb/python/gdb/function/strfns.py
+++ b/share/gdb/python/gdb/function/strfns.py
@@ -1,5 +1,5 @@
# Useful gdb string convenience functions.
-# Copyright (C) 2012-2013 Free Software Foundation, Inc.
+# Copyright (C) 2012-2014 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
diff --git a/share/gdb/python/gdb/printing.py b/share/gdb/python/gdb/printing.py
index 785a407..80227c8 100644
--- a/share/gdb/python/gdb/printing.py
+++ b/share/gdb/python/gdb/printing.py
@@ -1,5 +1,5 @@
# Pretty-printer utilities.
-# Copyright (C) 2010-2013 Free Software Foundation, Inc.
+# Copyright (C) 2010-2014 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
diff --git a/share/gdb/python/gdb/prompt.py b/share/gdb/python/gdb/prompt.py
index bb1975b..d99f2ea 100644
--- a/share/gdb/python/gdb/prompt.py
+++ b/share/gdb/python/gdb/prompt.py
@@ -1,5 +1,5 @@
# Extended prompt utilities.
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+# Copyright (C) 2011-2014 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
diff --git a/share/gdb/python/gdb/types.py b/share/gdb/python/gdb/types.py
index ffc817c..5fa4eab 100644
--- a/share/gdb/python/gdb/types.py
+++ b/share/gdb/python/gdb/types.py
@@ -1,5 +1,5 @@
# Type utilities.
-# Copyright (C) 2010-2013 Free Software Foundation, Inc.
+# Copyright (C) 2010-2014 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
diff --git a/share/gdb/syscalls/amd64-linux.xml b/share/gdb/syscalls/amd64-linux.xml
index bf3da5d..6a04218 100644
--- a/share/gdb/syscalls/amd64-linux.xml
+++ b/share/gdb/syscalls/amd64-linux.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright (C) 2009-2013 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/share/gdb/syscalls/arm-linux.xml b/share/gdb/syscalls/arm-linux.xml
new file mode 100644
index 0000000..9d989bd
--- /dev/null
+++ b/share/gdb/syscalls/arm-linux.xml
@@ -0,0 +1,398 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2009-2014 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved. This file is offered as-is,
+ without any warranty. -->
+
+<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd">
+
+<!-- This file was generated using the following file:
+
+ linux/arch/arm/include/uapi/asm/unistd.h
+
+ The file mentioned above belongs to the Linux Kernel.
+ Some small hand-edits were made. -->
+
+<syscalls_info>
+ <syscall name="restart_syscall" number="0"/>
+ <syscall name="exit" number="1"/>
+ <syscall name="fork" number="2"/>
+ <syscall name="read" number="3"/>
+ <syscall name="write" number="4"/>
+ <syscall name="open" number="5"/>
+ <syscall name="close" number="6"/>
+ <syscall name="waitpid" number="7"/> <!-- removed -->
+ <syscall name="creat" number="8"/>
+ <syscall name="link" number="9"/>
+ <syscall name="unlink" number="10"/>
+ <syscall name="execve" number="11"/>
+ <syscall name="chdir" number="12"/>
+ <syscall name="time" number="13"/>
+ <syscall name="mknod" number="14"/>
+ <syscall name="chmod" number="15"/>
+ <syscall name="lchown" number="16"/>
+ <syscall name="break" number="17"/> <!-- removed -->
+ <syscall name="oldstat" number="18"/> <!-- removed -->
+ <syscall name="lseek" number="19"/>
+ <syscall name="getpid" number="20"/>
+ <syscall name="mount" number="21"/>
+ <syscall name="umount" number="22"/>
+ <syscall name="setuid" number="23"/>
+ <syscall name="getuid" number="24"/>
+ <syscall name="stime" number="25"/>
+ <syscall name="ptrace" number="26"/>
+ <syscall name="alarm" number="27"/>
+ <syscall name="oldfstat" number="28"/> <!-- removed -->
+ <syscall name="pause" number="29"/>
+ <syscall name="utime" number="30"/>
+ <syscall name="stty" number="31"/> <!-- removed -->
+ <syscall name="gtty" number="32"/> <!-- removed -->
+ <syscall name="access" number="33"/>
+ <syscall name="nice" number="34"/>
+ <syscall name="ftime" number="35"/> <!-- removed -->
+ <syscall name="sync" number="36"/>
+ <syscall name="kill" number="37"/>
+ <syscall name="rename" number="38"/>
+ <syscall name="mkdir" number="39"/>
+ <syscall name="rmdir" number="40"/>
+ <syscall name="dup" number="41"/>
+ <syscall name="pipe" number="42"/>
+ <syscall name="times" number="43"/>
+ <syscall name="prof" number="44"/> <!-- removed -->
+ <syscall name="brk" number="45"/>
+ <syscall name="setgid" number="46"/>
+ <syscall name="getgid" number="47"/>
+ <syscall name="signal" number="48"/> <!-- removed -->
+ <syscall name="geteuid" number="49"/>
+ <syscall name="getegid" number="50"/>
+ <syscall name="acct" number="51"/>
+ <syscall name="umount2" number="52"/>
+ <syscall name="lock" number="53"/> <!-- removed -->
+ <syscall name="ioctl" number="54"/>
+ <syscall name="fcntl" number="55"/>
+ <syscall name="mpx" number="56"/> <!-- removed -->
+ <syscall name="setpgid" number="57"/>
+ <syscall name="ulimit" number="58"/> <!-- removed -->
+ <syscall name="oldolduname" number="59"/> <!-- removed -->
+ <syscall name="umask" number="60"/>
+ <syscall name="chroot" number="61"/>
+ <syscall name="ustat" number="62"/>
+ <syscall name="dup2" number="63"/>
+ <syscall name="getppid" number="64"/>
+ <syscall name="getpgrp" number="65"/>
+ <syscall name="setsid" number="66"/>
+ <syscall name="sigaction" number="67"/>
+ <syscall name="sgetmask" number="68"/> <!-- removed -->
+ <syscall name="ssetmask" number="69"/> <!-- removed -->
+ <syscall name="setreuid" number="70"/>
+ <syscall name="setregid" number="71"/>
+ <syscall name="sigsuspend" number="72"/>
+ <syscall name="sigpending" number="73"/>
+ <syscall name="sethostname" number="74"/>
+ <syscall name="setrlimit" number="75"/>
+ <syscall name="getrlimit" number="76"/>
+ <syscall name="getrusage" number="77"/>
+ <syscall name="gettimeofday" number="78"/>
+ <syscall name="settimeofday" number="79"/>
+ <syscall name="getgroups" number="80"/>
+ <syscall name="setgroups" number="81"/>
+ <syscall name="select" number="82"/>
+ <syscall name="symlink" number="83"/>
+ <syscall name="oldlstat" number="84"/> <!-- removed -->
+ <syscall name="readlink" number="85"/>
+ <syscall name="uselib" number="86"/>
+ <syscall name="swapon" number="87"/>
+ <syscall name="reboot" number="88"/>
+ <syscall name="readdir" number="89"/>
+ <syscall name="mmap" number="90"/>
+ <syscall name="munmap" number="91"/>
+ <syscall name="truncate" number="92"/>
+ <syscall name="ftruncate" number="93"/>
+ <syscall name="fchmod" number="94"/>
+ <syscall name="fchown" number="95"/>
+ <syscall name="getpriority" number="96"/>
+ <syscall name="setpriority" number="97"/>
+ <syscall name="profil" number="98"/> <!-- removed -->
+ <syscall name="statfs" number="99"/>
+ <syscall name="fstatfs" number="100"/>
+ <syscall name="ioperm" number="101"/> <!-- removed -->
+ <syscall name="socketcall" number="102"/>
+ <syscall name="syslog" number="103"/>
+ <syscall name="setitimer" number="104"/>
+ <syscall name="getitimer" number="105"/>
+ <syscall name="stat" number="106"/>
+ <syscall name="lstat" number="107"/>
+ <syscall name="fstat" number="108"/>
+ <syscall name="olduname" number="109"/> <!-- removed -->
+ <syscall name="iopl" number="110"/> <!-- removed -->
+ <syscall name="vhangup" number="111"/>
+ <syscall name="idle" number="112"/> <!-- removed -->
+ <syscall name="syscall" number="113"/>
+ <syscall name="wait4" number="114"/>
+ <syscall name="swapoff" number="115"/>
+ <syscall name="sysinfo" number="116"/>
+ <syscall name="ipc" number="117"/>
+ <syscall name="fsync" number="118"/>
+ <syscall name="sigreturn" number="119"/>
+ <syscall name="clone" number="120"/>
+ <syscall name="setdomainname" number="121"/>
+ <syscall name="uname" number="122"/>
+ <syscall name="modify_ldt" number="123"/> <!-- removed -->
+ <syscall name="adjtimex" number="124"/>
+ <syscall name="mprotect" number="125"/>
+ <syscall name="sigprocmask" number="126"/>
+ <syscall name="create_module" number="127"/> <!-- removed -->
+ <syscall name="init_module" number="128"/>
+ <syscall name="delete_module" number="129"/>
+ <syscall name="get_kernel_syms" number="130"/> <!-- removed -->
+ <syscall name="quotactl" number="131"/>
+ <syscall name="getpgid" number="132"/>
+ <syscall name="fchdir" number="133"/>
+ <syscall name="bdflush" number="134"/>
+ <syscall name="sysfs" number="135"/>
+ <syscall name="personality" number="136"/>
+ <syscall name="afs_syscall" number="137"/> <!-- removed -->
+ <syscall name="setfsuid" number="138"/>
+ <syscall name="setfsgid" number="139"/>
+ <syscall name="_llseek" number="140"/>
+ <syscall name="getdents" number="141"/>
+ <syscall name="_newselect" number="142"/>
+ <syscall name="flock" number="143"/>
+ <syscall name="msync" number="144"/>
+ <syscall name="readv" number="145"/>
+ <syscall name="writev" number="146"/>
+ <syscall name="getsid" number="147"/>
+ <syscall name="fdatasync" number="148"/>
+ <syscall name="_sysctl" number="149"/>
+ <syscall name="mlock" number="150"/>
+ <syscall name="munlock" number="151"/>
+ <syscall name="mlockall" number="152"/>
+ <syscall name="munlockall" number="153"/>
+ <syscall name="sched_setparam" number="154"/>
+ <syscall name="sched_getparam" number="155"/>
+ <syscall name="sched_setscheduler" number="156"/>
+ <syscall name="sched_getscheduler" number="157"/>
+ <syscall name="sched_yield" number="158"/>
+ <syscall name="sched_get_priority_max" number="159"/>
+ <syscall name="sched_get_priority_min" number="160"/>
+ <syscall name="sched_rr_get_interval" number="161"/>
+ <syscall name="nanosleep" number="162"/>
+ <syscall name="mremap" number="163"/>
+ <syscall name="setresuid" number="164"/>
+ <syscall name="getresuid" number="165"/>
+ <syscall name="vm86" number="166"/> <!-- removed -->
+ <syscall name="query_module" number="167"/> <!-- removed -->
+ <syscall name="poll" number="168"/>
+ <syscall name="nfsservctl" number="169"/>
+ <syscall name="setresgid" number="170"/>
+ <syscall name="getresgid" number="171"/>
+ <syscall name="prctl" number="172"/>
+ <syscall name="rt_sigreturn" number="173"/>
+ <syscall name="rt_sigaction" number="174"/>
+ <syscall name="rt_sigprocmask" number="175"/>
+ <syscall name="rt_sigpending" number="176"/>
+ <syscall name="rt_sigtimedwait" number="177"/>
+ <syscall name="rt_sigqueueinfo" number="178"/>
+ <syscall name="rt_sigsuspend" number="179"/>
+ <syscall name="pread64" number="180"/>
+ <syscall name="pwrite64" number="181"/>
+ <syscall name="chown" number="182"/>
+ <syscall name="getcwd" number="183"/>
+ <syscall name="capget" number="184"/>
+ <syscall name="capset" number="185"/>
+ <syscall name="sigaltstack" number="186"/>
+ <syscall name="sendfile" number="187"/>
+ <syscall name="vfork" number="190"/>
+ <syscall name="ugetrlimit" number="191"/>
+ <syscall name="mmap2" number="192"/>
+ <syscall name="truncate64" number="193"/>
+ <syscall name="ftruncate64" number="194"/>
+ <syscall name="stat64" number="195"/>
+ <syscall name="lstat64" number="196"/>
+ <syscall name="fstat64" number="197"/>
+ <syscall name="lchown32" number="198"/>
+ <syscall name="getuid32" number="199"/>
+ <syscall name="getgid32" number="200"/>
+ <syscall name="geteuid32" number="201"/>
+ <syscall name="getegid32" number="202"/>
+ <syscall name="setreuid32" number="203"/>
+ <syscall name="setregid32" number="204"/>
+ <syscall name="getgroups32" number="205"/>
+ <syscall name="setgroups32" number="206"/>
+ <syscall name="fchown32" number="207"/>
+ <syscall name="setresuid32" number="208"/>
+ <syscall name="getresuid32" number="209"/>
+ <syscall name="setresgid32" number="210"/>
+ <syscall name="getresgid32" number="211"/>
+ <syscall name="chown32" number="212"/>
+ <syscall name="setuid32" number="213"/>
+ <syscall name="setgid32" number="214"/>
+ <syscall name="setfsuid32" number="215"/>
+ <syscall name="setfsgid32" number="216"/>
+ <syscall name="getdents64" number="217"/>
+ <syscall name="pivot_root" number="218"/>
+ <syscall name="mincore" number="219"/>
+ <syscall name="madvise" number="220"/>
+ <syscall name="fcntl64" number="221"/>
+ <syscall name="gettid" number="224"/>
+ <syscall name="readahead" number="225"/>
+ <syscall name="setxattr" number="226"/>
+ <syscall name="lsetxattr" number="227"/>
+ <syscall name="fsetxattr" number="228"/>
+ <syscall name="getxattr" number="229"/>
+ <syscall name="lgetxattr" number="230"/>
+ <syscall name="fgetxattr" number="231"/>
+ <syscall name="listxattr" number="232"/>
+ <syscall name="llistxattr" number="233"/>
+ <syscall name="flistxattr" number="234"/>
+ <syscall name="removexattr" number="235"/>
+ <syscall name="lremovexattr" number="236"/>
+ <syscall name="fremovexattr" number="237"/>
+ <syscall name="tkill" number="238"/>
+ <syscall name="sendfile64" number="239"/>
+ <syscall name="futex" number="240"/>
+ <syscall name="sched_setaffinity" number="241"/>
+ <syscall name="sched_getaffinity" number="242"/>
+ <syscall name="io_setup" number="243"/>
+ <syscall name="io_destroy" number="244"/>
+ <syscall name="io_getevents" number="245"/>
+ <syscall name="io_submit" number="246"/>
+ <syscall name="io_cancel" number="247"/>
+ <syscall name="exit_group" number="248"/>
+ <syscall name="lookup_dcookie" number="249"/>
+ <syscall name="epoll_create" number="250"/>
+ <syscall name="epoll_ctl" number="251"/>
+ <syscall name="epoll_wait" number="252"/>
+ <syscall name="remap_file_pages" number="253"/>
+ <syscall name="set_tid_address" number="256"/>
+ <syscall name="timer_create" number="257"/>
+ <syscall name="timer_settime" number="258"/>
+ <syscall name="timer_gettime" number="259"/>
+ <syscall name="timer_getoverrun" number="260"/>
+ <syscall name="timer_delete" number="261"/>
+ <syscall name="clock_settime" number="262"/>
+ <syscall name="clock_gettime" number="263"/>
+ <syscall name="clock_getres" number="264"/>
+ <syscall name="clock_nanosleep" number="265"/>
+ <syscall name="statfs64" number="266"/>
+ <syscall name="fstatfs64" number="267"/>
+ <syscall name="tgkill" number="268"/>
+ <syscall name="utimes" number="269"/>
+ <syscall name="arm_fadvise64_64" number="270"/>
+ <syscall name="pciconfig_iobase" number="271"/>
+ <syscall name="pciconfig_read" number="272"/>
+ <syscall name="pciconfig_write" number="273"/>
+ <syscall name="mq_open" number="274"/>
+ <syscall name="mq_unlink" number="275"/>
+ <syscall name="mq_timedsend" number="276"/>
+ <syscall name="mq_timedreceive" number="277"/>
+ <syscall name="mq_notify" number="278"/>
+ <syscall name="mq_getsetattr" number="279"/>
+ <syscall name="waitid" number="280"/>
+ <syscall name="socket" number="281"/>
+ <syscall name="bind" number="282"/>
+ <syscall name="connect" number="283"/>
+ <syscall name="listen" number="284"/>
+ <syscall name="accept" number="285"/>
+ <syscall name="getsockname" number="286"/>
+ <syscall name="getpeername" number="287"/>
+ <syscall name="socketpair" number="288"/>
+ <syscall name="send" number="289"/>
+ <syscall name="sendto" number="290"/>
+ <syscall name="recv" number="291"/>
+ <syscall name="recvfrom" number="292"/>
+ <syscall name="shutdown" number="293"/>
+ <syscall name="setsockopt" number="294"/>
+ <syscall name="getsockopt" number="295"/>
+ <syscall name="sendmsg" number="296"/>
+ <syscall name="recvmsg" number="297"/>
+ <syscall name="semop" number="298"/>
+ <syscall name="semget" number="299"/>
+ <syscall name="semctl" number="300"/>
+ <syscall name="msgsnd" number="301"/>
+ <syscall name="msgrcv" number="302"/>
+ <syscall name="msgget" number="303"/>
+ <syscall name="msgctl" number="304"/>
+ <syscall name="shmat" number="305"/>
+ <syscall name="shmdt" number="306"/>
+ <syscall name="shmget" number="307"/>
+ <syscall name="shmctl" number="308"/>
+ <syscall name="add_key" number="309"/>
+ <syscall name="request_key" number="310"/>
+ <syscall name="keyctl" number="311"/>
+ <syscall name="semtimedop" number="312"/>
+ <syscall name="vserver" number="313"/>
+ <syscall name="ioprio_set" number="314"/>
+ <syscall name="ioprio_get" number="315"/>
+ <syscall name="inotify_init" number="316"/>
+ <syscall name="inotify_add_watch" number="317"/>
+ <syscall name="inotify_rm_watch" number="318"/>
+ <syscall name="mbind" number="319"/>
+ <syscall name="get_mempolicy" number="320"/>
+ <syscall name="set_mempolicy" number="321"/>
+ <syscall name="openat" number="322"/>
+ <syscall name="mkdirat" number="323"/>
+ <syscall name="mknodat" number="324"/>
+ <syscall name="fchownat" number="325"/>
+ <syscall name="futimesat" number="326"/>
+ <syscall name="fstatat64" number="327"/>
+ <syscall name="unlinkat" number="328"/>
+ <syscall name="renameat" number="329"/>
+ <syscall name="linkat" number="330"/>
+ <syscall name="symlinkat" number="331"/>
+ <syscall name="readlinkat" number="332"/>
+ <syscall name="fchmodat" number="333"/>
+ <syscall name="faccessat" number="334"/>
+ <syscall name="pselect6" number="335"/>
+ <syscall name="ppoll" number="336"/>
+ <syscall name="unshare" number="337"/>
+ <syscall name="set_robust_list" number="338"/>
+ <syscall name="get_robust_list" number="339"/>
+ <syscall name="splice" number="340"/>
+ <syscall name="arm_sync_file_range" number="341"/>
+ <syscall name="tee" number="342"/>
+ <syscall name="vmsplice" number="343"/>
+ <syscall name="move_pages" number="344"/>
+ <syscall name="getcpu" number="345"/>
+ <syscall name="epoll_pwait" number="346"/>
+ <syscall name="kexec_load" number="347"/>
+ <syscall name="utimensat" number="348"/>
+ <syscall name="signalfd" number="349"/>
+ <syscall name="timerfd_create" number="350"/>
+ <syscall name="eventfd" number="351"/>
+ <syscall name="fallocate" number="352"/>
+ <syscall name="timerfd_settime" number="353"/>
+ <syscall name="timerfd_gettime" number="354"/>
+ <syscall name="signalfd4" number="355"/>
+ <syscall name="eventfd2" number="356"/>
+ <syscall name="epoll_create1" number="357"/>
+ <syscall name="dup3" number="358"/>
+ <syscall name="pipe2" number="359"/>
+ <syscall name="inotify_init1" number="360"/>
+ <syscall name="preadv" number="361"/>
+ <syscall name="pwritev" number="362"/>
+ <syscall name="rt_tgsigqueueinfo" number="363"/>
+ <syscall name="perf_event_open" number="364"/>
+ <syscall name="recvmmsg" number="365"/>
+ <syscall name="accept4" number="366"/>
+ <syscall name="fanotify_init" number="367"/>
+ <syscall name="fanotify_mark" number="368"/>
+ <syscall name="prlimit64" number="369"/>
+ <syscall name="name_to_handle_at" number="370"/>
+ <syscall name="open_by_handle_at" number="371"/>
+ <syscall name="clock_adjtime" number="372"/>
+ <syscall name="syncfs" number="373"/>
+ <syscall name="sendmmsg" number="374"/>
+ <syscall name="setns" number="375"/>
+ <syscall name="process_vm_readv" number="376"/>
+ <syscall name="process_vm_writev" number="377"/>
+ <syscall name="kcmp" number="378"/>
+ <syscall name="finit_module" number="379"/>
+ <syscall name="ARM_breakpoint" number="983041"/>
+ <syscall name="ARM_cacheflush" number="983042"/>
+ <syscall name="ARM_usr26" number="983043"/>
+ <syscall name="ARM_usr32" number="983044"/>
+ <syscall name="ARM_set_tls" number="983045"/>
+</syscalls_info>
diff --git a/share/gdb/syscalls/gdb-syscalls.dtd b/share/gdb/syscalls/gdb-syscalls.dtd
index 05c1ccf..3ad3625 100644
--- a/share/gdb/syscalls/gdb-syscalls.dtd
+++ b/share/gdb/syscalls/gdb-syscalls.dtd
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2009-2013 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/share/gdb/syscalls/i386-linux.xml b/share/gdb/syscalls/i386-linux.xml
index 80512d8..3d890bd 100644
--- a/share/gdb/syscalls/i386-linux.xml
+++ b/share/gdb/syscalls/i386-linux.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright (C) 2009-2013 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/share/gdb/syscalls/mips-n32-linux.xml b/share/gdb/syscalls/mips-n32-linux.xml
index b4e2181..5c7a95d 100644
--- a/share/gdb/syscalls/mips-n32-linux.xml
+++ b/share/gdb/syscalls/mips-n32-linux.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright (C) 2011-2013 Free Software Foundation, Inc.
+<!-- Copyright (C) 2011-2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/share/gdb/syscalls/mips-n64-linux.xml b/share/gdb/syscalls/mips-n64-linux.xml
index 896e0c0..0a81573 100644
--- a/share/gdb/syscalls/mips-n64-linux.xml
+++ b/share/gdb/syscalls/mips-n64-linux.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright (C) 2011-2013 Free Software Foundation, Inc.
+<!-- Copyright (C) 2011-2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/share/gdb/syscalls/mips-o32-linux.xml b/share/gdb/syscalls/mips-o32-linux.xml
index 2b11247..97641b6 100644
--- a/share/gdb/syscalls/mips-o32-linux.xml
+++ b/share/gdb/syscalls/mips-o32-linux.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright (C) 2011-2013 Free Software Foundation, Inc.
+<!-- Copyright (C) 2011-2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/share/gdb/syscalls/ppc-linux.xml b/share/gdb/syscalls/ppc-linux.xml
index dd4eba6..b25d08c 100644
--- a/share/gdb/syscalls/ppc-linux.xml
+++ b/share/gdb/syscalls/ppc-linux.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright (C) 2009-2013 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/share/gdb/syscalls/ppc64-linux.xml b/share/gdb/syscalls/ppc64-linux.xml
index ad56db1..c31415a 100644
--- a/share/gdb/syscalls/ppc64-linux.xml
+++ b/share/gdb/syscalls/ppc64-linux.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright (C) 2009-2013 Free Software Foundation, Inc.
+<!-- Copyright (C) 2009-2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/share/gdb/syscalls/sparc-linux.xml b/share/gdb/syscalls/sparc-linux.xml
index 7673621..24d8612 100644
--- a/share/gdb/syscalls/sparc-linux.xml
+++ b/share/gdb/syscalls/sparc-linux.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/share/gdb/syscalls/sparc64-linux.xml b/share/gdb/syscalls/sparc64-linux.xml
index 4403ca3..13c0cb7 100644
--- a/share/gdb/syscalls/sparc64-linux.xml
+++ b/share/gdb/syscalls/sparc64-linux.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc.
+<!-- Copyright (C) 2010-2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/share/gdb/system-gdbinit/elinos.py b/share/gdb/system-gdbinit/elinos.py
new file mode 100644
index 0000000..cd35aed
--- /dev/null
+++ b/share/gdb/system-gdbinit/elinos.py
@@ -0,0 +1,91 @@
+# Copyright (C) 2011-2014 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/>.
+
+"""Configure GDB using the ELinOS environment."""
+
+import os
+import glob
+import gdb
+
+
+def warn(msg):
+ print "warning: %s" % msg
+
+
+def get_elinos_environment():
+ """Return the ELinOS environment.
+
+ If the ELinOS environment is properly set up, return a dictionary
+ which contains:
+ * The path to the ELinOS project at key 'project';
+ * The path to the ELinOS CDK at key 'cdk';
+ * The ELinOS target name at key 'target' (Eg. 'i486-linux');
+ * A list of Xenomai install prefixes (which could be empty, if
+ the ELinOS project does not include Xenomai) at key 'xenomai'.
+
+ If one of these cannot be found, print a warning; the corresponding
+ value in the returned dictionary will be None.
+ """
+ result = {}
+ for key in ("project", "cdk", "target"):
+ var = "ELINOS_" + key.upper()
+ if var in os.environ:
+ result[key] = os.environ[var]
+ else:
+ warn("%s not set" % var)
+ result[key] = None
+
+ if result["project"] is not None:
+ result["xenomai"] = glob.glob(result["project"] + "/xenomai-[0-9.]*")
+ else:
+ result["xenomai"] = []
+
+ return result
+
+
+def elinos_init():
+ """Initialize debugger environment for ELinOS.
+
+ Let the debugger know where to find the ELinOS libraries on host. This
+ assumes that an ELinOS environment is properly set up. If some environment
+ variables are missing, warn about which library may be missing.
+ """
+ elinos_env = get_elinos_environment()
+
+ solib_dirs = []
+
+ # System libraries
+ if None in (elinos_env[key] for key in ("cdk", "target")):
+ warn("ELinOS system libraries will not be loaded")
+ else:
+ solib_prefix = "%s/%s" % (elinos_env["cdk"], elinos_env["target"])
+ solib_dirs += ["%s/%s" % (solib_prefix, "lib")]
+ gdb.execute("set solib-absolute-prefix %s" % solib_prefix)
+
+ # Xenomai libraries. Those are optional, so have a lighter warning
+ # if they cannot be located.
+ if elinos_env["project"] is None:
+ warn("Xenomai libraries may not be loaded")
+ else:
+ for dir in elinos_env['xenomai']:
+ solib_dirs += ["%s/%s"
+ % (dir, "xenomai-build/usr/realtime/lib")]
+
+ if len(solib_dirs) != 0:
+ gdb.execute("set solib-search-path %s" % ":".join(solib_dirs))
+
+
+if __name__ == "__main__":
+ elinos_init()
diff --git a/share/gdb/system-gdbinit/wrs-linux.py b/share/gdb/system-gdbinit/wrs-linux.py
new file mode 100644
index 0000000..54ec9ec
--- /dev/null
+++ b/share/gdb/system-gdbinit/wrs-linux.py
@@ -0,0 +1,25 @@
+# Copyright (C) 2011-2014 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/>.
+
+"""Configure GDB using the WRS/Linux environment."""
+
+import os
+
+if 'ENV_PREFIX' in os.environ:
+ gdb.execute('set sysroot %s' % os.environ['ENV_PREFIX'])
+
+else:
+ print "warning: ENV_PREFIX environment variable missing."
+ print "The debugger will probably be unable to find the correct system libraries"